martes, 9 de julio de 2019

Criptografía (CLIV): Solución Reto 32

Solución al último reto de criptografía que he puesto recientemente en este blog en el que pretendo poner de manifiesto la importancia de la integridad de la información, es decir, de chequear ésta con objeto de asegurar que la información es exactamente la que el remitente nos envió y que ésta no ha sido interceptada y manipulada por un tercero.

Como en los más recientes de los posts de criptografía que he incluido en este blog, en este desafío también se ve involucrado el criptosistema de cifrado simétrico más utilizado,  AES ('Advanced Encryption Standard'), en el modo de operación CBC ('Cipher Block Chaining'de los algoritmos de cifrado por bloques.

El enunciado del reto decía lo siguiente:

"Supongamos que he interceptado un criptograma de una organización criminal que sé que se ha obtenido cifrando el texto en claro con AES en modo de operación CBC y, además, que también me las he ingeniado para hacerme con el texto en claro. Los dígitos que en él figuran se corresponden con un número de cuenta bancaria en la que el miembro de la organización al que va destinado este mensaje debe ingresar una importante cantidad del dinero obtenido como consecuencia de las actividades ilícitas llevadas a cabo (ver la información de partida de la que dispongo en los recursos asociados al reto). Si pudiera modificar el criptograma para que el miembro de la organización que lo reciba vea al descifrarlo un número de cuenta mío en lugar del que se le envía entonces podría no volver a trabajar nunca más :). El problema es que desconozco la clave de cifrado/descifrado, ¿me ayudas?. La solución a este reto es el nuevo vector de inicialización y el nuevo criptograma a enviar al receptor del mensaje para que ingrese el dinero en mi cuenta".

Entre los recursos asociados al reto se encuentran los siguientes:


- Criptograma: 9eaef1bbab38643957c7e9ca82d86075
- Vector de inicialización: fe5567e8d769550852182cdf69d74bb1
- Texto en claro (Número de cta.): 4800372564718908
- Mi número de cuenta: 3600538509837891

Como en la solución al reto anterior, antes de pasar a explicar cómo se puede resolver este desafío, comparto cómo lo preparé. Para ello, con objeto de cifrar el texto en claro del reto utilicé una de las muchas herramientas 'online' existentes:
En el gráfico anterior se puede ver toda la información correspondiente al cifrado de la que disponemos para resolver este reto e, incluso, la clave de cifrado/descifrado, pero esto último no lo sabemos :).

Pruebo a descifrarlo para ver si lo he hecho correctamente:
¡Todo listo! ;)

SoluciónDicho lo anterior, me dispongo a intentar resolver el reto.

Para ello, recuerdo el funcionamiento del descifrado en modo de operación CBC ('Cipher Block Chaining') de los algoritmos de cifrado por bloques:
Decía en las pistas que puse para ayudar a resolver este reto que aunque me he permitido una cierta licencia, yo diría que incluso excesiva :), a la hora de poner el título de este reto, posiblemente no se le escape a nadie que me estoy refiriendo al 'bit-flipping attack', que, tal y como nos cuenta wikipedia, puede consistir en que el atacante convierta el mensaje original en otro similar en el que altera cierta información a su conveniencia, y también decía que en este desafío sólo tenemos control sobre los bloques del criptograma (Ci, donde C0 = IV - Vector de inicialización), por lo que la solución a este reto pasa necesariamente por modificar éstos hasta obtener el texto plano deseado.

Para ello, inicialmente, sólo hay que tener presente una cosa: la modificación de un Byte de un bloque del criptograma (Ci) supone una modificación en el mismo Byte del bloque siguiente del texto plano (Pi+1). Decir, además, que dicha modificación supone alterar también, esta vez sin control, el texto plano (Pi) que se obtiene al descifrar el bloque que se ha modificado (Cidel criptograma, pero como veremos más adelante en el reto no tengo que preocuparme de esto último:
En el reto sólo tenemos C0 = IV y C1, y, por tanto, sólo tengo que modificar C0 para obtener el texto en claro deseado en P1 (cambiar el valor de C0 sólo conlleva, única y exclusivamente, alterar P1). Pero, ¿con qué valor modifico C0 para que el miembro de la organización que reciba el mensaje vea al descifrarlo mi número de cuenta bancaria e ingrese el dinero en ella?. Considerando la siguiente figura:
Como:
 Dk(C1) = C0 XOR P1

Donde: Dk = Función de descifrado;
C1 = Bloque 1 del criptograma original;
C0 = Bloque 0 del criptograma original (IV original);
 P1 = Bloque 1 del texto plano original.

Entonces:
C'0 = C0 XOR PXOR P'1

Donde: C'0 = Valor al que hay que modificar  C0; 
C0 = Bloque 0 del criptograma original (IV original);
 P1 = Bloque 1 del texto plano original;
 P'1 = Valor deseado para el bloque 1 del texto plano.

Creo un pequeño script en python:

import binascii

criptograma_original_hex='9eaef1bbab38643957c7e9ca82d86075'
print '[+] Criptograma original  (hex)  :',criptograma_original_hex
IV_original_hex='fe5567e8d769550852182cdf69d74bb1'
print '[+] V. inicializ. original(hex)  :',IV_original_hex
texto_plano_original_ascii='4800372564718908'
print '[+] Texto plano original  (ascii):',texto_plano_original_ascii
texto_plano_original_hex=binascii.hexlify(texto_plano_original_ascii)
print '[+] Texto plano original  (hex)  :',texto_plano_original_hex
texto_plano_deseado_ascii='3600538509837891'
print '[+] Texto plano deseado   (ascii):',texto_plano_deseado_ascii
texto_plano_deseado_hex=binascii.hexlify(texto_plano_deseado_ascii)
print '[+] Texto plano deseado   (hex)  :',texto_plano_deseado_hex
IV_nuevo_hex="{:02x}".format(int(IV_original_hex,16)^int(texto_plano_original_hex,16)^int(texto_plano_deseado_hex,16))
print '[+] V. inicializ. nuevo   (hex)  :',IV_nuevo_hex
print '[+] Criptograma nuevo     (hex)  :',criptograma_original_hex

Lo ejecuto:

Por lo que la solución a este reto es:

Vector de inicialización a enviar (IV = C0) = f95b67e8d16d5f08541523dd66d642b8
Bloque 1 del criptograma a enviar (C1) = 9eaef1bbab38643957c7e9ca82d86075

Como se ve, tal y como he dicho antes, el bloque 1 del criptograma a enviar no varía respecto al original. 

Pero veamos cómo termina esta historia: tras enviar al destinatario el mensaje cifrado éste lo descifra utilizando la clave que conoce:
Y el dinero se ingresa en mi cuenta :).

******** PRÓXIMO RETO
Reto 33:   Por publicar.

domingo, 7 de julio de 2019

Criptografía (CLIII): Solución Reto 31

Solución al reto de dificultad media sobre criptografía que he puesto recientemente en este blog y en el que se ve involucrado el criptosistema de cifrado simétrico más utilizado, AES ('Advanced Encryption Standard'), en el modo de operación CBC ('Cipher Block Chaining'de los algoritmos de cifrado por bloques. Su enunciado decía lo siguiente:

"Para resolver este reto se necesita conocer cómo funciona el modo CBC de los cifradores por bloques. Demuestra que tú sí conoces dicho funcionamiento y obtén la solución de este reto con las siguientes pistas:

- Los primeros 14 de los 16 caracteres de la clave: '5rjIubT&Op_$3D'.
- Los tres últimos Bytes del cuarto bloque del criptograma: b1607e.
- El quinto bloque completo del criptograma: 925275279e9ca54278d6636884970397.
- Mensaje en claro: 'Veamos si eres capaz de encontrar la flag, que es el vector de inicializacion-IV'".

Antes de pasar a explicar la solución de este reto, comparto cómo lo preparé. Para ello, con objeto de cifrar el texto en claro del desafío utilicé una de las muchas herramientas 'online' existentes:
En el gráfico anterior se pueden ver las pistas que se dan para resolver este reto e, incluso, la solución, es decir, el vector de inicialización (IV): 336e63306e37723464305f336c5f4956 (en hexadecimal) o, lo que es lo mismo, 3nc0n7r4d0_3l_IV (en ASCII). Cualquiera de ambas respuestas sería válida como respuesta a este desafío.

Pruebo a descifrarlo para ver si lo he hecho correctamente:
¡Todo listo! ;)

Solución: Dicho lo anterior, me olvido de todo ello, me dispongo a intentar resolver el reto.

Decía en el enunciado que para resolver este desafío es necesario conocer cómo funciona el modo CBC ('Cipher Block Chaining') de los algoritmos de cifrado por bloques. El funcionamiento del descifrado en este modo de operación se muestra en la siguiente figura:
Doy los siguientes pasos:

1º) Obtención de la clave AES:

Conozco el quinto bloque completo y los tres últimos Bytes del cuarto bloque del criptograma o texto cifrado, y el mensaje en claro o texto plano completo, por lo que puedo utilizar la fuerza bruta para obtener los dos últimos caracteres de la clave y así tenerla entera:

a) Relleno con ceros los Bytes desconocidos del cuarto bloque del criptograma.

b) Realizo fuerza bruta sobre los dos últimos caracteres de la clave AES hasta que los tres últimos caracteres del quinto bloque del texto plano que obtenga sean iguales a los tres últimos caracteres del quinto bloque del texto plano conocido, es decir, "-IV".

Creo un pequeño script en python para ello:

from Crypto.Cipher import AES
import binascii

def descifrado(criptograma,clave,IV):
    aes=AES.new(clave,AES.MODE_CBC,IV)
    return aes.decrypt(criptograma)

caracteres='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ '

clave_catorce_primeros_caracteres='5rjIubT&Op_$3D'
criptograma_cuarto_bloque='00000000000000000000000000b1607e'
criptograma_quinto_bloque='925275279e9ca54278d6636884970397'
texto_plano='Veamos si eres capaz de encontrar la flag, que es el vector de inicializacion-IV'

# Obtener clave AES
clave_AES_encontrada=''
for i in caracteres:
    for j in caracteres:
        clave_fuerza_bruta=clave_catorce_primeros_caracteres+i+j
        texto_plano_quinto_bloque_fuerza_bruta=descifrado(binascii.unhexlify( criptograma_quinto_bloque),clave_fuerza_bruta,binascii.unhexlify(criptograma_cuarto_bloque))
        if  str(texto_plano_quinto_bloque_fuerza_bruta).endswith(texto_plano[78:81]):
            clave_AES_encontrada=clave_fuerza_bruta
            break
    if clave_AES_encontrada!='':
       print''
       print'[+] Obtencion de la clave AES mediante descifrado por fuerza bruta del quinto bloque del criptograma:',texto_plano_quinto_bloque_fuerza_bruta,'; Clave AES:',clave_AES_encontrada
       break

if clave_AES_encontrada=='':
   print'[-] No se ha encontrado la clave AES.'

Lo ejecuto:
Como resultado obtengo que la clave de cifrado es: "5rjIubT&Op_$3Dv%", es decir. los dos caracteres que faltaban son: "v%".

2º) Obtención del  resto de bloques del criptograma (del 1 al 4) y del vector de inicialización (IV):

Ahora conozco la clave y puedo "empezar por el final":

 si Pi Dk(Ci) XOR Ci-1
 entonces:
Ci-1 Dk(Ci) XOR Pi 

Donde: C0 = IV (vector de inicialización)

Y, tras esta breve explicación, el script en python completo para obtener la solución de este reto  es:

from Crypto.Cipher import AES
import binascii

def descifrado(criptograma,clave,IV):
    aes=AES.new(clave,AES.MODE_CBC,IV)
    return aes.decrypt(criptograma)

caracteres='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ '

clave_catorce_primeros_caracteres='5rjIubT&Op_$3D'
criptograma_cuarto_bloque='00000000000000000000000000b1607e'
criptograma_quinto_bloque='925275279e9ca54278d6636884970397'
texto_plano='Veamos si eres capaz de encontrar la flag, que es el vector de inicializacion-IV'

# Obtener clave AES
clave_AES_encontrada=''
for i in caracteres:
    for j in caracteres:
        clave_fuerza_bruta=clave_catorce_primeros_caracteres+i+j
        texto_plano_quinto_bloque_fuerza_bruta=descifrado(binascii.unhexlify( criptograma_quinto_bloque),clave_fuerza_bruta,binascii.unhexlify(criptograma_cuarto_bloque))
        if  str(texto_plano_quinto_bloque_fuerza_bruta).endswith(texto_plano[78:81]):
            clave_AES_encontrada=clave_fuerza_bruta
            break
    if clave_AES_encontrada!='':
       print''
       print'[+] Obtencion de la clave AES mediante descifrado por fuerza bruta del quinto bloque del criptograma:',texto_plano_quinto_bloque_fuerza_bruta,'; Clave AES:',clave_AES_encontrada
       break

# Obtener resto de bloques del criptograma
if clave_AES_encontrada!='':
   criptograma_cuarto_bloque=binascii.hexlify(descifrado(binascii.unhexlify( criptograma_quinto_bloque),clave_AES_encontrada,texto_plano[64:81]))
   print'[+] Cuarto bloque del criptograma   :',criptograma_cuarto_bloque
   criptograma_tercer_bloque=binascii.hexlify(descifrado(binascii.unhexlify( criptograma_cuarto_bloque),clave_AES_encontrada,texto_plano[48:64]))
   print'[+] Tercer bloque del criptograma   :',criptograma_tercer_bloque
   criptograma_segundo_bloque=binascii.hexlify(descifrado(binascii.unhexlify( criptograma_tercer_bloque),clave_AES_encontrada,texto_plano[32:48]))
   print'[+] Segundo bloque del criptograma  :',criptograma_segundo_bloque
   criptograma_primer_bloque=binascii.hexlify(descifrado(binascii.unhexlify( criptograma_segundo_bloque),clave_AES_encontrada,texto_plano[16:32]))
   print'[+] Primer bloque del criptograma   :',criptograma_primer_bloque

# Obtener vector de inicializacion (IV)
   vector_inicializacion=binascii.hexlify(descifrado(binascii.unhexlify( criptograma_primer_bloque),clave_AES_encontrada,texto_plano[0:16]))
   print'[+] Vector de inicializacion (hex)  :',vector_inicializacion
   print'[+] Vector de inicializacion (ascii):',vector_inicializacion.decode('hex')
else:
   print'[-] No se ha encontrado la clave AES.'

Lo ejecuto:
Por lo que la solución a este reto es: 3nc0n7r4d0_3l_IV.

******** PRÓXIMO RETO
Reto 32:   "Flipando un poco".

Criptografía (CLII): Reto 32

Un reto en el que pretendo poner de manifiesto la importancia de la integridad, posiblemente la peor maltratada de las tres dimensiones clásicas de la seguridad de la información. Es decir, chequear la integridad de los mensajes recibidos es muy importante con objeto de evitar que un atacante pueda interceptarlos y modificarlos.

Para ello y como en el último desafío sobre criptografía que he puesto en este blog, utilizo el criptosistema de cifrado simétrico más empleado, AES ('Advanced Encryption Standard'), en el modo de operación CBC ('Cipher Block Chaining'de los algoritmos de cifrado por bloques.

Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.

Reto 32: "Flipando un poco".

Supongamos que he interceptado un criptograma de una organización criminal que sé que se ha obtenido cifrando el texto en claro con AES en modo de operación CBC y, además, que también me las he ingeniado para hacerme con el texto en claro. Los dígitos que en él figuran se corresponden con un número de cuenta bancaria en la que el miembro de la organización al que va destinado este mensaje debe ingresar una importante cantidad del dinero obtenido como consecuencia de las actividades ilícitas llevadas a cabo (ver la información de partida de la que dispongo en los recursos asociados al reto). Si pudiera modificar el criptograma para que el miembro de la organización que lo reciba vea al descifrarlo un número de cuenta mío en lugar del que se le envía entonces podría no volver a trabajar nunca más :). El problema es que desconozco la clave de cifrado/descifrado, ¿me ayudas?. La solución a este reto es el nuevo vector de inicialización y el nuevo criptograma a enviar al receptor del mensaje para que ingrese el dinero en mi cuenta.

Dificultad:
Tipo:        Criptografía.

Recursos:
- Criptograma: 9eaef1bbab38643957c7e9ca82d86075
- Vector de inicialización: fe5567e8d769550852182cdf69d74bb1
- Texto en claro (Número de cta.): 4800372564718908
- Mi número de cuenta: 3600538509837891

******** 07/07/2019
Pista 1:    Aunque me he permitido una cierta licencia, yo diría que incluso excesiva :), a la hora de poner el título de este reto, posiblemente no se le escape a nadie que me estoy refiriendo al 'bit-flipping attack', que, tal y como nos cuenta wikipedia, puede consistir en que el atacante convierta el mensaje original en otro similar en el que altera cierta información a su conveniencia.

******** 08/07/2019
Pista 2:    Evidentemente, en estas circunstancias, sólo tenemos control sobre los bloques del criptograma (Ci, donde C0 = IV - Vector de inicialización), por lo que la solución a este reto pasa necesariamente por modificar éstos hasta obtener el texto plano deseado. Para ello, inicialmente, sólo hay que tener presente una cosa: la modificación de un Byte de un bloque del criptograma (Ci) supone una modificación en el mismo Byte del bloque siguiente del texto plano (Pi+1).

