Archive

Archive for March, 2010

md5 search function

March 28th, 2010 5 comments

Muchas veces programamos chorraditas rápidas, que pueden llegar a ser muy útiles. Pues creo que la que aquí presento puede ser una de estas, es una función en python que búsca su f, dada su imagen f’.

La he utilizado para hacer una auditoría a un fichero con más de 30.000 imágenes y la verdad, los resultados han sido positivos.

He renombrado el ficherito a .txt para poder subirlo.

md5_cracker

import urllib

__id__ = “$Id: md5_cracker.py 2010-03-28 13:13$”
__version__ = “$Revision: 0 $”
__date__ = “$Date: 2010-03-28 13:13:51 +0100 (San, 28 Mar 2010) $”
__author__ = “noukeys reverser (noukeys@gmail.com)”
__copyright__ = “Copyright 2010+ noukeys”
__license__ = “GPL”
__URL__ = “http://www.reversing.es”

#Busca un hash en diversas webs conocidas.
def md5search(hash):

find = ”;

#busqueda:
try:
if find == ”:
f = urllib.urlopen(“http://gdataonline.com/qkhash.php?mode=txt&hash=” + hash.strip(‘\t\n’))
for line in f.readlines():
if (line.find(‘<tr><td width=”65%”>’) != -1) and (line.find(‘????’) == -1):
line = line.partition(’35%”><b>’)
line = line[2].partition(‘</b>’)
find = line[0]
except:
pass

#busqueda
try:
if find == ”:
params = urllib.urlencode({‘pass’: hash.strip(‘\t\n’), ‘option’: ‘hash2text’, ‘send’: ‘Submit’})
f = urllib.urlopen(“http://md5online.net/”, params)
for line in f.readlines():
if line.find(‘pass :’) != -1:
line = line.partition(‘s : <b>’)
line = line[2].partition(‘</b>’)
find = line[0]
except:
pass

#busqueda
try:
if find == ”:
params = urllib.urlencode({‘term’: hash.strip(‘\t\n’), ‘crackbtn’: ‘Crack+that+hash+baby%21′})
f = urllib.urlopen(“http://md5crack.com/crackmd5.php”, params)
for line in f.readlines():
if line.find(‘Found’) != -1:
line = line.partition(‘(“‘)
line = line[2].partition(‘”)’)
find = line[0]
except:
pass

#Resultados
return find.strip(‘\t\n’)

#P.O.C.
print md5search(’084e0343a0486ff05530df6c705c8bb4′)

convert this post to pdf.

Jugando con Samepage Merging

March 18th, 2010 No comments

Hola audiencia de disidents, hoy les voy a contar un poco sobre una cualidad que tienen ciertos entornos de virtualizacion, la cual podemos aprovechar para detectar los mismos.

El método que propongo esta basado en timing analysis, pero no sobre el tiempo de ejecución de determinadas instrucciones, sino que sobre los tiempos de acceso a memoria. Se han utilizado técnicas similares para detectar VMMs (incluyendo VT). Un método conocido es medir el tiempo de acceso a memoria con cache on/off, por lo general el VMM no permite desactivar el cache, entonces si ambas mediciones dan resultados similares significa que estamos dentro de un entorno virtual.

A diferencia de esa técnica, la manera que he encontrado no requiere ring0 y además es bastante sencilla. Claro que tiene ciertas limitaciones, no sirve para detectar cualquier VM, solo aquellas que implementen samepage merging (hasta ahora solo hice pruebas con KVM-KSM y VMware).

Supongo que tendré que explicar un poco en que consiste esto del samepage merging (desde ahora SM porque soy vago). El SM esta muy relacionado con el CoW (Copy on Write). Básicamente se trata de un thread que periódicamente recorre la memoria y une todas las páginas cuyo contenido es exactamente el mismo. Una vez unidas las páginas, el resto del proceso es exactamente un CoW, se comparte la misma page frame y se marca la página como read-only, cuando se intenta realizar una escritura, el manejador de excepciones se encarga de asignar una nueva página.

Este tipo de estrategia es bastante costosa por lo que no se suele utilizar sobre toda la memoria del sistema operativo. Sin embargo es muy tentador utilizarla en entornos virtualizados ya que se ahorran cantidades considerables de ram, el beneficio es máximo cuando se corren varios guests simultanea-mente.

En linux disponemos de KSM (Kernel Samepage Merging), este se puede activar y desactivar en el vuelo. Cualquier versión reciente de KVM saca provecho de KSM si se encuentra activado. La idea original sobre este tipo de tecnologías parece pertenecer a VMware y al parecer hubo ciertos problemas de patentes con KSM, lo importante a destacar es que si podemos aprovecharnos de KSM seguramente también podemos hacerlo de VMware.

Ya con todo esto un poco explicado, algunos deben estarse preguntando que pasaría si medimos los tiempos de acceso a memoria antes y después de que el KSM (o VMware) actue sobre la memoria del guest. Es justamente lo que vamos a averiguar ;)

Ver código fuente smdetect.cpp

Ahora se compila con: g++ -O3 smdetect.cpp -o smdetect
Funciona tanto en linux como en windows (mingw).

Ahora unas gráficas con los resultados en distintos entornos:

Las gráficas corresponden a 10 ejecuciones de smdetect por cada entorno. Si todo fuera perfecto deberían ser lineas horizontales, pero factores externos como la carga del sistema hacen variar bastante los resultados.

Se puede apreciar una diferencia notable entre los casos donde no hay VMM y en los que la hay. Un caso curioso se da con OSX, donde la diferencia es apenas un 100% estando más cerca de los resultados donde no hay VMM. Incluso en una prueba llego a dar ~30% lo cual lo hace un target muy dificil de detectar.

Mirando las gráficas y sin considerar OSX, podriamos establecer un umbral de 150% para la detección. Incluyendo los datos de OSX he decidido utilizar un 98%, aún asi pueden darse falsos negativos en OSX y un umbral tan bajo podría llegar a dar falsos positivos si se dan ciertas condiciones.

Conclushion!

Tenemos un nuevo método, que si bien no es 100% confiable, puede ser utilizado de forma práctica y es posible refinarlo mucho más. Una posibilidad es la utilización de heurísticas para ajustar el umbral en función a información sobre la carga del sistema. Otro tema pendiente es la enorme espera que hay que realizar entre mediciones, pero esto no creo que sea un impedimento para muchos autores de malware…

Aquí se acaba :)

erg0t

http://www.48bits.com/

convert this post to pdf.

F1 Directo Imagenes

March 9th, 2010 No comments

Bueno alguna captura del prog anterior ! :)

convert this post to pdf.
Categories: Uncategorized Tags:

F1Directo

March 8th, 2010 No comments

Aqui os dejo un programa freeware para el que le kiera dar uso jeje

Empezo en una tipica mañana lluviosa en la que no habia ganas de salir de casa,

y a picar codigo :)

[DsD] Dudu

Aqui os dejo en link: f1directo

Que lo disfruteis!!!

:mm vindo los entrenos esta mañana, me he dado cuenta de que autosport, NO muestra la tabla de tiempos en estos entrenamientos… esperare a la siguiente sesion, sino los da, cambiare de pagina de datos por la de thef1. A ver si la tuviera lista para los entrenos de mañana sabado :O

:)

convert this post to pdf.
Categories: Uncategorized Tags: