Chatterbox

Publicado: 10 de Junio de 2025 Autor: Josรฉ Miguel Romero aKa x3m1Sec Dificultad: โญ Medium

๐Ÿ“ Descripciรณn

Chatterbox es una mรกquina de dificultad media que ejecuta Windows 7 Professional. El punto de entrada inicial se realiza a travรฉs de un Buffer Overflow en el servicio AChat, una aplicaciรณn de chat que se ejecuta en los puertos 9255 y 9256. Despuรฉs de obtener acceso inicial como el usuario Alfred, la escalada de privilegios se logra mediante credenciales hardcodeadas encontradas en el registro de Windows, especรญficamente en las claves de Winlogon que almacenan contraseรฑas de AutoLogon en texto plano.

La mรกquina tambiรฉn presenta una configuraciรณn incorrecta de permisos ACL que permite al usuario Alfred acceder directamente al archivo root.txt sin necesidad de escalada completa de privilegios, aunque se demuestra la escalada completa a Administrator utilizando las credenciales encontradas.

๐ŸŽฏ Objetivos

  • User Flag: Obtener acceso inicial y capturar la flag del usuario

  • Root Flag: Escalar privilegios a Administrator y obtener la flag final

  • Skills: Buffer Overflow, Windows Registry Enumeration, ACL Misconfiguration

๐Ÿ”ญ Reconocimiento

Ping para verificaciรณn en base a TTL

๐Ÿ’ก Nota: El TTL cercano a 128 sugiere que probablemente sea una mรกquina Windows.

Escaneo de puertos

Enumeraciรณn de servicios


445 TCP - SMB

Aunque la sesiรณn anรณnima estรก habilitada, no disponemos de permisos para leer ninguno de los recursos compartidos en la mรกquina sin credenciales:

9256 TCP (aChat)

Bรบsqueda de exploits

Buscamos exploits pรบblicos para esta herramienta y encontramos una explotaciรณn de un Buffer Overflow en dos variantes, un script en python y otro para metasploit

๐Ÿ’ฅ Explotaciรณn Inicial

Me decanto por no usar metasploit para esta mรกquina, asรญ que despuรฉs de descargar la versiรณn en python, procedo a generar el shellcode usando en este casi un payload de tipo windows/shell_reverse_tcp:

Generaciรณn de shellcode

Una vez generado, reemplazo el shellcode y la direcciรณn de la mรกquina vรญctima en el script en python quedando de esta forma:

A continuaciรณn inicio un listener usando rlwrap y netcat y obtengo la reverse shell:

๐Ÿ” Enumeraciรณn Post-Explotaciรณn

Una vez dentro de la mรกquina chatterbox obtengo la primera flag en el directorio del usuario Alfred:

Enumeramos como usario Alfred el directorio Administrator de la mรกquina y vemos que Alfred puede leer incluso el contenido del directorio Desktop. Esto puede ser interesante.

Una simple comprobaciรณn con la herramienta icacls nos indica que esto es debido a que Alfred tiene permisos full "F" sobre dicho directorio

Una cosa que podemos probar aquรญ es a asignar permisos a ese directorio para el usuario Alfred usando icacls de la siguiente forma:

Y obtenemos la flag root.txt como usuario Alfred.

๐ŸŽช Escalada de Privilegios Alternativa

Aunque hemos obtenido la flag root.txt en este caso por una mala definiciรณn de los permisos acls sobre el fichero root.txt, buscaremos escalar privilegios como usuario Administrador. Para ello enumeramos la mรกquina en busca de un posible vector:

No descubrimos tampoco aplicaciones instaladas que puedan ser intereasntes, asรญ qeu Transferimos winpeas.bat al host de windows para automatizar un poco esta fase. Para ello iniciamos un servidor web en python y lo decargamos en el directorio de Alfred usando la herramienta certutil:

Una vez ejecutado winpeas sobre la mรกquina chatterbox, obtenemos una contraseรฑa mediante la consulta de la clave de registro:

El script winpeas obtiene esta informaciรณn consultado la siguiente clave del registro:

Usamos netexec para verificar estas credenciales con el puerto SMB de la mรกquina:

Verificamos que se estรก aplicando una mala praxis a la hora de reutilizar contraseรฑas y esta contraseรฑa tambiรฉn es vรกlida para la cuenta del usuario Administrator:

Ademรกs, verificamos que el usuario Administrator tiene acceso de escritura en algunos recursos compartidos, por lo que podemos usar la herramienta impacket-psexec para autenticarnos en el host usando el puerto 445 del servicio SMB y ganar acceso con mรกximos privilegios.

Last updated