Script para instalar Docker en Debian

Aquí os dejo un pequeño script que os permitirá instalar docker de sus repositorios oficiales sin tener que romperos mucho la cabeza.

ADVERTENCIA: Este script se hizo pensando en instalaciones nuevas, si ya tienes docker instalado asegurate de borrarlo antes de iniciar esta instalación para evitar conflictos.

Para usar el script simplemente copia el siguiente código en  un archivo .sh y ejecutalo como root:

#Docker installation script for Debian by KALRONG

apt-get update
apt-get -y upgrade
apt-get -y dist-upgrade
apt-get -y install screen apt-transport-https ca-certificates gnupg2
apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get -y install docker-engine

Como veis no es nada complicado jeje espero os sirva de ayuda.

Saludos y gracias por la visita!

Publicado en docker | 1 comentario

¿Que es I2P?

Ya llevo un tiempo sin escribir nada en el blog y es que he estado algo ocupadillo con la organización del ctf de Mundo Hacker Day 2017 y jugando con algunas cosas como RetroShare, precisamente con este me di cuenta de que expliqué como añadir un nodo a I2P pero en ningún momento explique que es y mis razones para utilizarlo.

I2P es básicamente una darknet o red anónima que funciona sobre otra red, en este caso, Internet. Quizás si que conozcáis otra darknet llamada TOR ¿no? Si no la conocéis google será vuestro amigo, hay miles de páginas que hablan sobre ella e incluso ha salido en las noticias con lo que no me parece necesario tener que presentarla aquí. En caso de que sí que la conozcáis podéis pensar en I2P como en una prima lejana de TOR, ambas son redes pensadas en el anonimato pero su uso y diseño es completamente diferente.

La mayor diferencia entre TOR e I2p quizás sea en su utilización, mientras que TOR se usa mayoritariamente para acceder a la clearnet de forma anónima, I2P está diseñada para operar servicios dentro de la misma de forma anónima sin importarle la clearnet, es más, existen muy pocos outproxies hacia la clearnet desde entro de I2P.

Para que os hagáis una idea de como funciona I2p y sin tener que haceros un copy paste de su paper os dejo un párrafo que me parece que lo explica de forma sencilla si, ya lo sé, es de la wikipedia jeje

La red I2P está basada en el concepto de túneles entrantes y salientes, lo cual ofrece facilidad para la adaptación de programas preexistentes a la red I2P. Cada túnel está compuesto por una secuencia de nodos padres, los cuales transportan la información en un sentido unidireccional.

Básicamente, cuando intentas establecer una conexión de las de toda la vida en I2P en lugar de tener el típico canal directo, en su lugar, la información viaja a través de un túnel compuesto por distintos nodos cuyo número variara en función de tu configuración.

Para detalles más técnicos os recomiendo visitar su web: https://geti2p.net/es/

Pero ya quitándonos de partes técnicas os voy a explicar una de las cosas que a mi me ha enamorado de I2P y que viene de mi época de pelear con batman-adv la … ¡¡DESCENTRALIZACIÓN!!

Y es que I2P es una red descentralizada en la que, aunque existe el concepto de servidor y cliente en cuanto a servicios, la propia red en sí no necesita de servidores para funcionar…. ¿A que me suena esto? ¡Ah si, RetroShare!

I2P ofrece una serie de servicios out of the box como puede ser email anónimo, torrent, irc, eepsite (website dentro de I2P), etc Pero como vimos en el post de Retroshare sobre I2P es perfectamente viable utilizar un servicio de toda la vida a través de esta red.

Ok KALRONG, todo esto suena muy bonito pero, con TOR apenas tengo que configurar nada, es muchísimos más rápido, puedo acceder  a la clearnet, … ¿Por que usar I2P entonces?

Como siempre es cuestión personal de cada uno, habrá gente que defienda TOR a muerte y otra que defienda I2P, en mi caso me gusta más utilizar I2P debido a uno de los métodos más antiguos de hacer la información segura, y es la seguridad por oscuridad. Así como TOR es sumamente conocida, la hemos podido ver en las noticias de TV, hay miles de webs que hablan de ella, es super accesible, …. ahí precisamente radica el problema, es demasiado conocida, se la ataca de forma más o menos continuada, no sabemos de que nodos de salida podemos fiarnos, etc. I2P es la gran desconocida, no estoy seguro pero apostaría a que no llega a los millones de nodos en todo el mundo, lo cual efectivamente afecta al rendimiento y puede que el fallo de unos pocos nodos nos pueda dejar sin algún servicio como el IRC, no suena muy apetecible ¿verdad? Pero precisamente ahí reside un punto fuerte, I2P no sufre ni la mitad de los ataques que sufre TOR por el simple hecho de que no es tan conocida y utilizada, y ¿sabéis lo más divertido de todo? ¡Que al crecer la red también se incremente su resistencia a ataques debido a su diseño!

