Just a quick note and I’ll be back to my regular spanish written crappy blog.
Uri from Int3pids won the challenge. Congratulations! Eloi, dreyer, earada, kachakil and roman_soft did a great job too, thanks to all the participants.
Now you can find online the solution of Crypto02
Tags:campus party·crypto·hacking·reversing·wargame
Campus Party is over now, it was a great week. Here are two unsolved levels from the hacking wargame, they were available in the contest so we wanted to release them.
Go, get them and have fun! First to solve both gets a $30 gift card for Amazon. All the info available at
http://vierito.es/cp2010wargame/
Tags:campus party·hacking·wargame

El Maligno me lió para dar una charla en el III Curso de Verano de Seguridad en Valencia. El curso ha estado genial, tanto las ponencias como la gente que acudió, sin duda una gran oportunidad para pasar un buen rato con conocidos y nuevas caras.
Mi charla la quise enfocar como una recopilación de fallos comunes (algunos de ellos famosos) cuando nos toca tratar con criptografía. Es un tema un poco denso así que para darle un toque más curioso y divertido en la parte final incluí puntos decisivos a la hora de implementar criptografía en dispositivos embebidos en los que, debido a factores como el side channel, tenemos que tener en cuenta todo tipo de nuevas medidas.
Gracias a Eloi y Bea por echarme una mano
Aquí os dejo la presentación de Historias de la cripta
Si tenéis dudas o preguntas podéis dejar comentarios aquí o usar twitter con el tag #cripta.
Keep hacking!
Tags:criptografía·Curso de Verano de Seguridad·hacking·RSA·side channel
Es indudable que IDA Pro se ha convertido en una de las herramientas indispensables para todo el que quiera hacer ingeniería inversa de binarios de diversas plataformas y gracias a todo tipo de plugins podremos llevar sus capacidades más allá. Ya sé que hay por ahí varias listas como la de OpenRCE pero me parece que se limitan un poco a listar plugins y no a recopilar los que, al final, la gente termina usando porque son los más útiles.
Así que aquí va una lista de los mejores plugins que te ayudarán tu tarea de pwning. Gracias a todos los que me habéis recomendable alguno de ellos.
- Hex-Rays: Creo que este era evidente. Uno de los mayores atractivos de IDA Pro.
- IDAPython: para poder manejar IDA desde scripts en python
- Turbodiff: para comparar cambios en binarios, comunmente llamado diffing. Otras opciones con el mismo propósito con Darungrim, Patchdiff y BinDiff
- Adobe Flash Disassembler: el nombre habla por sí mismo
- IDADWARF: para importar símbolos DWARF de binarios ELF. Nos facilita así conocer nombres y tipos, arregla algunos tipos y renombra variables y registros para una comprensión más sencilla. Vamos la pareja perfecta con Hex-Rays cuando es un binario de este tipo.
- Findcrypt: útil para reconocer algoritmos de cifrado, funciones hash y algoritmos de compresión usados dentro del binario. Está claro que algunos son fácilmente reconocibles según las pasadas que den u otras características pero no esta nada mal ahorrarte un buen rato intentando descubrir qué algoritmo es. Este plugin intenta buscar constantes típicas usadas en los algoritmos, ya sea en las famosas S-Boxes, como inicialización u otros.
- IDAStealth: para poder evitar y manejar las técnicas anti-debug más comunes
- COM Helper: busca GUIDs
- mIDA: extra las interfaces RPC y reconstruye su IDL
- ms_rtti: información de los Run-time Type Information para binarios C++
- PDB: proporciona información extra sobre los símbolos en binarios de Windows.
- Importar infomación de MSDN: podéis ver como hacerlo en este post de Zynamics, quizá incluso agobiante tanta información pero útil si vas perdido.
- Class Informer: más de lo mismo, más información sobre vftables, RTTI y RTCI
- BinNavi: para visualizar la estructura de un programa, ver el camino que sigue una ejecución, ver como llegar a ciertos puntos del código, etc.
- MyNav: el hermano pequeño pero de código libre de BinNavi. Se publicará en julio, mientras podréis ver una muestra en este post. Promete mucho
Además, en breve tendremos hoy 3 de junio ha salido una suculenta nueva característica que será el soporte para decompilación para ARM, como se nota que esta arquitectura está creciendo mucho
Seguro que hay algun plugin que usas de normal y no está en esta lista así que espero vuestros comentarios.
Tags:decompiler·diffing·hex-rays·IDA PRO·plugins·reversing