Vale, ya sabemos cuál es la operativa para resolver éste reto, pero: ¿con qué valores modificamos los bloques del criptograma (en el reto: C0 = IV y C1) para que el miembro de la organización que reciba el mensaje vea al descifrarlo mi número de cuenta bancaria e ingrese el dinero en ella?.  

******** 09/07/2019
Solución.

******** PRÓXIMO RETO
Reto 33:   Por publicar.

jueves, 4 de julio de 2019

Criptografía (CLI): Reto 31

En esta ocasión un reto en el que se ve involucrado el criptosistema de cifrado simétrico más utilizado, AES ('Advanced Encryption Standard'), en el modo de operación CBC ('Cipher Block Chaining'de los algoritmos de cifrado por bloques.

Como siempre, se admiten soluciones en forma de comentarios a esta entrada. Pasado un tiempo iré proporcionando pistas para su resolución, un máximo de tres, y posteriormente actualizaré este post con la solución.

Reto 31: "Empecemos por... ¿el final?".

Para resolver este reto se necesita conocer cómo funciona el modo CBC de los cifradores por bloques. Demuestra que tú sí conoces dicho funcionamiento y obtén la solución de este reto con las siguientes pistas:

- Los primeros 14 de los 16 caracteres de la clave: "5rjIubT&Op_$3D".
- Los tres últimos Bytes del cuarto bloque del criptograma: b1607e.
- El quinto bloque completo del criptograma: 925275279e9ca54278d6636884970397.
- Mensaje en claro: "Veamos si eres capaz de encontrar la flag, que es el vector de inicializacion-IV".

Dificultad:
Tipo:        Criptografía.

******** 05/07/2019
Pista 1:    ¿Es posible obtener los 2 caracteres que faltan de la clave mediante el empleo de la fuerza bruta?.

******** 06/07/2019
Pista 2:
 si Pi Dk(Ci) XOR Ci-1
 entonces:
Ci-1 Dk(Ci) XOR Pi 

Donde: C0 = IV (vector de inicialización)
******** 07/07/2019
Solución.

******** PRÓXIMO RETO
Reto 32:   "Flipando un poco".

martes, 2 de julio de 2019

Explotación Web (V): Solución Reto picoCTF 2018 "Inspect Me"

Mientras voy finalizando los retos de criptografía y de forense de la plataforma picoCTF 2018 (ya me quedan pocos :)) comparto las soluciones de desafíos correspondientes a la categoría de 'Web Exploitation'.

El primero de ellos bajo el título "Inspect Me", en mi opinión, presenta un nivel de dificultad muy fácil (☆☆).

Inspect Me - Points: 125:

Su enunciado dice lo siguiente: '
Inpect this code! (link)'.

