af Bhabesh Raj Rai, Associate Security Analytics Engineer

Søgning efter PsExec-artefakter i din virksomhed

PsExec er et enkelt og gratis værktøj, der kan køre fjernsystemprocesser, og som understøtter fuld interaktivitet for konsolprogrammer. PsExec er et værdifuldt værktøj i en systemadministrators arsenal. Administratorer kan bruge værktøjet til at starte interaktive kommandoprompter på fjernsystemer uden besværet med at installere klientsoftware manuelt.

Systemadministratorer bruger normalt PsExec til at hente eller overføre en fil via netværks-shares eller køre kommandoer, scripts eller binære filer på fjernsystemer. Det, der gør PsExec nyttigt for systemadministratorer, er dog også med til at gøre det attraktivt for trusselsaktører. Glem ikke – angribere kan skjule deres handlinger som legitim systemadministratoraktivitet i dit miljø.

Indtil videre har adskillige trusselsaktører benyttet PsExec, inklusive APT1, menuPass, Turla og Wizard Spider. FIN5, som er en økonomisk motiveret trusselsgruppe, bruger en brugerdefineret version af PsExec. Ransomware-operatører som Ryuk og Maze bruger også i høj grad PsExec til lateral movement.

Kørslen af PsExec genererer mange hændelser, som forskellige sensorer kan opfange, hvis de er konfigureret korrekt. De genererede hændelser, man bør være mest opmærksom på, er oprettelsen af nye tjenester, godkendelse ved målslutpunktet over SMB og oprettelse og tilslutning af navngivne pipes. IDS (Intrustion Detection Systems) og IPS (Intrustion Prevention Systems) som f.eks. Snort og Suricata kan let identificere PsExec-aktivitet i netværket.

Vi vil fokusere på at søge efter PsExec-aktivitet i LogPoint og identificere udnyttelse af en nyligt opdaget LPE- sikkerhedsrisiko (Local Privilege Escalation).

Søgning efter PsExec i LogPoint med Sysmon

PsExec search template

I LogPoint kan du få vist en PsExec-søgeskabelon for at få en oversigt over al relateret aktivitet. 

Når du kører PsExec (i forbindelse med systeminterne værktøjer) første gang, oprettes en registreringsdatabasenøgle på kildeværten, der dokumenterer brugerens accept af EULA’en. Identifikation af denne ændring af registreringsdatabasen er ligetil via Sysmons logge for registreringsdatabasehændelser.

norm_id=WindowsSysmon event_id=13 target_object="*EulaAccepted"
| norm on target_object Sysinternals
| chart count() by host, image, tool, target_object

Ændringen af registreringsdatabasen finder dog kun sted for officielle PsExec-versioner udgivet af Microsoft, og brugerdefinerede versioner undgår at ændre registreringsdatabasenøglen.

PsExec opretter som standard en ny tjeneste ved navn PSEXESVC på fjernsystemet, der kan identificeres via Windows’ nye tjenesteoprettelseslogge, Event ID 7045 og 4697. Forskellen er, at sidstnævnte indeholder kontooplysninger.

norm_id=WinServer event_id=4697 service=PSEXESVC
| chart count() by host, user, service, file

Tjenestenavnet kan ændres fra kommandolinjen, og hændelsen alene kan ikke identificere alle PsExec-kørslerne fuldt ud.

PsExec slipper den binære fil PSEXESVC.exe, som kan ændres, i mappen SYSTEMROOT for et fjernsystem, der senere køres af den nyligt oprettede tjeneste. Sysmons hændelseslogge for filoprettelse kan bruges til at se nærmere på slip af binære filer i mappen SYSTEMROOT.

norm_id=WindowsSysmon event_id=11 path="C:Windows" file="*.exe"
| chart count() by host, file, path

Alle fjernkommandoer, der køres via PsExec, oprettes af PSEXESVC.exe-processen, som kan blive registreret af den oprindelige proces for oprettelse af hændelser i Windows (Event ID 4688).

norm_id=WinServer event_id=4688 parent_process="*PSEXESVC.exe"
| chart count() by host, parent_process, "process", command

En af de mest værdifulde identifikationsegenskaber i Sysmon er pipe-oprettelsen (Event ID 17) og forbindelseshændelser (Event ID 18).

norm_id=WindowsSysmon event_id IN [17, 18]| chart count() by host, message, pipe order by count() desc

PsExec kræver mange pipes til sin handling, f.eks. \psexesvc,, selvom navnet på en pipe kan blive ændret. De pipes, der er interessante, har formatet <psexecsvc_name>-<source_hostname>-<process_id>-<stdin|stdout|stderr>. Identifikation af en pipe-oprettelse eller -forbindelse, der følger formatet, er en indikator for PsExec’s aktivitet ved slutpunktet.

norm_id=WindowsSysmon event_id IN [17, 18] pipe IN ["*-stdin", "*-stderr", "*-stdout"]| chart count() by host, message, pipe order by count() desc

Vi kan oprette en widget, der viser de vigtigste kildeværter, der er ansvarlige for PsExec-kørslerne.

norm_id=WindowsSysmon event_id IN [17, 18] pipe IN ["*-stdin", "*-stderr", "*-stdout"]| norm on pipe --<:word>-<:'stdin|stdout|stderr'>
| chart count() by source_host order by count() desc

 
 

