¿Qué es la ingeniería inversa?
La ingeniería inversa es el acto de desarmar un objeto o un sistema para conocer al detalle cómo funciona. La ingeniería inversa se aplica principalmente para analizar y obtener todos los conocimientos sobre la forma en que funciona algo. Se usa para muchas cosas, para reparar, como proyecto de investigación y para copiar o mejorar el objeto. Existen muchos objetos que pueden someterse a ingeniería inversa, incluido el software, las máquinas, los sistemas computacionales, la tecnología militar e incluso las funciones biológicas relacionadas con el funcionamiento de los genes.
La práctica de la ingeniería inversa, tal como se aplica al hardware y al software de las computadoras, se replica de industrias más antiguas. La ingeniería inversa de software se centra en el código de máquina de un programa: la cadena de 0 y 1 que se envía al procesador lógico. Las declaraciones del lenguaje del programa se utilizan para convertir el código de máquina en el código fuente original.
Dependiendo de la tecnología, el conocimiento obtenido durante la ingeniería inversa se puede utilizar para reutilizar objetos obsoletos, realizar un análisis de seguridad, obtener una ventaja competitiva o simplemente enseñar a alguien cómo funciona algo. No importa cómo se use el conocimiento o con qué se relacione; la ingeniería inversa es el proceso de obtener ese conocimiento a partir de saber cómo se fabricó un objeto terminado.
¿Cuál es el propósito de la ingeniería inversa?
El propósito de la ingeniería inversa es descubrir cómo funciona un objeto o sistema. Hay una variedad de razones para hacer esto. La ingeniería inversa se puede utilizar para aprender cómo funciona algo y reproducir el objeto o fabricar un objeto similar con mejoras adicionales.
A menudo, el objetivo del software o hardware de ingeniería inversa es encontrar una manera de crear un producto similar de forma más económica o porque el producto original ya no está disponible. La ingeniería inversa en la tecnología de la información también se utiliza para abordar problemas de compatibilidad y hacer que el hardware o el software funcionen con otro hardware, software o sistemas operativos con los que originalmente no era compatible.
El software Logic Pro de Apple, que permite a los músicos componer, grabar, arreglar, editar y mezclar música, es un buen ejemplo. Logic Pro solo está disponible para dispositivos Mac y es relativamente caro. El programa tiene varios instrumentos digitales patentados. Con un poco de investigación, un programador podría aplicar ingeniería inversa a esos instrumentos digitales, descubrir cómo funcionan y personalizarlos para usarlos en Logic Pro o hacerlos interoperables con otro software de música que sea compatible con Windows.
Ejemplos de ingeniería inversa
La ingeniería inversa varía según a qué se aplica y el propósito de la ingeniería inversa de la tecnología. Los ejemplos comunes de ingenería inversa son:
Ingeniería inversa en el software
Hay varios casos en los que se utiliza la ingeniería inversa para desmontar el software. Un ejemplo común es adaptar un programa escrito para usar con un microprocesador a otro. Otros ejemplos incluyen la reconstrucción del código fuente perdido, el estudio de cómo un programa realiza ciertas operaciones, la mejora del rendimiento y la reparación de errores o la corrección de errores cuando el código fuente no está disponible.
Un ejemplo es Phoenix, una empresa de software estadounidense que creó el software del sistema básico de entrada/salida (BIOS) que era compatible con la versión propietaria de IBM. Para hacer esto, Phoenix realizó ingeniería inversa de la versión de IBM de una manera que los protegió de los cargos por derechos de autor, al registrar los pasos que siguió y no hacer referencia al código propietario.
El malware es otra área en la que se utiliza la ingeniería inversa de software. Los actores de amenazas a menudo usan la ofuscación del código de software para evitar que su código malicioso sea descubierto o entendido. Los propietarios de software o sistemas infectados pueden utilizar la ingeniería inversa para identificar contenido malicioso, como un virus. La Agencia de Inteligencia de Defensa de EE. UU. ha dicho que tenía la intención de utilizar estas técnicas para aplicar ingeniería inversa al malware enemigo para crear sus propias armas cibernéticas ofensivas. Hay herramientas disponibles para ayudar en la ingeniería inversa de malware, como el software Ghidra de la Agencia de Seguridad Nacional, que se utiliza para realizar ingeniería inversa del malware WannaCry, por ejemplo.
El Proyecto ReactOS es probablemente el más impresionante ejemplo de ingeniería inversa en software. Es una réplica del sistema operativo Windows, construído mediante ingeniería inversa depura archivos binarios de Windows y luego codificación a partir de la especificación resultante. No solo puede poner en marcha ejecutables de Windows, sino que también ofrece un código fuente que brinda la mejor información sobre las funciones internas de Windows.
Ingeniería inversa de las partes de una computadora
Si un fabricante de procesadores quiere ver cómo funciona el procesador de un competidor, puede comprar el procesador de un competidor, aplicarle ingeniería inversa y luego usar lo que aprende para hacer su propio procesador. Este proceso es ilegal en muchos países, requiere mucha experiencia y es costoso. La ingeniería inversa se utiliza a menudo para crear piezas de repuesto cuando las piezas originales de los equipos heredados ya no están disponibles. También se realiza ingeniería inversa de partes de computadoras para mejorar la seguridad. Por ejemplo, Project Zero de Google identificó vulnerabilidades en microprocesadores mediante ingeniería inversa.
Ingeniería inversa en evaluaciones de seguridad de la red
Las empresas que realizan evaluaciones de seguridad de la red también utilizan la ingeniería inversa como una de sus herramientas. Dividen su grupo de seguridad en dos equipos. Un equipo simula ataques y el otro equipo monitorea la red y aplica ingeniería inversa a los ataques del otro equipo. La información obtenida de estos ataques simulados se utiliza para fortalecer la red corporativa.
Se dice que muchas empresas europeas como la automotriz alemana BMW y otras se niegan a instalar una filial en China porque los chinos les hacen ingeniería inversa a sus productos. Justamente esto ha ocurrido con infinidad de productos occidentales como teléfonos móviles, dispositivos, máquinas, aparatos que fueron adquiridas por los chinos para hacerles ingenería inversa, copiarlos y fabricarlos para venderlos a un menor precio que en Europa o Estados Unidos. En China pueden vender productos más baratos copiados íntegramente de los occidentales porque no han invertido en investigación y desarrollo durante años. Lo que en todo slos países occidentales está prohibido y es competencia desleal o directamente robo de datos o explotación del know how sin consetimiento de quien patentó el producto. Justamente las marcas alemanas como BMW que llevan años de investigación para lanzar un diseño nuevo al mercado no les hace gracia que les copien el fruto de su inversión y conocimiento. Precisamente las leyes en China contra el plagio, la protección de patentes de invención, etc. prácticamente no existen por cuanto se complica interponer una demanda en ese país para las gandes empresas de desarrollo de productos de alto valor agregado.