af Bhabesh Raj Rai, Associate Security Analytics Engineer

På Patch Tuesday i juni 2021 rettede Microsoft en Print Spooler sårbarhed CVE-2021-1675 i Windows. Samtidig var en lignende sårbarhed, der blev døbt PrintNightmare, allerede opdaget, og dets proof-of-concept (PoC) blev fejlagtigt frigivet. Forvirringen gjorde PrintNightmare til en zero-day-udnyttelse. Flere PrintNightmare PoC-udnyttelser er nu i cirkulation, hvilket giver enhver autentificeret bruger mulighed for at opnå SYSTEM-rettigheder på systemer, der kører Print Spooler-service.

Oprindeligt kategoriseret som en sårbarhed med eskalering af privilegier med lav sværhedsgrad. Den 28. juni øgede Microsoft sværhedsgraden af CVE-2021-1675 til kritisk, fordi fejlen muliggjorde fjernkodeudførelse. Samtidig muliggør PrintNightmare også fjernkodeudførelse, hvilket yderligere bidrog til forvirringen mellem CVE-2021-1675 og PrintNightmare

Begge fejl er meget alvorlige, fordi Print Spooler-servicen som standard er aktiveret med undtagelse af serverkernen. Domænecontrollere forbliver hovedmål for sårbarheden, da de kan muliggøre fuld domænekompromittering.

Sårbarheden i PrintNightmare opstår, fordi enhver autentificeret bruger kan installere en ny printerdriver og angive en driverfil, der er placeret på en fjernserver. Print Spooler servicen eksekverer således kode i en vilkårlig DLL (forklædt som en printerdriver) med SYSTEM-privilegier. Trusselsaktører er sandsynligvis i den syvende himmel på grund af tilgængeligheden af flere fungerende PoC’er, hvilket forværres af forvirringen i sikkerhedssamfundet vedrørende CVE-2021-1675 og PrintNightmare.

Da der ikke er nogen programrettelse, anbefaler vi at deaktivere Print Spooler-servicen på unødvendige maskiner. Administratorer kan bruge Group Policy Preferences (GPP) til at deaktivere Print Spooler på maskiner på tværs af domænet. Det er vigtigt at bemærke, at små organisationer normalt konfigurerer deres domænecontrollere til også at fungere som printservere, hvilket gør det umuligt for dem at deaktivere printspolerservice, da det vil hindre deres daglige forretningsdrift. Hvis Print Spooler skal køre på nogle servere, kan administratorer overføre printservervagten fra domænecontrolleren til en separat server. Risikoen for at køre printservice på domænecontrollere er for høj og kan ikke retfærdiggøres.

Forberedelse af dine logkilder

Det mest solide bevis for at opdage udnyttelsen af fejlen kræver hændelser fra kanalerne Microsoft-Windows-PrintServer/Admin og Microsoft-Windows-PrintServer/Operational. Du skal aktivere sidstnævnte manuelt. Først udarbejdes planer med administratorer for at begynde at videresende logfiler fra ovennævnte kilder til LogPoint. Hvis du har installeret Sysmon i miljøet, anbefaler vi også administratorer at opdatere konfigurationen for at sikre, at Sysmon kan fange PrintNightmares artefakter. Endelig kan du også bruge IDS/IPS-hændelser til at indsamle netværksartefakter fra PrintNightmare.

Data Sources PrintNightmare

Registrering af udnyttelsesartefakter i LogPoint

Vi kan detektere PrinteNightmare-artefakter fra enten eksterne computerenheder eller netværkshændelser. Som tidligere nævnt kræver den mest pålidelige måde at registrere udnyttelsen på at søge efter hændelses-id’er som 808 og 316. I begge tilfælde kan vi observere navnet på den ondsindede DLL, der indlæses af printspolertjenesten. I vores test genereres Event ID 808 ikke altid, og selv når den genereres, blev den ondsindede DLL indlæst.

norm_id=WinServer event_source="Microsoft-Windows-PrintService" event_id=808

A failed load of a printer plugin

Du kan søge efter hændelser, der viser en mislykket indlæsning af et printer-plugin.

