Metode perlindungan terhadap mimikatz di domain Windows

Akhir Juni 2017 diingat oleh komunitas TI untuk infeksi besar-besaran dari banyak perusahaan dan agen pemerintah terbesar di Rusia, Ukraina dan negara-negara lain dengan virus ransomware Petya (NotPetya) yang baru. Dalam kebanyakan kasus, setelah menembus jaringan perusahaan, Petya langsung menyebar ke semua komputer dan server domain, melumpuhkan hingga 70-100% dari seluruh infrastruktur Windows. Meskipun salah satu metode untuk mendistribusikan Petya antara komputer di jaringan adalah dengan menggunakan exploit EternalBlue (seperti halnya WannaCry), ini bukan saluran distribusi ransomware utama. Tidak seperti WCry, yang didistribusikan semata-mata karena kerentanan di SMBv1, NotPetya awalnya dipenjara karena jaringan perusahaan. Setelah sistem terinfeksi, penyandi yang menggunakan utilitas publik Mimikatz menerima kredensial (kata sandi, hash) dari pengguna komputer dan menggunakannya untuk distribusi lebih lanjut melalui jaringan menggunakan WMI dan PsExec, hingga kontrol penuh atas domain. Dengan demikian, untuk melindungi semua sistem, itu tidak cukup untuk menginstal pembaruan MS17-010.

Pada artikel ini, kita akan membahas metode dasar melindungi sistem Windows di domain Direktori Aktif dari serangan menggunakan alat mirip Mimikatz..

Utilitas Mimikatz menggunakan modul sekurlsa, ini memungkinkan Anda untuk mengekstrak kata sandi dan hash dari pengguna yang berwenang yang disimpan dalam memori proses sistem LSASS.EXE (Layanan subsistem keamanan lokal ) Kami sudah memiliki artikel dengan contoh penggunaan mimikatz untuk mendapatkan kata sandi pengguna dalam teks yang jelas (dari WDigest, LiveSSP, dan SSP).

Konten:

  • Cegah debug
  • Menonaktifkan WDigest
  • Perlindungan LSA terhadap modul pihak ketiga
  • Menonaktifkan LM dan NTLM
  • Larangan penggunaan enkripsi reversibel
  • Menggunakan Grup Pengguna yang Dilindungi
  • Jangan gunakan kata sandi yang disimpan
  • Tolak Credential Caching
  • Penjaga kredensial
  • Kesimpulan

Cegah debug

Artikel dari tautan di atas menunjukkan bagaimana menggunakan hak istimewa debug memungkinkan Mimikatz untuk mengakses proses sistem LSASS dan mengekstrak kata sandi darinya.

Secara default, izin mode debug diberikan kepada grup administrator lokal (BUILTIN \ Administrator). Meskipun dalam 99% kasus hak istimewa ini sama sekali tidak digunakan oleh administrator (biasanya diperlukan oleh pemrogram sistem), karenanya, untuk alasan keamanan, kemungkinan menggunakan hak istimewa. SeDebugPrivilege lebih baik. Ini dilakukan melalui kebijakan grup (lokal atau domain). Pergi ke bagian ini Konfigurasi Komputer -> Pengaturan Windows -> Pengaturan Keamanan -> Kebijakan Lokal -> Penetapan Hak Pengguna dan memungkinkan kebijakan Program debug. Di dalamnya Anda perlu menambahkan grup pengguna domain yang mungkin memerlukan hak debug (biasanya pengembang), atau biarkan grup ini kosong sehingga tidak ada yang memiliki hak ini.

Sekarang, jika Anda mencoba untuk mendapatkan debug melalui mimikatz, kesalahan muncul:

EROOR kuhl_m_privilege_simple; RtlAdjustPrivilege (20) c0000061

Catatan. Namun, pembatasan yang diberlakukan oleh kebijakan ini dapat dengan mudah dielakkan - tautan.

Menonaktifkan WDigest

