Develop VULN Workers SCAN

D2

Администратор
Регистрация
19 Фев 2025
Сообщения
4,380
Реакции
0
Сегодня каждый сталкивается проблемой распределенного сканирования, скрапинга данных и тому подобное, есть разные подходы к идеи ускорения, децентрализации, рандомизирования воркеров(серверов с которых мы ведем сканирование) я бы хотел представить. 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

Нажмите, чтобы раскрыть...
 
Сверху Снизу