Hey there! I usually write in spanish here but as the attendance at Campus Party Europe was pretty international I’ll do this one in english so anyone can understand it.
All the information to try the challenge is at Eloi’s blog since he released it as challenge a couple of days ago. Before continuing I guess you either have played in the hacking contest at Campus Party Europe or already have read that post, if not… you are being late!
So, we receive 3 files: an AES encrypted file, a public key file and a readme with some instruction and data.
From the readme, this are some hints to understand what’s going on here:
- It uses a cryptographic device that contains a 1024 bit modular exponentiation accelerator
- A pair of RSA signatures over the same data, one of these signatures contains a fault injection
From those hints we get that it is actually using the RSA-CRT algorithm, which is a RSA variation to reduce computational costs using the Chinese Remainder Theorem. The point is that instead of using the 2048 bit modular exponentation it splits them into two modular operations, aproximately half the size, make the calculations and then recombine the results as needed to obtain the regular RSA result. But here’s the trick, if we inject a fault in one of these two exponentiations, via power glitching for example, there’s a way to recover the private RSA key. The use of RSA-CRT is common in embedded devices such as smart cards, mainly because of the hardware limitations. You can read a post about it at Eloi’s blog, it’s in spanish though: RSA-CRT Fault Injection.
RSA signs a message doing:
RSA-CRT does:
- s1 = m^dq (mod q)
- s2 = m^dp (mod p)
- s = a*s1 + b*s2 (mod n) = m^d (mod n)
- a being congruent to one modulo p and zero modulo q
- b being congruent to zero modulo p and one modulo q
Using the faulty signatures:
- s – s’ = a*s1 – a*s1′ will be congruent to zero modulo q
- s – s’ = b*s2 – b*s2′ will not be congruent to zero modulo p
[Read more →]
Tags:campus party europe·cryptography·fault injection·glitching·hacking·RSA·RSA-CRT·Sage·wargame

