La primera parte de esta serie va dedicada a una
introducción de lo que es la Ingeniería Inversa o cracking que es como
comúnmente se le conoce.
Voy a tratar de darles una idea general de lo que abarca
el cracking tratando de hacerlo interesante, ya que si somos nuevos en esta
rama de la seguridad informática y nunca hemos oído hablar de desensambladores,
debuggers o depuradores, packers, cryptografia md5, crc32, sha1, etc. Podríamos
desesperarnos e incluso darnos por vencidos. Asi que empecemos…
¿Qué es el cracking o ingeniería Inversa?
Wikipedia lo define de la siguiente forma:
"El cracking es la modificación del software
con la intención de eliminar los métodos de protección de los cuales este
disponga: protección de copias, versiones de prueba, números de serie, claves
de hardware, verificación de fechas, verificación de CD o publicidad y adware."
Pero para mí el cracking es simple y sencillamente un
arte.
¿Por qué razón? Es pensar como lo hizo el programador
cuando dio origen al ejecutable que estamos analizando, es poder aplicar diferentes
métodos para llegar al código que da origen a la protección que estamos
revirtiendo y hacerlo de una manera elegante sin necesidad de modificar el código.
Para lograr nuestro objetivo necesitamos seguir un proceso
que describiré a continuación y que es el que seguiremos por lo regular en
todos los casos:
1.- Analizando a la víctima:
Este es el más importante de
todos los pasos ya que de esto depende el método que apliquemos para revertir
la protección. En este paso obtendremos información como: el lenguaje en que
esta compliado el programa (c++, phyton, java, etc.), analizaremos si tiene algún
tipo de encriptación o protección que nos impida analizar el código y
determinaremos que herramientas usar para analizarlo.
2.- Encontrar un punto de ruptura o breackpoint:
Aquí trataremos
de encontrar una vulnerabilidad en el programa que nos permita detenerlo momentos
antes de que este haga una comparación de nuestro número de serie con el
verdadero o en la rutina que genera el número de serie original. Para esto nos
valdremos de pistas que nos dan los propios programas con mensajes como “Numero
de serie invalido”, “Código incorrecto” o
ventanas emergentes como las siguientes:
3.- Revirtiendo la protección:
En este analizaremos la
rutina que se utiliza para registrar el programa o para obtener un número de
serie valido lo cual implica analizar línea por línea el código en lenguaje
ensamblador para lograr determinar qué características debe de cumplir un número
de serie para que lo acepte como valido o que bit’s hay que modificar para
poder registra el programa.
Aunque no es tan importante saber programar para empezar
con el cracking, sí es necesario tener nociones de como funciona un programa y lo que tambien es de suma importancia es conocer la sintaxis o rutinas del
lenguaje ensamblador debido a que el código siempre se nos mostrar en ese
lenguaje.
No creo dedicar un artículo sobre las instrucciones en
lenguaje ensamblador pero si hablare de algunas rutinas que vayamos encontrando
al analizar los ejemplos que utilizaremos en estos artículos.
Por eso es importante que los que estén interesados en la ingeniería inversa estudien este lenguaje por separado.
Por eso es importante que los que estén interesados en la ingeniería inversa estudien este lenguaje por separado.
¿Qué herramientas utilizaremos?
En esta ocasión para realizar estos tutoriales he
escogido la versión de kali Linux por dos razones 1) está basada en debían que
en lo personal es la distro más estable y robusta de Linux y 2) es una distribución
enfocada especialmente al pentesting o seguridad informática.
Sin embargo podemos realizar ingeniería inversa en
cualquier distro pero la ventaja de kali es que esta ya trae las herramientas por defecto y
las podemos observar en la sección de cracking:
De estas herramientas hablaremos más adelante y veremos
como utilizarlas.
Advertencia final:
Wikipedia nos hace una advertencia que también quiero hacérselas
a ustedes y es la siguiente:
“La distribución y uso de copias modificadas es ilegal en
casi todos los países desarrollados”
Por eso este material es solo de índole educativo y
utilizaremos en su mayoría los famosos crackmes que son aplicaciones hechas
especialmente para practicar la ingenira inversa.
Con esto les doy la bienvenida a estos articulos de
cracking bajo Linux.