• XSS.stack #1 – первый литературный журнал от юзеров форума

брутфорс xss.pro RFB Bruter: очередной брутер или добываем VNC-доступы без затрат

Alex_Ionescu

RAID-массив
Пользователь
Регистрация
12.04.2022
Сообщения
72
Реакции
201
splash.png

процесс загрузки системы

Введение
xss.pro RFB Bruter – это система распределенного перебора паролей для VNC прямо из дома через связку TOR+VPN на ферме виртуальных машин с поддержкой бэкапов, нотификации на смартфон через приложение «pushed» и масок фильтрации. В качестве источника адресов используется обработанный лог masscan (хотя можно добавлять адреса и порты «руками»), а в качестве VPN используется приложение «SoftEther VPN» и их замечательный сервис бесплатных VPN — «VPN Gate», который поможет нам не платить за VPN. Помимо этого прекрасного сервиса «SoftEther VPN» имеет ряд других важных особенностей — работа через socks (TOR), а также поддержку ICMP (ping). Подробнее об этом ниже.

Как и любая другая распределенная система, xss.pro RFB Bruter состоит из «менеджера» и «рабочих процессов». «Рабочие процессы», в свою очередь, делятся на «чекеры» и «воркеры»: первые проверяют списки ip:port на баннер VNC (а также удаляют ненужные и пропускают недоступные), вторые же — перебирают пароли, а заправляет всем этим делом «менеджер». «Рабочие процессы» и «менеджер» общаются между собой через отдельный intranet-адаптер, прямой доступ во внешний мир имеет только «менеджер» (для отправки оповещений), остальные видят мир только через связку TOR+VPN.

Обращаю внимание, что это система именно для «домашнего» использования: трафик между менеджером и рабочими процессами никак не шифруется.

Изначально система работала без VPN, напрямую через TOR (Whonix Gateway), но это накладывало ряд ограничений: Whonix «перегревался» от количества соединений и требовал регулярных ребутов, а помимо этого — часто отваливалось соединение с хостом, на котором идет перебор (TOR старается менять адреса в цепочках, через это конечный узел не всегда доступен). С VPN все работает гораздо стабильнее и быстрее: время, требуемое на пересортировку списка адресов для брута увеличилось в десятки раз, т.е. за один проход перебирается большее количество комбинаций. Кроме того, TOR не дает возможности проверить доступность сети, в отличие от VPN, который прекрасно работает с ICMP пакетами.

Системные требования
Не смотря на то, что все сильно зависит от размеров фермы, общие правила просты: как можно больше ОЗУ и SSD-накопитель (лучше NVMe, если есть такая возможность). На моем стареньком тестовом стенде с Core i7-4790 и 32 Гб ОЗУ хостится 50 VM: Менеджер (1024 Мб), TOR (512 Мб), Воркеры (24x512 Мб) и Чекеры (24x512 Мб). Загрузка выглядит вот так:

server_load.png


Подготовка VM
Для начала переносим папку «shared» в любое удобное место на SSD. Сам я использую VirtualBox, так что далее речь пойдет про него. В качестве ОС была выбрана Windows 7 Compact Edition, каких-либо проблем с ней не наблюдается. Устанавливаем ОС, дополнения VirtualBox и добавляем постоянную общую папку с полным доступом указав путь до ,«shared» в моем случае монтируется она на букву Z. Переходим в настройки дисплея и на вкладке «Удаленный доступ» ставим галочку «Включить сервер». Далее клонируем образ (имя лучше выбрать вида «VM01») и приступаем к настройке «рабочих процессов».

