|
|
||
Не поймите нас неправильно, книги - это здорово. Проблема в том, что многие люди сосредотачиваются на чтении книг вместо того, чтобы получить практический опыт. Вы не можете просто прочитать про определенные баги и понять что это такое. Вам нужно посмотреть как сервер реагирует если вы попытаетесь использовать разные пэйлоады. Это единственный путь к прогрессу и реальному пониманию проблем безопасности.
Повторение - мать учения
Читайте книги, но не используйте как введение в то о чем хотите узнать.
Еще одно заблуждение заключается в том, что вам необходимо всюду использовать Кали для взлома. И вам нужно использовать Кали для атак (напрямую или на виртуальной машине).
Кали является удобной системой со многими инструментами пентеста и очень удобно, когда вы можете использовать многие инструменты которые может быть трудно установить (особенно драйверы Wi-Fi). Тем не менее, вам будет удобнее использовать вашу повседневную ОС и не прыгать постоянно в виртуальную машину. Особенно если вы изучаете тестирование веба, вам редко пригодится Кали. Кроме того, не всегда удобно запускать Кали, ведь вам могут понадобиться другие производительные инструменты в это время. Параллельно им будет сложнее работать.
Мы получаем много вопросов про пэйлоады, которые якобы не сработали, хотя это не так. Получение 500 HTTP ошибки не означает, что вы не эксплуатировали баг. Shellshock и многие другие проблемы сериализации являются распространенным примером ошибок, с которыми вы получите такую ошибку, поскольку пэлоайд может вызвать неожиданное поведение.
При выполнении теста черного ящика многие начинающие пентестеры хотят убедиться в том, что система неуязвима ("Как я могу понять, что ничего не пропустил?"). Правда в том, что вы никогда не можете быть на 100% уверены в том, что система неуязвима во время теста черного ящика. Вы просто убедитесь, что у вас закончились тест-кейсы.
Реверс и написание эксплойтов - это крутые вещи и вы должны обязательно изучить эти области. Однако если вы хотите попасть в ИБ и найти первую работу, вам нужно хорошо разбираться в вебе (меньше в сетях и мобильных системах). Большинство компаний в безопасности делают ставку на веб и это не изменится в ближайшее время. Кроме того, есть много сеньеров, которые вкладывают много усилий на поле реверса/написания эксплойтов. Поэтому если вы хотите увеличить вероятность получения работы, вам нужно получить умения в тестировании веба.
Тоже самое относится и к баг баунти, только несколько из них требуют реверсинга, большинство основаны на вебе и мобильных устройствах.
Это касается множества людей. Когда вы читаете новости о безопасности, постарайтесь углубиться хотя бы в одну тему. Если читаете в CVE:
- попробуйте понять как устроен фикс
- попробуйте эксплуатировать проблему
- постарайтесь понять корневую причину
- посмотрите, можете ли вы найти программу баг баунти, работающую с тем же приложением или с аналогичной проблемой
Занятия раз в неделю - это долгий путь
Вы можете остаться пассивным наблюдателем или стать активным учеником!
То же самое относится и к конференциям! После конференции попробуйте выбрать одну тему и воспроизвести ее.
Не тратьте много времени на получение идеальной настройки с полной сетью и несколькими серверами ESX, а также для подбора идеального ноутбука. Всегда легко откладывать и уходить от того, что реально имеет значение. Не оставайтесь в зоне комфорта. Просто начните учиться/взламывать даже если у вас нет идеальных условий.
Как вы ожидаете, что разработчик в 2018 году должен знать основы безопасности, так и инженеры по безопасности должны писать простые программы/скрипты для выполнения основных задач. Как тестер, вы должны автоматизировать все время. Вам нужно уметь писать небольшие скрипты:
- напишите небольшой клиент TCP без поиска в гугле
- проанализируйте CSV файл, чтобы извлечь столбец
- отправьте HTTP запрос, основываясь на прошлом скрипте
- напишите какую-либо утилиту
- используйте регулярные выражения
Чтобы стать лучшим тестировщиком, вам нужно читать код. Как пентестер, половина вашей работы - понимание как выглядит исходный код на стороне сервера. Чтение большого количества кода очень помогает в этом! Вы также узнаете какие ошибки обычно делают люди. Вы также можете прочитать код ваших любимых инструментов, чтобы лучше понять их внутреннюю работу и ограничения.
Распространенная ошибка - пытаться узнать слишком много языков программирования. Не поймите меня неправильно, это хорошая идея, чтобы знать много и понимать различия (особенно для написания веб-шеллов и для CTF). Но прежде чем сделать это, вы должны выучить хорошо хотя бы один язык.
Например, вам нужно знать:
- как отключить/включить проверку сертификатов на этом языке
- типичные ошибки, которые могут привести к уязвимостям
- хорошие ресурсы об этом языке
- как быстро исправить код, чтобы заставить что-то работать
Вы также должны понимать и быть способным написать общие паттерны:
- параллельное выполнение кода (тред/форк)
- работа с потоками
- TCP и UDP клиент и сервер
- чтение данных из STDIN
Как только вы узнаете сложные понятия на одном языке, вы получите лучшее понимание общих паттернов и ошибок (уязвимостей), который ассоциируются с ним. Это поможет вам найти больше ошибок.
Наконец, как только вы достаточно хорошо выучили язык, вы можете выучить другой, просто сравнивая его.
|
Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души"
М.Николаев "Вторжение на Землю"