miércoles, 9 de septiembre de 2009

PyDbgExt - Python para Windbg

Hola!,

Solo queria comentarles algo que yo al menos no conocia. Si bien hace un tiempo ya que esta, nunca habia escuchado de el, pero gracias a unos amigos (gracias Boken y Yibam) ahora se que existe.

Se trata de una extension para Windbg que permite utilizar Python desde Windbg. Ademas, de permitirnos tener Python en la linea de comandos de Windbg, podemos utilizar scripts ya predefinidos que ya vienen hechos.

Home del proyecto: PyDbgExt

Espero que les sea util.

Hasta pronto!.

Microsoft Windows SMB 2.0 SRV2.SYS Negotiate Request BSoD

Hola!,

Bueno, ayer se han publicado los parches para este mes de Microsoft y mas alla del parche que arregla un problema en la implementacion del protocolo TCP que varios, no solo MS, tuvieron que salir a subsanar, lo mas interesante esta semana sin duda fue el BSoD publicado el lunes que afecta a Windows Vista y Windows 7.

El advisory de MS aqui.



El bug esta en el header de SMB, v2, de la nueva implementacion que nos provee MS a partir de Windows Vista.

La funcion vulnerable es _Smb2ValidateProviderCallback() que mediante un dereferenced call nos permite controlar un short proveniente de un array. El campo problematico es el Process ID High del header de SMB en el SMB_NEGOTIATE:

SMB_Header

{

UCHAR Protocol[4];

UCHAR Command;

SMB_ERROR Status;

UCHAR Flags;

USHORT Flags2;

USHORT PIDHigh; // este es el problema cuando se le pasa "&"

UCHAR SecurityFeatures[8];

USHORT Reserved;

USHORT TID;

USHORT PIDLow;

USHORT UID;

USHORT MID;

}

Cuando en ese campo se introduce un "&", produce un BSoD. La explotacion no es trivial pero si existe una posibilidad.

Ya hay un PoC publico para demostrar el fallo aqui.

Para mas informacion pueden visitar las siguientes paginas:

1- http://blog.48bits.com/?p=510#comments
2- http://reversemode.com/
3- http://www.securityfocus.com/bid/36299/

Solo como comentario les digo que he probado el PoC en un Windows 7 Ultimate x64 RTM y no ha pasado nada, el SMB_NEGOTIATE se hace efectivamente con el "&" en el campo PIDHigh, pero no hay BSoD, el SMB_NEGOTIATE Response llega.

UPDATE1:
Metasploit acaba de sacar un exploit (no PoC) para esta vuln.

http://metasploit.com/svn/framework3/trunk/modules/exploits/windows/smb/smb2_negotiate_func_index.rb

Saludos.

sábado, 5 de septiembre de 2009

PyCon 2009 Argentina! #2

Hola!,

Bueno, voy a seguir comentandoles un poco que fue lo que vi el segundo dia de conferencia de PyCon 2009 Argentina.

Bien temprano, nos desayunamos una charla llamada: "Entendiendo Unicode" por Facundo Bastista. Basicamente, la charla hablaba de Unicode (cuac!), detallando un poco el contenido, podriamos decir que transitamos por lo problemas mas comunes que un programador encuentra a la hora de tener diferentes codificaciones y basicamente lo que recomendaba Facundo era que almacenemos siempre nuestros datos en unicode, cuando los necesitemos los decodifiquemos, trabajemos con ellos y posteriormente los volvamos a codificar antes de guardarlos, de esta manera evitamos problemas de recibir datos en una codificacion y terminemos guardandolos en otra y asi luego nos perdamos entre tantas codificaciones. Obviamente, estuvo mostrando los modulos standards que nos provee python para trabajar con Unicode.

