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

Статья Develop VULN Workers SCAN

supra

RAID-массив
Пользователь
Регистрация
19.12.2022
Сообщения
69
Реакции
48
Сегодня каждый сталкивается проблемой распределенного сканирования, скрапинга данных и тому подобное, есть разные подходы к идеи ускорения, децентрализации, рандомизирования воркеров(серверов с которых мы ведем сканирование) я бы хотел представить. proof-of-con такой системы.

1.0 Intro

Снимок экрана 2023-11-15 в 00.19.07.png



Mmm...:​

#Backend:
Django,Python,Paramiko(ssh libs for python)

#Front
Django-admin

A. Основная задача: Создать систему, для запуска скана подсетей, инструменты (nuclei, naabu, httpx) с различными параметрами
1. Запускаем скан через админку:

  • Сканер 'Naboo': Начинаем с 'Naboo' для чека IP-адресов в CIDR, типа 192.168.0.0/24.
  • Кидаем задачи на воркеры: Админка сама замешает и разбросает подсети по рабочим узлам. Заливаешь файл с подсетями, выбираешь настройки скана в всплывающем окне.
2. Собираем инфу и работаем с ней:

  • Записываем результаты: Как только скан стартует, сразу ловим данные о найденных IP и портах, записываем их в файлик и показываем в админке. Ну и на сервере все это тоже храним.
  • Перекидываем на 'HTTPx': Следующий ход - отправляем результаты на доп. анализ сканеру 'HTTPx' с нужными параметрами.
3. Чистим базу от двойников:

  • База IP без повторов: В базе сразу предусмотрим защиту от дублей, чтобы собирать только уникальные IP.
  • Скан на уязвимости: Как база очистится от копий, отправляем ее на проверку уязвимостей через 'Nuclei'.
4. Гибкость системы:

  • Все устроено модульно, так что в будущем можно легко добавить новые сканеры и инструменты.
5. Защита и шифровка:

  • Все файлики и передаваемые данные будем шифровать, используя SSL, чтобы трафик был в безопасности.
  • RPC-сервер: Можем юзать 'Paramiko' или что-то в этом духе для управления процессами.
Примечание:Кажется, все это звучит не совсем сложно и совсем понятно, но на деле это просто скрипт который раскидываем данные по сервакам, запускаем приложухи, собираем отчеты и отправляем их в админку. Это концепт приложения для примера реализации этой так сказать распред системы!
Django,Python,Paramiko(ssh libs for python)


ЗЫ: Если мы подойдет к разработке такой системы с большим усилием, я бы предложил использовать
GoLang и его библиотеки этих же самых прекрасных тулз от proddiscovery
Наше python приложение тут является костылем так же как и использование backend Django для семпла как концепт такой ситсемы
Так же возможна реализация всего этого дела на Flask (более легкий фреймворк).
Приложение через paramiko инициализирует. запуск софта.
Реализовано хранение данных в бд, простой поиск по базе данных в админке
По сути из-за bratva мне пришлось говнокодить концепт данного фрейморка если его так можно назвать. эту, данной системой мы будем ресерчить подсети нашего провайдера в swissland .

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

Анализ текущего решения:​

  1. Использование Django и Python с Paramiko: Это базовое решение где Django используется для бэкенда а Paramiko для работы с SSH. Это подходит для прототипа или небольших систем, но имеет ограничения в масштабировании и обработке ошибок.
  2. Проблемы текущего подхода:
    • Отсутствие обработки ошибок: Важно обеспечить надежность системы, добавив обработку исключений и ошибок.
    • Отсутствие балансировки нагрузки: Для масштабируемости и надежности необходим механизм балансировки нагрузки между воркерами.
    • Paramiko для масштабных задач: Paramiko хорош для простых SSH задач, но может не подходить для масштабных операций.
Структура самого кода:
Весь наш костыль будет работать с базой postgreeSQL
Снимок экрана 2023-11-15 в 01.56.22.png


Снимок экрана 2023-11-14 в 19.28.55.png
Снимок экрана 2023-11-14 в 19.29.11.png
 
Последнее редактирование модератором:
Начнем с того что напишем автодеплой скрипт всего софта который используется для работы на воркерах.
для этого пойду и посмотрю более мнее хорошую реализацию данного деплоя, в целом можно использовать обычный bash или python

Run-multiple ssh com

tik

конечно такой подход к авторизации и хранению паролей это очень такая "тяжелая" ошибка а еще тут и root юзер) Ну да ладно по сути мы используем это для воркеров но делать я вам так не рекомендую используйте сертификаты
Python:
import paramiko
from concurrent.futures import ThreadPoolExecutor

s = [
    ("92.92.92.92", "22", "root", 'BLSdAoX733'),
    ("92.92.92.92", "22", "root", 'BLSdAoX733'),
    ("92.92.92.92", "22", "root", 'BLSdAoX733'),
]

