av Bhabesh Raj, Associate Security Analytics Engineer

På Patch Tuesday i juni 2021 åtgärdade Microsoft en sårbarhet i Print Spooler CVE-2021-1675 i Windows. Samtidigt hade en liknande sårbarhet, kallad PrintNightmare redan identifierats och dess Poc (Proof of Concept) släppts av av misstag. Förvirringen förvandlade i princip PrintNightmare till en zero-day-sårbarhet. Ett flertal PrintNightmare PoC sårbarheter cirkulerar för närvarande och låter icke behöriga användare få SYSTEM-åtkomst på system som kör utskriftstjänsten Print Spooler.

Sårbarheten kategoriserades ursprungligen som en privilegieeskaleringssårbarhet, men den 28 juni höjde Microsoft allvarlighetsgraden för CVE-2021-1675 till kritisk eftersom sårbarheten möjliggör fjärrexekvering av kod. PrintNightmare råkar samtidigt möjliggöra fjärrexekvering av kod, vilket har bidragit till att öka förvirringen avseende CVE-2021-1675 och PrintNightmare. 

Båda sårbarheterna är mycket allvarliga på grund av att utskriftstjänsten Print Spooler är aktiverad som standard med undantag för serverkärnan. Domänkontrollanter förblir det ultimata målet för sårbarheten eftersom de kan ge full åtkomst till en domän.

Sårbarheten i PrintNightmare bygger på faktumet att en behörig användare kan installera en ny skrivardrivrutin och ange en drivrutinsfil som finns lagrad på en fjärrserver. Utskriftstjänsten Print Spooler exekverar därigenom en godtycklig DLL-fil (förklädd till skrivardrivrutin) som har SYSTEM-behörighet. Hotaktörerna är förmodligen väldigt glada över att ha tillgång till ett flertal fungerande PoC:er och situationen har förvärrats av förvirringen inom säkerhetsbranschen vad gäller CVE-2021-1675 och PrintNightmare.

Eftersom det inte finns någon patch tillgänglig rekommenderar vi attutskriftstjänsten Print Spooler inaktiveras på maskiner som inte behöver den. Administratörer kan använda Group Policy Preferences (GPP) för att inaktivera Print Spooler på maskiner inom domänen. Det är viktigt att notera att mindre företag ofta konfigurerar sina domänkontrollanter så att de också fungerar som skrivarservrar, vilket gör det opraktiskt för dem att inaktivera Print Spooler eftersom detta sätter stopp för den dagliga verksamheten. Om Print Spooler behöver köras på vissa servrar kan administratörer flytta utskriftstjänsten från domänkontrollanten till en separat server. Riskerna i samband med att köra utskriftstjänster på en domänkontrollant är helt enkelt för höga.

Förbereda dina loggkällor

Den bästa metodiken för att identifiera exploatering av sårbarheten kräver insyn i händelseloggarna från Microsoft-Windows-PrintServer/Admin och Microsoft-Windows-PrintServer/Operational . Sistnämnda måste aktiveras manuellt. Börja med att planera med administratörerna för vidarebefordring av loggar från ovannämnda källor till LogPoint. Om du redan har Sysmon i miljön rekommenderar vi att du uppdaterar dina konfigurationer för att säkerställa att Sysmon kan registrera artefakter från PrintNightmare. Slutligen kan du även använda IDS/IPS-händelser för att registrera nätverksartefakter från PrintNightmare.

Data Sources PrintNightmare

Identifiera intrångsartefakter i LogPoint

Artefakter från PrinteNightmare kan identifieras antingen från slutpunkts- eller nätverkshändelser. Som tidigare sagt är det mest tillförlitliga sättet att identifiera intrång att söka efter Event ID-nummer som 808 och 316. I båda fallen kan namnet på den skadliga DLL-filen som lästs in av utskriftstjänsten Print Spooler identifieras. Enligt våra tester genereras inte alltid Event ID 808 och även när det genereras har den skadliga DLL-filen lyckats läsas in.

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

A failed load of a printer plugin

Sök efter händelser som visar misslyckad inläsning av plugin-händelser till skrivare.

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

events showing the addition or update of printer drivers

Sök också efter händelser som visar tillägg eller uppdateringar av skrivardrivrutiner.

Med hjälp av Sysmon:s registrering av händelser kan du söka efter misstänkt överföring av DLL-filer i drivrutinskatalogen för tjänsten Print Spooler.

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

DLLs in Print Spooler's driver directory

Du kan söka efter nedladdade DLL-filer i Print Spoolers drivrutinskatalog.

De nedladdade DLL-filerna blir sedan inlästa av Print Spooler-processen (spoolsv.exe) vilket kan ses i Image Load-händelerna i Sysmon.

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 leta efter inläsning av DLL-filer från Print Spoolers drivrutinkatalog.

De laddade DLL-filerna dyker också ut på utskriftsspoolers registervägar sett från Sysmons 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öka efter inläsning av DLL-filer från Print Spoolers drivrutinskatalog.