La segunda charla del dia fue la llamada: "PyQt + wxPython + PyGTK" por Roberto Alsina y Cia. En esta charla se discutieron los diferentes aspectos de cada uno de estos paquetes para desarrollar aplicaciones basadas en GUIs. Basicamente se hablo de PyGTK y sus bondades, wxPython y su flexibilidad y PyQt y su madurez. No fue una charla en la cual cada uno intentaba de convencernos que usemos su toolkit preferido sino simplemente contarnos que es lo que cada uno trae y nos permite desarrollar, luego queda a criterio del programador cual utilizar. A mi, particularmente, me gusta mucho wxPython asi que les recomiendo ese. Por que wxPython? basicamente lo que me convencio fue la facilidad para aprender a programar con el y su completa API, posee la mayoria de los widgets modernos y permite manipularlos de una manera muy sencilla. Vale aclarar que cada uno de estos toolkits es cross platform.

La tercera charla a la que asisti fue: "from wiimote import fun" por Juan Manuel Schilliaci y Hector Sanchez, una charla dedicada a wiimote y Python.

La charla se baso en un par de scripts y experimientos que se hicieron utilizando el wiimote y Python. Los muchachos realizaron varias demos entre las que recuerdo que se utilizo el wiimote como control remoto de un media player asi como el control remoto de un auto. Tambien, se programo un script para poder utilizar el wiimote como un instrumento utilizando Oxygen, y ademas tenian un script que permitia utilizar el wiimote para juegos realizados con PyGame.

La cuarta charla tuvo que ver con "Taint Mode en Python" por Juan Jose Conti.

Esta charla se basaba en un proyecto nuevo dedicado a encontrar bugs en la etapa de desarrollo del software mediante variables manchadas. Una variable manchada basicamente es una variable que contiene un input malicioso y puede terminar generando un error en nuestro programa. Juan nos comento diferentes tecnicas para poder marcar este tipo de variables y poder informarle al usuario de estos posibles fallos y asi corregirlos antes de que el software sea puesto en produccion.

La quinta charla, "Twisted para seres humanos" por Lucio Torre, tuvo que ver, obviamente, con Twisted, es un completo engine para desarrollar aplicaciones de red, como por ejemplo, un servidor web. Basicamente, presento este proyecto como una alternativa a la hora de trabajar con multi procesos y multi threads para poder atender miles de peticiones concurrentes. La API de Twisted presenta un par de funciones mediante las cuales pueden atenderse miles de peticiones concurrentes con muy pocos recursos.

La sexta y ultima charla a la cual asisti el dia sabado fue "Behind the scenes: Python bytecode" por Matias Bordese. Fue una de las charlas que mas esperaba cuando vi el cronograma y sin duda fue la que mas me gusto y tuvo que ver con el trabajo que hago. Basicamente, Matias, nos estuvo explicando como es que funciona python desde adentro, su byte code, como la vm los interpreta, como reconstruir un programa a partir de su byte code (como obtener su codigo fuente), como escribir un programa directamente utilizando el byte code y un pequeño ejemplo de RCE sobre un crackme para resolverlo utilizando justamente solo el byte code de python.

Luego de esto, hubos una hora de charlas relampago y una plenaria dicatada por Colin Winter, llamada "Unladen Swallow", pero ya habia sido demasiado para mi por un fin de semana, casi 18 horas en la semana de Python habia agotado mi cerebro :P

En conclusion puedo decir que para ser la primera vez que se da una conferencia de Python en español, fue excelente!, solo eso!. Ademas, esta conferencia fue pure Python Argentina!, made in Argentina asi que eso me alegra mas aun!.

Hasta el proximo post!.

PyCon 2009 Argentina!


Hola!,

Acabo de volver de PyCon 2009, la primer conferencia en español sobre Python!. Es la primera que se hace en sudamérica una conferencia en español de esta índole. Si bien hay ya varias PyCon en otras partes del mundo, esta en particular es la primera hablada en español. Puden consultar el resto de las PyCon en esta página.

Bien, queria contarles un poco sobre las charlas a las cuales estuve asistiendo pero primero quisiera admitir de que mi espectativa con respecto a esta conferencia no era la mejor, mi idea fue: "voy para ver que hay", pero me lleve una sorpresa, volvì con muchas cosas nuevas en la cabeza y con un panorama completamente diferente al que esperaba. Charlas de muy buen nivel, muy bien explicadas y sobre todo, muy buen ambiente!.

Para ver el programa de las charlas pueden seguir este link.

