
Saat melakukan pengujian penetrasi, kami cukup sering mendeteksi kesalahan dalam konfigurasi domain. Meskipun ini tampaknya tidak penting bagi banyak orang, pada kenyataannya, ketidakakuratan semacam itu dapat menyebabkan seluruh domain dikompromikan.
Sebagai contoh, menurut hasil dari pentest dalam satu perusahaan, kami sampai pada kesimpulan bahwa semua mesin yang tersedia di domain tidak lebih rendah dari Windows10 / Windows Server2016, dan mereka memiliki semua tambalan terbaru pada mereka. Jaringan dipindai secara teratur, mesin-mesinnya keras. Semua pengguna duduk melalui token dan tidak tahu "kata sandi 20 karakter" mereka. Semuanya tampak baik-baik saja, tetapi IPv6 belum dinonaktifkan. Skema penangkapan domain tampak seperti ini:
mitm6 -> ntlmrelay -> serangan melalui delegasi -> kata sandi administrator lokal diterima -> kata sandi administrator domain diterima.
Sayangnya, sertifikasi populer seperti OSCP, GPEN, atau CEH tidak mengajarkan pengujian penetrasi Active Directory.
Pada artikel ini, kita akan melihat beberapa jenis serangan Direktori Aktif yang kami lakukan sebagai bagian dari pentest, serta alat yang digunakan. Ini sama sekali tidak dapat dianggap sebagai panduan lengkap untuk semua jenis serangan dan alat, benar-benar ada banyak, dan sulit untuk masuk ke dalam satu artikel.
Jadi, untuk demonstrasi, kami menggunakan laptop di Kali Linux 2019 dan virtual host dibesarkan di VMware. Bayangkan bahwa tujuan utama pentest adalah untuk mendapatkan hak administrator domain, dan sebagai masukan kita memiliki akses ke jaringan perusahaan perusahaan melalui ethernet. Untuk mulai menguji domain, kami memerlukan akun.
Mendapatkan akun
Pertimbangkan dua metode yang paling umum, menurut saya, untuk mendapatkan login dan kata sandi akun domain: LLMNR / NBNS spoofing dan menyerang protokol IPv6.
LLMNR / NBNS Spoofing
Sudah banyak yang dikatakan tentang serangan ini. Intinya adalah bahwa klien mengirimkan LLMNR multicast dan menyiarkan permintaan NBT-NS untuk menyelesaikan nama host jika ini tidak mungkin melalui DNS. Setiap pengguna jaringan dapat menjawab permintaan tersebut.
Alat yang memungkinkan serangan:
- Tanggapan
- Inveight
- Modul Metasploit: auxiliary / spoof / llmnr / llmnr_response, auxiliary / spoof / nbns / nbns_response,
tambahan / server / tangkap / seseorang, tambahan / server / tangkap / http_ntlm
Dengan serangan yang berhasil, kita bisa mendapatkan hash NetNTLM dari kata sandi pengguna.
Responder -I eth0 -wrf

Hash yang dihasilkan, kita dapat men-debug atau menjalankan relai NTLM.
Serangan IPv6
Jika IPv6 digunakan dalam jaringan perusahaan, kami dapat menanggapi permintaan DHCPv6 dan menetapkan alamat IP kami sebagai server DNS pada mesin yang diserang. Karena IPv6 lebih diutamakan daripada IPv4, permintaan DNS klien akan dikirim ke alamat kami. Baca lebih lanjut tentang serangan di
sini .
Alat:
Menjalankan utilitas mitm6
mitm6 -i vmnet0
Setelah serangan selesai, server DNS baru dengan alamat IPv6 kami akan muncul di workstation yang diserang.

Mesin yang diserang akan mencoba mengautentikasi dengan mesin kami. Setelah mengangkat server SMB menggunakan utilitas
smbserver.py , kita bisa mendapatkan hash kata sandi pengguna.
smbserver.py -smb2support SMB /root/SMB

Tindakan Hash yang Ditangkap
Langkah selanjutnya adalah melakukan serangan kriptografis pada hash kata sandi dan mendapatkan kata sandi dalam teks yang jelas, atau melakukan relai NTLM.
Kata sandi brute force
Sederhana: ambil kata sandi hash, hashcat
hashcat -m 5600 -a 3 hash.txt /usr/share/wordlists/rockyou.txt
dan brutus. Kata sandi dapat diperoleh atau tidak :)
Kata sandi pengguna Harvey telah dipulihkan - Pbvf2019Relay NTLM
Kami juga dapat menjalankan relay NTLM. Setelah memastikan bahwa
Penandatanganan SMB tidak digunakan
, kami menggunakan utilitas
ntlmrelayx.py dan melakukan serangan. Di sini lagi, tergantung pada tujuannya, kami memilih vektor yang kami butuhkan. Mari kita pertimbangkan beberapa di antaranya.
Akses ke mesin yang diserang melalui protokol SMB
Lakukan serangan dengan kunci
i .
ntlmrelayx.py -t 192.168.1.5 -l loot -i

Dengan serangan yang berhasil, kita dapat terhubung ke mesin jarak jauh menggunakan netcat.

Pengumpulan Informasi Domain
Dalam hal ini, kami melakukan relai ke pengontrol domain.
ntlmrelayx.py -t ldap://192.168.1.2
Jika serangan berhasil, kami akan mendapatkan informasi terperinci tentang domain:

Menambahkan komputer baru ke domain
Setiap pengguna secara default memiliki kemampuan untuk membuat hingga 10 komputer dalam domain tersebut. Untuk membuat komputer, Anda perlu merelay ke pengontrol domain menggunakan protokol ldaps. Membuat pengguna dan komputer melalui koneksi ldap yang tidak terenkripsi dilarang. Selain itu, akun tidak dapat dibuat jika koneksi melalui SMB dicegat.
ntlmrelayx.py -t ldaps://192.168.1.2 --add-computer

Seperti yang Anda lihat pada gambar, kami dapat membuat komputer RORYOTGS $.
Saat membuat lebih dari 10 komputer, kami mendapatkan kesalahan dari formulir berikut:

Dengan menggunakan kredensial komputer RORYOTGS $, kami dapat melakukan permintaan yang sah ke pengontrol domain.
Pengumpulan Informasi Domain
Jadi, kami memiliki pengguna domain atau akun komputer. Untuk melanjutkan pengujian, kami perlu mengumpulkan informasi yang tersedia untuk perencanaan serangan lebih lanjut. Pertimbangkan beberapa alat yang akan membantu kami menentukan pencarian untuk sistem yang paling kritis, merencanakan dan melaksanakan serangan.
Anjing pelacak
Salah satu alat paling penting yang digunakan di hampir semua pengujian penetrasi internal. Proyek ini secara aktif mengembangkan dan dilengkapi dengan fitur-fitur baru.
Informasi dikumpulkan oleh anjing pelacak- Grup - Melakukan pengumpulan keanggotaan grup
- LocalAdmin - Melakukan pengumpulan admin lokal
- RDP - Melakukan pengumpulan Pengguna Remote Desktop
- DCOM - Melakukan pengumpulan COM Users Terdistribusi
- GPOLocalGroup - Melakukan pengumpulan admin lokal menggunakan Objek Kebijakan Grup
- Session - Melakukan pengumpulan sesi
- ComputerOnly - Melakukan admin lokal, RDP, DCOM, dan koleksi sesi
- LoggedOn - Melakukan pengumpulan sesi istimewa (membutuhkan hak admin pada sistem target)
- Trusts - Melakukan enumerasi kepercayaan domain
- ACL - Melakukan pengumpulan ACL
- Wadah - Melakukan pengumpulan Kontainer;
- DcOnly - Melakukan pengumpulan menggunakan LDAP saja. Termasuk Grup, Trust, ACL, ObjectProps, Container, dan GPOLocalGroup
- Semua - Melakukan semua Metode Pengumpulan kecuali GPOLocalGroup dan LoggedOn
- Hutan Pencarian - Cari semua domain di hutan, bukan hanya domain Anda saat ini
- Domain - Cari domain tertentu. Menggunakan domain Anda saat ini jika nol (Default: null)
- Stealth - Melakukan metode pengumpulan siluman. Semua opsi siluman berulir tunggal
- SkipGCDeconfliction - Abaikan dekonfigurasi Katalog Global selama enumerasi sesi. Ini dapat mempercepat pencacahan, tetapi akan menghasilkan kemungkinan ketidakakuratan dalam data
- ExcludeDc - Tidak termasuk pengontrol domain dari pencacahan (menghindari bendera ATA Microsoft)
- ComputerFile - Menentukan file untuk memuat nama / IP komputer dari
- OU - Tentukan OU mana yang akan dihitung
Pengumpul informasi adalah
SharpHound.exe (harus diinstal. NET v3.5) dan skrip
SharpHound.ps1 ditulis dalam PowerShell. Ada juga kompiler yang ditulis oleh pengembang Python pihak ketiga,
Bloodhound-python .
Sebagai basis data,
Neo4j digunakan, yang memiliki sintaksnya sendiri, yang memungkinkan Anda untuk melakukan kueri khusus. Anda dapat membaca lebih lanjut tentang sintaks di
sini .
Di luar kotak 12 permintaan tersedia- Temukan semua Admin Domain
- Temukan Jalur Terpendek ke Admin Domain
- Temukan Kepala Sekolah dengan Hak DCSync
- Pengguna dengan Keanggotaan Grup Domain Asing
- Grup dengan Keanggotaan Grup Domain Asing
- Peta trust domain
- Jalur Terpendek ke Sistem Delegasi Tanpa Batas
- Jalur Terpendek dari Pengguna Kerberoastable
- Jalur Terpendek ke Admin Domain dari Pengguna Kerberoastable
- Jalur Terpendek dari Kepala Sekolah Milik
- Jalur Terpendek ke Admin Domain dari Kepala Sekolah Milik
- Jalur Terpendek ke Target Nilai Tinggi
Pengembang juga menyediakan skrip
DBCreator.py , yang memungkinkan Anda membuat basis data acak untuk pengujian.

