Парсим сеть с помощью MASSCAN и Nmap
Начинающих нетсталкеров чаще всего интересует поиск открытых FTP серверов а также веб-страниц в каком-либо диапазоне IP адресов.
Узнать диапазон IP любого города России можно здесь:
или здесь для Казахстана:
Учимся работать с masscan и Nmap
Программа masscan предназначена для быстрого сканирования большого количества IP адресов, на предмет наличия открытых портов. Она работает в разы быстрее чем Nmap, но не обладает таким большим количеством модулей.
Обычно masscan применяют в связке с Nmap - сперва с помощью masscan сканируют диапазон, и составляют список IP с открытыми портами, которые нас интересуют. А далее уже скармливают полученный список программе Nmap, которая может вытащить заголовки веб страниц и проверить FTP сервера на возможность анонимного входа.
Все описанные далее действия подразумевают что мы находимся в Linux и у нас уже установлены masscan, Nmap и все зависимости.
Создадим в домашней директории папку example, а в ней файл masin.txt с диапазонами IP которые нужно просканировать. Обратите внимание на правильный формат записи строк с IP, совместимый с Nmap.
Для примера я поместил в файл masin.txt два диапазона
37.151.22.0/24
193.255.208.0/24
Теперь находясь в этом же каталоге откроем терминал и дадим команду
sudo masscan -p80,21 -iL masin.txt --rate=300 -oL masout.txt
Эта команда заставит masscan просканировать диапазоны из файла masin.txt на открытые порты 80 и 21, со скоростью 300 запросов в секунду. Результат будет выведен в файл masout.txt
После сканирования в нашем каталоге появится файл masout.txt в котором будут те IP в которых masscan нашел открытые 21 или 80 порт.
Теперь нам нужно очистить этот файл от лишних символов, оставив только IP адреса
Находясь в том же каталоге, запустим команду
awk '{ print $4 }' masout.txt > nmapin.txt
Эта команда очистит от лишних символов данные из файла masout.txt и запишет очищенный список IP в файл nmapin.txt который мы скормим программе Nmap
nmap -p 80,21 --script "http-title","ftp-anon" -iL nmapin.txt -oN output.txt
Наберемся терпения - Nmap работает не очень быстро. После того как команда отработает, у нас появится файл output.txt который мы проанализируем и превратим в удобный вид простым скриптом на Python
import subprocess
import inspect
import sys, os, codecs, re
import webbrowser
dic={
"\\xD0\\xB0":"а", "\\xD0\\x90":"А",
"\\xD0\\xB1":"б", "\\xD0\\x91":"Б",
"\\xD0\\xB2":"в", "\\xD0\\x92":"В",
"\\xD0\\xB3":"г", "\\xD0\\x93":"Г",
"\\xD0\\xB4":"д", "\\xD0\\x94":"Д",
"\\xD0\\xB5":"е", "\\xD0\\x95":"Е",
"\\xD1\\x91":"ё", "\\xD0\\x81":"Ё",
"\\xD0\\xB6":"ж", "\\xD0\\x96":"Ж",
"\\xD0\\xB7":"з", "\\xD0\\x97":"З",
"\\xD0\\xB8":"и", "\\xD0\\x98":"И",
"\\xD0\\xB9":"й", "\\xD0\\x99":"Й",
"\\xD0\\xBA":"к", "\\xD0\\x9A":"К",
"\\xD0\\xBB":"л", "\\xD0\\x9B":"Л",
"\\xD0\\xBC":"м", "\\xD0\\x9C":"М",
"\\xD0\\xBD":"н", "\\xD0\\x9D":"Н",
"\\xD0\\xBE":"о", "\\xD0\\x9E":"О",
"\\xD0\\xBF":"п", "\\xD0\\x9F":"П",
"\\xD1\\x80":"р", "\\xD0\\xA0":"Р",
"\\xD1\\x81":"с", "\\xD0\\xA1":"С",
"\\xD1\\x82":"т", "\\xD0\\xA2":"Т",
"\\xD1\\x83":"у", "\\xD0\\xA3":"У",
"\\xD1\\x84":"ф", "\\xD0\\xA4":"Ф",
"\\xD1\\x85":"х", "\\xD0\\xA5":"Х",
"\\xD1\\x86":"ц", "\\xD0\\xA6":"Ц",
"\\xD1\\x87":"ч", "\\xD0\\xA7":"Ч",
"\\xD1\\x88":"ш", "\\xD0\\xA8":"Ш",
"\\xD1\\x89":"щ", "\\xD0\\xA9":"Щ",
"\\xD1\\x8A":"ъ", "\\xD0\\xAA":"Ъ",
"\\xD1\\x8B":"ы", "\\xD0\\xAB":"Ы",
"\\xD1\\x8C":"ь", "\\xD0\\xAC":"Ь",
"\\xD1\\x8D":"э", "\\xD0\\xAD":"Э",
"\\xD1\\x8E":"ю", "\\xD0\\xAE":"Ю",
"\\xD1\\x8F":"я", "\\xD0\\xAF":"Я",
}
f=open('output.txt', 'r')
f2=open('output.html', 'w')
f2.write('<html lang="ru"><head><title>Scan results</title><meta charset="utf-8"></head><body>')
for x in f:
if('Nmap scan report for' in x):
hosts = re.search('(\d+\.\d+\.\d+\.\d+)', x)
host=hosts.group(1).strip()
if('Anonymous FTP login allowed' in x):
f2.write('<a href="ftp://'+host+'" target="_blank">ftp://'+host+'</a><p>')
if('http-title:' in x):
x=x.replace('|_http-title:','')
x=x.replace('| http-title: ','')
w=x.strip()
for k in dic:
if (k in w):
w=w.replace(k, dic[k])
f2.write('<a href="http://'+host+'" target="_blank">'+w+'</a><p>')
f2.write('</body></html>')
f2.close()
f.close()
webbrowser.open('output.html')
Закинем данный скрипт в наш каталог и запустим командой
python3 nparse.py
Данный скрипт проанализирует файл output.txt и создаст список ссылок в виде HTML файла output.html и сразу откроет его в браузере.
Вуаля! Квест закончен - вы можете увидеть результаты нашего сканирования. Мы нашли несколько веб страниц и парочку открытых FTP серверов.
Материал подготовлен автором @pythono