Protokol WDigest muncul di Windows XP dan digunakan untuk melakukan HTTP Digest Authentication (HTTP Digest Authentication), fitur yang digunakan untuk menggunakan kata sandi pengguna dalam bentuk yang jelas. Windows 8.1 dan Server 2012 R2 menambahkan kemampuan untuk sepenuhnya melarang penyimpanan kata sandi dalam teks yang jelas di LSASS. Untuk melarang penyimpanan WDigest dalam memori, dalam OS ini di cabang registri HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ WDigest sudah ada parameter DWORD32 bernama GunakanLogonCredential dan nilai 0.

Jika Anda perlu menonaktifkan metode otentikasi WDigest sepenuhnya, di cabang yang sama (HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ WDigest) mengatur nilai kunci Bernegosiasi masuk 0.

Untuk mendukung fitur ini di Windows 7, 8 dan Windows Server 2008 R2 / 2012, Anda harus menginstal pembaruan khusus - KB2871997, dan kemudian mengatur kunci registri yang sama. Dalam lingkungan domain, pengaturan registri paling mudah untuk didistribusikan menggunakan Kebijakan Grup.

Kiat. Jika Anda menolak untuk menyimpan WDigest dalam memori, pertama-tama, ada baiknya menguji kebenaran otorisasi pengguna dan aplikasi pada server IIS.

Perlindungan LSA terhadap modul pihak ketiga

Windows 8.1 dan Windows Server 2012 R2 memperkenalkan kemampuan untuk mengaktifkan perlindungan LSA, yang melindungi memori LSA dan mencegah kemungkinan menghubungkannya dari proses yang tidak aman. Untuk mengaktifkan perlindungan ini, Anda harus di cabang registri HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ LSA buat parameter RunAsPPL dengan nilai 1.

Setelah menerapkan parameter ini, penyerang tidak akan dapat mengakses memori LSA, dan mimikatz akan mengeluarkan kesalahan dengan perintah securlsa :: logonpassword

GALAT kuhl_m_securlsa_acquireLSA: Tangani memori (0x00000005).

Menonaktifkan LM dan NTLM

Protokol otentikasi LM yang ketinggalan zaman dan, karenanya, penyimpanan hash LM harus dinonaktifkan menggunakan kebijakan grup Keamanan Jaringan: Jangan Simpan Manajer LAN Nilai Hash Pada Perubahan Kata Sandi Selanjutnya (pada tingkat Kebijakan Domain Default).

Selanjutnya, Anda harus meninggalkan penggunaan setidaknya protokol NTLMv1 (kebijakan di bawah Konfigurasi Komputer -> Kebijakan -> Pengaturan Windows -> Pengaturan Keamanan -> Kebijakan Lokal -> Opsi Keamanan  -  Keamanan Jaringan: Batasi NTLM: Otentikasi NTLM di domain ini), dan sebagai maksimum dan NTLMv2

Dan jika penolakan NTLMv1 biasanya tidak menyakitkan, maka penolakan NTLMv2 harus bekerja keras. Dalam infrastruktur besar, sebagai aturan, mereka datang ke skenario pembatasan maksimum penggunaan NTLMv2. Yaitu sedapat mungkin otentikasi Kerberos harus digunakan (sebagai aturan, waktu tambahan akan diperlukan untuk mengonfigurasi otentikasi Kerberos pada IIS dan SQL), dan pada sistem lainnya - NTLMv2.

Larangan penggunaan enkripsi reversibel

Seharusnya dilarang secara eksplisit untuk menyimpan kata sandi pengguna dalam AD dalam bentuk teks. Untuk melakukan ini, aktifkan kebijakan domain Simpan kata sandi menggunakan enkripsi yang dapat dibalik untuk semua pengguna di domain di Konfigurasi Komputer -> Pengaturan Windows -> Pengaturan Keamanan -> Kebijakan Akun -> bagian Kebijakan Kata Sandi, mengatur nilainya ke Dinonaktifkan..