Y en la pestaña 'Hints' dan las siguientes pistas: 'How do you inspect a website's code on a browser?' y 'Check all the website code'.
Solución: se proporciona un 'link' a un sitio web:
Clic botón derecho y opción "Ver código fuente de la página (Ctrl + U)":
 Y ya tengo la primera parte de la flag: picoCTF{ur_4_real_1nspe.

Para encontrar la segunda y tercera partes de la flag inspecciono el código fuente de "mycss.css" y de "myjs.js", y al final de cada uno de ellos veo lo siguiente, respectivamente:
Con lo que la solución a este reto es:

picoCTF{ur_4_real_1nspect0r_g4dget_b4887011}.

Forense (X): Solución Reto picoCTF 2018 "now you don't"

Solución a otro de los retos de "forense" de la plataforma picoCTF 2018.

En este caso el reto tiene el título "now you don't" y, en mi opinión, presenta un nivel de dificultad fácil (☆☆).

now you don't - Points: 200:


Su enunciado dice lo siguiente: '
We heard that there is something hidden in this picture. Can you find it?'.

Y en la pestaña 'Hints' dan las siguientes pistas: 'There is an old saying: if you want to hide the treasure, put it in plain sight. Then no one will see it' y 'Is it really all one shade of red?'.
Solución: se proporcionan un archivo de imagen (nowYouDont.png) en el que, como dice el enunciado, está oculta la flag.

Lo primero que suelo hacer para resolver los retos de esteganografía en imágenes es utilizar la herramienta 'Stegsolve'. Abro la imagen con este software y en el plano rojo puedo ver la flag:
Con lo que la solución a este reto es: picoCTF{n0w_y0u_533_m3}.

Pero, también hubiera podido resolverlo utilizando la misma herramienta 'online' que en este reto:

lunes, 1 de julio de 2019

Forense (IX): Solución Reto picoCTF 2018 "Lying Out"

En este post la solución a otro de los retos de "forense" de la plataforma picoCTF 2018.

El noveno de ellos tiene el título "Lying Out" y, en mi opinión, presenta un nivel de dificultad muy fácil (☆☆).

Lying Out - Points: 250:


Su enunciado dice lo siguiente: '
Some odd traffic has been detected on the network, can you identify it? More info here. Connect with nc 2018shell.picoctf. com 3693 to help us answer some questions'.

En esta ocasión no se dan pistas en la pestaña 'Hints'.
Solución: se proporcionan un archivo con un gráfico de tráfico de red (traffic.png) y un archivo con información explicativa adicional sobre este reto (info.txt).

En resumen: el gráfico muestra el patrón de tráfico diario con respecto al número de direcciones IP únicas que envían solicitudes al sitio en intervalos de 15 minutos y parece ser que actualmente hay determinadas horas del día en las que muchas más direcciones IP únicas de lo habitual están enviando solicitudes al sitio, lo que podría ser una evidencia de que algo "raro" puede estar sucediendo.

Cuando me conecto se me da una lista de registros de log y se me pregunta cuáles de ellos presentan un tráfico de solicitudes desde direcciones IP únicas significativamente superior al habitual para su hora del día.

Por tanto, para resolver este reto sólo tengo que comparar el tráfico habitual (traffic.png):
con el tráfico que se me da en los registros de log al conectarme:
Con lo que la solución a este reto es: picoCTF{w4y_0ut_d2b8ece5}.

domingo, 30 de junio de 2019

Forense (VIII): Solución Reto picoCTF 2018 "Truly an Artist"

Continúo con la solución a otro de los retos de "forense" de la plataforma picoCTF 2018.

El octavo de ellos tiene el título "Truly an Artist" y, en mi opinión, presenta un nivel de dificultad muy fácil (☆☆).

Truly an Artist - Points: 200:


Su enunciado dice lo siguiente: '
Can you help us find the flag in this Meta-Material? You can also find the file in /problems/truly-an-artist_0_4f3e3848bbbfc5cfcfa404bd18b8ac96'.

Y en la pestaña 'Hints''Try looking beyond the image?' y 'Who created this?'.
Solución: se proporciona un archivo de imagen con el logotipo de picoCTF (2018.png). Por el enunciado me queda claro que la flag puede encontrarse en los metadatos de este archivo y, tanto por el título como por las pistas que se dan, que posiblemente esté en el metadato correspondiente a 'Artist'.

Abro el archivo con 'ExifToolGUI' y miro en el metadato 'Artist':
Con lo que la solución a este reto es: picoCTF{look_in_image_788a182e}.

Forense (VII): Solución Reto picoCTF 2018 "hex editor"

Solución a otro de los retos de "forense" de la plataforma picoCTF 2018.

El séptimo de ellos tiene el título "hex editor" y, en mi opinión, presenta un nivel de dificultad muy fácil (☆☆).

hex editor - Points: 150:

Su enunciado dice lo siguiente: '
This cat has a secret to teach you. You can also find the file in /problems/hex-editor_3_086632ac634f394afd301fb6a8dbadc6 on the shell server'.

Y en la pestaña 'Hints': 'What is a hex editor?', 'Maybe google knows', y se hace referencia a varios editores de texto.
Solución: se proporciona un archivo con la imagen de un gato (hex_editor.jpg). Lo abro con un editor hexadecimal y busco "pico":
Con lo que la solución a este reto es:

picoCTF{and_thats_how_u_edit_hex_kittos_8BcA67a2}.

Forense (VI): Solución Reto picoCTF 2018 "admin panel"

En este post la solución a otro de los retos de "forense" de la plataforma picoCTF 2018.

El sexto de ellos tiene el título "admin panel" y, en mi opinión, presenta un nivel de dificultad fácil (☆☆).

admin panel - Points: 150:

Su enunciado dice lo siguiente: '
We captured some traffic logging into the admin panel, can you find the password?'.

Y en la pestaña 'Hints' : 'Tools like wireshark are pretty good for analyzing pcap files'.
Solución: se proporciona un archivo de captura de paquetes de tráfico de red (data.pcap) y lo abro utilizando 'Wireshark'.

Establezco un filtro para el método "POST" de petición HTTP:
La segunda de las peticiones que se muestran contiene la bandera:
Con lo que la solución a este reto es: picoCTF{n0ts3cur3_b186631d}.