Beruflich Dokumente
Kultur Dokumente
Outline
Outline
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
1
HackMeeting 2010
2 / 44
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
3 / 44
Qu es la Ingenier Inversa e a
HackMeeting 2010
4 / 44
Qu es la Ingenier Inversa e a
HackMeeting 2010
4 / 44
Motivacin o
HackMeeting 2010
5 / 44
HackMeeting 2010
6 / 44
HackMeeting 2010
6 / 44
Conocimientos previos
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
7 / 44
Conocimientos previos
Debuggear programas
Breakpoints Step into, step over, . . .
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 8 / 44
Conocimientos previos
HackMeeting 2010
9 / 44
Conocimientos previos
Conocimientos previos
Tipos de aplicaciones
Freeware: software de libre distribucin o Shareware: software con licencia de distribucin o
Demoware: algunas features del software inhabilitadas Trialware: software con limitacin temporal de uso o
HackMeeting 2010
10 / 44
Cinturn de herramientas o
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
11 / 44
Cinturn de herramientas o
Editor hexadecimal
HexWorkshop (http://www.bpsoft.com/)
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 12 / 44
Cinturn de herramientas o
Debuggers
Debuggers
Soft ICE
Trabaja(ba) en R0 Hay parches para trabajar sobre WinXP
OllyDBG (http://www.ollydbg.de/)
Trabaja en R0 y R3 Muchas variantes con muchos plugins
HackMeeting 2010
13 / 44
Cinturn de herramientas o
Identicadores y editores PE
PEiD PEEditor Calimero RDG Packer Detector ...
Visores de recursos
eXe Scope XNResource Editor Resorce Hacker Restorator
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 14 / 44
Cinturn de herramientas o
Dumpeadores de memoria
LordPE Deluxe SirPE (para 64 bits) Pupe ProcDump ...
Emuladores
HASP Sentinel Rock4
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 15 / 44
Cinturn de herramientas o
Monitores de APIs
KaKeeware Application Monitor Event2Adress (E2A) API Scan WinAPIOverride32 ...
Reparadores de IAT
Import REC (el abuelo Simpson :)) ReVirgin Universal Import Fixer
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 16 / 44
Cinturn de herramientas o
Documentacin o
Foros
elHacker (seccin ProgramacinIngenier Inversa) o o a ExeTools WoodMan
Pginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, a ...) Tuts4You (http://www.tuts4you.com/)
HackMeeting 2010
17 / 44
Cinturn de herramientas o
Documentacin o
Foros
elHacker (seccin ProgramacinIngenier Inversa) o o a ExeTools WoodMan
Pginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, a ...) Tuts4You (http://www.tuts4you.com/)
Tcnicas de anlisis e a
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
18 / 44
Tcnicas de anlisis e a
Cdigo muerto o
Casos t picos
Salto JE/JNE (JZ/JNZ) para registro correcto Nmero de registro embebido en la aplicacin u o
Tcnicas de anlisis e a
Cdigo muerto o
Una o varias rutinas de comprobacin de serial o NOPeo: sustituir cdigo mquina por NOP (No OPeration) o a
JE/JNE (74/75) NOP (90) JE/JNE (74/75) JMP (EB)a Variantes: JX/JNX (cualquiera) NOP (90) JMP (EB) o
a
Pasos
1 2 3 4 5 R.J. Rodr guez
Identicar PE (est protegido?) a Desensamblar Buscar mensajes de chico malo Analizar camino hasta el mensaje NOPear salto/desviar camino
HackMeeting 2010 20 / 44
Tcnicas de anlisis e a
Cdigo muerto o
Una o varias rutinas de comprobacin de serial o El cdigo de registro (serial) es unico y. . . o . . . est embebido en la aplicacin ! a o
Pasos
1 2 3 4 5
Identicar PE (est protegido?) a Desensamblar Buscar mensajes de chico malo Husmear la zona Comprobar cadenas sospechosas :)
HackMeeting 2010
21 / 44
Tcnicas de anlisis e a
Cdigo vivo o
Ms complicados (i.e., divertido) a Cada aplicacin es un reto nuevo y diferente o Casos t picos
Mmm. . . cualquiera?
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
23 / 44
HackMeeting 2010
24 / 44
Mtodos ms avanzados e a
Hallar el OEP (Original Entry Point) Dumpear el proceso de memoria (estar desempacado!) a Arreglar la IAT (Import Address Table)
Mtodos ms avanzados e a
Deteccin de modicaciones o
CRC
R.J. Rodr guez
MD5
HackMeeting 2010
26 / 44
Tcnicas de cracking e
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
27 / 44
Tcnicas de cracking e
CD Check
APIs t picas
GetDriveTypeA
EAX = 5 si hay CD
GetVolumeInformationA
HackMeeting 2010
28 / 44
Tcnicas de cracking e
Patching y loaders
Mtodos habituales: bsqueda de cadenas o chequeo de APIs e u Cambios estticos (i.e., permanentes) a
Loaders
Como el patching, pero en caliente ms elegante a Dos tipos (bsicos) a
Simples Debuggers (ms complejos): til para programas empacados a u
Tcnicas de cracking e
Registro de Windows
Guardan datos en el Registro de Windows APIs t picas
RegCloseKey RegCreateKeyEx RegOpenKeyEx RegSetValueEx RegQueryValueEx
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 30 / 44
Tcnicas de cracking e
Keygenning
Objetivo: encontrar algoritmo de generacin de claves o Complejidad del algoritmo variable Cada usuario tiene un nmero de registro diferente u Ingenier inversa pura y dura a
HackMeeting 2010
31 / 44
Tcnicas de cracking e
Archivos de licencia
Se registran mediante archivos de licencia Chequeos rutinarios contra servidor de la empresa (a veces) APIs t picas
Conexin: connect, WSAConnect o Recepcin: recv, recvfrom, WSARecv, WSARecvFrom, WSARecvMsg o Env send, sendto, WSASend, WSASendTo, WSASendMsg o:
HackMeeting 2010
32 / 44
Tcnicas de cracking e
Desempacado (unpacking)
Ejemplo prctico a
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
34 / 44
Ejemplo prctico a
Pasos
1 2
Analizar para ver si est limpio a Insertar nombre y cdigo para ver chico o malo Cargar en debugger (e.g., OllyDBG)
HackMeeting 2010
35 / 44
Ejemplo prctico a
Pasos
1 2
Analizar para ver si est limpio a Insertar nombre y cdigo para ver chico o malo Cargar en debugger (e.g., OllyDBG)
HackMeeting 2010
35 / 44
Ejemplo prctico a
Pasos
HackMeeting 2010
36 / 44
Ejemplo prctico a
Pasos
1
HackMeeting 2010
36 / 44
Ejemplo prctico a
Pasos
1 2
Ejemplo prctico a
Pasos
1 2 3
Llamada a IsDebuggerPresent ocultar el Olly BP en GetDlgItemTextA e introducimos datos. . . Alcanzamos cdigo de la aplicacin (CTRL + F 9) o o
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 36 / 44
Ejemplo prctico a
HackMeeting 2010
37 / 44
Ejemplo prctico a
HackMeeting 2010
37 / 44
Ejemplo prctico a
Ejemplo prctico a
HackMeeting 2010
38 / 44
Ejemplo prctico a
HackMeeting 2010
38 / 44
Ejemplo prctico a
Bsqueda de cadenas referenciadas u Cadenas de chico bueno y chico malo lstrcmpA: comparacin de cadenas o
Valor de EAX determina igualdad
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 38 / 44
Ejemplo prctico a
Algoritmo de generacin o
HackMeeting 2010
39 / 44
Ejemplo prctico a
Algoritmo de generacin o
HackMeeting 2010
39 / 44
Ejemplo prctico a
Algoritmo de generacin o
0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud EDI: buer cadena ESI: otro buer :) EAX=EBX=ECX=EDX=0 EDX=longitud
HackMeeting 2010
39 / 44
Ejemplo prctico a
Algoritmo de generacin o
0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud EDI: buer cadena ESI: otro buer :) EAX=EBX=ECX=EDX=0 EDX=longitud EBX=contador
HackMeeting 2010
39 / 44
Ejemplo prctico a
Algoritmo de generacin o
EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end
HackMeeting 2010
40 / 44
Ejemplo prctico a
Algoritmo de generacin o
EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end
HackMeeting 2010
40 / 44
Ejemplo prctico a
Algoritmo de generacin o
EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end
HackMeeting 2010
40 / 44
Ejemplo prctico a
Algoritmo de generacin o
EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0
HackMeeting 2010
41 / 44
Ejemplo prctico a
Algoritmo de generacin o
EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0
HackMeeting 2010
41 / 44
Ejemplo prctico a
Algoritmo de generacin o
EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0
EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI
HackMeeting 2010
41 / 44
Ejemplo prctico a
Algoritmo de generacin o
EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0
EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI Aadimos resto del nombre (desde el 4o carcter) al nal de la n a nueva cadena
HackMeeting 2010
41 / 44
Ejemplo prctico a
Algoritmo de generacin o
EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0
EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI Aadimos resto del nombre (desde el 5o carcter) al nal de la n a nueva cadena Y ya se compara la cadena construida con la introducida
HackMeeting 2010
41 / 44
Conclusiones y agradecimientos
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
HackMeeting 2010
42 / 44
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a
HackMeeting 2010
43 / 44
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a
Agradecimientos
CrackSLatinoS Gente del HackMeeting
HackMeeting 2010
43 / 44
Conclusiones y agradecimientos
Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a
Agradecimientos
CrackSLatinoS Gente del HackMeeting A vosotros por aguantarme! :D
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 43 / 44