Creo que esta de más decir que en esta conferencia, todas las charlas, contienen un contenido relacionado con el lenguaje de programación que es Python, intentando enriquecerlo con nuevas librerias, tecnologías e ideas para seguir creciendo.

La primera de las charlas a las cuales asistí fue "Python como un lenguaje de hacking" en la cual Andrés Riancho de Bonsai estuvo dando un pantallazo sobre un par de librerías utilizadas para la realizar assesmente de aplicaciones web. Estuvo hablando sobre la implementacion y la utlizacion de librerias como scapy y sobre algunos frameworks para fuzzing como Peach y w3af. En mi opinion, le falto detenerse un poco mas en algunos puntos pero a nivel contenido estuvo muy bien.

En particula lo que mas me gusto de esa charla fue scapy que hasta ahora solo la conocia de nombre pero me parecio una muy buena libreria que nos abstrae de por ejemplo, libpcap y que permite disectar paquetes de manera muy facil, asi como enviar cosas al cable sin problema, sin siquiera tener que formar un paquete valido.

Ademas, Peach que tambien lo conocia de nombre, me parecio excelente para armar fuzzers de una manera mucho mas inteligente que solo fuzzear un par de bytes de manera random. Si bien la curva de aprendizaje puede parecer algo lenta, puesto que hay que conocer un poco el procolo o formato de file que estemos fuzzeando para poder decirle a Peach que campos fuzzear y cuales no, me parece una muy buena opcion para armarse fuzzers un pequeño grado de inteligencia y poder encontrar vulns (si tenemos suerte).

La segunda charla a la cual asisti fue: "Byte Twidding: Optimizando el manejo de (muuuuuchos) bytes" por Alejandro J. Cura.

En esta charla se discutio al respecto de algunas tecnicas o mecanismos que se utilizan para programar en python cosas relacionadas con musica, imagenes y sonido que muchas veces suelen generar overhead sobre nuestra aplicacion. Alejandro, estuvo mostrando un par de libs interesantes para trabajar con imagenes como Python Imaging Library, librerias para trabajar con numeros como NumPy, y librerias para trabajar con sonido de las cuales no recuerdo el nombre pero que podran ver en la presentacion y los slides en la web de PyCon dentro de poco.

Basicamente, lo que Alejandro comentaba era no perder tiempo en escribir una libreria en C/C++ para procesar datos de maneras mas rapida y eficiente y proxearla median, por ejemplo, PyRex, sino hacer uso de algunas librerias como las mencionadas antes para poder realizar un procesamiento mucho mas eficiente de los datos y no enlentecer nuestro programa/script en python.

La tercer charla a la cual asisti fue: "¿Sueñan las serpientes electronicas?" por Fernando Russ (o Fruss para los amigos) y Alejandro David Weil (Dave o Tenuki para los amigos :P).

Esta charla la considero una de las mas interesantes de la conferencia puesto que hablaron de una "nueva" tecnologia que Python y las aplicaciones necesitaran en algun momento que sera la de detener la ejecucion de codigo en un momento dado, guardar el estado y el contexto de ese programa de alguna manera y luego poder volver a restaurarlo con el contexto que nosotros querramos. Basicamente es un desafio y los muchachos estuvieron mostrandonos conceptos, ideas, problemas y soluciones sobre dicho tema. Todo esto desemboca en una nueva libreria escrita en pure-Python llamada dreampy (la cual no es publica todavia) pero que pretende llevar a cabo esa idea, suspender ejecucion de codigo y restaurarlo esa ejecucion en un momento dado.

Otra de las charlas que mas me gusto fue: "Juegos educativos con Pygame" por Alejandro J. Cura y Hector Sanchez.

Yo pensaba que hacer un juego era realmente un trabajo tedioso, pesado y demasiado complejo (de hecho lo es para juegos en 3d y avanzados como los hay hoy) pero realizar juegos 2-d utilizando PyGame resulta muy sencillo y divertido. Los chicos nos llevaron a traves de un par de diapositvas en las cuales nos mostraban paso a paso como armar un sencillo juego en 2-d. Obviamente no es la unica lib en python para armar juegos, tambien esta COCOS 2d, pero PyGame es la mas madura de todas, hace alrededor de 10-15 años que se mantiene por lo cual es bastante estable y la mayoria de los bugs que el resto de las librerias posee, en PyGame ya fueron reparados.