Нам понадобится один сетевой адаптер для внутренней сети с именем, скажем, «xss-brute». В настройках «Удаленного доступа» указываем порт 1001 и запускаем ОС. Устанавливаем на нее «SoftEther VPN», меняем IP на, скажем, 172.16.0.1 а имя компьютера на «VM01». В автозагрузку добавляем ярлык (именно ярлык, чтобы изменим один файл меняли параметры всех VM) на файл z:\utils\init\vpn.cmd. Также в автозагрузку необходимо добавить ярлык z:\utils\xss.checker.lnk или z:\utils\xss.worker.lnk в зависимости от типа машины. Выключаем ОС и делаем снимок системы, именуем его «Snapshot 1» и делаем клон под названием «VM02». Меняем в настройках «Удаленного доступа» порт на 1002, запускаем ОС и меняем адрес на 172.16.0.2, а имя ПК — на «VM02». Повторяем процесс необходимое количество раз, не забывая в конце снять снимок и назвать его «Snapshot 1». Обращаю внимание, что сам я использую разные VM для разных типов «рабочих процессов». Сделано это по простой причине — распределение нагрузки сети. Для «воркеров» я использую VPN, установленные на взломанных ранее ПК, для «чекеров» же — бесплатные VPN с «VPN Gate». Как показала практика, при использовании одновременно обоих типов «рабочих процессов» либо быстро обнаруживают аномальную нагрузку сети удаляют VPN, либо нужно снижать количество подключений. Если у вас купленный дедик или только бесплатные VPN — вы можете смело использовать одну VM для обеих задач, поигравшись предварительно с настройками.

Далее настоим TOR. Клонируем самую первую нашу VM, именуем ее «TOR». В настройках «Удаленного доступа» указываем порт 1111, а в настройках Сети нам понадобится два адаптера: первый — NAT, второй же — наша внутренняя сеть «xss-brute». Запускаем ОС, меняем имя ПК на «TOR», а адрес второго адаптера на 172.16.0.111. Копируем папку z:\utils\tor в корень диска C и кидаем в автозагрузку и, на всякий случай, на рабочий стол ярлык файла c:\tor\tor.cmd. Выключаем, делаем снимок «Snapshot 1».

Снова возвращаемся к первой ОС, теперь ее можно не клонировать. В настройках «Удаленного доступа» указываем порт 2222. Если нужны нотификации «pushed» - также указываем два адаптера, как у «TOR»; если не нужны — оставляем только внутреннюю сеть «xss-brute». После запуска копируем на рабочий стол ярлык z:\utils\xss.mgr.lnk, а в ностройках сетевого адаптера внутренней сети указываем адрес 172.16.0.222.

Кладем куда-нибудь недалеко, скажем, на рабочий стол ярлык для shared\utils\vbox_restart.bat.

Теперь, когда все VM готовы к работе, самое время настроить mRemoteNG. Добавляем коннекты для каждой VM, указывая в качестве IP — адрес ПК где установлен VirtualBox, а в качестве порта — порт из параметров «Удаленного доступа» и RDP в качестве протокола.
mremoteng.png

Когда все готово можно приступить к настройке системы.

Настройка системы
Большинство настроек производятся в конфиг-файлах в формате JSON, многие настройки можно изменить лишь там, т.е. не меняются «на лету».

Manager
В разделе «server» нас интересуют 3 параметра:
server: interface — на каком интерфейсе слушать порты. Лучше указать интерфейс внутренней сети (в нашем случае - 172.16.0.0), но также можно указать 0.0.0.0, чтобы порты смотрели и во внешний мир.
server: worker: port – на каком порту будут ожидаться «воркеры»
server: checker: port – на каком порту будут ожидаться «чекеры»
массив items заполнится сам.

Раздел «notify» нужен лишь при использовании приложения «pushed». Параметры notify: pushed: app_key, notify: pushed: app_secret и notify: pushed: app_alias нужно взять из аккаунта pushed.io, параметр notify: pushed: interval указывает как часто (в секундах) можно отправлять уведомления.
Параметр notify: found указывает уведомлять ли о новых подобранных паролях. Т.е. по сути включает/отключает нотификацию.

pushed.jpg

пример нотификаций

