SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

Crack Hyena

      3507

Autor: Madfran
-[ 0x02 ]--------------------------------------------------------------------
-[ Crack de una Hyena  ]-----------------------------------------------------
-[ by madfran ]-------------------------------------------------------SET-26-

COMO LOGRAR UNA HERRAMIENTA MULTITAREA


INTRODUCCION

A veces nos encontramos con el problema de querer saber cual es la direccion IP
de una maquina de la cual solo sabemos o intuimos su nombre. A menudo queremos
ver que servicios dispensa un servidor. De vez en cuando nos interesa saber
que servidores se encuentran en nuestra red. Estamos suponiendo que nos 
encontramos dentro de una red muy grande y que en ella se inpone el dominio
del todopoderoso Windows. Que mejor herramienta que una hyena!. No pretendemos
hablar sobre un mamifero que habita en las lejanas (para nosotros) sabanas
africanas. Nos estamos refiriendo a una magnifica herramienta llamada Hyena, 
que va por la version 4.2 'C' y que ha sido desarrollada por una empresa llamada 
SystemTools Software Inc.


UN DESEO INCONTROLADO

Es el que te corroe cuando te encuentras dentro de una red que por alguna
razon intuyes es enorme pero que desconoces casi por completo. Cuales son las
razones por las cuales te puedes encontrar ante semejante comezon?, pues,... 
infinitas como las situaciones que se encuentran en la vida real.
Tal vez eres un consultor al que han dado un acceso a la red, pero el acceso es
provisional y tremendamente recortado, bueno solo para hacer un trabajito 
miserable. A lo mejor eres un estudiante mal pagado y peor tratado, provisto de
contrato para hacer un estudio de verano de esos que si son buenos, acostumbran 
a ser fagocitados por algun caza medallas de la empresa que te chupa la sangre.
Como ya os hemos dicho puede ser variadas la situaciones y los motivos pero la
consecuencia siempre es la misma, cuando te encuentras con la cabeza hecha un
torbellino y necesitas descansar hay varias soluciones, ir al lavabo, buscar
una maquina de cafe, molestar al vecino, intentar ligar con la persona del
mismo u opuesto sexo que se encuentre en las proximidades o... rastrear a ver
que basura encuentras en la red de marras.

Es el momento de lanzar el programita Hyena!. No es que sea la panacea universal
pero te da un vistazo de todo el entorno de tu ordenador. Y entonces, ahi vamos!
nos lanzamos a ver que pasa. De repente,... la desilusion!. El problema es que 
en lugar de darte la informacion deseada, te larga un mensajito diciendo que 
han pasado los treinta dias de evaluacion y si no sabes el codigo correcto no 
hay nada que hacer. En este momento nos acordamos que el programita en cuestion 
hace una porrada de dias que lo habiamos usado y que la licencia de treinta 
dias, hacia tiempo que habia expirado.


NO NOS DAMOS POR VENCIDOS

Eso nunca! Se pueden tardar dias, meses o anyos pero lo principal es nunca
darse por vencido! Es la base de cualquier estrategia para evitar quedarnos a
las puertas de la fiesta... y a nosotros no nos gusta que nos den con la
puerta en las narices (duele en las narices y en el amor propio).

Hay que empezar por decidir cual es la mejor estrategia a seguir y hay varias
a nuestra disposicion. La mas sencilla es intentar que otro haga el trabajo
sucio por nuestro cuenta o sea buscar un cracker en la red. En teoria basta
con utilizar www.google.com, buscar hyena y... comprobar que te aparecen
algunas miles de refencias. Buf! Que aburrido! vamos a hacernos el trabajo
nosotros mismos!

Si no nos gusta que otro hago el trabajo que unicamente es de nuestra 
competencia, tenemos que seguir los tipicos pasos que cualquier buen cracker 
debe seguir:

- Buscar un desensamblador (en los sitios acostumbrados)
- Lanzarlo para desensamblar el programa objetivo (cuidando que no se escape)
- Fijarnos en algunos detalles pertinentes (los impertinentes, podeis 
  obviarlos)
- Tomar nota de lo que hay que cambiar (en papel u objeto similar, no os fieis
  de vuestra, deplorable, memoria)
- Buscar un editor hexadecimal (en el mismo sitio que antes)
- Realizar con el, los cambios deseados (... ni uno mas ni uno menos)
- Comprobar que todo marcha segun tus deseos (que no tienen que coincidir con
  los deseos del fabricate del software objetivo)


