Спутник и Погром - X-Tools. Подборка полезных хактулз для сбора и анализа данных
nopaywall
Содержание статьи
Ищем интересные строки в Git-репозиториях
- Разработчик: Danilo Vaz aka UNK
- Страница: GitHub
Боевые логины и пароли в Git-репозитории — это уже притча во языцех и настоящий security-фольклор. Казалось бы, сегодня уже все знают, что чувствительные данные должны быть как минимум заигнорены в .gitignore
, но в паблике регулярно всплывают креды и другие ценные строчки в открытом виде. Причин масса: или репозиторий изначально был приватным, или вкоммитили тестовые данные, забыли и перенесли на продакшен — всякое бывает. Ощутить весь масштаб трагедии поможет интересная тулза — GitMiner.
GitMiner — это поисковик по открытым репозиториям на GitHub. Ты указываешь ему, что искать (логины, пароли), в каких файлах (название, расширение), что должно быть внутри (чтобы исключить фалсы по максимуму), а также правила для парсинга. И запускаешь поиск. В ответ тебе в удобном виде будут сыпаться запрошенные данные, а также URL, где это безобразие было обнаружено. Для работы понадобится авторизационная кука с Гитхаба, которую можешь взять в Chrome Dev Tools.
➜ git_miner.py -q 'filename:wp-config extension:php FTP_HOST in:file ' -m wordpress -c <твоя_кука> -o result.txt
В ответ тебе будут приходить вот такие веселые картинки. И разумеется, далеко не везде данные тестовые.
Кроме логинов и паролей, искать можно еще много чего. Загляни в config/parsers.json
. Там найдешь описание модулей — шаблонов для парсинга в GitMiner. Если хочешь парсить что-то иное, просто добавь еще один узел в JSON c нужными параметрами.
➜ cat config/parsers.json
{
"wordpress":{
"contains":"root",
"parameters":{
"param1":"'FTP_USER',",
"param2":"'FTP_PASS',",
"param3":"'FTP_HOST',",
"param4":"'DB_USER',",
"param5":"'DB_PASSWORD',"
},
"splitparam":"'",
"splitorder":{
"order1":"1",
"order2":"3"
}
},
"senhas":{
"contains":"senha",
"parameters":{
...
GitMiner отлично работает с третьим Питоном и минимумом зависимостей, а значит, запустится в обычном virtualenv. Но на случай, если запускать чужой код на хосте не хочется совсем, в репе ты найдешь еще и Dockerfile.
INFO
Если тулза будет падать с TypeError: write() argument must be str, not bytes, попробуй убрать из 78-й строки энкод в UTF-8 (.encode("utf-8")
): write()
тут ждет str.
Вспоминаем дефолтные пароли роутеров
- Разработчик: Viral Maniar
- Страница: GitHub
Дефолтные пароли на сетевых устройствах встречаются чаще, чем может показаться на первый взгляд. В интернете открытыми портами наружу торчат сотни роутеров не только частных пользователей, но и корпоративных сетей. Если, судя по фингерпринтам, ты набрел на такую железку, попробуй дефолтные пароли — вдруг подойдет? А сами заводские креды поможет найти Passhunt.
Passhunt — это простенький скрипт на Python, который позволяет быстро вывести дефолтные логины и пароли для наиболее популярных устройств: как преимущественно консьюмерских типа Zyxel, D-Link, так и промышленных — Cisco, Check Point и так далее. В базе тулзы 523 вендора, и она действительно может выручить, когда ты в очередной раз соберешься писать в Гугле mikrotik default login password
.
В доке к Passhunt указано, что она работает с Python 3.0+, однако в ее зависимости ssl-1.16
есть
➜ print 'looking for', f
что недвусмысленно говорит об обратном и валит pip при установке. Можно долго мучать Python 2.6 (а она работает именно с ним!) для работы модуля ssl, пока не поймешь, что разработчик… просто забыл удалить ssl
из requirements.txt
при переходе на третью ветку. Просто удали зависимость, сделай pip install -r requirements.txt
, и оно заработает.
А вообще, сам Passhunt написан в «лучших» традициях хактулз, так что проще юзать curl ;). В конце концов, Passhunt — это просто обертка, которая парсит https://cirt.net/
с помощью BeautifulSoup.
Сканируем уязвимые сервисы
Nmap — это дефолтная тулза для всех, кто хоть как-то относится к network security. Возможности культового сканера, разумеется, не ограничиваются простым сканированием портов.
WWW
Если хочешь разобраться подробнее в теме, обязательно прочти материалы по трюкам с nmap и по NSE-скриптингу.
А пока напомню, что Nmap зачастую помогает при сканировании отфингерпринтить версию используемого на хосте софта. А это, в свою очередь, поможет узнать, какие уязвимости потенциально могут обнаружиться на исследуемой машине.
Проект vulscan — это NSE-скрипт, который превратит твой Nmap в сканер уязвимостей. В комплекте со скриптом идет несколько баз уязвимостей. Установка проста — просто клонируй репу в /scripts
(для Nmap из macOS, например, это будет /usr/local/Cellar/nmap/7.60/share/nmap/scripts
) и запускай, передав в аргументе NSE-скрипт:
➜ nmap -sV --script=vulscan/vulscan.nse target.com
Пользуясь случаем, не могу не респектануть дружественному проекту Vulners, решающему схожую задачу: у парней есть плагин для Burp, а также расширение для Chrome, которое во время серфинга анализирует заголовки серверов, сверяет по своей базе и, если видит уязвимый софт, репортит тебе об этом. Удобно!
Выходим за пределы web root
- Разработчик: Julio C. Stefanutto
- Страница: GitHub
Несмотря на засилье модных веб-аппов и то, что Path Traversal нет в OWASP Top 10, в реальном мире эта уязвимость по-прежнему встречается. Неправильно сконфигурированные серверы, увы, не редкость, и «погулять» вне web root по-прежнему можно с завидной регулярностью. Утилита dotdotslash — твой верный помощник в дебрях неизвестных файловых систем.
Скрипт на Питоне принимает пару обязательных аргументов:
--url
— что ресерчить;--string
— параметр, через который будем выходить из рутовой директории.
Через параметр --depth
можно задавать глубину сканирования, чтобы ограничить скоуп.
В своей работе тулза опирается на небольшую базу обычных файлов для дирбастинга.
А ищет их с помощью ряда predefined-паттернов для брута, часть из которых тебе наверняка известна.
В общем, Python 3, зависимостей нет. Брат жив.
Дирбастим хосты на словарные директории
Раз уж речь зашла о Path Traversal, куда же без дирбастинга. Порою перебор наиболее популярных директорий в веб-приложении вскрывает множество тайников. И хотя оригинальный dirbuster от OWASP чуть менее чем мертв, у нас есть множество схожих по назначению утилит. Одна из них — CrawlBox.
➜ python crawlbox.py -u https://vk.com
$$$$$$\ $$\ $$$$$$$\
$$ __$$\ $$ | $$ __$$\
$$ / \__| $$$$$$\ $$$$$$\ $$\ $$\ $$\ $$ | $$ | $$ | $$$$$$\ $$\ $$\
$$ | $$ __$$\ \____$$\ $$ | $$ | $$ |$$ | $$$$$$$\ |$$ __$$\ \$$\ $$ |
$$ | $$ | \__|$$$$$$$ |$$ | $$ | $$ |$$ | $$ __$$\ $$ / $$ | \$$$$ /
$$ | $$\ $$ | $$ __$$ |$$ | $$ | $$ |$$ | $$ | $$ |$$ | $$ | $$ $$<
\$$$$$$ |$$ | \$$$$$$$ |\$$$$$\$$$$ |$$ | $$$$$$$ |\$$$$$$ |$$ /\$$\
\______/ \__| \_______| \_____\____/ \__| \_______/ \______/ \__/ \__|
[-] https://vk.com//!.gitignore - 408B : HTTP 404 : Not Found
[-] https://vk.com//!.htaccess - 408B : HTTP 404 : Not Found
[-] https://vk.com//!.htpasswd - 408B : HTTP 404 : Not Found
[-] https://vk.com//%20../ - 408B : HTTP 404 : Not Found
[-] https://vk.com//%2e%2e//google.com - 189B : HTTP 500 : Unknown response
[-] https://vk.com//.cc-ban.txt.bak - 165B : HTTP 403 : Needs authorization
[-] https://vk.com//.DS_Store - 165B : HTTP 403 : Needs authorization
...
CrawlBox — это простой, но функциональный дирбастер директорий, написанный на Python. Из полезностей могу выделить возможность спуфить юзер-агент и использовать сторонние базы для брута через параметр -w
.
Для работы CrawlBox требует Python 2. Права root, вопреки заверению автора, не потребуются — ты же не систему ставишь, в отличие от некоторых?
Ищем SAN в SSL-сертификатах
- Разработчик: Franccesco Orozco
- Страница: GitHub
Ты наверняка видел, что некоторые SSL-сертификаты позволяют защищать не одно, а несколько доменных имен. Именно несколько, а не все поддомены, как это происходит в случае с дорогущими wildcard-сертификатами. Разумеется, при пентесте приложений бывает полезно посмотреть не только основной хост, но и Subject Alternative Name (SAN) — алиасы, которые разрешены в SSL-сертификате. Узнать их можно и вручную, но зачем, когда у нас есть тулза GetAltName?
GetAltName просканит для тебя представленный URL и покажет добытые SAN в удобном формате. Из удачных фич есть возможность не только сканить по инпуту, но и предоставить скрипту XML-ный файл от Nmap’а. Ну и задать формат вывода.
В моем случае работает на Python 3.6, зависимости через pip, ничего особого не требуется.
Эксплуатируем тайпсквоттинг для социотехнического пентеста
- Разработчик: Andrew Horton
- Страница: MorningStar Security
Тайпсквоттинг — это очень крутая штука! Это когда вместо xakep.ru
ты написал cakep.ru
или xakkep.ru
. Другими словами, тайпсквоттинг эксплуатирует опечатки в написании доменных имен. Ошибки могут быть как механические (например, рядом стоящие клавиши на клавиатуре), так и орфографические (cisko.com
, mikrosoft.com
). Думаю, ты и без меня можешь придумать множество забавных трюков с тайпсквоченными доменами, где фишинг формы логина — самое безобидное.
Urlcrazy — ужжжасно полезная тулза для социотехнического пентеста! С ее помощью ты не только сгенерируешь множество фейковых доменных имен по предоставленному оригинальному домену, но и проверишь часть из них на занятость. Битфлип, тайпсквоттинг, ошибки произношения, записи по телефону, опечатки — все это генератор urlcrazy учитывает и выдает тебе целый список доменов, которые можно использовать в тестировании на проникновение. Каждая мутация снабжена отдельным пояснением, а также инфой о занятости доменного имени.
Для работы потребуется Ruby, в моем случае работает без ошибок на ruby 2.5.0p0
.
А на сегодня все. Ресерчи, пробуй и отписывайся в комментах о новых и удобных хактулзах!
Читайте ещё больше платных статей бесплатно: https://t.me/nopaywall