Tengo que reconocer que mi uso de I2P se limita al uso del servicio de IRC, RetroShare y algunos sites dentro de la propia red, la velocidad no es ninguna maravilla y los torrents con contenido en español son bastante escasos, de ahi que prefiera utilizar RS (aka RetroShare) y cierto es que para algunas cosas utilizo TOR, como navegar por la clearnet cuando no quiero que se me tracee, a pesar de que no acabe de confiar del todo en dicha red. Logicamente ni TOR ni I2P ofrecen el contenido de la clearnet con lo cual tenemos que soportar el vivir con lo mejor y peor de los mundos pero según para qué las quieras ambas tienen sus puntos fuertes y sus puntos débiles.

Personalmente os animaría a darle una oportunidad y que probarais I2P, aunque la instalación y configuración pueda parecer algo rara al principio el hecho de que se realice a través de una web lo hace mucho más accesible.

Si os animáis os recomiendo que os paséis por la wiki en español dentro de I2P: http://lawiki2p.i2p y si entráis en el IRC pasaros por el canal #latino-i2p, la gente es super maja y siempre intenta ayudar a los novatos en todo lo que se puede.

Tengo que pediros perdón porque lo que en principio iba a ser un post sobre que es I2P ha terminado siendo un post con mi opinión personal de la misma y quizás un poco inconexa, pero si he conseguido que os molestéis siquiera en buscar I2P en google, entonces me doy por satisfecho.

Un saludo, y como siempre, gracias por vuestra visita!

Publicado en i2p | Deja un comentario

SECCON 2016 – Vigenere Cripto (100)

Siguiendo con los writeups de la SECCON ahora os traigo una prueba de criptografía.

Nos dan el siguiente enunciado:

Vigenere

k: ????????????
p: SECCON{???????????????????????????????????}
c: LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ

k=key, p=plain, c=cipher, md5(p)=f528a6ab914c1ecf856a1d93103948fe

 |ABCDEFGHIJKLMNOPQRSTUVWXYZ{}
-+----------------------------
A|ABCDEFGHIJKLMNOPQRSTUVWXYZ{}
B|BCDEFGHIJKLMNOPQRSTUVWXYZ{}A
C|CDEFGHIJKLMNOPQRSTUVWXYZ{}AB
D|DEFGHIJKLMNOPQRSTUVWXYZ{}ABC
E|EFGHIJKLMNOPQRSTUVWXYZ{}ABCD
F|FGHIJKLMNOPQRSTUVWXYZ{}ABCDE
G|GHIJKLMNOPQRSTUVWXYZ{}ABCDEF
H|HIJKLMNOPQRSTUVWXYZ{}ABCDEFG
I|IJKLMNOPQRSTUVWXYZ{}ABCDEFGH
J|JKLMNOPQRSTUVWXYZ{}ABCDEFGHI
K|KLMNOPQRSTUVWXYZ{}ABCDEFGHIJ
L|LMNOPQRSTUVWXYZ{}ABCDEFGHIJK
M|MNOPQRSTUVWXYZ{}ABCDEFGHIJKL
N|NOPQRSTUVWXYZ{}ABCDEFGHIJKLM
O|OPQRSTUVWXYZ{}ABCDEFGHIJKLMN
P|PQRSTUVWXYZ{}ABCDEFGHIJKLMNO
Q|QRSTUVWXYZ{}ABCDEFGHIJKLMNOP
R|RSTUVWXYZ{}ABCDEFGHIJKLMNOPQ
S|STUVWXYZ{}ABCDEFGHIJKLMNOPQR
T|TUVWXYZ{}ABCDEFGHIJKLMNOPQRS
U|UVWXYZ{}ABCDEFGHIJKLMNOPQRST
V|VWXYZ{}ABCDEFGHIJKLMNOPQRSTU
W|WXYZ{}ABCDEFGHIJKLMNOPQRSTUV
X|XYZ{}ABCDEFGHIJKLMNOPQRSTUVW
Y|YZ{}ABCDEFGHIJKLMNOPQRSTUVWX
Z|Z{}ABCDEFGHIJKLMNOPQRSTUVWXY
{|{}ABCDEFGHIJKLMNOPQRSTUVWXYZ
}|}ABCDEFGHIJKLMNOPQRSTUVWXYZ{

Vigenere cipher
https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher

Otra vez nos dan una pista enorme con el título de la prueba e incluso un link a la wikipedia. La verdad es que muy difícil no lo estaban poniendo.

Si no llegase con lo anteriormente mencionado además nos dan el charset y el md5 de la respuesta con lo cual el gran maestro Patatas construyo los siguientes scripts para resolver la prueba, primero se realiza un ataque de texto conocido utilizando el texto que conocemos de la flag:

<?php
function vigenere_decrypt_customcharset($txt, $clave, $charset) {
 $lentxt = strlen($charset);
 $lenkey = strlen($clave);

 $txt2 = '';
 for($i=0; $i<strlen($txt); $i++) {
 $c = strpos($charset, $txt[$i]); // caracter texto
 $x = strpos($charset, $clave[$i%$lenkey]); // caracter clave
 if($x!==FALSE and $c!==FALSE) {
 $txt2 .= $charset[($c - $x + $lentxt) % $lentxt]; // aplicar vigenere
 } else {
 $txt2 .= '?'; // aplicar vigenere
 //echo "X";
 }
 }
 return $txt2;
}
$charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}';

