Ronin - большой набор инструментов для тестирования
Описание
ronin-rb - набор различных модулей, написанных на Ruby
, предназначенные для разработки, тестирования, поиска уязвимостей и не только. Функционал у данного инструментария очень широкий, перечислим небольшую его часть:
- Кодирование/декодирование строк.
- Работа с хексами.
- Netcat.
- Обработка файлов (grep, strings и т.п.).
- База данных для хранения информации.
- Работа с веб-запросами.
- Сканер уязвимостей и эксплоитов.
- Сканер портов.
- И многое другое...
Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.
Установка
Установить основные модули можно следующей командой:
curl -o ronin-install.sh https://raw.githubusercontent.com/ronin-rb/scripts/main/ronin-install.sh && bash ronin-install.sh
Также дополнительно можно установить модули nmap
и recon:
sudo gem install ronin-nmap --pre sudo gem install ronin-recon --pre
После этого должны появится следующие модули:
Обзор возможностей
Разберем основной функционал данного инструментария и начнем с разведки и сканирования портов.
Для разведки используется модуль ronin-recon
. Он поддерживает следующие функции:
$ ronin-recon workers dns/lookup dns/mailservers dns/nameservers dns/reverse_lookup dns/srv_enum dns/subdomain_enum dns/suffix_enum net/cert_enum net/cert_grab net/cert_sh net/ip_range_enum net/port_scan net/service_id web/dir_enum web/email_addresses web/spider
Если мы хотим запустить сразу все модули разведки, достаточно написать:
$ ronin-recon run ya.ru
Либо же мы можем запускать отдельные модули следующим образом:
$ ronin-recon run ya.ru -w dns/lookup >>> Found new IP address 77.88.44.242 for domain ya.ru >>> Found new IP address 5.255.255.242 for domain ya.ru >>> Found new IP address 77.88.55.242 for domain ya.ru
Для сканирования портов используется модуль ronin-nmap
:
$ ronin-nmap scan 192.168.0.109/30 --import >>> Running nmap 192.168.0.109/30 ... Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-10 17:11 MSK Initiating Ping Scan at 17:11 Scanning 4 hosts [2 ports/host] Completed Ping Scan at 17:11, 1.20s elapsed (4 total hosts) Initiating Parallel DNS resolution of 1 host. at 17:11 Completed Parallel DNS resolution of 1 host. at 17:11, 0.00s elapsed Nmap scan report for 192.168.0.108 [host down] Nmap scan report for 192.168.0.110 [host down] Nmap scan report for 192.168.0.111 [host down] Initiating Connect Scan at 17:11 Scanning rudnic (192.168.0.109) [1000 ports] Discovered open port 80/tcp on 192.168.0.109 Completed Connect Scan at 17:11, 0.01s elapsed (1000 total ports) Nmap scan report for rudnic (192.168.0.109) Host is up (0.000043s latency). Not shown: 999 closed tcp ports (conn-refused) PORT STATE SERVICE 80/tcp open http Read data files from: /usr/bin/../share/nmap Nmap done: 4 IP addresses (1 host up) scanned in 1.24 seconds >>> Importing scan XML ... >>> Imported IP: 192.168.0.109 >>> Imported host: rudnic >>> Imported port: 80/tcp >>> Imported service: http >>> Imported open port: 192.168.0.109 80/tcp (http)
ronin-nmap
использует обычный nmap
для скана, а с помощью флага --import
парсит полученный результат и заносит в базу данных, с которой можно взаимодействовать с помощью модуля ronin-db
.
Теперь из базы данных мы можем выгружать список адресов, а также фильтровать их по портам:
$ ronin-db ips --with-port 80 192.168.0.109
Также можно вручную заносить данные в базу с помощью флага --add
, а также использовать внешнюю БД для командной работы. Модуль поддерживает следующие типы данных:
certs creds emails hosts ips open-ports oses passwords people phone-numbers ports services software street-addresses urls web-vulns
С помощью модуля web
, можно собрать ссылки на странице:
$ ronin-web spider --site http://192.168.0.109/ -H 'Cookie: PHPSESSID=s34acv3t3qs3ubiamvtr2j79u1' http://192.168.0.109/ http://192.168.0.109/instructions.php http://192.168.0.109/setup.php http://192.168.0.109/vulnerabilities/brute/ http://192.168.0.109/vulnerabilities/exec/ http://192.168.0.109/vulnerabilities/csrf/ http://192.168.0.109/vulnerabilities/fi/?page=include.php http://192.168.0.109/vulnerabilities/upload/ http://192.168.0.109/vulnerabilities/captcha/ http://192.168.0.109/vulnerabilities/sqli/ http://192.168.0.109/vulnerabilities/sqli_blind/ http://192.168.0.109/vulnerabilities/weak_id/ http://192.168.0.109/vulnerabilities/xss_d/ http://192.168.0.109/vulnerabilities/xss_r/ http://192.168.0.109/vulnerabilities/xss_s/ http://192.168.0.109/vulnerabilities/csp/ http://192.168.0.109/vulnerabilities/javascript/ http://192.168.0.109/security.php http://192.168.0.109/phpinfo.php http://192.168.0.109/about.php http://192.168.0.109/logout.php http://192.168.0.109/dvwa/css/main.css http://192.168.0.109/favicon.ico http://192.168.0.109/dvwa/js/dvwaPage.js http://192.168.0.109/dvwa/js/add_event_listeners.js http://192.168.0.109/instructions.php?doc=readme http://192.168.0.109/instructions.php?doc=PDF http://192.168.0.109/instructions.php?doc=changelog http://192.168.0.109/instructions.php?doc=copying http://192.168.0.109/instructions.php?doc=PHPIDS-license http://192.168.0.109/vulnerabilities/fi/?page=file1.php http://192.168.0.109/vulnerabilities/fi/?page=file2.php http://192.168.0.109/vulnerabilities/fi/?page=file3.php http://192.168.0.109/security.php?phpids=on http://192.168.0.109/security.php?test=%22%3E%3Cscript%3Eeval(window.name)%3C/script%3E http://192.168.0.109/ids_log.php http://192.168.0.109/docs/DVWA_v1.3.pdf http://192.168.0.109/login.php http://192.168.0.109/dvwa/css/login.css
С помощью модуля web
к примеру можно провести проверку на простейшие уязвимости:
$ ronin-vulns lfi 'http://192.168.0.109/vulnerabilities/fi/?page=file1.php' -C 'PHPSESSID=s34acv3t3qs3ubiamvtr2j79u1' -C 'security=low' >>> Found LFI on http://192.168.0.109/vulnerabilities/fi/?page=file1.php via query param 'page'!
Также ronin
отлично подходит для разработки своих простых эксплоитов для проектов. Для этого используется модуль ronin-exploit
. Можно писать эксплоиты на Ruby
, добавлять их в БД, а затем запускать. Пример эксплоита можно посмотреть в репозитории разработчика.
Для того, чтобы использовать этот эксплоит, необходимо добавить репозиторий:
$ ronin-repos install https://github.com/ronin-rb/example-exploits.git
После этого у нас в списке должен появится новый эксплоит:
$ ronin-exploits list CVE-2023-27350
Мы можем посмотреть всю информацию об эксплоите:
$ ronin-exploits show CVE-2023-27350 [ CVE-2023-27350 ] Type: Custom Quality: poc Released: 2023-06-09 Disclosed: 2023-04-20 Software: PaperCut MF/NG Software Versions: 8.0.0 - 22.0.5 Payload Type: Command Summary: PaperCut NG/MF Authentication Bypass and Code/Command Execution Advisories: * CVE-2023-27350 (https://nvd.nist.gov/vuln/detail/CVE-2023-27350) Authors: * postmodern <[email protected]> Description: PaperCut MG and NF versions 8.0.0 - 22.0.5 are vulnerable to an authentication bypass that allows an attacker to execute arbitrary JavaScript via PaperCut's bundled RhinoJS engine, and then achieve command execution by calling `java.lang.Runtime.getRuntime().exec(...)`. References: * https://www.papercut.com/kb/Main/PO-1216-and-PO-1219 * https://www.horizon3.ai/papercut-cve-2023-27350-deep-dive-and-indicators-of-compromise/ * https://github.com/horizon3ai/CVE-2023-27350#readme Params: ┌────────────────┬────────┬──────────┬─────────┬───────────────────────────────────────┐ │ Name │ Type │ Required │ Default │ Description │ ├────────────────┼────────┼──────────┼─────────┼───────────────────────────────────────┤ │ base_url │ URI │ Yes │ │ The base URL of the target │ │ http_proxy │ String │ No │ │ The HTTP proxy to use │ │ http_user │ String │ No │ │ The HTTP Basic-Auth user │ │ http_password │ String │ No │ │ The HTTP Basic-Auth password │ │ user_agent │ Enum │ No │ │ The HTTP User-Agent to select │ │ raw_user_agent │ String │ No │ │ The raw HTTP User-Agent string to use │ │ http_cookie │ String │ No │ │ The raw HTTP Cookie to use │ └────────────────┴────────┴──────────┴─────────┴───────────────────────────────────────┘
Запускаются эксплоиты следующей командой:
$ ronin-exploits run <NAME> --payload <payload> --param name=value
Все доступные модули проекта ronin
можно найти на странице разработчика.
Заключение
Сегодня мы рассмотрели инструментарий ronin
с огромным количеством возможностей и функций, ознакомиться с которыми можно на странице GitHub разработчика. Мы уверены, что каждый сможет найти что-то полезное в этом наборе инструментов для пентеста или участия в CTF
-мероприятиях.