|
|
||
Я много лет разрабатываю эксплойты. Поскольку у меня не было продвинутого опыта в администрировании и новейших технологиях, у меня заняло много времени научиться этим вещам. Вы будете учиться так же быстро, как ваш мозг способен переработать и запомнить информацию, превращая знания в опыт. Некоторые люди учатся быстро, другим нужно больше времени. Нет ничего плохого в обоих подходах, но важно понимать свои способности и быть реалистичным в отношении времени, которое вы можете инвестировать в обучение.
Необходимо не забывать про баланс work-life. Если у вас есть семья, обязательно поговорите с членами вашей семьи и найдите хороший баланс между временем, проведенным с ними и временем, затраченным на обучение. Даже если вы живете один, выбирайтесь время от времени. Не залипайте на этом, а попробуйте дозировать и применять здоровые техники тайм-менеджмента. Пусть ваш мозг обрабатывает, думает и не торопится.
Люди все время ставят перед собой цели. Цели могут быть реалистичными, а могут быть похожими на сказку. Важно быть амбициозным и иметь мечты. Однако, исходя из моего опыта, проще реализовать амбиции, разбив мечту на небольшие цели. Итак, мое определение цели это что-то реальное, чего можно достичь при помощи нескольких шагов. Давайте применим эту логику к теме статьи. Предположим, что вы мечтаете стать пентестером, но это довольно расплывчатая цель. Что именно вы хотите сделать? Какие цели вы хотите проверить? Почему вы хотите это сделать?
Если у вас нет ответа, будет полезно поговорить с пентестерами и спросить какую работу они делают и посмотреть заинтересованы ли вы. Предположим, ваш идеальный сценарий включает в себя тестирование безопасности корпоративных сетей, проведение аудита веб-приложений и манипуляции с мобильными девайсами, поскольку вы слышали что это важно. Или пусть это будет социальная инженерия. Неважно, что вы выбрали. Все эти части входят в мечту "стать пентестером" и вы только что разбили ее на шаги.
Почему я так философски отношусь к этому? Ну чтобы стать пентестером, который специализируется на всех типах аудитов, может быть нереально. Технически все так быстро меняется, что стать экспертом во всех областях нереально. Попытка понять и освоить все нереалистичная цель. Или реалистичная, многое зависит от того сколько времени вы готовы инвестировать в нее.
Быть пентестером не означает хорошо владеть инструментами. Речь идет о том, чтобы понять как все работает и настроено, а также понять какие ошибки делают люди и как найти эти слабости, проявляя творчество. Быть пентестером - это не значит, запускать сканер против всего интернета.
Итак, вернемся к начальному вопросу "с чего начать?". К настоящему времени должно быть ясно, что стоит ответить на вопрос "на чем остановиться?" и это подскажет вам с чего начинать. Не волнуйтесь, даже если вы обнаружите что выбрали неправильные цели, все равно вы выиграете. Любые знания, полученные вами, ценны в определенной степени и могут быть полезными на этом пути.
Есть и второй способ взглянуть на "цель". Вы также можете определить свою цель как источник дохода. Предположим, что вы хотели бы заработать на пентесте. Это значит, что вы должны выбрать область знаний, которая принесет вам доход. Это обусловлено популярность определенных типов технологий (например, веб-приложений) или относительно новых областей (интернет вещей, мобильное направление). Поэтому если вы хотите сделать много вещей (и желаете расширить кругозор), то большая вероятность, что вам нужно специализироваться в конкретных областях.
Прежде чем говорить о возможных путях, я хотел бы кратко упомянуть о том, что станет самой важной частью нашего путешествия. Это вы, ваше отношение и мышление. Но для этого потребуется определенный подход, который называется "хакерский". Существует множество определений слова хакер, но большинство из них сводятся к следующему: желание понять как все работает, чтобы можно было изменить (оптимизировать) поведение, чтобы изменить правила игры. Если цель состоит в том, чтобы взломать, то вы должны уметь доказать это ведь системы и люди имеют недостатки. Но нюанс заключается в том, что взломщик отличается от хакера. Последний взламывает вещи (не только компьютерные системы) для того, чтобы улучшить их.
Критикуйте то, что вы видите. Постарайтесь понять, что вы видите. Задавайте вопросы и не опирайтесь на доводы "я не знаю как это точно работает, просто мне так рассказали". Задайте себе вопрос "а что я делал бы, если бы проектировал X или Y". Понимание мыслительного процесса другого человека поможет разобраться в том, как эти вещи были разработаны и как другие люди используют их. Эмпатия и понимание того, что у других людей могут быть разные взгляды, расширит ваше понимание вещей, что поможет обнаружить их сильные и слабые стороны.
Держитесь, мы почти на месте. Прежде чем начать, я хотел бы поделиться своими мыслями о задавании вопросов. На самом деле, если бы вы не родились со всеми ответами, то вам не надо было бы задавать вопросы. Даже если вы знаете какова ваша конечная цель, вы можете не знать как туда добраться или что для этого нужно. Единственный способ выяснить это - задавать вопросы. Что интересно, то как вы задали вопрос, определит то какой ответ вы получите.
Я часто тусуюсь в различных каналах IRC и был подписан на кучу рассылок длительное время. Я вижу людей, которые задают вопросы и тех, что отвечают на них. Вы могли бы подумать, что задавать вопросы или отвечать на вопросы - тривиальная вещь, но я столько не видел нигде как людей банили, они спорили между собой или унижались. Многие люди в конечном итоге расстраиваются потому что они не смогли получить нужный ответ, а другие люди расстраиваются потому что потратили время впустую, отвечая на вопросы.
Что именно вызывает этот конфликт и как обе стороны смогут более эффективно задавать и отвечать на вопросы, чтобы избежать болезненных ситуаций? Большинство пунктов ниже основаны на случаях, когда возможно прямое взаимодействие (IRC, мгновенные сообщения и т.д.), но их можно обобщить на любые формы общения (электронная почта, форумы и так далее).
Задать вопрос очень легко. Задать хороший вопрос, кажется, не так легко. Что нужно для вопроса, чтобы получить ценный ответ и как вы можете избежать того, что люди начнут бросаться в вас только потому, что вы хотели получить ответ. Я попытался собрать некоторые идеи о том как наиболее эффективно задавать вопросы и увеличить ваши шансы не только получить ответ, но и получить полезный ответ. Несколько лет назад я провел опрос в Twitter, чтобы узнать то, что люди считают "плохим" вопросом.
В результате получили:
- Нет признаков того, что задающий вопрос, сделал какое-то свое исследование или попытался найти ответ, используя поисковик
- Когда вопрос неоднозначен
- Когда вы не сформулировали вопрос
- Огромная преамбула перед вопросом
Есть несколько вещей, которые вы можете сделать, чтобы избежать распространенных ошибок. Я перечислю некоторые идеи ниже в произвольном порядке.
Подумайте о своем вопросе. Насколько легко было бы найти ответ в интернете, в Википедии, с помощью простого поиска Google или путем чтения документации по продукту? Если вы ленивы, не ждите, что людям это понравится. Поверьте, честность на счет лени тоже не прокатит. Если вы получаете бан на IRC за свою лень, то признайтесь себе, что вы этого заслуживаете.
Делайте свою домашнюю работу. Посмотрите что вы можете найти о вашей проблеме в интернете, попробуйте несколько вещей самостоятельно и документируйте то, что вы сделали. Будьте готовы показать что вы сделали. Будьте честны и точны. Скорее всего люди помогут, если увидят как вы пытались и что попробовали. Как только люди почувствуют, чтобы вас кормили с ложки, ваш канал поддержки взорвется у вас перед носом. Люди могут попросить вас воспроизвести шаги, которые вы предприняли в вашей текущей ситуации. Разместите документацию и код на Pastebin или Pastie прежде чем задавать вопрос и будьте готовы показать ваши заметки, когда это необходимо.
Не удаляйте важную информацию даже если считаете ее незначимой. Это может быть частью проблемы и если вы хотите ее решить, вам лучше быть честным. Старайтесь описывать проблему как можно точнее и не позволяйте мыслительному процессу взять верх. Описание симптомов и точные шаги для воспроизведения симптомов будут работать лучше. Возможно, вы упустили что-то очевидное и если вы не поделитесь всеми фактами, люди не смогут обнаружить, что на самом деле пошло не так.
Если вы пытаетесь применить процедуру или инструмент и получаете сообщение об ошибке, есть вероятность, что другие люди столкнулись с такой же ситуацией. Google сообщения об ошибке (опуская важные данные вроде IP адреса) и смотрите то, что можете найти сами. Не забудьте так сформулировать вопрос, чтобы люди поверили, что вы хотите мягкого толчка в правильном направлении. Вместе того, чтобы спрашивать "я не понимаю как это работает" или "я хочу взломать Gmail", вы можете спросить "что бы вы порекомендовали для того, чтобы сделать то или это" или "кто подскажет что читать про SQL инъекции баз Oracle?". Вы достигаете той же цели и просите о том, но вы переключаете внимание на процесс обучения и поиска решения вместо того, чтобы привлекать внимание к проблеме или самой цели. Это нормально делать запрос на указание в нужном направлении.
Прежде чем задать вопрос, разбейте его на составные части. Вы полностью понимаете другие компоненты или те компоненты, которые необходимы для воспроизведения проблемы? Если вы задаете вопрос об атаке удаленного компьютера, убедитесь, что вы понимаете сетевой уровень и проверили, что все настроено правильно между устройством и удаленным компьютером. Если вы не знаете достаточно о сети, вы не должны атаковать то, что использует сеть.
Не забывайте о том, что другие должны были пройти через тот же опыт обучения, что и вы, и должны были работать для этого. Если ваш вопрос предполагает, что вы просто хотите пропустить изучение фундаментальных знаний, люди могут обидеться, потому что вы не уважаете ту тяжелую работу, которую они проделали в прошлом.
Подумайте, есть вероятность, что вам еще предстоит пройти долгий путь и что "понимание" чего-то не обязательно означает правильное применение на практике. Вместо того, чтобы спрашивать почему определенная техника для определенного случая не работает, вам может потребовать задать вопрос понимаете ли вы технику или нет.
Не нужно извиняться за то, что чего-то не знаешь. Обычно это только заставляет людей поднять бровь и быстро двигаться дальше. Вы должны извиняться только перед собой за то, что не задали верные вопросы или не были готовы работать или учиться. Не извиняйтесь за то, что не говорите и не понимаете по-английски. Людям все равно. Если это плохо, то они заметят, что это плохо. У вас есть возможность улучшить свой английский, читать документацию или общаться с людьми. Если вы не уверены, подготовьте свой вопрос заранее и расслабьтесь. Если вы задайте хорошо подготовленный вопрос, никто даже не заметит. Я не хочу сказать, что извинение это плохо. Это знак зрелости и ответственности и может пригодиться в конфликтных ситуациях и переговорах. Я просто не уверен, что это поможет вам получить ответ. Не прячьтесь за тем, что вы плохо говорите на языке, чтобы оскорблять людей. Я видел это раньше: кто-то входит в IRC-канал, начинает извиняться за плохой английский, а затем откровенно оскорбляет всех в комнате. Это плохая идея. Оправдания - это не волшебный пластырь для глупости.
Даже если ваш вопрос срочный и вы решили попросить помощи у других людей, вам важно понять и принять то, что у других людей тоже есть жизнь и могут быть другие приоритеты. Вопрос о том почему вам не ответили через 10 минут заставит людей игнорировать вас, поэтому не переспрашивайте. Возможно, что вам нужно переосмыслить ваш вопрос или найти другой источник информации или поддержки. Публичные форумы и IRC-каналы не являются каналами техподдержки. Не ждите того, что все население мира интересуется вашими проблемами, поэтому не захламляйте канал своими проблемами. Хотя инструменты IRC и мгновенные сообщения могут давать прямую коммуникацию, это не значит, что вы получите ответ мгновенно или так быстро как вы этого хотите. Часовые пояса реальны и люди на другом конце могут элементарно спать. Примите это.
Даже если вы думаете, что инструмент сломан или работает криво, подумайте о том, что вы могли сделать неправильно. Другие оценят если вы спросите "что я сделал неправильно" или "что мне сделать по-другому?" даже если речь идет об ошибке в приложении или в инструменте. Но если вы начнете вместо этого ругать инструмент, то получите дурную славу. Одна ошибка в инструменте не делает инструмент плохим, поэтому уважайте работу других людей, которые могут читать ваши комментарии. Вы тот, кто открывает дискуссию и у вас никогда не будет второго шанса произвести первое впечатление. Тон для остальной части обсуждения будет задан сразу после начала общения.
Шутите только если вы уверены, что другие поймут и оценят шутку, и не обидятся на нее. Вы не знаете кто сидит на том конце, поэтому избегайте шуток и унижений. Поймите, что есть разные культуры, разные точки зрения и разные люди. Ни одна из них не плоха и не хороша, ни лучше ни хуже. Многое зависит от того насколько хорошо вы знаете людей к которым обращаетесь.
Какая площадка лучшая для вашего вопроса и кто мог быть тем человеком, который знает ответ? Форумы и IRC-каналы часто сфокусированы на одной теме, поэтому постарайтесь выбрать правильный канал, чтобы задать свой вопрос. Если ваш вопрос связан с использованием инструмента, было бы неплохо найти других пользователей вместо того, чтобы сразу отправлять свои вопросы разработчикам инструментов.
Вам не нужно спрашивать разрешение прежде чем задать вопрос. Нет необходимости спрашивать может ли кто-то ответить на ваш вопрос. Просто задайте этот чертов вопрос. Если кто-то онлайн и ваш вопрос имеет смысл, то вы получите ответ. Если вы не вступили в дискуссию с конкретным человеком, то апеллируйте ко всем. Другие люди могут проигнорировать ваш вопрос если вы обращаетесь к конкретному человеку. Если вы хотите получить ответ, убедитесь что вопрос понятен. Если вы просто заявляете, что "у меня проблема с Х или У", "этот инструмент не работает" или "мой эксплоит обнаружен антивирусом", вы просто делаете заявление, а не задаете вопрос. Спрашивая что вы сделали неправильно или что вы можете сделать. чтобы что-то работало лучше, скорее всего вы получите то, что хотите. Даже если вам нужно объяснить контекст вашей проблемы, постарайтесь сделать это кратко, по существу и как можно быстрее перейти к вопросу.
Постарайтесь понять ответ и не комментируйте его сразу. Если кто-то говорит вам исследователь тему, сделайте это. Не продолжайте стонать, игнорируя советы, которые вам были даны. Если ответ непонятен, попросите разъяснить, но сделайте это так, что вы хотите учиться, а не получить готовое решение с ложки. Как говорилось ранее, чем более подходящий у вас тон, тем выше шанс, что кто-то поможет вам. Когда вы просите разъяснений, попытайтесь объяснить что вы уже сделали и что осталось непонятным. Перефразирование или обобщение некоторых частей помогает показать какая часть ответа была ясна, а какая требует дальнейшего уточнения. Подумайте перед тем как задать новый вопрос:
- Правильно ли я вас понял
- Ты хочешь сказать, что
- Иначе говоря
- Что если
- Значит ли это
Если вы вообще не поняли ответа, не бойтесь сказать об этом. Спросите может ли этот человек перефразировать, объяснить что-то по-другому или уточнить определенную часть ответа. Сделайте это вежливо.
Если кто-то помог вам, покажите ему как вы цените его помощь, даже если он не полностью ответил на ваш вопрос. Поймите, что у многих людей есть другие дела кроме ответов на вопросы. Если они пытаются помочь, это потому что они хотят помочь, не смотря на жесткие графики, сроки по работе и другие приоритеты. Поэтому благодарите за потраченное время. Сделайте это понятным способом,
Упомяните, что ответ был полезен. Если у вас сложилось впечатление, что вопрос который вы задали, является очень распространенным вопросом и ваше чутье говорит, что человек уже устал на него отвечать - просто протяните руку. Задокументируйте свой вопрос и решение, разместите его где-то в интернете. Это поможет вам увидеть связь между вопросом и решение, попросите человека, который помог с решением, пусть проверит все ли верно заполнено. Вы сможете помочь другим людям, просто указав им свой документ. Это показывает, что вы хотите учиться, вы слушаете и вы желаете давать другим. Угадайте, как легко вам будет получить помощь в подобной ситуации.
Задавать хорошие вопросы - это искусство, требующее немного подготовки. Ответы на вопросы, с которыми вы хотите помочь другим, могут быть нетривиальными. Когда вы отвечаете другим, то оказываетесь по ту сторону баррикад. Если вы решили помочь кому-то и дать ответ на вопрос, то вам понадобятся следующие рекомендации:
Для каждого вопроса есть своя причина. Вы должны определить разницу между тем, кто стремится к быстрому решению и тем, кто искренен, кто действительно хочет учиться, но не знает как хорошо общаться. Когда вы не уверены, не стоит сразу ругать человека, дайте ему шанс. Есть простая возможность помочь кому-то если вопрос был расплывчатым или человек туманно выразился. Просто перефразируйте вопрос и спросите, действительно ли это то, что человек хочет знать или просто скажите ему, что вопрос не имеет никакого смысла и попросите человека быть более конкретным. Человек убедится в том, что вы понимаете вопрос и подскажет то как в следующий раз его сформулировать. Нет причин смеяться над кем-то или заставлять его чувствовать себя плохо. Он или она уже признались в том, что были в неведении.
Подумайте прежде чем ответить и попросите дополнительную информацию
Вы действительно понимаете вопрос? Ваш ответ будет полезен? Попросите разъяснений если вопрос не ясен. Перефразируйте, попросите пример. Попробуйте воспроизвести шаги, необходимые для решения проблемы и попросите более подробную информацию и документацию.
Отвечайте только на вопрос только потому, что вы хотите помочь и у вас есть время для того, чтобы помочь. Хотя первый взгляд на проблему может показать, что вопрос простой, потом можно увязнуть в нем. Если вы решите вмешаться для помощи кому-то, вам придется направить спрашивающего на верный путь и сложно оценить сколько времени это займет. Если вы все делаете верно и хорошо понимаете вопрос, не должно занять много времени ответить на вопрос или дать спрашивающему правильные ресурсы.
Схитрите. Некоторым людям нравится делать так все время, что может вывести людей из себя и разрушить нормальное общение, поэтому не используйте эту технику во всех случаях. Конечно, есть большая ценность в ответе на вопрос, при условии что вопрос предлагает решение или направление на получение дополнительной информации. Давайте взглянем на небольшой пример:
Вопрос: "я запустил эксплойт против целевого компьютера и эксплойт говорит, что я не смог получить реверс шелл".
Много вещей могло пойти не так в подобном сценарии и сложно ответить на вопрос в нескольких словах. Задав несколько коротких вопросов, человек мог вернуться к работе, получив подробную информацию о том, почему его процедура не сработала. Например, вы можете спросить могут ли оба хоста подключиться к друг другу. Это предполагает что может быть сетевая проблема. Это показывает, что вы понимаете отдельные уровни, связанные с эксплуатацией удаленного компьютера и помогаете ему использовать структурный подход к устранению такого рода проблем. Задавая вопросы о самом вопросе, вы можете выявить основные причины и мотивы. Иногда люди слишком смущены, чтобы признать что-то, потому что они чувствуют, что делают это неправильно или делают что-то незаконное. Задавая конкретные вопросы о том, почему они хотят что-то сделать, вы можете получить полезную информацию об этом человеке, о том законны его намерения или нет. Если у кого-то возникли проблемы с запуском эксплойта против машины в интернете, вы можете предложить ему имитировать процедуру на виртуальной машине. Если человек отказывается, то это определенно указывает на незаконные мотивы. Если кто-то спрашивает как сделать определенную вещь, спросите его что он пытается достичь. В идеале это заставит человека пояснить свои мотивы.
Если вы не уверены в ответе, просто скажите об этом. Нет ничего плохого в том, чтобы признать, что не знаешь что-то наверняка. Угадывание приемлемо пока вы ясно даете понять, что вы угадываете. Это может предложить возможные решения и направит человека на верный путь.
Вы можете продемонстрировать свои навыки, предоставив полезный ответ, а не хвастаться, подчеркивая насколько вы умны. Основываясь на том, насколько специфичен вопрос и как он отражает уровень знаний, который обладает спрашивающий, вы можете соответствующим образом настроить уровень детализации вашего ответа. Вам не нужно подробно отвечать на вопросы как будто вы читаете им учебник. Легкий толчок в правильном направлении достаточно, чтобы стимулировать процесс обучения. Это нормально, чтобы направить кого-то на верный путь и указать ему ресурсы, которые он должен изучать если хочет добиться прогресса в будущем и не просто бросать в него ссылки. Если другой человек понимает почему ему нужно чему-то научиться, будет легче убедить его сделать это. Конечно, если один и тот же человек просто продолжает задавать вопросы и не хочет тратить время на изучение вещей, то ваши ответы очевидно больше не помогут и сам человек не хочет, чтобы ему помогали. Он просто хочет, чтобы кто-то сделал за него работу. В таком случае нет смысла пытаться. Подождите пока человек поймет что ему нужно работать и игнорируйте его пока он не докажет это.
Конечно, есть люди у которых слишком много свободного времени и они готовы тратить его на дурацкие вопросы. Меньшинство так называемых троллей могут так актерски изображать серьезные вопросы, что можно и не отличить их желание дурачиться. Если у них получается, эти люди могут отнять ваше время. К счастью, большинство троллей не умеют маскироваться и их легко узнать. Тратить время на таких людей не очень приятно, поэтому они должны получить пинок под зад.
Горизонтально или вертикально?
Мне все равно предпочитаете ли вы стоять или лежать, изучая новые вещи. Что я имею в виду под "горизонтально или вертикально": должны ли вы сначала сосредоточиться на изучении широкого спектра вещей (горизонтально) или вы должны погрузиться непосредственно в область, которая вас интересует (вертикально)?
Хороший вопрос. В обоих случаях есть плюсы и минусы и мнений столько же сколько людей. Понимание большой картины может быть полезно. Если ваша цель стать пентестером веб-приложений, имеет смысл изучить все уровни, начиная от операционных систем, сетей, веб-серверов и прикладных технологий, широко используемых платформ, БД, и общих языков разработки. Это большой слон. Объем интересующей вас информации, как правило, зависит от того, что вам нужно. В то же время чем лучше вы понимаете как все работает, тем легче будет понять как нарушить правила. Моя рекомендация: постарайтесь сначала понять как можно больше о разных уровнях. Будьте терпеливы и погрузитесь в мелкие детали поиска ошибок и эксплуатации. Наличие инструментов позволит сразу атаковать систему и удовлетворить ваше любопытство. Всегда помните. что инструменты - это не магия. Они просто облегчают вещи. Просто не используйте их пока не поймете что они делают и как их правильно использовать.
Итак, я считаю что есть большая ценность в попытке понять инженерный аспект в системах. Понять как вещи взаимодействуют, как они настроены и как работают. И не переусердствуйте. Вам не нужно быть экспертом по IPm который понимает всю спецификацию RFC.
Кроме того, поймите, что вы можете принять поэтапный подход. Для тестирования веб-приложений не требуется быть экспертом по маршрутизации BGP. Это не плохо если вы узнаете об этом для расширения своего горизонта. Будьте реалистичны в поставленных целях и постарайтесь точно определить предпосылки, необходимые для их достижения. Спросите несколько мнений, если вы не уверены и не бойтесь узнать слишком много.
Есть много способов узнать что-то новое, некоторые из них индивидуальные, которые работают только для вас. Некоторые люди могут узнать что-то новое, прочитав книгу или сообщение в блоге. Некоторым нужно визуализировать вещи, а другим нужен кто-то, чтобы объяснить вещи лицом к лицу. Есть решение для каждой методологии. Вы можете купить книги или публикации в интернете. Вы можете ходить на занятия (онлайн или в реальной жизни).
Нет ничего плохого в любом из этих подходов если вы понимаете, что лучше всего работает для вас, поэтому вы можете соответствующим образом адаптировать свою стратегию. Общим аспектом всех этих методик обучения является получение практики. Пробуя новые вещи для себя, будет проще запомнить и в конечном итоге превратить знания в опыт.
В любом случае, виртуальное окружение может быть полезным. В настоящее время технология виртуализации доступна для большинства распространенных платформ, она дешевая и обеспечивает большую гибкость. VirtualBox, VMWare, Parallels, Xen, Hyper-V - всего лишь несколько примеров.
Хотя это не совет для всех, вы пройдете долгий путь, установив систему Windows и Linux. Разберитесь как они устроены на внутреннем уровне.
Кормятся с ложечки только младенцы, верно? Если вы спросите опытных людей, правильно или нет кормить с ложечки, я уверен, что большинство ответит что это плохо. Я считаю, что все не так однозначно. Всех нас кормили с ложечки (или по-крайней мере большинство из нас). Этим занимались наши родители, когда мы были младенцами или не были в состоянии прокормить себя. Нам всем говорили определенные вещи, чтобы мы могли практиковаться, становиться лучше и переходить к следующему этапу. Существует тонкая грань между обучением и оставлением человека без поддержки.
В "Одноминутном менеджере" Кен Бланшар показывает 4 уровня развития. Один из них определяется высокой вовлеченностью и низкой компетентностью. Возможно, вы сейчас как раз в этом месте. Вы рады узнать что-то новое, но понятия не имеете с чего начать. В таком случае будет полезно некоторое кормление с ложки. Это не означает, что кто-то другой будет делать всю тяжелую работу за вас, но просто отправить человека на поиски знаний не давая направленных подсказок, вредно. Как только вы узнаете больше и станете более компетентным, вы обнаружите область неизведанного. В случае когда требуется проделать длинный путь, кормление с ложки не поможет, уместен будет коучинг. Задавая правильные вопросы, вы заставите людей думать, применять знаний, которое уже есть и искать ответы. Если они все-таки застряли и не имеют возможности найти ответы сами, возможно, пришло время сделать один шаг назад и получить помощь. Поэтому - пожалуйста будьте осторожны, когда негативно относитесь к кормлению с ложки. Сам подход зависит от уровня развития.
Что-нибудь еще?
Время нарисовать ориентиры, которые станут основной на пути.
Я бы посоветовал начать с изучения того как системы работают и взаимодействуют. Постарайтесь получить хорошее представление о TCP/IP, уровнях OSI, портах, переадресации портов, NAT, брандмауэре и т.д. Вам понадобится это, когда вы будете анализировать цель или для того, чтобы развернуть свое окружение.
Вы также должны быть в состоянии управлять операционной системой. Вместе с сетями это должно стать отправной точкой. Большинство из вас знакомы только с одной операционной системой, но не бойтесь погрузиться в мир Windows и Linux. Вы должны научиться свободно настраивать сетевые конфигурации, основные функции безопасности, используя утилиты командной строки и интерфейс. Начните использовать эти системы в качестве основного компьютера и пользуйтесь ежедневно, чтобы познакомиться с ними.
Я знаю, что вы хотели бы начать атаковать системы прямо сейчас, не тратя слишком много "накладных расходов", верно? Я полностью понимаю, что заманчиво звучит использование сканеров портов или других инструментов сходу, но какой смысл в использовании голых инструментов. Если вы не знаете, что вы получите на выходе? Что еще хуже, вы можете легко нанести ущерб если не знаете что делаете.
Далее попытайтесь получить широкое представление о ландшафте атаки. Может быть, вы уже решили стать пентестером веб-приложений, но все равно будет не лишним понять что лежит на низком уровне. Есть много ресурсов на эту тему, но я решил перечислить самые важные из них (по-крайней мере те, которые охватывают широкий спектр навыков):
Практическое введение в хакинг
Руководство этичного хакинга - грей хат
Серия "Hacking Exposed"
Профессиональное тестирование на проникновение
Помимо представления о ландшафте, вы узнаете несколько вещей о методологиях и подходах пентестинга, включая сложное искусство перевода технических результатов в то, что может использовать бизнес. Быть пентестером связано с бумажной работой. Опять же, примените истинное хакерское мышление. Ломайте вещи, потому что вы хотите сделать их лучше, а не потому что вы хотите их сломать. Не пытаясь реально "сделать вещи лучше", вы окажетесь нарушителем. Так что не жалуйтесь на ошибки других. Подумайте и исправьте. Добавьте ценность.
Независимо от того как долго вы занимаетесь, в конечном итоге вы будете использовать скрипты и инструменты, которые автоматизируют определенные вещи. Вы даже можете изменить существующие инструменты или написать собственные, чтобы упростить жизнь. В конце концов, для этого и существуют сценарии. Они - инструмент, а не цель. Знакомство со скриптовыми языками, такими как Ruby и Python является обязательным. Вам не нужно быть экспертом, вы станете лучше когда начнете их использовать. Понимание С/С++ может быть полезным, поскольку некоторые люди как правило пишут инструменты на языках более низкого уровня (в основном по соображениям производительности). В любом случае, понимание того что делает инструмент более важно, чем понимание собственного. Написание собственного может быть полезно потому что доказывает, что вы понимаете что нужно сделать.
Вероятно, самое время обратить внимание на специальный дистрибутив, предварительно настроенный инструмент, который содержит большое множество инструментов для тестирования безопасности. Попытка создать свою собственную систему с нуля может быть полезной, но также отнимает много времени и, вероятно, лишнее если вы не освоите те что уже существуют. Kali Linux является одним из наиболее часто используемых дистрибутивов. Он имеет большую пользовательскую базу и хорошо поддерживается большинством разработчиков инструментов.
В дополнение к более ориентированным на атаку инструментам также рекомендуется расширить лабораторную среду и включить локальные и онлайн-системы, предназначенные для тестирования, что позволит проверить свои знания, используя доступные инструменты. Если вы занимаетесь безопасность веб-приложенй, хорошим началом может стать https://www.pentesterlab.com/exercises или http://www.amanhardikar.com/mindmaps/PracticeUrls.html.
Только когда вы будете готовы, выберите цель или цели, которые вы хотите и создайте реалистичный план действий для достижения цели. Некоторые темы займут дни, другие недели, месяцы или может быть годы для понимания. Не торопитесь, делайте шаг за шагом. Для каждого типа цели вы найдете определенные ресурсы (книги, онлайн-публикации, классы, виртуальные лаборатории и т.д.)
Некоторые хорошие ресурсы я перечислю ниже:
https://code.google.com/p/pentest-bookmarks/wiki/BookmarksList
http://www.vulnerabilityassessment.co.uk/Penetration%20Test.html
http://wiki.securityweekly.com/wiki/index.php/Penetration_Testing_Tips_&_Tricks
https://github.com/enaqx/awesome-pentest
https://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents
http://www.dfir.org/?q=node/8
https://www.owasp.org/index.php/The_OWASP_Testing_Framework
http://www.pentest-standard.org
Хотя я призываю всех найти свою собственную область знаний, если вы серьезно относитесь к тому, чтобы стать профессиональным пентестером. В конце концов, многие компании используют веб-приложения. Понимание того как работает HTTP, как разрабатываются веб-приложения и как защищаются, как работают базовые платформы баз данных, составит большую часть пути.
Используйте социальные сети, чтобы следить за влиятельными людьми или теми, кто вдохновляет других и просто более опытными в целом. Общайтесь с людьми, будьте милы. Задавайте вопросы и помогайте в процессе обучения.
Если у вас есть возможность посетить конференции или семинары, сделайте это. Это отличный способ познакомиться с более опытными людьми и поговорить с ними. Спросите их над чем они работают. Поделитесь тем, что вы делаете и попросите совета. Станьте частью сообщества (конференции это отличные места для поиска работы).
Откройте сайт/блог и поделитесь своими выводами. Конечно же, вы не можете быть первым человеком, который пойдет по определенной дороге... но вы также не будете последним. Старайтесь следить за прогрессом и документировать. Вы можете делать заметки по ходу дела, а потом разместить их для всех желающих. Потенциальные работодатели могут быть не так заинтересованы в том, что вы публикуете, а скорее сосредоточатся на том как вы структурируете свои заметки, свои мысли и свой потенциально инновационный подход к вещам. Сделайте свою работу видимой и научите ей других.
Не бойтесь делать ошибки. Вы достигнете цели. Все что нужно - это время и усилия.
Удачи.
Если вы не атакуете свою собственную систему или не получили на это надлежащего разрешения, то нападения на систему является преступлением. Не будьте дураком.
|
Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души"
М.Николаев "Вторжение на Землю"