Nmap Idle scan

Ho aggiunto una nuova categoria al blog, si chiama promemoria; mi è sembrato giusto visto che capita spesso che si scrivano articoli dove l’obiettivo è appunto quello di scrivere un promemoria per non dimenticarsi quello che si è appena fatto, magari per il semplice fatto che l’operazione appena svolta non la si fa molto spesso e che quindi con buona probabilità la si dimenticherebbe nel giro di qualche giorno (se non ora 😉 ) .nmap logo

In questi giorni mi sto divertendo con l’idle scan di nmap, una feature “antisgamo”, nel senso che se fatta bene e con i dovuti accorgimenti, ci può garantire un buon grado di anonimato. Nmap ci mette a disposizione parecchie opzioni per lo spoofing e l’evasion, basta guardare l’help e ci accorgiamo di quanto Fyodor ed il suo team abbiano fatto a tal proposito…

FIREWALL/IDS EVASION AND SPOOFING:
  -f; –mtu <val>: fragment packets (optionally w/given MTU)
  -D <decoy1,decoy2[,ME],…>: Cloak a scan with decoys
  -S <IP_Address>: Spoof source address
  -e <iface>: Use specified interface
  -g/–source-port <portnum>: Use given port number
  –proxies <url1,[url2],…>: Relay connections through HTTP/SOCKS4 proxies
  –data-length <num>: Append random data to sent packets
  –ip-options <options>: Send packets with specified ip options
  –ttl <val>: Set IP time-to-live field
  –spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
  –badsum: Send packets with a bogus TCP/UDP/SCTP checksum

 

L’dle scan, conosciuto anche come zombie scan, è in realtà un tecnica di scansionamento e non di evasione…Ma facciamo un ripassino, perchè per poter utilizzare questa tecnica dobbiamo aver studiato un pochetto il funzionamento del protocollo IP, conoscere le flag degli Header (“mannaia che paroloni! sembra quasi che sappia quello che sto dicendo vero?!?!) e sapere che l’IP implementa un Fragmentation ID Header ( ID di frammentazione), e per di più alcuni sistemi operativi incrementano il valore di questi ID di una unità ad ogni pacchetto. Controllando i valori del Fragmentation ID del nostro zombie possiamo determinare se la porta del target è aperta oppure chiusa, infatti il target risponderà in modo diverso a seconda che le sue porte siano aperte oppure chiuse… Prima di poter scansionare un target dobbiamo avere però 2 pre-requisiti:

  1. il più importante è ovviamente trovare uno zombie adatto al nostro scopo e che quindi abbia il Frag ID incrementale.
  2. una volta trovato lo zombie dobbiamo avere la certezza che sia inattivo, cioè che al momento della scansione non stia comunicando con altre macchine, altrimenti ci sarebbe impossibile determinare se l’ID si incrementa per causa nostra o per altre comunicazioni.

A questo punto non ci resta che trovare uno zombie adatto, sempre utilizzando nmap possiamo eseguire un fingerprinting dell’OS ed aumentando la verbosità dell’output possiamo vedere se l’ID è “incrementale”, il comando da utilizzare, come root, sarà:

  • nmap -O -v [ indirizzo_IP ]

se otteniamo una stringa del genere:

  • IP ID Sequence Generation: Incremental

Allora siamo a cavallo, e il nostro zombie è adatto all’Idle scan.

Entrando nel dettaglio della scansione, una volta trovato il nostro zombie, questo è quello che si deve fare:

  1. Monitorare l’ID dello zombie inviando un SYN/ACK.
  2. Non essendo prevista una comunicazione ovviamente il nostro zombie risponderà con un RST ed il suo ID IP.
  3. Ora si deve creare un pacchetto SYN dove sarà presente l’indirizzo sorgente dello zombie ed inviarlo al target.

A questo punto siamo pronti per ricevere una risposta, e se la porta è aperta avremo una risposta diversa rispetto ad una porta chiusa.

Nel caso la porta sia aperta, succederà che:

  1. Il nostro target risponderà con un SYN/ACK allo zombie.
  2. Lo zombie, non aspettandosi quel pacchetto, risponderà con un RST e quindi incrementarà il suo ID IP.
  3. Ora testeremo di nuovo l’ID IP dello zombie.
  4. Lo zombie ci risponderà di nuovo con un RST, e quindi vedremo che il suo ID IP è aumentato di 2 unità.

Nel caso invece che la porta sia chiusa (o filtrata), succederà che:

  1. Il target risponderà allo zombie con un RST, lo zombie semplicemente ignorerà il pacchetto lasciando il suo ID IP intatto.
  2. Ora testeremo di nuovo l’ID IP dello zombie.
  3. Lo zombie ci risponderà con un RST e quindi vedremo che il ID IP è aumentato di 1 unità.

Nmap compie tutte queste operazioni per noi, basta utilizzare il seguente comando:

  • nmap -sI [ IP_zombie ] [ IP_target ]

Per un ulteriore approfondimento, vi rimando alla documentazione ufficiale che si trova sul sito di nmap a questo indirizzo:

http://nmap.org/book/idlescan.html

 

Spero che vi sia stato utile come lo è stato per me, in certe situazioni dove non c’è altra soluzione per rimanere “stealth” , l’idle scan  è un ottima tecnica. Un ulteriore accorgimento per evitare di rivelare il nostro indirizzo IP è evitare che nmap faccia un ping iniziale per verificare che l’host sia veramente UP aggiungendo l’opzione -Pn.

Alla prossima e Happy Hacking

 

noyse.d0g



Tags: , , , ,
This entry was posted on domenica, Gennaio 18th, 2015 at 19:03 and is filed under Howto, Promemoria. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.