В разделе «db» указываются полные пути к базам worker.db и checker.db, а также задают параметры
db: clear_flags_on_exit – очищать флаги ошибок при выходе. За этот флаг отвечает пункт меню «Clear unsupported RFB flags on unload» из «DB Maintance». Нередко бывают случаи, что сегодня стоит аутентификация RealVNC, а завтра что-то поменяли и появился поддерживаемый тип аутентификации. Если не очищать флаги - «плохие» VNC при следующем запуске просто не будут читаться из базы, так что пункт меню «Rescan unsupported RFBs» их не учитывает.
db: rebuild_checkers_on_exit – перемешать и сжать таблицу с адресами на проверку при выходе. За этот флаг отвечает пункт меню «Rebuild Checkers on unload» из «DB Maintance». Сам я предпочитаю делать ребилд и сжатие в ручном режиме данным скриптом
SQL:
BEGIN TRANSACTION;
DROP TABLE IF EXISTS new_list;
CREATE TABLE new_list(id INTEGER NOT NULL UNIQUE,ip TEXT NOT NULL,port INTEGER NOT NULL,UNIQUE(ip,port),PRIMARY KEY(id AUTOINCREMENT));
INSERT INTO new_list(ip,port) SELECT ip,port FROM list ORDER BY RANDOM();
DROP TABLE list;
ALTER TABLE new_list RENAME TO list;
COMMIT;
VACUUM;
т.к. база у меня довольно большая (больше 4х Гб) и ребилд занимает немало времени. Кроме того, повторные проходы тоже дают свои плоды — находятся как VNC, так и не-VNC записи, т.е. база подчищается.

Раздел «checker» содержит параметры для работы «чекеров».
checker: path – путь к папке, куда скидываются файлы обработанного лога masscan
checker: max_items — размер кэша записей «чекера». Оптимально указывать из расчета количество_чекеров*количество_соединений*2, можно больше. Нарпример у меня это 24*400, но указано 20000, вместо 19200.
checker: read_from_last_id – читать ли базу с начала или с позации checker: last_id. Задается пунктом меню «Start checking from last ID». У меня отключено, т.к. повторный проход по старым записям через время дает неплохой результат.

Раздел «backup» отвечает за резервное копирование
backup: path — куда копировать.
backup: compress — число от 0 до 9, где 0 — вообще без сжатия, 9 — максимальное. Ввиду особенностей базы данных ставить выше 5 смысла не вижу: скорость упадет сильно, а прироста в сжатии практически не будет.
backup: copies — количество копий. По достижению максимума удалит старейший архив.
backup: scheduler: interval — интервал в секундах, как часто копироваться.
backup: scheduler: on_load — копировать при загрузке. Задается пунктом меню «Backup on load».
backup: scheduler: on_unload — копировать при выгрузке. Задается пунктом меню «Backup on unload».

Раздел «logging» понятен итак — какие сообщения выводить в логе. Задаются в меню «Logging».

Пункт «settings» задает путь до файла параметров окна — расположения окон, выбранные вкладки, элементы.

Пункт «hello_stat» отвечает за прием статистике «рабочих процессов» при запуске: скажем, перезапускаете вы manager и вместо 0 найденных будет статистика от «работяг».