Más vale tarde que nunca, varias semanas después encuentro un rato para poder escribir este post. El cansancio acumulado hizo que gran parte de la semana siguiente fuera a medio gas y desde entonces he ido hasta arriba de cosas.
¿Qué puedo decir? Sin duda ha sido una gran experiencia, de una vez por todas, poder poner caras a tanta que gente que sólo puedes tratar por e-mail, IRC, foros, twitter o simplemente ni le tratabas y te conformabas con seguirle por internet. Coges a toda esa gente y durante 3 días compartes comidas, cenas y cervezas. Impresionante. Han sido unos días repletos de buen rollo y diversión.
Para la organización mis más sinceras felicitaciones,yo creo que han sacado nota alta y más siendo su primera vez, errores por supuesto que han habido pero como todos sabemos que habrá Rooted CON 2011… no pasa nada, al año que viene más y mejor
Cómo ya sabréis, Eloi y yo fuimos seleccionados con una ponencia sobre Seguridad y Explotación Nativa en Android que parece que gustó bastante, así que no me puedo sentir más orgulloso y realizado. Gracias a todos los estuvísteis ahí a primera hora el último día, como unos campeones. Si alguien se la perdió que no se preocupe porque la presentación os la enlazo ahora y, como ya prometimos en su momento, para descargar también todo el código y ejemplos:
[Read more →]
Tags:0day·Android·hacking·rooted2010·rootedcon·seguridad
A menudo, ya sea con amigos o no, nos encontramos con situaciones en las que no hay vuelta atrás, uno opina una cosa, otro otra, y eso no va a cambiar. Pero queda algo, el orgullo, en el fondo tu sabes que tienes razón y quieres dejarlo patente. Veamos las opciones:
- Llegar a las manos: Darse leches está mal visto. Meterse mano también.
- Jugárselo a piedra, papel o tijera: si es el otro es japonés estás perdido, vas a perder sí o sí, ellos nacieron con un don para ello. Si no es japonés nada te asegura que vayas a ganar, así que nada, mala opción.
- Jugárselo al tres-en-raya. Esta es la buena.
El tres en raya es un juego sencillo, cuando la gente se pone a jugar se cree que es un juego tonto (que lo es!) y que más o menos, sin considerar empates, el 50% de las partidas las ganarán y el resto las perderán pero no es tan tan sencillo. Así que le sueltas: “Pues ya está! Nos lo jugamos al tres en raya. El primero en ganar será el que tenga la razón, ¿es justo no?” Suelen aceptar.
Vamos a asumir que el juego es empezando con un tablero vacío, que empiezas donde quieras y que cuando ya has puesto las piezas posibles y no ha ganado nadie comienza una partida nueva desde cero.
También vamos a asumir que tú no estás en la parra y que sólo vas a perder si te provocan una situación en la que el contrincante te puede hacer tres en raya de dos maneras simultáneas y no es que se te ha escapado la línea ¬¬. Tú eres cruz, tu víctima será cara.
Cómo no perder
Se supone que el que empieza lleva la voz cantante. Tu contrincante puede empezar en el centro, en una esquina o en un lado. Lo decisivo son las 2 primeras posiciones.
Si él empieza en el centro, ve siempre a la esquina. En caso de que luego su ficha se ponga en línea tu ve de nuevo a una esquina.

Si empieza en una esquina nosotros cogemos el centro. En caso de que él vuelva a colocar su ficha en línea entonces nosotros nos vamos a una posición que no sea esquina.

Si empieza en un lado cogemos el centro de nuevo. En caso de que él coga un lado contiguo debemos colocar nuestra ficha en la esquina común.

Ahora ya lo tenemos neutralizado.
Cómo intentar ganar
Intentar ganar viene a ser lo mismo pero al revés, con alguna variación más porque él no tiene por qué hacer de su primer movimiento los que yo he hecho antes. Sólo tienes que esperar a que lleve 3 o 4 partidas y que ponga donde no toca en su segundo movimiento.
Aplicado al primer caso, si empiezas en el centro y él no pone en una esquina está muerto, en el caso de que lo haga tu colocas tu ficha haciendo línea. Ahora si él no se posiciona en una de las dos esquina restantes habrá perdido también.
Si tu contrincante se sabe esto, simplemente jugar será un while(true) hasta que uno de los dos se harte, y entonces, por supuesto, tiene razón el otro
P.S. Aprovecho este post para anunciar que TuXeD se ha comprado un dominio nuevo y pasa de /var/log/TuXeD a Limited Entropy Dot Com. ¡Ya estás actualizando tus feeds y bookmarks!
Tags:tic tac toe·tres en raya

Cómo se puede leer ya en muchos sitios, este año se celebra un nuevo congreso de seguridad informática en España. Su web es http://www.rootedcon.es y como ellos mismos dicen su objetivo es ofrecer conferencias altamente técnicas y fomentar el conocimiento, no bastante con conocer que existen cosas, hay que saber cómo son y por qué funcionan así
Se va a organizar un wargame tipo Capture The Flag a manos de un Sexy Panda, ¿qué más se puede tener? Además hay una serie de talleres intensivos denominados RootedLabs donde podrás aprender con los mejores sobre: ingeniería inversa, análisis forense, análisis de malware, pentesting, securización de redes inalámbricas y seguridad web (aún quedan plazas libres en los labs si te interesa algún área).
Allá por noviembre me enteré de la existencia el congreso y desde un principio me interesó acudir, pero ¿por qué no algo más? Hablando con TuXeD nos planteamos la posibilidad de enviar algo al Call For Papers, estuvimos unas cuantas semanas dudando pero tiró para adelante…
Unas semanas después (contra todo pronóstico, por lo menos mío) resulta que nos han seleccionado la propuesta, además junto con los primeros ponentes confirmados, cosa que considero un honor más aún. Ya de por sí, ser el último mono iba a ser considerado un éxito 100% por nuestra parte.
Para que os hagáis una idea del personal, esto es lo que hay confirmado por ahora:
http://www.rootedcon.es/rooted-con-2010/ponentes.html
Y TuXeD y yo! No puedo ocultar que estoy emocionado
me lo voy a pasar de lo lindo seguro.
Poco a poco se tienen que ir confirmando más ponentes y saldrán los detalles de la conferencias. Esto promete.
Si queréis acudir al evento daos prisa porque debido a la gran acogida pronto colgarán el cartel de todo vendido. Me alegro de que haya surgido una nueva iniciativa así y más aún con precios populares y apostando por gente muy capaz que hay por nuestro país.
Por la mocosfera mucha gente ya se ha hecho eco del evento:
http://www.securitybydefault.com/search/label/rootedcon
Y aquí entrevistas a gente que lo organiza o va a estar danzando por ahí:
http://elladodelmal.blogspot.com/search/label/Entrevistas
Can’t wait!
ACTUALIZACIÓN: Ya empiezan a salir más nombres de ponentes y títulos de las conferencias. Toda la información aquí
Tags:conferencias·hacking·rootedcon·rootedlabs·seguridad
Ya vimos como crear tonos DTMF usando Matlab y han pedido en un par de comentarios [1] [2] cómo se haría a la inversa, así que aquí va
He cogido el script para generar los tonos del otro post y lo he cambiado para los pitidos duren 40ms (que se resume a cambiar que use 320 muestras en lugar de 1200 para cada pitido o silencio), para que sea un poco más real. El wav que voy a usar será el siguiente: ring.wav
Empezamos, ¿qué necesitamos? Cada pitido estará compuesto por una pareja de tonos así que para saber qué número es deberemos reconocer las dos frecuencias principales que tienen los pitidos, y conocer la frecuencia viene a ser lo mismo que saber el periodo.
Hace un tiempo hice una práctica de Tratamiento Digital de la Señal en la que se hacían cosas de estas, uno de los códigos no es mío, está indicado. El resto los hicimos Rafa y yo en su día.
Aprovechándonos de la Transformada de Fourier:
function [P,f]=periodograma(x,N)
% [P f]=periodograma(x,N)
% Calcula N muestras del periodograma de las muestras en x
% N debe ser > que length(x)
%
% P: Periodograma propiamente
% f frecuencias correspondientes
k=0:N-1;
f=k./N;
L=length(x);
P=1/L*(fft(x,N)).^2;
Pero lo propio será usar un programa que use ventanas para su propósito:
function [P,f]=periodmodif(x,ventana,N)
% [P ,f]=periodmodif(x,ventana,N)
%
% Calcula N muestras del periodograma modificado de las muestras en x
% N debe ser > que length(x)
%
% P: Periodograma propiamente
% f frecuencias correspondientes
if N <= length(x)
error('N debe ser > que length(x)');
else
k=0:N-1;
f=k./N;
L=length(x);
m=0:L-1;
U=1/L*(sum(ventana(m+1).^2));
P=1/(L*U)*abs(fft(x.*ventana,N)).^2;
end
Cargamos el fichero ring.wav
>> [x,fs,nbits]= wavread('ring.wav')
>> t=0:1/fs:1/fs*(length(x)-1);
>> plot(x)

Ahora tendremos que calcular de cuanto es nuestra ventana mínima. La separación mínima entre tonos es de 320 muestras (que además en este caso es la misma entre todos los tonos) luego la frecuencia digital será 320 / fs = 320/8000 = 0.04
Y aquí un poco de teoría sobre ventanas gracias a los Apuntes de Pak:

Pero no voy a aburriros con ella así que nos quedaremos en que vamos a usar una ventana tipo Hamming, luego necesitaremos una longitud de ventana L = 4 / resolución = 4 / 0.04 = 100 muestras
Ahora vamos a determinar los dígitos, y para ello vamos a hacer uso de la siguiente función para búscar máximos:
function p=buscapicosu(x,umbral)
%posi_picos=buscapicosu(x,umbral)
% Busca los máximos locales de un vector mayores que un cierto umbral
% umbral se expresa en % respecto al valor máximo del vector.
% Ej. buscapicos(x,60) buscaria los picos mayores o iguales al 60% del
% pico más alto
%
% posi_picos son los indices del vector de entrada correspondientes a los picos.
% (C) Antonio Albiol , 2003
%Primero descarto los valores menores que el umbral
umbral=max(x(:))*umbral/100;
x=x.*(x>umbral);
%Ahora buscaré los máximos
%Primero creo un vector con dos valores muy pequeños en los extremos
xe=[-inf;x(:);-inf];
%Ahora calculo la derivada
d1=diff(xe);
ld1=length(d1);
%Ahora busco valores de la derivada de signo diferente consecutivos y que sean máximos
p=find(sign(d1(2:ld1)).*sign(d1(1:(ld1-1)))<0 & sign(d1(1:ld1-1))>0);
Cada pitido y cada silencio dura 320 muestras luego calculamos periodos en esas zonas. Vamos a por el primer dígito, con ventana Hamming de 100 y usando 1024 puntos:
>> [P,f]=periodmodif(x(320:320+99),hamming(100),1024);
>> buscapicosu(abs(P),50)
ans =
110
190
836
916
En el espectro digital, de 0 a 1, veremos que las frecuencias se repiten en espejo a partir de 0.5. Luego la frecuencia 110 se corresponde con la 916, igualmente ocurre entre la de 190 y 836, son lo mismo. Así que sólo tenemos que ver a qué corresponden 110 y 190.
Nota a tener en cuenta: en las FFTs (Fast Fourier Transforms) el cálculo se hace mucho más rapido cuando N es una potencia de 2, por eso la elección de hacerlo en 1024 puntos no ha sido del todo al azar.
>> 110/1024*fs
ans =
859.3750
>> 190/1024*fs
ans =
1.4844e+003
Nos vamos a la tablita y vemos con qué 2 valores más cercanos concuerdan 859.375 y 1484.4 Hz. Claramente sería con 852 y 1477 Hz que juntos corresponden con el dígito 9.

Y así con cada uno de los dígitos
Sé que estaría mucho mejor un script que hiciera todo el proceso entero y obtuviera qué número es de la tabla pero últimamente necesito días de 30 horas así os tendréis que conformar con esto. ¿A qué número he llamado?
Tags:DTMF·FFT·Fourier·Matlab

El pasado jueves acudí a la Masterclass de Carl Verheyen que se había organizado en Valencia y no defraudó, es más, no es que no defraudara si no que me impresionó mucho.
Calificado por varios medios como uno de los 10 mejores guitarristas del mundo y el mejor guitarrista de estudio que hay, ha grabado para varios cientos de discos, 200 bandas sonoras (incluyendo producciones recientes de Disney y Pixar por ejemplo), miles de jingles para televisión y radio, … vamos, que la lista es larga. Un señor del calibre de Dann Huff, Steve Lukhater y similares pero que, por su papel, suelen permanecer en un segundo plano comparados con el grupo de guitarristas a los que se les consideran estrellas.
La masterclass comenzó con su impresionante versión de Little Wing de Jimi Hendrix. Hay versiones geniales como la de Stevie Ray Vaughan o la de Andy Timmons pero fue verle tocar y dejar a todas las versiones que había oído hasta ahora totalmente por los suelos.
[Read more →]
Tags: