Zen y el arte de pescar APTs (II)

En el capítulo anterior habíamos dejado la investigación en un punto candente: teníamos pendiente un análisis forense del equipo del director de marketing, ya que todo apuntaba a que podía ser la fuente de la filtración de la información.

Hablando con María, la CIO de la Empresa, tomamos la decisión de ser extremadamente cautos a la hora de hacer una imagen forense del portátil del director de marketing, ya que la paranoia campa a sus anchas por la Empresa y no es posible fiarse de nadie.

Esperamos a que salga a una reunión en otra empresa para entrar en su oficina y abalanzarnos con nuestro bloqueador de escritura de discos para obtener una copia bit a bit (las únicas válidas ya que capturan el estado del disco tal y como está, copiando tanto ficheros borrados como espacio libre del disco duro).

[Read more…]

Enviando caracteres no representables en Android

Hace unos días Google anunció que no va a desarrollar más parches de seguridad para versiones inferiores a la 4.4 (Kitkat), en respuesta al último reporte de un grupo de investigadores independientes, quienes encontraron una vulnerabilidad en el módulo “WebView” que afectaba a versiones de Android inferiores a 4.4.

Al leer esta noticia me entró “el afán del investigador” y casualmente encontré algo muy curioso en los emoticonos de nuestra querida aplicación para Android, Whatsapp. Para explicar ese ”algo” tan curioso recurriré a diversas capturas de pantalla donde podréis observar de lo que os hablo. Al parecer existen ciertos caracteres que Android no interpreta y que por lo tanto no los puede renderizar en la pantalla.

Todo empezó cuando me dispuse a enviar unas cuantas banderas (emoticonos) al Whatsapp de un amigo:


Ilustración 1 – Primer envío de banderas

Como podemos observar, no hay un comportamiento extraño de la aplicación Whassap para Android, simplemente lo que vemos: varios emoticonos de banderas. No obstante trasteando un poco y al realizar un “backspace” en la primera bandera, obtuve lo siguiente:


Ilustración 2 – Nuevos caracteres

¿Interesante, verdad? Como podemos ver al realizar dicho “backspace” los restantes emoticonos de banderas cambiaron, representándose ahora como caracteres unicode. Este hecho me llevo a seguir realizando pruebas en busca de algo más… Así que continué con la búsqueda del carácter no representable, como podemos ver a continuación:


Ilustración 3 – Añadimos nuevas banderas

Tal y como vimos en la imagen anterior añadí emoticonos de banderas justo antes del último emoticono representado como una bandera. Posteriormente realicé un “backspace” en el segundo emoticono de bandera añadido en el paso anterior y obtuve lo siguiente:


Ilustración 4 – Segundo “backspace”

Posteriormente a esto, probé a escribir cualquier texto delante de la única bandera que quedaba con vida (XD), y para mi sorpresa, los caracteres empezaron a desaparecer como por arte de magia. En realidad, lo que sucedía es que la aplicación Whatsapp era y es incapaz de representarlos, así que copie esa parte y me dispuse a enviarla. Estos fueron los resultados:


Ilustración 5 – Mensajes vacíos

Digamos que ahora podía enviar mensajes a cualquier contacto sin que Whatsapp pudiese representar dichos caracteres en mi pantalla, algo que podría ser muy útil en determinadas situaciones. Sorprendido por ese hecho decidí ver qué caracteres se almacenaban en mi historial de conversaciones:


Ilustración 6 – Historial

Como podemos observar, mandamos en primer lugar un “hola”, en segundo lugar “que tal” y por último “yo estoy genial”. Además añade el signo de interrogación como la representación del carácter “desconocido”.
El mensaje se guarda correctamente en el historial de la aplicación de Whatsapp, además el contacto recibe el mensaje correctamente, no obstante no se renderiza en nuestro terminal, es decir el mensaje no aparece en la pantalla de nuestro terminal.

Para averiguar qué carácter es el que Android es incapaz de representar, tiramos de un programa muy conocido: “hexadump”, para analizar el contenido en hexadecimal del historial de la conversación de Whatsapp.


Ilustración 7 – Hexadump

Ahora procederemos a analizar cada par de caracteres hexadecimales para encontrar cuál es ese carácter “desconocido”:


20 3f 68 6f 6c 61 0a -> ?hola
20 3f 71 75 65 20 74 61 6c 3f 0a -> ?que tal?
20 3f 6f 20 65 73 74 6f 79 20 67 65 6e 69 61 6c 20 3a 29 0a -> ?yo estoy genial :)
0a = Salto de línea.

Como vemos, no pude obtener qué carácter era el “desconocido”, ya que directamente la aplicación Whatsapp no pudo ni puede interpretar dicho carácter, y por lo tanto no lo guardó en el historial de conversaciones de la aplicación. Probé a hacerlo de otra forma, aprovechando que los caracteres Unicode tienen un tamaño de 1 a 4 bytes; existía la posibilidad de que el teclado de virtual de Android tuviese algún tipo de “bug” que permitiese el borrado parcial y no total de ciertos caracteres.


