NTLM Pass-the-hash false positives - Successful Remote Logon Detected

464 views
Skip to first unread message

Andrehens Chicfici

unread,
Aug 23, 2024, 3:08:42 AM8/23/24
to Wazuh | Mailing List
Hey,

I'm getting a lot of false positives for NTLM pass-the-hash attacks with the default 0840-win_event_channel.xml ruleset. RuleID in this ruleset is 92657:

"Successful Remote Logon Detected - User:win.eventdata.subjectDomainName \win.eventdata.targetUserName - NTLM authentication, possible pass-the-hash attack - Possible RDP connection. Verify that win.eventdata.workstationName is allowed to perform RDP connections"

Those events occure throughout the day with all users in my domain although we use NTLM2 on our clients - not NTLM(1).
I don't want to disable this rule because I want to get alerted when there is a real NTLM pass-the-hash attack. Do I need to modify this rule to be compatible with NTLM2?

I'm still not sure whether it's our clients triggering this event or some other services dug deep inside our systems because I am not able to trigger this event manually. It doesn't happen when our users logging in on their clients. RDP is activated but our users are not allowed to use it. It's just the admins that are able to RDP to the clients to maintain them. Ideally the rule gets triggered when there is a real NTLM-attack on one of the admin-accounts.

tl:dr
Is this a bug/misconfiguration within wazuh or my rule?
Are there any other users of this community that are seeing those false positives?
How can I figure out what process/program is triggering this event to get more infos about this alert?
Do I need to modify the rule/ruleset to use it with NTLM2?


The rule from the ruleset 0840-win_event_channel (not modified):


  <rule id="92657" level="6">
    <if_sid>92652</if_sid>
    <field name="win.eventdata.workstationName" type="pcre2">.+</field>
    <description>Successful Remote Logon Detected - User:$(win.eventdata.subjectDomainName)\$(win.eventdata.targetUserName) - NTLM authentication, possible pass-the-hash attack - Possible RDP connection. Verify that $(win.eventdata.workstationName) is allowed to perform RDP connections</description>
    <mitre>
      <id>T1550.002</id>
      <id>T1078.002</id>
      <id>T1021.001</id>
    </mitre>
    <group>


Cheers
chic

Emiliano Zorn

unread,
Aug 23, 2024, 4:48:24 AM8/23/24
to Wazuh | Mailing List
Hello Andrehens!

Just to clarify, the one that determines the type of connection is the parent rule:

<rule id="92652" level="6"> <if_sid>92651</if_sid> <field name="win.eventdata.authenticationPackageName" type="pcre2">NTLM</field> <description>Successful Remote Logon Detected - User:$(win.eventdata.subjectDomainName)\$(win.eventdata.targetUserName) - NTLM authentication, possible pass-the-hash attack.</description> <mitre> <id>T1550.002</id> <id>T1078.002</id> </mitre> <group>authentication_success,gdpr_IV_32.2,gpg13_7.1,gpg13_7.2,hipaa_164.312.b,nist_800_53_AC.7,nist_800_53_AU.14,pci_dss_10.2.5,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
</rule>

As you can see on the rule, it has the following information on it:

"win.eventdata.authenticationPackageName" = NTLM

So the rule triggers based on that type of authentication and also, the parent of 92652 is the one that is triggered based on a remote connection:

<rule id="92651" level="0"> <if_sid>60106</if_sid> <field name="win.eventdata.ipAddress" type="pcre2">(?:[0-9]{1,3}\.){3}[0-9]{1,3}</field> <field name="win.eventdata.ipAddress" type="pcre2" negate="yes">127\.0\.0\.1</field> <description>Successful Remote Logon by user:$(win.eventdata.targetDomainName)\$(win.eventdata.targetUserName) from $(win.eventdata.ipAddress).</description> <mitre> <id>T1078</id> </mitre> <group>authentication_success,gdpr_IV_32.2,gpg13_7.1,gpg13_7.2,hipaa_164.312.b,nist_800_53_AC.7,nist_800_53_AU.14,pci_dss_10.2.5,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
</rule>

Based on the information provided to understand the background and sequence of alerts, if you want to modify the levels or avoid false positives, you can follow the steps outlined in this issue.

Andrehens Chicfici

unread,
Aug 23, 2024, 5:08:18 AM8/23/24
to Wazuh | Mailing List
Thanks Emiliano!

I stumbled onto this github issue while researching for my problem but my brain was not able to connect those...
I integrated this change to the ruleset and will monitor it over the weekend!

Cheers chic
Message has been deleted

Andrehens Chicfici

unread,
Aug 23, 2024, 6:32:01 AM8/23/24
to Wazuh | Mailing List

I watched it over the last hour and I am already getting new messages with the same results. I will add a censored .json to give more details:

"agent": {
"ip": "10.xxx.0.xxx",
"name": "DC-X",
"id": "129"
},
"manager": {
"name": "wazuh"
},
"data": {
"win": {
"eventdata": {
"subjectLogonId": "0x0",
"targetLinkedLogonId": "0x0",
"impersonationLevel": "%%1833",
"ipAddress": "10.xxx.xxx.xxx",
"authenticationPackageName": "NTLM",
"workstationName": "REDACTED",
"lmPackageName": "NTLM V2",
"targetLogonId": "0x33xxx0",
"logonProcessName": "NtLmSsp",
"logonGuid": "{00000000-0000-0000-0000-000000000000}",
"targetUserName": "USER",
"keyLength": "128",
"elevatedToken": "%%1843",
"subjectUserSid": "S-1-0-0",
"processId": "0x0",
"ipPort": "58917",
"targetDomainName": "DOMAIN",
"targetUserSid": "S-X-5-21-11XXX2557-634XXXX7X-15378XXX43-10XXX",
"virtualAccount": "%%1843",
"logonType": "3"
},
"system": {
"eventID": "4624",
"keywords": "0x8020000000000000",
"providerGuid": "{5XXXX625-XXXX-4994-XXba-3e3XX328c30d}",
"level": "0",
"channel": "Security",
"opcode": "0",
"message": "\"Ein Konto wurde erfolgreich angemeldet.\r\n\r\nAntragsteller:\r\n\tSicherheits-ID:\t\tS-1-0-0\r\n\tKontoname:\t\t-\r\n\tKontodomäne:\t\t-\r\n\tAnmelde-ID:\t\t0x0\r\n\r\nAnmeldeinformationen:\r\n\tAnmeldetyp:\t\t3\r\n\tEingeschränkter Administratormodus:\t-\r\n\tVirtuelles Konto:\t\tNein\r\n\tToken mit erhöhten Rechten:\t\tNein\r\n\r\nIdentitätswechselebene:\t\tIdentitätswechsel\r\n\r\nNeue Anmeldung:\r\n\tSicherheits-ID:\t\tS-1-5-21-1XXXX42557-6XXXX8271-1XXXXXXX43-10XXX\r\n\tKontoname:\t\tUSER\r\n\tKontodomäne:\t\tDOMAIN\r\n\tAnmelde-ID:\t\t0x33XXXX0\r\n\tVerknüpfte Anmelde-ID:\t\t0x0\r\n\tNetzwerk-Kontoname:\t-\r\n\tNetzwerk-Kontodomäne:\t-\r\n\tAnmelde-GUID:\t\t{00000000-0000-0000-0000-000000000000}\r\n\r\nProzessinformationen:\r\n\tProzess-ID:\t\t0x0\r\n\tProzessname:\t\t-\r\n\r\nNetzwerkinformationen:\r\n\tArbeitsstationsname:\tCLIENT-1\r\n\tQuellnetzwerkadresse:\t10.XXX.XXX.XXX\r\n\tQuellport:\t\t58917\r\n\r\nDetaillierte Authentifizierungsinformationen:\r\n\tAnmeldeprozess:\t\tNtLmSsp \r\n\tAuthentifizierungspaket:\tNTLM\r\n\tÜbertragene Dienste:\t-\r\n\tPaketname (nur NTLM):\tNTLM V2\r\n\tSchlüssellänge:\t\t128\r\n\r\nDieses Ereignis wird beim Erstellen einer Anmeldesitzung generiert. Es wird auf dem Computer generiert, auf den zugegriffen wurde.\r\n\r\nDie Antragstellerfelder geben das Konto auf dem lokalen System an, von dem die Anmeldung angefordert wurde. Dies ist meistens ein Dienst wie der Serverdienst oder ein lokaler Prozess wie \"Winlogon.exe\" oder \"Services.exe\".\r\n\r\nDas Anmeldetypfeld gibt den jeweiligen Anmeldetyp an. Die häufigsten Typen sind 2 (interaktiv) und 3 (Netzwerk).\r\n\r\nDie Felder für die neue Anmeldung geben das Konto an, für das die neue Anmeldung erstellt wurde, d. h. das angemeldete Konto.\r\n\r\nDie Netzwerkfelder geben die Quelle einer Remoteanmeldeanforderung an. Der Arbeitsstationsname ist nicht immer verfügbar und kann in manchen Fällen leer bleiben.\r\n\r\nDas Feld für die Identitätswechselebene gibt an, in welchem Umfang ein Prozess in der Anmeldesitzung einen Identitätswechsel vornehmen kann.\r\n\r\nDie Felder für die Authentifizierungsinformationen enthalten detaillierte Informationen zu dieser speziellen Anmeldeanforderung.\r\n\t- Die Anmelde-GUID ist ein eindeutiger Bezeichner, der verwendet werden kann, um dieses Ereignis mit einem KDC-Ereignis zu korrelieren.\r\n\t- Die übertragenen Dienste geben an, welche Zwischendienste an der Anmeldeanforderung beteiligt waren.\r\n\t- Der Paketname gibt das in den NTLM-Protokollen verwendete Unterprotokoll an.\r\n\t- Die Schlüssellänge gibt die Länge des generierten Sitzungsschlüssels an. Wenn kein Sitzungsschlüssel angefordert wurde, ist dieser Wert 0.\"",
"version": "2",
"systemTime": "2024-08-23T09:38:50.9746870Z",
"eventRecordID": "6313246",
"threadID": "2484",
"computer": "DC-X.DOMAIN.local",
"task": "12544",
"processID": "676",
"severityValue": "AUDIT_SUCCESS",
"providerName": "Microsoft-Windows-Security-Auditing"
}
}
},
"rule": {
"mail": false,
"level": 6,
"hipaa": [
"164.312.b"
],
"pci_dss": [
"10.2.5"
],
"tsc": [
"CC6.8",
"CC7.2",
"CC7.3"
],
"description": "Successful Remote Logon Detected - User:\\USER- NTLM authentication, possible pass-the-hash attack.",
"groups": [
"win_evt_channel",
"windows",
"authentication_success"
],
"nist_800_53": [
"AC.7",
"AU.14"
],
"gdpr": [
"IV_32.2"
],
"firedtimes": 954,
"mitre": {
"technique": [
"Pass the Hash",
"Domain Accounts"
],
"id": [
"TXXXX.002",
"TXXXX.002"
],
"tactic": [
"Defense Evasion",
"Lateral Movement",
"Persistence",
"Privilege Escalation",
"Initial Access"
]
},
"id": "92652",
"gpg13": [
"7.1",
"7.2"
]
},
"decoder": {
"name": "windows_eventchannel"
},
"full_log": "{\"win\":{\"system\":{\"providerName\":\"Microsoft-Windows-Security-Auditing\",\"providerGuid\":\"{5XXX25-XXXX-4994-XXXX-3e3b0328XXXX}\",\"eventID\":\"4624\",\"version\":\"2\",\"level\":\"0\",\"task\":\"12544\",\"opcode\":\"0\",\"keywords\":\"0x8020000000000000\",\"systemTime\":\"2024-08-23T09:38:50.9746870Z\",\"eventRecordID\":\"6313246\",\"processID\":\"676\",\"threadID\":\"2484\",\"channel\":\"Security\",\"computer\":\"DC-X.DOMAIN.local\",\"severityValue\":\"AUDIT_SUCCESS\",\"message\":\"\\\"Ein Konto wurde erfolgreich angemeldet.\\r\\n\\r\\nAntragsteller:\\r\\n\\tSicherheits-ID:\\t\\tS-1-0-0\\r\\n\\tKontoname:\\t\\t-\\r\\n\\tKontodomäne:\\t\\t-\\r\\n\\tAnmelde-ID:\\t\\t0x0\\r\\n\\r\\nAnmeldeinformationen:\\r\\n\\tAnmeldetyp:\\t\\t3\\r\\n\\tEingeschränkter Administratormodus:\\t-\\r\\n\\tVirtuelles Konto:\\t\\tNein\\r\\n\\tToken mit erhöhten Rechten:\\t\\tNein\\r\\n\\r\\nIdentitätswechselebene:\\t\\tIdentitätswechsel\\r\\n\\r\\nNeue Anmeldung:\\r\\n\\tSicherheits-ID:\\t\\tS-1-5-21-1151942557-634218271-1537874043-10363\\r\\n\\tKontoname:\\t\\tUSER\\r\\n\\tKontodomäne:\\t\\tDOMAIN\\r\\n\\tAnmelde-ID:\\t\\t0x33CBAB0\\r\\n\\tVerknüpfte Anmelde-ID:\\t\\t0x0\\r\\n\\tNetzwerk-Kontoname:\\t-\\r\\n\\tNetzwerk-Kontodomäne:\\t-\\r\\n\\tAnmelde-GUID:\\t\\t{00000000-0000-0000-0000-000000000000}\\r\\n\\r\\nProzessinformationen:\\r\\n\\tProzess-ID:\\t\\t0x0\\r\\n\\tProzessname:\\t\\t-\\r\\n\\r\\nNetzwerkinformationen:\\r\\n\\tArbeitsstationsname:\\tCLIENT-1\\r\\n\\tQuellnetzwerkadresse:\\t10.XXX.XXX.XXX\\r\\n\\tQuellport:\\t\\t58917\\r\\n\\r\\nDetaillierte Authentifizierungsinformationen:\\r\\n\\tAnmeldeprozess:\\t\\tNtLmSsp \\r\\n\\tAuthentifizierungspaket:\\tNTLM\\r\\n\\tÜbertragene Dienste:\\t-\\r\\n\\tPaketname (nur NTLM):\\tNTLM V2\\r\\n\\tSchlüssellänge:\\t\\t128\\r\\n\\r\\nDieses Ereignis wird beim Erstellen einer Anmeldesitzung generiert. Es wird auf dem Computer generiert, auf den zugegriffen wurde.\\r\\n\\r\\nDie Antragstellerfelder geben das Konto auf dem lokalen System an, von dem die Anmeldung angefordert wurde. Dies ist meistens ein Dienst wie der Serverdienst oder ein lokaler Prozess wie \\\"Winlogon.exe\\\" oder \\\"Services.exe\\\".\\r\\n\\r\\nDas Anmeldetypfeld gibt den jeweiligen Anmeldetyp an. Die häufigsten Typen sind 2 (interaktiv) und 3 (Netzwerk).\\r\\n\\r\\nDie Felder für die neue Anmeldung geben das Konto an, für das die neue Anmeldung erstellt wurde, d. h. das angemeldete Konto.\\r\\n\\r\\nDie Netzwerkfelder geben die Quelle einer Remoteanmeldeanforderung an. Der Arbeitsstationsname ist nicht immer verfügbar und kann in manchen Fällen leer bleiben.\\r\\n\\r\\nDas Feld für die Identitätswechselebene gibt an, in welchem Umfang ein Prozess in der Anmeldesitzung einen Identitätswechsel vornehmen kann.\\r\\n\\r\\nDie Felder für die Authentifizierungsinformationen enthalten detaillierte Informationen zu dieser speziellen Anmeldeanforderung.\\r\\n\\t- Die Anmelde-GUID ist ein eindeutiger Bezeichner, der verwendet werden kann, um dieses Ereignis mit einem KDC-Ereignis zu korrelieren.\\r\\n\\t- Die übertragenen Dienste geben an, welche Zwischendienste an der Anmeldeanforderung beteiligt waren.\\r\\n\\t- Der Paketname gibt das in den NTLM-Protokollen verwendete Unterprotokoll an.\\r\\n\\t- Die Schlüssellänge gibt die Länge des generierten Sitzungsschlüssels an. Wenn kein Sitzungsschlüssel angefordert wurde, ist dieser Wert 0.\\\"\"},\"eventdata\":{\"subjectUserSid\":\"S-1-0-0\",\"subjectLogonId\":\"0x0\",\"targetUserSid\":\"S-1-5-21-XXXXX42557-XXXXX8271-15378XXXXX-XXXXX\",\"targetUserName\":\"USER\",\"targetDomainName\":\"DOMAIN\",\"targetLogonId\":\"0x33cbab0\",\"logonType\":\"3\",\"logonProcessName\":\"NtLmSsp\",\"authenticationPackageName\":\"NTLM\",\"workstationName\":\"CLIENT-1\",\"logonGuid\":\"{00000000-0000-0000-0000-000000000000}\",\"lmPackageName\":\"NTLM V2\",\"keyLength\":\"128\",\"processId\":\"0x0\",\"ipAddress\":\"10.XXX.XXX.XXX\",\"ipPort\":\"58917\",\"impersonationLevel\":\"%%1833\",\"virtualAccount\":\"%%1843\",\"targetLinkedLogonId\":\"0x0\",\"elevatedToken\":\"%%1843\"}}}",
"input": {
"type": "log"
},
"@timestamp": "2024-08-23T09:38:51.477Z",
"location": "EventChannel",
"id": "1724405931.530350796",
"timestamp": "2024-08-23T11:38:51.477+0200",
"_id": "XXXXXXXXmb3dIRDXXXXX" }
Reply all
Reply to author
Forward
0 new messages