Neo4j memiliki API REST. Ada berbagai utilitas yang dapat terhubung ke database dan menggunakan data yang diterima:
Mari kita pertimbangkan beberapa di antaranya.
Cypherdog
CypherDog adalah cangkang BloodHound yang ditulis dengan PowerShell. Termasuk 27 cmdlet.
Secara default, otentikasi diperlukan untuk mengakses database neo4j. Anda dapat menonaktifkan otentikasi dengan mengedit file neo4j.conf. Perlu menghapus tanda komentar pada baris
dbms.security.auth_enabled = false. Tapi ini tidak disarankan, karena setiap pengguna dapat terhubung ke database di 127.0.0.1:7474 (konfigurasi default). Anda dapat membaca lebih lanjut tentang otentikasi dan otorisasi di neo4j di
sini.Ambil
GoFetch menggunakan grafik yang dibuat dalam bloodhound untuk merencanakan dan mengeksekusi serangan.
Peluncuran serangan
.\Invoke-GoFetch.ps1 -PathToGraph .\pathFromBloodHound.json
gt-generator
gt-generator , menggunakan data BloodHound, membuatnya mudah untuk membuat tiket emas. Untuk menerima tiket emas, hanya hash nama pengguna dan kata sandi pengguna KRBTGT yang diperlukan.
python gt-generator.py -s 127.0.0.1 -u user -p pass administrator <KRBTGT_HASH>

Powerview
PowerView adalah kerangka kerja Powershell yang disertakan dengan
PowerSploit . Berikut ini adalah daftar beberapa cmdlet yang dapat membantu Anda mengumpulkan informasi tentang domain.
Adidnsdump
Saat menggunakan DNS terintegrasi di Active Directory, setiap pengguna domain dapat meminta semua catatan DNS default.
Alat yang Digunakan:
Adidnsdump.
Serangan Domain
Sekarang kami memiliki informasi domain, kami beralih ke fase berikutnya dari pengujian penetrasi - langsung ke serangan. Pertimbangkan 4 vektor potensial:
- Memanggang
- Serang melalui ACL
- Delegasi Kerberos
- Menyalahgunakan Izin GPO
Memanggang
Jenis serangan ini menargetkan protokol Kerberos. Ada 2 jenis serangan seperti Roasting:
Kerberoast
Serangan itu pertama kali ditunjukkan oleh pengguna
timmedin di DerbyCon pada 2014 (
video ). Dengan serangan yang berhasil, kami akan dapat memilah kata sandi layanan USG dalam mode offline, tanpa takut memblokir pengguna. Cukup sering, akun layanan memiliki hak berlebihan dan kata sandi abadi, yang memungkinkan kami untuk mendapatkan hak administrator domain.
Untuk memahami inti dari serangan itu, pertimbangkan cara kerja Kerberos.