Søgning efter PsExec i LogPoint uden Sysmon

Windows’ logge for filshare-overvågning kan identificere PsExec, hvis Sysmon ikke er installeret i miljøet. Den grundlæggende filshare-overvågning er dog utilstrækkelig, og brugerne skal derfor aktivere detaljeret filshare-overvågning.
Den grundlæggende filshare-overvågning (Event ID 5140) består af et brugernavn samt oplysninger om kilde-IP og share-navn.

=WinServer event_id=5140
| chart count() by host, user, source_address, share_name

Den primære identifikationsfunktionalitet består i at zoome ind på det relative målfelt med det samme format som det pipe-navn, der er registreret for Sysmon Pipe-oprettelses- og forbindelseshændelser .

norm_id=WinServer event_id=5145 share_name=IPC$ relative_target IN ["*-stdin", "*-stderr", "*-stdout"]| norm on relative_target --<:word>-<:'stdin|stdout|stderr'>
| chart count() by host, user, source_address, source_host

I forbindelse med identifikation af Impackets version af PsExec skal den ovenstående forespørgsel dog ændres, fordi feltet relative_target for Impackets PsExec bruger et andet format – RemCom_(stdin|stdout|stderr)t*. Læg også mærke til, hvordan der i Impackets version af PsExec er et tab af oplysninger om kildeværten.

norm_id=WinServer event_id=5145 share_name=IPC$ relative_target IN ["RemCom_stdint*", "RemCom_stderrt*", "RemCom_stdoutt*"]| chart count() by host, user, source_address

If you have an IDS or IPS, you can look for a signature match to detect PsExec's network activity.

Hvis du har et IDS eller IPS, kan du søge efter et signaturmatch for at identificere netværksaktivitet for PsExec.

IDS- og IPS-identifikation

Vi skal søge efter et IDS- eller IPS-signaturmatch, der dækker netværksaktivitet for PsExec.

(norm_id=Snort OR norm_id=SuricataIDS) message IN ["Remote Service Control Manager Access*", "PsExec service created*",
"SMB2 NT Create AndX Request For an Executable File*", "Executable File Transfer*"]

 

Identifikation af local privilege escalation-udnyttelse via PsExec 

Den 9. december opdagede David Wells, som er forsker hos Tenable Security, en LPE-sikkerhedsrisiko i PsExec, der gør det muligt for en ikke-administratorproces at eskalere til SYSTEM. Sikkerhedsrisikoen blev løst i den seneste version af PsExec version 2.3.

Det er nemt at identificere udnyttelse af sikkerhedsrisikoen ved at søge efter oprettelsen af en underordnet proces af PSEXESVC.exe i integritetsniveauet for SYSTEM.

norm_id=WindowsSysmon event_id=1 integrity_level=SYSTEM parent_image="C:WindowsPSEXESVC.exe"

Du kan bruge følgende forespørgsel til at identificere, hvornår den binære fil, der slippes, omdøbes, ved at bruge kommandolinjeparameteren:

norm_id=WindowsSysmon event_id=1 integrity_level=SYSTEM parent_image="C:Windows*.exe" -parent_image="C:WindowsSystem32*.exe"
| chart count() by user, image, parent_image

Identifikation af PsExec ved hjælp af Defenders ASR-regler

Defenders ASR-regler (Attack Surface Reduction) er en af de primære funktioner i Defender Exploit Guard. Den har til formål at afbryde bestemte adfærdstyper, der bruges af malware til at inficere enheder, f.eks. skadelige makroer og mistænkelige scripts. Defender har en ASR-regel ved navn bloker procesoprettelser, der stammer fra PSExec- og WMI-kommandoer. Hvis denne regel aktiveres, blokerer Defender PsExec-kørsler, og en hændelse (Event ID 1121) genereres med reglens GUID.

norm_id=WinServer event_id=1121 id="D1E49AAC-8F56-4280-B9BA-993A6D77406C" -process_name IN ["*wmic.exe", "*wmiprvse.exe"]| chart count() by host, file, path, process_name

Activating Defender's ASR rule

Aktivering af Defenders ASR -regel blokerer PsExec-kørsler og genererer en tilsvarende hændelse. 

 

Brug flere identifikationsmetoder for at opnå fuld dækning

Vi kan konkludere, at Defender rummer flere muligheder for at identificere PsExec. Avancerede trusselsaktører justerer kommandolinjeparametrene for at undgå simple identifikationer ved at referere til navnet på en tjeneste eller en binær fil. Vi anbefaler, at du har flere metoder til at identificere trusler for at opnå fuld dækning.

I det aktuelle trusselslandskab er ransomware-aktivitet i kraftig stigning. Hvis PsExec-aktivitet identificeres, kan Ryuk-, Maze- eller andre installationer af ransomware i en organisation undgås. Vi anbefaler, at systemadministratorer skifter til PowerShell Remoting i stedet for PsExec i forbindelse med administrationsopgaver og behandler al PsExec-aktivitet i miljøet som skadelig.

Contact LogPoint

Get in touch with us and learn why leading brands choose LogPoint:

Get in touch