You are here: Home » Атаки на пароли » Medusa

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

Это утилита командной строки.

Инструкции по Medusa

Близкие программы:

Рекомендуемые статьи: