Somos muy pocos profesionales que nos dedicamos a la Ciberseguridad y que nos apasiona este campo de la Ingeniería, y que desgraciadamente es tan desconocido que, a veces, hay que camuflarlo con otros conocimientos o directamente, ignorarlo.
Pero, ¿qué es la Ingeniería Inversa?
Es una disciplina que se encarga de averiguar cómo funcionan los dispositivos tecnológicos, a veces usando caminos impensables y no necesariamente los más adecuados.
Esta ciencia se emplea desde los tiempos de los romanos, en los que, cuando se hacían con barcos cartaginenses, los desmontaban pieza por pieza para así crear los suyos, mejorados.
Como tecnólogo, cuando imparto clase a los jóvenes me gusta explicarles en detalle cómo se construyen los distintos dispositivos que conforman las unidades didácticas de Tecnología, porque sabiendo su funcionamiento pueden llegar a imaginar cómo lo hacen en otros artefactos. Es más, la mayoría de los alumnos son capaces de desmontar lo que previamente se ha construido.
Pero, en informática, no es tan fácil cuando se trata de realizar Ingeniería Inversa sobre una aplicación. Se ha de conocer como mínimo un lenguaje de programación, para saber qué y como buscar: no es lo mismo localizar la pantalla de bienvenida de una aplicación que encontrar la ruta de acceso a un servidor en internet que facilita todos los datos necesarios para que la app funcione correctamente.
La Ingeniería Inversa es el patito feo de la Ciberseguridad porque, durante muchos años, el «crackeo» de aplicaciones era su destino principal, entrando en conflicto directamente con las leyes existentes sobre la propiedad intelectual y favoreciendo el empleo indiscriminado de aplicaciones de escritorio con su correspondiente parche de forma ilegal; con el auge de los expertos en Ciberseguridad, que hemos de tocar todas las areas de las que consta, se hace necesario conocer también las distintas técnicas y procedimientos existentes para llevar a cabo un «reversing» exitoso; es más, entre nosotros, tanto hackers, miembros de Red Teams, CISOs (Chief Information Security Officer), etc., solemos tener nuestra propia biblioteca de aplicaciones nocivas en discos duros desconectados de nuestros equipos que, cual zoológico, guardamos para posteriores investigaciones y aprendizajes: es la única forma que disponemos para preservar de futuros ataques a los equipos que hemos de proteger de intrusiones externas. Es más, cuando se profundiza en la Informática Forense, tarde o temprano se ha de realizar «Ingeniería Inversa» en aquellas aplicaciones que nos encontramos en los sistemas para conocer su funcionamiento real y el alcance de las mismas en los dispositivos tecnológicos.
Son muchas las personas que se me acercan porque quieren profundizar en el ámbito de la Ciberseguridad, pero claro, no hay una ruta fija ni un plan trazado y, aunque la mayoría saben a la perfección que nunca dejarán de aprender, se podría establecer la siguiente guía:
1. Aprender a programar.
Hoy día, Python es un lenguaje interpretado muy potente que casi no cuesta; yo empezaría por él; y luego seguiría con .NET (C# por su versatilidad), pasando por C nativo. Luego, cuantos más lenguajes toques y aprendas, mejor (hace muchísimo tiempo que aprendí Delphi y en 2018 tuve que realizar una aplicación en él, y me sorprendió que fuera multiplataforma: Windows, Linux, Android, IOs… con una facilidad alucinante).
2. Conocimiento del hardware.
no sólo el existente, sino también el que ha existido, y a ser posible, conocer también su funcionamiento, sus fallos, su evolución y mejoras futuras. Aquí se incluye el conocimiento esencial en electrónica y electricidad.
3. Conocimiento del software.
El campo que se abre en esta opción es enorme, ya que no se puede dejar atrás el pasado (todavía siguen existiendo equipos con Windows XP), y son varias las plataformas: Windows, Linux, Mac (aunque éste sea un tuneo de Linux, tiene sus propias peculiaridades también), y cuantas más versiones llegues a conocer, más soltura tendrás.
4. Telecomunicaciones.
Redes de todo tipo, Lan (cableadas), Wifi (inalámbricas), Radio, etc. Transmisión de señales, etc.
5. Legislación.
No está de más conocer las Leyes que nos afectan a la hora de interactuar con las demás personas que existen en el ciberespacio, lo que se puede hacer y lo que no, el RGPD (Reglamento General de Protección de Datos); y aunque no es considerada una ley, aprender las nociones básicas sobre NETiqueta (comportamiento en las distintas redes sociales), siempre será un conocimiento bienvenido.
6. Ingeniería Inversa.
Herramientas y empleo de descompiladores, desensambladores, etc. Lo mejor que hay es utilizar las aplicaciones que has aprendido a programar y realizar estudios de ingeniería inversa sobre llas, para ver lo que obtienes y si se puede, de alguna manera, blindar u obtener todo el código fuente.
7. Psicología e Ingeniería Social.
Técnicas y tendencias, obtención de información, recursos.
8. Ciberinteligencia.
Conocimiento del ciclo de inteligencia y sus métodos de obtención de información.
9. Filosofía, Historia, Geografía, Medicina…
Si eres «de ciencias» algunas te costarán más que otras, pero resulta imprescindible conocer qué guia al ser humano a realizar lo que hace, sus objetivos, sus raíces, cuánto aguanta nuestro cuerpo determinadas condiciones, etc. Pero si eres «de letras», tendrás más facilidad aprendiendo las de tu sector pero las demás no las puedes dejar de lado.
10. Resto de tecnologías.
IoT, Blockchain, IA, Cloud… Todas son susceptibles de aprender pero, si no se tiene la base que los puntos anteriores te facilitan, puede resultar más problemático de asimilarlas.
Cuantas más reuniones, congresos, CONs y demás eventos de la comunidad ciber puedas asistir, y por supuesto, utilizar las redes sociales donde nos movemos todos, para añadir conocimiento y ahorrarte unos cuantos disgustos de aprendizaje, es algo altamente recomendable, así como emplear el networking que viene de serie en este mundillo, te abrirá las puertas tanto del conocimiento como de personas altamente cualificadas.