Cabecera blog ciberseguridad

Fancy Bear y dónde encontrarlos

La investigación de BlackArrrow sobre Fancy Bear se presentó oficialmente en la Rooted 23

España ha sido objetivo de numerosas APT (Advanced Persistent Threat) recientemente [1], entre las cuales se sitúa APT-28, también denominada Fancy Bear. Este grupo tiene otros muchos nombres, en función del investigador que se refiera a ellos. Entre estos nombres podemos destacar los siguientes: Sofacy, Group 74, Pawn Storm, Sednit y Strontium. En el siguiente artículo nos referiremos a este grupo como Fancy Bear.

¿Quién es Fancy Bear?

Fancy Bear es un grupo APT ruso, presuntamente relacionado con el GRU (Directorio Principal del Alto Estado Mayor de las Fuerzas Armadas de Rusia), que es el servicio de inteligencia militar de Rusia. Comenzaron a actuar entre 2004 y 2008 y su objetivo principal es el espionaje y el robo de información, principalmente de aquella que pueda ser de utilidad para el gobierno ruso.

Por esto, suelen atacar sectores relacionados con infraestructuras críticas, como pueden ser: gobiernos, medios de comunicación, petróleo y gas o defensa. Sus países objetivo han ido variando, pero generalmente suelen centrarse en aquellos países miembros de la OTAN (Organización del Tratado del Atlántico Norte).

Las APTs, en general, se caracterizan por estar muy especializadas en sus víctimas. En el caso de Fancy Bear, se les ha visto explotando vulnerabilidades relacionadas con Microsoft, Adobe, Internet Explorer y Oracle. Todas estas tecnologías tienen algo en común: son habitualmente utilizadas por sus víctimas.

Así pues, podríamos decir que Fancy Bear se centra en la explotación de vulnerabilidades emergentes que le pueda permitir el acceso a sus víctimas. De hecho, recientemente se ha descubierto que este grupo ha estado explotando activamente una vulnerabilidad en Outlook (CVE-2023-23397) que les permitía robar hashes NTLM, que más tarde utilizaban para realizar movimientos laterales en las redes víctima [2].

Malware y TTPs

Cada grupo APT se caracteriza por utilizar una serie de Tácticas, Técnicas y Procedimientos (TTPs) concretos, así como un conjunto de malware y herramientas específicas. En el caso de Fancy Bear, se ha identificado que utilizan el siguiente malware:

Fancy Bear utiliza diferentes técnicas para cada una de las fases de sus ataques

Por otra parte, se les ha visto utilizando diferentes técnicas para cada una de las fases de sus ataques.

El estudio de estas TTPs se ha realizado desde el punto de vista del Threat Hunting. En nuestro caso, utilizamos la tecnología EDR/XDR en nuestras investigaciones. Esta tecnología recoge información de los endpoints del sistema, que son el principal objetivo de las APTs, por lo que nos permiten centrar nuestras investigaciones en las potenciales víctimas de los atacantes.

Sin embargo, con esta tecnología no tenemos visibilidad de las primeras fases de un ataque:

Fancy Bear ha explotado vulnerabilidades relacionadas con Microsoft, Adobe, Internet Explorer y Oracle

Por lo tanto, este estudio se centra en las cuatro últimas fases de la Cyber Kill Chain. Cabe destacar que existe tecnología EDR/XDR que sí tiene visibilidad de la fase Delivery (que se correspondería con la táctica Initial Access de MITRE ATT&CK).

Sin embargo, por la disparidad en la telemetría disponible en función del proveedor de EDR/XDR que se tenga y porque tampoco se puede tener visibilidad de todas las técnicas de Initial Access, en esta investigación no se han estudiado las técnicas de esta fase correspondientes al grupo Fancy Bear. Aún así, en la mayor parte de sus ataques se les ha visto utilizando phishing como técnica de acceso inicial (T1566).

Consultas desarrolladas

Las siguientes consultas están pensadas para ser ejecutadas en un EDR/XDR. Todas ellas están escritas en pseudocódigo, con el objetivo de ser totalmente agnósticos respecto a la tecnología EDR utilizada y para facilitar la lectura de las mismas.

A continuación, se muestran las técnicas utilizadas por Fancy Bear para cada una de las tácticas anteriormente identificadas y una posible consulta para detectar este comportamiento en un EDR/XDR.

TA0002: Ejecución

– Uso de PowerShell para descargar scripts o malware de segunda etapa (T1059.001).

Para esto, se pueden utilizar varios cmdlets de Powershell, y bastará con buscar la aparición de estos cmdlets en la línea de comandos:

process = «powershell.exe» and command_line in contains («DownloadFile», «Invoke-WebRequest», «DownloadString», «iwr»)

– Ejecución de archivos LNK de forma manual por parte del usuario (T1204.001).

Existen EDR/XDR que tienen eventos específicos para la ejecución de archivos LNK. Para aquellos que no tengan estos eventos, podemos buscar la apertura de un LNK desde el explorador de archivos (explorer.exe) y que, justo después, se ejecute algún proceso sospechoso. Los aquí indicados permiten la ejecución de código, pero también podríamos buscar la ejecución de procesos no firmados.

event_type = FILE_OPENED and parent_process = «explorer.exe» and extension = «lnk»
| join (event_type = PROCESS and process in («cmd.exe», «powershell.exe», «wscript.exe», «mshta.exe»)) by endpoint_id, process_id
| where time_difference (t1, t2) < 5 seg

TA0003: Persistencia

– Uso de scripts en el inicio de sesión (T1037.001).

Se ha visto al grupo Fancy Bear incluyendo scripts en la clave de registro HKCU\Environment\UserInitMprLogonScript. Un script almacenado en esta clave de registro se ejecutará cada vez que el usuario inicie sesión.

event_type = REGISTRY_SET_VALUE and registry_key contains «\Environment\UserInitMprLogonScript»

– Uso de la carpeta Startup (T1547.001).

Utilizan la carpeta Startup para crear la persistencia del malware. Si se usa C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, el malware se ejecutará cuando ese usuario en particular inicie sesión. Si utilizan C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp, el malware se ejecuta cada vez que un usuario inicia sesión (da igual quién, se ejecuta para todos).

event_type = FILE_CREATED
and file_path regex «(?i)^(C:\\Users\\.*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\|C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp).*»
and file_name != «desktop.ini»

– Uso de la clave de registro “Office Test” (T1137.002).

Usan la clave de registro HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf o HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf para almacenar DLLs maliciosas que se ejecutarán cada vez que una aplicación de Microsoft Office se inicie. Esta clave de registro no se crea por defecto, por lo que se requiere que hubiera sido creada manualmente previamente o bien el atacante debe crearla.

event_type in (REGISTRY_CREATE_KEY, REGISTRY_SET_VALUE) and registry_key contains «\Software\Microsoft\Office test\Special\Perf»

TA0004: Escalada de privilegios

En el caso de la elevación de privilegios, Fancy Bear suele aprovecharse de vulnerabilidades emergentes. En sus ataques se les ha visto explotando las siguientes vulnerabilidades: CVE-2014-4076, CVE-2015-2387, CVE-2015-1701 y CVE-2017-0263, entre otras.

Sin embargo, realizar consultas específicas para localizar estas vulnerabilidades no es realmente el objetivo del Threat Hunting. Evitar la explotación de estas vulnerabilidades sería cometido de un departamento de gestión de vulnerabilidades. Como estas vulnerabilidades irán variando a lo largo del tiempo, según se vayan parcheando las anteriores y surgiendo algunas nuevas, no parece tener sentido limitarnos a estas.

Por lo tanto, hemos decidido realizar la siguiente aproximación: una consulta que busque el uso de binarios legítimos de Windows comúnmente utilizados para realizar bypass de UAC (User Account Control).

– Binarios comúnmente utilizados para bypass de UAC generando procesos hijos con privilegios elevados (T1548.002)

event_type = PROCESS_START
and parent_process in («WSReset.exe», «slui.exe», «fodhelper.exe», «eventvwr.exe», «cmstp.exe», «sethc.exe»)
and child_process_integrity_level in («High», «System»)

TA0005: Evasión de defensas

– Decodificación de payload en Base64 con certutil (T1140),

Se ha visto a este grupo codificando sus payloads en Base64 y almacenándolos en archivos TXT. Posteriormente, para utilizarlos, los decodifican utilizando certutil -decode.

process = «certutil.exe» and command_line regex «(?i).*\-decode.*\.txt.*»

– Borrado de registros de eventos con wevtutil (T1070.001).

Borran ciertos registros de eventos utilizando el comando wevtutil cl. En concreto, se les ha visto borrando los registros Security y System. Hemos añadido a la búsqueda el registro Application, ya que es otro de los que se borran habitualmente por los atacantes.

command_line regex «(?i).*wevtutil\s+cl\s+(system|security|application).*»

– Ejecución de DLLs maliciosas con rundll32 (T1218.011).

Este grupo almacena sus DLLs habitualmente en C:\Windows\ o en C:\Users\[Username]\AppData\. Posteriormente, ejecutan estas DLLs con rundll32.

command_line regex «(?i).*rundll32\.exe.*(C:\\Windows|C:\\Users\\[\w\s\.]+\\AppData|[A-Z]:)\\[\w\s\.]+\.dll.*»

TA0006: Acceso a credenciales

– Volcado de LSASS con rundll32 (T1003.001).

La función Minidump de comsvcs.dll es comúnmente utilizada para realizar el volcado de la memoria de un proceso. Volcar la memoria de lsass.exe, permite a este grupo obtener acceso a los hashes de las credenciales de los usuarios.

process = «rundll32.exe» and command_line regex «(?i).*comsvcs\.dll, MiniDump.*»

– Volcado de la base de datos SAM (T1003.002).

Se puede realizar un volcado de la base de datos SAM (Security Account Manager) utilizando reg.exe save. Esto permitiría a los atacantes obtener los hashes de las credenciales de los usuarios. Además, la SAM se encripta con la SysKey.

Sin embargo, los atacantes pueden obtener esta clave realizando un volcado de la clave de registro SYSTEM. Por otro lado, también es interesante la clave SECURITY, ya que contiene los secretos LSA. Es por esto que, con esta consulta, buscamos volcados de cualquiera de estas tres claves.

process = «reg.exe» and command_line regex «(?i).* .*save.*(hklm|HKEY_LOCAL_MACHINE)\\(sam|security|system).*»

– Volcado de NTDS.dit (T1003.003).

El archivo C:\Windows\NTDS\Ntds.dit se encuentra en los controladores de dominio y contiene información de Directorio Activo, incluidas las credenciales de los usuarios. Se ha visto a este grupo utilizando ntdsutil.exe para exportar los datos de esta base de datos.

process = «reg.exe» and command_line regex «(?i).* .*save.*(hklm|HKEY_LOCAL_MACHINE)\\(sam|security|system).*»

TA0007: Descubrimiento

– Uso de forfiles para localizar archivos PDF, Excel o Word (T1083).

El comando forfiles puede utilizarse para buscar archivos concretos en el sistema, en base a un patrón determinado. Fancy Bear utiliza esta herramienta para buscar archivos PDF, Word y Excel que puedan contener información de interés.

process = «forfiles.exe» and command_line regex «(?i).*\.(xls|xlsx|doc|docx|pdf|ppt|pptx).*»

– Lectura de archivos de directorios con información sensible (T1083, T1518).

Esta consulta ha sido realizada en base al comportamiento del stealer SkinnyBoy, característico de este grupo. Este stealer abre archivos de multitud de carpetas diferentes. Por lo tanto, buscamos archivos no firmados que abran más de 5 de estas subcarpetas sensibles. Este comportamiento es típico de un stealer.

event_type = FILE_OPENED
and parent_process is not signed
and file_path REGEX «(?i)^(C:\\Users\\.*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Administrative Tools\\|C:\\Users\\.*\\AppData\\Roaming\\|C:\\Users\\.*\\AppData\\Roaming\\Microsoft\\Windows\\Templates\\|C:\\Users\\.*\\AppData\\Local\\Programs\\|C:\\Program Files( \(x86\))?\\)([a-zA-Z0-9\-\._]+)\\.*»
| set folder = regextract(file_path,»(?i)^(C:\\Users\\.*\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Administrative Tools\\[a-zA-Z0-9\-\._]+\\|C:\\Users\\.*\\AppData\\Roaming\\[a-zA-Z0-9\-\._]+\\|C:\\Users\\.*\\AppData\\Roaming\\Microsoft\\Windows\\Templates\\[a-zA-Z0-9\-\._]+\\|C:\\Users\\.*\\AppData\\Local\\Programs\\[a-zA-Z0-9\-\._]+\\|C:\\Program Files\\[a-zA-Z0-9\-\._]+|C:\\Program Files \(x86\)\\[a-zA-Z0-9\-\._]+)\\.*»),1)
| counter = count_distinct(folder) by host, parent_process_pid
| where counter > 5

TA0008: Movimiento lateral

– Envío de archivos maliciosos a través de SMB (T1548.002).

Utilizan SMB para enviar malware a través de las máquinas de la red. Esto les permite moverse lateralmente dentro de la misma. Recordemos que los puertos comúnmente utilizados por SBM son el 445 y el 139. Por lo tanto, podemos buscar la creación de archivos sospechosos enviados a través de estos puertos:

event_type = NETWORK_INBOUND and local_port in (445,139)
| join (event_type = FILE_CREATED and file_extension in («exe», «dll», «bat», «vbs») by endpoint_id
| where time_difference (t1, t2) < 5seg

– Uso de net para mapear un recurso compartido como un disco (T1021.002).

Fancy Bear ha utilizado credenciales de usuario para mapear un recurso compartido como un disco, utilizando comandos similares a: net use [A-Z]: \\{recurso_compartido}

process in («net.exe», «net1.exe») and command_line regex «(?i).*net.*use.*[A-Z]:.*\\\\.*»

TA0009: Recolección

– Capturas de pantalla en la máquina víctima (T1113).

Con el objetivo de robar información, Fancy Bear, una vez se encuentra dentro del sistema objetivo, realiza capturas de pantalla.

Existen numerosas herramientas para realizar esto, pero cabe destacar que pueden realizarse capturas de pantalla a través de PowerShell y de NirCmd. En base a esto, se ha desarrollado la siguiente consulta:

event_type = FILE_CREATED and parent_process in («powershell.exe», «nircmd.exe») and file_path regex «.*\.(png|jpeg|jpg|svg|bmp)$»

– Almacenamiento de la información robada en un archivo TMP en %ALLUSERSPROFILE% (T1074.001).

Fancy Bear guarda toda la información robada de la víctima en un archivo temporal en C:\ProgramData\. Posteriormente, realizará el exfiltrado de esta información.

event_type = FILE_CREATED and file_path regex «(?i)^C:\\ProgramData\\[\w\s\_]+\.tmp$»

TA0010: Exfiltración

– División de los archivos en fragmentos de menos de 1MB (T1030).

Antes de realizar la exfiltración de la información, Fancy Bear divide los archivos con la información recolectada en fragmentos de menos de 1MB.

event_type = FILE_CREATED and file_path regex «(?i)^[A-Z]:(\\Windows\\|\\Users\\[\w\s\.]+\\AppData\\|\\ProgramData\\|\\)[\w\s\.\_]+\.\w+» and file_size < 1MB
| count as created_files by parent_pid, endpoint_id
| where created files > 5

– Exfiltración de datos utilizando Google Drive (T1567.002).

Se ha visto a Fancy Bear utilizando Google Drive como almacenamiento en la nube al que enviar la información previamente recolectada. Para detectar esta posible exfiltración, podemos basarnos en un estudio de volumetría: buscar desviaciones respecto al patrón habitual de nuestra empresa.

La siguiente consulta nos permite realizar una gráfica que representa la cantidad de bytes enviados a Google Drive cada día durante un mes. Si encontramos un día con una gran cantidad de bytes enviados, podría tratarse de un intento de exfiltración de información.

event_type = NETWORK_CONNECTION and URL contains any («drive.google.com», «www.googleapis.com»)
| sum (bytes_uploaded) by date

Se ha visto a Fancy Bear utilizando Google Drive como almacenamiento en la nube

TA0011: Comando y control

– Uso de Google Drive como servidor de Comando y Control (C2) (T1102.002).

Para ejecutar comandos en la máquina víctima, enviados desde su servidor C2, utilizan la API de Google Drive. Cada 20min, el malware instalado en la víctima busca archivos con nombre determinado en Google Drive (cmd_{ID de la víctima}), que contendrán los comandos a ejecutar [3]. Con esta consulta, buscamos accesos a esta API desde procesos sospechosos.

event_type = NETWORK_CONNECTION
and URL contains «www.googleapis.com/upload/drive»
and parent_process not in («msedge.exe», «chrome.exe», «firefox.exe», «opera.exe», «iexplore.exe», «GoogleUpdate.exe», «OUTLOOK.EXE»)

Este post es un resumen de la charla Fancy Bears and Where To Find Them, presentada en la RootedCON 2023 por Ana Junquera Méndez.

Bibliografía

[1] SOCRadar, «Spain: Threat Landscape Report,» 2022.

[2] S. Gatlan, «Microsoft fixes Outlook zero-day used by Russian hackers since April 2022,» 2023. [Online]. Available: https://www.bleepingcomputer.com/news/microsoft/microsoft-fixes-outlook-zero-day-used-by-russian-hackers-since-april-2022/. [Accessed 20 marzo 2023].

[3] F. Hacquebord and A. Remorin, «Pawn Storm’s Lack of Sophistication as a Strategy,» 2020. [Online]. Available: https://www.trendmicro.com/en_us/research/20/l/pawn-storm-lack-of-sophistication-as-a-strategy.html. [Accessed 21 marzo 2023].

[4] NSA, CISA, FBI, & NCSC, «Russian GRU Conducting Global Brute Force Campaign to Compromise Enterprise and Cloud Environments,» 2021.

[5] FireEye, «APT28: A window into Russia’s cyber espionage operations,» 2014.

[6] FireEye, «APT28: At the center of the storm,» 2017.

[7] Perception Point, «Incident Report: AP28 – Fancy Bear,» 2019. [Online]. Available: https://perception-point.io/blog/incident-report-ap28-fancy-bear/. [Accessed 20 marzo 2023].

[8] R. Falcone, «Technical Walkthrough: Office Test Persistence Method Used In Recent Sofacy Attacks,» 2016. [Online]. Available: https://unit42.paloaltonetworks.com/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/. [Accessed 20 marzo 2023].

[9] CyberMasterV, «A Step-By-Step Analysis Of The New Malware Used By APT28/Sofacy Called SkinnyBoy,» 2021. [Online]. Available: https://cybergeeks.tech/skinnyboy-apt28/. [Accessed 20 marzo 2023].

[10] Crowdstrike, «Who is FANCY BEAR (APT28)?,» 2019. [Online]. Available: https://www.crowdstrike.com/blog/who-is-fancy-bear/. [Accessed 20 marzo 2023].

[11] ESET Research, «Sednit update: Analysis of Zebrocy,» 2018. [Online]. Available: https://www.welivesecurity.com/2018/04/24/sednit-update-analysis-zebrocy/. [Accessed 20 marzo 2023].

[12] ESET Research, «LoJax: primer rootkit de UEFI en uso que se descubre, cortesía del grupo Sednit,» 2018. [Online]. Available: https://www.welivesecurity.com/la-es/2018/09/27/lojax-primer-rootkit-uefi-en-uso-cortesia-grupo-sednit/. [Accessed 20 marzo 2023].