$p = 'SECCON{???????????????????????????????????}';
$c = 'LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ';

// PRIMERA PARTE

$key1 = vigenere_decrypt_customcharset($c, $p, $charset);
echo "KEY1: $key1\n\n";
?>

Lo cual nos da el siguiente resultado:

php vigenere_part1.php 
 SECCON{???????????????????????????????????}
KEY1: VIGENER???????????????????????????????????R

Como solo conocemos los 7 primeros caracteres podemos ver que la primera parte de la clave es «VIGENERE». Con esto, sabiendo la longitud de la clave y el md5 podemos realizar un ataque de fuerza bruta contra el resto de la clave:

<?php
/* ---------------------------------------------------
 	VIGENERE
--------------------------------------------------- */
function vigenere_decrypt_customcharset($txt, $clave, $charset) {
 $lentxt = strlen($charset);
 $lenkey = strlen($clave);

 $txt2 = '';
 for($i=0; $i<strlen($txt); $i++) {
 $c = strpos($charset, $txt[$i]); // caracter texto
 $x = strpos($charset, $clave[$i%$lenkey]); // caracter clave
 if($x!==FALSE and $c!==FALSE) {
 $txt2 .= $charset[($c - $x + $lentxt) % $lentxt]; // aplicar vigenere
 } else {
 $txt2 .= '?'; // aplicar vigenere
 //echo "X";
 }
 }
 return $txt2;
}
$charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}';

$p = 'SECCON{???????????????????????????????????}';
$c = 'LMIG}RPEDOEEWKJIQIWKJWMNDTSR}TFVUFWYOCBAJBQ';

$keyx = 'VIGENERE';

for($i=0; $i<strlen($charset); $i++) {
for($j=0; $j<strlen($charset); $j++) {
for($k=0; $k<strlen($charset); $k++) {
for($l=0; $l<strlen($charset); $l++) {

	$key = $keyx . $charset[$i]. $charset[$j] . $charset[$k] . $charset[$l];
	$p2 = vigenere_decrypt_customcharset($c, $key, $charset);
	echo "PLAIN: $p2\n\n";
	$md5 = md5($p2);
	if($md5=='f528a6ab914c1ecf856a1d93103948fe') {
		echo "FOUND!! $key $p2\n";
		exit;
	}
}}}}

?>

Ejecutamos el script y en menos de 2 segundos tenemos la flag:

php vigenere_part2.php
CLAVE: VIGENEREAAAA
PLAIN: SECCON{ADOEEBCDEDEFGJWMNKLMNOPQRUFWYVWXYYZ}

CLAVE: VIGENEREAAAB
PLAIN: SECCON{ADOEDBCDEDEFGJWMMKLMNOPQRUFWXVWXYYZ}

CLAVE: VIGENEREAAAC
PLAIN: SECCON{ADOECBCDEDEFGJWMLKLMNOPQRUFWWVWXYYZ}

CLAVE: VIGENEREAAAD
PLAIN: SECCON{ADOEBBCDEDEFGJWMKKLMNOPQRUFWVVWXYYZ}
.....
CLAVE: VIGENERECODC
PLAIN: SECCON{ABABCBCDEDEFGHIJLKLMNOPQRSTTWVWXYYZ}

CLAVE: VIGENERECODD
PLAIN: SECCON{ABABBBCDEDEFGHIJKKLMNOPQRSTTVVWXYYZ}

CLAVE: VIGENERECODE
PLAIN: SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

FOUND!! VIGENERECODE SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

Y ahí tenemos la pass «VIGENERECODE» y la flag:

SECCON{ABABABCDEDEFGHIJJKLMNOPQRSTTUVWXYYZ}

Otra vez las pistas nos han facilitado la parte de investigación y nos hemos podido limitar a resolver el reto.

Espero os haya gustado, un saludo!

Publicado en cripto, ctf, seccon, writeups | Deja un comentario

SECCON 2016 – Memory Analysis Forense (100)

Como ya os dije no tuvimos demasiado tiempo para participar en este CTF así que este es el último writeup que os puedo escribir sobre las pruebas que resolvimos.

Nos dan el siguiente enunciado:

Memory Analysis
Find the website that the fake svchost is accessing.
You can get the flag if you access the website!!

memoryanalysis.zip
The challenge files are huge, please download it first.

Hint1: http://www.volatilityfoundation.org/
Hint2: Check the hosts file

password: fjliejflsjiejlsiejee33cnc

Una vez más nos dan la parte de investigación casi completa, sabemos que es un dump de memoria y por el proceso svchost que se trata de un windows.

También nos dan la pista para que utilicemos volatility, una herramienta muy útil para este tipo de pruebas y que os recomiendo le echeis un vistazo si no la conocéis.

En este caso yo preferí salirme un poco por la tangente y probar un método que ya me había funcionado en otros tipos de pruebas de forense, y eso fue utilizar strings.

Para realizar los filtrados más rápido pase el resultado de strings a un archivo:

strings forensic_100.raw > forensic_100.strings

Pero, así no puedo buscar el nombre del archivo host ¿no? Con volatility podría haber buscado el proceso y extraer el archivo pero conociendo el contenido por defecto del archivo hosts busque la ip 127.0.0.1 e hice que grep me mostrara la linea a continuación para evitar falsos positivos; en caso de necesitar más información siempre podía ir ampliando el número de lineas:

grep -A 1 127.0.0.1 forensic_100.strings

El cual nos ofrece el siguiente resultado:

127.0.0.1
tIcfChangeNotificationDestroy
--
127.0.0.1
0,0,0,0,0,0
--
F127.0.0.1
 + 0x%X
--
127.0.0.1
Unrecoverable memory allocation failure
--
v127.0.0.1
255.240.0.0
--
127.0.0.1
tIcfChangeNotificationDestroy
--
127.0.0.1
255.240.0.0
--
127.0.0.1
0,0,0,0,0,0
--
127.0.0.1       localhost
153.127.200.178    crattack.tistory.com attack.tistory.com 
--
127.0.0.1
Unrecoverable memory allocation failure
--
127.0.0.1
tIcfChangeNotificationDestroy
--
127.0.0.1
255.240.0.0
--
127.0.0.1
0,0,0,0,0,0
--
127.0.0.1       localhost
153.127.200.178    crattack.tistory.com 
--
127.0.0.1:1028
crattack-747355:0
--
127.0.0.1:1033
svchost.exe:1320
--
127.0.0.1:1900
svchost.exe:1036
--
127.0.0.1:123
H49	t

Ahí podemos ver dos resultados muy interesantes apuntando crattack.tistory.com a la ip 153.127.200.178 , probamos a hacer otra búsqueda esta vez utilizando el dominio:

grep crattack.tistory.com forensic_100.strings

Que nos devuelve los siguientes resultados:

Host: crattack.tistory.com
Referer: http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Host: crattack.tistory.com
Access-Control-Allow-Origin: http://crattack.tistory.com
Host: crattack.tistory.com
Host: crattack.tistory.com
Host: crattack.tistory.com
Host: crattack.tistory.com
http://crattack.tistory.com/trackback/90W
153.127.200.178    crattack.tistory.com attack.tistory.com 
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/rss
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
\http://crattack.tistory.com/plugin/CallBack_bootstrapperSrc?nil_profile=tistory&nil_type=copied_post
g;http://crattack.tistory.com/favicon.ico
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
C:\Program Files\Internet Explorer\iexplore.exe http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
C:\Program Files\Internet Explorer\iexplore.exe http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
153.127.200.178    crattack.tistory.com 
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
"C:\Program Files\Internet Explorer\iexplore.exe" http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http:crattack.tistory.com
http:crattack.tistory.com
http:crattack.tistory.com
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
crattack.tistory.com
crattack.tistory.com
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http:crattack.tistory.com
http:crattack.tistory.com
http:crattack.tistory.com
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
:2016120620161207: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
:2016120620161207: SYSTEM@:Host: crattack.tistory.com
:2016120620161207: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
://crattack.tistory.com/favicon.ico
tp://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
w:2016120620161207: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
://crattack.tistory.com/favicon.ico
w:2016120620161207: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http:crattack.tistory.com
http:crattack.tistory.com
http:crattack.tistory.com
http:crattack.tistory.com
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
tp://crattack.tistory.com/favicon.ico
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
http://crattack.tistory.com/favicon.ico
crattack.tistory.com
>Visited: SYSTEM@http://crattack.tistory.com/entry/Data-Science-import-pandas-as-pd
crattack.tistory.com:http
crattack.tistory.com

Parece que hemos encontrado la url que necesitamos, sabiendo que en lugar de apuntar a la dirección del DNS tenemos que utilizar la que encontramos anteriormente visitamos la siguiente web:

