Terjemahan artikel ini disiapkan khusus untuk siswa dari kursus teknik terbalik .
Ringkasan
Para peneliti di Dell SecureWorks Counter Threat Unit (CTU) telah menemukan malware yang melewati otentikasi dalam sistem Active Directory (AD) yang menerapkan otentikasi faktor-tunggal (hanya kata sandi). Penyerang dapat menggunakan kata sandi pilihan mereka untuk otentikasi sebagai pengguna mana pun. Malware ini disebut "Skeleton Key" (kunci universal).
Peneliti CTU menemukan Kunci Kerangka pada jaringan klien yang menggunakan otentikasi faktor tunggal untuk mengakses webmail dan VPN, memberikan penyerang akses tanpa hambatan ke layanan akses jarak jauh. Skeleton Key digunakan sebagai tambalan dalam memori pada pengontrol domain AD korban untuk memungkinkan penyerang mengotentikasi seperti pengguna mana pun, sementara pengguna yang sah melanjutkan otentikasi seperti biasa. Bypass otentikasi kerangka kunci juga memungkinkan penyerang akses fisik untuk login dan membuka kunci sistem yang mengotentikasi pengguna pada pengontrol domain AD terganggu.
Satu-satunya sampel Skeleton Key yang diketahui pada saat publikasi tidak memiliki ketekunan - mereka harus digunakan kembali ketika pengontrol domain memulai kembali. Peneliti CTU menduga bahwa penyerang hanya dapat mengidentifikasi restart berdasarkan ketidakmampuan mereka untuk mengotentikasi berhasil, karena tidak ada malware lain yang terdeteksi pada pengontrol domain. Antara delapan jam dan delapan hari sejak restart, penyerang menggunakan malware akses jarak jauh lainnya yang sudah dikerahkan di jaringan korban untuk memindahkan kembali Skeleton Key ke pengontrol domain.
Penggunaan Skeleton Key membutuhkan kredensial administrator domain. Peneliti CTU menyaksikan penyerang menggunakan Kunci Tengkorak menggunakan kredensial yang dicuri dari server kritis, workstation administrator, dan pengontrol domain target.
Analisis
Awalnya, peneliti CTU mengamati sampel Skeleton Key yang disebut ole64.dll dalam jaringan yang dikompromikan (lihat Tabel 1).
Tabel 1. Contoh Skeleton Key ole64.dll
.Saat mempelajari
ole64.dll
, peneliti CTU menemukan versi yang lebih lama dari
msuta64.dll
pada "host perantara" di jaringan korban (lihat Tabel 2). Host perantara adalah sistem apa pun yang sebelumnya dikompromikan oleh malware akses jarak jauh berbahaya. Opsi ini termasuk operator debugging tambahan yang memungkinkan pengembang Skeleton Key untuk mengamati alamat memori yang terlibat dalam proses patch.
Tabel 2. Contoh Skeleton Key msuta64.dll
.Para penyerang menggunakan algoritma berikut untuk menggunakan Skeleton Key sebagai file DLL 64-bit:
- Unduh file DLL Skeleton Key ke direktori staging pada staging host di jaringan korban. Peneliti CTU mengamati tiga nama file yang terkait dengan file DLL Skeleton Key: ole64.dll, ole.dll dan msuta64.dll. Sistem Windows menyertakan file ole32.dll yang sah, tetapi tidak terkait dengan malware ini.
- Cobalah mengakses sumber daya administratif pada pengontrol domain menggunakan daftar kredensial administrator domain curian.
- Jika kredensial curian tidak lagi valid, gunakan alat pencurian kata sandi untuk mengekstrak kata sandi administrator domain dalam teks yang jelas dari salah satu tempat berikut, yang menyiratkan keakraban dengan lingkungan korban:
- memori server lain yang tersedia di jaringan korban
- pekerjaan administrator domain
- pengontrol domain target
- Gunakan kredensial administrator domain yang valid untuk menyalin Skeleton Key DLL ke C: \ WINDOWS \ system32 \ pada pengontrol domain target.
- Gunakan utilitas PsExec untuk menjalankan file DLL Skeleton Key dari jarak jauh pada pengontrol domain target menggunakan perintah rundll32. Kata sandi yang dipilih oleh penyerang diformat sebagai kata sandi hash NTLM, dan tidak disajikan dalam teks yang jelas. Setelah menggunakan Kunci Tengkorak, penyerang dapat mengotentikasi sebagai pengguna mana pun yang menggunakan hash kata sandi
NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM>
dikonfigurasi NTLM: psexec -accepteula \\% TARGET-DC% rundll32 < DLL> ii < NTLM>
- Hapus file DLL Skeleton Key dari C: \ WINDOWS \ system32 \ pada pengontrol domain target.
- Hapus file DLL Skeleton Key dari direktori pementasan pada host transisi.
- Uji keberhasilan penerapan Kunci Kerangka menggunakan perintah "penggunaan bersih" dengan akun AD dan kata sandi yang cocok dengan hash NTLM yang dikonfigurasi.
Peneliti CTU menemukan pola kata sandi tertanam yang menunjukkan bahwa sekelompok penyerang menyebarkan Skeleton Key di beberapa organisasi.
Penggunaan PsExec dapat dideteksi di lingkungan Windows dengan mengingatkan tentang peristiwa Windows yang dihasilkan oleh utilitas. Pengidentifikasi peristiwa berikut ini, yang diamati pada pengontrol domain target, mendaftarkan alat PsExec yang menginstal layanannya, memulai layanan, dan menghentikan layanan. Peristiwa ini dihasilkan setiap kali PsExec digunakan, oleh karena itu diperlukan analisis tambahan acara untuk menentukan apakah mereka berbahaya atau sah:
- Peristiwa instalasi layanan PSEXESVC yang tidak terduga (kode kejadian 7045) pada pengontrol domain AD:
Nama Log : Sistem
Sumber : Manajer Kontrol Layanan
Ringkasan : Layanan diinstal pada sistem.
Nama File Layanan :
%SystemRoot%\PSEXESVC.exe
- Acara start / stop layanan PSEXESVC yang tidak terduga (kode peristiwa 7036) pada pengontrol domain AD:
Nama Log : Sistem
Sumber : Manajer Kontrol Layanan
Ringkasan :
- "Layanan PSEXESVC operasional."
- "Layanan PSEXESVC telah beralih ke status berhenti."
Sebagai Skeleton Key dalam keadaan berjalan, Anda perlu melakukan tugas-tugas berikut:
- Periksa salah satu versi Windows 64-bit yang kompatibel berikut. Malware tidak kompatibel dengan Windows versi 32-bit atau versi Windows Server dimulai dengan Windows Server 2012 (6.2).
- 6.1 (Windows 2008 R2)
- 6.0 (Windows Server 2008)
- 5.2 (Windows 2003 R2)
- Gunakan fungsi SeDebugPrivilege untuk mendapatkan hak administrator yang diperlukan untuk menulis ke proses layanan subsistem keamanan lokal (LSASS). Proses ini mengontrol fitur keamanan untuk domain AD, termasuk otentikasi akun pengguna.
- Daftar proses yang tersedia untuk menangani proses LSASS.
- Dapatkan alamat untuk fungsi terkait otentikasi yang akan diperbaiki:
- CDLocateCSystem - terletak di
cryptdll.dll
- SamIRetrieveMultiplePrimaryCredentials - terletak di
samsrv.dll
- SamIRetrievePrimaryCredentials - terletak di
samsrv.dll
- Buat pengaturan untuk OS tertentu menggunakan variabel global yang ditetapkan selama pemeriksaan kompatibilitas pada langkah 1.
- Gunakan fungsi OpenProcess untuk menangani proses LSASS.
- Cadangan dan alokasikan ruang memori yang diperlukan untuk mengedit dan menambal memori proses LSASS.
- Menambal fungsi terkait berdasarkan sistem operasi:
- CDLocateCSystem (semua versi Windows yang kompatibel)
- SamIRetrieveMultiplePrimaryCredentials (hanya Windows 2008 R2 (6.1))
- SamIRetrievePrimaryCredentials (semua versi Windows yang kompatibel kecuali Windows 2008 R2 (6.1))
Untuk memperbaiki setiap fungsi:
- Panggil fungsi VirtualProtectEx untuk mengubah perlindungan memori untuk memungkinkan penulisan ke alokasi memori yang diperlukan (PAGE_EXECUTE_READWRITE, 0x40). Langkah ini memungkinkan Anda untuk memperbarui kode fungsi di memori.
- Panggil fungsi WriteProcessMemory untuk mengubah alamat fungsi target sehingga menunjuk ke kode yang diperbaiki. Perubahan ini menyebabkan pemanggilan fungsi menggunakan tambalan.
- Kembalikan perlindungan memori asli dengan menggunakan VirtualProtectEx dengan bendera perlindungan memori asli. Langkah ini diperlukan untuk menghindari alokasi memori yang mencurigakan untuk perekaman dan eksekusi.
Setelah menambal, penyerang dapat menggunakan kata sandi Kunci Tengkorak yang dikonfigurasi selama penyebaran untuk masuk sebagai pengguna domain mana pun. Pengguna yang sah masih dapat login menggunakan kata sandi mereka sendiri. Bypass otentikasi ini berlaku untuk semua layanan yang menggunakan otentikasi AD satu arah, seperti webmail dan VPN, dan juga memungkinkan penyerang dengan akses fisik ke sistem yang dikompromikan untuk membuka kunci komputer dengan memasukkan kata sandi yang tertanam pada keyboard.
Kemungkinan asosiasi dengan masalah replikasi domain
Kode berbahaya Kunci Kerangka tidak mengirimkan lalu lintas jaringan, yang membuat penemuan berbasis jaringan tidak efektif. Namun, malware ini telah terlibat dalam masalah replikasi domain yang dapat mengindikasikan infeksi. Segera setelah setiap penyebaran malware Kunci Kerangka yang terdeteksi oleh peneliti CTU, pengontrol domain mengalami masalah replikasi yang tidak dapat dijelaskan atau diselesaikan oleh Dukungan Microsoft, dan pada akhirnya diperlukan boot ulang untuk menyelesaikannya. Reboot ini menghapus bypass otentikasi Kunci Tengkorak karena malware tidak memiliki mekanisme persistensi. Dalam gbr. Gambar 1 menunjukkan timeline dari reboot ini, serta pencurian kata sandi oleh penyerang, ekspansi lateral dan penyebaran Skeleton Key. Relokasi biasanya terjadi dalam beberapa jam atau beberapa hari setelah reboot.
Gambar 1. Deployment dan hubungan reboot yang diamati oleh peneliti CTU, April - Juli 2014 (Sumber: Dell SecureWorks)Penanggulangan
Kode berbahaya Kunci Kerangka memotong otentikasi dan tidak menghasilkan lalu lintas jaringan. Akibatnya, deteksi intrusi jaringan dan sistem pencegahan (IDS / IPS) tidak akan mendeteksi ancaman ini. Namun, peneliti CTU menuliskan tanda tangan YARA di
Lampiran A untuk menemukan DLL Skeleton Key dan kode yang dimasukkan ke dalam memori proses LSASS.
Indikator ancaman
Indikator ancaman pada Tabel 3 dapat digunakan untuk mendeteksi aktivitas yang terkait dengan malware Skeleton Key.
Tabel 3. Indikator untuk Kunci Kerangka.Kesimpulan
CTU Research Group merekomendasikan organisasi menerapkan fitur keamanan Skeleton Key berikut:
- Otentikasi multi-faktor untuk semua solusi akses jarak jauh, termasuk VPN dan e-mail jarak jauh, tidak memungkinkan aktor ancaman untuk melewati otentikasi faktor tunggal atau otentikasi menggunakan kredensial statis curian.
- Log audit pembuatan proses pada workstation dan server, termasuk pengontrol domain AD, dapat mendeteksi penyebaran Skeleton Key. Secara khusus, organisasi harus mencari artefak berikut:
- Proses PsExec.exe yang tidak terduga dan penggunaan argumen baris perintah PsExec "-accepteula"
- Proses rundll32.exe tidak terduga
- Menangani argumen yang mirip dengan kode hash NTLM (32 karakter yang berisi angka 0-9 dan karakter AF)
- Memantau peristiwa Windows Service Manager pada pengontrol domain AD dapat mendeteksi peristiwa pemasangan layanan yang tidak terduga (kode peristiwa 7045) dan peristiwa mulai / berhenti (kode peristiwa 7036) untuk layanan PSEXESVC PsExec.
Lampiran A - Tanda Tangan YARA
Tanda tangan YARA berikut mendeteksi keberadaan Kunci Kerangka dalam sistem dengan memindai baik file yang mencurigakan atau dump memori pengontrol domain Direktori Aktif, mungkin mengandung Kunci Kerangka.
rule skeleton_key_patcher { strings: $target_process = "lsass.exe" wide $dll1 = "cryptdll.dll" $dll2 = "samsrv.dll" $name = "HookDC.dll" $patched1 = "CDLocateCSystem" $patched2 = "SamIRetrievePrimaryCredentials" $patched3 = "SamIRetrieveMultiplePrimaryCredentials" condition: all of them } rule skeleton_key_injected_code { strings: $injected = { 33 C0 85 C9 0F 95 C0 48 8B 8C 24 40 01 00 00 48 33 CC E8 4D 02 00 00 48 81 C4 58 01 00 00 C3 } $patch_CDLocateCSystem = { 48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 48 8B FA 8B F1 E8 ?? ?? ?? ?? 48 8B D7 8B CE 48 8B D8 FF 50 10 44 8B D8 85 C0 0F 88 A5 00 00 00 48 85 FF 0F 84 9C 00 00 00 83 FE 17 0F 85 93 00 00 00 48 8B 07 48 85 C0 0F 84 84 00 00 00 48 83 BB 48 01 00 00 00 75 73 48 89 83 48 01 00 00 33 D2 } $patch_SamIRetrievePrimaryCredential = { 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 49 8B F9 49 8B F0 48 8B DA 48 8B E9 48 85 D2 74 2A 48 8B 42 08 48 85 C0 74 21 66 83 3A 26 75 1B 66 83 38 4B 75 15 66 83 78 0E 73 75 0E 66 83 78 1E 4B 75 07 B8 A1 02 00 C0 EB 14 E8 ?? ?? ?? ?? 4C 8B CF 4C 8B C6 48 8B D3 48 8B CD FF 50 18 48 8B 5C 24 30 48 8B 6C 24 38 48 8B 74 24 40 48 83 C4 20 5F C3 } $patch_SamIRetrieveMultiplePrimaryCredential = { 48 89 5C 24 08 48 89 6C 24 10 48 89 74 24 18 57 48 83 EC 20 41 8B F9 49 8B D8 8B F2 8B E9 4D 85 C0 74 2B 49 8B 40 08 48 85 C0 74 22 66 41 83 38 26 75 1B 66 83 38 4B 75 15 66 83 78 0E 73 75 0E 66 83 78 1E 4B 75 07 B8 A1 02 00 C0 EB 12 E8 ?? ?? ?? ?? 44 8B CF 4C 8B C3 8B D6 8B CD FF 50 20 48 8B 5C 24 30 48 8B 6C 24 38 48 8B 74 24 40 48 83 C4 20 5F C3 } condition: any of them }