Archivo de la categoría: Cracking

Asterisk SIP cracking

Hay mucha gente que dado un problema en el registro con su Asterisk no duda en pegar el log entero en un foro para ver si alguien le puede ayudar con su problema. Como en el log no se ve ninguna contraseña, se supone que es seguro pegarlo, ya que no aparece en claro. Me refiero a algo así:


<--- SIP read from UDP:X.X.X.X:5064 --->
REGISTER sip:sip.server.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.34:5064;branch=z9hG6bK7786e6f33d4b2d9d
From: "pruebas" <sip:pruebas@sip.server.com>;tag=2d3ce7700b58c2d9
To: <sip:pruebas@sip.server.com>
Contact: <sip:pruebas@192.168.1.34:5064;transport=udp>
Supported: path
Call-ID: 83a422169dd5328e@192.168.1.34
CSeq: 40001 REGISTER
Expires: 120
User-Agent: Grandstream GXP2000 1.2.5.3
Max-Forwards: 70
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK,MESSAGE
Content-Length: 0

<------------->
--- (13 headers 0 lines)
---Sending to X.X.X.X:5064 (no NAT)
<--- Transmitting (NAT) to X.X.X.X:5064 --->
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.34:5064;branch=z9hG6bK7786e6f33d4b2d9d;received=X.X.X.X;rport=5064
From: "pruebas" <sip:pruebas@sip.server.com>;tag=2d3ce7700b58c2d9
To: <sip:pruebas@sip.server.com>;tag=as6f72938e
Call-ID: 83a422169dd5328e@192.168.1.34
CSeq: 40001 REGISTERServer: sip3
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="sip3", nonce="5f56a903"
Content-Length: 0

<------------>
Scheduling destruction of SIP dialog '83a422169dd5328e@192.168.1.34' in 32000 ms (Method: REGISTER)
<--- SIP read from UDP:X.X.X.X:5064 --->
REGISTER sip:sip.server.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.34:5064;branch=z9hG6bK7786e6f33d4b2d9d
From: "pruebas" <sip:pruebas@sip.server.com>;tag=2d3ce7700b58c2d9
To: <sip:pruebas@sip.server.com>
Contact: <sip:pruebas@192.168.1.34:5064;transport=udp>
Supported: path
Authorization: Digest username="pruebas", realm="sip3", algorithm=MD5, uri="sip:sip.server.com",
nonce="5f56a903", response="f43b50de15bb07f909787dfb8ab487f8"
Call-ID: 83a422169dd5328e@192.168.1.34
CSeq: 40002 REGISTER
Expires: 120User-Agent: Grandstream GXP2000 1.2.5.3
Max-Forwards: 70
Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE,UPDATE,PRACK,MESSAGE
Content-Length: 0

<------------->
--- (14 headers 0 lines)
---Sending to X.X.X.X:5064 (NAT)
<--- Transmitting (NAT) to X.X.X.X:5064 --->
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.34:5064;branch=z9hG6bK7786e6f33d4b2d9d;received=X.X.X.X;rport=5064
From: "pruebas" <sip:pruebas@sip.server.com>;tag=2d3ce7700b58c2d9
To: <sip:pruebas@sip.server.com>;tag=as6f72238e
Call-ID: 83a422169dd5328e@192.168.1.34
CSeq: 40002 REGISTER
Server: sip3
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Expires: 120
Contact: <sip:pruebas@192.168.1.34:5064;transport=udp>;expires=120
Date: Sat, 11 Aug 2012 08:59:34 GMT
Content-Length: 0

<------------>

sip3*CLI>


Antes de ver cómo podemos sacar partido a esta información, que el usuario tan amablemente nos publica en los foros, vamos a ver cómo se hace un registro en un Asterisk.

En primer lugar mandamos un paquete de registro al servidor de VoIP, indicando nuestro deseo de registrar un terminal. Para ello le enviaremos una serie de datos (a través de un paquete REGISTER) , pero nunca nuestra contraseña.

Tras mandar la petición al servidor, este nos devolverá un error ‘401 Unauthorized‘ pasándonos 2 valores que necesitaremos para completar el registro. Estos valores son: ‘realm‘ y ‘nonce‘. Acto seguido, generaremos un MD5 (indicándolo como valor de la variable response) que nos servirá para registrarnos, enviando un nuevo paquete REGISTER .  El servidor analizará ese response y nos devolverá un 200 si todo va bien, o un nuevo 401 en caso de que la contraseña sea incorrecta.

¿Y cómo generamos ese MD5 que realizará la validación? Pues de la siguiente forma:



response = md5(A:nonce:B)

-> nonce recordemos que nos lo facilita el servidor tras el primer REGISTER

A = md5(user:realm:pass)

-> user es nuestro usuario, que podemos ver, en claro, en el paquete generado en el primer REGISTER
-> realm también nos lo facilita el servidor tras el primer REGISTER
-> pass es la contraseña del usuario que desconocemos

B = md5(REGISTER:uri)

-> REGISTER es esa palabra tal cual
-> uri la podemos ver también en el primer paquete y tiene la forma 'sip:host.com'

De manera que con el log que nos han posteado tenemos todos los ingredientes, incluyendo el ‘response’, que es el MD5 final con la contraseña incluida y, lo único que desconocemos de todo esto, es la pass, algo que podremos intentar crackear teniendo el resto de datos.

Analicemos:


A = md5(user:realm:pass)
A = md5(pruebas:sip3:???)

B = md5(REGISTER:uri)
B = md5(REGISTER:sip:sip.server.com)
B = b726873895519048d1838bf7b4d78df6

response = md5(A:nonce:B)
response = md5(md5(pruebas:sip3:???):5f56a903:b726873895519048d1838bf7b4d78df6)
response = f43b50de15bb07f909787dfb8ab487f8  <- según la captura

Con un simple crackeador de MD5 podremos averiguar la contraseña de ese usuario que ha publicado el log en un foro.

A ver quién averigua la contraseña del ejemplo, que es de las fáciles 🙂

Lamerz!

Esto es una copia del post de NCR como apoyo por el plagio que ha sufrido y para difundir un poco más lo ocurrio.

Puedes ver la entrada original aquí: http://crackinglandia.blogspot.com/2010/11/lamerz.html

Hola!,

este pequeño post es para contarles algo sobre lo cual tal vez ya esten al tanto.

La semana pasada, un compañero de la lista de Crackslatinos me señalo un post en un blog, ese post era el siguiente:

http://martik-scorp.blogspot.com/2010/11/martk-unpacker.html

Seguramente, ese link no les va a funcionar, sin embargo, todavia se puede acceder desde la cache de google: http://goo.gl/0J0o9

Bajo una vista rapida no parece nada del otro mundo, otra tool para desempacar … pero mirando detenidamente, veo que tiene muchas similitudes con FUU:

Epa!, los mismos plugins que FUU?, las mismas tools que FUU?. Bueno, pero FUU es open source bajo GPLv3, con lo cual, cualquiera puede agarrar el source, agregar nuevas funcionalidades y hacer su propio release, obviamente bajo la misma licencia que el proyecto original, ademas, esta obligado a dar creditos al autor original. Obviamente, las modificaciones hechas:

7. Additional Terms. “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: * a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or * b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or * c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or * d) Limiting the use for publicity purposes of names of licensors or authors of the material; or * e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or * f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

Pero cual fue la sorpresa? bueno, primeramente, no habia ninguna mejora a simple vista pero lo que si se podia observar era que todas las strings habian sido editadas:
Y peor todavia, en los plugins los creditos habian sido editados tambien, atribuyendole los creditos a un tal MART!K:

Para los detallistas, se puede observar que los espacios sobrantes en las strings fueron reemplazados por espacios en blanco, lo cual me da la idea de que ni siquiera se tomo el trabajo de compilar nuevamente el proyecto sino que mediante algun tipo de editor de recursos como ResHackers, simplemente edito los strings, cambio un icono y un BMP.

Al ver esto, me senti un boludo, por que? porque todo el laburo que habia hecho y compartido con la comunidad, de buena fe y con muchas ganas, habia sido plagiado.

Luego de ver todo esto, decidi enviar un mail al autor y aca estan los mails intercambiados con el:

—————
from +NCR/CRC! [ReVeRsEr] to Martik.Panosian@gmail.com
date Tue, Nov 23, 2010 at 2:05 PM
subject FUU & MART!K Unpacker
mailed-by gmail.com

Hi!, i’m the author of FUU (and MART!K Unpacker too¿?), i saw your blog and post about FUU, sorry, MART!K Unpacker. You are stealing a project, and idea just replacing strings???? come on!!! please, write your own version!.

BR,
NCR
—————

La respuesta fue la siguiente:

—————
from martik panosian to “+NCR/CRC! [ReVeRsEr]”
date Tue, Nov 23, 2010 at 2:32 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com
signed-by gmail.com

hello, yes, you right, but the source code is free, isnt it? btw, i appreciate your work. i dont see any wrong thing with what i was done!
—————

A lo cual conteste:
—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:34 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

yes, but i don’t see any link or mention to the original project, so …..
—————

Y agregue lo siguiente:

—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:37 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

in the readme and license you saying that YOU create the software and that’s no true, so, please add a mention to the original project and author.

BR,
NCR
—————

Despues de un rato, respondio lo siguiente:

—————
from martik panosian to “+NCR/CRC! [ReVeRsEr]”
date Tue, Nov 23, 2010 at 2:49 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com
signed-by gmail.com

ok, you right. i will mention to your blog and original software as soon as possible. sorry about that. p.s. now im on mobile. as soon as i get my pc, i’ll fix that.
—————

Con lo cual respondi:
—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 2:50 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

Thanks!
—————

Luego de esto, la mencion fue agregada pero los creditos al proyecto y autor original tanto en el binario como en los plugins seguian (y siguen) sin aparecer, con lo cual, envie tres nuevos mails al autor y obviamente, ya no tuve mas respuestas de su parte:

—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Tue, Nov 23, 2010 at 3:02 PM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

btw, i can’t see any new feature in your version, it would be great if you contribute to the original project or add something new to your own version.

Cheers,
NCR
—————

—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Wed, Nov 24, 2010 at 11:44 AM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

Thanks for adding the mentions to FUU in your blog. Btw, you should do it in your package too and release the modified source code of you tool, remember that the FUU project is under GPLv3, so, if you release a modified version of my sources, then, you must release those modified sources.

Have a nice day.
—————

—————
from +NCR/CRC! [ReVeRsEr] to martik panosian
date Wed, Nov 24, 2010 at 11:54 AM
subject Re: FUU & MART!K Unpacker
mailed-by gmail.com

one last thing: the log messages must remain as the original, for example, in the aspack plugin it says: “Developed by: Mart ik Panosian” and we all know that is not true, so, please, do it in the right way. GNU legal team was contacted in order to verify that you are complying with the GPLv3 license.
—————

Luego, MCKSys, de la lista de Crackslatinos, hizo la denuncia pertinente a la gente de blogger y esta fue la siguiente:

—————
from MCKSys Argentina reply-to crackslatinos@googlegroups.com to crackslatinos@googlegroups.com
date Wed, Nov 24, 2010 at 9:38 PM
subject Re: {CrackSLatinoS} Malas noticias NCR
mailing list Filter messages from this mailing list
mailed-by googlegroups.com
signed-by googlegroups.com

Bueno, algo es algo. Reescribo el mensaje recibido por la denuncia que hice: Hemos recibido su aviso de incidente de la DMCA en http://martik-scorp.blogspot.com/2010/11/martk-unpacker.html con fecha del 23.11.2010 y hemos revisado el contenido que supuestamente infringe la ley. De acuerdo con nuestra política, hemos dejado el contenido sin conexión y se ha informado de la reclamación al autor del blog. Si en esta entrada vuelve a aparecer el contenido objeto de la infracción, le rogamos que nos informe de ello para tomar las medidas oportunas.

Atentamente,
El equipo de Blogger

Esperemos que sirva para algo…
—————

Luego de eso, su post en el blog fue removido.

Ademas, otra persona muy reconocida del ambiente, Nicolas Brulez, al cual le agradezco la gentileza, hizo un pequeño analisis sobre este tal “MART!K”:

http://omgwtfhax.org/