Ilustración 8 – Fichas de domino

Efectivamente así fue :). Al parecer, existen ciertos emoticonos en la aplicación de Whatsapp para Android, que cuando realizas un “backspace” para intentar borrarlos, no lo haces por completo. Si a esto le sumamos que añadimos un nuevo carácter o emoticono, obtenemos cosas tan curiosas como las que vimos en la imagen anterior: caracteres Unicode que representan una ficha de dominó en este caso.

Ya solo me quedaba ver el código hexadecimal de dichos caracteres:


Ilustración 9 – http://unicode.org/charts/PDF/U1F030.pdf

Con lo que concluí que 1F0 es el código hexadecimal (incompleto, pares de 2 números) que la aplicación para Android no puede representar :), y que automáticamente genera cuando sobre determinados emoticonos se le aplica un “backspace”:


Ilustración 10 – Decodificador de hexadecimal

Después de este análisis, me di cuenta de que esto sucedía en todas las aplicaciones para Android por lo que deduje (o intuyo) que se trata de un bug/problema/feature no documentada en el teclado virtual de Android, que permite no borrar por completo ciertos emoticonos cuando se dispone a eliminarlos (backspace), formando una secuencia que codificada en hexadecimal es 1F0, imposible de representar (renderizar) en la pantalla del usuario que lo envía.

Zen y el arte de pescar APTs (I)

Comienza un día nuevo en la oficina. Todos los sistemas están funcionando correctamente, el generador de cafeína está a toda máquina y los comerciales están fuera haciendo visitas. Es un momento perfecto para revisar algunos artículos de investigación, o hasta para invertir un poco de tiempo en un par de scripts en Python a los que les llevo dando vueltas un rato… hasta que suena el teléfono.

El jefe ha recibido una llamada de la CIO de una empresa del IBEX 35 (a partir de ahora, la empresa será Empresa, y la directiva María). Según sus palabras, se ha producido una fuga de datos. Una fuga muy grave. Al parecer, parte de lo que se ha filtrado es el plan estratégico de la empresa para los próximos cinco años. Información a la que tiene acceso un grupo muy reducido de personas, entre las que se encuentra el consejo de dirección de la empresa.

Como todavía no sabemos a lo que nos enfrentamos, cogemos tanto la mochila de respuesta ante incidentes como la de informática forense y nos dirigimos a la sede de la empresa en Madrid para una primera toma de contacto.

La Empresa se toma la seguridad muy en serio: registran ambas mochilas, toman fotografías de todos los dispositivos y nos dan una tarjeta de identidad que por la pinta seguro que es capaz de hacer más de lo que parece. Cámaras de seguridad en todos los pasillos, y un ambiente totalmente profesional hasta que subimos a la planta noble, donde nos reunimos con María. Está visiblemente nerviosa, y viendo su traje parece que lleva más de un día en pie.

Dentro de las fases de la respuesta ante incidentes estaríamos todavía de la detección (sabemos que hay algo, pero todavía no conocemos el alcance de lo que está sucediendo). María nos cuenta que alguien está obteniendo información confidencial de la empresa, tan reservada que solo puede venir de los más altos cargos de la empresa: el director general, el director de operaciones, el director financiero, el director de ventas… o ella misma.

Tras firmar varios acuerdos de confidencialidad especialmente virulentos, empezamos nuestro trabajo con la aproximación más simple: un inside job, el clásico empleado descontento que ha robado la información. Pero al parecer todos los directivos son fanáticamente leales a la empresa e incluso su personal administrativo es de la mayor confianza, por lo que a priori podemos descartar esta teoría (en realidad no la descartamos, solo la guardamos para más tarde).

El espionaje clásico también queda excluido: la información robada no es algo que se pueda obtener poniendo un micrófono o “pinchando” un teléfono. Ha sido extraída de un ordenador.

La Empresa también se toma muy en serio la seguridad informática: seguridad en profundidad en toda la arquitectura, varios niveles de cortafuegos, antivirus actualizados, sistemas parcheados hasta la obsesión, acceso remoto por VPN, detectores de intrusos, contraseñas robustas cambiadas cada mes, etc. Uno de esos sitios en los que nunca se esperaría que sucediera nada, pero en el que aquí estamos trabajando.

Lo primero que hacemos es recoger información, toda la que seamos capaces de recopilar para proceder a su análisis y entender qué ha podido suceder. La Empresa tiene todo bien organizado, por lo que podemos hacernos con un paquete de datos completo: logs del proxy, de la pasarela de correo, de los antivirus, eventos de servidores y de las estaciones de trabajo y hasta de la VPN. El problema es que todos esos logs, si tomamos el acumulado de los últimos tres meses (el mínimo con el que empezamos), suman 200Gb de información. Comprimida.

Cogemos tres meses porque estamos empezando a sospechar que una APT (Advanced Persistent Threat) puede estar detrás de esto. Vamos, que alguien puede haber entrado hasta la cocina en la Empresa y se esté comiendo hasta los yogures caducados. El disponer de un histórico de datos nos permite detectar patrones y descartar falsos positivos, haciendo más eficaz nuestro trabajo.

Lo primero que hacemos es realizar un filtro inicial de la información, quedándonos con los equipos tanto de los directivos como de su personal de administración (diez en total), lo que reduce los registros a un poco menos de 20Gb de datos descomprimidos. A través de una serie de scripts normalizamos e importamos la información a una base de datos que nos permita realizar búsquedas y aplicar otros scripts que tenemos desarrollados.

Las primeras comprobaciones son casi rutinarias, pero hay que realizarlas: visitas a dominios infectados, eventos de la consola de antivirus, múltiples envíos de correos a direcciones no conocidas… serían signos que nos permitirían detectar rápidamente el equipo comprometido, pudiendo aislar la infección lo antes posible.

No hay suerte esta vez, aunque en realidad no esperábamos sacar nada en claro. Este incidente huele a algo avanzado desde el primer momento. Tenemos que pasar a la segunda fase: la detección de anomalías. Todos los sistemas (incluidos sus usuarios) siguen unos patrones de comportamiento, un conjunto de acciones y conexiones que pueden ser analizados para conformar un baseline o valor de referencia.

Ese baseline puede ser obtenido de los logs recuperados para hacer emerger todo lo raro, todo lo que no encaja: las anomalías. Es un trabajo complicado, porque la creación del baseline nunca es exacta, y abundan los falsos positivos (y además, nunca sabes si los “malos” han sido tan buenos como para esconder sus acciones tan bien como para que se hagan parte del baseline).

Al final es un trabajo minucioso, costoso y metódico que tiene que hacerse con sumo cuidado y atención al detalle para no dejarse nada. Es como buscar una aguja en un pajar, pero cuando el pajar es del tamaño de un campo de fútbol y no sabes siquiera que lo que quieres encontrar es una aguja.

Menos mal que, si llevas tiempo en el negocio, puedes tomar algunos atajos. Sabiendo cómo se comportan muchas amenazas es posible realizar una serie de modelos de ataque, conociendo qué tipo de anomalías generan en un sistema. De esta forma podemos buscar por esas miguitas de pan, esos indicios que nos permitan averiguar qué es lo que está sucediendo.

La cantidad de datos no es pequeña, así que tenemos algo de tiempo mientras nuestros programas trabajan. Un poco más de cafeína, una docena de correos y dos llamadas telefónicas más tarde, tenemos un listado de unas 30 anomalías.

Casi todas son falsos positivos, pero una de ellas salta a la vista: una petición POST a un nombre de dominio muy similar a un conocido periódico de tirada nacional (a partir de ahora www.period1co.es), tan similar que tan solo han cambiado una letra por otra casi idéntica. La petición en sí es bastante anodina, pareciendo la URL a primera vista el posteo de un comentario en una noticia.

2014-11-05 14:44:58 UTC - 192.168.39.134:49260 – XXX.XXX.XXX.XXX:80 - www.period1co.es - POST /nacional/noticias/comentarios.php

Anomalía por partida doble. En primer lugar, ¿por qué tenemos un POST sin haber tenido antes ninguna comunicación con esa página web? Dentro de una comunicación HTTP el método POST es empleado para enviar datos a una página web, pero lo lógico es que antes hayamos descargado esa web, lo que suele conllevar un cierto trasiego de peticiones GET, que aquí a priori no existen.

En segundo lugar: ¿www.period1co.es? Lo buscamos en diversas páginas de reputación online y ninguna lo marca como malicioso, pero está claro que huele a chamusquina. Nos morimos de ganas por abrirlo en un navegador, pero no sabemos si los atacantes están vigilando los logs y los ponemos sobre aviso.

Mirando el lado positivo, tenemos ya dos hilos de los que tirar: el dominio supuestamente malicioso, y la IP origen de la petición, que resulta ser la del director de marketing de la Empresa.

Ahora podemos empezar a trabajar alrededor de estos indicios, lo que en la jerga conocemos como pivotar. Lo primero es ver más ocurrencias de ese dominio malicioso en todos los logs que tenemos recogidos, sean o no anómalos. Y el segundo paso sería analizar en detalle todo el tráfico de la IP 192.168.39.134, que parece ser a todas luces el equipo infectado.

La emoción de la caza es casi como una droga, así que mi jefe y yo miramos hipnotizados la pantalla mientras las herramientas hacen su trabajo. Diez angustiosamente largos minutos más tarde, tenemos resultados jugosos. Muy jugosos.

El equipo 192.168.39.134 ha realizado en los últimos dos meses 18 conexiones POST como la anterior a la URL www.period1co.es. Todas ellas en horario laboral, con unos tamaños bastante discretos (que hacen pensar a priori que la exfiltración de datos no se ha producido por esa vía) y a subpáginas del dominio con una estructura común (que podrían ser respondidas por un único script en el servidor y que ayudarían a que las URL variaran, haciendo más complicada su detección).

Y de forma adicional, tenemos 5 conexiones más al dominio desde dicha IP:

2014-11-01 12:34:18 UTC - 192.168.39.134:34320 – XXX.XXX.XXX.XXX:80 - www.period1co.es - GET /imagenes/nacional/logo.jpg
  • En días separados, y cada una de ellas con un tamaño de descarga ligeramente diferente.

    Una petición única para descargar una imagen, sin descargarse ningún código HTML. Estamos casi seguros de que esa imagen tiene truco (una técnica muy habitual del malware es descargarse con una extensión distinta al .exe para poder pasar los filtros de los cortafuegos). Y el hecho de que tenga tamaño diferente… ¿cada cuánto cambian las imágenes de los logos de una página web? Sospechoso. Demasiado sospechoso. Dado que no sabemos lo cuidadosos que son los atacantes, tampoco podemos tocar esa imagen. Por ahora.

    Revisando todos los logs no encontramos ningún otro equipo que comparta estos patrones de acceso. Por un lado es una buena noticia, ya que el ataque está muy localizado, pero por el otro es muy mala noticia: los atacantes saben muy bien lo que están haciendo, comprometiendo el mínimo número posible de equipos para lograr sus objetivos.

    Como primera medida creamos reglas en nuestro Snort para detectar tanto accesos al dominio www.period1co.es como a ficheros con el nombre logo.jpg (sabemos que esta última generará muchos falsos positivos, pero por ahora estamos en modo paranoide total).

    Por ahora, a fin de cuentas, no vamos nada mal. En pocas horas nuestra investigación inicial ha cosechado excelentes resultados: tenemos dos URL claramente sospechosas y un equipo que está pidiendo a gritos un análisis forense.

    Dado que los logs del proxy no capturan la URL completa ni las imágenes descargadas, la investigación queda orientada de forma clara: Hay que analizar el equipo del director de marketing.

    La continuación de la investigación, en unos días…

  • Un lugar seguro donde comunicarse

    Tristes acontecimientos como los sucedidos en París tienen un gran impacto en la sociedad. Como efectos positivos, este tipo de desgracias suscitan que paremos nuestra rutina diaria para reflexionar sobre las causas y las repercusiones de estos lamentables sucesos. Se establece una ola de solidaridad global, muy intensa en los comienzos y que tendrá eco durante un periodo más prolongado.

    De la misma forma que se realizan las reflexiones individualizadas y se convierten durante días o semanas en el foco de las charlas con amigos, compañeros de trabajo o familia, también los altos mandatarios analizan, reflexionan, consultan a sus asesores y sacan sus conclusiones. Entre las responsabilidades que están asociadas a sus roles están además las de decidir aquellas medidas que permitan evitar o disminuir los efectos que provocan dichos incidentes. Para eso han sido elegidos y esa una de las principales obligaciones de los gobernantes: proteger el país.

    [Read more…]

    SDR: La navaja suiza de las radiocomunicaciones

    Para hoy tenemos una entrada de un nuevo colaborador, Alex Casanova, administrador de Sistemas Windows, Linux y Sistemas virtualizados con VMware con más de 10 años de experiencia. Adicto a las nuevas tecnologías y las telecomunicaciones dedica gran parte de su tiempo a la investigacion de sistemas radio, OSINT y redes de comunicaciones. Actualmente está involucrado en el despliegue de una red digital de comunicaciones DMR para radioaficionados. Se le puede encontrar en su twitter @hflistener y en su blog Digimodes.

    Cada vez tenemos menos cables y más cosas que funcionan de forma inalámbrica. Las redes de comunicaciones inalámbricas están en auge; palabras como WiMAX, LTE, Wifi, TETRA, DMR son cada vez más comunes en nuestro vocabulario.

    En el mundo de la seguridad, tradicionalmente se le había prestado especial atención a las comunicaciones que operan en las bandas ISM (libres) como WiFi o Bluetooth. Pero como se apuntaba en un post anterior, las investigaciones en el mundo de la seguridad están más centradas en el mundo de Internet y sus amenazas, dejando en un pequeño rincón a las comunicaciones inalámbricas.

    [Read more…]

    Aislando las aplicaciones web

    En este post me gustaría explicar la solución que he encontrado a uno de los problemas que me plantea el hecho de utilizar de Apache como servidor web por defecto, ya es que Apache no permite la ejecución de distintos VirtualHost con diferentes usuarios, lo cual puede suponer un grave problema de seguridad. Imaginemos que tenemos la siguiente situación en el mismo servidor:

    • Los Wookies tienen desplegada una aplicación cuyo funcionamiento consiste en incluir el contenido de un fichero del sistema especificado en un campo GET y mostrarlo al usuario. Por la sencillez de la aplicación y la no-criticidad de la misma, no se realiza ningún tipo de comprobación.
    • En el mismo servidor, Darth Vader tiene desplegada una aplicación que consulta de una base de datos, planos de infraestructuras críticas, como por ejemplo, el de la Estrella de la Muerte. Para ocultar el fallo de diseño de la misma, la aplicación se audita varias veces por un organismo externo sin encontrar ni un fallo de seguridad.
    • La fuerza Rebelde aprovecha el LFI de la web de los Wookies, y lee ficheros de sistema, entre los que se encuentra la configuración de la página web de Darth Vader.
    • Utilizando las credenciales obtenidas del fichero de configuración, son capaces de conectarse a la base de datos y obtener los planos de la Estrella de la Muerte, provocando la explosión que pudimos ver en Star Wars I (N.d.A.: no, no me he equivocado) – Una nueva esperanza.

    [Read more…]

    Cómo conocí a CARMEN, PILAR, CLARA…

    Estimados lectores, no se lleven a engaño por el título del post; no tengo tanto éxito con las mujeres como éste puede sugerir (ya me gustaría a mí). Tampoco guarda relación alguna con Ted Mosby y Cía. Ni que decir tiene que tampoco es una sinopsis de los Ángeles de Charlie. Aprovechando el comienzo de año, las buenas intenciones y que hace casi un año que no me dejaba caer por estos lares, he decidido escribir un post que pretende arrojar un poco de luz respecto a todos estos nombres de mujeres que están resonando de un modo u otro en el ámbito de la ciberseguridad.

    Seguro que ustedes ya conocen a PILAR, un clásico del análisis de riesgos. Pues bien, este tipo de denominación se está siguiendo para otras iniciativas/proyectos/aplicaciones de ciberseguridad que se están promoviendo desde el Centro Criptológico Nacional (CCN). Que aunque no dejan de ser acrónimos, sí que es verdad que consiguen captar nuestra atención. A continuación les haré un breve resumen para explicarles de que tratan estas iniciativas, para que cuando oigan hablar de ellas sepan por dónde van los tiros.

    CARMEN (Centro de Análisis de Registros y Minería de Datos): La iniciativa CARMEN surge en 2012 con el objetivo de proporcionar una solución para la detección temprana de uno de los tipos de ataques más peligrosos y sofisticados en el ámbito de la ciberseguridad: las amenazas persistentes avanzadas, o APTs (Advanced Persistent Threat), que es como las llama todo el mundo. En estrecha colaboración con S2 Grupo, a finales de 2014 fue presentada la versión 3.0 de CARMEN, herramienta que se perfila como unas de las grandes apuestas del CCN. Carmen consiste en una herramienta para la detección de APTs mediante el análisis en tiempo real de logs y procesos de minería de Datos.

    PILAR (Procedimiento Informático lógico de Análisis de Riesgos): PILAR es probablemente la más conocida de las herramientas de seguridad y también la precursora de esta tendencia de usar tan femeninos nombres. Es una herramienta de análisis y gestión de riesgos que implementa la metodología MAGERIT, tiene un amplio calado en la administración pública Española y reconocido prestigio internacional. Por supuesto, proporciona un total cumplimiento a los requisitos establecidos por el ENS en cuanto a análisis y gestión de riesgos.

    LUCIA (Listado Unificado de Coordinación de Incidentes y Amenazas): Lucia es un proyecto que surge en 2014 y supone la apuesta del CCN para la implantación de un sistema de gestión de incidentes común para las administraciones públicas, que persigue dar cumplimiento a los requisitos del ENS en cuanto a gestión de incidentes y mejorar la coordinación entre los distintos organismos y el CCN-CERT. Lucia es una gran iniciativa para establecer un lenguaje y unos mecanismos de gestión de incidentes comunes, con todas las ventajas que esto supone.

    INES (Informe Nacional del Estado de Seguridad) [PDF]: El proyecto INES data de 2014 y da cumplimiento al artículo 35 del ENS, proporcionando una plataforma para recoger y gestionar la información sobre el estado de seguridad de las distintas Administraciones públicas. Así pues, INES en la práctica es una plataforma telemática puesta a disposición de los Responsables de Seguridad de las Administraciones Públicas, que proporciona un sistema sencillo para evaluar el nivel de adopción del ENS y el nivel existente de seguridad de la información. Esta plataforma permitirá un seguimiento generalizado del grado de implantación del ENS y tener una visión global siempre ayuda.

    CLARA: He de pedir disculpas porque no he podido averiguar que significa este acrónimo. CLARA es la más reciente de todas estas iniciativas y fue publicada el pasado diciembre. En su descripción dice ser una herramienta para el cumplimiento del ENS. Aunque me imaginaba una aplicación para cumplir con los requisitos documentales del ENS, ha resultado tener un propósito muy distinto: CLARA permite verificar la aplicación de las plantillas de seguridad de las guías 850A, 850B, 851A y 851B en nuestros sistemas de información. Estas guías se centran básicamente en dar cumplimiento desde un punto de vista técnico a los requisitos del ENS en entornos Windows 7 y Windows server 2008 R2.

    Espero que esta información les haya sido útil y haya dado a conocer estas iniciativas entre aquellos que no las conocían. Me gustaría cerrar este post destacando la gran labor del CCN en el ámbito de la ciberseguridad, así como la de otros organismos públicos que velan por la seguridad de la información, como son la Agencia Española de Protección de Datos o el Instituto Nacional de Ciberseguridad (INCIBE).

    Destripando documentos ofimáticos con OfficeMalScanner

    Una de las principales vías de infección de malware es a través de documentos ofimáticos. Son un vector de infección muy contundente, sobre todo en ataques dirigidos y campañas de phising.

    Estos documentos son manipulados con el fin de esconder en su interior macros, objetos OLE, ejecutables, etc., los cuales, una vez abierto el documento por el usuario, realizan una serie de acciones maliciosas con el objetivo de obtener información con la que poder lucrarse o simplemente provocar daños en el sistema. Generalmente, las acciones llevadas a cabo por este tipo de malware genérico son descargar otro malware desde internet (droppers), explotar vulnerabilidades del sistema, replicarse para asegurarse la persistencia en el equipo, exfiltrar información del usuario, etc.

    Una herramienta muy útil para analizar y detectar patrones anómalos en los documentos ofimáticos es la suite “OfficeMalScanner”, la cual podéis descargar desde la web de su autor, http://www.reconstructer.org/.

    [Read more…]

    Adjunto MIMEtizado

    En nuestro trabajo alguna vez nos han llegado correos electrónicos reenviados por clientes en referencia a mensajes sospechosos recibidos, supuestamente desde un banco en el que ni siquiera tienen cuenta corriente, y que incluyen ficheros adjuntos. Este tipo de correos suelen formar parte de campañas de phishing e incorporan contenido “no deseado” y peligroso que puede comprometer nuestros ordenadores.

    Cuando el correo nos llega con el adjunto original, el trabajo de determinar si se trata de un fichero malicioso es más sencillo, por lo que podemos pasar directamente a la revisión inicial (PASO 2) antes de proceder a un análisis más exhaustivo. En caso de que el adjunto nos llegue embebido en el mensaje de texto, la cosa es un poco más entretenida, pero no por ello más complicada. En ese caso debemos hacer la extracción previa del documento (PASO 1) para continuar con el análisis. Veamos en detalle ambos pasos.

    PASO 1

    Cuando abrimos el email un primer vistazo a las cabeceras del mensaje nos revelará su origen, los servidores por los que ha pasado hasta llegar al servidor de nuestra empresa, la dirección IP del presunto ordenador origen del mensaje e incluso el cliente de correo utilizado para enviarlo.

    Tras recopilar estos primeros datos, nos centramos en el contenido. Por las referencias sabemos que el email contenía un fichero adjunto en formato .doc, pero lo único que aparece en el email es una ristra de caracteres y ni rastro del típico icono de adjunto de correo.

    Con un par de herramientas (base64 y strings) disponibles en la mayoría de distribuciones Linux, veremos como podemos devolver esta cadena de texto a su formato original y determinar, con un poco de suerte, si se trata de un documento malicioso.

    Pero primero… un poco de teoría

    El envío de correos electrónicos se realiza mediante el uso del protocolo SMTP (Simple Mail Transfer Protocol), un protocolo de red basado en el intercambio de mensajes de texto ASCII. Para poder enviar contenido binario, como puede ser un fichero en formato Microsoft Word, una imagen o un video, debemos transformarlo primero en una cadena de caracteres ASCII. De esto se encarga el cliente de correo que tengamos instalado en nuestro ordenador, siguiendo la especificación MIME (Multipurpose Internet Mail Extension) RFC 2045, que define cómo hacer dicha transformación y como incluir el texto codificado en el mensaje que vamos a enviar.

    Volviendo a nuestro caso, conociendo de la existencia de MIME, ahora empezamos a distinguir las diferentes partes del correo:

    Como podemos ver el contenido codificado esta dividido en secciones delimitadas por cadenas de caracteres al inicio y al final de cada sección, incluyendo además una pequeña cabecera que define del tipo de contenido y la codificación utilizada para transformar el objeto incrustado en texto ASCII.

    El documento que nos interesa esta contenido en la sección delimitada por la cadena “--CbLIQalKQ1fedAaw3iKcHsdLkb0wA=_ZHM”. Para poder extraerlo, basta con copiar toda cadena de caracteres que aparece después de la cabecera de la sección en un nuevo documento de texto y decodificarla usando el algoritmo de codificación base64.

    $ base64 -d texto_codificado.txt > Documento_doc.sospechoso
    

    Podemos comprobar que el resultado obtenido es realmente un documento en formato Microsoft Office Word mediante el comando file:

    $ file Documento_doc.infectado
    Documento_doc.infectado: Composite Document File V2 Document, Little
    Endian, Os: Windows, Version 6.1, Code page: 1252, Author: clein, 
    ...
    

    PASO 2

    IMPORTANTE: No abrir el documento con la aplicación por defecto (Microsoft Word). Aunque podría ser inofensivo, es mejor no arriesgarse. Podemos echarle un vistazo inicial usando un editor alternativo, para determinar si hay algo interesante que nos pueda dar una idea de su contenido, o usando el comando strings, que nos dará una visión inicial del contenido del fichero. Strings nos mostrará por pantalla todas las cadenas de texto ASCII que contenga el fichero, entre las que puede que haber contenido que nos ayude a determinar si el fichero es malicioso y por lo tanto continuar con su análisis más en profundidad, o simplemente descartarlo.

    $ strings -a Documento_doc.sospechoso
    

    El resultado de la ejecución del comando anterior es el siguiente:

    Como puede deducirse de la imagen anterior, tenemos suficientes indicios para concluir que se trata de un archivo con contenido malicioso y que puede ser objeto de posterior análisis si se considera necesario. Tengamos en cuenta que:

    • Normalmente no es necesario el uso de macros en un documento Word que contiene datos estáticos.
    • Que el documento incluya comandos para la ejecución de ficheros en el sistema es indicativo de comportamiento malicioso.
    • La inclusión de URLs a sitios externos y que enlazan directamente con ejecutables suele ser típico de downloaders: software que descarga el malware y lo ejecuta para que se instale.

    Hemos visto como usando un par de herramientas disponibles en cualquier distribución de Linux y algunos conocimientos básicos de seguridad, podemos llegar a determinar fácilmente, si un fichero adjunto es malicioso.

    Así que quieres dedicarte a la ciberseguridad…

    El pasado domingo 7 de diciembre estuve dando una charla en el taller de empleo del Cybercamp, iniciativa que aunque como cualquier evento en su nacimiento tiene margen de mejora, mostró grandes cualidades y promete ser una importante cita anual para acercar el mundo de la ciberseguridad no sólo a los técnicos y personal especializado, sino también a estudiantes e incluso familias.

    Aunque la charla que di tenía dos partes claramente diferenciadas, en este post me voy a centrar en la segunda, más relacionada específicamente con el empleo, en la que indicaba algunos pasos y aspectos a tener en cuenta para cualquier persona que quiera entrar en el mundo de la ciberseguridad (y encontrar un empleo). Vamos con ello:

    • Especialmente si te vas a dedicar a la seguridad lógica, conoce y aprende a utilizar las herramientas de seguridad gratuitas que hay en la red: Snort, Yara, Metasploit, Logstash, OSSEC, Nessus, PFSense, etc. Experimenta, experimenta y experimenta. Incluso aunque estés más enfocado hacia la consultoría o aspectos más organizativos, es bueno que conozcas el propósito de las principales aplicaciones, cómo funcionan grosso modo, además de nociones básicas del funcionamiento de los sistemas operativos.
    • Manténte informado. El volumen de recursos hoy en día relacionados con la seguridad de la información es ingente: blogs, conferencias de seguridad, actos en streaming, informes de seguridad, libros, papers, nuevas vulnerabilidades, etc. Lo mejor es que mucha de esa información es gratuita. Pero no te olvides de las leyes nacionales (LSSI, LPIC, LOPD, etc.), nuevas tendencias y ataques, tendencias y ataques típicos, etc. La cuestión en este caso es leer, leer y leer.
    • Colabora con o crea un blog de seguridad. Como fundador de este blog hace ya siete años y pico, creo que este es un punto imprescindible para introducirse en el sector. La ciberseguridad te interesa, así que no te debería ser difícil hablar sobre tus opiniones, experimentos, herramientas, análisis, foros de seguridad a los que asistas, críticas, geopolítica internacional y APTs, informes que hayas leído, etc. La cuestión es tener algo que sirva de carta de presentación. Una cosa que no me canso de recordar: aunque no seas el primero en escribir sobre algo, no pasa nada.
    • Fórmate (esto ya lo habrás oído por activa y por pasiva, te quieras dedicar a seguridad o cría de ranas). Aquí volvemos sobre la cantidad de recursos disponibles que hay hoy en día: busca formación en la rama en la que quieras desarrollarte, con certificado o sin él, presencial u online. CISAs, CCNAs, SANS. Haz algún master. Si no tienes recursos, muchos CERTs tienen cursos gratuitos e iniciativas como Coursera tienen cursos de muy alto nivel gratuitos (aunque desgraciadamente muchos en inglés). Sé autodidacta y ya sabes, si tu economía no te permite tener un certificado, un blog es un buen lugar para demostrar lo que sabes.
    • Inglés. Ya sabes, lo típico. Al menos lo necesitarás para poder leer un informe de un APT ruso publicado por Symantec. Es cierto que saber iraní, chino o ruso te puede ayudar con los APTs, pero empieza por lo fácil. Ya sabemos que hoy en día, APTs hace todo el mundo.
    • Colabora con la comunidad. Participa en algún proyecto; desarrolla o colabora en el desarrollo de alguna herramienta. No es necesario que piques código si no te sientes capaz de “meterle mano” a algo: traduce, elabora un manual, haz de beta tester. Github, ya sabes. Véase blog. En definitiva: pon en marcha cosas.
    • Aprende a escribir. En serio, esta es una cruzada personal. Gramática, ortografía, sintaxis. No hace falta que ganes el Nobel, pero tienes que conseguir que los clientes te entiendan. Sí, las aplicaciones de ofimática te ayudarán con la ortografía y detectarán algunos problemas de concordancia, pero te hará falta algo más. Evidentemente, si te vas a meter en consultoría, qué te voy a contar. En definitiva: si no pretendes trabajar en un sótano picando código para alguna potencia internacional maligna, lo más probable es que tarde o temprano tengas que escribir un informe. Ah. El blog es otro buen recurso para practicar esto.
    • Aprende a utilizar las herramientas de ofimática. Esta es mi segunda cruzada personal. En serio. No vas a poder entregar informes con el vi o en su versión borderline el notepad, ni aunque estén escritos en hexadecimal. Los clientes tampoco acostumbran a aceptar que les mandes los fuentes de LaTeX para que ellos se generen el PDF. Soy el primero que reconoce que en ciertos casos formatear un documento de cierta magnitud puede convertirse en un infierno, pero es lo que hay. Mi recomendación es que aprendas a utilizar cosas básicas como el interlineado, interpárrafo, los tipos de letra, las tablas, incrustar una gráfica, los márgenes. El powerpoint. Cosas así, ya sabes.
    • Desarrolla tus dotes de comunicación. No hace falta que seas Eduardo Punset, pero es bueno que sepas comunicar lo que tienes en la cabeza y que con el tiempo trates de mejorar tus habilidades por si necesitas dirigirte a un conjunto de personas. Reconozco que esto puede ser complicado o prácticamente imposible para algunas personas con pánico a hablar en público. En esos casos… suerte, paciencia y resignación.
    • Ejercita tu mano izquierda y tu paciencia. Yo hace tiempo que aprendí esto a fuerza de golpes (que suele ser la principal manera de aprenderlo). Por mucha suerte que tengas, a lo largo de tu carrera te encontrarás en algún momento con entornos laborales o equipos de trabajo poco amigables, clientes descontentos, competidores, compañeros poco amistosos, personas directamente groseras, y tendrás que defender tus posiciones frente a personas que tienen más poder que tú. Sin que eso implique renunciar a la asertividad, tendrás que aprender a agachar la cabeza cuando toque (la seguridad esta al servicio del negocio, no al revés), ser cordial aunque quieras arrancarle la cabeza a alguien, y sonreír aunque estés deseando matar a esa persona. Seguro que lo has practicado alguna vez en reuniones familiares, así que no debería ser tan difícil.
    • Ejercita el pensamiento lateral. Yo no sé cómo se hace esto, pero seguro que Google sí. Intenta ser imaginativo y creativo, y si no lo eres, trata de desarrollar esa cualidad. Aunque no esté relacionado con la seguridad, da igual.

    Hay muchas maneras de entrar en seguridad, y no todas son como pentester (pero también). Hacen falta administradores de bases de datos que sepan bastionar un Oracle y conozcan el concepto de SQL Injection. Programadores que sepan lo que es un XSS y estén familiarizados con el OWASP TOP-10. Administradores de redes que proporcionen soluciones de conectividad remota segura y se preocupen de segmentar la red. Consultores que desarrollen normativas y procedimientos y los implanten (a pesar, a menudo, del propio usuario). Comunicadores que ayuden a concienciar al usuario final, origen de muchos de los problemas de la seguridad actual. Ingenieros industriales que conozcan los procesos y el funcionamiento de las infraestructuras industriales. Entre otros.

    En definitiva, si te gusta la ciberseguridad, sólo necesitas INICIATIVA. Por suerte, en este campo trabajo hay de sobra.

    PS: Al acabar la charla, una persona me preguntó cómo empezar en este campo si únicamente tenía conocimientos de usuario final y ofimática. Aunque una respuesta a algo así requiere un análisis un poco más detallado de las capacidades y conocimientos de cada persona, mi recomendación en estos casos es empezar por cursos —generalmente gratuitos o bastante asequibles— de introducción a los sistemas operativos, para luego entrar en cursos más avanzados. También existe la opción de hacer un módulo de FP que proporcione, de la manera más práctica posible, las bases necesarias en relación con el funcionamiento de los sistemas operativos, las redes y los lenguajes de programación.

    A partir de ahí, yo optaría por instalar un Linux (principalmente porque es gratuito, hay infinidad de recursos en la red, es sobre el que trabajan muchas aplicaciones de seguridad y es bastante transparente en su funcionamiento por lo que es fácil aplicar conceptos de manera práctica) y con un manual empezar a “trastear” con él. Cuando se haya llegado a una cierta comodidad, entonces será el momento de pasar a aspectos específicamente relacionados con la seguridad. No es un camino tan largo como parece, aunque eso depende de cada persona.