Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
MIPS-CVE-2014-9222 — Vamos a divertirnos explorando el firmware de un router Zyxel y la arquitectura MIPS | Kitploit
Herramientas/GitHubGitHub/mercul1ninna/mips-cve-2014-9222
Seguridad de Sistemas EmbebidosAnálisis de VulnerabilidadesExplotaciónIngeniería InversaHacking de HardwareAnálisis de BinariosAprendizaje y EducaciónAnálisis de Firmware
GitHubmercul1ninna/mips-cve-2014-9222

MIPS-CVE-2014-9222

Vamos a divertirnos explorando el firmware de un router Zyxel y la arquitectura MIPS

Ver Repositorio
20hace 7 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Descargo de responsabilidad

Los tutoriales son solo con fines informativos y educativos. Creo que el hacking ético, la seguridad de la información y la ciberseguridad deberían ser temas familiares para cualquier persona que use información digital y computadoras. Creo que es imposible defenderse de los hackers sin saber cómo se hackea.

Requisitos

$ IDA Pro +7.0 (you can use Radar2 since IDA is quite expensive)
$ Router running Rompager 4.07 : there're immense number of them such as TP-Link TD-W8951*, ZyXEL P-660R, Billion BiPAC 51**/52**
$ UART to USB

La vulnerabilidad Misfortune Cookie existe desde hace tiempo, pero aún no hay un análisis público que ilustre los detalles técnicos de la vulnerabilidad. Según Check Point, el software afectado es el servidor web embebido RomPager de AllegroSoft. Los escaneos a nivel de Internet sugieren que RomPager es probablemente el software de servidor web más popular del mundo en cuanto al número de endpoints disponibles. RomPager suele estar integrado en el firmware que se distribuye con el dispositivo. Esta vulnerabilidad concreta se introdujo en la base de código en 2002. Además, los dispositivos expuestos son aquellos que utilizan servicios RomPager con versiones anteriores a la 4.34 (y específicamente la 4.07).

Para este tutorial usaré un ZXHN H108L que utiliza Rompager 4.07

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="ZXHN H108L"
Content-Type: text/html
Transfer-Encoding: chunked
Server: RomPager/4.07 UPnP/1.0
EXT:

Ahora usemos el puerto serie; primero debemos determinar la velocidad de baudios.

$ sudo stty -F /dev/ttyUSB0

Salida :

speed 115200 baud; line = 0;
-brkint -imaxbel

device

Yo uso minicom; puedes usar cualquier cosa, desde screen hasta HyperTerminal, pero prefiero este por su estabilidad ;)

Primero debes desactivar el Hardware Flow Control

$ sudo minicom -s
    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/modem                                |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                        |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Ahora estamos listos:

$ sudo minicom -D /dev/ttyUSB0 -b 115200
Bootbase Version: VTC_SPI1.26 |  2012/12/26 16:00:00    
RAM: Size = 8192 Kbytes
Found SPI Flash 2MiB GD25Q16 at 0xbfc00000
SPI Flash Quad Enable
Turn off Quad Mode

RAS Version: ZXHN H108LV4.0.0a_ZRQ_MA                                          
System   ID: $2.12.162.0(G94.BY.2)3.20.19.0| 2014/03/21   20140321_v006  | 2014 

Press any key to enter debug mode within 3 seconds.
..........

Para mostrar los comandos disponibles:

$ ATHE

======= Debug Command Listing =======
AT          just answer OK
ATHE          print help
ATBAx         change baudrate. 1:38.4k, 2:19.2k, 3:9.6k 4:57.6k 5:115.2k
ATENx,(y)     set BootExtension Debug Flag (y=password)
ATSE          show the seed of password generator
ATTI(h,m,s)   change system time to hour:min:sec or show current time
ATDA(y,m,d)   change system date to year/month/day or show current date
ATDS          dump RAS stack
ATDT          dump Boot Module Common Area
ATDUx,y       dump memory contents from address x for length y
ATRBx         display the  8-bit value of address x
ATRWx         display the 16-bit value of address x
ATRLx         display the 32-bit value of address x
ATGO(x)       run program at addr x or boot router
ATGR          boot router
ATGT          run Hardware Test Program
ATRTw,x,y(,z) RAM test level w, from address x to y (z iterations)
ATSH          dump manufacturer related data in ROM
ATDOx,y       download from address x for length y to PC via XMODEM
ATTD          download router configuration to PC via XMODEM
ATUR          upload router firmware to flash ROM

< press any key to continue >

Este firmware tiene un conjunto de comandos ocultos que son muy útiles para nuestro análisis dinámico; el problema es que no podemos ver los registros ni establecer puntos de interrupción, pero con suerte con estos comandos ocultos tendremos esas capacidades. Para verlos y usarlos necesitamos utilizar ATEN. Sin embargo, este comando requiere una contraseña, así que ¿qué podemos hacer ahora? Vamos a aplicar ingeniería inversa al firmware para encontrar el algoritmo del generador de contraseñas.

(Análisis estático) Veamos primero el archivo del firmware:

$ binwalk ras

binwalk1

$ dd if=ras of=rom1.lzma bs=1 skip=85043 count=66696
$ dd if=ras of=rom2.lzma bs=1 skip=350259 count=3350556
$ lzma -d <rom1.lzma> rom1
$ lzma -d <rom2.lzma> rom2

Veamos ahora la firma en los archivos extraídos:

$ binwalk -Y rom1
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             MIPS executable code, 32/64-bit, big endian, at least 1250 valid instructions

string es una gran herramienta para hacerte una idea de qué es un archivo binario o qué contiene; veamos si podemos encontrar el algoritmo de la contraseña:

$ strings rom1 | grep -i aten
$ strings rom2 | grep -i aten

Aparentemente no podemos verlo porque el firmware todavía está comprimido, lo que significa que debemos volcarlo desde el router usando el modo de depuración:

$ ATDO bfc00000, 1f0000

xmodem

Lo primero que viene a la mente es comenzar a buscar una tabla de despacho. ¿Por qué? Solo intuición; la única alternativa sería una serie de if-elif, pero sería un conjunto muy largo de ellas, para comprobar la validez de la contraseña proporcionada por el usuario. Y esto es lo que encontré:

ROM:800158A0 CmdTable:       .word unk_80015C20       # DATA XREF: sub_8000E3D8+4Co
ROM:800158A0                                          # sub_8000E3D8+90o ...
ROM:800158A4                 .word sub_8000E6D0
ROM:800158A8                 .byte    0
ROM:800158A9                 .byte    0
ROM:800158AA                 .byte    0
ROM:800158AB                 .byte    0
ROM:800158AC                 .word aJustAnswerOk      # "          just answer OK"
ROM:800158B0                 .word aAthe              # "ATHE"
ROM:800158B4                 .word CMD_SHOW_HELP_ATHE
ROM:800158B8                 .byte    0
ROM:800158B9                 .byte    0
ROM:800158BA                 .byte    0
ROM:800158BB                 .byte    0
ROM:800158BC                 .word aPrintHelp         # "          print help"
ROM:800158C0                 .word aAtba              # "ATBA"
ROM:800158C4                 .word CMD_ATBA
...
ROM:800158D0                 .word aAten              # "ATEN"
ROM:800158D4                 .word CMD_ATEN

Ten en cuenta que una palabra MIPS tiene 4 bytes; ahora veamos CMD_ATEN:

ROM:8000FF84                 lw      $a0, 8($s0)
ROM:8000FF88                 jal     sub_80013654
ROM:8000FF8C                 li      $a1, 0
ROM:8000FF90                 jal     passwd_generator

y ahora: passwd_generator

Descargar herramienta