def e(host, port, username, password, command):
    try:
        c = paramiko.SSHClient()
        c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        c.connect(host, port, username, password)
        i, o, e = c.exec_command(command)
        co = o.read().decode('utf-8')
        c.close()
        print(co, e.read().decode('utf-8'))
        return co
    except Exception as e:
        print(str(e))
        return str(e)

def ecg(scan_command, s):
    with ThreadPoolExecutor(max_workers=len(s)) as executor:
        for i in range(len(s)):
            h, p, u, pw = s[i%len(s)]
            executor.submit(e, h, p, u, pw, scan_command)

cmds = ["add-apt-repository --yes ppa:longsleep/golang-backports", "apt update", "apt upgrade -y",
"apt install -y vim git golang neofetch libpcap-dev", "mkdir p2", "cd p2", "go mod init installer",
"go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest", "go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest", "go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest"]

for command in cmds:
    print(command)
    ecg(command, s)
 
Последнее редактирование:
Боря, как всегда феерично! Но обрати внимание:
Представляем вам [ // XSSware] - конкурс проектов/software, а не статей, как обычно.
Ты как всегда вне конкурсной программы :) И не ради денег :) Каюсь, я сначала перенес в свой раздел, но потом вернул.
До сих пор с надеждой увидеть здесь "software"!
 
Боря, как всегда феерично! Но обрати внимание:

Ты как всегда вне конкурсной программы :) И не ради денег :) Каюсь, я сначала перенес в свой раздел, но потом вернул.
До сих пор с надеждой увидеть здесь "software" бро) дак вон массканер вульнов на воркерах будет серваков)
 
ничего не понятно, но очень интересно :D

в старых Supermicro легко можно подменить прошивку IPMI :D
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Папа может, папа может всё, что угодно
Папа может, папа может быть, кем угодно )
 
RESERV
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Проблемы текущего подхода:
  • Отсутствие обработки ошибок: Важно обеспечить надежность системы, добавив обработку исключений и ошибок.
  • Отсутствие балансировки нагрузки: Для масштабируемости и надежности необходим механизм балансировки нагрузки между воркерами.
  • Paramiko для масштабных задач: Paramiko хорош для простых SSH задач, но может не подходить для масштабных операций.
Рекомендую обратить внимание на docker-compose + swarm. Добавить к вашему стеку очередь задач (Celery или redis-rq), для решения балансировки тасков по воркерам, и в целом для отказа от SSH-взаимодействия.
Все иснрументы для скана и функций воркеров вы заворачиваете в один простой контейнер на базе linux. Вам останется написать прокладку-воркер на python, для взаимодействия с очередью задач и функций-оберток для запуска/получения результатов от софтов.

Например, скрипт-воркер взял таск из очереди на запуск Naboo с параметрами, вызывает функцию naboo_run(*args, **kwargs), которая стартует сабпроцесс Naboo и через communicate парсит результат. После отправляет его либо в очередь, либо в админку по апи, либо напрямую в бд (не рекомендую).

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

С помощью docker-swarm вся эта сборка сама распределяет нагрузку по кластеру серваков. Paramiko вам будет нужен только для подключения новых серверов-воркером (ноды) к вашему сворму, зайти по SSH, установить докер и запустить "docker swarm join --token <master-token>". Причем на одном сервере-воркере может работать нескольк воркер-контейнеров и не мешать друг-другу.
При выходе из строя одного из северов, docker и очередь задач распределят нагрузку на другие ноды автоматически.
Плюс, эта задача довольно популярная, и под неё есть множество руководств и шаблонов с таким стеком. Вам останется только настроить саму админку и добавить питон скрипт для воркеров. Всё остальное решает докер.

Как бонус, есть дополнительные панельки для наблюдения за работой кластера и очееди задач, которые можно установить парой строк в docker-compose.yaml.
68747470733a2f2f636c6f75642e67697468756275736572636f6e74656e742e636f6d2f6173736574732f333638303838322f31343832383639332f31323963643266322d306262362d313165362d396164662d6464363335616138313333342e706e67

visualizer-8.png

flower-cover.PNG
Насчет защиты, это будет изолированная виртуальная сеть, так что и это плюс. Но дополнительно, конечно, можно и шифрование внутри добавить и много чего ещё из Opsec.
В общем одни плюсы от такого решения, и настроить такое не менее сложно, чем дурить голову с бегатнёй по ссш через парамико
Успехов вам!
 