Una de las ultimas charlas a las cuales asisti el dia viernes fue: "PyCasa inside: PyGTK on glade" por Natalia Beatriz Bidart y Matias Bordese.

En esta charla, Natalia nos llevo por un paseo alrededor de PyCasa, la aplicacion para administrar los albumnes de picasa web.

Ademas de mostrarnos como estaba hecho PyCasa, nos mostro como funciona y como se compone PyGTK y como desarrollar aplicaciones utilizando PyGTK + glade (un RAD para desarrollar GUIs en python). A mi particularmente, me gusto mucho puesto que yo hasta ahora habia realizado aplicaciones utiilzando Boa Constructor, VisualWx y wxPython, pero GTK + PyGTK parece una buena opcion aunque me parecio un poco mas dificil de aprender a utilizar que wxPython.

Luego de todas estas charlas, hubo un par de charlas relampago de las cuales rescate charla de Ricardo Quesada (el creador de COCOS 2d), que hablaba de PyWeek, una competencia para realizar un juego totalmente en python desde cero en tan solo 7 dias!, lo mejor es que se puede participar en la competencia desde nuestra propia casa y tanto en grupo como de manera individual.

Luego hubo una charla plenaria dicatada por Jacob Kanplan (principal interventor en el proyecto django) pero a esta charla no pude asistir asi que no puedo comentarles que fue lo que se discutio :P

Uff, ya escribi demasiado por ahora, cuando me tome un descanso vuelvo a postear sobre las charlas del segundo dia, sabado, que estuvieron igual de interesantes que el primer dia!.

Hasta dentro de un rato!.

sábado, 29 de agosto de 2009

PyPEELF - Multi-Platform & Multi-Format Binary Editor

Hola!, este post es para contarles un acerca de un proyecto Open Source en el que estamos trabajando con unos amigos. Se trata de un editor binario multi plataorma y multi formato.

Qué quiere multi-plataforma y multi-formato? Quiere decir que corre tanto en Windows / Linux, sea x86 o x64 nativamente y además soporta PE32, PE+ (PE64) y ELF y en un futuro pensamos darle soporte para Mac OS X.

Actualmente se encuentra en fase de desarrollo todavía, estamos deliverando que incluir en el primer release y que queda para los próximos. Además de lo básico de un editor binario contará con soporte para .NET, es decir que podrá visualizarse y editarse datos propios del formato .NET. Esto último es posible mediante CFF Explorer Suite de Daniel Pistelli pero la diferencia con PyPEELF es que este es Open Source, además de que es nuestra propia implementación.

Pensamos además incluir algunas herramientas extras para hacerlo lo mas completo posible. Todavia no tenemos una fecha fijada para el primer release pero esperamos que sea pronto. Cada uno de nosotros (3 por el momento) tenemos nuestros propios trabajos y esto lo hacemos como hobbie con lo cual el tiempo que le dedicamos no es suficiente pero hacemos lo posible.

Este proyecto esta realizado completamente en Python y utilizamos wxPython para la GUI.

Cuando tengamos mas noticias les informaremos!.

Hasta la próxima!.

sábado, 15 de agosto de 2009

Sector Virus - Virus Challenge #1

Hola!, Queria comentarles acerca de un nuevo grupo (actualmente se encuentra en Googlegoups) que se dedica a la enseñanza de programación de Virus. Actualmente cuenta con varios miembros de la lista Crackslatinos a los cuales les interesa, además del cracking, poder aprender y enseñar sobre programación de virus, analisis de malware, rootkits, etc.

Básicamente está orientada a gente que recién comienza en el tema y no tiene conocimientos sobre ASM y/o Virus pero también está abierta a debates sobre temas avanzados.

En un principio era ZeroPad el moderador e impulsor de la lista pero debido a su escaso tiempo para poder dedicarle a la lista, Asphixya se esta haciendo cargo y dandole un nuevo impulso proponiendo un Virus Challenge #1 que cuenta con 4 virus diseñados por el para poder realizar desde un analisis básico hasta algo mas avanzado.