Worker и Checker имеют практически идентичные конфиги. Разберем сначала общие параметры:
manager – адрес менеджера, номера портов должны совпадать с конфигом manager.
tasks — количество соединений, подбирается индивидуально.
threads_per_core — количество потоков на процессор. И «чекер» и «воркер» работают на IOCP, так что указывать 1000 потоков не стоит. Оптимальным является цифра 2.
timeout — время на обработку подключения.
settings — параметры положения и размеров окна.
connection_check: enabled — отвечает за включение/отключение проверки наличия связи. Если проверка включена и интернета нет — задачи обрабываться не будут.
connection_check: timeout — время ожидания отклика.
connection_check: address — адрес, к которому будем пытаться подключиться для проверки связи.
connection_check: reconnect: enabled — включает/отключает переподключение в случае обрыва связи.
connection_check: reconnect: connection — имя сетевого адаптера VPN.
connection_check: reconnect: timeout — время ожидания отклика.
Внимательный читатель немедленно спросит - «а причем тут вообще ICMP, если ты проверяешь связь через попытку подключиться, а не отправляя пинги?» и я ему тут же отвечу. Дело в том, что когда TOR уже отвалился, а VPN еще нет — пинг выдает ошибки типа «заданная сеть недоступна» и «общий сбой». При этом функция connect() может висеть очень долго, а таски при этом отрабатывают мгновенно — сети ведь и правда нет. Поэтому поток PingThread() висит и ждет, пока функция IcmpSendEcho2() не вернет ERROR_NETWORK_UNREACHABLE или IP_GENERAL_FAILURE — как только это случится работа приостанавливается. Если включен режим connection_check: reconnect: enabled — не дожидаясь таймаутов переподключает VPN, если нет — просто ждет, пока все переподключится само, приостановив работу.
Параметр «list» для «воркера» задает полный путь до базы данных с паролями. Изначально это был просто текстовик, но sqlite работает с большими объемами данных весьма эффективно и не жрет память, храня все в ней.
Параметр «retry_count» для «чекера» задает количество попыток переподключиться.

VPN
В качестве примера используется публичный VPN от «VPN Gate», в случае использования своего VPN – просто создайте соединение в программе и экспортируйте соединение, заменив им нужный файл. Итак, идем на сайт vpngate.net (заблокирован в РФ) и ищем свежий адрес. Сам я использую адреса из подсети 219.100.37.* — их много и они надежны. Можно выбирать по рейтингу, но мне больше нравится по ширине канала. Итак, адрес выбран — открываем файл, скажем, shared\utils\init\01_05.vpn, и меняем значение параметра «string Hostname» на свой адрес.
vpngate.png

Забыл упомянуть. В указанном выше конфиге уже прописан адрес TOR-прокси, на это тоже стоит обратить внимание. Если будете заменять на свой не-паблик VPN - можно заменить только адрес, логин и пароль оставив файл в качестве шаблона.

TOR
Здесь все совсем просто. В моей стране TOR блокируется, поэтому ему необходимы мосты. Также необходима возможность их быстро и беспроблемно менять (это еще одна причина, почему отошел от Whonix Gateway). Итак, идем в shared\utils\init\bridges.txt и вписываем актуальные мосты. Совершенно не важно как вы их получите — telegram, email, сайт torproject или tor_relay_scanner, главное указать тип моста. Если мосты вам не нужны — просто укажите UseBridges 0 или вовсе удалите строчку с импортом данного файла из torcc.

Приступаем к работе
Итак, когда все настроено — предлагаю начать. Запускаем файл vbox_restart.bat, открываем в mRemoteNG соединение с «tor» и ждем пока он прогрузится и на 100% подключится к сети. Время от времени автозагрузка не срабатывает (скорее всего не может прочесть файл bridges.txt и нужно запустить тор руками — именно для этого в скрипте задержка). Когда TOR запущен — жмем в скрипте enter и ждем, пока загрузятся остальные ОС. Подключаемся к «manager» и запускаем его. Работа с программами элементарна и (надеюсь) интуитивно понятна. Про «воркер» и «чекер» рассказывать особо нечего, выглядят они примерно так и практически никаких настроек у них нет.
worker.png

checker.png

Единственное, что здесь можно настроить — режим «поверх всех окон» (включается в системном меню) и положение окна (вплоть до свернутого в трей).

С «менеджером» дело обстоят поинтереснее.
Перемещаться по вкладкам можно как с помощью мыши так и хот-кеями: ctrl+tab – следующая вкладка, ctrl+1-4 – перейти на вкладку от 1 до 4.
page_workers.PNG

При нажатии правой кнопкой мыши на корневом элементе контекстное меню с возможностью отобразить/скрыть оффлайн и остановить/запустить «работяг».
context_menu1.PNG

Нажатие ctrl+a также включает или отключает режим «Отображать все».

page_worker.PNG

Для очистки результатов можно выбрать запись и нажать del. Или же можно нажать del без выделения и тогда удалятся все записи.
context_menu2.PNG

