Medusa
Описание Medusa
Medusa — это быстрый, параллельный и модульный брут-форсер входа. Цель заключается в поддержке такого количество служб, на которых возможна удалённая аутентификация. Ключевыми особенностями этого приложения являются:
- Параллельное тестирование, основанное на потоках. Атака грубой силой может быть выполнена одновременно в отношении нескольких хостов, пользователей или паролей.
- Гибкий пользовательский ввод. Целевая информация (хост/пользователь/пароль) могут быть указаны разнообразными способами. Например, любой пункт может быть как единичной записью, так и файлом, содержащим множество записей. Кроме того, комбинированный формат файла позволяет пользователю уточнить их целевой список.
- Модульный дизайн. Модуль каждой службы размещён в независимом файле .mod. Это означает, что не требуется изменение ядра приложения для расширения списка поддерживаемых служб для брут-форсинга.
- Поддержка множества протоколов. В настоящее время поддерживаются многие службы (например, среди прочих это SMB, HTTP, POP3, MS-SQL, SSHv2).
Домашняя страница: https://github.com/jmk-foofus/medusa
Автор: Joe Mondloch
Лицензия: GPLv2
Справка по Medusa
Использование:
Medusa [-h хост|-H файл] [-u имя_пользователя|-U файл] [-p пароль|-P файл] [-C файл] -M модуль [OPT]
-h [ТЕКСТ] : Имя хоста или IP адрес цели -H [ФАЙЛ] : Файл, содержащий целевые имена хостов или IP адреса -u [ТЕКСТ] : Имя пользователя для тестирования -U [ФАЙЛ] : Файл, содержащий имена пользователей для тестирования -p [ТЕКСТ] : Пароль для тестирования -P [ФАЙЛ] : Файл, содержащий пароль для тестирования -C [ФАЙЛ] : Файл, содержащий комбинированные записи. Подробности смотрите ниже. -O [ФАЙЛ] : Файл, в который добавляются записи журнала (логи) -e [n/s/ns] : Дополнительные проверки паролей ([n] Без пароля, [s] Пароль = Имя Пользователя) -M [ТЕКСТ] : Имя модуля для выполнения (без расширения .mod) -m [ТЕКСТ] : Параметры для передачи модулю. Эту опцию можно использовать несколько раз каждый раз с разными параметрами и они будут отправлены модулю (пример, -m Param1 -m Param2 и т.д..) -d : Вывести все известные модули -n [ЧИСЛО] : Использовать для TCP портов не по умолчанию -s : Включить SSL -g [ЧИСЛО] : Сдаться после попытки подключиться ЧИСЛО секунд (о умолчанию 3) -r [ЧИСЛО] : Засыпать на ЧИСЛО секунд между повтором попыток (по умолчанию 3) -R [ЧИСЛО] : Пытаться ЧИСЛО раз перед прекращением. Общее число попыток будет ЧИСЛО + 1. -c [ЧИСЛО] : Время ожидания в микросекундах верификации доступности сокета (по умолчанию 500 микросекунд). -t [ЧИСЛО] : Общее число логинов для одновременного тестирования -T [ЧИСЛО] : Общее число хостов для одновременного тестирования -L : Распараллеливание входов используя одно имя пользователя на поток. По умолчанию обрабатывать всё имя пользователя перед переходом к следующему. -f : Остановить сканирования хоста после первого найденного действительного имени пользователя/пароля. -F : Остановить аудит после первого найденного действительного имени пользователя/пароля на любом хосте. -b : Не выводить начальный баннер -q : Показать информацию об использовании модуля -v [ЧИСЛО] : Уровень вербальности [0 - 6 (больше)] -w [ЧИСЛО] : Уровень отладки ошибок [0 - 10 (больше)] -V : Показать версию -Z [ТЕКСТ] : Возобновить сканирование, основанное на карте возобновления предыдущего сканирования
Руководство по Medusa
-h [ЦЕЛЬ]
Имя хоста или IP адрес сети.
-H [ФАЙЛ]
Считывает заданные цели из файла, а не из командной строки. Файл должен содержать список, разделённый новыми строками.
-u [ЦЕЛЬ]
Целевое имя пользователя
-U [ФАЙЛ]
Считывать целевые имена пользователя из указанного файла, а не из командной строки. Файл должен содержать список, разделённый новыми строками.
-p [ЦЕЛЬ]
Целевой пароли.
-P [ФАЙЛ]
Считывать целевые пароли из указанного файла, а не из командной строки. Файл должен содержать список, разделённый новыми строками.
-C [ФАЙЛ]
Файл, содержащий комбинированные записи. Комбинированные файлы разделены двоеточиями и имеют следующий формат: хост:пользователь:пароль. Если какое из этих полей оставлено пустым, соответствующая информация должна быть указана как единичное глобальное значение или как список в файле.
В комбо файле возможные следующие комбинации: 1.) foo:bar:fud 2.) foo:bar: 3.) foo:: 4.) :bar:fud 5.) :bar: 6.) ::fud 7.) foo::fud
Medusa может также поддерживать файлы PwDump в качестве комбо файлов. Формат этих файлов должен быть user:id:lm:ntlm:::. Мы ищем ':::' в конце первой строки для определения, содержит ли файл вывод PwDump.
-O [ФАЙЛ]
Файл к которому добавляет информация журнала. Medusa будет вести журнал всех валидных учётных данных аккаунтов или которые вызвали неизвестную ошибку. Также будет записано время запуска и остановки аудита вместе с параметрами вызова.
-e [n/s/ns]
Дополнительные проверки пароля ([n] Без пароля, [s] Пароль = Имя_Пользователя). Если используются обе опции, то они должны быть указаны вместе ("-e ns"). Если вызывается только одна опция, используйте или "-e n" или "-e s".
-M [ТЕКСТ]
Имя модуля для выполнения (без расширения .mod).
m [ТЕКСТ]
Параметр, передаваемый модулю. Можно использовать несколько раз, каждый раз с другим параметром, и они все будут отправлены модулю (например, -m Param1 -m Param2 и т.д.)
-d
Показать список всех модулей.
-n [ЧИСЛО]
Использовать номер TCP порта, отличный от используемого службой по умолчанию.
-s
Включить SSL.
-g [ЧИСЛО]
Сдаться после попыток подключения в течение ЧИСЛО секунд (по умолчанию 3).
-r [ЧИСЛО]
Засыпать на ЧИСЛО секунд между повтором попыток (по умолчанию 3).
-R [ЧИСЛО]
Пытаться ЧИСЛО раз перед признанием неудачи. Общее число попыток будет ЧИСЛО + 1.
-c [ЧИСЛО]
Установить количество микросекунд, ожидаемое во время теста по установлению сетевого сокета. Некоторые службы (например, FTP, IMAP, POP3 и SMTP) могут быть настроены на закрытие подключений после произвольного числа неудачных попыток входа. Мы пробуем повторно использовать установленное соединение для отправки попыток аутентификации пока не случится отключение, в этом случае подключение устанавливается повторно. Для завершения этого перед аутентификацией внутри выбранных модулей, мы проверяем, жив ли ещё сокет. По умолчанию выполняется 1 микросекундная проверка. Может потребоваться намного большее значение. Например, 1000 микросекунд понадобилось при тестировании сервера vsftp чтобы не возникало проблем с встроенным механизмом анти-брутфорса.
-t [ЧИСЛО]
Общее число логинов для одновременного тестирования. Следует отметить, что приблизительно t x T потоков может быть одновременно запущено.
-T [ЧИСЛО]
Общее количество хостов для одновременного тестирования.
-L
Параллельные логины с одним именем пользователя на поток. По умолчанию полностью обрабатывается имя пользователя перед продолжением.
-f
Остановить сканирования хоста после первого найденного действительного имени_пользователя/пароля.
-F
Остановить аудит после первого найденного действительного имени_пользователя/пароля на любом хосте.
-b
Подавить банер при запуске.
-q
Показать информацию по использованию модуля. Это следует использовать вместе с опцией "-M". Например, "medusa -M smbnt -q".
-v [ЧИСЛО]
Уровень вербальности [0 - 6 (больше)]. Все сообщения на этом или ниже этого уровня будут отображены. По умолчанию уровень равен 5.
Следующие сообщения показываются на уровнях вербальности: 0) ВЫХОД ИЗ ПРИЛОЖЕНИЯ 1) СООБЩЕНИЯ БЕЗ ТЭГА 2) СООБЩЕНИЯ ЖУРНАЛА БЕЗ ТЭГА 3) ВАЖНЫЕ СООБЩЕНИЯ 4) АККАУНТ НАЙДЕН 5) ПРОВЕРКА АККАУНТА 6) ОБЩИЕ СООБЩЕНИЯ
-w [ЧИСЛО]
Уровень отладки ошибок [0 - 10 (больше)]. Будут отображаться все сообщения на указанном уровне или уровнях ниже. Значение по умолчанию — 5.
Следующие сообщения показываются на уровнях ошибок: 0) ФАТАЛЬНЫЕ 1) ТРЕВОГА 2) КРИТИЧНЫЕ 3) ОШИБКИ 4) ПРЕДУПРЕЖДЕНИЯ 5) УВЕДОМЛЕНИЯ 6) ИНФОРМАЦИЯ 7) ОТЛАДКА 8) ОТЛАДКА — АУДИТ 9) ОТЛАДКА — СЕРВЕР 10) ОТЛАДКА — МОДУЛЬ
-V
Показать версию
-Z [ТЕКСТ]
Позволяет базовое восстановление предыдущего сканирования. Передаваемый параметр описывает, какие хосты были завершены, какие были частично протестированы, а какие не были начаты. Когда Medusa получает SIG‐INT, она рассчитывает и отображает (карту возобновления». Эта карта затем может быть указана при следующем запуске. Например, "medusa [OPTIONS PREVIOUSLY USED] -Z h6u1u2h8." В этом конкретном примере хосты 1-5 были завершены, хост 6 был частично выполнен (пользователь 1 был частично завершён и пользователь 2 и далее не начинались), хост 7 был завершён и хост 8 и далее не начинались. Medusa разберёт эту карту и пропустит хосты и соответствующих пользователей. Если пользователь был начат, но не был закончен, он быдут протестирован с начала соответствующего списка паролей.
Информация о модулях Medusa и их опциях
Доступные для брут-форса модули:
- afp.mod : Модуль брут-форса для AFP сессий
- cvs.mod : Модуль брут-форса для CVS сессий
- ftp.mod : Модуль брут-форса для FTP/FTPS сессий
- http.mod : Модуль брут-форса для HTTP
- imap.mod : Модуль брут-форса для IMAP сессий
- mssql.mod : Модуль брут-форса для MSSQL сессий
- mysql.mod : Модуль брут-форса для MySQL сессий
- nntp.mod : Модуль брут-форса для NNTP сессий
- pcanywhere.mod : Модуль брут-форса для PcAnywhere сессий
- pop3.mod : Модуль брут-форса для POP3 сессий
- postgres.mod : Модуль брут-форса для PostgreSQL сессий
- rdp.mod : Модуль брут-форса для RDP (Microsoft Terminal Server) сессий
- rexec.mod : Модуль брут-форса для REXEC сессий
- rlogin.mod : Модуль брут-форса для RLOGIN сессий
- rsh.mod : Модуль брут-форса для RSH сессий
- smbnt.mod : Модуль брут-форса для SMB (LM/NTLM/LMv2/NTLMv2) сессий
- smtp-vrfy.mod : Brute force module for verifying SMTP аккаунтов (VRFY/EXPN/RCPT TO)
- smtp.mod : Модуль брут-форса для SMTP аутентификации с TLS
- snmp.mod : Модуль брут-форса для общих строк (Community Strings) SNMP
- ssh.mod : Модуль брут-форса для SSH v2 сессий
- svn.mod : Модуль брут-форса для Subversion сессий
- telnet.mod : Модуль брут-форса для telnet сессий
- vmauthd.mod : Модуль брут-форса для демона аутентификации VMware
- vnc.mod : Модуль брут-форса для VNC сессий
- web-form.mod : Модуль брут-форса для веб-форм
- wrapper.mod : Модуль универсальной обёртки
cvs
Доступные опции модуля:
- DIR:?
Устанавливает имя целевой директории. Если не указана, то по умолчанию это "/root"
Пример использования: "-M cvs -m DIR:/some_project"
ftp
Доступные опции модуля:
- MODE:? (NORMAL*, EXPLICIT, IMPLICIT)
EXPLICIT: Режим AUTH TLS как определено в RFC 4217
Явный FTPS (FTP/SSL) подключается к FTP службе с незашифрованными учётными данными. Тем не менее, перед отправкой каких-либо учётных данных выдаётся команда "AUTH TLS" и согласовывается SSL сессия.
IMPLICIT: FTP через SSL (990/tcp)
Неявный FTPS требует выполнение SSL рукопожатия перед отправкой каких-либо FTP команд. Эта служба, как правило, обитает на порту tcp/990. Если пользователь указывает эту опцию или использует опцию "-n" (SSL), то по умолчанию модуль будет в этом режиме и использовать порт tcp/990.
NORMAL
Поведение по умолчанию, если MODE не указан. Попытка аутентификации осуществляется без шифрования. Если сервер запрашивает шифрование для данного пользователя, используется явный FTPS.
Пример использования:
medusa -M ftp -h host -u username -p password medusa -M ftp -s -h host -u username -p password medusa -M ftp -m MODE:EXPLICIT -h host -u username -p password
(*) Значение по умолчанию
http
Доступные опции модуля:
- USER-AGENT:? (User-Agent (пользовательский агент). По умолчанию: Mozilla/1.22 (compatible; MSIE 10.0; Windows 3.1))
- DIR:? (Целевая директория. По умолчанию "/")
- AUTH:? (Тип аутентификации (BASIC/DIGEST/NTLM). По умолчанию: автоматически)
- DOMAIN:? [опционально]
- CUSTOM-HEADER:? Дополнительный HTTP заголовок. Можно указать больше заголовков, используя эту опцию несколько раз.
Пример использования: "-M http -m USER-AGENT:"g3rg3 gerg" -m DIR:exchange/"
Пример использования: "-M http -m CUSTOM-HEADER:"Cookie: SMCHALLENGE=YES"
Примечание: Поведением по умолчанию NTLM аутентификации является использование предоставляемого сервером доменного имени. Для направления на локальные аккаунты, а не домены, используйте опцию DOMAIN для указания на локальную систему: "-m DOMAIN:127.0.0.1".
imap
Доступные опции модуля:
- TAG:? (По умолчанию: gerg)
- AUTH:? (Тип аутентификации (LOGIN/PLAIN/NTLM). По умолчанию: автоматически)
- DOMAIN:? [опционально]
Пример использования: "-M imap -m TAG:A0001 -m AUTH:PLAIN
Опция DOMAIN должна должным образом предоставлять указанный домен, независимо от типа аутентификации. Домен также можно указать через поля имя_пользователя, но формат меняется типом аутентификации.
Пример 1: NTLM аутентификация с опцией DOMAIN
medusa -M imap -m AUTH:NTLM -m DOMAIN:FOODOM -h host -u foo -p bar
Пример 2: NTLM аутентификация с доменом через имя_пользователя
medusa -M imap -m AUTH:NTLM -h host -u foo@domain -p bar
* Если при использовании NTLM аутентификации домен не указан, то будет использоваться домен, предоставленный сервером.
Пример 3: Аутентификация LOGIN с доменом через имя_пользователя
medusa -M imap -m AUTH:LOGIN -h host -u 'domain\\foo' -p bar
mssql
ПРИМЕЧАНИЕ: MS-SQL Developer Edition или MSDE's concurrent workload governor ограничивают вас не более чем пяти одновременными подключениями к серверу в любой один момент времени.
mysql
Доступные опции модуля:
- PASS:? (PASSWORD*, HASH)
- PASSWORD: Использовать нормальный пароль.
- HASH: Использовать хеши а не пароли. (только не-SHA1 хеши)
(*) Значение по умолчанию
Примеры использования:
1: Обычная скучная проверка…
medusa -M mysql -h somehost -u someuser -p somepassword
2: Использование MySQL хешей в старом стиле …
medusa -M mysql -h somehost -U users.txt -p 39b52a209cf03d62 -m PASS:HASH
nntp
Пример использования: "-M nntp -U accounts.txt -p password"
pcanywhere
ПРИМЕЧАНИЕ: PcAnywhere позволяет только одно подключение за раз. Запуск нескольких потоков на одну цель может работать неправильно.
Доступные опции модуля:
- DOMAIN:?
Опция позволяет ручные настройки проверяемого домена, когда хост использует NT аутентификацию.
Пример использования: "-M pcanywhere -m DOMAIN:FOODOM"
pop3
Доступные опции модуля:
- MODE:? (NORMAL, AS400) [опционально]
Устанавливает режим для выявления ошибок.
- AUTH:? (Тип аутентификации (USER/PLAIN/LOGIN/NTLM). По умолчанию: автоматически)
Модуль опросит службу, какие методы она принимает через "AUTH" запрос.
Поддерживаются методы аутентификации USER (простой текст), SASL PLAIN, SASL LOGIN и SASL NTLM.
- DOMAIN:? [опционально]
AUTH USER — Добавляет домен к имени пользователя (например, user@domain.com).
AUTH NTLM — Обеспечивает указанный домен во время NTLM аутентификации. Поведение по умолчанию — использовать предоставленное сервером значение домена.
Пример использования:
medusa -M pop3 -m MODE:AS400 -U accounts.txt -p password medusa -M pop3 -m DOMAIN:foo.com -U accounts.txt -p password
postgres
Доступные опции модуля:
- DB:?
Устанавливает имя целевой базы данных.
Пример использования: "-M postgres -m DB:some_db"
rdp
Доступные опции модуля:
- DOMAIN:? [опционально]
Пример использования: "-M rdp"
*** Судя по всему, имеются проблемы с безопасностью потоков в библиотеке FreeRDP и/или этом модуле. ***
*** Рекомендуется избегать использование действующих одновременно хостов/пользователей (т.е. -T/-t).
rsh
Rsh — это служба, где нужно иметь доступ .rhosts/hosts.equiv с хоста источника. Пароли не имеют значения. Поэтому лучшим способом использовать этот модуль является единичный простой пароль и список пользователей, которые могут быть разрешены в .rhosts/hosts.equiv с вашего ресурса.
smbnt
Доступные опции модуля:
- GROUP:? (DOMAIN, LOCAL*, BOTH)
Опция устанавливает поле NetBIOS workgroup.
DOMAIN: Проверять учётные данные на первичном хосте этого домена, контролируемого через этот хост.
LOCAL: Проверить локальный аккаунт.
BOTH: Проверять оба. Это оставляет настройку поля workgroup пустой и затем пытается проверить учётные данные на хосте. Если аккаунт не существует локально на тестируемом хосте, тогда эти хосты запрашивают их доменный контроллер.
- GROUP_OTHER:?
Опция позволяет вручную настроить домен для проверки. Используйте вместо GROUP.
- PASS:? (PASSWORD*, HASH, MACHINE)
PASSWORD: Использовать нормальный пароль.
HASH: Использовать NTLM хеш а не пароль.
MACHINE: Использовать NetBIOS имя машины как пароль.
- AUTH:? (LM, NTLM, LMv2*, NTLMv2)
Опция устанавливает уровень аутентификации LAN Manager.
LM:
NTLM:
LMv2:
NTLMv2:
NETBIOS
Принудительный режим NetBIOS (отключает родной режим Win2000). Win2000 режим присутствует по умолчанию.
По умолчанию модуль тестирует TCP/445 с использованием родного Win2000. Если происходит неудача, модуль откатится до TCP/139 используя NetBIOS режим. Для тестирования только TCP/139, используйте следующее: medusa -M smbnt -m NETBIOS -n 139
(*) Значение по умолчанию
Примеры использования:
1: Нормальная скучная проверка…
medusa -M smbnt -h somehost -u someuser -p somepassword
2: Тестирование учётных данных домена на клиентской системе…
medusa -M smbnt -h somehost -U users.txt -p password -m GROUP:DOMAIN
3: Тестирование каждых учётных данных из файла PwDump в отношении целевого домена через цель…
medusa -M smbnt -h somehost -C pwdump.txt -m PASS:HASH -m GROUP:DOMAIN
4: Тестирование каждого хеша из файла PwDump в отношении указанного локального пользователя на целе…
medusa -M smbnt -H hosts.txt -C pwdump.txt -u someuser -m PASS:HASH
5: Тестирование индивидуального NTLM хеша…
medusa -M smbnt -H hosts.txt -u administrator -p 92D887C8010492C2944E2DF489A880E4:7A2EDE4F51BC5A03984C6BA2C239CF63::: -m PASS:HASH
Уровень доступа:
Этот модуль выполняет и запросы аутентификации SMB (Session Setup AndX), и запросы общего подключения (Tree Connect AndX). Запросы общего подключения для дефолтных скрытых административных шар ADMIN$. Цель идентифицировать, имеют ли тестируемые учётные данные административные права на целевой системе. Посмотрите на следующие примеры.
Valid administrative-level credentials: [SUCCESS (ADMIN$ - Access Allowed)] Valid user-level credentials: [SUCCESS (ADMIN$ - Access Denied)] Valid credentials, access level unknown: [SUCCESS (ADMIN$ - Share Unavailable)]
smtp-vrfy
Доступные опции модуля:
- HELO [optional]
Использовать команду HELO. По умолчанию: EHLO
- HELODOMAIN:? [опционально]
Указать домен HELO/EHLO. По умолчанию: server.domain
- MAILFROM:? [опционально]
Указывает адрес MAIL FROM. По умолчанию: doesnotexist@foofus.net
- VERB:? (Verb/Команда: VRFY/EXPN/RCPT TO. По умолчанию: RCPT TO
*** ПРИМЕЧАНИЕ: Адрес целевого домена должен быть определён внутри парольного поля. ***
Пример использования:
medusa -M smtp-vrfy -m VERB:VRFY -U accounts.txt -p domain.com
smtp
Доступные опции модуля:
- EHLO:? [опционально]
Указывает EHLO приветствие.
- AUTH:? (Тип аутентификации (PLAIN/LOGIN/NTLM). По умолчанию: автоматический)
Модуль сделает запрос на сервис о принимаемых методах через запрос "AUTH".
Поддерживаются метода аутентификации PLAIN, LOGIN и NTLM.
- DOMAIN:? [опционально]
Опция DOMAIN должна надлежащим образом определять домен, независимо от типа аутентификации. Домен может быть предоставлен через поля имя_пользователя, но формат представления будет различаться в зависимости от типа аутентификации.
Пример использования:
medusa -M smtp -m AUTH:NTLM -U accounts.txt -p password medusa -M smtp -m EHLO:world -U accounts.txt -p password
snmp
Доступные опции модуля:
- TIMEOUT:?
Устанавливает количество секунд для ожидания UDP ответов (по умолчанию: 5 секунд).
- SEND_DELAY:?
Устанавливает количество микросекунд для ожидания между отправкой запросов (по умолчанию: 200 микросекунд).
- VERSION:? (1*, 2C)
Устанавливает версию SNMP клиента.
- ACCESS:? (READ*, WRITE)
Устанавливает уровень доступа для тестирования с общей строкой (community string).
(*) Значение по умолчанию
Следует отметить, что при тестировании возможности записи (WRITE), этот модуль будет считывать текущее значение sysLocation и затем записывать это же значение назад в систему.
Поскольку SNMP — это основанный на UDP протокол, нет никакого подтверждения связи между передающим и принимающим объектам транспортного уровня. Из-за этой коммуникации без установления связи, мы знаем о существовании SNMP службы только в то время, когда мы отправляем верную общую строку (community string), и сервер отправляет ответ. Все другие результаты запросов не отправляют ответы. После завершения этого, мы ждём TIMEOUT секунд для любых запросов. Если мы получили в обратку какой-либо ответ, мы исследуем его, чтобы увидеть, какая общая строка оказалась успешным значением. Эта техника должна позволить быстрый брут-форсинг. Тем не менее, следует позаботиться о значениях TIMEOUT и SEND_DELAY чтобы избежать проблем с целевой службой или пропуском данных ответа.
Пример использования: "-M snmp -m TIMEOUT:2 -m ACCESS:WRITE"
ssh
Доступные опции модуля:
- BANNER:? (Клиентский банер Libssh. По умолчанию SSH-2.0-MEDUSA.)
Пример использования: "-M ssh -m BANNER:SSH-2.0-FOOBAR"
svn
Доступные опции модуля:
- BRANCH:?
Устанавливает URL ветви для аутентификации. Например, svn://host/branch.
Пример использования: "-M svn -m BRANCH:test_project"
telnet
Доступные опции модуля:
- MODE:? (NORMAL, AS400) [опциональный]
Устанавливает режим для обнаружения ошибок.
Пример использования: "-M telnet -m MODE:AS400 -U accounts.txt -p password"
vmauthd
Демон VMware Authentication прослушивает TCP порт 902 и может требовать (а может и нет) зашифрованное по SSL подключение. Этот модуль подключается к службе, не используя SSL, и если потребуется, автоматически переключится на SSL.
vnc
Доступные опции модуля:
- MAXSLEEP:?
Устанавливает максимально разрешённое время сна, когда сталкивается с задержкой VNC RealVNC направленной против брут-форса. Это значение в секундах, и если оно не установлено, то по умолчанию равно 60.
- DOMAIN:?
Устанавливает значение домена при проверке подлинности в отношении функции UltraVNC's MS-Logon.
Некоторые версии VNC имеют встроенную функциональность против атаки грубой силой. RealVNC, например, позволяет 5 неудачных попыток, а затем включает 10 секундную задержку. Для каждой последовательности попыток, эта задержка удваивается. Судя по всему, UltraVNC позволяет 6 неверных попыток, а затем включает 10 секундную задержку между каждой попыткой. Этот модуль пытается идентифицировать эти ситуации и реагировать соответствующим образом, используя sleep(). Пользователь может установить предел сна параметром MAXSLEEP при брут-форсе RealVNC. При достижении этого значения, модуль завершит работу.
Следует отметить, что в настоящее время модуль поддерживает безпарольные и только-парольные VNC серверы. Дополнительно, он поддерживает функцию UltraVNC's MS-Logon, которая может использоваться для обеспечения сквозной проверки подлинности в отношении локального домена и домена аккаунтов Windows. В случае базовых только-парольных VNC, обеспечивает произвольные значения имени пользователя.
Пример использования: "-M vnc -m MAXSLEEP:120 -m DOMAIN:FOOFUSDOM"
web-form
Доступные опции модуля:
- USER-AGENT:? Значение пользовательского агента (User-agent). По умолчанию: "I'm not Mozilla, I'm Ming Mong".
- FORM:? Целевая форма для запроса. По умолчанию: "/"
- DENY-SIGNAL:? Сообщение неудачной аутентификации. Попытка помечается как успешная, если этот текст отсутствует в ответе сервера. По умолчанию: "Login incorrect"
- CUSTOM-HEADER:? Пользовательский HTTP заголовок.
Можно указать больше заголовков, используя эту опцию несколько раз.
- FORM-DATA:<METHOD>?<FIELDS>
Методы и поля для отправки веб-службе. Валидными методами являются GET и POST. Действительные данные, которые отправляет форма, также должны быть определены здесь. Особенно поля имя_пользователя и пароль. Поле имя_пользователя должно быть первым, за ним следует поле пароля. По умолчанию: "post?username=&password="
Пример использования: "-M web-form -m USER-AGENT:"g3rg3 gerg" -m FORM:"webmail/index.php" -m DENY-SIGNAL:"deny!" -m FORM-DATA:"post?user=&pass=&submit=True" -m CUSTOM-HEADER:"Cookie: name=value"
wrapper
Цель модуля wrapper (обёртка) позволить пользователям выполнять произвольные скрипты и задействовать преимущества Medusa по управлению хостами/пользователями/паролями. Образцы скриптов включены в директорию wrapper: https://github.com/jmk-foofus/medusa/tree/master/src/modsrc/wrapper
Начальная цель этого модуля была протестировать RDP сервера используя rdesktop.
Следующий пример показывает один из способов использования rdesktop с модулем wrapper:
medusa -M wrapper -m TYPE:STDIN -m PROG:rdesktop -m ARGS:"-u %U -p - %H" -H hosts.txt -U users.txt -P passwords.txt
Один из возможных методов спрятать графический вывод от rdesktop:
% Xvfb :97 -ac -nolisten tcp & % export DISPLAY=:97
Доступные опции модуля:
- TYPE:? (SINGLE, STDIN)
Опция устанавливает тип скрипта, который будет вызван модулем, образцы скриптов: https://github.com/jmk-foofus/medusa/tree/master/src/modsrc/wrapper
SINGLE: Скрипт ожидает, что весь пользовательский ввод поступает с исходной командной строки.
STDIN: Информация о хосте и пользователе передаётся в скрипт через командную строку, пароли для тестирования передаются скрипту через стандартный ввод (STDIN).
- PROG:?
Опция для настройки пути до исполнимого файла.
- ARGS:?
Опция для настройки исполнимых параметров. Могут использоваться следующие подстановки:
%H: Заменяется целевым IP адресом. %U: Заменяется именем пользователя для тестирования. %P: Заменяется паролем для тестирования.
Пример использования: '-M wrapper -m TYPE:SINGLE -m PROG:./foo.pl -m ARGS:"-h %H -u %U -p %P"'
Пример использования: '-M wrapper -m TYPE:STDIN -m PROG:./bar.pl -m ARGS:"--host %H --user %U"'
Примеры запуска Medusa
Следующая команда инструктирует Medusa протестировать все пароли, имеющиеся в passwords.txt в отношении одного пользователя (administrator) на хосте 192.168.0.20 через службу SMB. Опции "-e ns" инструктируют Medusa дополнительно проверять, имеет ли административный аккаунт пустой пароль или является ли пароль равным имени пользователя (administrator).
medusa -h 192.168.0.20 -u administrator -P passwords.txt -e ns -M smbnt Medusa v1.0-rc1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: (1/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: administrator (2/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: password (3/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass1 (4/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass2 (5/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass3 (6/7) ACCOUNT CHECK: [smbnt] Host: 192.168.0.20 (1/1) User: administrator (1/1) Password: pass4 (7/7)
Ниже командная строка демонстрирует, как выполнить несколько параллельных операций в Medusa. Здесь по меньшей мере 20 хостов и 10 пользователей тестируются одновременна. Опция "-L" инструктирует Medusa распараллелить пользователей. Это означает, что каждый из 10 потоков нацеленных на хост проверяет уникального пользователя.
medusa -H hosts.txt -U users.txt -P passwords.txt -T 20 -t 10 -L -F -M smbnt
Medusa позволяет использовать комбо файлы в которых данные структурированы в виде хост/имя_пользователя/пароль. Комбо файл можно указать используя опцию "-C". Файл должен содержать одну запись на строку и иметь разделённые двоеточием значения в формате хост:пользователь:пароль. Если какое-либо из этих полей является пустым, соответствующая информация должна быть предоставлена в глобальном значении или как список в файле. Medusa выполнить начальную проверку параметров, основываясь на содержимом первой строки файла.
Следующие комбинации возможны в комбо файле:
- host:username:password
- host:username:
- host::
- :username:password
- :username:
- ::password
- host::password
Следующие пример проверит каждую запись в combo.txt
medusa -M smbnt -C combo.txt
Файл combo.txt:
192.168.0.20:administrator:password 192.168.0.20:testuser:pass 192.168.0.30:administrator:blah 192.168.0.40:user1:foopass
Следующий пример проверит каждую запись в файле combo.txt в отношении списка целей из hosts.txt
medusa -M smbnt -C combo.txt -H hosts.txt
Файл combo.txt:
:administrator:password :testuser:pass :administrator:blah :user1:foopass
Medusa также поддерживает использование файлов PwDump как комбо файлов. Формат этих файлов должен быть user:id:lm:ntlm:::. Мы ищем ':::' в конце первой строки для определения, содержит ли этот файл вывод PwDump.
Возобновление сканирования Medusa. Medusa имеет возможность возобновить сканирвоание, которое было прервано сигналом SIGINT (т.е. CTRL-C). Например:
Тестирование прерывания с SIGINT ../medusa -M ssh -H host.txt -U users.txt -p password Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: administrator (2 of 4, 1 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: jmk (3 of 4, 2 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.1 (1 of 11, 0 complete) User: bar (4 of 4, 3 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: administrator (2 of 4, 1 complete) Password: password (1 of 1 complete) ALERT: Medusa received SIGINT - Sending notification to login threads that we are are aborting. ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 1 complete) User: jmk (3 of 4, 2 complete) Password: password (1 of 1 complete) ALERT: To resume scan, add the following to your original command: "-Z h2u3u4h3." Возобновлено прерванное сканирование ../medusa -M ssh -H host.txt -U users.txt -p password -Z h2u3u4h3. Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 0 complete) User: jmk (3 of 4, 0 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.11 (2 of 11, 0 complete) User: bar (4 of 4, 1 complete) Password: password (1 of 1 complete) ACCOUNT CHECK: [ssh] Host: 192.168.0.15 (3 of 11, 1 complete) User: foo (1 of 4, 0 complete) Password: password (1 of 1 complete)
Далее краткое описание карты возобновления:
h2u3u4h3. +--------- Первый хост, который не был завершён на 100% +------- Первый пользователь для хоста, который не был завершён на 100% +----- Первый пользователь для хоста, который не был начат +--- Первый хост, который не был начат +- Знак окончания карты
Установка Medusa
Программа предустановлена в Kali Linux.
Установка в BlackArch
Программа предустановлена в BlackArch.
Установка в Linux (Debian, Ubuntu, Linux Mint):
sudo apt-get remove medusa sudo apt-get install automake autoconf m4 perl git clone https://github.com/jmk-foofus/medusa cd medusa/ autoreconf -f -i ./configure make sudo make install /usr/local/bin/medusa --help
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты Medusa
Это утилита командной строки.
Comments are Closed