3

Bugtraq Cyber Game – Write up

Este post decidí escribirlo en español, así que ahí vamos.

Recientemente participé en el Bugtraq Cyber Gameeste CTF que consistía en 13 retos se dividía en 6 categorías:

  • Web
  • Esteganografia
  • BruteForce
  • Phreaking
  • Criptografía
  • Cracking
  • Y un nivel Extra

bugtraq

De los 13 pude resolver 10, siendo así Cripto2, Stegano2 y Cracking2 los que no pude resolver.

Web 1 Continue Reading

8

Extracting NTDS.dit from a live Domain Controller “The easy way”

Neobits.org is back in the game (read more about), and for my first post in this new neobits.org era, I want to share a simple technique I used last week.

This month, has been so amazing for me:

  • I got my “The Art of Memory Forensics” book.
  • I recovered Neobits.org.
  • Was my 22nd Birthday u.u
  • I officially completed my first pentest for a company.

First of all, I want to thank my friend @Dash for the guidelines, advices, tips and by mentoring me during my first pentest, It has been an amazing experience, and I liked a lot. You are as our security folks named you: “The Messi from hacking in Aztec land”.

During this pentest we were able to hack all of our targets, including the Domain Controller (DC) =) but… now what?

Let’s get this precious file… NTDS.dit. For the readers who don’t know what this file is used for, let me tell you that in this file are contained all the password hashes of the users at the Domain Controller.

Continue Reading

0

WriteUp Binary 100 – CTF 19 Quals DefCon (Step by Step)

Ahora es el turno de Binary100 para la resolución del CTF Quals DefCon 19.

Este reto en especial es el primero de este tipo que hago en toda mi vida y aunque llegue a la ultima parte, no lo valide por que con tanta confusión no vi que la respuesta estaba enfrente de mi :/ Seguro ya sera para la próxima =)

Pero por ahora lo importante es que con mis métodos arcaicos lo pude resolver y ahora aquí les muestro mi manera LARGA y DIFÍCIL de Resolverlo. Nos proveen del archivo b100_6817e51fa3b60f176b56

Primeramente Lo identificamos y vemos que es un ELF 32-bit (osea tenemos un ejecutable de linux) Al ejecutarlo vemos que nos devuelve algo extraño ( ./b100_6817e51fa3b60f176b56 [1-11|all] )

Obviamente como todos se dieron cuenta el programa nos esta sugiriendo que le pasemos argumentos [1-11] del 1 al 11. Al pasarle un argumento nos imprimía unas caras en arte ascii


Dos cosas a notar aquí son:

  1. Los caracteres que se usan aquí son los que curiosamente comprende BASE64 (excepto los “@” y ” ” que eran los caracteres basura que pusieron en el reto)
  2. Para cada argumento cambian


Así que ya sabemos que hacer ¿no? Hay que obtener esas cadenas de Base64 de los 11 argumentos y decodificarlos. Así que yo lo hice de esta manera:

./b100_6817e51fa3b60f176b56 for((i=1;i<=11;i++));do !!  $i | sed ‘s/@//g;s/ //g’ > $i.hex; done

Primeramente ejecuto el programa, luego recursivamente hago 11 veces la ejecución del ultimo comando y de una vez elimino los caracteres “@” y “\x20” (espacios) Y como veremos tenemos de una, los 11 archivos y vean que si son diferentes 😉


Pero se me paso eliminar los saltos de linea, así que los eliminare con “tr” y de una vez decodifico  y doy salida a los archivos nuevos y vemos que son :)

for i in $(ls *.hex);do cat $i | tr -d “\n” | base64 -d > $i.b64 ;done file *.b64


Vemos que son 11 .gz con un bin2-[a-k] primero renombrados todo a extensión .gz y después descomprimimos todo y vemos que son 😉

for ((i=1;i<=11;i++));do mv $i.hex.b64 $i.gz;done ls gunzip *.gz ls file {1,2,3,4,5,6,7,8,9,10,11}


Bonito!!! Tenemos un 7zip y 10 archivos de pura “data”, yo al intentar descomprimir el 7zip me dio error. Entonces recordé que cuando vi los gzip decía algo como bin2[a-k] Así que era claro ¿no?.

Había que juntarlos para formar el 7zip y descomprimir =) y tendriamos un binario2 de seguro…

cat 1 2 3 4 5 6 7 8 9 10 11 > bin2.7z 7z e bin2.7z file bin2


PERFECTO!!! ya tenemos bin2….y Adivinen que?? APENAS COMIENZA LA PESADILLA Si ejecutábamos ./bin2 nos da nada mas arte ascii con base64, así que limpiábamos y todo:

./bin2 | sed ‘s/ //g;s/@//g’|tr -d “\n”|base64 -d

