Mostrando entradas con la etiqueta malware. Mostrar todas las entradas
Mostrando entradas con la etiqueta malware. Mostrar todas las entradas

miércoles, 2 de agosto de 2017

Domain Fronting

El mundillo de la ciber-seguridad es bastante propenso a modas y actualmente los productos/servicios en boca de todos son los basados en Threat Intelligence.

Threat Intelligence se define como el conocimiento necesario para identificar y prevenir posibles amenazas de seguridad. Conocimiento que nos facilita la toma de las decisiones mas apropiadas en cada situación. Este conocimiento normalmente se obtiene agregando diferentes fuentes de información sobre incidentes de seguridad y mediante análisis experto de la actividad de los llamados "Threat Agents".

Al final este conocimiento se traduce en indicadores que podemos usar para detectar si nuestra red esta siendo atacada. Simplificando, lo que nos ofrecen la mayoría de proveedores o productos de Threat Intelligence, se puede resumir en:
- Listas de reputación de binarios
- Listas de reputación de dominios y/o direcciones IP

Seguimos teniendo un enfoque básico basado en "lista-negra"; detectamos lo que en el pasado ha sido dañino. Pero añadimos una capa de "lista-blanca"; cuando detectamos algo que no tenemos claramente identificado como dañino, pero que conocemos poco (poca reputación), podemos presuponer que también es malicioso.

Ambas herramientas nos ayudan a controlar si en nuestra red hay alguna actividad sospechosa, pero son fácilmente evitables por parte de atacantes avanzados.

Para evitar la detección basada en reputación de binarios tenemos múltiples técnicas. Algunas utilizadas a menudo por los creadores de malware. Por ejemplo las que comentaba en mi charla de la ultima Rootedcon, sobre como aprovechar las debilidades de la tecnología Authenticode de Microsoft.

Para evitar la detección basada en reputación de dominios o direcciones IP, la técnica que esta empezando a ponerse de moda entre los actores avanzados es la de Domain Fronting.

El Domain Fronting es una técnica que consiste en utilizar dominios legítimos y con buena reputación, como "tapadera" para camuflar las comunicaciones del malware o de las herramientas de control remoto con sus paneles de control (C&C).

Esta técnica se aprovecha de una característica de la tecnología CDN actual. Esta característica es común a la mayoría de proveedores de redes de distribución de contenidos: Akamai, Google, Chinanet, Cloudflare, Cloudfront, Azure, etc.

Estas redes tienen distribuidos sus nodos por todo el mundo. Y para que los distintos usuarios "conecten" a los sitios que están protegidos por la CDN, establecen una serie de nodos o frontales de entrada. Estos nodos son compartidos por todos los dominios hospedados en la CDN, de forma que si contratamos un dominio por ejemplo en Akamai. Los puntos de entrada a nuestro servicio, serán los mismos que los de otros clientes de Akamai, como pueden ser; Microsoft, Vmware, Adobe, etc.


Esto significa que si monitorizamos nuestra red para detectar a que sitios conectan los usuarios, no vamos a poder distinguir a priori si el trafico que va hacia Akamai, es para conectar a servicios de alta reputación (p.e. Microsoft) o es el que va dirigido a un panel de control que también utilice la infraestructura de Akamai.

Es mas, el malware puede camuflar también los nombres de dominio utilizados a nivel DNS, utilizando dominios con alta reputación a nivel de resolución, pero luego solamente dentro de la propia comunicación HTTP, utilizar el nombre real del servidor malicioso oculto tras la CDN.

Esta técnica es la utilizada por ejemplo en las ultimas versiones de Signal para evitar la censura de algunos países, camuflando sus nodos de entrada detrás de dominios de proveedores intermedios.

Vamos a ver un ejemplo de como crear una infraestructura de este tipo. Para ello vamos a utilizar la CDN de Cloudflare que nos permite registrar dominios de forma gratuita en su versión básica.

Primero vamos a crear una nueva cuenta y asociar nuestro dominio malicioso ella.


Dentro de este dominio, vamos configurar nuestro "endpoint" de control. Por ejemplo: /cloudflare.php

$ curl http://www.malicioso.com/cloudflare.php
CDN test file.

Ahora vamos a buscar un dominio con alta reputación, que este hospedado también en la CDN de Cloudflare. Por ejemplo "4chan.org". Y vamos a realizar una petición a este dominio, pero con una cabecera adicional.


$ curl http://www.4chan.org/cloudflare.php -H "Host: www.malicioso.com"
CDN test file.


De esta forma, tanto en servidores DNS, como en servidores Proxy, quedara solo registrada una conexión a "www.4chan.org" (que resuelve a una IP de la CDN de Cloudflare). Todo totalmente inofensivo. Y solo si analizamos el trafico a nivel de cabeceras HTTP podremos identificar el dominio malicioso. Si además usamos trafico SSL, la identificación del dominio malicioso se hará mucho mas difícil.

Si tenemos un pequeño malware en Powershell, también podemos hacer fácilmente que utilice "4chan.org" como Domain Fronting. Por ejemplo:


PS C:\> Invoke-WebRequest http://www.4chan.org/cloudflare.php -Headers @{"host"="www.malicioso.com"}
StatusCode        : 200
StatusDescription : OK
Content           : CDN test file.


De esta forma, el trafico hacia el panel de C&C quedara camuflado.

Esto no significa que tengamos que tirar a la basura nuestros sistemas basados en reputación IP o DNS, pero debemos tener en cuenta que estos sistemas no son infalibles y pueden ser fácilmente evitados. 




domingo, 18 de diciembre de 2016

SmartScreen

SmartScreen es un mecanismo de seguridad de Microsoft que alerta a los usuarios cuando conectan a un sitio malicioso o cuando intentan ejecutar un fichero descargado que puede ser peligroso.

Está diseñado para ayudar a proteger a los usuarios contra los ataques de phishing, ingeniería social y de descarga drive-by, que intentan infectar un sistema.



SmartScreen está configurado por defecto en Internet Explorer a partir de su versión 9 (aunque en versiones anteriores existían ya algunas protecciones similares) y en Windows a partir de su versión 8.

Se basa en un sistema de reputación proporcionado por Microsoft. Cuando un usuario descarga un ejecutable que puede ser dañino, se calcula un resumen (hash) del mismo y se valida de forma online contra los servidores de Microsoft, cuando el usuario intenta ejecutarlo.

La reputación de un ejecutable se determina a partir de su hash y si va firmado mediante Authenticode a partir de la reputación del editor.

Un binario firmado por un editor de confianza no hará saltar la alerta de SmartScreen, aunque su hash sea desconocido.

Ejemplo de fichero EXE firmado:



La validación de la reputación se realiza solamente la primera vez que se ejecuta el programa descargado y queda almacenada en el sistema.

Para la validación se contacta con los servidores de Microsoft para obtener la calificación del programa ejecutado.

Ejemplo de petición efectuada para validar la reputación de un EXE:



Y respuesta positiva (allowed):



Si los servidores de SmartScreen no están disponibles, no es posible validar la reputación y se muestra un mensaje de alerta diferente:



De forma que hacer DoS a los servidores de Microsoft no es una opción completa para evadir la seguridad de SmartScreen. Aunque es un mensaje mucho menos alarmista que el primero.

Gracias a SmartScreen el número de infecciones por ataques de descarga drive-by se ha reducido considerablemente, aunque existen diversas técnicas para burlar su protección.

Algunas técnicas utilizadas para burlar la protección de SmartScreen son:
• Consiguiendo que el ejecutable gane reputación: Normalmente haciendo que tenga muchas descargas y que no haya reportes sobre comportamiento malicioso.
• Comprando un certificado Authenticode para firmar ejecutables y ganando reputación como editor. Ya que por sí sola la firma Authenticode no garantiza la conformidad de SmartScreen.
• Robando un certificado de un editor con buena reputación.
• Modificando un binario confiable ya firmado sin invalidar su firma.
• Colisión de hashes con un ejecutable con buena reputación.

Si no conseguimos la conformidad de SmartScreen siempre nos queda la opción  de aplicar ingeniería social y convencer al usuario para que ignore las alertas de seguridad y ejecute nuestro programa igualmente, pero lógicamente esta técnica es la más propensa a fallar.

SmartScreen es solo una primera barrera de protección y una tímida aproximación a las protecciones basadas en listas blancas (ya que alerta de aquellos ejecutables cuya reputación es desconocida).

Aun así, en entornos de alta seguridad es necesario acudir a herramientas de validación de reputación o basadas en listas blancas más restrictivas y que no permitan al usuario el ignorar las alertas de seguridad.

lunes, 8 de junio de 2015

Operaciones APT sin malware

Ya decíamos en un post anterior que no era correcto asociar de forma inseparable el termino APT con los términos malware avanzado o malware dirigido. Se han documentado casos de operaciones APT en las que se ha utilizado malware muy básico y estamos empezando a conocer casos de operaciones APT sin malware.