Slutligen raderas DLL-filerna, vilket kan ses i filborttagningshändelserna i Sysmon.

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

Under tiden som de nya Sysmon-konfigurationerna propageras till miljön kan du samtidigt utnyttja Windows-händelser för att söka efter eventuella intrång. Du kan antingen söka efter generering av WerFault.exe via tjänsten Print Spooler eller oväntade stopp av utskriftstjänsten Print Spooler. Vi kan använda inbyggda Windows-händelser eftersom tjänsten Print Spooler genererar ett fel vid inläsning av DLL-filen. dvs. nyttolasten (payload). Observera att framgångsrik sideloading av en DLL-fil kringgår detta mönster.

((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

Sök efter fel som genererats av tjänsten Print Spooler för att identifiera framgångsrik exploatering samt för att begränsa tidsintervallet om händelser från Print Service eller Sysmon inte finns tillgängliga.

Alternativt kan du utnyttja generisk intrångsdetektering genom att söka efter misstänkt generering av processer från utskriftstjänsten Print Spooler.

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

Från nätverkssidan ska du söka efter överföring av DLL-filer via SMB – vilket är enkelt om du har övervakningsverktyg som IDS/IPS som Snort och Zeek (Bro) i miljön.

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

Om du har en IDS eller IPS kan du söka efter överföring av DLL-filer via SMB.

I båda ovanstående exempel kan du smalna sökfältet genom att specifikt söka efter domänkontrollanter som destination – men så är inte alltid fallet.

Vi bör komma ihåg att PrintNightmare också kan användas för lokal privilegiereskalering (LPE) som till exempel att använda PowerShell PoC för att skapa en lokal administratörsanvändare som kringgår behovet av fjärr-RPC- eller SMB-protokoll. Administratörer rekommenderas att leta efter lokala skapelser av nya användare efter genereringen av någon av PrintNightmare-artefakterna som visas nedan.

[ 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

Konfiguration av Sysmon är nyckeln till att kunna identifiera intrång

Vi har använt Sysmon för att identifiera olika artefakter som genererats av PrintNightmare. Ta vara på funktionaliteten i Sysmon avseende dagens hotlandskap. Du kan använda Sysmon för att berika Windows grundläggande händelseloggar genom att komplettera befintliga källor som processkapande och lägga till stöd för nya datakällor som pipe-skapande som är avgörande för att upptäcka hot i det nuvarande landskapet. Konfiguration av Sysmon är dock en balansgång mellan att identifiera många typer av olika händelser och undvika att bli överöst av loggfiler. Det handlar i princip om konfigurera regler i Sysmon-konfigurationen som är särskilt anpassade för miljön där den ska användas.

Sysmon-konfigurationen från SwiftOnSecurity är fortfarande en av de bästa utgångspunkterna för att börja skräddarsy för din egen miljö. Sysmon-konfigurationen måste innehålla regler för identifiering av viktiga händelser som nedladdning/installation av DLL- och EXE-filer, men även undantag för legitima applikationer som genererar många loggfiler, t.ex. inbyggda systemprocesser som svchost, antivirusprogram, EDR-program, sårbarhetsdetekteringsprogram och databaser som MSSQL. Börja med att installera baskonfigurationen på några utvalda system och övervaka sedan loggvolymen. Gör sedan undantag för händelser som genererar många logghändelser i konfigurationen. Upprepa denna process till dess att SIEM-systemets lagring kan hantera loggvolymen när den väl distribueras till alla system i miljön.

Nya versioner av Sysmon introducerar nya händelser och se därför till att du har den aktuella versionen av Sysmon som krävs för att generera händelserna av intresse. Slutligen – innan du blint använder ett detekteringsverktyg som är beroende av Sysmon – kontrollera att den installerade konfigurationen kan generera de händelser som ditt detekteringsverktyg behöver. Döda vinklar i konfigurationen av Sysmon är vanligt förekommande, men du kan undvika dem genom rigorösa tester innan de driftsätts fullt ut i miljön.

Säkra dina system mot PrintNightmare

Eftersom det ännu är okänt när Microsoft kommer att släppa en patch för PrintNightmare måste IT-avdelningar vara vaksamma eftersom det förmodas att hotaktörer på alla nivåer börjar utnyttja sårbarheten för att eskalera åtkomstbehörigheter när de väl har fått åtkomst till miljön. Vi rekommenderar korrelering av händelser från flera källor för tillförlitlig identifiering, vilket inte bör vara ett problem för företag som redan har implementerat en djupförsvarsstrategi.

Vi rekommenderar starkt att administratörer utför en fullständig företagsomfattande jakt på intrångsförsök från början av juni, tillämpar nödvändiga motmedel, uppfyller krav på datakällor och kontinuerligt söker efter intrångsförsök från hotaktörer till dess att Microsoft släpper en patch.

Kontakta Logpoint

Kontakta oss och få information om varför branschledande företag väljer Logpoint:

Kontakta Logpoint

Learn more about Logpoint

Book a demo
Customer cases
Customer reviews