1. Kata sandi dikonversi ke hash NTLM, cap waktu dienkripsi dengan hash dan dikirim ke KDC sebagai autentikator dalam permintaan tiket TGT (AS-REQ). Pengontrol domain (KDC) memeriksa informasi pengguna dan membuat tiket TGT.
2. Tiket TGT dienkripsi, ditandatangani, dan dikirim ke pengguna (AS-REP). Hanya layanan Kerberos (KRBTGT) yang dapat membuka dan membaca data dari tiket TGT.
3. Pengguna mengirimkan tiket TGT ke pengontrol domain berdasarkan permintaan tiket TGS (TGS-REQ). Pengontrol domain membuka tiket TGT dan memeriksa checksum PAC.
4. Tiket TGS dienkripsi dengan hash NTLM dari kata sandi akun layanan dan dikirim ke pengguna (TGS-REP).
5. Pengguna menyediakan tiket TGS ke komputer tempat layanan berjalan (AP-REQ). Layanan membuka tiket TGS menggunakan hash NTLM-nya.
6. Akses ke layanan disediakan (AS-REP).
Setelah menerima tiket TGS (TGS-REP), kami dapat menemukan kata sandi untuk akun layanan offline. Misalnya, menggunakan hashcat.
Menurut
RFC396 , 20 jenis enkripsi dicadangkan untuk protokol Kerberos. Jenis-jenis enkripsi yang digunakan sekarang, dengan urutan prioritas:
- AES256_CTS_HMAC_SHA1
- AES128_CTS_HMAC_SHA1
- RC4_HMAC_MD5
Dalam versi Windows terbaru, enkripsi AES digunakan secara default. Tetapi untuk kompatibilitas dengan sistem di bawah Windows Vista dan Windows 2008 server, dukungan untuk algoritma RC4 diperlukan. Saat melakukan serangan, upaya selalu dilakukan terlebih dahulu untuk mendapatkan tiket TGS dengan enkripsi RC4_HMAC_MD5, yang memungkinkan kata sandi yang lebih cepat untuk disortir, dan kemudian dengan sisanya.
Harmj0y melakukan
penelitian yang menarik dan menemukan bahwa jika Anda hanya menentukan dukungan enkripsi Kerberos AES128 dan AES256 di properti pengguna, tiket Kerberos masih dikeluarkan dengan enkripsi RC4_HMAC_MD5.

Menonaktifkan RC4_HMAC_MD5 diperlukan di tingkat
domain.Serangan Kerberoasting memiliki 2 pendekatan.
1. Metode lama. Tiket TGS diminta melalui setspn.exe atau .NET System.IdentityModel.Tokens.KerberosRequestorSecurityToken dari kelas Powershell, diambil dari memori menggunakan mimikatz, kemudian dikonversi ke format yang diinginkan (John, Hashcat) dan disortir.
2. Metode baru.
machosec memperhatikan bahwa kelas
KerberosRequestorSecurityToken memiliki metode
GetRequest , yang mengekstrak bagian terenkripsi dengan kata sandi dari tiket TGS.
Alat untuk melakukan serangan:
1) Cari catatan SPN
2) Meminta tiket TGS
Anda dapat melihat tiket yang di-cache saat ini menggunakan perintah klist.
Catatan SPN umum- TERMSRV - Remote Desktop
- SmtpSVC dan SMTP - Mail
- WSMAN - WinRM
- ExchangeAB, ExchangeRFR, ExchangeMDM - MS Exchange
- POP / POP3 - Layanan Pos POP3
- IMAP / IMAP4 - Layanan Email IMAP
- MSSQLSvc - Microsoft SQL Server
- MONGO - Server Basis Data MongoDB
- DNS - DNS server
- HTTP, WWW - Server Web
- LDAP - LDAP
- FTP - Server FTP
3) Ekspor tiket:
Contoh eksekusi otomatis ketiga poin:
- RiskiskSPN
Find-PotentiallyCrackableAccounts -Sensitive -Stealth -GetSPNs | Get-TGSCipher -Format "Hashcat" | Out-File kerberoasting.txt
- Powersploit
Invoke-Kerberoast -Domain jet.lab -OutputFormat Hashcat | fl
- GetUserSPNs.py
GetUserSPNs.py -request jet.lab\user:Password
Asreproast
Kerentanannya adalah bahwa pra-otentikasi Kerberos dinonaktifkan. Dalam hal ini, kami dapat mengirim permintaan AS-REQ ke pengguna yang menonaktifkan otentikasi pra-Kerberos, dan mendapatkan bagian terenkripsi dengan kata sandi.

