Análisis del Timeline de una evidencia con Plaso

Plaso, evolución de la herramienta conocida como log2timeline, es una herramienta desarrollada en Python que permite extraer la línea temporal de todos los eventos ocurridos en un sistema. Admite como como datos de entrada ficheros, discos virtuales, dispositivo de almacenamiento , algún punto de montaje o un volcado de imagen de disco. Como nota aclaratoria aunque la nueva herramienta pasa a denominarse plaso, para ejecutarla se hará a través de “log2timeline.py” lo cual puede llegar a causar confusión.

Plaso nos ofrece un conjunto de herramientas, que de forma resumida son:

  • log2timeline: extraer el time line de todos los eventos.
  • psort: procesamiento de los datos extraídos.
  • pinfo: muestra los datos del fichero de almacenamiento plaso.
  • image_export: exporta ficheros de una imagen.

Log2timeline se encarga de analizar los datos recibidos como parámetro de entrada generando un fichero de salida con formato “plaso”, el cual contendrá toda la información de los datos analizados. Dicho fichero de almacenamiento plaso contendrá información como:

  • Cuando se ejecutó la herramienta.
  • Metadatos de los ficheros analizados de los datos de entrada.
  • La información parseada.
  • Número de eventos extraídos de los datos de entrada.

Para las pruebas realizadas he optado por usar una imagen de prueba en formato EnCase (parte1 y parte2), accesible para cualquiera que quiera realizar las pruebas.

[Read more…]

Análisis tráfico de red dispositivos móviles

En un post anterior se explicó como capturar tráfico de red en una red local utilizando para ello una Raspberry Pi 3.

A continuación vamos a ver cómo podemos analizar el tráfico que hemos capturado en formato pcap.

La primera opción por la que me decanto es la herramienta Capanalysis. Esta herramienta nos permite ver de una forma gráfica las peticiones realizadas, filtrar por tipo de tráfico (HTTP, DNS, ARP, …), filtrar por IP, país, etc. Por tanto, permite acceder a toda esta información de una forma sencilla y visual.

En primer lugar, instalamos la aplicación de Capanalysis. En mi caso he optado por instalarlo en una máquina virtual de la distribución Caine, la cual está orientada a realizar análisis forenses y está basada en Ubuntu 14.04.
[Read more…]

Captura tráfico de red con Raspberry Pi

Llevo tiempo queriendo analizar el tráfico de red de varios dispositivos móviles, en concreto dos móviles chinos y una tablet. Siempre me he cuestionado qué datos enviarán, a dónde ¿Y si el móvil está infectado y está exfiltrando información? Hay varias razones por las que desconfiar de este tipo de dispositivos, aunque entraremos más en detalle acerca de este tema en futuros posts. Como primer paso vamos a centrarnos en cómo podemos capturar el tráfico de red de nuestros dispositivos.

Como bien sabemos, los dispositivos móviles pueden conectarse a una red de datos a través de la conexión 3G/4G o bien a través de una red WiFi. Por lo que en caso de estar exfiltrando información tendríamos que analizar ambas vías, pero en nuestro caso sólo se va a hacer a través de WiFi (de momento).

Para analizar el tráfico de red he optado por una solución sencilla y al alcance de cualquiera, la opción es Raspberry Pi 3 Modelo B.
[Read more…]

USB Rubber Ducky en Android

En este post quiero continuar hablando de USB Rubber Ducky. En el post anterior hablé sobre USB RUbber Ducky y vimos un ejemplo de uso en sistemas Windows. Hoy quiero mostrar que también podemos crear payloads para otros sistemas como Android o MAC.

En el caso de dispositivos Android, debemos tener en cuenta que estos sistemas soportan conectar dispositivos HID, por lo tanto, podemos conectar teclados externos y manejar y controlar el dispositivo mediante el teclado.

Tras realizar unas pruebas, mediante un teclado externo, os comparto una serie de comandos que podríamos usar para manejar un dispositivo Android (las pruebas han sido realizadas con un dispositivo Android 4.4.2 KitKat):

[Read more…]

Me pareció ver un lindo patito: USB Rubber Ducky

Hace poco estuve trasteando con un juguetito nuevo que me regalaron y se trata del USB Rubber Ducky. Sí, con qué poco se puede mantener a un friki entretenid@ durante días! (Señores Reyes Magos, este año he sido muy buena también, ejem ejem).

De forma resumida, USB Rubber Ducky es una herramienta hardware de hacking, internamente tiene un procesador, aunque a simple vista parece un USB, aunque emula ser un teclado, de tal forma que cuando se conecta a un ordenador/dispositivo éste lo reconoce como un teclado y ejecuta las instrucciones que tenga cargadas en una memoria SD que lleva.

[Read more…]

Adquisición de evidencias volátiles

A la hora de realizar una adquisición de evidencias en análisis forense, es importante tener en cuenta el orden de adquisición y obtener las evidencias volátiles en primer lugar. Aparte de la memoria RAM, debemos considerar otros elementos fundamentales como pueden ser registros de la caché, tablas de enrutamiento, caché ARP, procesos, etc.

En este post se pretende hacer una recopilación de todos aquellos comandos y herramientas, en entornos Windows, que nos permiten obtener dicha información volátil y sensible antes de realizar el volcado de la RAM. Aunque es cierto que alguna de esta información se puede obtener mediante dicho volcado, no está de más conocer estas herramientas para obtener los datos de una forma rápida. Una buena práctica es ejecutar todos estos comandos en un script y obtener toda la información en una única ejecución.

(Sobra decir que los comandos y aplicaciones reflejados a continuación se ejecutan bajo la responsabilidad del lector, y que recomendamos “trastear” un poco con ellos para conocerlos antes de aplicarlos a un forense real)

Información de Procesos

  • Procesos en ejecución en memoria. Herramienta utilizada: PsList.
    pslist.exe /accepteula >> Procesos.txt
  • Especificación de procesos en ejecución de procesos y consumo de recursos.
    tasklist.exe >> Procesos_en_uso.txt
  • Procesos en ejecución e información de cada proceso. Herramienta utilizada: CProcess.
    cprocess.exe /stext Procesos_de_usuarios.txt
  • Árbol jerárquico de los procesos en ejecución.
    pslist.exe -t /accepteula >> procesos_arbol.txt
  • Detalle de todos los procesos en ejecución y listado de librerías DLL asociados a cada proceso. Herramienta utilizada: ListDLL.
    listdlls.exe /accepteula >> Procesos_dependencias.txt
  • Listado agrupado de procesos. Herramienta utilizada: OpenPorts.
    openports.exe -path >> Mapa_agrupado_puertos_procesos.txt
  • Información sobre los ficheros y directorios que un programa tiene abiertos. Herramienta utilizada: Handle.
    Handle.exe /accepteula >> Procesos_manejadores.txt

Información de Red

  • Configuración de las interfaces de red.
    ipconfig /all >> Configuracion_red.txt
  • Adaptadores de red en modo promiscuo. Herramienta utilizada: PromiscDetect.
    promiscdetect.exe >> Adaptadores_promiscuos.txt
  • Listado de las conexiones de DNS que se han realizado.
    ipconfig /displaydns >> DNS_consultas.txt
  • Muestra las estadísticas del protocolo y las conexiones actuales de TCP/IP usando NBT (NetBIOS sobre TCP/IP).
    nbtstat -s >> Sesion_netbios.txt
  • Información de la cache NetBios.
    nbtstat -c >> Cache_netbios.txt
  • Transferencia de archivos sobre NetBIOS.
    net file >> transferencia-ficheros-sobre-netbios.txt
  • Caché ARP.
    arp -a >> arp-cache.txt
  • Listado de conexiones activas.
    netstat -an |findstr /i "estado listening established" >> Conexiones_activas.txt
  • Relación de aplicaciones con puertos abiertos.
    netstat -anob > Aplicaciones_PuertosAbiertos.txt
  • Tabla de enrutamiento: tabla de rutas de las redes accedidas, la máscara de red y la puerta de enlace.
    netstat -r >> Tabla_rutas.txt
  • Conexiones activas, se especifica el protocolo, direcciones IP remotas y los puertos.
    netstat -ano >> Conexiones_activas.txt
  • Fichero hosts.
    type c:\windows\system32\drivers\etc\hosts >> Hosts.txt
  • Listado de todos los protocolos de red (FTP, Telnet, mailto…) que están instalados en el sistema. Herramienta utilizada: URLProtocolView.
    urlprotocolview.exe /stext Red_Protocolos.txt

Información de Ficheros

  • Listado de las unidades de red “mapeadas”.
    net use > UnidadesMapeadas.txt
  • Carpetas compartidas: listado de recursos compartidos.
    net share > CarpetasCompartidas.txt
  • Listado de ficheros abiertos. Herramienta utilizada: OpenFilesView.
    START /WAIT openedfilesview.exe /stext Ficheros_abiertos.txt
  • Ficheros remotos abiertos. Herramienta utilizada: PsFile.
    psfile.exe /accepteula >> Ficheros_remotos_abiertos.txt

Información de usuarios

  • Usuarios remotos que han iniciado sesión.
    net sessions >> Usuarios_remotos_ip.txt
  • Muestra las sesiones activas en el sistema. Herramienta utilizada: LogonSessions.
    logonsessions.exe /accepteula >> Sesiones_activas.txt
  • Listado de usuarios que han iniciado sesión localmente en el equipo. Herramienta utilizada: PsLoggedOn.
    psloggedon.exe /accepteula >> Usuarios_inicio_sesion.txt

Información útil del sistema

  • Tiempo de actividad del sistema: período desde que el equipo se encuentra encendido. Herramienta utilizada: Uptime.
    uptime.exe >> Tiempo_encendido.txt
  • Contenido del portapapeles. Herramienta utilizada: Pclip.
    pclip.exe >> Conetenido_portapapeles.txt
  • O bien con la herramienta InsideClipboard.
    InsideClipboard.exe /stext “Informacion_portapapeles.txt”
  • Histórico de la consola de comandos.
    doskey /history >> "HistoricoCMD.txt
  • Listado de servicios en ejecución.
    sc query >> servicios_ejecucion.txt

Ya que cada maestrillo tiene su librillo es posible que utilicéis o conozcáis herramientas similares que realicen la misma función, aun así, espero que os sea de utilidad esta recopilación.

El estafador estafado

En un post anterior hablé sobre el crimen organizado en el mercado negro y siguiendo un poco la misma temática, vamos a ver de forma breve en este post algunos de los delitos orientados en este caso al sector bancario, además de las técnicas y métodos que utilizan los delincuentes para llevarlos a cabo.

Phishing

Probablemente es la reina de las técnicas de fraude online. El phishing es una técnica empleada por los delincuentes que mediante ingeniería social o por distribución de malware tiene como finalidad obtener información privada para acceder de manera no autorizada a determinados servicios, suplantando para ello la identidad legítima del titular.

La vía más utilizada de esta técnica es mediante correo electrónico, aunque existen variantes, descritas a continuación, dependiendo del método que se emplee.

[Read more…]

Organización dentro del mercado negro

Cuando se habla de un delito informático, se tiende a pensar en una persona al otro extremo de la red con altos conocimientos técnicos que está intentando lucrarse ilícitamente. Pero lo cierto es que detrás de estos delitos no suele haber una única persona, sino organizaciones complejas con diferentes roles y actores que gestionan, administran y ejecutan sus acciones.

El fraude a través de la red ha tenido una gran evolución, lo que ha ocasionado una sofisticación mayor en la manera de cometer los ciberdelitos utilizando infraestructuras cada vez más complejas. Este aumento en el grado de complejidad implica que los propios delincuentes no pueden abarcar todo el funcionamiento y métodos de ataque sobre una infraestructura u organización.

Al igual que hay en el mundo mercantil desarrollo de software, operaciones de compra/venta, colaboraciones, rivalidades, etc., lo mismo ocurre en el mundo mercantil “negro” de forma paralela. Sin embargo, en esta ocasión hablamos de desarrollo de exploits, compra/venta de exploits y vulnerabilidades, colaboraciones entre organizaciones criminales, etc. De la misma forma, existe una segregación de tareas definida en la que podemos identificar varios roles claramente, en función de la tarea que realizan en la cadena criminal.

[Read more…]

Alternate Data Stream: ADS – Flujo de datos alternativos en NTFS

Un flujo de datos alternativo (ADS – Alternate Data Stream) es una característica del sistema de ficheros NTFS que consiste en incluir metainformación en un fichero. Podríamos decir que son ficheros secundarios “ocultos” guardados dentro de otros ficheros. El objetivo inicial es almacenar información extra acerca del fichero principal, pero esta técnica también fue muy usada para propagar virus de forma transparente para el usuario.

Aclarar que en este artículo me voy a centrar sólo en el sistema de ficheros NTFS sobre Windows 8 en concreto. En otros sistemas de ficheros existen técnicas similares; el símil con sistemas de ficheros como ext3, ext4, JFS, HFS+, etc., serían los atributos extendidos (EAs – Extended Attributes). La limitación de los EAs es que no se puede incluir una imagen o un archivo ejecutable como sí puede almacenarse en los ADS. Pero como he comentado, en este artículo sólo nos centraremos en NTFS y los ADS.

Hay que tener en cuenta algunas consideraciones de los flujos de datos alternativos:

  • Una aplicación de escritorio solo leerá el flujo principal de un archivo. Es decir, mediante el explorador de Windows sólo se abrirá el fichero que pertenezca al flujo principal. Los flujos alternativos sólo se pueden ejecutar mediante consola de comandos.
  • De igual forma, con el explorador de Windows solo se verá el flujo alternativo, incluso, solo se mostrará el tamaño del fichero perteneciente al flujo principal. Si hay un vídeo de 100MB por ejemplo, éste tamaño no se verá reflejado en el tamaño del fichero.
  • Los flujos de datos alternativos se pueden ver y abrir mediante la consola de comandos.

La finalidad de los flujos de datos alternativos es asociar ficheros o información que pueda ser confidencial, a ficheros de forma que queden ocultos a usuarios. Pero de la misma forma se puede usar esta técnica para alguna actividad maliciosa.

Como particularidad, mencionar que cuando descargamos un fichero de Internet, lleva asociado un flujo alternativo llamado “Zone.Identifier”, que indica la zona desde donde se ha descargado el fichero. Windows después utiliza dicho valor para abrir o ejecutar los ficheros. El significado de los valores es:

Después de la introducción, vamos a ver un ejemplo de cómo crear y ver el contenido de un flujo de datos alternativo. Para el ejemplo vamos a tomar dos ficheros:

  • principal.pdf, lo trataremos como fichero del flujo principal
  • img_oculta.jpg, lo trataremos como fichero del flujo alternativo

Ejecutamos dir para el contenido de la carpeta. Importante, fijaos en los tamaños de los ficheros:

Creamos ahora el flujo de datos alternativo, el comando sería el siguiente:

type img_oculta.jpg > principal.pdf:img_oculta.jpg

¿Qué ocurre si volvemos a hacer un dir? Aparentemente nada ha cambiado…

Se puede observar que el tamaño del fichero principal.pdf no ha cambiado absolutamente nada. Ejecutemos ahora el comando dir /r:

Como se ve en la imagen, el fichero principal.pdf tiene un flujo alternativo identificado como :img_oculta.jpg. Este flujo de datos alternativo coincide en tamaño con el original img_oculta.jpg, de hecho éste se podría eliminar, pero el flujo de datos alternativo seguiría existiendo. También, como ya hemos comentado antes, el tamaño del fichero principal.pdf tampoco se ha alterado.

Para abrir el contenido del flujo de datos alternativo utilizaríamos el comando:

Nombre_de_la_aplicacion fichero.extension:alternativo.extension

En nuestro caso vamos a abrir la imagen oculta con el editor de imágenes de Windows Paint:

mspaint principal.pdf:img_oculta.jpg

En sistemas operativos antiguos como Windows XP, la ejecución de un flujo de datos alternativo se hacía mediante el comando start, pero a partir de Windows 7 esto no está permitido, por lo que se cambió a invocar directamente la aplicación para abrir el fichero.

Supongo que ya os habréis hecho la pregunta: ¿qué ocurre si añado un “.exe” como flujo alternativo? En este caso, nos encontramos con que a partir de Windows 7 no está permitido (por motivos de seguridad) ejecutar un “.exe” como flujo alternativo. Veamos un ejemplo.

Vamos a asociar a un fichero llamado principal.txt la calculadora de Windows:

type c:\Windows\System32\calc.exe > principal.txt:calc.exe

Ahora ejecutamos mediante el comando start:

start .\principal.txt:calc.exe

Y el resultado es un mensaje de error que dice “Windows no puede encontrar el archivo”. Tal y como esperábamos, no podemos ejecutar un fichero “.exe” en un flujo de datos alternativo. Pero como esperábamos, eso no es del todo cierto. Para saltarnos esta medida vamos a crear un script en Python, y mediante este script llamaremos al ejecutable. Por cambiar un poco del típico ejemplo, he decidido iniciar una instancia Google Chrome.

Creamos un fichero llamado script_py.txt con el siguiente contenido:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, string, os			
os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"')

Ahora asociamos el fichero como flujo de datos alternativo de un fichero de texto llamado principal.txt.

type script_py.txt > principal.txt:script_py.txt

Para ejecutar el script de Python lo haremos mediante la sentencia:

C:\Python27\python.exe principal.txt:script_py.txt

Si todo ha ido bien, con esto lograremos ejecutar un fichero “.exe” a partir de un flujo alternativo. En este caso, se abrirá una nueva instancia del navegador Google Chrome.

Esta técnica era muy utilizada por atacantes para insertar malware en flujos alternativos. Aunque hemos visto que en los sistemas operativos actuales no se puede hacer directamente, sí se puede de forma indirecta, por lo que sigue siendo un aspecto a tener en cuenta para garantizar la seguridad.

Aunque no se ha visto en el artículo, existen herramientas para ver los flujos de datos alternativos en modo gráfico. Una herramienta es AlternateStreamView de Nirsoft, la cual te permite escanear carpetas en busca de ficheros alternativos.

Sin lugar a dudas, hay que tener en cuenta los flujos de datos alternativos para garantizar la seguridad de los sistemas, y no ejecutar código malicioso que permanezca oculto. Además, este tema resulta muy interesante a la hora de realizar un análisis forense para una pericial, ya que podríamos obtener información relevante que a simple vista no está accesible.