Итак, кто же такой этичный хакер, или пентестер? По простому, это тот, кто имитирует работу реального злоумышленника, тем самым тестируя организацию на возможность проникновения, то есть компрометации информационных систем и получение несанкционированного доступа к конфиденциальной информации.
Предположим, что есть большие компании, где работают уважаемые люди. Так вот, на этих людей трудятся программисты, которые так или иначе где-то допускают ошибки в своей работе, и в том числе в коде. А причины этих ошибок вполне себе банальные — по глупости, из-за лени или недостаточно глубокого знания используемых технологий, а чаще всего из-за горящих дедлайнов, не позволяющих нормально продумать логику приложения и покрыть код тестами. Соответственно, в программном продукте любая ошибка — это потенциальная уязвимость, а уязвимость — это уже потенциальный риск. Не всегда риск сводится к потере денег напрямую, это может быть интеллектуальная собственность, и репутация, а все это, в конечном итоге, уже выражается в деньгах.
Большие серьезные люди не решались торопить программистов, отправить их на курсы безопасной разработки или же дать время на доведение кода до совершенства. На заре технологий большие люди обычно решали эти риски принять, то есть снизить, передать, застраховать, нивелировать и много других умных слов. Так продолжалось какое-то время — программисты программировали, хакеры понемногу воровали, все шло своим чередом. Но так было до поры, до времени, постепенно объем данных стал значительно расти, однако наглость хакеров росла еще быстрее. Когда ущерб от взлома стал превышать все допустимые пределы, на свет вышли этичные хакеры, все сразу поняли, что информационная безопасность — это дело серьезное. Сегодня сложно представить информационную систему, к работе над которой не привлекались бы пентестеры.
Чем занимается пентестер?
Основная деятельность этого специалиста заключается в проверке безопасности информационных систем, включающем в себя внешнее и внутреннее тестирование защищенности веб-приложений или беспроводных сетей, тестирование на проникновение с использованием методов социально-технической инженерии, проведение тестов на проникновение в рамках требований и стандартов, составление отчетов и выработку рекомендаций по устранению найденных уязвимостей.
Требования к пентестеру
Для эффективного выявления уязвимостей квалифицированный пентестер должен обладать широким спектром профессиональных компетенций и глубокими познаниями в целом ряде областей, связанных с информационной безопасностью:
- администрирование Unix, Windows и веб-серверов
- сетевые протоколы (TCP/IP)
- защитные технологии
- основные уязвимости сетевых протоколов (ARP-Spoofing и т. п.),
- понимание работы протоколов и актуальных веб-технологий — HTTP, HTTPS, JSON, REST и т. д.
- знание основных веб-уязвимостей, которые входят, например, в список рисков OWASP
- знание рынка продуктов информационной безопасности (производители, поставщики, их конкуренты, тенденции развития, особенности спроса и т.д.)
- понимание технологий защиты информации (VPN, VLAN, DLP)
- практические навыки работы с такими программами, как nmap, Wireshark, Metasploit, Burp Suite и т. д.
- опыт разработки на языках программирования, например: C/C++, Python Assembler и т. д.
Чем больше языков программирования знает пентестер, тем более универсальна будет возможность приложения его знаний. Большим плюсом является опыт в проведении реверс-инжиниринга и изучении вредоносного кода, выступление на различных конференциях, связанных с информационной безопасностью, участие в программах Bug Bounty. Как и для любого IT-специалиста незаменимо знание английского на уровне не ниже Intermediate, дающее доступ к актуальной информации, что особенно критично для сферы информационной безопасности.
Чтобы стать пентестером требуется освоить очень много знаний, но начинать необходимо с понимания основ, для этого могу посоветовать обратить внимание на 3 отличные книги:
- Современные операционные системы
- Архитектура компьютера
- Компьютерные сети