Menggunakan Grup Pengguna yang Dilindungi

Saat menggunakan tingkat fungsional domain Windows Server 2012 R2, dimungkinkan untuk menggunakan grup yang dilindungi Pengguna Terlindungi khusus untuk melindungi pengguna yang memiliki hak istimewa. Khususnya, akun-akun ini dilindungi dari kompromi karena fakta bahwa anggota grup ini hanya dapat masuk melalui Kerberos (tidak ada NTLM, WDigest dan CredSSP), dll. (perincian tentang tautan di atas). Dianjurkan untuk menambahkan ke grup ini akun administrator domain, server, dll. Fungsi ini berfungsi pada server dan akan bekerja pada Windows Server 2012 R2 (untuk Windows Server 2008 R2 Anda harus menginstal pembaruan tambahan yang disebutkan di atas KB2871997)

Jangan gunakan kata sandi yang disimpan

Anda dapat mencegah pengguna domain dari menyimpan kata sandi mereka untuk mengakses sumber daya jaringan di Credential Manager.

Untuk melakukan ini, aktifkan kebijakan Akses jaringan: Jangan izinkan penyimpanan kata sandi dan kredensial untuk otentikasi jaringan  di bawah Konfigurasi Komputer -> Pengaturan Windows -> Pengaturan Keamanan -> Kebijakan Lokal -> Opsi Keamanan.

<Catatan. Harap dicatat bahwa penggunaan kata sandi yang disimpan dalam tugas-tugas penjadwal juga akan dilarang..

Tolak Credential Caching

Salah satu fitur mimikat adalah untuk mendapatkan hash kata sandi pengguna dari cabang registri HKEY_LOCAL_MACHINE \ SECURITY \ Cache, di mana hash kata sandi dari 10 pengguna domain terakhir (secara default) yang telah login disimpan. Hash ini biasanya dapat digunakan untuk mengesahkan pengguna dalam sistem ketika pengontrol domain tidak tersedia.

Dianjurkan untuk melarang penggunaan penyimpanan data dalam cache dengan mengaktifkan kebijakan Interaktif Log masuk: Nomor dari sebelumnya login untuk cache (masuk kasing domain pengontrol adalah tidak tersedia) di bawah Konfigurasi Komputer -> Pengaturan Windows -> Kebijakan Lokal -> Opsi Keamanan, mengubah nilai parameternya menjadi 0.

Selain itu, untuk mempercepat pembersihan memori proses lsass dari akun pengguna yang telah menyelesaikan sesi, Anda harus di cabang HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa Anda perlu membuat kunci DWORD dengan nama TokenLeakDetectDelaySecs dan nilai 30. Yaitu memori akan dihapus 30 detik setelah logo pengguna. Di Windows 7, 8 / Server 2008R2, 2012, agar kunci ini berfungsi, Anda harus menginstal pembaruan yang disebutkan sebelumnya KB2871997.

Penjaga kredensial

Di Windows 10 Enterprise, Windows Server 2016, komponen Penjaga Kredensial baru telah ditambahkan untuk mengisolasi dan melindungi proses sistem LSASS dari akses yang tidak sah. Detail di sini.

Kesimpulan

Langkah-langkah yang dibahas di atas secara signifikan akan mengurangi kemampuan mimikatz dan utilitas serupa untuk memperoleh kata sandi dan hash administrator dari proses LSASS dan registri. Bagaimanapun, ketika memutuskan implementasi kebijakan dan metode ini, mereka harus diperkenalkan secara bertahap dengan pengujian wajib..

Pada artikel berikutnya, kita akan membahas praktik terbaik untuk meningkatkan keamanan jaringan Windows dengan membatasi penggunaan akun administrator, yang pada tingkat teknis dan organisasi harus meningkatkan perlindungan domain Windows dari serangan tersebut. Tetap disini!