EL DESEMSAMBLADOR

El otro dia recibi una consulta de una persona perdida en internet, que me 
preguntaba para que servia un desensamblador (veridico y cierto, si no os lo 
creeis os puede ensenyar el e-mail), dado que desconozco el grado de 
conocimiento (o de desconocimiento) de mis atentos lectores (hay alguien 
despierto?), paso a hacer una breve descripcion... Un desensambblador, no es
nada mas que un programita que convierte un galimaties de cifras y numeros, en
codigo en assembler. Si el programita es lo suficientemente bueno, ademas del
codigo puro y duro, os obsequiara tambien con algunas descripciones, y el texto
de todos los menus y comentarios que el programa a crackear te vomita de vez en 
cuando.

Perfecto! Ahora pasemos a la busqueda de un software de este estilo. Todo un 
clasico en la materia es el famosisimo W32Dasm. Hay diversas versiones, todas
funcionan correctamente pero son de pago, o sea la version que podeis encontrar
esta limitada en algunos sentidos, pero basta para nuestros deseos. El
productor de esta maravilla es la empresa URSoftware Co. que se ganaba la vida
haciendo diversas cosas pero parece que no le ha ido nada bien ya que ha
desaparecido del mapa. Si no os gusta o no lo encontrais, una buena 
alternativa es el IDA, pero yo me desenvuelvo tranquilamente con la version 8.7
del W32Dasm aunque se que existen versiones posteriores hasta la 8.93.


DESENSAMBLANDO

En fin, una vez encontrais lo que os hace falta solo hay que lanzar el programa
y a continuacion desensamblar el Hyena. En codigo ASCI genera un monstruo de
mas de 18 Mb y buscar a pelo por ahi dentro no es tarea para realizar de buenas
a primeras. Hay que actuar, sino con metodo, como minimo con un poco de
inspiracion. Lancemos el Hyena y fijemonos en que nos dice. Ademas de 
comunicarnos el sistema de registro, nos dice los dias que quedan para disfrutar
de la licencia provisional (exactamente cero dias) con el siguiente mensaje

"Days remaining in trial period"

Lo mas evidente es buscar en el codigo desemsamblado el texto en cuestion. No lo
encontramos en el cuerpo del codigo, pero si encontramos este dialogo.

Name: DialogID_0099, # of Controls=012, Caption:"Registration"
     001 - ControlID:FFFF, Control Class:"" Control Text:"" 
     002 - ControlID:FFFF, Control Class:"" Control Text:"This is a fully 
           functional copy of Hyena.  Registration is required after the " 
     003 - ControlID:0638, Control Class:"" Control Text:"http://www.systemtools
           .com/hyena" 
     004 - ControlID:FFFF, Control Class:"" Control Text:"If you have your 
           registration information for Hyena, enter it below, and then " 
     005 - ControlID:FFFF, Control Class:"" Control Text:"Days remaining in 
           trial period" 
     006 - ControlID:0458, Control Class:"" Control Text:"" 
     007 - ControlID:FFFF, Control Class:"" Control Text:"Registration Key" 
     008 - ControlID:0459, Control Class:"" Control Text:"" 
     009 - ControlID:FFFF, Control Class:"" Control Text:"Company / Licensee 
           Name" 
     010 - ControlID:0488, Control Class:"" Control Text:"" 
     011 - ControlID:0002, Control Class:"" Control Text:"&Registration 
           Infomation" 
     012 - ControlID:5190001, Control Class:"" Control Text:"OK" 

Hacemos otro intento, buscando el DialogID-0099 pero encontramos demasiadas
referencias sin ninguna que diga nada sobre Controls_ID=012...... parece que nos
encontramos en un punto muerto ! 


BUSCANDO CON UN POCO MAS DE PACIENCIA

Cuando ponemos el codigo equivocado de registro, el programa nos entretiene con
un obsceno (cada cual tiene su propio concepto de la obscenidad) mensaje

"The trial period has expired"

Normalmente, cuando recibes un mensaje semejante, el danyo ya esta hecho y el
programa no funciona, pero... y si este no es el caso?

Ni cortos ni perezosos nos lanzamos a la busqueda del presunto tesoro y 
encontramos este pedazo de codigo.

*****************************************************************************
********* UN PEAZO DE CODIGO ************************************************
*****************************************************************************


