Добрый день, друзья!
Так что же такое 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
Как видим на скриншоте программа подскажет доступные опции выбранного модуля, в квадратных скобках написано значение по дефолту:
Итак, мы просканировали сеть и знаем, что на хосте 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
Но в нашем случае в этом необходимости нет.
Запускаем наш пример:
Мы видим, что перебор запустился, он выдает нам статусы авторизации на 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'
Теперь он будет висеть таким образом, пока не подберет валидную связку логин\пароль:
Если вы не знаете, что происходит с ним, беспокоитесь что он завис или просто хотите узнать сколько осталось ждать до полного прогона словарей нажимайте Enter и он покажет в каком статусе он сейчас:
Так же во время выполнения брута вы можете ввести h, нажать Enter и он покажет доступные параметры в интерактивном режиме.
Успех! В столбце candidate пароль, который подошел к юзернейму Ololena. В случае если вы брутите по словарю логинов валидные комбинации будут показаны так же, но разделенные двоеточием, например Ololena:1q2w3e
Надеюсь статья будет полезна не только новичкам. Если я где-то промахнулся, ошибся не стесняйтесь написать об этом.
Спасибо за внимание!
«не поленитесь заглянуть в код, автор его подробно откомментировал» Это не так, в коде практически нет комментариев — только несколько строк перед началом модулей. Но в коде есть файл README. Сам автор его называет так, а не комментарием: «…please read the README inside patator.py…» Из статьи непонятно, зачем нам переучиваться под новую программу если уже есть с полдюжины знакомых, которые делают ту же работу. Но причины обратить внимание на эту программу есть! Например, если ведётся перебор по нескольким хостам, то программа может слать запросы не так: отработка всех логинов-паролей по первому хосту, затем отработках всех логинов-паролей по второму хосту и т.д. Программа может работать в режиме один запрос на первый хост, следующий запрос с этими же учётными данными на второй, потом на третий и т.д. Т.е. параллельная работа сразу со всеми хостами, не нагружая каждый из них слишком сильно. Но это не дефолтное поведение, для этого нужно посмотреть справку по «номеру ключевых слов». Программа может принимать вывод из других программ, в программе можно налету редактировать параметры, можно поставить её на паузу, неплохой (хотя ещё незаконченный функционал) по брутфорсу HTTP (это слабое/трудное место других программ). Программа может перебирать «скрытые» каталоги на сайте, ломать ZIP-архивы и т.д. Программа действительно интересная! Но и довольно трудная — её нужно изучать. Самый полный перевод всей доступной документации здесь: http://kali.tools/?p=269