norm_id=WinServer event_source="Microsoft-Windows-PrintService" event_id=316

events showing the addition or update of printer drivers

Du kan søge efter begivenheder, der viser tilføjelse eller opdatering af printerdrivere.

Ved hjælp af Sysmons filoprettelseshændelser kan vi søge efter frafald af DLL’er i Print Spoolers drivermappe.

norm_id=WindowsSysmon event_id=11
path="C:\Windows\System32\spool\drivers\x64\3\*"

DLLs in Print Spooler's driver directory

Du kan søge efter frafald af DLL’er i Print Spoolers drivermappe.

De droppede DLL’er indlæses efterfølgende af Print Spooler-processen (spoolsv.exe) som set fra Sysmons billedindlæsningshændelser.

norm_id=WindowsSysmon label=Image label=Load
source_image="*\spoolsv.exe"
image="C:\Windows\System32\spool\drivers\x64\3\*"

loading of DLLs from Print Spooler's driver directory

Du kan se efter indlæsning af DLL’er fra Print Spoolers driverkatalog.

De indlæste DLL’er vises også på udskriftsspoolers registreringsdatabase stier set fra Sysmon’s registerhændelser.

norm_id=WindowsSysmon label=Registry label=Set
target_object IN ["*\Configuration File*", "*\Data File"] | chart count() by host, image, target_object, detail

newly loaded DLLs from Print Spooler's registry location

Du kan søge efter indlæsning af DLL’er fra Print Spoolers drivermappe.

Endelig slettes DLL’erne som set fra Sysmons filsletningshændelser.

norm_id=WindowsSysmon event_id IN [23, 26] source_image="*\spoolsv.exe" image="C:\Windows\System32\spool\drivers\x64\3\*"

Mens den nye Sysmon-konfiguration sendes til miljøet, kan vi også bruge native Windows-hændelser til at lede efter mulig udnyttelse. Vi kan enten søge efter WerFault.exe ved hjælp af Print Spooler-tjenesten eller den uventede opsigelse af Print Spooler-tjenesten. Vi kan bruge native Windows-hændelser, fordi Print Spooler-tjenesten vil generere en fejl under indlæsningen af payload DLL. Det skal bemærkes, at vellykket sidebelastning af DLL vil omgå denne adfærd.

((norm_id=WindowsSysmon label="Process" label=Create
parent_image="*\spoolsv.exe" image="*\WerFault.exe")
OR (norm_id=WinServer channel=System event_id=7031
message="The Print Spooler service terminated unexpectedly"))
| timechart count() by event_id, host

error generated by the Print Spooler service

Se efter en fejl genereret af Print Spooler-tjenesten for at identificere vellykket udnyttelse samt for at indsnævre tidsintervallet, hvis hændelser fra Print Service eller Sysmon ikke er tilgængelige.

Alternativt kan vi også bruge generisk udnyttelsesdetektion ved at søge efter mistænkelige processer i Print Spooler-tjenesten.

norm_id=WindowsSysmon label="Process" label=Create
parent_image="*\spoolsv.exe" image IN ["*\cmd.exe", "*\powershell.exe", "*\rundll32.exe"]

Fra netværkssiden skal vi se efter overførsel af nyttelast-DLL via SMB, hvilket er nemt, hvis du har IDS/IPS som Snort og Zeek (Bro) i miljøet.

norm_id IN [Snort, SuricataIDS] (message="ET POLICY SMB2 NT Create AndX Request For a DLL File - Possible Lateral Movement"
OR signature="ET POLICY SMB2 NT Create AndX Request For a DLL File - Possible Lateral Movement")

norm_id=BroIDS event_category=files
(file="*.DLL" OR mime_type="application/x-dosexec")

for the transfer of DLLs via SMB

Hvis du har et IDS eller IPS, kan du søge efter overførsel af DLL’er via SMB.

I begge ovenstående forespørgsler kan vi indsnævre dem yderligere ved specifikt at søge efter domænecontrollere som destinationen, men det er måske ikke altid tilfældet.

