Cabecera blog ciberseguridad

Del Ramp Tramp al Doom, 6 cosas que debes saber sobre ingeniería inversa

La ingeniería inversa nació como disciplina en el segundo tercio del siglo XX

Definir las bases de la ingeniería inversa es un reto seguramente tan complejo como el ejercicio de la disciplina en sí. Este artículo repasa algunas de las cuestiones clave, como aplicaciones, la importancia del factor humano, herramientas…

Uno de los grandes hitos de la ingeniería inversa del siglo XX tuvo su origen en una casualidad. Así es el destino: caprichoso. Cuando Howard Jarrell se encontró en medio de aquellas nubes sin radio y con problemas en los equipos eléctricos de su bombardero B-29, el capitán del Ejército estadounidense empezó a sudar tembloroso.

Iba a tener que aterrizar en el aeródromo de Uglovoye. Cerca de Vladivostok, una base de la Marina soviética.

Aquel día de 1944, Stalin vio la luz.

El líder soviético llevaba años obsesionado con conseguir un superbombardero como el que tenían los americanos. Incluso le había planteado a Washington la posibilidad de hacerse con varios. Siempre sin éxito.

El aterrizaje forzoso de Jarrell, que retornaba de una misión en Manchuria, precipitó una de las grandes operaciones de ingeniería inversa de la Segunda Guerra Mundial.

Científicos rusos desmontaron hasta el último tornillo de aquel avión, bautizado en EE.UU. como Ramp Tramp, para replicar una aeronave que marcaría la diferencia en el bloque oriental.

Solo dos años después, la Unión Soviética ponía en acción el primer bombardero TU-4.

Desde entonces hasta hoy, la ingeniería inversa se ha convertido en un campo de conocimiento clave. Una disciplina en permanente evolución llamada a jugar un papel clave en la era tecnológica por la que transitamos.

Estas son, así pues, seis cuestiones clave que deberías tener en cuenta para entender el fenómeno.

Y como no hay nada mejor que empezar por el principio, centrémonos en la más simple de las cuestiones que orbitan alrededor de esta actividad.

¿Qué es la ingeniería inversa?

Sobre el papel, la definición es bastante sencilla de entender. La ingeniería inversa es un proceso de búsqueda. Un viaje para desentrañar los principios tecnológicos de un objeto, herramienta, dispositivo o sistema partiendo de un razonamiento abductivo.

Conjeturando, vamos, sobre el funcionamiento del elemento a estudiar, su estructura…

La disciplina se divide hoy principalmente en dos caminos: ingeniería inversa de software, por un lado, y de hardware, por otro.

La primera tiene como objeto hacerse con el código fuente de un programa para modificarlo o simplemente analizarlo.

Un ejemplo orientado a fallos de seguridad consiste en modificar un programa o abusar de sus funcionalidades o fallos de diseño después de someterlo a ingeniería inversa para que haga cosas diferentes, o para incrustar un parche que evite un fallo.

Para ello, el investigador trabajará en un software codificado en lenguaje máquina hasta llegar al código fuente.

Por su parte, la ingeniería inversa de hardware parte del mismo principio pero con otra operativa.

En su caso, el desmontaje del dispositivo para entender cómo funciona. Cuáles son los mecanismos y conocimientos que le permiten cumplir su misión.

Algo así como lo que hicieron los ingenieros rusos con el Ramp Tramp, en definitiva.

¿Cuáles son sus aplicaciones?

Explica Miguel Tarascó, cofundador de Tarlogic Security y responsable del Departamento de Desarrollo, que las aplicaciones de la ingeniería inversa son fundamentalmente tres:

· Identificar las vulnerabilidades de un dispositivo o de un software.

· Extender las capacidades de ese programa o gagdet sometido a análisis.

· Copiar la tecnología para hacer un uso comercial o de otro tipo.

Es esta última una aplicación que ha situado a la disciplina en el terreno de las arenas movedizas en múltiples ocasiones.

Los casos de espionaje y la vulneración de las normativas de copyright han sembrado dudas sobre las prácticas de algunas compañías en el ámbito de la ingeniería inversa. Copiar siempre ha sido más barato que innovar, ya saben.

Una película muy entretenida e ilustrativa sobre esto es Paycheck. En la misma, un talentoso ingeniero es contratado para hacer ingeniería inversa sobre dispositivos y, tras cada trabajo, le borran la memoria.

¿Con qué objetivo? Por un lado, para eliminar posibles problemas legales. Y, por otro, para evitar que sucumbiese a la tentación de quedarse con el kno- how de la tecnología que desarrollaba.

Pero más allá de las prácticas de dudosa ética empresarial, lo cierto es que la ingeniería inversa también se ha convertido en una poderosa herramienta para proteger a toda clase de compañías.

El equipo de Theat Hunting de BlackArrow, sin ir más lejos, ha dedicado muchas horas de trabajo a desentrañar el funcionamiento de códigos maliciosos que sembraban el caos al penetrar en los sistemas de las empresas.

Neutralizar ransomware apoyándose en la ingeniería inversa de software es solo una de sus múltiples aplicaciones.