:004332B9 E810820800              Call 004BB4CE
:004332BE 8D4C241C                lea ecx, [esp + 1C]
:004332C2 C7842450070000FFFFFFFF  mov dword ptr [esp + 00000750], FFFFFFFF

* Reference To: MFC42u.MFC42u:NoName0122, Ord:0320h
                                  |
:004332CD E8FC810800              Call 004BB4CE
:004332D2 B801000000              mov eax, 00000001
:004332D7 E9EE040000              jmp 004337CA

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00432E15(C), :00432E27(C), :00432E78(C), :00432EF4(C), :00432F06(C), 
|:00432F3C(C)
|
:004332DC 85FF                    test edi, edi
:004332DE 0F858A020000            jne 0043356E
:004332E4 6A10                    push 00000010

* Reference To: USER32.MessageBeep, Ord:01C2h
                                  |
:004332E6 FF15F86A4D00            Call dword ptr [004D6AF8]
:004332EC 6AFF                    push FFFFFFFF
:004332EE 6A10                    push 00000010

* Possible Reference to String Resource ID=21343: "The trial period has expired.  "
                                  |
:004332F0 685F530000              push 0000535F

* Reference To: MFC42u.MFC42u:NoName0187, Ord:04ACh
                                  |
:004332F5 E848830800              Call 004BB642


*****************************************************************************
********* OTRO PEAZO DE CODIGO **********************************************
*****************************************************************************

* Reference To: MFC42u.MFC42u:NoName0246, Ord:048Dh
                                  |
:00433868 E8317F0800              Call 004BB79E
:0043386D 8BBC2414020000          mov edi, [esp + 00000214]
:00433874 8B7004                  mov esi, [eax+04]
:00433877 6A00                    push 00000000
:00433879 57                      push edi

* Possible StringData Ref from Data Obj ->"C"
                                  |
:0043387A 68A0515000              push 005051A0
:0043387F 8BCE                    mov ecx, esi

* Reference To: MFC42u.MFC42u:NoName0249, Ord:0DBCh
                                  |
:00433881 E82A7F0800              Call 004BB7B0
:00433886 85C0                    test eax, eax
:00433888 7423                    je 004338AD
:0043388A 6A10                    push 00000010

* Reference To: USER32.MessageBeep, Ord:01C2h
                                  |
:0043388C FF15F86A4D00            Call dword ptr [004D6AF8]
:00433892 6AFF                    push FFFFFFFF
:00433894 6A10                    push 00000010

* Possible Reference to String Resource ID=21343: "The trial period has expired.  "
                                  |
:00433896 685F530000              push 0000535F

* Reference To: MFC42u.MFC42u:NoName0187, Ord:04ACh
                                  |
:0043389B E8A27D0800              Call 004BB642
:004338A0 5F                      pop edi
:004338A1 33C0                    xor eax, eax
:004338A3 5E                      pop esi
:004338A4 81C408020000            add esp, 00000208
:004338AA C20400                  ret 0004

******************************************************************************
*****************  FIN DE ROLLOS DE CODIGO ***********************************
******************************************************************************

Vosotros podeis hacer lo que querais, pero yo os aconsejo que no hagais caso
del segundo trozo de codigo y os centreis en el primero. Para ser mas precisos
en el codigo que pone,

85FF
0F858A020000
6A10

Y lo cambiais por un,

85FF
0F848A020000
6A10

(diablos! fijaros bien! he cambiado un 5 por un 4)
Con esto un jne se reconvierte en un je (Para los que os hallais dormido esto 
quiere decir antes saltaba "si no es igual" y ahora solo salta "si es igual") y
solo te sale el malefico mensaje si por casualidad aciertas el codigo de 
registro (que tambien seria mala suerte!)


TRABAJANDO CON UN EDITOR HEXADECIMAL

Hasta ahora solo hemos trabajado con la mente (que es cosa sabia, pero siempre 
se termina bajando de las nubes) pero un dia u otro hay que pisar tierra firme
y empezar a ensuciarse las manos,.... o sea hay que realizar fisicamente el
trabajo de la modificacion del codigo.

Para ello se requiere un editor hexadecimal. Existen millones en la red y 
muchos con parafernalia de dibujitos e incluso musiquitas, pero yo prefiero un
editor pelao de toda la vida que no ocupa casi nada y es viejo como la tos pero
no da sorpresa ninguna. Me refiero al PSEDIT, venerable herramienta donde las
haya (creo que data de 1994) que todavia reclama un registro de 24 dolares y
que pagaria a gusto si su creador no hubiera desaparecido de toda referencia
conocida en el mundo civilizado.

Con dicho editor, y una vez pasado los reclamos de pagos atrasados, se abre el
archivo hyena.exe Los que llegeis ahi solo vereis una lista de datos rarisimos
os adjunto un poco para que os hagais una idea.

00000020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
00000030  00 00 00 00 00 00 00 00-00 00 00 00 18 01 00 00   ................
00000040  0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54 68   ........!..L.!Th
00000050  69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F   is program canno
00000060  74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20   t be run in DOS
00000070  6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00   mode....$.......
00000080  AB 7E 0F 59 EF 1F 61 0A-EF 1F 61 0A EF 1F 61 0A   .~.Y..a...a...a.
00000090  07 00 65 0A ED 1F 61 0A-B9 00 72 0A E7 1F 61 0A   ..e...a...r...a.
000000A0  B2 3D 6A 0A EC 1F 61 0A-6C 03 6F 0A EA 1F 61 0A   .=j...a.l.o...a.
000000B0  B2 3D 6B 0A E4 1F 61 0A-B2 3D 65 0A ED 1F 61 0A   .=k...a..=e...a.
000000C0  96 3E 6A 0A EC 1F 61 0A-96 3E 65 0A ED 1F 61 0A   .>j...a..>e...a.
000000D0  07 00 6A 0A EC 1F 61 0A-EF 1F 61 0A E3 1F 61 0A   ..j...a...a...a.
000000E0  B6 3C 72 0A FC 1F 61 0A-EF 1F 60 0A B1 1C 61 0A   .<r...a...`...a.
000000F0  B0 3D 6A 0A CF 1F 61 0A-28 19 67 0A EE 1F 61 0A   .=j...a.(.g...a.
00000100  52 69 63 68 EF 1F 61 0A-00 00 00 00 00 00 00 00   Rich..a.........
00000110  00 00 00 00 00 00 00 00-50 45 00 00 4C 01 04 00   ........PE..L...
00000120  6B 40 0A 3D 00 00 00 00-00 00 00 00 E0 00 0F 01   k@.=............
00000130  0B 01 06 00 00 50 0D 00-00 30 08 00 00 00 00 00   .....P...0......

La parte izquierda es el indice del archivo (16 en hexadecimal es igual a 10),
en el centro esta el verdadero programa en codigo maquina y a la derecha esta
una traduccion literal en codigo ASCII, que solo sirve para algo cuando se
encuentra dentro del codigo algun texto para humanos ojos.

Como hemos dicho antes, se trata de buscar un trazo de codigo igual a

85FF
0F858A020000
6A10

Por lo tanto con el buscador del propio editor os divertis a buscar la secuencia
85FF0F858A0200006A10
Aseguraros Que solo hay una, porque sino podeis cambiar cualquier cosa menos lo 
que deseais. Una vez encontrada, no hay nada como cambiarla por

85FF
0F848A020000
6A10

despues lo salvais y listo.


COMPROBANDO QUE TODO FUNCIONE CORRECTAMENTE

Pues es tan sencillo como substituir el hyena.exe de origen por vuestra copia
manipulada. Lo lanzais y comprobais los resultados


ALGUNOS COMENTARIOS FINALES

Tal vez os preguntareis que encontre en la red origen de todos estos trabajos. 
Pues tampoco cosas del otro mundo. Como es moneda corriente, un monton de 
servidores semiabandonados, muchas impresoras, servidores de CD, algunas 
trazadoras, incluso algunos servidores convenientemente mantenidos, pero 
sobretodo,... cientos de PCs ociosos o rellenos de la mas estrambotica busura.

Curiosidades de la vida. Si en vez de utilizar el W32DASM, utilizais el OllYDBG
(otro dia escribire sobre el), se puede ver que el programita HYENA esta
prelicenciado a AMERITECH-SBC. Si alguno de los lectores sabe por que y como
esta registrado, please, me lo comunique. Tengo mucha curiosidad, (me parece
que es de lo unico que tengo en abundancia) pero ya sabeis que no tengo tiempo 
ni conocimientos suficientes para aranyar en el interior de programas ajenos.

*EOF*