Dalam artikel ini, yang ditulis sebagai bagian dari serangkaian artikel yang ditujukan untuk keamanan sistem Windows (dalam artikel terakhir kami membahas keamanan kata sandi yang disimpan dalam GPP), kami akan membiasakan diri dengan teknik yang cukup sederhana untuk mendapatkan kata sandi yang jelas dari semua pengguna yang menggunakan sistem Windows. Menggunakan Open Source Mimikatz Utility.
Penafian. Informasi dan teknologi yang dijelaskan dalam artikel ini harus digunakan hanya untuk tujuan informasi dan sosialisasi, dan dalam hal apapun tidak boleh digunakan untuk mendapatkan akses ke akun, informasi dan sistem pihak ketiga.Konten:
- Menyimpan kata sandi dan hash dalam memori Windows
- Kami menggunakan Mimikatz untuk mengekstrak kata sandi pengguna dari lsass.exe online
- Mendapatkan kata sandi pengguna dari dump memori Windows
- Mengambil kata sandi pengguna dari file mesin virtual dan file hibernasi
- Menggunakan Mimikatz dalam serangan pass-the-hash
- Cara melindungi Windows dari mengekstraksi kata sandi dari memori melalui mimikatz?
Menyimpan kata sandi dan hash dalam memori Windows
Sebagian besar administrator sistem yakin bahwa Windows tidak menyimpan kata sandi pengguna dalam teks yang jelas, tetapi hanya dalam bentuk hash. Dan meskipun saat ini ada sejumlah besar utilitas yang dapat mengekstraksi hash kata sandi pengguna dari sistem, dimungkinkan untuk mengatakan dengan pasti bahwa ketika menggunakan kata sandi yang cukup kompleks bukan "dari kamus", penyerang secara praktis tidak memiliki kesempatan untuk mengambilnya dengan kekuatan kasar langsung atau berdasarkan hash yang sudah dihitung..
Pada prinsipnya, ini benar, tetapi ada berbagai nuansa mengenai pengguna yang masuk ke sistem Windows tertentu. Faktanya adalah bahwa beberapa proses sistem untuk tujuan resmi mereka masih menggunakan kata sandi pengguna dalam bentuk terbuka (atau dienkripsi), dan bukan hash mereka.
Jadi, misalnya, mekanismenya intisari digest (HTTP Intisari Otentikasi), digunakan untuk mendukung SSO (Single Sign On), untuk pekerjaannya memerlukan pengetahuan tentang kata sandi pengguna yang dimasukkan, dan bukan hanya hash (Anda hanya dapat menebak mengapa pengembang menerapkan ini dengan cara ini). Kata sandi (yaitu kata sandi, bukan hash mereka) dari pengguna dalam bentuk terenkripsi disimpan dalam memori OS, dan lebih tepatnya dalam memori proses LSASS.Exe. Masalahnya adalah enkripsi kata sandi diimplementasikan menggunakan fungsi Win32 standar LsaProtectMemory dan LsaUnprotectMemory, yang dirancang untuk mengenkripsi / mendekripsi sebagian memori. Pengembang Perancis Utilitas mimikatz memungkinkan Anda untuk menerima data terenkripsi dari memori dan mendekripsi menggunakan fungsi LsaUnprotectMemory, memungkinkan Anda untuk menampilkan semua akun pengguna yang diotorisasi dalam sistem dan kata sandi mereka (dalam bentuk terbuka, sudah didekripsi!). Untuk mengeksploitasi kerentanan, penyerang harus dapat melampirkan perpustakaan khusus untuk proses lsass.exe.
Utilitas unduhan mimikatz bisa di sini: http://blog.gentilkiwi.com/mimikatz
Info. Utilitas mimikatz terdeteksi oleh sebagian besar antivirus dan browser sebagai perangkat lunak yang berpotensi berbahaya (utilitas peretas).Utilitas mimikatz memungkinkan Anda untuk mengekstrak kata sandi pengguna langsung dari memori (dengan menyuntikkan pustaka sekurlsa.dll ke lsass.exe), dari dump memori komputer yang disimpan, atau bahkan dari file hibernasi.
Kami menggunakan Mimikatz untuk mengekstrak kata sandi pengguna dari lsass.exe online
- Unduh dan jalankan Mimikatz.exe dengan hak administrator (ada versi utilitas x86 dan x64 untuk masing-masing sistem)
- Dalam konteks utilitas, jalankan perintah
mimikatz # privilege :: debug
mimikatz # sekurlsa :: logonPasswords full
(perintah terakhir untuk semua pengguna aktif dalam sistem akan menampilkan nama akun dan kata sandi mereka).
Seperti yang dapat Anda lihat, utilitas tersebut menunjukkan kepada kami kata sandi pengguna yang sangat kompleks dalam teks yang jelas! Semua ini disebabkan oleh fakta bahwa diizinkan untuk menggunakan mode debug di komputer ini dengan mengatur bendera SeDebugPrivilege untuk proses yang diinginkan. Dalam mode ini, program dapat menerima akses tingkat rendah ke memori proses yang berjalan atas nama sistem.
Bayangkan ini adalah server terminal tempat banyak pengguna bekerja secara bersamaan, dan di antaranya ada sesi administrator perusahaan. Yaitu jika Anda memiliki hak administrator di satu server, Anda bahkan dapat memotong kata sandi administrator domain.
Catatan. Pada bulan Juni 2017, banyak perusahaan besar di Rusia, Ukraina dan negara-negara lain terinfeksi virus ransomware tidak-petya, yang digunakan oleh modul mimikatz terintegrasi untuk mengumpulkan kata sandi administrator pengguna dan domain administrator.Catatan. Teknik ini tidak akan berfungsi jika ada antivirus modern pada sistem yang memblokir injeksi. Dalam hal ini, Anda harus terlebih dahulu membuat dump memori mesin dan sudah di mesin lain "menarik" kata sandi dari itu untuk sesi semua pengguna.Mendapatkan kata sandi pengguna dari dump memori Windows
Memori dump untuk proses LSASS dapat diperoleh dengan menggunakan fungsi PowerShell Out-Minidump.ps1. Impor fungsi Out-Minidump ke PoSh dan buang memori proses LSASS:
Dapatkan-Proses lsass | Minidump keluar
Memori dump yang dihasilkan, dalam contoh kita, adalah lass_592.dmp (secara default disimpan di direktori% windir \ system32%), Anda perlu menyalinnya ke komputer lain yang memiliki utilitas mimikatz dan menjalankan perintah:
Mimikatz “sekurlsa :: minidump lsass_592.dmp”
Dan dengan perintah berikut ini kita dapatkan dari dump memori yang tersimpan daftar pengguna yang bekerja di sistem dan kata sandi mereka:
mimikatz # sekurlsa :: logonPasswords
Seperti yang Anda lihat, tidak ada yang rumit.
Dengan cara ini, Anda bisa mendapatkan dump memori dari komputer jarak jauh menggunakan psexec atau melalui WinRM (jika Anda memiliki hak administrator) dan mengekstrak kata sandi pengguna dari itu.
Mengambil kata sandi pengguna dari file mesin virtual dan file hibernasi
Silakan. Menggunakan manipulasi sederhana, penyerang dapat dengan mudah mengekstrak kata sandi pengguna dari file dump memori, file hibernasi sistem (hiberfil.sys), dan. file vmem mesin virtual (swap file mesin virtual dan snapshot mereka).
Untuk melakukan ini, Anda memerlukan paket Debugging Alat untuk Windows (WinDbg), diriku sendiri mimikatz dan utilitas konversi .vmem ke file dump memori (untuk Hyper-V dapat berupa vm2dmp.exe atau MoonSols Windows Memory toolkit untuk file vmem VMWare).
Misalnya, jika perlu, ubah file swap vmem dari mesin virtual VMWare menjadi dump, jalankan perintah:
bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp
Kami memuat dump yang dihasilkan ke WinDbg (File -> Open Crash Dump), memuat perpustakaan mimikatz dengan nama mimilib.dll (pilih versi tergantung pada kedalaman bit sistem):
.memuat mimilib.dll
Kami sedang mencari proses lsass.exe di dump:
!proses 0 0 lsass.exe
Dan akhirnya, kami mengetik:
.proses / r / p fffffa800e0b3b30
!mimikatz
dan dapatkan daftar pengguna Windows dan kata sandi mereka dalam teks yang jelas.
Memperoleh kata sandi pengguna Windows dalam bentuk terbuka menggunakan utilitas Mimikatz berfungsi pada sistem berikut, termasuk yang berjalan pada versi Hyper-V 2008/2012 dan VMWare yang berbeda:
- Windows Server 2008/2008 R2
- Windows Server 2012 / R2
- Windows 7
- Windows 8
Menggunakan Mimikatz dalam serangan pass-the-hash
Jika tidak mungkin mendapatkan kata sandi pengguna, tetapi hanya hash-nya, Mimikatz dapat digunakan untuk serangan pass-the-hash (menggunakan kembali hash). Dalam hal ini, hash dapat digunakan untuk memulai proses atas nama pengguna. Misalnya, setelah menerima hash pengguna NTLM, perintah berikut akan meluncurkan prompt perintah atas nama akun istimewa:sekurlsa :: pth / pengguna: Administrator / domain: CORP / ntlm: NTLM hash / run: cmd
Cara melindungi Windows dari mengekstraksi kata sandi dari memori melalui mimikatz?
Di Windows 8.1 dan Server 2012 R2 (dan lebih baru), kemampuan untuk mengekstrak kata sandi melalui LSASS agak terbatas. Jadi, secara default, sistem ini tidak menyimpan hash dan kata sandi LM dalam teks yang jelas dalam memori. Fungsionalitas yang sama di-backport ke versi Windows sebelumnya (7/8 / 2008R2 / 2012), di mana Anda perlu menginstal pembaruan khusus KB2871997 (pembaruan memberikan peluang lain untuk memperkuat keamanan sistem) dan di HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest cabang, setel parameter DWORD registri GunakanLogonCredential sama 0 (WDigest dinonaktifkan).
Jika setelah menginstal pembaruan dan kunci UseLogonCredential yang Anda coba untuk mengekstrak kata sandi dari memori, Anda akan melihat bahwa mimikat tidak dapat mengekstraksi kata sandi dan hash menggunakan perintah creds_wdigest.
Namun, jika Anda memiliki hak administrator, Anda dapat dengan mudah mengubah kunci ini:
reg tambahkan HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest / v UseLogonCredential / t REG_DWORD / d 1
Setelah itu, Anda dapat kembali mengakses kata sandi dalam memori LSA.
Toolkit mimikatz juga memiliki alat lain untuk mengambil kata sandi dan hash mereka dari memori (WDigest, hash-LM, hash NTLM-hash, modul pengambilan tiket Kerberos), oleh karena itu, disarankan untuk menerapkan langkah-langkah berikut sebagai rekomendasi:
- Tolak menyimpan kata sandi menggunakan Enkripsi Terbalik
- Nonaktifkan NTLM
- Tolak penggunaan kata sandi yang disimpan di Credential Manager
- Tolak kredensial pengguna caching domain (kunci CachedLogonsCount dan Log masuk interaktif: Jumlah log masuk sebelumnya ke kebijakan cache)
- Jika tingkat fungsional domain tidak lebih rendah dari Windows Server 2012 R2, Anda dapat menambahkan akun administrator ke grup khusus Pengguna yang Dilindungi
Saat menguji mimkatz pada Windows 10 Pro x64 dengan pengaturan, mimkatz 2.0 bisa mendapatkan hash kata sandi dari pengguna aktif (tetapi bukan kata sandi dalam bentuk teks).
Pada sistem yang lebih lama, sebagai solusinya, Anda perlu membatasi untuk mendapatkan hak debug dan menonaktifkan penyedia keamanan wdigest melalui registri. Untuk ini di cabang HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa temukan kuncinya Paket keamanans dan hapus baris dari daftar paket wdigest. Namun, Anda perlu memahami bahwa tidak sulit bagi penyerang, jika ia memiliki hak yang sesuai dengan registri, untuk mengembalikan pengaturan kembali..
Kesimpulan. Sekali lagi, kita mengingat kebenaran umum:
- Jangan menggunakan kata sandi yang sama untuk layanan yang berbeda (terutama yang terminal dimiliki oleh pihak ketiga).
- Pikirkan tentang keamanan kata sandi dan data Anda yang berada di mesin virtual di awan, karena Anda tidak bisa memastikan siapa lagi yang memiliki akses ke hypervisors dan penyimpanan di mana file mesin virtual berada.
- Minimalkan pada sistem Anda jumlah akun yang memiliki hak administrator lokal (lihat panduan tentang pengamanan akun administrator di Windows)
- Jangan pernah masuk dengan akun administrator domain ke server dan komputer yang dapat diakses oleh pengguna lain.