Cybercamp 2015 - Forense 17 y 18

Hola, hoy voy a explicar unos retos que hice en el CTF de CyberCamp 2015.
La prueba 17 y 18 trataba sobre un empleado desleal que conectó un pendrive y se llevó información confidencial del ordenador del jefe.
Las preguntas que nos hacían eran las siguientes:

¿Podrías decirnos la primera fecha/hora en que conectó ese pendrive?

¿Podrías decirnos la última fecha/hora en que conectó ese pendrive?

Información adicional:

Esto sucedió entre el 7/08/2015.
Formato Respuesta: DD/MM/YYYY HH:MM:SS
Descarga Forense: https://mega.nz/#!cFQiTA6K!DYQioKcqHZPFX7T6BLU8hYwHAjH1SS6ulwSYCpbYZ68
Archivo Relacionado: SYSTEM

Como en este caso todo lo que pedían era relacionado con el pendrive en lugar de buscar en el registro utilicé una herramienta de www.nirsoft.net que se llama USBDeview.
Esta herramienta nos sirve para ver información sobre los dispositivos conectados al sistema pero también tiene la opción de cargar un fichero de registro, que es nuestro caso, y para ello hay que ejecutarlo desde la línea de comandos.

USBDeview.exe /regfile SYSTEM



En la captura de pantalla podemos ver todos los dispositivos que se han conectado al sistema que estamos analizando. Sólo uno de ellos se ha conectado el 7/08/2015 por lo que ese tiene que ser el que buscamos.
La primera fecha en la que se conectó el pendrive es la que marca la columna Created Date y la ultima fecha en que se conectó es la que marca la columna Last Plug/Unplug Date con lo que ya tenemos la respuesta a las dos preguntas que nos hacían.
En la prueba 16 si no recuerdo mal nos pedían el numero de serie del pendrive, que también se puede ver en la captura.

Y con esto hemos terminado, hasta la próxima.

Reducir el tamaño de un disco VDI

Hola, en esta entrada voy a anotar como reducir el tamaño de los discos virtuales de VirtualBox, más concretamente los discos con asignación dinámica.

Según se va trabajando con las maquinas virtuales el tamaño de disco va aumentando y aunque borremos datos en la maquina virtual el tamaño del fichero vdi no disminuye. En equipos en los que tenemos varias maquinas virtuales puede interesarnos mantener ajustado el tamaño que ocupan los vdi en el disco del equipo anfitrión.

Para ello en la maquina virtual borramos todo lo que no nos haga falta y después, si es un Windows, desfragmentamos el disco.
Luego hay que limpiar el espacio vacío del disco, y lo haremos de la siguiente manera:

En Windows usaremos la herramienta de sysinternals SDelete con el parámetro -z .

sdelete.exe -z

En GNU/Linux se usará la herramienta dd que ya viene en el sistema.

El siguiente comando nos generará un fichero con el nombre zfill.

dd if=/dev/zero of=zfill bs=1M

Al finalizar el comando anterior recibiremos un error similar al que se indica.

dd: error al escribir en «zfill»: No queda espacio en el dispositivo

Ignoramos el error y borramos el fichero generado por el primer comando.

rm zfill

Con esto ya hemos terminado con la maquina virtual, así que la apagamos. 
Ahora procederemos a compactar el disco con la utilidad VBoxManage que debería estar en la carpeta donde tengamos instalado VirtualBox.

El comando para Windows sería el siguiente.

VBoxManage.exe modifyhd "C:\Ruta\Fichero.vdi" --compact

El comando para GNU/Linux sería este.

VBoxManage modifyhd "/Ruta/Fichero.vdi" --compact

Al ejecutarlo se irá mostrando el progreso, una vez llegue al 100 % ya estará compactado y habremos terminado.

Hasta la próxima.

Instalar Fuse PDF en Kali 2.0

Hola, hoy voy a explicar como instalar FusePDF en Kali Linux 2.0, una vez se sabe cuáles son las dependencias necesarias es bastante fácil, de lo contrario puede dar algún quebradero de cabeza.
FusePDF es una librería que usa Fuse para montar los PDF como un sistema de ficheros.

Primero instalaremos los paquetes libattr1-dev y libfuse-dev para no tener problemas con la instalación de los módulos de Perl que necesitamos.

apt-get install libattr1-dev libfuse-dev

Luego instalamos los módulos de Perl File::ExtAttrTest::Virtual::FilesystemFuse::PDF


perl -MCPAN -e "install File::ExtAttr"

Nos dará un error al final y tendremos que compilarlo a mano para que funcione correctamente.


Nos vamos a la ruta donde se lo ha descargado que está en /root/.cpan/build/File-ExtAttr-1.09* (el final del nombre varía) y compilamos.

make
make install

Si usamos Kali en modo Live CD la ruta varía y estaría en /root/.local/share/.cpan/build/

Luego instalamos el siguiente módulo Test::Virtual::Filesystem

perl -MCPAN -e "install Test::Virtual::Filesystem"

Y también lo compilamos como el anterior, su carpeta es Test-Virtual-Filesystem-0.13*

Terminamos con el último que sería Fuse::PDF

perl -MCPAN -e "install Fuse::PDF"

Este no haría falta compilarlo a mano, si se instaló correctamente veríamos esto en la pantalla.


Probamos que se ha instalando correctamente ejecutando mount_pdf y nos mostrará la ayuda.



Y con esto ya hemos acabado, ya lo tenemos listo para usar.

Hasta la próxima.

Envío de alertas por SMS

Hola, continuando con el tema de las alertas en esta ocasión vamos a enviar un SMS usando la API de Twilio para python. Lo primero sera crearnos una cuenta en Twilio.

Nos pedirá un número de teléfono para verificar nuestra identidad mediante un código que recibiremos por SMS.
Una vez tengamos la cuenta le damos a Get your Twilio number y nos ofrecerá un número de teléfono, pero en lugar de aceptarlo pulsamos en Search for a different number. y ponemos nuestro país y en Capabilities marcamos SMS, de esta forma, buscaremos un número de España que pueda enviar SMS. Si al buscar no nos aparece ningún teléfono cambiaremos el país.

Cuando tengamos el número asignado pulsamos en Numbers, situado en la parte de arriba, y veremos una pantalla donde estarán los datos de nuestro nuevo número de teléfono.


En la captura de arriba se ve que está activado el servicio de envío de SMS, si os aparece lo mismo en vuestra cuenta es que ya estáis listos para poder usarla.
Si pulsáis en Voice, SMS & MMS y luego en GETTING STARTED veréis una pantalla como esta.



Con el account sid y el auth token ya podemos enviar SMS desde nuestra cuenta.
Para ello instalamos la API de Twilio para python: pip install twilio

Una vez instalada podemos enviar SMS usando este código.


import twilio import twilio.rest account_sid = "6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b" auth_token = "6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b" try: client = twilio.rest.TwilioRestClient(account_sid, auth_token) message = client.messages.create( body="Mensaje de prueba.", to="+34622000000", from_="+34986000000" ) except twilio.TwilioRestException as e: print(e)

Hasta la próxima.


Envío de alertas con Telegram

Hola, en esta entrada vamos a hablar sobre como enviar alertas. En muchas ocasiones puede ser útil tener una forma de enviar avisos cuando uno de nuestros sistemas falle, la forma más clásica es el envío de un correo electrónico, pero en esta ocasión vamos a hacerlo a través de Telegram.

Desde que sacaron la API de Telegram el envío de mensajes a través de esta plataforma se ha vuelto realmente sencillo, especialmente desde que sacaron la API para los bots.
Lo primero que haremos será crearnos un bot, que será el que se encargue de enviar los mensajes, para ello abriremos un chat a @BotFather que es el bot encargado de crear las cuentas.

Escribimos /newbot y nos pedirá los datos para nuestro nuevo bot, nombre y usuario, y después nos dará el token para poder usarlo.



Ahora que tenemos el token vamos a mirar si funciona correctamente, podemos comprobarlo haciendo una petición a la API vía web.

https://api.telegram.org/bot12345678:AAAAAAAAAAAAAAAAAAAAAAA/getme

Sustituimos lo que esta en negrita por nuestro token y si todo está correcto nos devolverá esto:

{"ok":true,"result":{"id":12345678,"first_name":"Mi_Bot","username":"bot1"}}

Ahora que vemos que nos funciona necesitamos saber a quien le vamos a enviar el mensaje, en este caso nos lo vamos a enviar a nosotros mismos, así que le abrimos un chat a nuestro bot y lo saludamos de forma educada. 
Luego hacemos la siguiente petición para ver los datos de los mensajes que enviamos al bot.

https://api.telegram.org/bot12345678:AAAAAAAAAAAAAAAAAAAA/getUpdates

Y nos devolverá algo parecido a lo siguiente pero con tus datos.

{"ok":true,"result":[
{"update_id":292419999,"message":{"message_id":292,"from":{"id":2345678,"first_name":"Preto"},"chat":{"id":2345678,"first_name":"Preto"},"date":1438873808,"text":"Hola Bot"}},{"update_id":292420000,"message":{"message_id":306,"from":{"id":2345678,"first_name":"Preto"},"chat":{"id":2345678,"first_name":"Preto"},"date":1438958696,"text":"¿Que tal?"}}
]}

Lo que nos hace falta es el número que aparece en negrita, que es el identificador del chat (chat_id), y es el número que usaremos para enviar el mensaje de alerta. 
Ahora ya tenemos todo lo necesario para poder enviar mensajes con el bot, y para hacerlo enviaremos una petición como las anteriores con el método sendMessage y los parámetros chat_id y text.

https://api.telegram.org/bot12345678:AAAAAAAAAAA/sendMessage?chat_id=2345678&text=hola%20esto%20es%20una%20alerta

Con esto el bot ya nos habrá enviado el mensaje a nuestra cuenta de telegram. Este sistema lo podríais implantar usando wget, python, powershell, o lo que mas cómodo os resulte en cada caso.

Hasta la próxima.