page_checkers.PNG

page_checker.PNG

И «Воркерам» и «Чекерам» можно задавать имена, достаточно просто нажать второй раз по уже выбранному элементу и ввести имя (в моем случае – имя VM).
page_results.PNG

В данной вкладке работают те же правила, что и на вкладке «Workers» – удалять можно клавишей del.
results_panel.PNG

Пройдемся по панели инструментов вкладки «Results». Первая кнопка отвечает за добавление свежего адреса в список на брут (если такого адреса еще нет, конечно). Если адрес уже сбручен, но нас спалили и поменяли пароль — нам предложат начать с того места, где был найден первый пароль. Зачем это надо? Бывает так, что до хоста не дозвониться по несколько дней и когда он появляется в сети выясняется, что пароль — только на просмотр, поэтому логично продолжить искать с того места, где остановились в прошлый раз. Следующие две кнопки помечают хост как «интересный» и как «заблокированный» (довольно частое явление, когда на экране не кошелек с криптой, а логон-скрин). Четвертая кнопка просто удаяет элемент из списка, пятая продолжает сканирование (если доступ — только на просмотр), шестая добавляет в список фильтрации (см. ниже), последняя — просто очищает весь лог.
page_log.PNG

Для очистки лога достаточно нажать ctrl+x либо вызвав контекстное меню и нажав «Сlear».

Как вы можете видеть, у всех «рабочих процессов» есть значки со статусами из ICQ. Зелененький — в работе, красненький — оффлайн, зелененький с красным крестиком — отвалился интернет, зелененький с листочком — нет заданий (возможно, так же нет сети — просто еще не успел по таймауту перезапустить соединение, либо только появился интернет/пришел онлайн).

Работает все это добро по принципу «карусели»: идем по кругу, как только дошли до конца - «воркеры» сортируются по времени последнего обращения (старики — вперед), «чекеры» же просто гуляют по кругу. Если в процессе работы «чекер» нашел новый адрес — он сразу отдается «воркеру». Если в процессе работы чекеру подкинули файлов .masscan – их содержимое первое будет скормлено «чекерам».
Чуть не забыл, когда «чекеры» проверяют свежие пары ip:port — возле процентов будет стоять звездочка (*). Это нужно лишь для того, чтобы дождаться завершения сканирования свежих адресов и не выключать программу раньше завершения, чтобы лишний раз не пересортировывать базу «чекера». Также стоит отметить, что есть некая инерция — звездочка пропадает сразу, как достигнута граница базы, но кэш по прежнему в процессе сканирования, так что как минимум 20000 записей (в моем случае) еще предстоит проверить.

Когда находится очередной не-отфильтрованный десктоп на вкладке «Results» открывается доступ к кнопке «Ignore desktop», про нее стоит рассказать подробнее.
filter.PNG

Вообще, настройка фильтров - вопрос интимный и каждый сам составляет свои правила. То, что не нужно мне — нужно кому-то еще, иначе зачем это в таких количествах :) Расскажу про встроенные фильтры и общие правила составления фильтров.

