El futuro ya está aquí

img130 años han pasado ya desde que el Doctor Emmet Brown y Marty McFly saltaran desde el 26 de Octubre de 1985 hasta tal día como hoy en la segunda parte de la saga cinematográfica de Regreso al Futuro: el 21 de octubre de 2015.

Una fecha que, según los guionistas de la segunda parte de la saga (1989) iba a mostrarnos un futuro pintoresco donde la tecnología llegaba a unos extremos nunca imaginados, donde las autopistas se trasladaban del asfalto al cielo de las ciudades y todo tenía un aspecto muy colorido y extravagante. Pero como a cada uno el tiempo lo va poniendo en su lugar, la saga del DeLorean no iba a ser menos y son muchísimos más los adelantos tecnológicos que no han cuajado que los que sí han llegado a formar parte de nuestra sociedad actual.

[Read more…]

(Cyber) Guerra Fría I: Ataque a TV5Monde

A pesar de que en la prensa española no tuvo mucho eco -para lo grave que fue según mi criterio-, el pasado abril la cadena TV5Monde sufrió un ciberataque sin precedentes en la historia de la televisión por el que, durante 18 horas y de manera sincronizada los atacantes, en nombre del Estado Islámico, se hicieron con 11 canales de televisión, sus perfiles en redes sociales, varios servidores y sitios Web. La ANSSI (Agence nationale de la sécurité des systèmes d’information) concluyó sin demasiados comentarios que los dispositivos de electrónica de red también se habían visto comprometidos, incluyendo decodificadores y multiplexores necesarios para la difusión de los programas.

Además de publicar propaganda ligada al EI, también se publicaron datos supuestamente confidenciales sobre soldados franceses junto con amenazas a sus familias (a posteriori el Ministerio de Defensa francés informó que no se había expuesto ningún dato confidencial).

mm0

[Read more…]

Aprovechando la vulnerabilidad MS15-078 + DLL Hijacking (I)

En esta serie de artículos, hablaremos de cómo aprovechar la vulnerabilidad (MS15-078: creación de archivo en una ruta privilegiada) + dll hijacking para obtener privilegios de SYSTEM con un usuario no privilegiado.

En el boletín de seguridad del pasado 14 de julio, Microsoft publicó varios parches de seguridad que corrigen varias vulnerabilidades de escalada de privilegios. Entre ellas “DCOM DCE/RPC Local NTLM Reflection Elevation of Privilege”, esta vulnerabilidad permite realizar un ataque reflejado sobre una conexión local DCOM hacia un socket TCP que esté en escucha, lo que permite el acceso a un desafío de autenticación NTLM del usuario LocalSystem, el cuál puede ser reenviado al servicio de activación local DCOM.

[Read more…]

¿Seguro que lo has borrado?

En estos tiempos que corren no creo que nadie se extrañe por decir que los ficheros eliminados de un sistema se pueden recuperar. De manera muy breve, diremos que cuando se elimina un fichero, lo único que se pierde es el acceso al mismo, es decir, se marcan los clúster o bloques como disponibles, pero el contenido íntegro del fichero sigue estando en el disco duro, pendrive, tarjeta de memoria o cualquiera que sea el medio de almacenamiento hasta que sea sobrescrito. Si hacemos el típico símil con una biblioteca, al eliminar un fichero, lo único que se destruye es la ficha que nos apunta hacia el libro en la estantería, pero el libro sigue en el mismo sitio y si somos meticulosos y pacientes, acabaremos por encontrarlo.

Independientemente de si al borrar seleccionamos enviarlo a la papelera de reciclaje  o eliminarlo de manera permanente, el fichero en ninguno de los dos casos desaparecerá del soporte de almacenamiento.

[Read more…]

Montando nuestra VPN

Hoy en día es habitual conectarse desde diferentes lugares mediante los múltiples dispositivos que utilizamos de manera cotidiana: móviles, tablets, relojes, libros electrónicos o demás. Por supuesto, esto implica que nuestros datos están viajando por las conexiones de los propietarios de esas redes, lo que supone un gran riesgo de seguridad. Esto no necesariamente significa que el dueño sea “el malo”, simplemente puede ser negligente administrando su red; nunca se puede saber quién puede estar detrás de una red, por muy “honrado” que sea su propietario.

Con esto me estoy refiriendo en concreto a un enemigo, las redes WiFi; nos conectamos a ellas en cafeterías, parques, plazas, hoteles, casas de amigos… Y claro, siempre puede que haya alguien “pegando la oreja”.

[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.

Entre el navegador y yo. Extracción de credenciales en claro

Son muchas las aplicaciones web que, como es lógico, protegen sus comunicaciones cifrándolas, con HTTPS por ejemplo. De acuerdo, a priori los datos que intercambiemos con la aplicación viajarán cifrados, estando a salvo de escuchas indiscretas. Pero ¿qué ocurre con estos datos de camino al navegador web?, es decir, entre el usuario que introduce los datos y el cliente web que establecerá la conexión con la aplicación.

Veamos lo que sucede desarrollando una pequeña prueba de concepto. Para ello, pondremos de ejemplo un par de sitios web mundialmente conocidos: Facebook y Linkedin, donde presumiblemente se invierte más en materia de seguridad y donde cada vez es más difícil detectar vulnerabilidades relevantes.

Accedemos a cada uno de los sitios y procedemos a autenticarnos (seguro que tenemos cuenta en ambos). Nos ponemos a la escucha del proceso de autenticación, utilizando un proxy como BurpSuite o, para este caso, alguno menos potente, como el complemento de Firefox denominado Live HTTP Headers.

Como podemos observar en las ilustraciones 1 y 2, se interceptan claramente los nombres de los campos del formulario donde se introducen las credenciales, además de los valores que contienen, todo en texto claro.

c0Ilustración 1: Interceptando autenticación en Facebook

c1Ilustración 2: Interceptando autenticación en Linkedin

Este funcionamiento no es el adecuado, ya que pensemos lo que ocurriría si un usuario está infectado con el típico malware/adware que realiza Browser Hijacking (algo muy común en la mayoría de usuarios de todo el mundo), es decir, que interfiere en el normal uso del navegador web por parte del usuario monitorizando su actividad. Éste tendría la capacidad de interceptar las citadas comunicaciones entre usuario y cliente web, obteniendo credenciales de multitud de sitios web, no solo los mencionados como ejemplo. Son muchas las páginas web que contienen esta deficiencia, incluso sitios especialmente sensibles. Es lo que se denomina Man-In-The-Browser (MitB).

Este comportamiento también puede ser interesante en el ámbito forense, ya que, en la mayoría de ocasiones, esta actividad queda grabada en memoria. Realicemos una pequeña prueba para demostrarlo.

Como ejemplo, tenemos un entorno con el sistema operativo Windows 7, aunque el esquema a seguir es similar para otros sistemas. Comenzamos realizando una captura de la memoria RAM, utilizando para tal fin la herramienta DumpIt. Basta con ejecutarla y confirmar que deseamos realizar la captura de memoria (ilustración 3).

c2Ilustración 3: Realizando captura de memoria RAM con DumpIt

Analicemos ahora dicha captura con Volatility Framework (versión 2.4). En primer lugar, obtenemos información acerca de la captura de memoria que estamos analizando:

python vol.py -f WIN7LAB-PC-20150922-215129.raw imageinfo

Como se puede observar en la ilustración 4, podemos determinar, entre otras cosas, el profile de la captura de memoria, útil para indicarle a Volatility qué se está analizando. Como ya hemos comentado, se trata de un Windows 7 de 64 bits (Win7SP1x64).

c3 Ilustración 4: Obteniendo información de la captura de memoria

Obtenemos ahora el listado de los procesos en memoria (ilustración 5):

python vol.py -f WIN7LAB-PC-20150922-215129.raw --profile Win7SP1x64 pslist

c4Ilustración 5: Listado de procesos en memoria

En nuestro caso, nos interesa especialmente el proceso del o de los navegadores web que hubiera abiertos en el momento de la intervención. Por tanto, debemos extraer dicho proceso (ilustración 6), pero incluyendo también todas las páginas en memoria que estuviera utilizando, que es donde se encuentra la información relevante.

python vol.py -f WIN7LAB-PC-20150922-215129.raw --profile Win7SP1x64 memdump -p 3304 --dump-dir ./

c5Ilustración 6: Extrayendo proceso firefox.exe

Ahora que tenemos el proceso, con la ayuda de strings, podemos ver el contenido imprimible. Podemos comprobar, realizando un simple grep, que, efectivamente, las comunicaciones identificadas quedan almacenadas en memoria.

c6Ilustración 7: Patrón almacenado en memoria

Siempre se sigue el mismo patrón en el proceso de autenticación de cada uno de los sitios web de ejemplo. Esto nos facilita la creación de un pequeño script en python3 que automatiza la extracción de credenciales (parserTest.py), tal y como se aprecia en la ilustración 8.

c7

Ilustración 8: Código parserTest.py

El funcionamiento del script es muy simple, analiza cierto contenido pasado como parámetro en busca de los patrones identificados. Según el caso, estaremos hablando de unas posibles credenciales de Facebook o Linkedin. Como observamos, está especialmente diseñado para esta prueba de concepto, pero se puede extrapolar a otros casos, solo hay que completarlo.

Terminamos esta prueba de concepto, utilizando el comentado script para automatizar la extracción de credenciales en claro. Para ello, volcamos la salida de strings a un fichero, y ese fichero es el que pasamos como parámetro a nuestro pequeño extractor. Finalmente, como se puede observar en la ilustración 9, conseguimos obtener las claves.

strings 3304.dmp > firefoxStrings
python parserTest.py firefoxStrings

c8 Ilustración 9: Obteniendo credenciales en claro

¿Cómo solventar el problema?

El comportamiento que aquí se comenta es bien fácil de solucionar. Para empezar, el nombre de los campos del formulario de autenticación se debe randomizar, es decir, cada vez que se cargue la página, el nombre de los campos (input) será diferente. De esta forma, no se podrán identificar los elementos que pueden contener información sensible.

A continuación, debe establecerse algún algoritmo de codificación para los parámetros de entrada, es decir, cada vez que se introduzca un carácter en un campo input que pueda ser sensible, se debe codificar de cierta forma. De esta manera, las credenciales ya no estarán en claro y tampoco se podría identificar una posible contraseña dado un nombre de usuario o email, ya que ambos estarán codificados, así como los campos que lo contienen.

Con estas sencillas técnicas mejoraríamos la seguridad de la aplicación web, evitando que nuestras credenciales sean susceptibles a escuchas o extracción a partir de memoria RAM.

9 de octubre, día mundial del correo

l1Hoy en día existen días mundiales relacionados con cualquier tema. La mayoría de ellos están relacionados con la lucha por alguna causa justa, pero también hay días de lo más inverosímiles que, aunque parezca mentira, se celebran en algún lugar del mundo. Hay fechas que todos conocemos o hemos oído en algún momento como, por ejemplo, el día mundial contra el cáncer, que tiene lugar cada 4 de febrero, o el día internacional de la paz el 21 de septiembre. También hay otros días internacionales más desconocidos, pero que se celebran igualmente, como el día de los calcetines perdidos (sí, existe, y deberías celebrarlo porque sabes que a ti también te ha pasado) celebrado cada 9 de mayo o el día del orgullo friki, celebrado el 25 de mayo y con, cada vez, más adeptos.

Hoy, 9 de octubre, se celebra el día mundial del correo, día que bien podría formar parte de este segundo grupo de fechas, y no por peculiar, sino por desconocido.

Cuando hablamos de correo, ya sólo pensamos en el email. Pero, ¿existía vida antes del email? Cuenta la leyenda que antes la gente se comunicada mediante el correo normal, el de papel, enviándose cartas los unos a los otros, sin autocorrector, ni emoticonos, ni tipos de letra Times New Roman… y sin ni siquiera indicar un asunto, ¡a lo loco! … Escalofriante… Pero como mi intención no es meter miedo a nadie, os contaré, muy brevemente, el porqué del día mundial del correo.

[Read more…]

Techfest UPV

techfestLos días 14 y 15 de octubre va a tener lugar en la Escuela Técnica Superior de Ingeniería Informática de la Universidad Politécnica de Valencia el evento Techfest, enmarcado en la Semana de Graduaciones 2015.

Techfest es un evento orientado a difundir la cultura informática y tecnológica en la Universidad Politécnica de Valencia; Ponencias, charlas, talleres y concursos se dan cita durante los días 14 y 15 de octubre, donde profesionales del sector y alumnos de la universidad colaboran para dar lugar al mayor evento de tecnología del año.

¿Te gustaría aprender a diseñar tus propios juegos? ¿Siempre quisiste saber cómo funciona Arduino y empezar a desarrollar tus propios proyectos? ¿Interesado en la seguridad informática? Expertos del mundo profesional y alumnos de la escuela están a tu disposición en 12 charlas y 8 talleres simultáneos de acceso completamente gratuito:

Además, durante Techfest hay organizados dos concursos patrocinados por ESET y Geekshubs en los que podrás ganar una tablet o un pack de inicio a Arduino.

Consigue ya tus entradas y conoce el programa que hemos preparado para ti en http://techfest.es, ¡el aforo es limitado!

[Read more…]

Transferencia de datos a Estados Unidos. ¿Y ahora qué?

Ayer, martes 6 de octubre de 2015, el Tribunal de Justicia de la Unión Europea declaró nula la Decisión 2000/520 de la Comisión Europea sobre “la adecuación conferida por los principios de puerto seguro para la protección de la vida privada”. El nivel adecuado de protección para la transferencia de datos desde la Unión Europea a Estados Unidos se alcanza si las empresas americanas cumplen con los principios de puerto seguro, respaldados por la Decisión de la CE mencionada anteriormente.

Un ciudadano austríaco denunció en 2013 ante la autoridad irlandesa competente en materia de protección de datos (Data Protection Comissioner) la transferencia de datos que hace la red social Facebook desde su filial en Irlanda a los servidores de la compañía situados en EEUU. Según este ciudadano, esa comunicación no garantizaba una protección suficiente de datos ya que toda información está sometida a la supervisión estatal. Esto se podía demostrar con las revelaciones que Edward Snowden iba filtrando. El Tribunal Superior de Irlanda (High Court), según se puede leer en las conclusiones del Abogado General, planteó esta denuncia al Tribunal de Justicia Europeo entendiendo que la resolución se debe a una normativa europea y por tanto es competencia de la Unión y no de un Estado miembro.

[Read more…]