Kerentanan jarang terjadi, karena menonaktifkan praauthentikasi bukanlah pengaturan default.
Mencari Pengguna dengan Otentikasi Kerberos Dinonaktifkan:
- Powerview
Get-DomainUser -PreauthNotRequired -Properties samaccountname -Verbose
- Modul Direktori Aktif
get-aduser -filter * -properties DoesNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq "True" -and $_.Enabled -eq "True"} | select Name
Mendapatkan bagian yang dienkripsi:
Serang melalui ACL
ACL dalam konteks domain adalah seperangkat aturan yang menentukan hak akses objek dalam AD. ACL dapat dikonfigurasikan untuk objek tunggal (misalnya, akun pengguna), atau untuk unit organisasi, misalnya, OU. Ketika Anda mengkonfigurasi ACL pada OU, semua objek dalam OU akan mewarisi ACL. ACL berisi entri kontrol akses (ACE) yang menentukan bagaimana SID berinteraksi dengan objek Active Directory.
Misalnya, kami memiliki tiga grup: A, B, C, di mana grup C adalah anggota grup B dan grup B adalah anggota grup A. Saat Anda menambahkan tamu ke grup C, tamu tidak hanya akan menjadi anggota grup C, tetapi juga anggota tidak langsung dari grup B dan A. Saat menambahkan akses ke objek domain ke grup A, pengguna tamu juga akan memiliki akses ke objek ini. Dalam situasi di mana pengguna adalah anggota langsung dari satu grup, dan grup ini adalah anggota tidak langsung dari 50 grup lainnya, mudah untuk kehilangan koneksi izin yang diwarisi.
Anda dapat mengambil ACL yang terkait dengan objek dengan menjalankan perintah berikut
Get-ObjectACL -Samaccountname Guest -ResolveGUIDs
Anda dapat menggunakan alat ini untuk mengeksploitasi kesalahan dalam konfigurasi ACL.
Invoke-ACLPwn . Skrip Powershell mengumpulkan informasi tentang semua ACL di domain menggunakan kolektor BloodHound, SharpHound, dan membangun rantai untuk mendapatkan izin writeDACL. Setelah rantai dibangun, skrip mengoperasikan setiap langkah rantai. Urutan skrip:
- Pengguna ditambahkan ke grup yang diperlukan.
- Dua ACE (Replikasi Direktori Perubahan dan Replikasi Direktori Perubahan SEMUA) ditambahkan ke ACL objek domain.
- Jika Anda memiliki hak untuk DCSync menggunakan utilitas Mimikatz, kata sandi hash krbtgt pengguna diminta (pengaturan default).
- Setelah operasi selesai, skrip menghapus semua grup yang ditambahkan dan entri ACE di ACL.
Script hanya ditujukan untuk menggunakan izin writeDACL. Hak akses berikut juga mungkin menarik bagi penyerang:
- ForceChangePassword. Hak untuk mengubah kata sandi pengguna ketika kata sandi saat ini tidak diketahui. Operasi dengan PowerSploit - Set-DomainUserPassword.
- AddMembers. Hak untuk menambahkan grup, komputer, dan pengguna ke grup. Pengoperasian dengan PowerSploit - Add-DomainGroupMember.
- GenericWrite Hak untuk mengubah atribut suatu objek. Misalnya, ubah nilai parameter scriptPath. Lain kali pengguna masuk ke sistem, file yang ditentukan dimulai. Pengoperasian dengan PowerSploit - Set-DomainObject.
- Pemilik Tulis. Hak untuk mengubah pemilik objek. Pengoperasian dengan PowerSploit - Set-DomainObjectOwner.
- AllExtendedRights. Hak untuk menambahkan pengguna ke grup, mengubah kata sandi pengguna, dll. Pengoperasian dengan PowerSploit - Set-DomainUserPassword atau Add-DomainGroupMember.
Operasi:
Mulai dari mesin yang ada di domain
./Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe
Mulai dari mesin yang tidak ada dalam domain
/Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe -Username 'domain\user' -Domain 'fqdn_of_target_domain' -Password 'Pass'
- aclpwn.py adalah alat serupa yang ditulis dengan Python
Delegasi Kerberos
Pendelegasian wewenang Kerberos memungkinkan Anda menggunakan kembali kredensial pengguna akhir untuk mengakses sumber daya yang dihosting di server lain.
Delegasi Kerberos dapat terdiri dari tiga jenis:
- Tidak terbatas (delegasi tidak terbatas). Satu-satunya opsi delegasi sebelum Windows Server 2003
- Delegasi terbatas sejak Windows Server 2003
- Delegasi Terkendala Berbasis Sumberdaya Diperkenalkan pada Windows Server 2012
Delegasi tanpa batas
Di snap-in Active Directory, fitur delegasi tak terbatas yang diaktifkan adalah sebagai berikut:

