L’ information Gathering, ovvero la raccolta di informazioni è sicuramente una delle fasi essenziali prima di iniziare la fase di penetration testing. Prima di effettuare qualsiasi analisi è buona cosa sapere che cosa va analizzato e sopratutto conoscerlo bene.
L’ Information Gathering è proprio questo, studiare il nostro target sotto tutti i punti di vista e reperire più informazioni possibili, questo ci permetterà nelle fasi successive di avere molto materiale a disposizione. Il concetto da cui partire è quello della Black Box, ovvero la non conoscenza dell’applicativo / sistema su cui verranno effettuati i test.
Iniziamo la raccolta di informazioni
Il nostro target può essere sia una semplice URL, un IP e nient’altro, una misera informazione dal quale dobbiamo ricavare più informazioni possibili.
I modi per reperire informazioni sono moltissimi e di certo la nostra fantasia / curiosità ci potranno aiutare sicuramente, e analizzarli tutti è praticamente impossibile, quindi prenderemo in esame sono un paio di modi e qualche tool, ma non è detto che sia sempre l’approccio giusto.
Prendiamo in esame il caso in cui ci venga data una semplice URL e non conosciamo nient’altro. Quindi dobbiamo lavorare interamente da remoto e iniziare a creare il nostro book di “appunti”.
Iniziano con l’individuare URL a quale ip corrisponde tramite il comando host:
1 |
$host www.host.it |
l’output restituito ci permette di conoscere, attraverso una query hai nostri DNS, l’IP della macchina associato all’URL (il comando host può essere usato anche al contrario, ovvero immettendo l’ip e come ritorno otterremo il nome associato alla macchina).
Avendo una URL, vediamo a chi è registrato il dominio e quale ISP detiene la delega DNS, tramite il comando whois:
1 |
$whois host.it |
questo comando ci permette di interrogare i database ufficiali e ricevere i dati di registrazione del nome a dominio (e nel caso di ip, a chi appartiene IP e relativa classe).
Ottenute queste informazioni, sappiamo a chi appartiene il nome a domino che stiamo interrogando e se è ospitato presso un Provider o su un server “privato”.
Vediamo se il web continua ad aiutarci a reperire informazioni, ma stavolta a carattere social, ovvero cerchiamo indirizzi e-mail, altri hostname, url o quant’altro possa essere utile per la nostra analisi di penetration testing. Per fare questo ci viene incontro il tool theharvester che tramite alcuni parametri si occupa di cercare attraverso i motori di ricerca risultati attinenti la nostra URL di analisi. L’esempio sotto riportato effettua una ricerca per i primi 200 risultati, sul motore di ricerca google per il dominio host.it:
1 |
$theharvester -d host.it -l 200 -b google |
il comando sopra riportato è quello essenziale, ma oltre ad usare diversi motori di ricerca è possibile anche interrogazioni attiver (DNS Brute Force, DNS reverse lookup,DNS TDL expansion)
Abbiamo qualche informazione maggiore sul nostro target, quindi iniziamo ad effettuare un analisi sulla macchina individuata e se necessario sulla relativa classe (ci potrebbe essere anche qualche altro nodo interessante per la nostra analisi di penetration testing). Personalmente mi affido a due tool in questo passaggio, nmap e openvas.
Nel caso di openvas, inserisco host target ed avvio l’analisi, ed attendo la reportistica finale ;), mentre per nmap uso i seguenti comandi:
1 |
$sudo nmap -sS -F -o report.log -v -O <host.it> |
nel dettaglio:
-sS utilizza la tecnica di scansione TCP SYN
-F fast mode, ovvero cerca le porte associati hai servizi standard
-o outfile, scrive il risultato nel file indicato (l’output può essere in diversi formati, per esempio XML)
-O attivata l’opzione OS detection
Nel caso vogliamo effettuare la scansione sull’intera classe facente parte all’URL <host.it> basta aggiungere l’opzione in notazione CIDR, nel caso di una classe C:
1 |
$sudo nmap -sS -F -o report.log -v -O <host.it>/24 |
Altro tool interessante per la raccolta di informazioni è “whatweb” e il suo utilizzo è molto semplice:
1 |
$whatweb host.it |
ci restituirà il tipo di server che fa da hosting alla web application, non chè informazioni sulla stessa, nel caso di CMS è molto utile.
Altri tool utili, ma non meno importanti sono:
- arping: invia una richiesta ARP agli host di una specifica network;
- arp-scan: invia una richiesta arp ad un determinato ip, e restituisce tutte le informazioni dell’host nonchè fingerprint e simili;
- nbtscan: tool utile per effetture scansioni NetBIOS all’ interno di una network;
- knockpy: tool per elencare tutti i sotto-domini facenti parte del nome a dominio passato come parametro;
Adesso, nel caso in cui il nostro target per il penetration testing sia un URL e quindi un sito web, una web application, o servizio in una determinata macchina, abbiamo le informazioni basi su:
- a chi appartiene l’URL, ovvero a chi è registrato il nome a dominio;
- se il dominio è ospitato presso un ISP, un servizio di hosting, o presso un’altro ente o meglio facente parte di una classe ip associata allo stesso intestatario del nome a domino;
- informazioni inerenti la macchina server ospitante;
- se vi sono altri server nella stessa network, gli altri servizi attivi e relative fingerprint;
- una prima analisi dei bug, exploiet utilizzabili (grazie ad openvas, e all’interrogazione dei database contenente Exploits e 0day Exploits)
OK, adesso è arrivato il momento di procedere con i test veri e propri, passiamo alla fase di Vulnerability Assessment.
Comments are closed.