Какие есть области знаний в веб-пентесте

В этой статье расскажем, какие в целом есть области знаний в веб-пентесте: дисциплины, навыки, инструменты. Это статья нужна для общего понимания, что необходимо изучать для горизонтального развития.

Технологии браузеров

Веб-пентест — это взлом веб-приложений. Поэтому необходимо понимать основные технологии, которые используют в индустрии, как и понимать особенности их работы: HTML, JavaScript, HTTP, веб-сокеты, CSS, SOP, CORS, хранилища.

Разработки серверной части

В идеале — понимать не только основы, но и детали, которые применяют в работе. Знание частностей языков и технологий помогут проще обнаруживать уязвимости.

Стоит начать с PHP, фреймворков, систем управления контентом. Дальше можно что пожестче: Java, Python, Node.JS, C#, Golang. Повторимся, главное — знать особенности языков и типовые ошибки, которые могут допустить разработчики.

Код

Выделили эту область в отдельную категорию. Начинающему пентестеру совсем необязательно уметь писать код. Но всё-таки неплохо, если вы сможете писать на одном скриптовом языке: Python, PHP или JavaScript. Вышка — если умеете на нескольких.

Бизнес логика

Понимание бизнес-логики и логики работы системы поможет проводить анализ на выявление ошибок. Многие уязвимости связаны именно с ней.

Сетевые службы

Понимание Proxy, VPN, AD. Для начала не стоит уделять этому сильно внимания, но рано или поздно придется подтянуть знания. Без этого никак.

Софт

Навыки работы с софтом для аудита и эксплуатации уязвимостей: SQLMap, Nmap, Metasploit, Burp Suite. Это база, инструментов намного больше.

Linux

Очевидность, но не для всех. Мы сейчас говорим не просто о возможностях командной строки, а про управление сервисами и пользователями, правами, сетью, менеджерами пакетов. Это прям стартерпак.

Windows Server

Здесь помогут знания о механизмах управления сетью устройств и сетевым оборудованием. От Active Directory до сетевых протоколов DNS, DHCP и ARP. Тут стоит понимать не только устройство, но и возможности настроек.

CISCO

Тут уже знания для более прокаченных. Знать архитектуру корпоративных сетей CISCO, понимать настройки, маршрутизацию, VLAN и Trunk порты. А ещё уметь мониторить трафик и управлять корпоративной сетью.

OSINT

Разведка по открытым источникам помогает при решении задач: найти сотрудника компании, идентифицировать личность для дальнейших действий. OSINT — довольно широкая область знаний. Пентестеру прежде всего нужно разбираться в инструментах.

Пример: поисковик интернет вещей — Shodan. С ним можно найти поддомены, серверы, ip-камеры и другое оборудование тестируемой организации. Вот пример поиска всех устройств с открытым 22 портом по России в Краснодаре:

В данном случае мы не ищем что-то по тестируемой организации, а просто показываем его функционал. Из этого запроса в Shodan мы узнали, что в Краснодаре есть устройства с открытым 22 портом (еще бы не было), всего их 2 661. Большинство устройств в ведении «Ростелекома», «Мегафона», «Вымпелкома» и «Кубань-Телекома».

Ещё один пример OSINT-инструмента — Sherlock. Он ищет никнейм при запросе во множестве соцсетей и сайтов. Это позволяет составить профиль человека и если в скоупе пентеста есть социальная-инженерия — можно использовать информацию добытую с помощью Sherlock например для этих целей.

Выше пример использования Sherlock для поиска данных по пользователю hackerman1337. Пользователь много где зарегистрирован, особенно на сайтах IT-тематики. Тут мы можем предположить, что этот человек может быть разработчиком, так как у него есть GitHub, GitLab и Docker Hub.

Социальная инженерия

Двоякая область знаний. С одной стороны ей нигде особо не учат, с другой — есть база психологии. Пентестеру это необходимо для установки контакта с жертвой. Если вы знаете информацию о человеке, понимаете его слабости — намного проще приблизить пентест к реальному сценарию контакта жертвы со злоумышленником.

Социальная инженерия всегда на грани добра и зла, потому что приходится делать плохое (обманывать и вводить в заблуждение) ради хорошего (успешного пентеста и безопасности организации). Поэтому первое: социальную инженерию при пентесте не стоит применять без разрешения заказчика.

К техникам социальной инженерии относятся:

  • Фишинг → отправка жертве вредоносного электронного письма

  • Вишинг → подделка голоса на знакомый жертве и выманивание данных посредством звонка

  • Смишинг → Отправка жертве вредоносных СМС

Также сюда можно было бы отнести некоторые техники связанные с мобильными устройствами, но об этом в другой раз.

Для социальной инженерии также есть инструменты, например, The Social-Engineer Toolkit. В нем сразу есть все что нужно для социальной инженерии, достаточно взглянуть на его основное меню:

Выбор широкий: от целевого фишинга до подставных Wi-Fi точек доступа и генерации QR-кодов. Очень полезен в кейсах, где вам нужно проверять периметр организации. Например, развесить везде QR, который ведёт на вредоносную ссылку. Это может помочь попасть в периметр организации, например, под учетной записью сотрудника, который перешел по вашему QR-коду.

Криптография

Теория о том, как устроена защита сведений: помогает понять, как работают современные алгоритмы зашифровки и расшифровки. Это поможет находить слабые места и декодировать сообщения. Мы как раз писали и об алгоритмах шифрования, и о хешировании.

Следование за OWASP

OWASP или Open Web Application Security Project — открытый проект по обеспечению безопасности приложений, где есть важные материалы: от топов распространенных уязвимостей до вебинаров (всё на англ). Их рекомендации высоко ценят независимые аудиторы, так что стоит постоянно прислушиваться, что говорит и о чём пишет фонд. Вот, например, гайд, как тестить приложения.

Основы безопасной разработки и DevSecOps

Видя противоречия между системой безопасной разработки и реальным кодом, вы сможете проще находить уязвимости. Тут и обработка пользовательского ввода, и управление сессией с зависимостями, и тестирование безопасности кода (CI/CD). Важно понимать принципы и роли в безопасной разработке.

Контейнеризация

Тут стоит знать принципы и хотя бы основы, а еще инструменты: Docker, Kubernetes. Контейнерная архитектура — тренд в разработке. С точки зрения безопасности, понимая базу, можно будет находить уязвимости в контроле доступа, управлением конфигурацией и мониторингом. Здесь мы говорили только веб-пентесте. Если добавить инфраструктурный пентест, областей знаний будет намного больше. И забыли упомянуть главное: пентест — это я прежде всего знание уязвимостей и возможность их эксплуатации. Чем больше вы их знаете, тем больше прокачиваетесь как специалист. Стоит начать с MITM, XSS, SQL-инъекций, SSTI, SSI.

Last updated