Sovente si ha l'esigenza di effettuare un'analisi di un determinato host protratta nel tempo e soprattutto programmata.
Vediamo come realizzare uno script in python che ci permetta di esportare l'output di Nmap in formato html.
I requisiti per fare ciò sono:
- il portscanner nmap
- l'interprete python >= 2.3
- un webserver qualsiasi
Il webserver si occuperà di rendere accessibile la nostra pagina html via web mentre cron, tramite il nostro script, genererà la stessa ogni 5 minuti.
Lo script:
#!/usr/bin/python
# Analisi di rete "programmata"
# http://openskills.info - by mozako
import os
PATH = "/var/www/htdocs/" # qui inseriremo il percorso (e solo quello) dove salvare il file html; nel nostro caso /var/www/htdocs/ rappresenta la directory root del web-server Apache.
RETE = "192.168.0.102" # L'host da monitorare andrà qui.
NMAP = "/usr/bin/nmap -sT " + RETE # qui inseriremo il percorso completo di nmap seguito dalle opzioni per lo scanning scelte (si badi allo spazio finale); in questo caso si è optato per il semplice TCP connect() scan.
file = open(PATH + "scan.htm",'w') # apriamo il file dove salvare l'output in scrittura.
print >> file, "Network Info<br><hr>"
cd = os.popen(NMAP) # startiamo nmap
for line in cd.readlines():
file.write(line+ "<br>")
file.close()
Modifichiamo il file /var/spool/cron/crontabs/root, in maniera da avviare lo script ogni 5 minuti, aggiungendo:
*/5 * * * * /percorso/scan.py &> /dev/null
Se tutto è filato liscio troveremo una pagina .htm accessibile tramite http://nostro_host/scan.htm ed aggiornata ogni 5 minuti !
Strumenti e tecniche di network e vulnerability scanning. Information gathering.