Título: Cracking PowerPath EMC Publicado por: cggj en 4 Marzo 2010, 19:52 pm Después de algún tiempo vuelvo a postear para todos uds:
Cuando hablamos de cracking de aplicaciones, siempre se piensa que solo aquellas que se encuentran en la red, para disposición del publico general son las que deben poseer diferentes y variados métodos de ofuscamiento para evitar que estas sean crackeadas y puedan utilizarse sin realizar el pago correspondiente de derechos, sin embargo no es así. En esta ocasión mostrare como crackear el PowerPath de EMC. Quien conozca un poco de storage sabrá de lo que hablamos, para los que no, PowerPath es una importante herramienta que sirve para realizar el balanceo de cargas entre diferentes paths que comunican los equipos de emc (Clariion, Symetrix, Celerra etc.), su operación licenciada es de vital importancia para mantener la alta disponibilidad de los LUN’s o discos asignados. La version que utilizaremos de PowerPath es la siguiente: EMC powermt for PowerPath iSCSI (c) Version :1.1.0 (build 89): (http://jesusssx.files.wordpress.com/2010/03/primera2.png?w=550&h=265) Para realizar el debugging de usaremos el clásico OllyDbg, para revisar si el programa se encuentra empaquetado utilizaremos el también muy común PEiD. Aunque bueno este paso solo se realizó por mero protocolo, pues cuando un programa se encuentra empaquetado las instrucciones son ilegibles. El programa PowerPath posee varias partes las cuales funcionan bajo diferentes escenarios, el licenciamiento nos lo facilitan de manera significativa, pues la gente de emc tuvo la gran idea de poner una aplicación independiente únicamente para este fin. La aplicación se encuentra en la siguiente ruta: C:\Archivos de programa\EMC\PowerPathiSCSI\EmcLicTool.exe Por lo tanto esta es la aplicación que verificaremos, no se encuentre empaquetada u ofuscada con el fin de entorpecer nuestro trabajo. La salida del PEiD nos muestra que la aplicación no se encuentra empaquetada de ninguna manera, incluso nos muestra que fue realizado en C++, con esto estamos listos para cargar el programa en OllyDBG. Pero antes realizaremos algunos ajustes al OllyDbg para evitar problemas durante el debugging. (http://jesusssx.files.wordpress.com/2010/03/segunda1.png?w=420&h=233) Para que el OllyDbg no pare en cada intento de entrada a un modulo nuevo, vamos al menú principal y en “Options_Debuggin Options” seleccionamos “Debug” y marcamos “Ignore memory access violations in Kernel 32″ y desmarcamos el resto. Posteriormente nos aseguramos de que no se detecta nuestro debugger con el IsDebuggerPresent, para lo cual se utilizará el Plugin de OllyDbg “IsDebuggerPresent” de Byte Patcher. De esta manera no encontramos listos para realizar el debugging del programa. Luego de cargar y correr el programa obtenemos la siguiente salida: (http://jesusssx.files.wordpress.com/2010/03/tercera1.png?w=550&h=390) La primera salida que nos marca el inicio de la aplicación: Código: 0040B9A6 >/$ 55 PUSH EBP El PUSH EBP nos indica de donde inicia el programa, ahora usaremos el método mas común para encontrar la sentencia "IF" o CMP de validación, cuando introducimos un código erróneo, introducimos cualquier texto y verificamos el error que arroje: (http://jesusssx.files.wordpress.com/2010/03/cuarta1.png?w=550&h=338) Posteriormente buscamos la cadena "Key" para ubicar en el desensamblador la linea que nos llevara a este fragmento de código: (http://jesusssx.files.wordpress.com/2010/03/quinta1.png?w=550&h=423) Text strings referenced in EmcLicTo:.text, item 5 Address=00401C31 Disassembly=PUSH EmcLicTo.00431344 Text string=ASCII "%s is an invalid license key." La seguimos en el desensamblador y observaremos lo siguiente: Código: 00401BED . 53 PUSH EBX Para poder seguir la traza del programa pondremos un breakpoint en 00401BED . 53 PUSH EBX (F2) y seguiremos la traza paso a paso con F7. Una vez que se realiza la corrida paso por paso nos podemos dar cuenta que la llamada CALL EmcLicTo.0041D9DA ubicada en la dirección 00401BFC efectivamente es la que realiza la validación inicial de cada uno de los caracteres que se van introduciendo, si analizamos la corrida del siguiente fragmento de código encontraremos lo siguiente: (siguiendo la llamada) Código: 0041D9DA $ B8 78654200 MOV EAX,EmcLicTo.00426578 Lo que hace es obtener el tope de ESP y concatena la entrada del input text en la parte baja y alta del acumulador: Código: 0041DA02 . 8365 08 00 AND DWORD PTR SS:[EBP+8],0 Posteriormente realiza una llamada mas que es precisamente la que necesitaríamos debuggear si quisiéramos hacer el keygen para PowerPath ( CALL EmcLicTo.0041DA7C y CALL EmcLicTo.00422910 ), prepara el resto de los registros con la información necesaria para regresar a su salto de origen guardando las direcciones de salto y regreso en ECX… sin embargo esa no es la prioridad, por lo tanto pasaremos a un breakpoint mas cercano al CMP definitivo. El nuevo Breakpoint lo fijaremos en: PUSH DWORD PTR DS:[EDI] ubicado en la dirección 00401C2F, justo una instrucción antes de emitir el mensaje de error, ahora bien, una instrucción arriba se encuentra el salto de validación definitivo entre lo que se devuelve de la llamada 00422910 acumulado en el ECX, si ECX es igual que el valor sostenido en el tope de nuestro stack (dump) entonces realiza un salto a la dirección de memoria: 00401C38 que es la que almacena el còdigo de escritura en los registros de PowerPath, informándole que la licencia fue introducida de manera correcta, de lo contrario no brinca y arroja el mensaje de Licencia Errónea (is an invalid licence key) y realiza un salto corto a la dirección JMP SHORT EmcLicTo.00401C5E indicándole a PowerPath no reescribir registros y dejar el programa en espera de nuevas entradas: Código: 00401C26 . 3BC3 CMP EAX,EBX PowerPath escribe en el registro del S.O. si la licencia es o no correcta entre otras cuestiones, eso lo podemos verificar por sus scripts poco seguros y a disposición de cualquier persona que se instalan con el software de manera nativa: Código: (cabecera de powermt.vbs) En este script queda evidenciado la utilización de DLL’s que los desarrolladores anexan a la API de Windows y de manera análoga acceden a registros de Windows que validan licencias. Por lo tanto solo basta obligar al programa de licenciamiento a que brinque esta validación para obligarlo a que escriba en el registro que nuestra licencia completamente fake es correcta. Para lograr esto cambiaremos la instrucción JE SHORT EmcLicTo.00401C38 ubicada en la dirección 00401C2D por JNZ SHORT 00401C38, la instrucción JNZ es lo contrario de JE, es decir evaluará si es diferente de 0 o de lo almacenado en el acumulador; ensamblamos y observamos que ocurre: (http://jesusssx.files.wordpress.com/2010/03/sexta1.png?w=550&h=384) (http://jesusssx.files.wordpress.com/2010/03/septima1.png?w=550&h=387) Ahora nos muestra la pantalla diciéndonos que la licencia fue introducida de manera correcta, y debido a que PowerPath posee poca granularidad en cuanto a la seguridad a nivel de código se refiere, nuestro sistema se encuentra licenciado al menos hasta la próxima que se reinicie el equipo: (http://jesusssx.files.wordpress.com/2010/03/octava1.png?w=550&h=394) Esta versión de PowerPath desarrollada por EMC es mas fácil de crackear que mucho del software que se encuentra en la red, el cual posee métodos de ofuscamiento para dificultar el cracking de la aplicación en cuestión y en general sirve para incrementar la experiencia en el cracking de aplicaciones. Si algún SySAdmin con mínimo valor de la pluralidad estructural del software libre conociera esto dejarian de consumir miles de dolares en licencias para software realizado sín las mínimas consideraciones de seguridad. Artículo completo en: http://jesusssx.wordpress.com/2010/03/02/cracking-powerpath-emc Saludos !! Título: Re: Cracking PowerPath EMC Publicado por: MCKSys Argentina en 4 Marzo 2010, 20:48 pm Hola!
El tutorial está bueno! ;D Ya sólo te falta el keygen! :P Saludos! Título: Re: Cracking PowerPath EMC Publicado por: tena en 7 Marzo 2010, 14:46 pm Buen Tute ;)
Felicitaciones Título: Re: Cracking PowerPath EMC Publicado por: Amerikano|Cls en 7 Marzo 2010, 23:32 pm Gracias por el aporte!!!!
|