Una de las inestimables contribuciones que esta disciplina está llamada a aportar a la sociedad y la economía global en plena revolución tecnológica.

¿Qué debo estudiar si quiero dedicarme a la ingeniería inversa?

Definir los estudios reglados que mejor se adaptan a la ingeniería inversa no es fácil por la complejidad de este campo. Ingenierías como las de Telecomunicaciones, Electrónica, Informática o incluso Físicas aportan conocimientos muy valiosos.

Pero quizás por encima de la carrera elegida, el elemento más importante de la ecuación sea la pasión.

Si hay un denominador común entre los profesionales que se dedican a la ingeniería inversa, ese quizás sea una curiosidad desbordante.

Y una vocación decidida de pelear contra la máquina/código. «Es un trabajo muy duro –advierte Miguel Tarascó-. Le tienes que dedicar mucho tiempo personal».

Un buen punto de partida para todos aquellos que quieran sumergirse en esta actividad es uno de los retos más recurrentes entre los profesionales del sector: cargar Doom en los dispositivos más insólitos.

El popular videojuego creado a comienzos de los años 90 ha acabado en algunos de los gadgets más inesperados por la obstinación de unos cuantos locos por la ingeniería inversa. Una impresora Canon, una calculadora TI-Nspire, un iPod Nano… hasta en un cajero automático.

A finales del año pasado saltaba a la luz pública quizás el caso más insólito de todos. Un apasionado por este campo lograba cargar Doom en un test de embarazo de la marca ClearBlue. Ver para creer…

¿Cuáles son los lenguajes de programación imprescindibles en esta disciplina?

El punto de partida es Ensamblador para las diferentes arquitecturas hardware, el lenguaje usado para escribir programas de bajo nivel. Se trata de una competencia indispensable si uno quiere dedicarse a la ingeniería inversa.

En función del campo que se quiera elegir (software o hardware), el potencial investigador deberá adquirir los conocimientos específicos para cada una de las arquitecturas.

Con esta base adquirida, aparecen otros lenguajes de programación cuyo dominio resulta de gran utilidad. En el campo del Internet of Things (IoT), lo propio es dominar C o C++ porque la mayoría de estos dispositivos están programados con esta herramienta.

Si la especialización orbita hacia la ingeniería de software, la opción quizás más adecuada sea controlar Python. ¿Por qué? Básicamente porque hay un gran número de herramientas escritas en este lenguaje.

Y porque además ese dominio permitirá al usuario desarrollar y estandarizar sus propias herramientas de trabajo.

Cierto es en todo caso que Python tiene tantos partidarios como detractores. Muy especialmente entre aquellos que operan en el mundo del pentesting.

La ingeniería inversa exige mucho esfuerzo y dedicación

¿Es posible encontrar un paquete de herramientas útiles para adentrarse en este mundo?

Son muchas las soluciones disponibles en el mercado. En función del camino que se haya escogido, habrá que decantarse por unas u otras, tanto herramientas comerciales como frameworks opensource como r2 (radare).
Estas son algunas de las más populares:

  1. Ingeniería inversa de software:

    · Desensambladores: Ida Pro, Radare, Ghidra, Binary Ninja.

    · Depuradores: WinDbg, OllyDbg, Api Monitor.

    · Editor hexadecimal: HxD, WinHex, 010Editor…
  2. Ingeniería inversa de hardware:

    · Binwalk , FACT

    · Analizadores lógicos. Se trata de un dispositivo hardware que incorpora un software.

    · JtagEnum o JTAGulator.

    · Convertidor USB-UART, Interfaz Serial/TTL a USB.

    · Analizadores visuales de binarios: Vix, o binvis.
  3. Si lo que se pretende es analizar el tráfico de red de los dispositivos…

    · Acrylic Wi-Fi Sniffer.

    · Wireshark.

¿Tiene importancia el factor humano?

Sostiene Miguel Tarascó que el factor humano es el activo central de esta disciplina. Al contrario de lo que pudiera parecer desde la distancia, la tecnología no lo es todo en la ingeniería inversa.

«El factor humano es el 90 % -argumenta Miguel- porque tiene que haber un razonamiento detrás. Tú puedes enfrentarte a un malware o un ransomware, por ejemplo, pero las herramientas con las que vas a trabajar no son mágicas».

Será el investigador, la persona, la que descubra los secretos del software o del dispositivo. El que revierta la ingeniería hasta alcanzar su objetivo.

«En el tema del hardware hacking puedes encontrar mil páginas con tutoriales y consejos de herramientas tecnológicas, pero la mayoría de las veces no queda otra que pelearse, leer toda la documentación y darle mil vueltas a la cabeza hasta encontrar la solución», concluye Miguel.

O dicho de otro modo, lo que de verdad funciona en esta disciplina es ese viejo aforismo que hablaba de la mente sobre la materia. ¿Recuerdan? Aunque la materia pueda incluso llegar a ser virtual…

Descubre nuestro trabajo y nuestros servicios de ciberseguridad en www.tarlogic.com/es/

En TarlogicTeo y en TarlogicMadrid.