Luego, en los foros de ARTeam y tuts4you me dieron mas ejemplos sobre este tipo, que al parecer, es un lamer bien conocido en el ambiente (no lo era hasta ahora por mi), se encarga de rippear muchos de los releases que la scene va sacando, de hecho, si miran en su web van a ver muchos releases de grupos conocidos pero obviamente rippeados por el.

Agradezco tambien a Guan de Dio por poner un mensaje en su blog: http://guandedio.no-ip.org/

Ah, algo que me olvide de mencionar es que la licencia de este tal “MART!K Unpacker” no es la GPLv3 sino “MART!K License”.

Que quiero exponer con todo esto? pues que un software OpenSource es libre pero no en el sentido de “Cerveza gratis” como bien dice la GNU, sino en el sentido de que cada uno puede agarrar ese codigo, modificarlo, distribuirlo, copiarlo pero siempre y cuando reconozca al autor original y coloque los creditos correspondientes, aunque la licencia no lo este obligando, siempre es de buena educacion dar creditos al autor correspondiente.

Asi que por favor, a no chorear!!! 🙂

Hasta la proxima!.

Saludos.

UPDATE (14/12/2010): Parece que el mismo día que armé este post, y al ver que su post original en su blog fue removido por la gente de Blogger, el amigo Mart!k abrió un nuevo blog en wordpress con el mismo post sobre “su” unpacker: http://martik2scorp.wordpress.com/2010/11/28/martk-unpacker-1-0/. Triste! pero … que se puede esperar de un lamer?.

Creación de shellcodes y exploits en win32

–[ Contenido

1 – Introduccion

2 – Antes de empezar
2.1 – Conocimientos previos
2.2 – Herramientas

3 – Creando un exploit local
3.1 – Creando un programa vulnerable
3.2 – Programando una shellcode
3.3 – Creando un exploit

4 – Creando otro exploit local
4.1 – Programando una shellcode
4.2 – Creando un exploit
4.3 – Solucion de problemas

5 – Haciendo mas estandar nuestro exploit

6 – Creando un exploit remoto
6.1 – Creando un programa vulnerable
6.2 – Programando una shellcode
6.3 – Creando un exploit

7 – Referencias

8 – Agradecimientos

ver la entrada completa

Concursos CrackSLatinoS

Para el que no conozca CrackSLatinoS, es una comunidad de crackers en la que se todan todos los temas de ingeniería inversa (cracking, reverses, exploits, malwares, etc). De la mano del gran maestro Ricardo Narvaja, hay toda una lista de expertos en la materia que puedes encontrar en el grupo: http://groups.google.com/group/crackslatinos?hl=es.

Si te gusta la ingeriería inversa, en la web de Ricardo tienes manuales para aburrir, de todo tipo. Es más, cada mes hay concursos con diversas secciones en los que vengo colaborando desde hace unos meses. Entre los concursos y la cantidad de manuales (miles) que hay en su web (y todos en la lengua de cervantes) he podido aprender muchisimo. Gracias a la ayuda de todos los miembros de CrackSLatinoS que son una gente fantástica y siempre hacen lo posible por ayudar con tus dudas.

Como ya he comentado, llevo unos meses haciendo los concursos, en los que a final de mes enviamos un tutorial con nuestras soluciones. Luego Ricardo los sube todos a su web y se convierten en nuevos manuales de obligada lectura. De esta forma la información nunca está obsoleta ya que, muchas veces buscamos información en Internet sobre algo y vemos manuales muy antiguos que ya no sirven en estos tiempos.

Dejo un link al último tutorial que mandé para el concurso (correcpondiente a la sección de Exploitme) en el que había que hacer un exploit para el programa NaviCOPA, que es un servidor web para Windows. Podeis descargar el tutorial aquí: exploit NaviCOPA

El exploit lo resuelvo de dos formas:

  • Buscando con un pequeño script y con la ayuda del OllyDbg el tamaño donde se desborda el buffer
  • Comparando con Turbodiff las diferencias entre esta versión y la siguien en la que está parcheado el error

Aprovecho para dar las gracias al maestro Ricardo Narvaja por el tuto de Turbodiff y por resolver siempre mis dudas.