domingo, 14 de diciembre de 2014

Cracking bajo Linux Parte 1



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.

¿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.

1 comentario: