miércoles, 28 de septiembre de 2011

[TOOL] DRx Calculator v1.0

Mientras dictabamos el training Defeating Software Protections uno de los temas que se tocaban era el de como fabricanos un Loader Debugger (LD).

Para aquellos que no sepan de que se trata un LD les diré rápidamente que no es mas que un Loader (un programa que carga otro) pero con las capacidades de un debugger. Un LD permite tener una comunicación sincrónica con el target.

El hecho y motivo de este post tiene que ver con que cuando construimos un LD queremos colocar breakpoints para poder detenernos en ciertos lugares del programa y hacer nuestras modificaciones.

Como todo debugger, podemos colocar software breakpoints, memory breakpoints y hardware breakpoints. Estos últimos tal vez sean los más tediosos de colocar dado que tenemos que colocar un par de valores en una estructura llamada CONTEXT:


typedef struct _CONTEXT {
DWORD ContextFlags;
DWORD Dr0;
DWORD Dr1;
DWORD Dr2;
DWORD Dr3;
DWORD Dr6;
DWORD Dr7;
FLOATING_SAVE_AREA FloatSave;
DWORD SegGs;
DWORD SegFs;
DWORD SegEs;
DWORD SegDs;
DWORD Edi;
DWORD Esi;
DWORD Ebx;
DWORD Edx;
DWORD Ecx;
DWORD Eax;
DWORD Ebp;
DWORD Eip;
DWORD SegCs;
DWORD EFlags;
DWORD Esp;
DWORD SegSs;
BYTE
ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
} CONTEXT;

Básicamente, lo que se hace es colocar las direcciones, en las cuales queremos que estén los hardware breakpoints, en los registros que van desde DR0 a DR3 (DEBUG REGISTERS) y luego, colocar un valor en el registro DR7 que indica tres cosas:

Que registro se utilizó para colocar el HB
De que tipo es el HB (ON_EXECUTION, ON_READ, ON_WRITE)
La cantidad de bytes que abarcamos con el breakpoint (1, 2 ó 4)

Esa constante que se coloca en DR7 se calcula en base a una tabla (http://members.fortunecity.com/blackfenix/seh.html). Por ejemplo, si quisieramos colocar un HB ON_EXECUTION en DR0, deberíamos de hacer una cuenta como esta:


LOCAL_EXACT_BPM_ENABLED + DR0_LOCAL_EXACT_BPM_ENABLED + DR0_EXECUTION + DR0_LEN1

Según la tabla, los valores para cada constante son:


LOCAL_EXACT_BPM_ENABLED = 100000000b
DR0_LOCAL_EXACT_BPM_ENABLED = 1
DR0_EXECUTION = 0
DR0_LEN1 = 0

Por lo tanto, el resultado es: 101h

Para no tener que andar haciendo ninguna cuenta hice una pequeña aplicación que calcule las cosas solitas, nada del otro mundo pero tal vez a alguno le pueda ser útil (sobre todo a aquellos que siempre tienen fiaca :P):


Puede bajar la aplicación aquí.

UPDATE: Subí una nueva version (v1.1) con un pequeño fix acá.

Hasta la próxima!.

miércoles, 21 de septiembre de 2011

Defeating Software Protections - Un año más!


Como dice el título, un año más se suma a nuestra experiencia como trainers en la Eko.

Este 2011 nos dejo un buen sabor de boca con el training "Defeating Software Protections" que dictamos junto con @ricnar456 y @solidcls en la Ekoparty.

El training comenzó con una introducción básica a ASM (para todos aquellos que no tenian muy fresco el tema) y luego continuo con la Introduccón al Cracking en la cual se comienzan a ver las técnicas básicas de protección y los mecanismos que existen para atacarlas. Algunos de los temas mas importantes que se trataron fueron Loaders, Cracking en Java, Cracking en .NET y Unpacking, pero además se tocaron otros temas como Loaders y estructura PE.

Realizamos ejercicios paso a paso junto con los alumnos y prácticas para ver si la gente que asistió realmente estaba aprendiendo :)

Por los comentarios que recibimos de la misma gente que asistió al training podemos decir que fue todo un éxito! todos quedaron contentos!.

Quiero agradecer, primero, a Core Security por permitirnos preparar el training, a la organización de la Ekoparty por darnos el lugar para dictarlo, a las personas que asistieron y a mis compañeros con los cuales preparamos todo el material.

Les dejo una postal!.

 


lunes, 5 de septiembre de 2011

BlackHat 2011 USA - Defcon 19

















Hace un par de semanas tuvieron lugar en Las Vegas dos de las conferencias mundiales mas importantes en lo que a seguridad informática se refiere, BlackHat y Defcon.

Tuve la suerte de estar este año allí y poder ver de que se trata. Lamentablemente no fui como speaker (no faltará oportunidad) pero de todas maneras fue una experiencia increíble que sin dudas quiero volver a repetir.

Este post es para contarles un poco sobre algunas de las charlas a las que asistí. No quiero discutir en detalle cada una de las charlas sino comentarles un poco de que trató cada una. Para tener más información al respecto pueden ver cada uno de los papers y/o videos de los mismos.

Vamos a hablar primeramente de las charlas de BH.

Constant Insecurity: Things you didn't know about (PE) Portable Executable file format (Mario Vuksan + Tomislav Pericin): Esta fue la primera de las charlas a las que asistí. Los que me conocen saben que el trabajo de la gente de ReversingLabs me agrada mucho y como no podía ser de otra manera esta charla no podía perdermela. Lo primero que se hizo fue dar un breve repaso por la estructura PE y luego se contrasto lo que dice el PECOFF con lo que realmente hace el loader de Windows al cargar un ejecutable. Se mostraron los diferentes tipos de malformaciones que existen en la estructura de un ejecutable que según la documentación oficial de Miscrosoft no pasarían como archivos válidos, sin embargo los archivos se ejecutaban perfectamente.

Muchas de las malformaciones en archivos ejecutables no son contemplados por las herramientas que hoy en día se utilizan para realizar RCE. Por lo tanto, es interesante para cualquier persona sean malware analysts o virus writters, desarrolladores de packers o crackers, etc; estar al tanto de estás cosas para no fallar en su análisis o desarrollo, respectivamente.

Aquí pueden encontrar el paper y los slides de la charla.


Attacking Clientside JIT Compilers (Chris Rohlf + Yan Ivnitskiy): Esta charla fue interesante hasta un punto dado. Por qué? pues porque en un punto era necesario tener una idea clara sobre JIT compilers, cosa que yo no tengo :P.

La charla se baso en dos ejes, los JITs de Mozilla y el de LLVM. Mostraron como funciona cada uno de ellos y sus diferencias. Esta parte estuvo un poco densa para mi gusto pero tal vez haya sido por la falta de conocimiento sobre el tema.

Además, hablaron sobre varias cosas más como vulnerabilidades en los JIT compilers y sobre técnicas de explotación como JIT Spray, JIT Feng Shui (una variación del Heap Feng Shui) y especialmente sobre las herramientas que desarrollaron y utilizaron en su research.

Para el que quiera saber un poco más al respecto, puede consultar el paper y los slides aquí.

Windows Hooks of Death: Kernel Attacks Through User-Mode Callbacks (Tarjei Mandt): Esta era una de las charlas obligadas para todas aquellas personas a las cuales nos apasiona el mundo de ring0, los kernels y las cosas a muy bajo nivel.

En esta charla se habló sobre las decenas de vulnerabilidades que Tarjei encontró en el kernel de Windows, más precisamente en win32k.sys cuando maneja la transición de un callback desde user-mode a kernel-mode. Cada una de las vulnerabilidades fue clasificada en una categoría específica, habló de cada una de esas categorías, donde fue que estaba la falla y como se podía hacer para explotarla aunque primeramente nos dió un paseo por win32k y varias estructuras utiilzadas por el mismo. Finalmente, hizo dos demos en las cuales nos enseñó  como logró explotar de manera reliable dos de esos bugs. Una charla que no tuvo desperdicios.

Aquí pueden encontrar los slides y el paper de la charla.

Reverse Engineering Browser Components: Dissecting and Hacking Silverlight, HTML 5 and Flex (Shreeraj Shah): Al leer sobre que iba a tratar esta charla estaba bastante entusiasmado por asistir. Cosas que tienen que ver con la Web directamente como HTML5, Silverlight y Flex no me apasionan demasiado, sin embargo, para mi trabajo diario era una buena oportunidad de aprender algo al respecto para luego aplicarlo.

Shreeraj contó sobre el uso de las diferentes herramientas existentes hoy en día para atacar cada una de las tecnologías mencionadas. Al menos yo, esperaba ver un IDA abierto en algun momento con código, contando algo más que presionar un botón para poder realizar determinada tarea.

De todas maneras, al que le interese puede mirar los slides + paper.

Playing In The Reader X Sandbox (Paul Sabanal + Mark Yason):Esta charla estuvo buena salvo por el final donde se hicieron los piolas. Antes les cuento más o menos de que iba la charla.

Como se podrán imaginar, en la charla se discutía sobre el sandbox implementado en Adobe Reader X. Primero hablaron de la relación entre este sandbox y el de Chromium (sí, parece que está basado en el sandbox de Chromium), las herramientas que utilizaron para poder reversearla, sobre la arquitectura y mecanismos de restricciones que posee y lo más importante para un Exploit Writter, que se puede hacer y que nó, es decir, limitaciones y debilidades del sandbox.

Como les dije al principio, todo iba bien hasta el final donde hicieron dos demos. La primera fue sobre una vulnerabilidad conocida publicamente (CVE-2011-0609). En la segunda demo, aparentemente, bypassearon el sandbox con un bug que no es público hasta el momento y del cual no se conocen detalles. Esto último fue algo que no me pareció que le sumara valor a la charla, simplemente, a mi manera de ver las cosas, lo mostraron como una manera de decir: "Miren que piolas que somos, tenemos un 0-day y ustedes no". Porque además fue algo como: "Ahora vamos a  hacer la segunda demo en la cual vamos a bypassear el sandbox.", "OK, demo terminada", "No más preguntas". WTF?.

En fin, el que quiera puede mirar los slides y el paper.

Algunas de las charlas de Defcon 19 a las que asistí fueron:

Chip & PIN is Definitely Broken (Andrea Barisani + Adam Laurie + Zac Franken + Daniele Bianco): Esta charla fue otra de esas en las que si no estás un poco al tanto de las cosas te perdes algunas otras :P pero en términos generales, hablaron sobre estas tarjetas que pueden ser utilizadas como débito y crédito gracias a un chip que tienen y les permite hacer este tipo de transacciones. En Argentina no conozco a nadie todavía que tenga una de estas, de hecho creo que en nuestro país aún no existe este sistema sino que tenemos que contar con dos tarjetas, una de débito y otra de crédito.

La charla se centraba en los mecanismos de protección y validación que se tienen para este tipo de tecnología y como un atacante podía clonar y utilizar una tarjeta robada.

Acá pueden encontrar el paper de la charla.


Economics of Password Cracking in the GPU Era (Robert "Hackajar" Imhoff-Dousharm): El speaker en esta charla era un troll hecho y derecho. La verdad, lo que menos importó fue la charla en sí, podría haber estado hablando de como construir un cohete a marte que a nadie le hubiera interesado. Puedo resumir esta charla en dos cosas: Troll y pendejas golpeandose con almohadas. Pero antes de seguir, les voy a comentar un poco de que iba la cosa.

La charla fue meramente informativa. Habló sobre que hardware y software necesitamos para crackear passwords utilizando GPUs.  Además, había una planillita que calculaba el tiempo que tardaríamos en crackear un password de x cantidad de caracteres utilizando una configuración determinada. Ah, y cual sería la mejor máquina que podríamos armar para poder crackear passwords!, lástima que salía algo de 52.000 dólares!.

Ahora sí, lo interesante de la charla fueron dos cosas:

1) En casi toda la charla se la pasó trolleando a todas aquellas empresas que tenían productos para crackear passwords y que, según su opinión, no servían para nada.

2) En un momento de la charla entraron aproximadamente 10 chicas golpeandosé con almohadas, se fueron hasta el escenario a continuar golpeandosé entre ellas y finalmente se fueron.

Fue una charla bastante atípica!.

Los slides de la charla los pueden encontrar aquí.

Como habrán podido observar, no hay nada espectacular en este post, nada técnico ni detallado en profundidad, simplemente quería compartir con ustedes mi opinión sobre cada una de las charlas a las cuales asistí. Si a alguno le gustó bien y sino ... también.

Hasta cualquier otro momento!.

miércoles, 13 de julio de 2011

[TUTORIAL] Writing Dynamic Unpackers for Fun with TitanEngine (English)

Hola!,

esta entrada es para comentarles que finalmente, y a pedido de muchos, la versión en inglés del tutorial sobre TitanEngine y FUU fue agregado a la sección de Downloads del proyecto.

Quiero agradecer a las personas que tuvieron mucho que ver con este arduo trabajo que fue traducir y revisar mas de 80 páginas:

* Juan Esteban Forgia (@ztoker) por traducir las primeras 4 páginas del tutorial.
* Apokliptiko por traducir la segunda parte del tutorial.
* Francisco Falcón (@fdfalcon) por leer y revisar la gramática.
* Fotis (@__fastcall) por darnos ánimos estas últimas semanas. Eso nos dió la fuerza que faltaba para terminar este trabajo!.

Gracias a todos ellos!.

Si encuentran algun error, por favor, avisenme y será corregido a la brevedad.

Espero que lo disfruten!.

Un abrazo!.

jueves, 7 de julio de 2011

[Training Ekoparty 2011] Defeating software protections

Hola!,

esta entrada es para hacerles saber que este año 2011 estaremos nuevamente presentes en la Ekopary, la conferencia mas importante sobre seguridad informática en Latinoamérica, con el training "Defeating Software Protections".

A continuación, les dejo el temario del curso:


CONTENIDO:

Cuando una empresa o programador necesita distribuir su Software, Shareware, Trial o Demo, necesita optar por algún mecanismo para proteger la propiedad intelectual de los ojos curiosos de los crackers.

Que mejor que un curso de cracking para estar al tanto de las técnicas mas utilizadas a la hora de romper protecciones de software?. Conocer las técnicas mas comunes a la hora de desproteger software brinda la posibilidad de desarrollar nuevos mecanismos para protegerlos.

El training comenzará con una introducción de assembler(x86) y las herramientas generalmente empleadas para luego continuar con la descripción del formato ejecutable utilizado en Windows.

Se mostraran diversas técnicas para obtener un serial en memoria o como patchear instrucciones para desviar la ejecución del programa y evitar que se ejecuten funciones no deseadas. Este día finalizara con la creación de un patcher, el cual facilita por ejemplo la distribución de los cambios hechos en un ejecutable.

Durante el transcurso del segundo día, se intensificara lo aprendido aplicándolo a diferentes lenguajes de programación. Se expondrán las técnicas para atacar aplicaciones .NET y Java entre otros.

Se explicara el funcionamiento de las protecciones comerciales ( packers ) y las diferentes formas de atacarlas. También se demostrara como modificar los programas protegidos sin necesidad de desempacar los binarios ( inline patching ).

Los alumnos aplicaran los conceptos aprendidos en la resolución de ejercicios creados especialmente para el Training versión EKOparty.

Se realizara la entrega de un manual con mas 300 paginas ilustrativas + CD con el contenido completo de todo el curso, incluyendo sus ejercicios, herramientas y la foto de Ricardo Narvaja.

Día 1:

* Conceptos básicos y herramientas
* PE structure
* String references
* Serial fishing
* API cracking
* Patchers
* Loaders

Día 2:

* .NET cracking
* Java Cracking
* Unpacking
* OEP finding
* Stolen bytes recovering
* IAT rebuilding
* Ollyscripting
* Inline patching
* Antidumping
* Antidebugging
* Keygenning

Para el que le interese y necesite más información, consulte aquí.

Los esperamos!.

miércoles, 29 de junio de 2011

[Advisory] HP Data Protector EXEC_CMD Buffer Overflow Vulnerability

Hola!,

después de un par de meses sin ningún post volvemos con algunas noticias.

En esta pequeña entrada les quiero hablar un poco de un bug que encontré haciendo research de otro bug (ZDI-11-055).

El bug ZDI-11-055 es un path traversal que termina en Remote Code Execution.

El paquete que se envia para triggerear el Path Traversal contiene un Path (el ejecutable que queremos lanzar en la maquina remota), si este path es lo suficientemente largo, puede producir un stack overflow.

Pueden encontrar el advisory con el analisis del bug acá.

Algo importante para mencionar es que al momento de escribir este post no hay patch oficial para este bug.

Aprovecho para comentarles que en breve voy a publicar un par de tutoriales que tal vez les puedan interesar!. Asi que atenti!.

Saludos.

viernes, 18 de febrero de 2011

Nuevo Plugin para FUU - dePFE

crosspost de: http://pastafr0la.wordpress.com/2011/02/18/probando/

Gracias a "El Tio Pastafrola" por la colaboracion y por prenderse con el proyecto FUU!.

--

Hola amigos, hoy les traigo una pequeña reseña sobre el packer PFE CX v0.1 con el cual hice mis primeros pinitos en TitanEngine y FUU

primero echemos una mirada a la GUI del protector

img1

haremos una muestra con el maximo nivel de compresion y todas las opciones activadas, en mi caso usare calc.exe para probarlo.

Este protector corre en dos procesos como podemos ver en la imagen

img2

asi que lo cargamos con OllyDBG y buscamos las llamadas a CreateProcessA para caer en la zona caliente del packer

img3

aca estamos en la zona caliente, vemos como crea el proceso hijo en modo suspendido, alloca memoria y despues le escribe algunas cosas en memoria :)

Pongamos un bp en el WriteProcessMemory que le sigue al VirtualAllocEx y miremos que tiene el buffer

img4

ese MZ corresponde a la cabezera de nuestro protegido, en mi caso calc.exe. Esto significa que no tendremos que trabajar con el segundo proceso porque el primero ya nos da el programa en bandeja de plata.

Lo unico que tenemos que hacer ahora es alinear y dumpear

Para alinearlo, cambiamos el RawOffset y RawSize de cada seccion por su VirtualOffset y VirtualSize respectivamente.

img5

y hacemos un dumpeado de memoria con por ejemplo, el dumper del plugin IsDebuggerPresent

img6

Obteniendo un PE valido y funcional.

Automatizarlo con TitanEngine es bastante sencillo, los pasos a seguir serian:

  • Setear un BP en WriteProcessMemory con la funcion SetAPIBreakPoint.
  • El callback encargado de procesar ese breakpoint, alineara y dumpeara la imagen :)

Para dumpear regiones de memoria tampoco nos tenemos que complicar mucho, ya que TitanEngine nos provee de la funcion DumpMemory.

Eso es todo amigos, un packer facilito siempre y cuando ataquemos el primer proceso. En las primeras pruebas arranque trabajando con el segundo proceso y la verdad es que cuesta mucho trabajar con los 2 procesos a la vez debido a que el SDK aun no nos provee de dichas funciones y lo tenemos que hacer a mano.

Todo este proceso fue automatizado en el siguiente plugin: bin src

p.d. Para los que estan interesados en crear algun plugin para FUU, les paso la buena noticia que ya no es necesario el uso de la funcion _DoUnpack para elegir setear nuestro primer callback.

Ahora directamente trabajamos con InitDebugEx que como ultimo argumento nos permite definir un bp que se ejecutara cuando llegue al callback del debuggee.

Tengan bien presente esto, ya que si tratan de definir bp en API's sin haber iniciado el DebugLoop, esta funcion no procesara el LOAD_DLL (CodeException 06) y por lo tanto no podran setear los bp debido a que no estan cargadas las dll's.

lunes, 13 de diciembre de 2010

Advisory - Symantec Intel Handler Service Remote DoS


Hola!,

quería dejarles el ultimo advisory de una vulnerabilidad que descubrí hace ya un tiempo investigando otro bug.

El análisis y una descripción tenica la pueden encontrar acá: Symantec Intel Handler Service Remote DoS

Saludos.

lunes, 29 de noviembre de 2010

aadp4olly v0.2 & aadp4immdbg


Hola!,

queria hacerles saber que una nueva version de aadp4olly ha sido releseada. Entre las mejoras, podemos citar las siguientes:

v0.2 (29/11/2010)
--

- added Anti-Antidebugging features for the following tricks:
* BlockInput
* SuspendThread
* UnhandledExceptionFilter
* Process32Next
* Module32Next
* ZwQuerySystemInformation
* ZwQueryObject
* TerminateProcess
* ZwOPenProcess
* FindWindow

- now, the plugin should support XP (ALL), Windows Vista (ALL) and Windows 7 (ALL) OS.

Quedan algunos bugs de la version v0.1.3, en especial los reportados por Peter Ferrie que tienen que ver con una falta de comprobacion sobre algunos punteros, pero van a ser fixeados en la proxima version (v0.3) en la cual ya estoy trabajando!.

Como nota final, les puedo adelantar que con la proxima version de aadp4olly voy a liberar los sources de aadlib, la libreria anti-anti-dbg en la cual se basa el plugin.

La ultima version de aadp4olly la pueden conseguir en la web del proyecto: aadp


Junto con esta nueva version de aadp4olly, he releseado aadp4immdbg, que seria basicamente el mismo plugin pero para ser utilizado con ImmunityDebugger.

Saludos!,

Hasta la proxima!.

UPDATE (02/12/2010): fue agregada una nueva modificacion del plugin aadp4olly, aadp4ollysnd es una version de aadp4olly pero ajustada para trabajar con el OllySND. Gracias a Guan de Dio por esta modificacion.

domingo, 28 de noviembre de 2010

Lamerz!



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?.

sábado, 13 de noviembre de 2010

Nuevo plugin para Ollydbg - aadp4olly v0.1

Hola!,

esta vez queria presentarles un nuevo proyecto en el cual he estado trabajando estas ultimas tres o 4 semanas en mis ratos libres. Se trata de un nuevo plugin para Ollydbg, aadp4olly o Anti-Anti-Debugger Plugin for Ollydbg.

Este nuevo plugin sirve para ocultar a Ollydbg de los trucos anti-dbg mas comunes como IsDebuggerPresent, NtGlobalFlags, etc; si bien ya hay plugins de este estilo para Ollydbg desde hace mucho tiempo, queria hacer mi propia version para incluir todos los trucos que necesito en mis sesiones de debugging con packers.

En esta primera version pueden encontrar trucos anti IsDebuggerPresent, NtGlobalFlags, HeapFlags, ZwSetInformationThread, OutputDebugString, ZwQueryInformationProcess y GetTickCount, por el momento, todos desde ring3.

En proximas versiones voy a continuar agregando mas trucos y posiblemente no solo en ring3 sino en ring0.

Cualquier comentario, sugerencia, pedido para agregar algo, etc, no duden en comentar aqui o escribirme directamente.

Obviamente, el proyecto es Open Source, como todo lo que he hecho hasta ahora.

Sin mucho mas que decirles, les dejo la pagina del proyecto: aadp

La descarga directa del plugin es: aadp4olly

Espero que les sea util!.

Aca les dejo un screenshot:


Hasta pronto!.

UPDATE (14/11/2010): aadp4olly ha sido actualizado a la version 0.1.1. Se fixeo un pequeño bug cuando se cerraba la ventana del plugin (reportado por marciano).
UPDATE (18/11/2010): aadp4olly ha sido actualizado a la version 0.1.2. Se incluye un fix para XP SP0 que permite que las opciones para hookear las funciones "Zw" funcionen en dicho OS (reportado por LCF-AT).
UPDATE (21/11/2010): aadp4olly ha sido actualizado a la version 0.1.3. Se incluye un nuevo fix para las funciones Zw reportado por LCF-AT.

martes, 12 de octubre de 2010

Nuevo plugin para FUU - dePeX

Hola!,

despues de un tiempo sin ningun post queria decirles que en el blog de FUU hay un nuevo post anunciando un nuevo update para FUU.

Además, hay una pequeña reseña del packer.

Acá pueden verlo!.

Saludos.

domingo, 19 de septiembre de 2010

Tutorial - Writing Dynamic Unpackers for Fun with TitanEngine

Hola!,

hace rato que tenia este tutorial guardado a medio terminar y como soy de los que siempre terminan lo que empiezan decidi que era un buen momento para hacerlo.

En este tutorial se intenta explorar un poco toda la funcionalidad de TitanEngine para construir diferentes tipos de herramientas. Debo aclarar que no es la version final del tutorial, me quedaron un par de cosas que hubiera querido agregar pero si me detenia mas tiempo el tutorial iba a quedar en el olvido.

De todas maneras, las voy a agregar pero cuando tenga un poco mas de tiempo.

Cualquier correccion que quieran hacer ya saben donde encontrarme. Si les parece que habria que agregar algo mas o detallar algo no duden en escribirme.

Este tutorial va a ser agregado como documentacion en la web del proyecto FUU. Por ahora solo tengo la version en español pero pronto lo vamos a hacer en ingles.

Bueno, aca les dejo los links para la descarga: Descarga1 - Descarga2

Espero que les sea util!.

Hasta pronto!.

sábado, 18 de septiembre de 2010

Lo que dejo la Ekoparty 2010

Un año más y una edición mas de la Ekoparty.

En esta edicion hubo muchas charlas, trainings, talleres, stands, etc. Debo reconocer que tambien tuvo sus cosas malas pero eso no fue motivo para opacar el resto del a conferencia que particularmente para mi, este año fue la excusa para juntarme con amigos y divertirnos.

La primer experiencia este año en la Eko la tuve dictando, con Ricardo Narvaja, Ariel Coronel, Marcos Accossatto y Daniel Kasimirow, el training de Introduccion al Cracking. Fueron dos dias bastante moviditos enseñando este noble arte de analizar y comprender las protecciones de software que andan dando vuelta por ahi. A mi cargo tuve la tarea de explicar el tema de Loaders, Cracking en .NET, Cracking en Delphi y Cracking en Java.

Luego, vinieron los dias de charlas. Creo que ya es tradicion en la Eko que la acreditacion comience tarde y en consecuencia las charlas se atracen mas de una hora. Tanto yo como mucha gente estuvimos en la puerta 7.30 AM (como se pidio) para la acreditacion que comenzaria una hora mas tarde. Sin dudas este es un punto que podrian mejorar en las proximas ediciones pero bueno, el resto de la conferencia hizo que ese mal sabor desaparezca.

Este año la verdad es que vi pocas charlas de las cuales rescato las siguientes:

Understanding the Win SMB NTLM weak nonce vulnerability (Hernán Ochoa, Agustín Azubel): en esta charla Hernan y Agustin nos contaron un poco como fue que encontraron una serie de bugs en la implementacion de la autenticacion de SMB, dieron diferentes muestras de que se puede hacer con los bugs que ellos encontraron y como fue que MS intento de apaciguar el impacto de estas vulnerabilidades. Combinando los las diferentes vulnerabilidades que encontraron se puede lograr ejecutar codigo en la maquina remota y esa fue la ultima demo que dieron. Una charla bien técnica que me gusto mucho y de la cual aprendi bastante.

Distinguishing Lockpicks: Raking vs Lifting vs Jiggling and More (Deviant Ollam): al igual que el año pasado, el maestro del lockpicking dio una charla sobre las diferentes herramientas que se utilizan en este noble y entretenido arte. Dio una breve repaso por cada una de las herramientas que se utilizan y como diferenciarlas entre si. Fue una charla como para distendesrse un poco y aprender algo poco común, al menos para mi. Creo que gracias a Deviant, cada año hay mas y mas gente intresada en el lockpicking, mucha gente se junta en el stand de Deviant para jugar al GringoWarrior y cada vez hay mas gente que logra abrir las cerraduras muy facilmente.

WPA Migration Mode: WEP is back to haunt you... (Diego Sor y Leandro Federico Meiners): esta charla en particular me gusto mucho. No soy un entendido en el ambiente de la seguridad wireless pero la charla se entendio perfectamente. Estuvieron mostrando un ataque hacia aparatos CISCO cuando estan en el modo WPA Migration Mode. Basicamente, estos aparatos cuentan con un modo en el cual pueden operar con clientes que sean WEP y WPA. Si una empresa esta migrando toda su seguridad wireless de WEP a WPA puede poner estos CISCOs en ese modo pero el problema es que como estos aparatos operan al nivel mas basico de seguridad entonces todo termina siendo WEP y como WEP esta roto, entonces, la seguridad de la empresa se va al tacho :P

Understanding the Low Fragmentation Heap: From Allocation to Exploitation (Chris Valasek): esta charla fue muy pero muy técnica y trataba sobre el Low Fragmentation Heap en Windows. La verdad es que se me hizo un poco pesada pero explico con lujo de detalles como es que funcionan cada una de las partes del mecanismo de LFH en windows. Muy recomendable la lectura de su super paper!.


Atacking VoIP… un paraíso! (Giovanni Cruz): esta charla me sorprendio. Pense que iba a ser muy densa e imposible de seguir pero sin embargo fue una de las que mas me gusto. Giovanni mostro un par de ataques que se puede realizar sobre aparatos que soportan VoIP que basicamente son los mismos ataques que se vienen realizando desde que se creo el primer standard para VoIP, hace diez años atras.


2x1 Microsoft Bugs: 'Virtual PC hyper-hole-visor' + 'Windows Creation Vulnerability (MS10-048) (Nicolas Economou): otra charla que me gusto mucho, muy tecnica tambien. A mi me facinan las cosas de kernel y Nico se encargo de darme, al menos a mi, esa dosis de kernel que me hacia falta. Nico estuvo contando un poco como fue que descubrio los bugs en el hypervisor de VirtualPC y el bug en kernel denominado Windows Creation Vulnerability. Mostro con lujo de detalles ambos bugs y la manera en la cual los exploto asi como las implicancias que ambos bugs tienen sobre la seguridad en windows.

Pentesting Driven por FOCA (Chema Alonso): otro año mas, Chema estuvo hablando en la Eko. En esta ocasion, nos mostro una tool muy interesante llamada FOCA para jugar con la metadata almacenada en los sitios webs. Mostro un par de ejemplos en los cuales utilizando FOCA se pueden encontrar cosas muy interesantes como un documento xls con todos los usuarios de un site o incluso un site con permisos para subir una shell php :) Luego de esa charla, yo y varios amigos salimos corriendo a bajarnos la FOCA y a jugar un rato :)

Exploiting Digital Cameras (Alfredo Ortega, Oren Isacson): en esta charla, Oren y Alfred, nos estuvieron mostrando como fue que reversearon las camaras CANON. Ahi se encontraron con un interprete que les permitio ejecutar codigo y poder ademas comprometer una PC con solo la memory card de la camara. Otra charla muy etretenida y de las que mas me gusto.

Hanging on a ROPe (Pablo Solé): La primer parte de esta charla no incluia nada nuevo. Basicamente, se estuvo hablando de ROP o lo que hace años se conoce como ret2libc. En resumen, son un conjunto de tecnicas que le permiten al exploit writter poder bypassear, por ejemplo, DEP en Windows. Pero no solo eso, tambien se pueden utiilzar para bypassear protecciones en MAC OSx, Iphone, etc; Lo que si me gusto y es para resaltar fue la tool que presentó para armar un ROP Shellcode de manera automatica utilizando deplib. Fue interesante ver los problemas que se encontraron, como los solucionaron y finalmente la manera "generica" para armar todo un shellcode ROP con unas pocas lineas de Python.

Esas fueron, a mi criterio, las charlas mas interesantes de la Eko de este año. De todas maneras, no puedo dejar de mencionar la charla mas esperada de la Eko que fue Padding Oracles Everywhere (Juliano Rizzo, Thai Duong). En esta charla se libero un 0day para Microsoft ASP.NET.

Hubo otra charla mas que segun la gente en twitter fue muy interesante fue Jackpotting Automated Teller Machines (Barnaby Jack) en la cual se hablo de como hackear ATMs.

Bueno, eso fue un pequeño resumen de las charlas de la Eko este año. Hubo muchas mas y seguramente mas interesantes que estas pero al menos a mi estas fueron las que mas me gustaron.

Ademas de estas charlas hubo muchas otras cosas asi que si este año se las perdieron no falten el proximo!.

Ah, me olvidaba de dejarles la posta de CLS en la Eko!:


Hasta pronto!.

miércoles, 15 de septiembre de 2010

Training de Intro al cracking en la Eko 2010!

Hola!,

ayer termino el segundo dia de training de "Introducción al cracking y anti-cracking" en la Ekoparty 2010. La verdad es que tanto del lado de los instructores como del lado de las personas que asistieron al training quedamos todos contentos. Estuvo muy bueno, fue una muy buena experiencia y sobre todo, nos divertimos mucho enseñando todo lo que aprendimos en CracksLatinoS! durante todos estos años.

Quisiera agradecer a la gente de la organizacion de la Ekoparty 2010 que se porto de 10! con nosotros!.

Ah, y no se olviden, mañana arrancan los dos dias seguidos de charlas en la Eko, asi que no se lo pierdan!.

Cuando pase la conferencia voy a hacer un par de post con el resumen y mi opinion sobre cada charla!.

Para terminar, aca les dejo una postal del training!:



Hasta entonces!.