{hex} — отсеивает срань вроде
2499F83, 24CAA81, 2E48843, 2F66A01, 30E5C81, 35CCAC1, 3630B01, 3693941, 3838F02, 3905901, 3A78802, 3ABFB41, 3C3DB81, 4046F41, 40B6841, 4238C43, 4629C81, 462A981, 4683B81, 4860D41, 490ED41, 4C97C03, 4CC68C1, 4F2A881, 500294, 500431, 50BDF81 и тысяч других. За этими прекрасными названиями скрывается HMI, который лично мне не нужен.
{ip} — IP адрес, как правило 192.168.*.*, реже — адрес самого сервера или другие диапазоны локальных сетей. Стандартными вбюверами увидеть что скрывается за этими адресами увидеть не получается, по тому — просто скипаю.
{lettercase} — десктопы вида «44.107 ThanhNienMusic», т.е. с разным регистром в написании. Стандартные VNC-сервера под Windows используют либо только прописные буквы, либо только строчные. Иначе это либо *nix (mac?), либо HMI – я скипаю.
Меня интересуют только windows-машины, поэтому я использую также маски */*, *:*, *#* и *@*.
Кстати, после истории с папкой «Пенсия» и кодовыми словами к кошельку с кучей крипты на нем (полученные в виде взятки) в этой папке на макбуке у одного представителя правопорядка — невольно задумываешься и не-виндовые машины прощупывать.

Хосты с пустым десктопом игнорируются по умолчанию.
Более интересный пример. Есть целая грядка машин, которые мне не интересны, в частности
user-wks2 ( 192.168.10.12 ) - service mode
order-wks1 ( 192.168.10.12 ) - service mode
user-wks2 ( 192.168.10.12 ) - service mode
user-wks1 ( 192.168.10.11 ) - service mode
фильтр для так машин может выглядеть так: «*-wks? ( * )*»
Я редко встречаю машины с одним именем, как правило это какой-то шаблон. Но есть также и забавное исключение: десктоп «lenovo-pc». Это очень странный ПК без пароля, который висит на примерно 10 адресах и рандомных портах (каждый день появляются новые записи — на данный момент их больше тысячи) Вот неполный список:
118.40.40.109:11111 lenovo-pc
118.40.40.123:100 lenovo-pc
118.40.40.168:10 lenovo-pc
118.40.40.192:10250 lenovo-pc
183.105.12.119:123 lenovo-pc
183.105.12.177:5954 lenovo-pc
183.105.12.185:28015 lenovo-pc
183.105.12.202:1994 lenovo-pc
218.149.81.38:4433 lenovo-pc
что это, зачем и кому нужно — непонятно.
В любом случае стоит просматривать список «good_ignored» на предмет интересных находок.
Не раз натыкался на мнение, что «псевдо-серверы с пустыми паролями не нужны» и даже опции игнора пустых паролей в брутерах видел. Скажу вам по своему опыту длиною в 6 лет — попадаются очень интересные экземпляры. Регулярно вижу, что хост с пустым паролем и индексом в несколько сотен тысяч доступен без пароля — т.е. я его условно месяц перебирал, а он или переустанавливал что-то или настройки сбросил и стал доступен без пароля. Т.е. я вижу в реестре или конфиге, что пароль есть (и он не словарный), но функция авторизации отключена по какой-то причине.
Более того, не далее чем в декабре 2022го у гражданина Anthony «Ant» Renicks (cornucopias) мною было утянуто несколько битков и NFT еще на столько же в ADA, как раз из за доступа без пароля. Да, это скорее исключение, но игнорировать хосты с пустыми паролями — глупо, гораздо эффективнее — фильтровать по имени десктопа.

Помимо «официального» метода добавления масок фильтрации есть и альтернативный — руками в таблицу. Сам я для этого использую «DB Browser for SQLite». Просто в базе worker.db в таблицу «ignore» добавляем новую маску/редактируем старую. Крайне не рекомендую лезть руками в «работающую» базу, лучше сначала завершить работу «менеджера», если вдруг почему-то такая необходимость возникла. Когда изменения внесены — на помощь нам приходит меню «DB Maintance» и подменю «Worker». Здесь мы можем, например, в разделе «Rebuild» пересортировать по алфавиту список фильтров («Rebuild Ignore masks»), а также другие таблицы. На самом деле в этом (помимо сортировки по алфавиту, лично мне так нагляднее) мало смысла: «менеджер» при завершении работы сам пересоберет все таблицы, если было внесено достаточное количество изменений (в коде зафиксировано значение 1000, т.е. 1000+ добавлений/удалений). А вот пункт меню «Rescan ignored list» в этом случае нам очень пригодится — он по-новой пройдется по списку «good» и применит свежие правила фильтрации, если будут найдены свежие отфильтрованные — они будут перемещены в таблицу «good_ignored» и обе таблицы будут пересобраны и база сжата.

Скажу пару слов про перезагрузку фермы. Очень важно завершать корректно «менеджер», т.к. он работает с базами данных и может что-то поломать. Если «менеджер» по каким-то причинам отвалился - «воркеры» продолжат гонять по кругу свои задания, а когда он всеже вернется — отдадут результаты (индексы паролей или список сбрученных машин). Если такое вдруг произошло — вероятно в лог посыплется куча сообщений, что адрес никому не присвоен — лучше на время отключить «Error log». Если необходимо перезапустить систему (например, отвалились VPN а запускать в ручную скрипт vpn.cmd на всех машинах — лень), «менеджер» закрывать не обязательно — можно просто поставить на паузу (кнопка «Stop» в контекстном меню корневого элемента на вкладках «Workers» и «Checkers»), дождаться остановки и запустить скрипт vbox_restart.bat. Только заметил, что где-то bat, а где-то – cmd. Но переделывать я, конечно же, ничего не буду :)

masscan
Подводя итоги расскажу немного про добычу доступов. Сам я пользуюсь массканом, установленном на взломанных машинах. У него есть один существенный недостаток — он слишком не регулярно сохраняет логи. Т.е. при внезапной остановке он просто не запоминает текущаю позицию (проработав пару недель). Чтобы этого избежать — необходимо немного модернизировать исходник и пересобрать masscan. К сожалению, по условиям конкурса, код с гитхаба я выкладывать не могу, по сему лишь расскажу чего я подправил. В файле main.c в функции main_scan в блоке объявления переменных между uint64_t range; и unsigned index; вставляем uint32_t updates; чтобы получилось так:
C:
    uint64_t range;
    uint32_t updates;
    unsigned index;
далее перед while (!is_tx_done && masscan->output.is_status_updates) { вставляем updates = 0;
C:
    updates = 0;
    while (!is_tx_done && masscan->output.is_status_updates) {
ну и наконец меняем
C:
        if (masscan->output.is_status_updates)
            status_print(&status, min_index, range, rate,
                total_tcbs, total_synacks, total_syns,
                0, masscan->output.is_status_ndjson);
на
C:
        if (masscan->output.is_status_updates) {
            status_print(&status, min_index, range, rate,
                total_tcbs, total_synacks, total_syns,
                0, masscan->output.is_status_ndjson);
            updates++;

            if (updates == 61) {
                masscan->resume.index = min_index;
                masscan_save_state(masscan);
                updates = 0;
            }
        }
Все. Теперь будет сохранять состояние каждую минуту. Как вариант — можно взять собранный masscan из архива.

Отвлеклись. Масскан обязательно должен сохранять логи в режиме -oB, т.е. в формате binary! Когда лог масскана готов — кладем его в папку ms\done и запускаем скрипт read.bat. Далее, когда скрипт закончит работу, содержимое папки ms\masscan переносим в папку shared\masscan и ждем, пока файлы не исчезнут. Эти файлы читаются с конца и при завершении работы «обрезаются» до того места, где находится еще не прочитанный кусок. Если расширение файла поменялось на malformed – файл имеет неверную длину и, вероятно, неверный формат.
Для начинающих, у кого совсем нет адресов для брута, оптимальным будет следующий алгоритм действий. Берем любую интересную страну/город и сканируем ее на порты, скажем, 5900-5910. Далее результат скармливаем «чекерам». Когда весь указанный диапазон просканирован — открываем с помощью «DB Browser for SQLite» файл ms\total_db\total.sqbpro (предварительно заменив в нем мой путь X:\shared\worker.db на свой любым текстовым редактором) и, если это первый запуск, на вкладке «SQL» сразу переходим к третьему пункту, «3. total1 rebuld» - этот запрос выберет все ip, у которых есть VNC. Выгружаем таблицу «total» и сканируем с помощью masscan уже на все порты (-p1-65535), резутаты также скармливая «чекеру». После сканирования новых стран/городов начинаем начинаем с первой вкладки, «1. total2 rebuild» и выполняем все три запроса, только на этот раз экспортируем таблицу «total3», в которой будут лишь те адреса, что недавно появились — их также отправляем на сканирование всех портов.

За сим — все. Если вам, дорогие читатели, тема с VNC зайдет — запилю еще один тред с набором утилит для пост-эксплуатации.
Чмоки-чмоки

архив с бинарниками не залился, слишком большой. положил тут: https://www.sendspace.com/file/rqtsq7 (пароль - xss.pro)
Зеркала:
https://send.exploit.in/download/6f8493859743a471/#FLmt1g_GQGFHPTFOLhg9VQ
https://www.upload.ee/files/16129436/bin.zip.html
https://file.io/6FovY2sNHq3S
 

Вложения

  • src.zip
    550.4 КБ · Просмотры: 294
Последнее редактирование модератором:
ТС - молодец.
з.ы. масскан можно не патчить: юзаем --resume pause.conf и пока скан идет текущее место записывается в файл pause.conf, и юзаем --append-output и все результаты при возобновлении после сбоя будут дополнять существующий аутпут.
 
ТС - молодец.
з.ы. масскан можно не патчить: юзаем --resume pause.conf и пока скан идет текущее место записывается в файл pause.conf, и юзаем --append-output и все результаты при возобновлении после сбоя будут дополнять существующий аутпут.
не совсем верно. точнее, в корне не верно. речь о том, что если его закрыть некорректно - он не сохранит текущую позицию. смысл патча в том, чтобы он сохранялся каждую минуту. а потом - да, надо начинать с paused.conf. когда масскан установлен на чужой машине пользователь как правило не удосуживается нажать ctrl+c (ко всему прочему - у меня он работает как служба и окон у него нет никаких). в общем, патч нужен :) но спасибо за отзыв
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Как же это сильно, ТС. Мой респект Вам. Вы колоссальный красавчик.
 
не совсем верно. точнее, в корне не верно. речь о том, что если его закрыть некорректно - он не сохранит текущую позицию. смысл патча в том, чтобы он сохранялся каждую минуту. а потом - да, надо начинать с paused.conf. когда масскан установлен на чужой машине пользователь как правило не удосуживается нажать ctrl+c (ко всему прочему - у меня он работает как служба и окон у него нет никаких). в общем, патч нужен :) но спасибо за отзыв
Чтобы без окон было патчил сам масскан или что то поверх? подскажи по поводу запуска в качестве службы, патчишь чтобы не было окна, каким либо образом запускаешь в качестве службы сразу с аргументами? я правильно понял или есть еще какие нюансы
 
Чтобы без окон было патчил сам масскан или что то поверх? подскажи по поводу запуска в качестве службы, патчишь чтобы не было окна, каким либо образом запускаешь в качестве службы сразу с аргументами? я правильно понял или есть еще какие нюансы
нет, при запуске в качестве службы никаких окон не показывает само себе. запускаю с помощью nssm, которая стартует батник resume.bat
Код:
cls
.\svchost.exe --resume paused.conf --append-output --sendq --open --rotate-size 1m --rotate-dir .\done --excludefile ip_excl.list
 
Hi,
I'm trying to make the setup for the according to this topic but I'm not so experience and I can't do it using only the written steps.
So I was wondering can someone record a video tutorial how to set up everything step by step and send it to me. Not free of course.
I will pay $100 in BTC. Perhaps it‘s not much but it’s all I can give.
I will be happy if someone is willing to help me.
If not it is OK too.
Thanks in advance
 
Небольшой бакфикс. В виду роста объемов стали вылезать мелкие пакости. В частности перестали удаляться папки с бакапами после сжатия и корректно завершаться работа (пока "Воркеры" еще отдают свои результаты и они записываются в базу - "Чекеры" уже отключились и по тайм-ауту лезут обратно, мешая завершить работу). Плюс какие-то косметические неприятности с меню DB Maintance при сканировании на предмет элементов игнор-листа. В архиве актуальный сорц и собранные файлы.
 

Вложения

  • xss.zip
    714.5 КБ · Просмотры: 88


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх