Ethical hacking • identificazione dei servizi con nmap

Indice

Nel precedente post di ethical hacking spieghiamo brevemente le varie opzioni per ottenere un’enumerazione di indirizzi IP e sottodomini quando si esegue un processo di hacking etico. Se ti è piaciuto quel “questo è molto sicuro perché chi sta andando a sapere che questo sottodominio esiste” (che anche se non ci credete, è più comune di quanto sembra), non perdere come il “che sta andando a sapere che ho messo questo servizio in questo porto, con un numero strano”…

In breve, in questo post cercheremo di vedere come è possibile fare un inventario di aprire le porte di un IP o un range di ip, e anche di identificare la tecnologia sotto una porta aperta, quando questo è possibile. Fondamentalmente questo post si concentrerà sull’uso di uno strumento fantastico ed essenziale, nmap. Sebbene sia uno strumento tipicamente utilizzato in Linux (e ovviamente incluso nella suite di riferimento che uso in questi post, Kali), le compilation per altri sistemi operativi possono già essere trovate.

Prima di andare al lavoro, vogliamo avvertire che nmap è uno strumento complesso e completo, con un’enorme quantità di opzioni, parametri, ecc.; Questo post non è inteso come un manuale per l’uso dello strumento, ma ancora una volta un’introduzione ad esso per comprendere l’identificazione dei servizi come una fase di hacking etico prima del rilevamento delle vulnerabilità. Per saperne di più sullo strumento, ti consigliamo di leggere il loro manuale.

Lo strumento Open Source nmap ci consente di eseguire scansioni di rete e porte, potendo scansionare una singola destinazione, un intervallo, un elenco di IP Based Basato su richieste TCP, UDP, ICMP, SCTP, ecc. e incorpora varie tecniche di scansione. Si consiglia in generale di aggiornare alcune conoscenze sui protocolli di trasporto, ad esempio ricordando come la creazione di una connessione TCP funziona con la negoziazione in tre passaggi: in primo luogo, SYN tipo di chiamata dal client a una porta, PRIMA risposta se la porta è chiusa o SYN-ACK se è aperto, e l’ACK dal client al server per completare il processo. Nmap si baserà su questi tipi di messaggi per determinare se una porta è in ascolto o meno nella destinazione. A volte questo non può essere utilizzato, o viene rilevato dal server remoto, e ci sono altre alternative per la scansione.

Sintassi generale

nmap { }

La nostra prima scansione

Possiamo eseguire il seguente comando:

nmap 45.33.49.119

Non stiamo mettendo alcun tipo di sondaggio, quindi usa il sondaggio predefinito, TCP SYN. nmap invia un SYN e presuppone che la porta sia aperta se riceve un SYN ACN. Non esiste inoltre alcun parametro aggiuntivo di opzioni e come destinazione esiste un singolo IP. Questo comando ci darà un risultato simile al seguente:

Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-01 18:12 CESTNmap scan report for ack.nmap.org (45.33.49.119)Host is up (0.19s latency).Not shown: 993 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp70/tcp closed gopher80/tcp open http113/tcp closed ident443/tcp open https31337/tcp closed EliteNmap done: 1 IP address (1 host up) scanned in 10.86 seconds

