Plutôt que de lire des bêtises sur Silicon.fr et son code fantaisiste 4272, jetez plutôt un œil sur l’article de blog de Secura : Instantly Become Domain Admin by Subverting Netlogon Cryptography ou téléchargez le rapport Zerologon by Secura
Autres sources d’inspiration:
la base : le site de l’ANSSI qui explique :
Il est possible, dans certaines conditions, de détecter une tentative d’exploitation qui aurait pu subvenir avant application du correctif de Microsoft, grâce aux journaux générés par Windows.
Pour cela, la politique d’audit « Gestion du compte > Auditer la gestion des comptes d’ordinateur » [2] doit être activée sur les contrôleurs de domaine. Les événements « Un compte d’ordinateur a été modifié », dont l’identifiant est 4742, sont ainsi générés dans le journal de sécurité.
De tels événements sont générés de manière légitime lorsqu’un compte d’ordinateur renouvelle son mot de passe. Néanmoins, l’attaque Zerologon conduit aux spécificités suivantes :
le champ SubjectUserName est « ANONYMOUS LOGON » ;
le champ TargetUserName est le compte machine d’un contrôleur de domaine.
Zerologon Detection (CVE-2020-1472) qui propose la règle suivante : Primary Search for Local Domain Controller Exploitation by Zerologon
index= »<windows_index> » (sourcetype= »<windows_sourcetype_security> » OR source= »windows_source_security ») EventCode= »4742″ OR EventCode= »4624″ AND (src_user= »*anonymous* » OR member_id= »*S-1-0* »)
`comment(« This looks for all 4624 and 4742 events under an ‘ANONYMOUS USER’, which are tied to the exploitation of Zerologon »)`
| eval local_system=mvindex(upper(split(user, »$ »)),0)
`comment(« This effectively splits the user field, which when parsed with the TA for Windows, may also appear as the Target User. Since the exploit would specifically occur using a local account on the Domain Controller, it stands to reason that detecting a modified user object, modified by a local system account, would be evidence of the exploit. The split removes the ‘$’, creating a new field, deriving the local_system name via the original user field [ie. user=’NameOfDC$’ would become local_system=’NameofDC’] »)`
| search host=local_system
`comment(« A search to only find instances of these events when the host (DC) is the same as the extracted local_system account name performing the action »)`
| table _time EventCode dest host ComputerName src_user Account_Name local_system user Security_ID member_id src_nt_domain dest_nt_domain
Ressources complémentaires :
ZeroLogon testing script
A Python script that uses the Impacket library to test vulnerability for the Zerologon exploit (CVE-2020-1472).
It attempts to perform the Netlogon authentication bypass. The script will immediately terminate when successfully performing the bypass, and not perform any Netlogon operations. When a domain controller is patched, the detection script will give up after sending 2000 pairs of RPC calls and conclude the target is not vulnerable (with a false negative chance of 0.04%).