Solo nos lleva a un callejón sin salida que dice “S0 S0RRY 41NT NUTH1N BUT 4 P34NUT” múltiples veces   En esta parte entra mi querido parce @Phicardo que me ayudo, aconsejo, guió y enseño pacientemente a iniciarme al “debugging” (recuerden que es la primera vez que hago esto :/ ) Así que después de que me explicara, y me quedara pensando mucho, esto fue lo que hice.. Hice uso de “objdump -s” y encontré una cadena curiosa “h3rr0m3y3n4m31zbr0br0gan


Y como me enseño Phicar, estuve viendo el dump en asm y después de mucho tiempo y explicaciones vi que esa cadena se debia pasar como argumento por los cmp que habían y que comparaban con el argumento 2, y veía comparaban una cadena (strcmp) y un condicional (jne) si pasaba algo imprimía “3 Face”.
Después de esto se me ocurrió que la cadena h3rr0m3y3n4m31zbr0br0gan estaba bien involucrada…Así que le pase a bin2 el argumento h3rr0m3y3n4m31zbr0br0gan. Pero nada, recuerdan la comparacion? Contra que cadena va a comparar…Entonces la solución fue renombrar bin2 a h3rr0m3y3n4m31zbr0br0gan y pasarle de argumento h3rr0m3y3n4m31zbr0br0gan y VOILA!!! Ya salia algo diferente…MAS base64 en arte ascii…

mv bin2 h3rr0m3y3n4m31zbr0br0gan ./h3rr0m3y3n4m31zbr0br0gan h3rr0m3y3n4m31zbr0br0gan


Limpiamos como anteriormente lo hemos hecho y damos salida para obtener “file” y vemos que es.

./h3rr0m3y3n4m31zbr0br0gan h3rr0m3y3n4m31zbr0br0gan | sed ‘s/@//g; s/ //g’|tr -d “\n”|base64 -d > file file file


<—A partir de esta parte todo va en texto porque es Mucho comando como para ir ilustrando—>

mv file file.gz gunzip file.gz file file >lzop compressed data – version 1.030, LZO1X-999, os: Unix sudo aptitude install lzop lzop -x file >bin3 file bin3 >bin3: compressd data 16 bits mv bin3 bin3.z uncompress bin3.z file bin3 >gzip compressed data mv bin3 bin3.gz gunzip bin3.gz file bin3 >ARC archive data sudo aptitude install arc mv bin3 bin3.arc arc x bin3.arc file bin3 >xz compressed data mv bin3 bin3.xz xz -d bin3.xz file bin3 >rzip compressed data mv bin3 bin3.rz rzip -d bin3.rz file bin3 >gzip compressed data mv bin3 bin3.gz gunzip bin3.gz file bin3 >POSIX tar archive (GNU) tar -xf bin3 file bin3 >lzop compressed data mv bin3 bin3.lzop lzop -x bin3.lzop file bin3 >bzip2 compressed data mv bin3 bin3.bz bunzip2 bin3.bz file bin3 >7-zip archive data mv bin3 bin3.7z 7z e bin3.7z file bin3 >ARJ archive data sudo aptitude install arj mv bin3 bin3.arj arj x bin3.arj >Extracting bin3-a OK >Extracting bin3-b OK >Extracting bin3-c OK file bin3-* >bin3-a: ELF 32-bit >bin3-b: data >bin3-b: data cat bin3-a bin3-b bin3-c > bin3 chmod +x bin3

Ejemplo de esta ODISEA:


Despues de esto, YA TENEMOS bin3…Lo ejecutamos  y….¿TENEMOS LA CLAVE? Nooo, parece que si lo volvemos a ejecutar vemos que tiene un random en strings :'(


Entonces me decido a sacar todas esas cadenas…y por alguna razon me decido hacerlo con “objdump” (la razon esque phicar apenas un dia anterior me enseño este programa, y lo use en vez de hacerle primero lo que yo haria….strings)

objdump -s bin3 > out.txt

Todas esas cadenas las pueden ver aqui en pastebin Ninguna de Estas era la clave y aqui me quede atorado y no pude validar el reto…Sin darme cuenta que ya lo tenia todo…Me faltaba nada mas hacer unstring y ver al final. Y ahi nos salia la clave.


FLAG: Where we’re going we don’t need… roads. Bueno esto es todo pero antes dos Agradecimentos. Primero para Phicar, muchas gracias por su guia en la parte de debugging que me atore y por su paciencia =) Y Segundo para HaDeS por hacerme notar al final que era tan facil como con un strings =P   Perdonen la longitud del post para algo tan sencillo, simplemente soy un mexicano de 18 años emocionado por su primer CTF DefCon y haber resuelto 2 retos =) Cualquier comentario Bienvenido =) Saludos 😉

Atte. hecky

hecky@neobits.org

Sigueme en twitter: http://twitter.com/hecky

Uncategorized