Решил написать эту заметку, и немного нарушить традицию писать по технике.

Давайте вместе попробуем сравнить две профессии – веб-хакер и веб-аудитор. Почему именно веб, а не шире? Потому что последние два года я занимаюсь исключительно вебом, и компенетциями в других областях не обладаю в требуемой мере. И после сравнения постараемся понять, специалист какой из этих профессий лучше подходит на роль пентестера.

Веб-хакер.

Недавно мы записывали ESET VirusFree подкаст #31, в ходе которого, мой собеседник отозвался об основной массе веб-хакеров, как о людях, умеющих “круто расставлять кавычки”. Во многом я с ним солидарен и сам отношусь к таким умельцам. Но это не все умения, которыми обладает “обычный” веб-хакер. Как минимум, потому, что хак начинается с реализации атаки, а с момента обнаружения уязвимости.  Перефразируя предыдущее предложение, подытожу:

Веб-хак – это веб-шелл или дефейс, а не с сообщение типа WARNING: sql syntax incorrect.

Чтобы отсеять массу троллей, введем достаточные условия (выполнение любого из которых гарантирует, что человек –  веб-хакер):

1. Веб-хакер – человек, который зарабатывает (зарабатывал) на безопасности веб-приложений не менее 5 МРОТ на протяжении не менее 4 месяцев.

2. Веб-хакер – человек, который придумал новый вид или подкласс уязвимости веб-приложений, принятый в мировой общественности.

3. Веб-хакер – человек, который нашел хотя бы две новые уязвимости серверного типа в популярных веб-приложениях  (PHPMyAdmin, PHPBB, WordPress, Joomla, etc)

4. Веб-хакер – человек, награжденный по программе Google Security Reward (http://www.google.com/about/corporate/company/halloffame.html) или Facebook reward.

5. Веб-хакер – человек, который может эксплуатировать найденную уязвимость на широком спектре ОС/веб-серверов и их настроек для реализации атаки (выполнение команд ОС с правами пользователя веб-сервера).

Основная задача веб-хакера:

Взломать хоть как-нибудь. То есть получить доступ теми средствами, с помощью которых это сделать проще всего. Доводить уязвимость до реализации обязательно (иначе доступ никак не получить).

Слабая сторона: отсутствие понимания о полноте и качестве при исследовании веб-приложений. 

Веб-аудитор.

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

1. Веб-аудитор – человек, способный произвести оценку защищенности веб-приложения по конкретному типу уязвимости. Скажем, изучить структуру движка и вывести полные рекомендации (пусть и избыточные) по исправлениям, выполнив которые, риск обнаружения XSS (отраженных и хранимых) автоматизированными средствами типа Acunetix снизится до почти нуля.

2. Веб-аудитор – человек, который знает об основных типах уязвимостей веб-приложений, не исключая XXE,HRS (HTTP Request Smuggling). Может написать пример программы, уязвимой ко всем типам уязвимостей, разъяснить причину возникновения уязвимостей на программном уровне.

Предельно ясна задача:

Найти все возможные способы взлома. Доводить все уязвимости до реализации не обязательно (но желательно), достаточно оценить риск и найти метод устранения каждой уязвимости. 

Слабая сторона: недостаточные знания в практическом плане по реализации атак с использованием найденных уязвимостей. Недостаточные знания в других областях ИБ.

Какая связь?

На практике оказывается, что вероятность того, что какой-либо веб-аудитор является веб-хакером гораздо выше, чем вероятность того, что какой-либо веб-хакер является веб-аудитором. Причина простая – веб-хакеру нет жизненной необходимости совершенствоваться и становиться веб-аудитором. А вот веб-аудитор, совершенствуясь неизбежно становиться веб-хакером (по п. 2-5, конечно).

Пентест.

Здесь опять-таки не имею должной компетенции в полном объеме, так как занимаюсь исключительно аудитами веба. Но могу сказать о том представлении, которое сложилось у меня в связи с общением (долгим и плотным) с самими пентестерами.

Пентестер – нечто среднее между веб-хакером и веб-аудитором. С одной стороны он должен искать и эксплуатировать уязвимости (иначе какой пентест без самого “проникновения”) с другой стороны – обеспечивать полноту проведенного пентеста, то есть изучать веб-приложение с разных сторон. На практике сначала реазулизуется проникновение, то есть работает по-сути веб-хакер, живущий в пентестере, затем уже веб-аудитор. Иногда (в случае очень опытных экспертов) веб-хакер и веб-аудитор внутри пентестеры работают вместе, чередуясь. Веб-аудитор заканчивает работать внутри пентестера ровно тогда, когда заканчивает срок выполнения проекта. И никак иначе – ведь у безопаности нету дна. Альтернативный вариант – веб-аудитор заканчивает работать внутри пентестера тогда, когда его дергают на другой проект или просто становиться лень.

Но помимо всего прочего, пентестер обладает знаниями вне рамок веб-приложений. Эти знания обязательны. Обратное неверное – то есть существуют пентестеры, вообще не вникающие в безопасность веб-приложений (спецы по сетям, бинарным приложениям, etc).

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