Последнее редактирование:
Душевно! На самом деле есть масса вариантов подхода к данной задаче :)можно обойтись без особой волокиты. сделать это при помощи автодеплоя, и так далее)
На самом деле задача то. очень простая 3 сканера , вход:ipv4sub/ -random-/s распределить их исходя из количества воркеров забрать лог на cnc.
Но мы говорим о конкурсе, где нужно что-то написать, кодинг- дает большой полет фантазии в творчестве именно если подойти к стеку технологий "hands remember"
Конечно я очень рад что сейчас весьма большое количество библиотек,технологий решений про которые говорить нет смысла. всем понятно что это за решения, и все кто хоть когда то связывался с автоматизацией о них знает. Для меня написание статьи , что я делаю очень редко. более созидательная вещь. ). не задолго до твоего постав.я подумал накостылить его на доккере. в целом я вчера все провел базовые тесты. получается что то вот так.
 

Вложения

  • Снимок экрана 2023-11-16 в 23.43.01.png
    Снимок экрана 2023-11-16 в 23.43.01.png
    16 КБ · Просмотры: 215
  • Снимок экрана 2023-11-16 в 23.43.01.png
    Снимок экрана 2023-11-16 в 23.43.01.png
    16 КБ · Просмотры: 218
  • Снимок экрана 2023-11-16 в 23.47.07.png
    Снимок экрана 2023-11-16 в 23.47.07.png
    47.9 КБ · Просмотры: 225
Пожалуйста, обратите внимание, что пользователь заблокирован
Ты близок к компоузу. Но, окей, ради "hands remember", забудь о докере, и смело хуярь пруф-оф-стейк блэт) Правда
Извини, что доебался вообще)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Рекомендую обратить внимание на docker-compose + swarm.
не в бровь а в глаз. чувствуется мисье кое-что понимает - как минимум.

supra - радует что ты все-же не спился. не ошибаеться только тот кто ничего не делает, а так нахуевертить как ты - это еще постараться надо, респект - несмотря на то что блевать иногда тянет от понтов
 
не в бровь а в глаз. чувствуется мисье кое-что понимает - как минимум.

supra - радует что ты все-же не спился. не ошибаеться только тот кто ничего не делает, а так нахуевертить как ты - это еще постараться надо, респект - несмотря на то что блевать иногда тянет от понтов
Главное иметь цель! А я и не скрываюсь , в полной мере показываю как нужно несети ответсвенность за свои действия, я же поставил себе цель устроить дикий ролф, я устроил)) и меня. хватит еще на 1005000 таких rolf, но.я думаю пора сделать что-то возрослей и серьезней бориски.
В обычной жизни я очень спокойный и эмпат ) + артистичная натура
 
Последнее редактирование:
Приятно видеть решение проблемы со стороны хостинг провайдера, о котором я упоминал в данной статье, парни вышли на связь опалатили чуть денежек за пентест)
 
Приятно видеть решение проблемы со стороны хостинг провайдера, о котором я упоминал в данной статье, парни вышли на связь опалатили чуть денежек за пентест)
а что за "проблема"-то была? с BMC/IPMI одного сервера можно было достучаться до BMC/IPMI других серверов? так почти во всех датацентрах, и всем на это пох.
 
а что за "проблема"-то была? с BMC/IPMI одного сервера можно было достучаться до BMC/IPMI других серверов? так почти во всех датацентрах, и всем на это пох.
В них можно было авторизоваться, что значит просто видно?
 
В них можно было авторизоваться, что значит просто видно?
если там на всех BMC стоят стандартные ADMIN:ADMIN, то ничего удивительного. а если что-то другое, то это уже интересно :)

кстати про супермикры: https://binarly.io/posts/Binarly_RE...Vulnerabilities_in_Supermicro_BMCs/index.html
- CVE-2023-40289 выполнение кода в админке, но требуется авторизация.
 
если там на всех BMC стоят стандартные ADMIN:ADMIN, то ничего удивительного. а если что-то другое, то это уже интересно :)

кстати про супермикры: https://binarly.io/posts/Binarly_RE...Vulnerabilities_in_Supermicro_BMCs/index.html
- CVE-2023-40289 выполнение кода в админке, но требуется авторизация.
admin:admin, zeroЧиппер. и тд, все что на улице валяется как говорится
 
Папа может, папа может всё, что угодно
бить боксеров, грабить банки, играть в бейсбол
Папа может, папа может быть, кем угодно )
Ведь мой папа, ведь мой папа - пиздабол)

сабж.
supra уже 3 поста, и 0 цитат темниковой... стареешь... скучно)

про композ абсолютно согласен. композ+докер акшон = авто деплой, без костылей с сшш и прочей мутотени.

в общем и целом, без грамнотного распределения, отработки ошибок, нормального управления машинами и единой целостной системы - это все так, лирика. оно и ежу понятно, что этот пок будет ворк. народ требует, хлеба, зрелищь! и прод версию!)

да и где конкурсная объективность, друзья? у новорегов до каждой "точки с запятой" доебываются, а сторожилы - "хуяк, хуяк и в прод" и все, сразу аплодисменты) не надо так)
 


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