
Разделите результаты полного сканирования портов и используйте их для целевых запусков Nmap.
Divide Et Impera And Scan (и также объединяем результаты сканирования)
DivideAndScan используется для эффективной автоматизации рутинного сканирования портов путём разделения процесса на 3 фазы:
Для 1-й фазы предполагается использование быстрого сканера портов*, вывод которого парсится и сохраняется в единую файловую базу данных (TinyDB). Затем, во время 2-й фазы, для каждой цели с её набором открытых портов запускаются индивидуальные сканирования Nmap (поддерживается многопроцессорность) на основе данных из базы. Наконец, на 3-й фазе отдельные выводы Nmap объединяются в единый отчёт в различных форматах (XML / HTML / простой текст / grepable) с помощью nMap_Merger. Визуализация обеспечивается DrawNmap.
Варианты использования:
* Доступные сканеры портов:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ. Вся информация, содержащаяся в этом репозитории, предоставлена только в образовательных и исследовательских целях. Автор не несет ответственности за любое незаконное использование этого инструмента.

Чтобы успешно разделять и сканировать, нам понадобятся хорошие инструменты для сканирования портов (в примерах ниже релизы с GitHub получаются через eget).
📑 Примечание: если вы не хотите возиться с зависимостями в вашей хост-ОС, переходите к разделу Docker.
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx
DivideAndScan доступен на PyPI как divideandscan, хотя я рекомендую устанавливать его из GitHub с помощью pipx, чтобы всегда иметь последнюю версию:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
Также доступен релиз, упакованный с помощью shiv (хотя размер файла большой):
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz
Для отладки можно настроить среду разработки с помощью poetry:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 Примечание: DivideAndScan использует sudo для запуска всех сканеров портов, поэтому при вызове команд сканирования будет запрошен пароль.
Вы можете запустить DivideAndScan в Docker-контейнере следующим образом:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
Поскольку инструменту требуются входные данные и он производит выходные данные, вы должны указать вашу текущую рабочую директорию как точку монтирования в /app внутри контейнера. Также публикация порта 8050 на хосте позволяет получить доступ к приложению Dash, используемому для визуализации отчётов Nmap.
Вы можете установить алиас, чтобы сократить базовую команду:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

Давайте перечислим открытые порты для всех живых машин на Hack The Box.
-p1-49151. На втором скриншоте я просматриваю результаты сканирования по хостам и по портам:~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show
~$ das -db htb scan -hosts all -oA report
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel
Вы можете подключить свой любимый сканер портов к DivideAndScan, реализовав единственный метод parse для его вывода в das/parsers/DUMMY_SCANNER.py (см. пример для masscan):
from das.parsers import IAddPortscanOutput
class AddPortscanOutput(IAddPortscanOutput):
"""Дочерний класс для обработки вывода DUMMY_SCANNER."""
def parse(self):
"""
Парсер необработанного вывода DUMMY_SCANNER.
:return: пара значений (имя файла необработанного вывода сканера, количество хостов, добавленных в БД)
:rtype: tuple
"""
hosts = set()
for line in self.portscan_raw:
# Реализация парсера DUMMY_SCANNER
pass
return (self.portscan_out, len(hosts))
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...
-----------------------------------------------------------------------------------------------
| ________ .__ .__ .___ _____ .____________ |
| \______ \ |__|__ _|__| __| _/____ / _ \ ____ __| _/ _____/ ____ _____ ____ |
| | | \| \ \/ / |/ __ |/ __ \ / /_\ \ / \ / __ |\_____ \_/ ___\\__ \ / \ |
| | ` \ |\ /| / /_/ \ ___// | \ | \/ /_/ |/ \ \___ / __ \| | \ |
| /_______ /__| \_/ |__\____ |\___ >____|__ /___| /\____ /_______ /\___ >____ /___| / |
| \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ |
| {@snovvcrash} {https://github.com/snovvcrash/DivideAndScan} {vX.Y.Z} |
-----------------------------------------------------------------------------------------------
positional arguments:
{db,add,scan,dns,report,parse,draw,tree,help}
db утилиты для ручных манипуляций с БД
add выполнить полное сканирование портов и добавить вывод в БД
scan запустить целевые сканирования Nmap против хостов и портов из БД
dns сопоставить доменные имена из входного файла с соответствующими IP-адресами из БД
report объединить отдельные выводы Nmap в единый отчёт (https://github.com/CBHue/nMap_Merger)
parse парсить необработанные Nmap XML-отчёты по именам сервисов и выводить записи в формате {service}://{host}:{port}
draw визуализировать Nmap XML-отчёты (https://github.com/jor6PS/DrawNmap)
tree показать содержимое каталога ~/.das/ с помощью tree
help показать встроенный диалог --help выбранного сканера портов
options:
-h, --help показать это справочное сообщение и выйти
-db DB имя БД для работы
Psst, hey buddy... Wanna do some organized p0r7 5c4nn1n6?
fuff для автоматизации фаззинга веб-каталоговparse)|
Укажите модулю ⚠️ Предупреждение: пожалуйста, убедитесь, что вы понимаете, что делаете, потому что почти все инструменты сканирования портов могут повредить тестируемую систему при неправильном использовании. Когда модуль начинает работу, создается каталог |
|
Запустите целевые сканирования Nmap с помощью модуля Чтобы запустить Nmap одновременно в нескольких процессах, укажите переключатель Формат вывода выбирается с помощью опций Также вы можете просмотреть содержимое базы данных с помощью опции |
|
Чтобы сгенерировать отчёт независимо от модуля 📑 Примечание: имейте в виду, что модуль |