Автор данной статьи не несет ответственность за ваши действия. Статья создана в ознакомительных целях!

Привет всем. Это статья про фаззинг, где я постараюсь объяснить что это и показать его применение на практике.

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

Вот вам моё определение:

Фаззинг — это техника тестирования, заключающая в передаче приложению заведомо неправильных данных. Целью фаззинга является поиск так называемых аномалий (падения, зависания, ошибки, странное поведение).

Приведу пример, чтобы вам было понятнее, зачем же нам фаззить.

У нас есть обычное приложение с формой входа (в ИБ это будет называться потенциальная точка входа или вхождения, то есть потенциальная дыра в безопасности). Как же нам его фаззить? Мы начинаем писать заведомо неверные значения, на что получаем ошибки авторизации, что логично. А что если в форму ввода написать несколько тысяч символов? В 90% случаев приложение подвиснет, потому что слишком много данных. А худшем приложение просто упадет, ведь ему не хватит памяти для работы. А если туда написать эти же пару тысяч символов, но разными кодировками, символами из разных языков, хотя бы индийского? Все помнят про DoS ios? Человеку приходил символ జ్ఞా и телефон намертво вис. Надеюсь, мой пример пользы фаззинга вам был понятен.

Практика!

1. Установка

Установка метасплоита проводится двумя командами:
apt update && apt install metasploit-framework

2. Использование

Запускаем мсф:

Заходим в модуль для фаззинга ssh:
use auxiliary/fuzzers/ssh/ssh_version_corrupt

Ставим параметр RHOST
set RHOST ip_адрес

Запускаем!
run

Здесь уже надо подождать, но результат будет на лицо:
1580042193254.png

Иииии... Лог со стороны сервера!
1580042253109.png

SSH запустился сам через пару секунд, но факт остается фактом. Я смог найти ту самую аномалию, после чего я решил провести реверс-инженеринг, то есть обратную разработку, не без помощи коллег по цеху. Я вижу как создается код, как всё это собирается, а следовательно и вижу ошибки. Пока я не смог понять, почему произошло отключение SSH, но это дело времени.

Скажу ещё одну очень важную деталь, фаззингом можно считать брут директорий, потому что мы будем использовать различные значения для поиска аномалии, а аномалией будет код состояния HTTP 202 Accepted или нечто похожее.

Спасибо за чтение!