Добрый день, друзья!

Так что же такое patator? Это универсальная брутфорс утилита, имеющая на борту приличное количество модулей и возможность довольно гибкой настройки, в общем все что нужно чтобы упростить жизнь рядовому пентестеру. Patator представляет собой, как водится, питон скрипт, управление производится из cli.

Доступные модули на данный момент:

* ftp_login     : Brute-force FTP
* ssh_login     : Brute-force SSH
* telnet_login  : Brute-force Telnet
* smtp_login    : Brute-force SMTP
* smtp_vrfy     : Enumerate valid users using the SMTP VRFY command
* smtp_rcpt     : Enumerate valid users using the SMTP RCPT TO command
* finger_lookup : Enumerate valid users using Finger
* http_fuzz     : Brute-force HTTP/HTTPS
* pop_login     : Brute-force POP
* pop_passd     : Brute-force poppassd (not POP3)
* imap_login    : Brute-force IMAP
* ldap_login    : Brute-force LDAP
* smb_login     : Brute-force SMB
* smb_lookupsid : Brute-force SMB SID-lookup
* rlogin_login  : Brute-force rlogin
* vmauthd_login : Brute-force VMware Authentication Daemon
* mssql_login   : Brute-force MSSQL
* oracle_login  : Brute-force Oracle
* mysql_login   : Brute-force MySQL
* mysql_query   : Brute-force MySQL queries
* pgsql_login   : Brute-force PostgreSQL
* vnc_login     : Brute-force VNC
* dns_forward   : Brute-force DNS
* dns_reverse   : Brute-force DNS (reverse lookup subnets)
* ike_enum      : Enumerate IKE transforms
* snmp_login    : Brute-force SNMPv1/2 and SNMPv3
* unzip_pass    : Brute-force the password of encrypted ZIP files
* keystore_pass : Brute-force the password of Java keystore files
* umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes

Patator включён в Kali Linux 2.0 из коробки, в версиях ниже устанавливаем с Github (утилита часто обновляется, поэтому искать актуальную версию нужно именно тут):

git clone https://github.com/lanjelot/patator.git /usr/share/patator

Примечание: встроенные подсказки утилиты мало юзабельны, не поленитесь заглянуть в код, автор его подробно откомментировал и вероятно ответ на возникший вопрос вы сможете найти именно там. На худой конец прочитайте README.

Рассмотрим использование на примере модуля smtp_login. Данный модуль предназначен для брутфорса обыкновенной аутентификации почтового протокола SMTP:

Вызываем модуль:

patator smtp_login

Как видим на скриншоте программа подскажет доступные опции выбранного модуля, в квадратных скобках написано значение по дефолту:

patator1

Итак, мы просканировали сеть и знаем, что на хосте 192.168.17.128 открыт smtp порт (25), попробовали подключиться к нему телнетом и убедились, что все ок.

Начинаем брутить.

В данном случае я знаю логин пользователя, который мне необходим, это будет пользователь Ololena. Используя подсказку по использованию на скриншоте выше, получаем:

patator smtp_login host=192.168.17.129 user=Ololena password=FILE0 0=/usr/share/john/password.lst

Синтаксис своеобразен, но довольно прост. Если вы хотите указать список паролей, как в примере выше вы используете конструкцию password=FILE0 0=<путь до словаря>, так же для user. Например если мы хотим брутить список юзернеймов и по каждому юзеру прогонялся список паролей, то конструкция будет выглядеть, например, так:

patator smtp_login host=192.168.17.129 user=FILE1 password=FILE0 0=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst

Вообще каждый параметр модуля может быть заменен списком, например параметр host так же можно подтягивать из файлика, как и любой другой параметр модуля (но не глобальный параметр, о которых речь пойдет ниже).

Так же если SMTP-серверу нужно представиться командой helo\ehlo, в модуле присутствует такая возможность. Команда будет выглядеть например так:

patator smtp_login host=192.168.17.129 helo='ehlo 192.168.17.128' user=FILE1 password=FILE0 0=/usr/share/john/password.lst 1=/usr/share/john/usernames.lst

Но в нашем случае в этом необходимости нет.

Запускаем наш пример:

patator2_1

Мы видим, что перебор запустился, он выдает нам статусы авторизации на smtp сервере, но проблема в том, что найти в этом списке успешную попытку авторизации будет крайне сложно.

В patator существует как параметры конкретного модуля (которые мы видели на скриношоте, когда вызывали модуль), так и глобальные, например конструкция -x ignore.

Данная конструкция может фильтровать по размеру ответа (-x ignore:size=57-74),  по статус кода ответа(-x ignore:code=200), по совпадению строки и регулярному выражению(-x ignore:fgrep=’some text or regexp’) и по их комбинациям, например -x ignore:code=500 -x ignore:fgrep=’Internal error’ или ignore:code=200,size=57-74.

Она-то и  уберет из выдачи, то что нам не нужно.  В нашем примере лучше всего будет сделать таким образом:

patator smtp_login host=192.168.17.129 user=Ololena password=FILE0 0=/usr/share/john/password.lst -x ignore:fgrep='incorrect password or account name'

Теперь он будет висеть таким образом, пока не подберет валидную связку логин\пароль:

patator3

Если вы не знаете, что происходит с ним, беспокоитесь что он завис или просто хотите узнать сколько осталось ждать до полного прогона словарей нажимайте Enter и он покажет в каком статусе он сейчас:

patator5

Так же во время выполнения брута вы можете ввести h, нажать Enter  и он покажет доступные параметры в интерактивном режиме.

Успех! В столбце candidate пароль, который подошел к юзернейму Ololena. В случае если вы брутите по словарю логинов валидные комбинации будут показаны так же, но разделенные двоеточием, например Ololena:1q2w3e

patator4

Надеюсь статья будет полезна не только новичкам.  Если я где-то промахнулся, ошибся не стесняйтесь написать об этом.

Спасибо за внимание!