Restituendo in pochi secondi un elenco di porte aperte su quell’IP, tra cui un SSH, un server di posta SMTP, un server Web e un possibile orifizio posteriore (https://www.speedguide.net/port.php?port=31337).

In molti casi, questo è semplicemente un primo punto di analisi anche se, ad esempio, il software dietro un server FTP, SSH, ecc., è completamente aggiornato e non ci sono vulnerabilità note. Si potrebbe iniziare, ad esempio, un attacco di forza bruta con un dizionario sul SSH o FTP cercando di accedere (ci sono un numero enorme di server di questo tipo con credenziali predefinite o non sicure).

Esistono strumenti automatici (bot) che fondamentalmente scansionano continuamente ampi intervalli di IP alla ricerca di porte aperte riconoscibili, ad esempio database (MongoDB, MySQL, PostgreSQL, ecc.), e quando rilevano una porta aperta, tentano automaticamente un accesso con credenziali predefinite. Ad esempio, nel caso di installazioni tipiche di LAMP / WAMP, un root / accesso alla porta MySQL. E fondamentalmente, un numero enorme di database è stato violato senza un precedente intervento umano. Questo è fattibile anche se lo abbiamo aperto in un’altra porta, poiché è possibile identificare in molti casi che ciò che è nella porta 5555 “per ingannare”, per dire qualcosa, è un MySQL attraverso l’impronta digitale del servizio, come vedremo più avanti.

In breve, è molto pericoloso lasciare le credenziali di default su server web, router, FTPs, SSH, database because perché nessuno ha bisogno di avere una mania, un bot lo farà.

Escanear ips con nmap

Un primo parametro

Se vogliamo avere alcune informazioni su come nmap ha ottenuto queste informazioni, siamo in grado di aumentare le tracce con l’opzione-v (verbose) o -vv parametro, dove possiamo vedere che nmap è stato il rilascio di SYN comandi e, in alcuni casi, la ricezione di RESET (porta chiusa ), in altri SYN-ACK (porta aperta) e in altri nessuna risposta (“filtrato”), il che ci può far capire che un firewall è fermare la nostra richiesta:

PORT STATE SERVICE REASON22/tcp open ssh syn-ack ttl 5325/tcp open smtp syn-ack ttl 5370/tcp closed gopher reset ttl 5280/tcp open http syn-ack ttl 53113/tcp closed ident reset ttl 52443/tcp open https syn-ack ttl 5331337/tcp closed Elite reset ttl 53

Aumentando la gamma di IP per la scansione

nmap 192.168.10.0/24 (subred completa)nmap 192.168.10.1-20 (20 IPs)nmap 192.168.10.*nmap 192.168.10.1 192.168.10.2 192.168.10.3

O, ad esempio, immagina di aver accumulato IP dalla nostra enumerazione iniziale e di avere un file con i diversi IP separati da schede o interruzioni di riga (un IP o intervallo per riga). Possiamo caricare il file con il parametro-IL (input list) e quindi scansionare l’intero inventario IP. Consente inoltre, ad esempio, di escludere alcuni IP specifici con –excludefile o –excludefile.

Definizione delle porte da scansionare

Possiamo definire manualmente le porte che vogliamo scansionare. Per esempio, se guardiamo per i server web sulla porta 80, 443 e 8080, in una sottorete, potremmo farlo con il parametro-p:

nmap -p 80,443,8080 192.168.10.0/24

Si può anche chiedere nmap per la scansione di “N” (intero) porte più comuni; Per esempio, per eseguire la scansione di 25 porte più comuni in un intervallo di ip:

nmap --top-ports 25 192.168.10.0/24

di Ricevere una risposta come questa:

PORT STATE SERVICE21/tcp closed ftp22/tcp open ssh23/tcp closed telnet25/tcp closed smtp53/tcp open domain80/tcp open http110/tcp closed pop3111/tcp open rpcbind135/tcp closed msrpc139/tcp open netbios-ssn143/tcp closed imap199/tcp closed smux443/tcp closed https445/tcp open microsoft-ds587/tcp closed submission993/tcp closed imaps995/tcp closed pop3s1025/tcp closed NFS-or-IIS1720/tcp closed h323q9311723/tcp closed pptp3306/tcp closed mysql3389/tcp closed ms-wbt-server5900/tcp open vnc8080/tcp closed http-proxy8888/tcp closed sun-answerbook

Ci si può chiedere che tutte le porte TCP, UDP e SCTP porte (più lento) con l’identificatore -p – essere acquisita:

nmap -p- 192.168.10.0/24

Identificazione di sistemi operativi e servizi

Come si vede, nmap che ci permette di rilevare le porte, che sono in ascolto su un IP o un intervallo. Più tardi vedremo anche come possono essere definite altre tecniche di indagine. Inoltre, nmap ci consente di cercare di identificare quale tecnologia (prodotto, versione, ecc.) è dietro una porta aperta, o anche il sistema operativo installato su un server, con i parametri-O e-sV. Questo rilevamento si basa sulla “firma” (impronta digitale) delle risposte che il servizio fornisce a determinate chiamate.

nmap -O -sV 192.168.10.5
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 6.7p1 Raspbian 5+deb8u3 (protocol 2.0)53/tcp open domain ISC BIND 9.9.5 (Raspbian Linux 8.0 (Jessie based))80/tcp open http Apache httpd 2.4.10 ((Raspbian))111/tcp open rpcbind 2-4 (RPC #100000)139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)4567/tcp open http Jetty 9.4.8.v201711215900/tcp open vnc RealVNC Enterprise 5.3 or later (protocol 5.0)MAC Address: B8:27:EB:CD:FE:89 (Raspberry Pi Foundation)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: Host: RASPBERRYPI; OS: Linux; CPE: cpe:/o:linux:linux_kernel

In questo caso, non solo sappiamo che questa macchina ha alcune porte aperte. Ci dice anche che è un Lampone che esegue Raspbian (con il quale, ad esempio, potremmo fare un test di forza bruta con un utente “pi”, che è l’utente predefinito), e le versioni delle diverse porte che sono in ascolto, in modo che queste informazioni possano essere utilizzate per sfruttare le vulnerabilità su versioni senza patch, ecc.

Utilizzo di più tecniche di polling

Per impostazione predefinita nmap utilizza SYN come tecnica di polling. È una tecnica veloce e non molto intrusiva / rilevabile, ma a volte, ma supporta un totale di 12 tecniche diverse che possiamo definire come parametri, come possiamo vedere nel manuale utente dello strumento.

Per esempio, se vogliamo fare una scansione UDP chiamate, siamo in grado di effettuare una chiamata del tipo:

nmap -sU 192.168.10.5

la Ricerca di vulnerabilità, con nmap

anche se ci sono più “comode” e strumenti specifici per la ricerca di vulnerabilità, come Nessus, o suite come Metasploit che consolida i vari strumenti, nmap, inoltre, permette di eseguire l’analisi della vulnerabilità.

Per fare ciò, utilizza una serie di script Lua che si trovano in un percorso della nostra macchina (nel caso di Kali, in / usr / share / nmap / scripts /) e che possono essere invocati con –script o il suo equivalente-sC .

Gli script possono appartenere a una o più categorie, quindi possiamo chiedere a nmap di valutare, ad esempio, tutti gli script di una categoria rispetto a un host. Ci sono alcune categorie particolarmente interessanti come ” vuln “(script dedicati al rilevamento delle vulnerabilità a destinazione),” exploit”, ecc.

Ad esempio, se si desidera eseguire la scansione degli script della categoria di vulnerabilità contro un host:

nmap --script vuln scanme.nmap.org
PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=scanme.nmap.org| Found the following possible CSRF vulnerabilities: | | Path: http://scanme.nmap.org:80/| Form id: cse-search-box-sidebar|_ Form action: https://nmap.org/search.html|http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /images/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)' | /shared/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)'| http-slowloris-check: | VULNERABLE:| Slowloris DOS attack| State: LIKELY VULNERABLE| IDs: CVE:CVE-2007-6750| Slowloris tries to keep many connections to the target web server open and hold them open as long as possible. It accomplishes this by opening connections to the target web server and sending a partial request. By doing so, it starves the http server's resources causing Denial Of Service.| Disclosure date: 2009-09-17| References:| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750|_ http://ha.ckers.org/slowloris/|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.9929/tcp open nping-echo31337/tcp open Elite

Come possiamo vedere, lo script ha rilevato una potenziale vulnerabilità basata sull’attacco denial of service Slowloris. Se analizziamo gli script che si trovano nel percorso sopra menzionato, vediamo che ce n’è proprio uno che sfrutta questa vulnerabilità, chiamato http-slowloris. Se vogliamo maggiori informazioni sullo script possiamo lanciare il seguente comando:

nmap --script-help http-slowloris

Spiegare come funziona lo script, come avviarlo (è anche possibile farlo con nmap stesso con-script e-script-args), ecc. Possiamo anche ottenere ad esempio una descrizione di tutti gli script che cercano vulnerabilità:

nmap --script-help vuln

Possiamo anche per esempio lanciare tutti gli script di un certo tipo. Ad esempio, se vogliamo eseguire la scansione di vulnerabilità su protocollo SMB su un determinato host:

nmap --script smb-* 192.168.10.5

Possiamo anche, ad esempio, valutare una vulnerabilità su tutta la nostra rete, scegliendo uno script specifico rispetto a un intervallo. Il parametro-script

nmap --script-help vuln
nmap --script

In breve, nmap include anche opzioni interessanti per valutare le vulnerabilità e persino lanciare exploit, anche se ci sono altri strumenti comunemente usati per questo scopo.

Empleada contectándose a la VPN para poder teletrabajar

Altre opzioni interessanti

Come abbiamo commentato, nmap ha molte opzioni ed è impossibile cercare di coprire anche una piccola percentuale in un post. In realtà, c’è un libro ufficiale nmap di quasi 500 pagine… Ma in ogni caso cerchiamo di commentare qui alcuni che sembrano interessanti.

Come abbiamo commentato, nmap ha molte opzioni ed è impossibile cercare di coprire anche una piccola percentuale in un post. In realtà, c’è un libro ufficiale nmap di quasi 500 pagine… Ma in ogni caso cerchiamo di commentare qui alcuni che sembrano interessanti.

  • Lo strumento consente di generare il risultato della scansione in un file di output processabile, ad esempio in formato XML, con-oX o-On.
  • Quando analizziamo ampi intervalli di IP, possiamo disabilitare il tentativo di risoluzione inversa DNS con il parametro-n.
  • Durante l’esecuzione di un comando possiamo aumentare il livello di informazioni visualizzate sulla console (verbosità) premendo il tasto “V”.
  • Se abbiamo un firewall che ci taglia, possiamo provare-Pn.

In breve, abbiamo cercato di sviluppare una “breve” introduzione a nmap come strumento per identificare porte e servizi aperti su un host o un intervallo di IP. Nei post successivi vedremo altri modi per rilevare le vulnerabilità.

Tutto pronto?

È il momento di gestire i documenti in modo più efficiente

Leave a Reply

Il tuo indirizzo email non sarà pubblicato.