Компания Google открыла исходники сканера Tsunami — решения для обнаружения опасных уязвимостей с минимальным количеством ложных срабатываний. Tsunami отличается от сотен других сканеров (как коммерческих, так и бесплатных) подходом к его разработке — Google учитывал потребности гигантских корпораций.
Идеология Tsunami
Когда уязвимости или неправильная конфигурация безопасности активно используются злоумышленниками, организациям необходимо быстро реагировать, чтобы защитить потенциально уязвимые активы. Поскольку злоумышленники все чаще вкладывают средства в автоматизацию, временной интервал реагирования на недавно выпущенную уязвимость высокой степени опасности обычно измеряется часами.
Это создает серьезную проблему для крупных организаций с тысячами или даже миллионами подключенных к Интернету систем. В таких масштабных средах уязвимости безопасности должны быть обнаружены и в идеале устранены полностью автоматизированным способом. Для этого группы информационной безопасности должны иметь возможность внедрять и развертывать детекторы для решения новых проблем безопасности в масштабе за очень короткое время.
Кроме того, важно, чтобы качество обнаружения всегда было очень высоким. Чтобы решить эти проблемы, был создан Tsunami — расширяемый механизм сетевого сканирования для обнаружения уязвимостей высокой степени опасности с высокой степенью достоверности без проверки подлинности.
Принцип работы
"Под капотом" у сканера находятся две довольно известные утилиты — nmap и ncrack, которые позволяют разбить этапы работы на два этапа:
Первый и основной этап работы Tsunami — сканирование. Производится разведка периметра, включающая в себя поиск открытых портов и последующую проверку, для точного определения протоколов и служб, работающих на них (чтобы предотвратить false-positive срабатывания). Этот модуль основан на nmap, но также использует и дополнительный код.
Второй этап работает на основе результатов первого. Производится взаимодействие с каждым устройством и его открытыми портами: выбирается список уязвимостей для тестирования и запускаются безопасные эксплоиты, чтобы проверить, действительно ли устройство уязвимо для атак (PoC).
Также, Tsunami оснащен расширяемым механизмом поддержки плагинов. Текущая версия сканера оснащена плагинами для проверки открытых UI (WordPress, Jenkins, Jupyter, Hadoop Yarn и так далее), а также слабых учетных данных. Для проверки "слабых" учетных записей используется утилита ncrack, которая помогает обнаружить слабые пароли, используемые различными протоколами и сервисами, включая SSH, FTP, RDP и MySQL.
Быстрый старт
Установить необходимые зависимости:
nmap >= 7.80
ncrack >= 0.7
Установить для проверки уязвимое веб-приложение, например unauthenticated Jupyter Notebook server. Самый простой вариант через образ docker:
docker run --name unauthenticated-jupyter-notebook -p 8888:8888 -d jupyter/base-notebook start-notebook.sh --NotebookApp.token=''
Запустить следующую команду:
bash -c "$(curl -sfL https://raw.githubusercontent.com/google/tsunami-security-scanner/master/quick_start.sh)"
The quick_start.sh содержит следующие этапы:
- Клонирование репозиториев google/tsunami-security-scanner и google/tsunami-security-scanner-plugins в $HOME/tsunami/repos.
- Компиляция и перемещение плагинов и jar файлов в $HOME/tsunami/plugins.
- Компиляция и перемещение the Tsunami scanner Fat Jar в $HOME/tsunami.
- Перемещение tsunami.yaml — примера конфига в $HOME/tsunami.
- Пробуйте команды Tsunami для сканирования 127.0.0.1 с использованием ранее созданных настроек.
Контрибьюция
Несмотря на прямую связь с корпорацией, Tsunami не будет считаться принадлежащим Google брендом. Сообщество разработчиков будет совместно работать над сканером и совершенствовать его, результаты будут доступны всем желающим.
Страницы проекта
→ Репозиторий на github.
→ Репозиторий плагинов.
Автор: Лука Сафонов