Además de este VC, existe un curso sobre programación de Virus que se esta desarrollando y que actualmente va por la parte #13.

Los invito a darse una vuelta por el grupo: http://groups.google.com.ar/group/sector-virus

Además, pueden bajarse los tutoriales del curso de programación de virus desde aquí: http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION%20DE%20VIRUS/

Hasta la próxima!.

viernes, 31 de julio de 2009

Papers - BlackHat 2009


Este entrada es solo para comentar que ya estan disponibles los papers, slides y videos de las presentaciones que se dieron en BlackHat 2009.

http://www.blackhat.com/html/bh-usa-09/bh-usa-09-archives.html

Algunas interesantes como la que dieron Alfredo Ortega y Anibal Sacco de Core Security Technologies en la que nos dieron a conocer de un rootkit que viene preinstalado en casi todas las laptos del planeta :P

Lean!.

jueves, 23 de julio de 2009

Otra vez sopa! (nuevo 0-day en Adobe Flash)



Parece que anda circulando un nuevo worm explotando una nueva vulnerabilidad (todavia no patcheada) en Flash Player. Parece que ademas, este worm, afecta a Adobe Reader al poder embeber un .swf dentro de un .pdf.

Hasta el momento no hay mas noticias publicas. En Milw0rm se publico un supuesto PoC:

http://milw0rm.com/exploits/9233

Pero aparentemente segun Symantec este no tiene relacion con este nuevo 0day.

Para mayor informacion pueden visitar los siguientes sites:

http://twitter.com/Str0ke
http://twitter.com/hdmoore
http://blogs.adobe.com/psirt/2009/07/potential_adobe_reader_and_fla.html
http://www.kb.cert.org/vuls/id/259425

UPDATE1:
http://xorl.wordpress.com/2009/07/23/adobe-vulnerability-on-milw0rm/
http://blog.fireeye.com/research/2009/07/actionscript_heap_spray.html
http://isc.sans.org/diary.html?storyid=6847
http://extraexploit.blogspot.com/2009/07/something-about-cve-2009-1862-poc.html


Saludos.

lunes, 20 de julio de 2009

while(1), simple as that!.

Hola!,

queria contarles de un problema que tuve y como lo solucione muy facilmente.

La situacion era la siguiente: tenia un webserver corriendo y ademas otro programa que fowardeaba los requests http de determinada clase al webserver. Determinado request hacia que se cargue una dll on-demand que yo queria tracear. En principio, sospechaba del proceso responsable de cargar dicha dll pero probando con Olly varias cosas como por ejemplo, setearlo para que se detenga cuando una dll nueva es cargada, no funcionaba, ni tampoco un BPX en LoadLibraryA. La cosa se ponia dificil.

Conversando un rato con un amigo (Yibam) y comentandole el problema que tenia, ideamos un par de soluciones que podian llegar a resultar, como por ejemplo, utilizando un driver y desde kernel seteando un callback para que cuando se carguen las dlls podamos determinar que proceso era y que dll cargaba. Otra idea fue implementar eso mismo pero desde user-mode con uhooker....todas eran soluciones un tanto liosas para algo tan simple.

