
Программа безопасности для восстановления паролей и пентестинга серверов, маршрутизаторов и IoT-устройств с использованием атак методом перебора паролей.
Программа безопасности для пен-тестирования серверов, маршрутизаторов и IoT-устройств
(кстати, мой биткоин-адрес: 3A7yuqBcPAcVEM59bNAVQdTCmkxRb5JRgE)
(Вот альтернатива, тоже для BTC, так как я получал сообщения, что некоторые биткоин-кошельки не поддерживают определённые адреса: 1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme)
Приветствую, товарищи, и добро пожаловать в UBERSCAN 1.0
UBERSCAN предназначен для помощи в пен-тестировании серверов и сетей, а также как инструмент для таких людей, как я, которые пытаются войти в бизнес этичного хакинга, чтобы просто разобраться, например, сколько устройств уязвимы, скажем, для вируса Mirai. Да, это своего рода вар-диаллер, и да, его можно использовать для взлома паролей серверов и IoT-устройств, и нет, его нельзя использовать в зловещих или неблаговидных целях (см. ЮРИДИЧЕСКОЕ УВЕДОМЛЕНИЕ).
Пример использования из командной строки:
uberscan -user:admin -passblank -scantype:telnet -random_ip -forktimes:20
или
uberscan -user:root -password:admin -scantype:ssh -random_ip -forktimes:20
или, возможно,
uberscan -userfile:wordlist.txt -passfile:wordlist.txt -scantype:telnet -random_ip -forktimes:15
Попробуйте комбинировать и настраивать эти различные параметры, пока не найдёте что-нибудь интересное для экспериментов! (ТОЛЬКО ШУЧУ, Я НЕ ХОЧУ ПОПАСТЬ В ТЮРЬМУ ААААААААРРРРРГГГГХХХХХХ!)
Эта программа (далее именуемая UBERSCAN или uberscan) распространяется под лицензией GPL 3. Все соответствующие права защищены. UBERSCAN ЗАЩИЩЁН АВТОРСКИМ ПРАВОМ (c) Batch McNulty 2017. Вы можете распространять, модифицировать и/или копировать UBERSCAN без разрешения, если соблюдаете условия лицензии GPL 3.
Эта утилита предназначена ТОЛЬКО ДЛЯ ЗАКОННОГО ИСПОЛЬЗОВАНИЯ. Я не несу ответственности за злонамеренное использование. У злонамеренных хакеров в любом случае есть свои собственные инструменты; UBERSCAN разработан для помощи в обеспечении безопасности компьютерных систем, а не для их разрушения. Если вы найдёте уязвимые серверы с помощью сканеров -random_ip и -random_ipblock, вам рекомендуется связаться с владельцами и сообщить им об уязвимости.
Будьте добры! Это приказ!
Пожалуйста, отправляйте все угрозы смертью, ордера на экстрадицию и сомнительные предложения о работе на [email protected]. Я постараюсь ответить, но ничего не гарантирую...
У программы есть несколько зависимостей, поэтому я прилагаю пакетный файл, который должен установить их автоматически. Просто откройте окно терминала в папке, где находится программа, и введите
sudo bash INSTALL.bash
..подождите (это может занять много времени), и вы сможете запустить UBERSCAN (попробуйте perl uberscan.pl, если совсем застряли).
Если программа установки не сработает, необходимые библиотеки:
WWW::Curl::Easy HTTP::Request Net::SSH::Expect Net::Telnet Net::FTP Net::POP3 IO::Socket::INET Scalar::Util Fcntl utf8 Encode
Scalar::Util, Fcntl, utf8 и Encode должны быть включены в ваш дистрибутив Perl, который идёт с Linux. Остальные, вероятно, нужно устанавливать отдельно... к сожалению, в случае Curl::Easy сама зависимость имеет свою зависимость, которую бывает трудно найти. Если файл INSTALL.bash не приводит к тому, что ваш компьютер запускает UBERSCAN, попробуйте выполнить одну или все из следующих команд, затем запустите файл установки снова:
sudo apt-get install libcurl4-doc
sudo apt-get install libcurl3-dbg
sudo apt-get install libgnutls-dev
sudo apt-get install libidn11-dev
sudo apt-get install libkrb5-dev
sudo apt-get install libldap2-dev
sudo apt-get install librtmp-dev
sudo apt-get install zlib1g-dev
Кроме того, файл INSTALL.bash требует cpan, который должен быть в Linux — если его нет, введите
sudo apt-get install cpan
в терминале перед запуском.
Ещё одна очень важная вещь:
Модуль Net::SSH::Expect требует внесения изменений в один из ваших системных файлов. Это:
/etc/ssh/ssh_config
Вам понадобятся права суперпользователя для его редактирования, поэтому откройте его в своём любимом редакторе и добавьте следующие строки:
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
(Строка "Host *" может уже существовать; если да, не добавляйте новую)
Если вы не можете этого сделать, uberscan будет работать — просто вы не сможете использовать опцию -scantype:ssh.
2.1 Введение
UBERSCAN был разработан на платформе Ubuntu Linux, поэтому я не могу гарантировать, что он будет работать на чём-то другом, хотя я достаточно уверен, что он будет работать на любом Linux-ПК. С Windows и Mac — не так уверен, но можете попробовать на свой страх и риск.
UBERSCAN может сканировать TCP/IP-сеть на предмет устройств со слабыми паролями (включая маршрутизаторы и IoT-устройства) и SMTP-серверов, уязвимых для спамеров. Его основная функция — брутфорс паролей на серверах, защищённых паролем (исключительно для этических целей, конечно!).
Он может сканировать следующие службы/уязвимости:
UBERSCAN запрограммирован с портами по умолчанию, но вы можете переопределить это с помощью опции -port:.
2.2 Замечание о режиме словаря:
Режим словаря (-passlist:textfile.txt и -userlist:textfile:txt) перебирает словари и пытается брутфорсить выбранные IP-адреса.
Режим словаря отличается для разных типов сканирования. Когда вы выбираете блок IP, диапазон IP или список IP, UBERSCAN проходит по целям, пробуя одинаковое имя пользователя/пароль на каждом IP, затем возвращается и пробует следующее имя пользователя и/или пароль из списка, пока не закончатся словари. Это довольно примитивная попытка обойти старую защиту «три попытки — и вы вылетаете»: если список достаточно длинный, к моменту повторного обхода того же IP у вас будет «свежая» попытка.
Режим случайной генерации IP (-random_ip) работает иначе. Поскольку IP выбираются случайным образом и поиск может продолжаться бесконечно, нет списка IP для обхода, поэтому весь словарь применяется к цели за один раз.
2.3 Сканер SSH:
Программирование сканера SSH доставило мне много хлопот. Я запрограммировал его на поиск приглашений «~», «>» и «#», а также сообщения «Welcome to», большого количества выводов типа «bad password» и создал третий вариант: если ничего не найдено, создаётся файл «SSH-MAYBES.txt». Он не должен создавать ложных срабатываний или пропусков, но если это произойдёт, пожалуйста, пришлите мне любые сгенерированные файлы (разумеется, отредактированные), чтобы я мог исправить проблему.
2.4 Пасхальные яйца:
В одном-двух статусных сообщениях и сообщениях об ошибках программы есть забавные культурные отсылки. Это придаёт UBERSCAN немного индивидуальности. Если это вызывает путаницу или кажется слишком глупым, я всегда рад получить отзывы.
2.5 Прощание и нудная просьба о пожертвованиях:
Признаюсь, UBERSCAN немного грубоват, но это не обязательно навсегда. Я прилагаю сюда биткоин-адрес, и если получу достаточно хороший отклик, я буду работать над улучшением его «грубости», и появятся UBERSCAN 1.1, 1.2, а может, даже UBERSCAN 2.0. Всё зависит от вас! Отправляйте свои деньги на биткоин-адрес:
1PEDKUiUTxGNJ3XTPfXCTAjpzVzX1VZAme
— Помните, если вы используете эту программу в рамках своей работы, вы действительно должны заплатить! (В качестве дополнительного стимула: если я получу достаточно денег и люди попросят, я, возможно, даже уберу назойливый экран!)
Хотя программа будет работать и без них, настоятельно рекомендуется давать UBERSCAN привилегии суперпользователя.
UBERSCAN — утилита командной строки, поэтому она ожидает, что ей будет передан хотя бы один параметр.
Все параметры:
ТИПЫ СКАНИРОВАНИЯ:
-scantype:xxx Задаёт тип сканирования. «xxx» может быть SSH, FTP, POP3, SMTP, HTTP, Telnet или Banner. См. -ftpanon и -smtpbug
-port:nn Задаёт порт, отличный от порта по умолчанию для данной службы. («-scantype:banner» ищет на порту 1433, порту SQL).
-ftpanon Поиск анонимных FTP-серверов. Используется вместо -scantype и -user -pass
-smtpbug Проверка на ошибку SMTP. Используется вместо опций -scantype и -user -pass
-spamcheck Работает только при сканировании «-scantype:smtp». Каждый раз при подключении к серверу проверяется, уязвим ли он для злоупотребления спамерами. По умолчанию выключено.
-novrfy При выполнении SMTP-сканирования запрещает UBERSCAN выдавать команды VRFY. Подразумевает -spamcheck.
СКАНИРОВАНИЕ ИМЁН ПОЛЬЗОВАТЕЛЕЙ И ПАРОЛЕЙ:
-user:xxx -pass:xxx Задаёт имя пользователя/пароль для попытки. Если вы «бороздите» интернет в поисках случайных серверов с опцией -random_ip, то это и -userblank / -passblank — единственные опции для имени/пароля, которые принимает UBERSCAN. Обычно вы используете оба, но они взаимозаменяемы с опциями -userfile и -passfile (словарь), где это разрешено, а также с -userblank и -passblank. Обратите внимание: они ничего не делают, если -scantype установлен в SMTP или заданы опции -ftpanon или -smtpbug.
-userblank -passblank -userblank настраивает попытку с пустым именем пользователя, -passblank — с пустым паролем. Это может пригодиться для некоторых HTTP-челленджей, где одно или оба этих поля по умолчанию оставлены пустыми.
-userfile:wordlist.txt -passfile:wordlist.txt Пробует каждое имя и пароль из указанного словаря. Я могу гарантировать их работу только с обычными словами, разделёнными пробелами — использование словарей, содержащих акценты, символы нелатинских алфавитов и символы, — на ваш страх и риск (хотя символ «@» должен работать нормально).
ЛОГИРОВАНИЕ, ПОВТОРНЫЕ ПОПЫТКИ, ТАЙМАУТЫ, СКАНИРОВАНИЕ ПОРТОВ И ПАУЗА:
-debug Записывает в лог неудачные попытки входа, а также все, кроме самых распространённых ошибок. Ошибки, регистрируемые в режиме отладки, — это внезапные разрывы соединения с серверами, а также неудачные попытки входа; это также может использоваться для диагностики неожиданных ответов. Также сохраняет веб-страницы, полученные в режиме -scantype:html
-logall Как -debug, но также записывает очень распространённые ошибки, которые в противном случае заглушили бы более интересные (они помечены как «Banal error»). Подразумевает -debug (то есть не нужно вводить опцию «-debug», если используется «-logall»).
-csv ВСЕ выходные файлы, за исключением веб-страниц, сохранённых в режиме сканирования html, сохраняются в формате CSV. Сохраняемые данные (в порядке сохранения): ID процесса, тип сканирования, IP-адрес, номер порта, имя пользователя, пароль и «minutesup» — количество минут работы UBERSCAN.
-whois Выполняет запрос WHOIS на сервере при обнаружении пароля и записывает результат в текстовый файл (whoisreport.txt). По умолчанию выключено.
-max_retries:nn По умолчанию равно 5. Если вы один из тех бедных параноиков, работающих через свои прокси и плохие Wi-Fi-соединения, смело поднимайте до 15 или 20 — я так и делал! Нормальный человек, возможно, захочет уменьшить это значение; с другой стороны, если вы действительно хотите убедиться, что пробуете каждый пароль на каждом IP, можно установить абсурдно высокое значение, например -max_retries:999 (хотя я этого не рекомендую!).
-timeout:nn где nn — число. Задаёт переменную таймаута в секундах. По умолчанию 60. Если вы за прокси, вам понадобится довольно высокое значение, в сотнях (я писал эту программу за прокси). Если вы часто используете SSH-сканирование, вам может понадобиться более низкое значение из-за того, как работает SSH::Expect — он не возвращает данные, пока не истечёт таймаут. Если вы используете его только в своей локальной сети и никогда не подключаетесь к интернету, можно ещё ниже. Лично я бы не ставил ниже 60 секунд.
-portscan_timeout: Опять же, это количество секунд. По умолчанию установлено низкое значение, но иногда, если вы хотите быть абсолютно уверены, возможно, захочется поднять его до 5 или даже 10. Ваш выбор.
-noportscan Отключает сканирование портов. Эта функция полезна, если вы работаете через proxychains или аналогичную программу проксирования или если вы уверены, что у вас есть действительный IP-адрес/порт для взлома, и не хотите рисковать, случайно пропустив его. Особенно при плохом соединении.
-pause Приостанавливает работу UBERSCAN после обработки входных данных, чтобы вы могли проверить правильность настройки. По умолчанию выключено.
МНОГОЗАДАЧНОСТЬ:
-forktimes:nn Использует параллельную обработку для одновременного установления нескольких соединений — обратите внимание, что опция -forktimes работает только при установленной опции -random_ip или -random_ipblock. Я лично выбираю значение от 5 до 15, хотя результат может варьироваться в зависимости от доступной пропускной способности. Известны случаи сбоев в этом режиме; в качестве альтернативы вы можете просто создать пакетный файл с множеством команд, скопированных и вставленных в него, например:
perl uberscan.pl -user:admin -pass:password -random_ip -scantype:telnet &
и затем запустить его с помощью bash.
ОПЦИИ IP:
По умолчанию UBERSCAN ищет IP-адреса в файле с именем ipnumbers.txt. Если это неудобно, есть множество параметров командной строки, позволяющих выбирать IP из вашего собственного файла, случайным образом или (грубо) генерировать их из диапазонов или блоков IP. Вы даже можете выбрать отдельный IP-адрес и сканировать его — очень хорошо для интенсивных словарных атак!
-ipfile:filename.txt Получить IP-адреса из файла filename.txt. Это может быть любой файл. Программа ищет в указанном файле всё, что соответствует IP-адресу, помещает это в список и затем сканирует. Это означает, что она может анализировать свой собственный вывод, поэтому вы можете запустить сканирование -random_ip с опциями -debug или -logall, переименовать полученный файл errors.txt и подать его на вход новому сканированию без всей этой нудной правки.
-ipblock:nnn.nnn.0.0/16 -ipblock:nnn.nnn.nnn.0/24 -ipblock:192.168.0/16 — Искать всё от 192.168.0.0 до 192.168.255.255 -ipblock:192.168.1/24 — Искать всё от 192.168.1.0 до 192.168.1.255 Сканировать выбранный блок IP (/16 или /24) вместо использования ipnumbers.txt. Не очень умно — считает только с нуля, поэтому если вы введёте 192.168.1.0/16, он всё равно будет искать от 192.168.0.0 до 192.168.255.255. Не волнуйтесь, всегда есть -iprange!
-iprange:nnn.nnn.nnn.nnn - nnn.nnn.nnn.nnn -iprange:192.168.0.0 - 192.168.0.3 -iprange:192.168.5.0 - 192.168.7.2 Сканирует указанный диапазон IP-номеров. Он может обработать только последние два октета.
-ipsingle:nnn.nnn.nnn.nnn -ipsingle:192.168.0.1 Сканирует один IP — очень мощно в сочетании с опциями -userfile: и -passfile:!
-random_ip Зацикливает процедуру, создающую случайные IP-номера, чтобы вы могли бороздить дикий интернет в поисках «горячих» возможностей. НЕ ИСПОЛЬЗУЙТЕ ЭТО ДЛЯ НЕБЛАГОВИДНЫХ ЦЕЛЕЙ!
-random_ipblock:nnn -random_ipblock:nnn.nnn Как -random_ip, но ищет только в указанном блоке IP. Обратите внимание, что конечные нули и слеш-нотация НЕ ИСПОЛЬЗУЮТСЯ В ЭТОЙ ОПЦИИ! (в отличие от опции -ipblock) Пример:
perl uberscan.pl -scantype:banner -random_ipblock:192.168 perl uberscan.pl -scantype:banner -random_ipblock:192
ЮРИДИЧЕСКОЕ / СТАНДАРТНОЕ:
Захватывающий мир юридических формулировок теперь доступен вам — просто вызовите UBERSCAN с опцией -gpl, чтобы увидеть лицензию, под которой распространяется программа. Серьёзно, всем, кто задумывается о редактировании и/или распространении этой программы, следует её прочитать — вам разрешено это делать, но вы обязаны продолжать указывать моё имя и указывать, что я написал оригинальную программу.