Mencegah Internal Reconnaissance & Lateral Movement Dengan Windows Firewall RPC Filter
Lateral movement merupakan fase terpenting dalam siklus serangan yang tidak pernah dilewatkan oleh penyerang. Setelah berhasil masuk ke dalam jaringan biasanya penyerang memperluas akses lebih lanjut menggunakan sistem yang telah dikompromikan dengan berpindah ke sistem lain yang bernilai tinggi hingga mendapatkan tujuan akhir.
Sebelum berpindah ke sistem lainnya, penyerang melakukan internal reconnaissance terlebih dahulu untuk mendapatkan pemahaman yang lebih dalam tentang jaringan, sebagai contoh berbagai macam tools yang dapat digunakan seperti menggunakan built-in windows (ipconfig.exe, systeminfo.exe, net.exe, arp.exe, netstat.exe, dll) atau pada lingkungan active directory menggunakan tools seperti BloodHound, PowerView, AdFind, dll.
Setelah mendapatkan target dan kredensial selanjutnya penyerang berpindah melakukan lateral movement menggunakan berbagai macam metode seperti PsExec, RDP, DCOM, WMI, WINRM, dsb.
Microsoft Remote Procedure Call (MS-RPC)
RPC adalah mekanisme yang memungkinkan proses windows untuk berkomunikasi dan dapat menjalankan progam secara remote, dalam lingkungan Windows banyak aplikasi server diekspos melalui RPC.
RPC menggunakan mekanisme IPC lainnya seperti named pipe, NetBIOS atau Winsock untuk membangun komunikasi antara client dan server. RPC client berkomunikasi dengan server menggunakan universal unique identifier (UUID) yang digunakan untuk mewakili sumber daya yang tersedia di server RPC.
Banyak Offensive Security Tools (OST) saat ini yang berkembang memanfaatkan Microsoft Remote Procedure Call (MS-RPC) untuk melakukan internal Reconnaissance dan lateral movement ataupun exploit, untuk dapat mencegah hal tersebut perlu memahami dengan cara membaca source code atau menggunakan langsung tools tersebut dan melakukan analisis. Berikut ini daftar informasi RPC Interface dan Named Pipe yang dipakai oleh masing-masing OST :
Windows Firewall RPC Filter
Windows Firewall berfungsi untuk melindungi perangkat dari lalu lintas dan perangkat lunak yang mencurigakan atau tidak diinginkan. Windows Firewall juga dapat digunakan untuk memblokir koneksi RPC secara spesifik tanpa harus memblokir port, solusi ini memungkinkan diterapkan pada Domain Controller (DC) karena service RPC harus terus berjalan agar domain berfungsi dengan baik tanpa perlu memblokir RPC.
Sebagai contoh untuk memblokir akses impacket wmiexec dan psexec gunakan script berikut dengan menambahkan dua aturan yang akan memblokir panggilan pada RPC Interface dengan UUID dari 367ABB81–9844–35F1-AD32–98F038001003 dan 000001a0–0000–0000-c000–000000000046.
rpc
filter
add rule layer=um actiontype=block
add condition field=if_uuid matchtype=equal data=367ABB81-9844-35F1-AD32-98F038001003
add filter
add rule layer=um actiontype=block
add condition field=if_uuid matchtype=equal data=000001a0-0000-0000-c000-000000000046
add filter
quit
Selanjutnya menerapkan aturan RPC filter diatas menggunakan perintah netsh.
netsh -f filter.txt
Menampilkan hasil semua aturan pada rpc filter :
netsh rpc filter show filter
Setelah rpc filter berhasil diterapkan, selanjutnya konfirmasi dengan melakukan percobaan serangan menggunakan impacket psexec dan wmiexec.
Percobaan lateral movement menggunakan impacket psexec gagal tidak dapat menjalankan SVCManager yang digunakan untuk membuat service baru.
Percobaan lateral movement menggunakan impacket wmiexec gagal dengan hasil rpc access denied.
Untuk menghapus rpc filter yang sudah diterapkan, contoh berikut akan menghapus rpc filter yang diidentifikasi oleh filter key 64692bcf-65de-11ec-9f53–08002755b844.
netsh rpc filter delete filter filterkey=64692bcf-65de-11ec-9f53-08002755b844
Pada akhirnya menerapkan rpc filter sangat membantu untuk mencegah lateral movement, internal reconnaissance ataupun exploit yang memanfaatkan RPC.