Luego, hablando con otro amigo (marciano) me dijo: "y si pones un INT3 en el DllMain?", la idea era buena, la probe pero resulta que el webserver parecia catchear la excepcion y tirar un error :(

Finalmente di con la solucion (gracias marciano nuevamente), por que en lugar de un INT3 no colocamos un JMP EIP (while(1))?. Pues dicho y hecho, eso fue lo que hice y pum!!!! habia un proceso que se "comia" el 99% del CPU!, attacheandome a dicho proceso pude comprobar que era el causante de cargar la dll que tanto buscaba.

Al final, un problema que parecia sencillo, para el cual habiamos diseñado soluciones algo complejas, termino solucionandose con algo super sencillo!, como era de esperar.

Bueno, eso, una estupidez pero queria contarselas!.

Hasta la proxima!.

lunes, 13 de julio de 2009

Nuevo 0day en Microsoft Office (Web Components) CVE-2009-1136

Hola!,

Parece que MS ha publicado un nuevo advisory sobre una vulnerabilidad en Web Components instalado por varias versiones de Office (XP, 2003, 2007). Aparentemente es un ActiveX cuyo CLSID es {0002E541-0000-0000-C000-000000000046}.

Aqui la lista de software afectado:

Microsoft Office XP Service Pack 3
Microsoft Office 2003 Service Pack 3
Microsoft Office XP Web Components Service Pack 3
Microsoft Office 2003 Web Components Service Pack 3
Microsoft Office 2003 Web Components for the 2007 Microsoft Office system Service Pack 1
Microsoft Internet Security and Acceleration Server 2004 Standard Edition Service Pack 3
Microsoft Internet Security and Acceleration Server 2004 Enterprise Edition Service Pack 3
Microsoft Internet Security and Acceleration Server 2006
Internet Security and Acceleration Server 2006 Supportability Update
Microsoft Internet Security and Acceleration Server 2006 Service Pack 1
Microsoft Office Small Business Accounting 2006

Aqui esta el advisory de Microsoft:

http://www.microsoft.com/technet/security/advisory/973472.mspx

Algunos links de interes mas:

http://blogs.technet.com/msrc/archive/2009/07/13/microsoft-security-advisory-973472-released.aspx

http://blogs.technet.com/srd/archive/2009/07/13/more-information-about-the-office-web-components-activex-vulnerability.aspx

PoCs:
http://downloads.securityfocus.com/vulnerabilities/exploits/35642.html
http://downloads.securityfocus.com/vulnerabilities/exploits/35642.rb

A patchear sus sistemas!.

viernes, 10 de julio de 2009

Crackinglandia ahora en twitter!

Hola!,

Si, como dice el titulo del post, ahora Crackinglandia en Twitter!:

http://twitter.com/crackinglandia

Eso, un update rapido!.

Nos vemos!.

sábado, 16 de mayo de 2009

Cracking en linux por Juan Jose

Hola manola!,

Solo queria comentarles sobre el gran trabajo que esta haciendo Juan Jose (Amigo de la lista CracksLatinoS!) para enseñarnos sobre cracking en Linux. Hasta ahora lleva publicados 4 tutoriales acerca de este tema, los dos primeros son basicos acerca del manejo de GDB y los ultimos escritos hablan acerca de un "nuevo" framework que entre muchas de las tools que trae, incluye un debugger.

Para el que quiera chusmear los tutoriales, pueden encontrarlos aqui:

Crackeando en Linux por Juan Jose

Cualquier duda o pregunta pueden escribirle directamente a Juanjo que no tendrá ningun tipo de problema en contestarles!.

Saludos.

miércoles, 6 de mayo de 2009

[CLS].Themida.desde.cero.PARTE.I











Hola!,

Aca les dejo el primer tutorial de una saga. Espero que les guste.

[CLS].Themida.desde.cero.PARTE.I.by.+NCR

NOTA: si 4shared les avisa de un virus en el paquete es solo porque viene con los programas packeados con themida y dumpeados. La heuristica del AV lo detecta como virus pero en realidad no es mas que por el polimorfismo del codigo del packer. Pueden bajarlo sin problemas.

Hasta la proxima!.

sábado, 18 de abril de 2009

Reto panda - Solucion Reto 1, 2 y 3


Hola!,

Hace unos dias cerro el reto panda. Consistia de tres desafios (crackmes) que habia que resolver. Yo no pude ver ninguno todavia por falta de tiempo pero algunos amigos si lo hicieron y ha resuelto el primero de ellos, asi que aqui les dejo los tutoriales:

Soluciones al reto1:

Solucion por Shaddy

Solucion por Thor - Parte 1
Solucion por Thor - Parte 2
Solucion por Thor - Parte 3

Solucion(nes) reto2:

Solucion por Abbsha y GUAN DE DIO

Soluciones al reto3:

Solucion por Romansoft

Hasta la proxima!.

miércoles, 1 de abril de 2009

[NCR2009] Black Crk y pydbg con VisualWx PARTE2

Hola!,

Aca les dejo la segunda parte de este tutorial.

[NCR2009] Black Crk y pydbg con VisualWx PARTE2

Hasta la proxima!.