Untuk kejelasan, pertimbangkan bagaimana delegasi tak terbatas terjadi pada diagram.

- Kata sandi pengguna dikonversi menjadi ntlm hash. Stempel waktu dienkripsi dengan hash ini dan dikirim ke pengontrol domain untuk meminta tiket TGT.
- Pengontrol domain memeriksa informasi tentang pengguna (pembatasan masuk, keanggotaan dalam grup, dll.), Membuat tiket TGT dan mengirimkannya kepada pengguna. Tiket TGT dienkripsi, ditandatangani, dan hanya krbtgt yang dapat membaca datanya.
- Pengguna meminta tiket TGS untuk mengakses layanan web di server web.
- Pengontrol domain menyediakan tiket TGS.
- Pengguna mengirimkan tiket TGT dan TGS ke server web.
- Akun layanan server web menggunakan tiket TGT pengguna untuk meminta tiket TGS untuk mengakses server database.
- Akun layanan terhubung ke server database sebagai pengguna.
Bahaya utama dari delegasi tak terbatas adalah ketika mesin dengan delegasi tak terbatas dikompromikan, penyerang akan bisa mendapatkan tiket pengguna TGT dari mesin ini dan akses ke sistem apa pun di domain atas nama pengguna ini.
Cari mesin dalam domain dengan delegasi tidak terbatas:
Ekspor Tiket:

Delegasi terbatas
Mode pendelegasian terbatas memungkinkan Anda untuk mengakses hanya layanan yang diizinkan dan pada mesin tertentu. Di snap-in Active Directory, tampilannya seperti ini:

Dengan delegasi terbatas, 2 ekstensi protokol Kerberos digunakan:
- S4 diri kita sendiri
- S4UProxy
S4U2Self digunakan ketika klien tidak mengautentikasi menggunakan protokol Kerberos.
Untuk delegasi tanpa batas, TGT digunakan untuk mengidentifikasi pengguna, dalam hal ini ekstensi S4U menggunakan struktur
PA-FOR-USER sebagai tipe baru di bidang data padata / pra-otentikasi. Proses S4U2self hanya diperbolehkan jika pengguna yang meminta memiliki bidang TRUSTED_TO_AUTH_FOR_DELEGATION yang disetel di userAccountControl.
S4U2Proxy memungkinkan akun layanan menggunakan tiket redirect yang diterima dalam proses S4U2 untuk meminta tiket TGS untuk akses ke layanan yang diizinkan (msds-allowtodelegateto). KDC memeriksa apakah layanan yang diminta ditentukan dalam bidang msds-allowtodelegateto dari pengguna yang meminta, dan mengeluarkan tiket jika pemeriksaan berhasil. Dengan demikian, pendelegasian “terbatas” untuk layanan target tertentu.
Anda dapat mencari komputer dan pengguna di domain delegasi terbatas menggunakan PowerView .Cari komputer dengan delegasi tanpa batas Get-DomainComputer -TrustedtoAuth
Cari pengguna delegasi terbatas Get-DomainUser -TrustedtoAuth
Untuk melakukan serangan, kita memerlukan kata sandi yang jelas, hash kata sandi NTLM, atau tiket TGT.
Delegasi Terbatas Berbasis Sumberdaya
Seperti halnya delegasi biasa, ekstensi S4U digunakan. Karena delegasi berbasis sumber daya adalah delegasi terbatas, serangan yang relevan dengan delegasi terbatas reguler juga tersedia di sini. Satu-satunya perbedaan adalah bahwa dalam delegasi terbatas sederhana, layanan A harus memiliki atribut msDS-AllowedToDelegateTo = ServiceB, dan di sini layanan B harus memiliki msDS-AllowedToActOnBehalfOfOtherIdentity = atribut Service A.
Properti ini memungkinkan satu lagi serangan yang diterbitkan oleh harmj0y. Serangan memerlukan izin untuk mengubah parameter PrincipalsAllowedToDelegateToAccount, yang menetapkan msds-AllowedToActOnBehalfOfOtherIdentity atribut, yang berisi daftar kontrol akses (ACL). Tidak seperti delegasi yang terbatas, kami tidak memerlukan hak administrator domain untuk mengubah atribut msds-AllowedToActOnBehalfOfOtherIdentity. Anda dapat mengetahui siapa yang memiliki izin untuk mengedit atribut sebagai berikut: (Get-acl "AD:$((get-adcomputer Windows7).distinguishedname)").access | Where-Object -Property ActiveDirectoryRights -Match WriteProperty |out-gridview
Jadi, untuk melakukan serangan, jalankan mitm6 mitm6 -I vmnet0
Kami memulai ntlmrelayx dengan opsi --delegate-access ntlmrelayx -t ldaps://dc1.jet.lab --delegate-access
Sebagai akibat dari serangan itu, komputer ZGXTPVYX $ dibuat dengan hak delegasi ke komputer Windows7. $x = Get-ADComputer Windows7 -Properties msDS-AllowedToActOnBehalfOfOtherIdentity $x.'msDS-AllowedToActOnBehalfOfOtherIdentity'.Access
Laporan delegasi yang baik disajikan di PHDays oleh Yegor Podmokov.
Menyalahgunakan Izin GPO
Objek Kebijakan Grup adalah alat yang memungkinkan administrator mengelola domain secara efisien. Tetapi kebetulan bahwa pengguna diberi hak yang tidak perlu, termasuk untuk mengubah kebijakan GPO.Untuk mendemonstrasikan contoh, kami akan menambahkan pengguna Ragnar hak untuk mengedit Kebijakan Pengontrol Domain Default (dalam kehidupan nyata, hak untuk kebijakan ini hanya diberikan kepada administrator domain, tetapi esensi serangan tidak berubah; dalam kasus kebijakan lain, hanya host yang dikendalikan yang berubah).
Hitung hak semua GPO di domain menggunakan PowerView . Get-NetGPO | % {Get-ObjectAcl -ResolveGUIDs -Name $_.Name}
Pengguna Ragnar memiliki hak untuk mengubah GPO yang memiliki GUID 6AC1786C-016F-11D2-945F-00C04FB984F9. Untuk menentukan host di domain mana yang menerapkan kebijakan ini, jalankan perintah berikut Get-NetOU -GUID "6AC1786C-016F-11D2-945F-00C04FB984F9" | % {Get-NetComputer -AdSpath $_}
Mendapat host dc1.jet.lab.Mengetahui kebijakan khusus yang dapat diedit pengguna Ragnar dan host yang menerapkan kebijakan ini, kita dapat melakukan berbagai tindakan pada host dc1.jet.lab.Di bawah ini adalah opsi untuk menggunakan GPO Alat New-GPOImmediateTask dan SharpGPOAbuse memungkinkan Anda untuk:- Jalankan tugas di penjadwal tugas
- Tambahkan hak pengguna (SeDebugPrivilege, SeTakeOwnershipPrivilege, dll.)
- Tambahkan skrip yang berjalan setelah startup
- Tambahkan pengguna ke grup lokal
Misalnya, tambahkan tugas di penjadwal tugas untuk mendapatkan sesi Meterpreter: New-GPOImmediateTask -TaskName test3 -GPODisplayName "Default Domain Controllers Policy" -CommandArguments '<powershell_meterepreter_payload>' -Force
Setelah eksekusi, tugas yang dijadwalkan muncul tes
Dan sesi Meterpreter muncul.Untuk
menghapus tugas yang dijadwalkan, Anda perlu menjalankan perintah berikut: New-GPOImmediateTask -Remove -Force -GPODisplayName SecurePolicy
Kesimpulan
Dalam artikel kami hanya memeriksa beberapa vektor serangan. Tampilan seperti Enumerate Accounts dan semprotan Kata Sandi , MS14-068 , sekelompok Bug Printer dan Delegasi Tanpa Batasan , serangan terhadap Exchange ( Penguasa , PrivExchange , ExchangeRelayX ) dapat secara signifikan memperluas cakupan serangan.Teknik serangan dan metode penjepit (Tiket emas, Tiket perak, Pass-The-Hash, Over pass hash, SID History, DC Shadow, dll.) Terus berubah, dan tim pertahanan harus selalu siap untuk jenis serangan baru.