Con el término “sin malware” nos referimos a operaciones APT que no usan el tradicional troyano o herramienta de control remoto (RAT) monolítico y binario que se comunica con un sitio de mando y control (C&C o C2).  

Los últimos informes sobre tendencias en el mundo de los APT y los comentarios de expertos en la materia parecen indicar que no estamos ante casos aislados.

Si, como estáis oyendo, operaciones de espionaje avanzadas en las que no se usa ningún tipo de malware reconocible. ¿Cómo puede ser esto posible?

Pues puede realizarse utilizando varias tácticas ya conocidas o incluso combinándolas:
  • Utilizando herramientas no maliciosas con fines ofensivos. Por ejemplo utilizar netcat para crear una puerta trasera en vez de programar una propia.
  • Utilizando un lenguaje de scripting y cargando el código directamente desde la red, de forma que no quede nada en disco.
  • Codificando el payload de la infección y almacenándolo fuera del sistema de ficheros, por ejemplo en el registro o en un disco de red.
  • Inyectando el payload en memoria de forma remota cada vez que se quiera acceder a un equipo, sin que llegue a quedar nada en disco.


El resultado práctico de estas tácticas es similar y significa el golpe de gracia para las soluciones antivirus tradicionales:
  • No existe un binario malicioso que escanear.
  • No se copia nada malicioso al disco que pueda generar alertas.
  • No queda nada o casi nada en disco que se pueda recuperar en un análisis forense.



¿Pero cómo logran estos APT permanecer en los sistemas sin usar un malware?

La persistencia en la mayoría de casos se consigue utilizando métodos tradicionales: Creando un nuevo servicio en el equipo, creando una tarea programada, añadiendo un script de arranque.

Solo que en este caso el elemento de persistencia es minimalista (muchas veces consiste en una única línea de código bat, vbs o powershell) cuya labor es descargar y lanzar el payload principal.

Otras veces el APT hace uso de funcionalidades avanzadas de los sistemas Windows para lograr su ejecución periódica, por ejemplo mediante la programación de eventosWMI, ficheros de auto-instalación, plugins de Office, LSA security packages, etc.

Incluso en algunos casos la persistencia se sacrifica totalmente, no quedando nada residente en el equipo. En estos casos los atacantes confían en vulnerabilidades del sistema, puertas traseras o en credenciales sustraídas, para poder volver a obtener acceso al equipo cuando sea necesario.

En estos casos la labor ofensiva es mucho más manual. No se utilizan herramientas que faciliten la labor del atacante y este debe combinar el uso de las diversas herramientas legítimas que proporciona el sistema objetivo para lograr la misma funcionalidad.

Dos herramientas clave en este tipo de estrategias ya las hemos mencionado: Powershell y WMI. Estas herramientas suelen estar activas por defectos en cualquier equipo Windows y pueden utilizarse para replicar las funcionalidades de los RAT tradicionales, pero dejando una menor huella en el sistema.

Estas nuevas estrategias entrarían dentro del concepto de operaciones APT 2.0 o APT-NG, términos de marketing que han acuñado algunas compañías que pretende explicar que muchos de los “patrones” que solíamos asociar a las operaciones APT ya no son aplicables.

Y es que como ya explicamos en artículos anteriores, los agentes APT constituyen una seria amenaza precisamente por eso, por su versatilidad y su capacidad para cambiar, adaptarse a las estrategias defensivas y utilizar nuevas tácticas para ser más efectivos.


martes, 1 de abril de 2014

Operaciones APT famosas

Tenemos en la prensa especializada noticias sobre ataques APT casi a diario y el término se está empezando a utilizar de manera demasiado alegre. El otro día llegue a leer incluso a alguien que decía que el malware bancario Zeus era un APT.

El término APT se suele asociar erróneamente al uso de malware dirigido, pero es algo más. APT es el grupo de gente que esta detrás del ataque, no la operación y mucho menos el malware.

El malware es como “una bomba”. Es lo que “mata”, pero para lanzar una bomba hace falta un avión, hacen falta pilotos, hacen falta ingenieros que diseñen la bomba, gente de inteligencia y medios de reconocimiento que digan donde hay que dejar caer la bomba.

Además no cualquier grupo de “ciber-agresores” entra dentro del término APT si no cumplen las condiciones básicas del término:

• Avanzado: En el sentido de que los atacantes tienen recursos técnicos, económicos y de inteligencia amplios. Son grupos poderosos o naciones.

• Persistente: Es decir los ataques no son únicos y se suelen mantener a largo plazo.

• Amenaza: Al estar realizados de forma organizada (Las herramientas de seguridad tradicionales están diseñadas para evitar ataques puntuales y por lo tanto son previsibles y fáciles de evadir si se realizan los ataques de manera planificada).


Por si no queda del todo claro. He recopilado una lista de las operaciones APT más famosas de los últimos años como material de estudio. Si echáis alguna en falta, estoy a vuestra disposición.

No veréis en esta lista troyanos masivos de ciberdelincuencia tipo Zeus, Shylock, Coreflood, Mariposa y tantos otros.

Ordenados según el año en el que salieron a la luz pública:

1999



2005



2008

2009


Byzantine Hades / Gh0stNet - http://en.wikipedia.org/wiki/GhostNet

2010




2011







2012





2013






2014




Gran parte del texto del articulo ha sido aportado por Miguel Angel Hernandez.

jueves, 25 de agosto de 2011

¿Contra quién estamos luchando?

Este post inicialmente se iba a llamar “¿Contra quién vamos a luchar?”, pero como dice mi compañero Leo, es que ¡Ya estamos en guerra!

Este año 2011 ha estado salpicado más que nunca de noticias relativas a graves compromisos de seguridad en grandes corporaciones, gobiernos y contratistas militares.

Y esto confirma que estamos ante un enemigo cada vez más potente y efectivo. Los americanos lo llaman Advanced Persistent Threat o APT (Amenaza Persistente y Avanzada).

Un APT sería un grupo organizado o nación, con recursos suficientes, que pretende infiltrarse y dañar a un grupo o nación rival a largo plazo.

Es un término anterior al de ciberguerra pero que toma su mayor significado en el entorno informático actual.

En el espionaje clásico se consideraban como APTs por ejemplo aquellas naciones que se dedicaban a introducir agentes “durmientes” en la jerarquía de una potencia rival con el fin de que llegasen a puestos importantes con el paso del tiempo.

APT en el entorno cibernético se suele asociar principalmente al uso de malware que va siendo introducido de forma subrepticia en los sistemas informáticos del enemigo y que se mantiene inactivo. Aunque el termino se extendería a cualquier actividad continuada de hacking que no es detectada.

El mayor riesgo de este tipo de amenazas no es que sean avanzadas o persistentes es que la cultura de seguridad informática predominante es claramente insuficiente para luchar contra ellas. Somos muy vulnerables.

La mayoría de herramientas de protección que existen hoy en día están diseñadas para defendernos contra atacantes casuales, tales como jóvenes aburridos, distribuidores de SPAM o pequeños ciber-delincuentes. Estas herramientas no son suficientes para contener ataques dirigidos.

La inversión en normativas (ISO27002, LOPD, PCI), los antivirus estándares, los IDS/IPS comerciales, los sistemas SIEM, etc. Están muy bien para sentar las bases para unas redes más seguras y crean un entorno para la gestión de la seguridad familiar y cómodo, pero no son suficientes ante las nuevas amenazas.

La experiencia ha demostrado que estas soluciones a pesar de ser relativamente eficientes para disuadir a atacantes casuales son muy limitadas a la hora de contener a un atacante decidido y persistente.

Toda organización que se prepara solo contra ataques conocidos y puntuales está cometiendo un gran error.

El atacante ni siquiera tiene que ser especialmente hábil, es suficiente con que sea perseverante. Es cuestión de tiempo que encuentre una brecha en la seguridad perimetral o que aprenda lo suficiente para abrir una.

Es difícil dar una receta rápida sobre cómo protegerse contra los APTs. Pero principalmente yo recomendaría ser proactivos. Formar equipos especializados que estudien, analicen y preparen defensas ante las nuevas amenazas. Equipos que aprovechen la potencia de las herramientas de seguridad estándares, pero que conozcan sus limitaciones y sepan solventarlas.

sábado, 29 de enero de 2011

Limitaciones de los Antivirus en entornos gubernamentales

La lógica informática recomienda evitar el uso de sistemas operativos de seguridad no garantizada en entornos críticos. Pero la preeminencia de Microsoft con sus sistemas operativos, hace que sea habitual encontrar equipos basados en Windows en este tipo de entornos.

Para estos entornos existen otro tipo de sistemas operativos más robustos como: OpenBSD, Trusted-Solaris, HP/UX Virtual Vault, Hardened-Linux, etc.

Aunque la seguridad de Windows ha ido mejorando con las nuevas versiones, no llega al nivel de los anteriores y sigue siendo una plataforma especialmente vulnerable a algunos tipos de ataques. Por ejemplo a la infección por medio de malware.

La principal herramienta de protección frente a este tipo de ataques ha sido tradicionalmente el uso de software Antivirus. Pero este tipo de software ha sido diseñado principalmente para entornos domésticos o corporativos y se queda corto en entornos gubernamentales.

¿Por qué? Porque el malware enfocado a este tipo de entornos no se parecen al que encontraríamos en entornos civiles.

Los antivirus actuales basan la detección principalmente en 2 mecanismos:

Detección basada en firmas: El antivirus mantiene una base de datos de virus conocidos y de patrones binarios reconocibles que permiten identificar posible malware.

La detección basada en firmas puede ser evitada principalmente de 2 formas:

- Evitando que el malware sea catalogado por las casas de antivirus. Los virus o troyanos con objetivos militares o de inteligencia suelen ser desarrollados a medida, de forma que no han sido distribuidos anteriormente y no han podido ser analizados por los fabricantes de antivirus.

- Evitando que el malware tenga patrones identificables mediante una firma. Esto normalmente se consigue haciendo que el virus cambie de forma en cada infección. Para ello se utilizan técnicas de polimorfismo que codifican el binario de forma diferente cada vez que se copia.

Un virus polimórfico lo que hace normalmente es cifrar su propio código utilizando una llave de cifrado diferente cada vez. La parte del código que no puede ser cifrada (principalmente el código que realizara el proceso de descodificación) se genera mediante mutaciones. Estas mutaciones hacen que el código pueda seguir realizando las mismas funciones pero sustituyendo las instrucciones en ensamblador por otras equivalentes.

Para automatizar estas mutaciones los desarrolladores de malware suelen utilizar herramientas llamadas packers. Estas herramientas comprimen y codifican el cuerpo del binario de forma automática.

Los antivirus pueden intentar definir una firma específica para cada packer. Pero en entornos militares estos packers son desarrollados a medida, de forma que los antivirus no tienen forma de catalogarlos.

Detección basada en heurística: El antivirus realiza una simulación de lo que haría el binario a analizar si fuese ejecutado. Si detecta algún tipo de comportamiento sospechoso (o habitual del malware), podrá identificar un binario malicioso aunque no haya sido catalogado previamente.

Para realizar esta simulación la mayoría de antivirus lo que hacen es crear una especie de máquina virtual donde ejecutan el código del binario a modo de emulador. Dentro de esta emulación se analiza el comportamiento del binario durante unos breves segundos (no pueden hacerlo durante mucho tiempo ya que ralentizarían en exceso el equipo).

Para evitar este tipo de detección el malware moderno suele utilizar las siguientes técnicas:

- No realizar acciones sospechosas que puedan delatar su actividad: Simplificando las funcionalidades del malware podemos evitar que sea detectado por heurística. Pero este tipo de ocultación es limitada ya que impide al malware realizar ciertas acciones.

Además cada modelo de antivirus considera sospechosas una serie de acciones diferentes. De forma que aunque podamos evitar la detección por un antivirus en concreto, puede que otro si nos detecte.

- Técnicas anti-debugging: Estas técnicas consisten en hacer que el código no pueda ser analizado en un debugger o hacer que el código se comporte de forma diferente (para parecer inocuo) si detecta que está siendo debuggeado.

Para evitar que el código pueda ser analizado lo que se suele hacer es aprovechar defectos de diseño de las herramientas de debug para conseguir que fallen a la hora de analizar el binario.

Para detectar la presencia de un debugger se suelen utilizar funciones estándar de Windows como: IsDebuggerPresent(), CheckRemoteDebuggerPresent(), NtQueryInformationProcess(),leer NtGlobalFlag o acceder directamente al PEB.

- Técnicas anti-emulación: Estas técnicas consisten en actuar de forma no previsible para hacer que el antivirus no sea capaz de detectar la verdadera funcionalidad del binario.

Algunas de las técnicas más utilizadas son: Usar APIs no documentadas, usar funciones no soportadas por el emulador, retrasar la ejecución del código malicioso y realizar operaciones pesadas que consuman el tiempo del emulador.

Algunos packers avanzados ya incluyen “de serie” muchas de estas técnicas de forma que le ahorran trabajo al desarrollador del malware y dificultan su análisis. Cuanto más personalizado (y adaptado este el binario al sistema objetivo) más compleja será la detección.