INTRODUCCION AL CRACKING Introducción En este tutorial se tratara de dar una pequeña introducción a la ingeniería inversa o cracking desde lo más básico. Lo que necesitan es tener conocimientos básicos de asm que no me detrendre a explicar si no es necesario. Cracker: persona amante de las computadoras con amplios conocimientos en informática que se dedica al cracking. El cracking es el arte de remover o quitar protecciones a programas comerciales con fin educativo, diversión o satisfacción personal. Aunque este término se puede atribuir como un hacker malo en algunas ocasiones, también se le puede llamar ingeniería inversa como la forma es que se utiliza opuestamente los conocimientos para romper la protección. Quien puede ser cracker Cualquier persona que es perseverante y que este dispuesta a aprender constantemente puede serlo. Básicamente lo que necesitamos es: - Tener conocimientos del lenguaje ASM (Ensamblador o assembler en ingles) - Tener conocimientos por el sistema hexadecimal y sus conversiones al sistema decimal. - Tener ganas de aprender y ser perseverante en el tiempo Herramientas principales del cracking Depurador (debugger): Son programas originalmente creados para corregir errores en otros programas informáticos, pudiendo abrir cualquier ejecutable (.exe) en el leguaje ASM indistintamente de cual haya sido el lenguaje original del programa (entienden ahora la importancia del ASM, hay que aprenderlo). Con este programa podemos ejecutar cada instrucción del programa y detenernos en cualquier momento o en el momento en que el programa toma la decisión de estar registrados o no y poder cambiar el código a nuestro beneficio... mas adelante entenderán mejor a lo que me refiero cuando lo usemos. Uno de los depuradores mas famosos sin duda es softice también apodado la bestia negra por su apariencia tipo m-dos y por lo poderoso que podía ser para crackear programas. Actualmente este debugger esta en desuso ya que se llego con el hasta win NT, pero igualmente con unos parches se puede instalar en XP por si alguien quiere echarle un vistazo a esta leyenda del crack de hace unos años. Otro debugger famoso es OllyDbg Que es un muy buen debugger mucho más ameno, amigable e intuitivo que el viejo softice. Tiene multitud de plugins que ofrecen ayudas importantes, también se pueden cambiar los colores del fondo o las letras. Más adelante se explicara como configurarlo y las funciones básicas, ya que es el depurador que se usara para crackear. Desamblador (disassembler): Programa que te permite ver cualquier ejecutable en leguaje ASM así como referencias de texto entre otras. La principal diferencia con un debugger es que el desamblador podemos ver el código en ASM y el debugger podemos interactuar con el (ejecutar, modificar). Un desamblador bastante útil es W32dasm que también es debugger, pero se usa mas que nada solo como desamblador ya que si queremos un buen debugger esta olly que lo supera ampliamente . Editor hexadecimal: Programa que te permite editar cualquier archivo de forma hexadecimal. Todo el código ensamblador tiene su correspondiente en hexadecimal, los debugger y desambladores traducen estos a las instrucciones que vemos normalmente. Podemos hacer una modificación en el ejecutable de dos formas. La primera es con un editor hexadecimal y la otra es con el mismo olly... La desventaja de hacerlo con un editor es que si queremos modificar una instrucción en ensamblador tenemos que saber el correspondiente en hexadecimal y si lo hacemos con olly lo modificamos directamente por la instrucción que queremos. Algunos editores son el Ultraedit y el hex workshop. Monitor del registro: Programa que sirve para vigilar el registro de windows. En ocasiones los programas guardan datos en el registro, datos como seriales, nombres de usuario, fecha de instalación entre otros. Por lo tanto hay que tener en cuanta este tipo de programas que los puede servir mucho. Un ejemplo monitor de registro de Regmon. Monitor de archivos: Programa que sirve para vigilar posibles vínculos con archivos. Algo parecido al monitor de registro con la diferencia obvia en que este monitorea archivos ya sea del tipo dat .txt lo que sea. Este tipo de programas es menos útil que el monitor de registro ya que casi siempre los programas guardan los datos en el registro de windows. Descompresores: Algunos programas utilizan distintos tipos de compresiones sin que estos varíen la extensión .exe lo que hace más difícil crackear, ya que al estar comprimidos no estamos analizando un ejecutable normal, sino uno que tiene datos encriptados que no son tan accesibles ahora :S. El tema es amplio y lo explicare mas adelante. Por ahora solo tienen que saber que hay programas encriptados los cuales son mas difíciles de crackear y la opción mas viable seria descomprimirlos con algún programa descompresor o aun mas dificil manualmente. Lo compresores más famosos son UPX, ASprotect, ASPack, armadillo, PECompressor, etc. Los descompresores tienen multitud de nombres casi todos incluyen el mismo nombre del compresor Ej. Aspackdie. Definiciones a saber Informática: Ciencia que se encarga de la automatización del manejo de la información. Ciencia de la información automatizada, todo aquello que tiene relación con el procesamiento de datos, utilizando los ordenadores y/o los equipos de procesos automáticos de información. Conjunto de conocimientos referidos a los ordenadores. Proviene del francés informatique y fue acuñado por el ingeniero Philippe Dreyfus en 1962. Formó una conjunción entre las palabras "information" y "automatique". La informática se basa en múltiples ciencias como la matemática, la física, la electrónica, etc. Zen Cracking: se refiera a la forma de pensar de cracker de cómo funciona el programa. No hay una clave exacta para crackear programas, el cracking no es sistemático y muchas veces la forma en que crackiamos un programa, en que intuimos la solución es el zen cracking que se desarrolla con la experiencia. Mientras más desarrollado tengamos el Zen cracking más rápido crackearemos un programa. pd : Esta es una introduccion general de craking o ingenieria inversa. Despues dare link de las herramientas a utilizar y algunos conceptos basicos sobre tecnicas de craking.. Explicare las funciones basicas basicas de asm para que podemas empezar a cracker algunos crackmes. Assembler y técnicas básicas de craking (leccion 2) Pueden leer un manual de asm que personalmente me gusta bastante que es El curso de Assembler de CaoS ReptantE. Lo recomendado es leer por ahora y no complicarles la existencia con cosas que no se verán es que revisen con más detalle lo siguiente: http://rapidshare.com/files/29170001/Assembler.doc.html [FONT="]1. [/FONT][FONT="]SISTEMAS DE NUMERACIÓN[/FONT] [FONT="]1.1.[/FONT][FONT="]Decimal[/FONT] [FONT="]1.2.[/FONT][FONT="]Binario[/FONT] [FONT="]1.3.[/FONT][FONT="]Hexadecimal[/FONT] [FONT="]1.4.[/FONT][FONT="]Conversión[/FONT] [FONT="]2. [/FONT][FONT="]SISTEMAS DE REPRESENTACIÓN[/FONT] [FONT="]2.1.[/FONT][FONT="]Números negativos[/FONT] [FONT="]2.2.[/FONT][FONT="]Caracteres ASCII - ANSI[/FONT] [FONT="]4.ESTRUCTURA DE LA MEMORIA[/FONT] [FONT="] 5.LA PILA[/FONT] [FONT="] 6.LOS REGISTROS[/FONT] [FONT="]2.3.[/FONT][FONT="]Generales[/FONT] [FONT="]2.4.[/FONT][FONT="]De base[/FONT] [FONT="]2.5.[/FONT][FONT="]De índice[/FONT] [FONT="]2.6.[/FONT][FONT="]De puntero[/FONT] [FONT="]2.7.[/FONT][FONT="]De segmento[/FONT] [FONT="]2.8.[/FONT][FONT="]Flags[/FONT] [FONT="]3. [/FONT][FONT="]INSTRUCCIONES[/FONT] [FONT="]3.1.[/FONT][FONT="]Modos de direccionamiento[/FONT] [FONT="]3.2.[/FONT][FONT="]La reina de las instrucciones [/FONT] [FONT="]3.3.[/FONT][FONT="]Instrucciones de la pila[/FONT] [FONT="]3.4.[/FONT][FONT="]Instrucciones de comprobación y verificación[/FONT] [FONT="]3.5.[/FONT][FONT="]Instrucciones de salto[/FONT] [FONT="]3.6.[/FONT][FONT="]Instrucciones de subrutinas[/FONT] [FONT="] [/FONT]Salto principales de asm (elemental)[FONT="] 75 o 0F85 jne Salta si no es equivalente 74 o 0F84 je Salta si es equivalente EB jmp Salta directamente a . . . 90 nop ( No OPeration ) Sin operación 77 o 0F87 ja Salta si esta sobre OF86 jna Salta si no esta sobre 0F83 jae Salta si esta sobre o igual 0F82 jnae Salta si no esta sobre o igual 0F82 jb Salta si es inferior 0F83 jnb Salta si no es inferior 0F86 jbe Salta si esta debajo o igual 0F87 jnbe Salta si no esta debajo o igual 0F8F jg Salta si es mayor 0F8E jng Salta si no es mayor 0F8D jge Salta si es mayor o igual 0F8C jnge Salta si no es mayor o igual 0F8C jl Salta si es menor 0F8D jnl Salta si no es menor 0F8E jle Salta si es menor o igual 0F8F jnle Salta si no es menor o igual [/FONT] Tecnicas básicas del cracking Antes de empezar a explicar la técnicas básicas de cracking debemos tener en consideración lo sig: Para crackear programas no es algo sistematico, cada programa es diferente a otro, incluso el mismo programa con versiones diferentes, es por esto que para crackear algún programa se necesita de la intuición cracker también llamada Zen cracking como habíamos descrito anteriormente. Siempre es necesario la observación, tomar atención en los detalles del programa. Cada mensaje es una pista para nosotros, cada ventana molesta(nag) o cada limitacion de días o usos se puede considerar como punto de partida para atacar. Por lo tanto yo recomiendo que agarren lápiz y papel o si son un poco mas comodos como yo usen notepad. Bueno continuado con las técnicas explicare algunas técnicas básicas que son la base para empezar que se ponen a continuación. - harcoded serial - la técnica de la inversión del salto condicional (75/74) - eliminación de nags - Uso visor de registro( regmon y filemon) -Otras técnicas interesantes harcoded serial Esta técnica es muy antigua y a la vez estúpida. Se trata de localizar el mismísimo serial en el código desamblado de nuestro ejecutable victima. Cuando desamblamos nuestro ejecutable lo primero que hacemos casi siempre es buscar las string referenced text string o refeferencias de texto en busca de pistas que no lleven al código. Es ahí cuando vemos alguna cadena sospechosa, la probamos y jeje el programa queda registrado. Una protección mediocre que no vale la pena explicar mas que esto, ya que todavía no encuentro un programa con una protección tan tonta xD. Tecnica (75/74) Esta técnica es viejita también, pero todavía puede ser efectiva. Quien no ha bajado un crack que deja el ejecutable registrado ingresando cualquier nombre o pasword, pues se utilizo esta técnica para ello. La técnica consiste en modifical el salto condicional que es critico en que se que decide si nuestro serial es correcto o no. En palabras seria algo asi: si el pass_ingresado es igual al pass_verdadero entonces salta al cartel a gracias por registrarte Y lo dejaríamos asi: si el pass_ingresado no es igual al pass_verdadero entonces salta al cartel a gracias por registrarte Pudiendo ingresar cualquier pass para registrarte. En el único caso que no quedaríamos registrado es en el caso que ingresaramos el pass correcto, lo cual es muy improbable. Aca un ejemplo simplificado de un típico salto condicional: Vemos según el ejemplo que nuetro serial es 123456 distinto al serial correcto, por lo que nos saldrá el mensaje de código incorrecto. Basta con cambiar el salto por JNE ( salta si no son iguales ) y podremos ingresar cualquier serial para registrarnos. ¿Cómo lo cambiamos? Cada instrucción tiene un código hexadecimal el je es 74 y el jne 75 (por eso el nombre de esta técnica). Abrimos el ejecutable con algún editor Hexadecima y cambiamos los bytes. Tecnica nop (90) Consiste en nopear una instrucción que no queremos que por ningún motivo se ejecute, ¿entoces que es lo que hacemos? La eliminamos, de esta manera la instrucción dejara de existir y nunca podrá ejecutarse esa instrucción madita xD. Un ejemplo de nopeo seria : si la compacion entre registros EAX y EBX no es igual entonces salta al cartel periodo de evaluación caducado Y lo dejaríamos asi: Sin operaciones.. Eliminamos la sentencia de comparación tanto como la del salto condicional. Asi nunca saltaría al mensaje de error y el programa llegaría hasta el mensaje que nos conviene. Logicamente esta técnica en esta ocacion podría ser perfectamente reemplazable por la técnica 74/75, pero quiero que sepan que también se puede hacer asi en algunas ocaciones y tenerla en cuenta para otro tipo de ocaciones. Utilizacion de monitores (regmon y filemon) En algunas ocaciones los programas utilizan el registro de Windows (investigen si no están familiarizados con el termino) para guardar datos de por ejemplo la fecha de instalación de nuestro programa. Entonces cada vez que el programa inica este revisa el registro y de esta manera sabe cuantos dia de uso nos quedan. Tambien puede que se de el caso de que utilizen algún archivo propio donde guarden esa información. Oviamente ese archivo esta oculto en otra parte que no sea el directorio de instalación del software. Basicamente es el mismo principio, pero se utiliza mucho menos. Este tipos de técnicas no son de mi preferencia, debido a que es probable solo en programas que nos limiten los días de uso. Aparte de que el registro de Windows es utilizado por todos los programas y tenemos muchas claves que tendremos que revisar por una pista (aunque se puede hacer un filtro que nos indique solo las que usa el programa victima). Para mi es aburrido revisar la lista, pero no se descarta este tipo de técnica. En el cracking se lucha con todo, cualquier herramienta que nos ayude será bienvenida. ********************************************************** [FONT="] [/FONT] Empezando con los crackmes Empezaremos a meterle mano a unos crackmes facilisimos les dejo la pagina para que los descargen: http://s7r1d3r.blogcindario.com/2006/05/00008-crackme.html el crackme 1 realmente se hace en 3 seg especialmente si lo hacemos con wdasm,ya que es un harcoded (por fin encontre uno) especial para empezar. Solo lo abren con wdasm y ven las sting references. Echen mano porque realmente es muy facil.Mas adelante lo explicare como hacerlo de forma mas "profesional" con el olly y tambien como instalar y configurar para aprovechar al maximo sus posibilidades. Les dejo los programas para crackear: el wdasm en 3 versiones (es conveniente tener las 3) http://rapidshare.com/files/200273502/W32dasm.rar.html y el famoso olly para que lo tengan y si quieren lo prueben http://www.ollydbg.de/odbg110.zip [FONT="] [/FONT]
wena info super explicadito como los de ricardo narvaja XD se agradece harto y espero la proxima clase Salu2