Vi skal huske, at PrintNightmare også kan bruges til eskalering af lokale privilegier (LPE), som for eksempel ved hjælp af PowerShell PoC til at oprette en lokal administratorbruger, der omgår behovet for eksterne RPC- eller SMB-protokoller. Administratorer rådes til at kigge efter nye brugeres lokale kreationer efter genereringen af nogen af PrintNightmare-artefakterne som vist nedenfor.

[ norm_id=WindowsSysmon label=Registry label=Set
target_object IN ["*\Configuration File*", "*\Data File"]] as s1 followed by [ label=Create label=User ] as s2 on s1.host=s2.host
| chart count() by s1.host, s1.image, s1.target_object, s1.detail, s2.target_user

New user creations following the addition of new entries in Print Spooler's registry location

Sysmon-konfiguration er nøglen til at registrere udnyttelse

Man kan nemt se, hvordan vi har brugt Sysmon til at detektere forskellige artefakter, der er genereret af PrintNightmare. Overse ikke betydningen af Sysmon i dagens trusselslandskab. Du kan bruge Sysmon til at berige de grundlæggende Windows-hændelseslogs ved at supplere eksisterende kilder som f.eks. procesoprettelse samt tilføje understøttelse af nye datakilder som f.eks. ledningsoprettelser, der er afgørende for at registrere trusler i det aktuelle landskab. Men konfigurationen af Sysmon er stadig et spil med en fin balance mellem at registrere en lang række hændelser og undgå, at loggen oversvømmes. Det hele koger ned til korrekt konfigurering af regler i Sysmon-konfigurationen, der er specifikt skræddersyet til det miljø, hvor du vil implementere det.

SwiftOnSecuritys Sysmon-konfiguration er stadig et af de bedste udgangspunkter for at begynde at konfigurere Sysmon, der er skræddersyet til ens miljø. Sysmon-konfigurationen skal indeholde regler til registrering af vigtige hændelser såsom tab af DLL’er og EXE’er, men også en udelukkelse af legitime applikationer, der er meget støjende, såsom indbyggede systemprocesser såsom svchost, AV’er, EDR’er, sårbarhedsscannere og databaser såsom MSSQL. Start med at udrulle basiskonfigurationen på udvalgte systemer, og overvåg logvolumen. Start derefter opsætning af udelukkelser for støjende hændelser i konfigurationen. Gentag denne proces, indtil SIEM’ens lager kan håndtere logvolumen, når det udrulles til alle systemerne i miljøet.

Nye Sysmon-versioner introducerer nye hændelser, så sørg for at opfylde den minimumsversion af Sysmon, der kræves for at generere hændelser af interesse. Før du bruger en detektion, der er afhængig af Sysmon, skal du kontrollere, om den anvendte konfiguration kan generere de hændelser, der kræves af detektionen. Blinde vinkler i Sysmons konfiguration er en almindelig hændelse, som du skal undgå ved hjælp af strenge tests, før systemet implementeres fuldt ud i miljøet.

Forbered dig til trusselaktørers brug af PrintNightmare

Da vi stadig ikke ved, hvornår Microsoft vil frigive en programrettelse til PrintNightmare, skal virksomhedsforsvarere forblive årvågne, da vi forventer, at trusselsaktører på alle niveauer begynder at udnytte sårbarheden til at forhøje privilegierne, når de har fået adgang til miljøet. Vi anbefaler at korrelere hændelser fra flere kilder for pålidelig detektion, hvilket ikke bør være et problem for virksomheder, der har implementeret en dybdegående forsvarstilgang.

Vi anbefaler på det kraftigste, at administratorer udfører en fuld jagt på udnyttelsesforsøg i hele virksomheden fra starten af juni, og at de foretager de nødvendige foranstaltninger, opfylder kravene til datakilder og hele tiden leder efter fremtidige udnyttelsesforsøg fra trusselsaktører, indtil Microsoft frigiver en programrettelse.

Kontakt LogPoint

Kontakt os og lær hvorfor markedsledende firmaer vælger LogPoint:

Kontakt LogPoint

Lær mere om Logpoint

Book en demo
Kundesager
Kunde anmeldelser