http://153.127.200.178/entry/Data-Science-import-pandas-as-pd

La cual nos descarga un archivo que al abrirlo nos muestra la siguiente flag:

SECCON{_h3110_w3_h4ve_fun_w4rg4m3_}

Quizás vuelva a resolver esta prueba utilizando volatility pero como veis, con solamente dos comandos básicos hemos conseguido resolverla sin mayor problema.

Este ha sido el último writeup de la SECCON de este año, como la plataforma sigue abierta, y si el tiempo me lo permite, intentaré terminar alguna de las otras pruebas que deje a medias y os mostraré como lo hice.

Como siempre, gracias por vuestra visita y un saludo!

Publicado en ctf, forense, seccon, writeups | Deja un comentario

SECCON 2016 – VoIP Forense (100)

Este año al equipo Shellwarp se nos complicaron los horarios para participar en el CTF de la SECCON (http://2016.seccon.jp/) así que solo tuvimos algo de tiempo Patatas (miembro del equipo) y yo para revisar y resolver unas pocas de ellas.

Pero como por poco que sea de todo se aprende aquí os van un par de writeups del evento.

En este caso nos daban el siguiente enunciado:

VoIP
Extract a voice.
The flag format is SECCON{[A-Z0-9]}.
voip.pcap

Corto y conciso, nos dan un pcap y el propio título nos da una pista enorme sobre por donde van los tiros. Wireshark trae una opción para extraer contenido VoIP así que si tenemos suerte podremos utilizarlo para resolver la prueba, vamos a ello:

En las opciones hacemos click en «Telephony»->»VoIP Calls» y se nos abre la siguiente ventana:

Parece que hemos tenido suerte, seleccionamos la llamada y le damos a «Play streams»:

Si le damos a play podemos escuchar lo que parece ser el sistema de buzón de voz de la SECCON que de cara al final nos deletrea la flag y nos avisa de que es todo en mayúsculas y que los espacios son corchetes:

SECCON{9001IVR}

Tengo que reconocer que está fue de las más sencillas y prácticamente todos los equipos la sacaron, pero no estuvo mal como práctica jeje

Un saludo y gracias por la visita!

Publicado en ctf, forense, seccon, writeups | Deja un comentario

Cybercamp 2016 – Crypto 5

Ya casi terminando con las pruebas de cripto aquí viene una más.

Nos dan el siguiente enunciado:

CRYPTO 5

En esta ocasión nuestros agentes han podido interceptar una comunicación entre dos espías extranjeros. Creemos que se trata de algún tipo de protocolo de establecimiento de clave, y los valores que se enviaban entre A y B son:

A -> B: 10306738

B -> A: 1206314

Otros valores recuperados son g = 13 y p = 10784399

Quizá sepas de qué protocolo puede tratarse. ¿Podríamos ayudarnos a recuperar el secreto que ambos espías comparten?

Esta vez no nos han dado ningún archivo así que estamos ante un ejercicio de criptografía de los de lápiz y papel (y si tienes un cerebro capaz de hacer cálculos complejos).

Sabido esto y después de investigar un poco basándonos en los nombres de las variables y con la pista del enunciado de que puede ser un protocolo de establecimiento de claves podemos decir que es un Diffie Hellman.

Después de leer el siguiente artículo en la wikipedia ,https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange, vemos que necesitamos encontrar o bien la variable a, o bien la variable b, para poder encontrar lo que nos piden.

Para obtener la solución directamente utilizamos el siguiente script que primero calcula el algoritmo indiscreto pasándole los valores de g, p y A con lo cual obtendremos a y luego utilizaremos la función pow con lo valores de B, a y p para obtener la flag:

def bruteLog(g, p, A):
    s = 1
    for i in xrange(A):
        s = (s * g) % A
        if s == p:
            return i + 1
    return -1

a=bruteLog(13, 10306738, 10784399)
print pow(1206314,a,10784399)

El resultado de este script será la siguiente flag:

6294097

Este será el penúltimo writeup de la parte de crypto ya que hubo dos que no conseguí resolver, en caso de que lo consiga publicaré los writeups correspondientes.

Espero os gustara, gracias por vuestra visita!

Publicado en cripto, ctf, cybercamp | Deja un comentario

Cybercamp 2016 – Crypto 3

Vamos a seguir con los writeups de cripto en un orden un pelín aleatorio.

Nos dan el siguiente enunciado:

CRYPTO 3

Vaya! Parece que Juan Aldama, finalista de lanzamiento de jabalina ha sido notificado como positivo por dopping. Hay que hacer algo: sabemos que la AMA tiene un proceso de verificación de los resultados enviados por los jueces muy estricto: el fichero con el dictamen del sistema sólo será aceptado como válido si se adjunta como “firma” el resultado de su HMAC, basado en SHA-256, con una clave que desconocemos.

Afortunadamente nuestros espías han conseguido algunos ficheros, que quizás te sean útiles en tu tarea: un fichero ZIP, cifrado con la contraseña que buscamos, que contiene una copia en claro del certificado de auto-diagnóstico de la máquina de análisis.

El objetivo será, por tanto, obtener dicha contraseña, para poder calcular el HMAC correspondiente sobre el dictamen manipulado (dictamen_manipulado.pdf), que hemos preparado ya para tí en un fichero PDF.

El token de esta prueba serán los últimos 8 caracteres hexadecimales del HMAC calculado con la clave correcta.

¿Está todo perdido o crees que podemos salvar a Juan?

Mirror1: https://mega.nz/#!SYwSBZpD!xByBSzfdUqgFH2PTVwgaGnhJzoG4x834DKdaMepvBXI

Mirror2: https://mega.nz/#!3lFl2QDZ!xByBSzfdUqgFH2PTVwgaGnhJzoG4x834DKdaMepvBXI

Mirror1: https://mega.nz/#!eZJj1D6L!5YRrUa45Q7o6h0Zi_YywzZULkrdNsssZV–rZhUf1IA

Mirror2: https://mega.nz/#!ngVEAAzA!5YRrUa45Q7o6h0Zi_YywzZULkrdNsssZV–rZhUf1IA

Mirror1: https://mega.nz/#!nIZwVIrb!01tZHvRk5nCf0h1uyNBlaEMLGFbBE0ig4LgCP562dyw

Mirror2: https://mega.nz/#!2o0ziIYT!01tZHvRk5nCf0h1uyNBlaEMLGFbBE0ig4LgCP562dyw

Como ya vemos en el enunciado nos encontramos con 3 archivos, el pdf modificado, el zip a crackear y el pdf original sin firmar.

Comenzaremos crackeando el password del archivo zip, que es la que necesitamos para calcular el HMAC, para ello utilizaremos pcrack ya que al tener el archivo original podemos realizar un ataque por texto conocido, generamos un zip nuevo con dicho archivo:

zip zip.zip doc1.pdf

Y se lo pasamos a pcrack junto al que tiene contraseña:

pkcrack -C dictamen32344.zip -c doc1.pdf -P zip.zip -p doc1.pdf -a
Files read. Starting stage 1 on
Generating 1st generation of possible key2_28296 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Lowest number: 989 values at offset 23586
Lowest number: 978 values at offset 23584
Lowest number: 929 values at offset 23583
Lowest number: 922 values at offset 19637
Lowest number: 895 values at offset 19633
Lowest number: 878 values at offset 19632
Lowest number: 865 values at offset 19628
Lowest number: 853 values at offset 19621
Lowest number: 833 values at offset 19596
Lowest number: 831 values at offset 19537
Lowest number: 788 values at offset 19502
Lowest number: 759 values at offset 19501
Lowest number: 734 values at offset 19353
Lowest number: 730 values at offset 19236
Lowest number: 708 values at offset 19235
Lowest number: 695 values at offset 19206
Lowest number: 688 values at offset 19185
Lowest number: 685 values at offset 19124
Lowest number: 603 values at offset 19122
Lowest number: 575 values at offset 19119
Lowest number: 540 values at offset 19118
Lowest number: 512 values at offset 19051
Lowest number: 476 values at offset 19050
Lowest number: 457 values at offset 19015
Done. Left with 457 possible Values. bestOffset is 19015.
Stage 1 completed. Starting stage 2 on 
Ta-daaaaa! key0=5e1fa974, key1=88eb0844, key2=983a3700
Probabilistic test succeeded for 9286 bytes.
Ta-daaaaa! key0=5e1fa974, key1=88eb0844, key2=983a3700
Probabilistic test succeeded for 9286 bytes.
Ta-daaaaa! key0=5e1fa974, key1=88eb0844, key2=983a3700
Probabilistic test succeeded for 9286 bytes.
Stage 2 completed. Starting password search on
Key: 67 65 6f 6e 61 75 74 65 32
Or as a string: 'geonaute2' (without the enclosing single quotes)
Finished on

Pcrack nos ha dado la contraseña después de unos segundos «geonaute2», procedemos a calcular el HMAC del archivo modificado utilizando esta clave:

dgst -sha256 -hmac "geonaute2" dictamen_manipulado.pdf
HMAC-SHA256(dictamen_manipulado.pdf)= 7aa1332a4785b0e3316cf5331296f2ab53a089f70047ab5b5edc065e2264b01f

Como solo nos piden los último caracteres hexadecimales la flag sería:

dc065e2264b01f

Ya quedan pocas de cripto, espero os estén gustando los writeups, saludos y gracias por la visita!

Publicado en cripto, ctf, cybercamp | Deja un comentario

Cybercamp 2016 – Crypto 4

Esta prueba fue cuanto menos «graciosa» a la hora de conseguirla, ya veréis porque.

Nos da el siguiente enunciado:

CRYPTO 4

Vaya, si no teníamos suficiente con los brasileños, ahora parece que los rusos también están haciendo de las suyas. Nuestros agentes han interceptado un mensaje cifrado entre su delegación y Moscú, y seguro que no traman nada bueno. Hemos conseguido (ya te hemos advertido que mejor no preguntes cómo) también la clave de cifrado, pero no sabemos nada sobre el posible algoritmo de cifrado.

Nos pone muy nerviosos no saber qué se están diciendo. ¿Nos echas una mano, agente?

Mirror1: https://mega.nz/#!WNInwQTQ!ySoVbnRUPxL9IaMGYn0oJBa5E3gpqqVY6DmJz9YPTvQ

Mirror2: https://mega.nz/#!msMj1RqT!ySoVbnRUPxL9IaMGYn0oJBa5E3gpqqVY6DmJz9YPTvQ

Mirror1: https://mega.nz/#!nE5RiKSY!dCvZXrCyIa0e7a9Uv6xkQuBCBPfSEcQ48zaEGGNzH-M

Mirror2: https://mega.nz/#!yosiEAiQ!dCvZXrCyIa0e7a9Uv6xkQuBCBPfSEcQ48zaEGGNzH-M

Y dos archivos, uno con la clave de cifrado y otro cifrado con un algoritmo desconocido. La clave que nos dan es:

0475f6e05038fbfad2c7c390edb3ca3d1547124291ae1e8a2f79cd9ed2bcefbd

Pero esta tampoco nos ayuda a saber que algoritmo utilizar, a falta de otra cosa, volví a los orígenes del RTFM y decidí buscar dicha clave en google (idea feliz mía)….

cripto4-1

¡Et Voila! Primer resultado ya nos encontramos con un python que utiliza exactamente la misma clave, después de leer un poco el github me descargue e instale las librerías de pygost.

Para no complicarme mucho teniendo que leer el archivo cifrado pasamos su contenido a hexadecimal utilizando xdd:

xxd -ps fichero_cifrado.bin

Creamos un pequeño script utilizando las librerias de pygost:

from pygost.gost28147 import ecb_decrypt

key = '0475f6e05038fbfad2c7c390edb3ca3d1547124291ae1e8a2f79cd9ed2bcefbd'.decode('hex')
encrypted = 'b163a48eb711b424964fd640a204238e3c4edd54fd124595a7cc77bc60204e2501ce2c83d07c2e3050e1f1898bf520b8481b550afc3ab900b1d4d54ce253d038'.decode('hex')

decoded = ecb_decrypt(key, encrypted)
print decoded

Ejecutamos el script y obtenemos la flag:

!Enhorabuena!. Has conseguido resolver el reto. Token: POBEDITEL

Como veis este fue relativamente sencillo simplemente utilizando google, otras veces nos complicamos la vida y nos olvidamos de lo más básico.

Espero os haya gustado, gracias por la visita!

Publicado en cripto, ctf, cybercamp | Deja un comentario

Cybercamp 2016 – Crypto 8

Para la prueba de cripto 8 nos dan el siguiente enunciado:

CRYPTO 8

Debido a los recortes impuestos en el COI, hemos tenido que prescindir de varios informáticos para mantener la app que gestiona los resultados olímpicos. Al irse, nuestros informáticos alteraron el código fuente de la aplicación y no somos capaces de encontrar la clave de acceso a la base de datos que usa dicho código.

Mirror1: https://mega.nz/#!aJgElASK!Ax-1A_taYp0M1VxHxViCvZ5QH82D7g-YLUZbSIfnofI

Mirror2: https://mega.nz/#!nx1TgaBY!Ax-1A_taYp0M1VxHxViCvZ5QH82D7g-YLUZbSIfnofI

Nos dan el archivo ofuscado.php que contiene el siguiente string:

Pj8KDTspcnBueWFyJChyZmJ5cF95ZGZsegoNOydyZ2Fyem52ZWJncG5zZnZnbmYgYnFuZ3ByYWJQJyBidXByCg19Cg07KSkoZWJlZXJfeWRmbHogLiAnIDpyZmVuZ3ByYWJwIGJxaGMgYkEnKHJ2cSAgICAKDXsgKXJwbnlhciQhKCBzdgoNOyknYWJ2a3JhYlBmYmFlcmdhVmZuenJnZnZGJyAsJ1ZCUCcgLCdnZmJ1eW5wYnknKGdwcmFhYnBfeWRmbHogID0gcnBueWFyJAoNY3VjPzw=

Parece un base64 de toda la vida, vamos a decodificarlo:

>?
;)rpnyar$(rfbyp_ydflz
;'rgarznvebgpnsfvgnf bqngprabP' bupr
}
;))(ebeer_ydflz . ' :rfengprabp bqhc bA'(rvq    
{ )rpnyar$!( sv
;)'abvkrabPfbaergaVfnzrgfvF' ,'VBP' ,'gfbuynpby'(gpraabp_ydflz  = rpnyar$
cuc?<

¿Soy yo o esas interrogaciones al principio y al final me recuerdan a PHP? ¿Quizás le hayan aplicado algo como cesar?

Cuando me toca hacer fuerza bruta de cesar suelo irme a esta web que tiene un montón de opciones: http://www.dcode.fr/caesar-cipher

Copiamos el código y le damos a decrypt, en la izquierda vemos los resultados con las diferentes claves:

crypto3-1

Ese primer resultado parece prometedor ya que podemos ver el PHP al final del resultado, parece que es un Cesar con clave 13 o un ROT13. Para poder ver mejor la traducción me fuí a http://www.decode.org/:

crypto3-2

Sigue sin tener mucho sentido pero al menos parece que ya tenemos los carácteres correctos y parece que están al revés, vamos a http://codebeautify.org/reverse-string:

crypto3-3

Y ahí por fin tenemos el código legible y la flag:

SistemasInternosConexion

Espero poder hacer alguno de los writeups pronto y que este os haya gustado, saludos!

Publicado en cripto, ctf, cybercamp | Deja un comentario

Cybercamp 2016 – Crypto 6

Siguiendo los writeups de la Cybercamp 2016, ya sé que no voy por orden, hoy os traigo otro de cripto.

Nos dan el siguiente enunciado:

CRYTO 6

El seleccionador de fútbol de Brasil, harto de que sus jugadores se pasen el día de chisme en chisme en Facebook y Twitter, ha prohibido el uso de Internet para sus jugadores. No obstante, seguimos viendo actualizaciones en de un jugador de la selección.

¿Sabes cual va a ser su próxima actualización?

Mirror1: https://mega.nz/#!bBhzEYxL!dD95W1D1dDsx6UyW7huvyLJPi9UNOzDhUsDjq-IIiBo

Mirror2: https://mega.nz/#!K8NiEJSA!dD95W1D1dDsx6UyW7huvyLJPi9UNOzDhUsDjq-IIiBo

Y un archivo info.pcap el cual trae muy pocos paquetes lo cual nos ayuda algo, si nos quedamos solo con los paquetes UDP con el origen 172.16.10.164 vemos que tienen un puerto de origen en común pero el de destino varia. ¿Os suena algo parecido?

Para que nos sea un poco más sencillo ver los puertos de destino utilizamos tshark de la siguiente manera:

tshark -2 -R "udp.srcport==5050 && !(icmp)" -n --disable-protocol chargen -r info.pcap
  1   0.000165 172.16.10.164 → 172.16.10.1  UDP 1042 5050→2 Len=1000
  2   0.010928 172.16.10.164 → 172.16.10.1  UDP 1042 5050→19 Len=1000
  3   0.022582 172.16.10.164 → 172.16.10.1  UDP 1042 5050→1 Len=1000
  4   0.038902 172.16.10.164 → 172.16.10.1  UDP 1042 5050→20 Len=1000
  5   0.051425 172.16.10.164 → 172.16.10.1  UDP 1042 5050→9 Len=1000
  6   0.063830 172.16.10.164 → 172.16.10.1  UDP 1042 5050→12 Len=1000
  7   0.075404 172.16.10.164 → 172.16.10.1  UDP 1042 5050→9 Len=1000
  8   1.078036 172.16.10.164 → 172.16.10.1  UDP 1042 5050→20 Len=1000
  9   1.090926 172.16.10.164 → 172.16.10.1  UDP 1042 5050→14 Len=1000
 10   2.093515 172.16.10.164 → 172.16.10.1  UDP 1042 5050→9 Len=1000
 11   2.106277 172.16.10.164 → 172.16.10.1  UDP 1042 5050→3 Len=1000
 12   3.110228 172.16.10.164 → 172.16.10.1  UDP 1042 5050→5 Len=1000

Esto nos deja con la siguiente lista de puertos:

2,19,1,20,9,12,9,20,14,9,3,5

Esta vez parece que nos han dado posiciones, seguramente de las letras en el abecedario, vamos a probar a ver que encontramos con el siguiente script:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

abecedario=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
code=[2,19,1,20,9,12,9,20,14,9,3,5]

output=""
for i in code:
	output+=abecedario[i-1]
print output

Y ahí tenemos la flag!

brasilisnice

Otro writeup cortito pero que espero que os haya gustado, gracias por la visita!

 

Publicado en cripto, ctf, cybercamp | Deja un comentario