Mengeksploitasi Windows Domain
Oleh
chmood
Rekomendasi umum yang saya sering menemukan adalah bahwa sistem menghadap internet tidak harus menjadi bagian dari Windows domain aktif. Sebagai latihan yang menarik, saya telah memutuskan untuk melihat topik ini sedikit lebih dalam dan mengeksplorasi keuntungan apa (jika ada) akses ke anggota domain yang benar-benar memberikan.
Dalam skenario ini saya akan menunjukkan bagaimana untuk mendapatkan hak istimewa dalam domain Windows hanya menggunakan alat-alat yang tersedia pada standar Windows menginstal. Aku akan bekerja di bawah asumsi bahwa:
Saya memiliki akses ke terminal umum (atau yang serupa) dengan up-to-date anti-virus.
Saya tidak memiliki akses administratif pada host.
Saya tidak memiliki akses ke alat pihak ketiga.
Setelah terhubung ke workstation Windows, potongan pertama dari informasi yang saya ingin mencari adalah namespace domain. Hal ini dapat dilakukan beberapa cara yang berbeda:
nbtstat –A <IP-Address>
net config workstation
Berikutnya, karena saya bekerja dari anggota domain, saya bisa query domain controller dan memeriksa apakah itu mengetahui adanya domain tambahan:
net view /domain
*Catatan: Hal ini sering menguntungkan untuk menargetkan domain lainnya seperti yang digunakan untuk pengujian dan pengembangan. Lingkungan ini akan sering mengandung host di mana kurang penekanan ditempatkan pada keamanan.
Berikutnya saya tertarik untuk mengetahui apa yang ada di host domain. Untuk ini, saya bisa query kontroler domain:
net view /domain:<DOM> > hosts.txt
Tergantung pada ukuran jaringan listing ini bisa cukup besar. Saya telah diarahkan output ke file teks untuk mencegah terus query kontroler domain.
* Catatan: Perintah ini tidak akan biasanya merespon dengan setiap host Windows di jaringan. Hanya host tersedia melalui NetBIOS diketahui kontroler domain.
Karena aku pada domain Windows, saya dapat cukup yakin beberapa mesin akan memiliki file sharing diaktifkan. Jaringan besar sering menjadi tuan rumah untuk segudang saham file dengan "menarik" data pada mereka. Ini tidak biasa untuk menemukan informasi pribadi atau bahkan masuk kredensial duduk di workstation atau server saham.
Untuk mendapatkan daftar sistem dengan saham aktif saya dapat permintaan setiap anggota domain dengan menggunakan:
for /f %i in (hosts.txt) do @(net view \\%i >> shares.txt 2>nul)
Perintah ini akan loop atas file yang berisi anggota domain (yang diperoleh dari perintah sebelumnya) dan query setiap host untuk saham terbuka. Kesalahan (yaitu sistem tidak dapat diakses) dibuang.
Seperti disebutkan sebelumnya, dalam beberapa kasus, Anda mungkin beruntung dan menemukan apa yang Anda cari dalam saham tersebut. Demi latihan ini, bagaimanapun, mari kita asumsikan tidak ada temukan menarik.
Berikutnya Saya tertarik pada pengguna dan kelompok apa yang ada di domain. Tujuannya di sini adalah untuk mengangkat hak istimewa saya pada domain (ingat, saya hanya memiliki 'Pengguna hak pada satu sistem sejauh). Untuk mendapatkan daftar pengguna domain dan kelompok saya dapat permintaan kontroler domain sebagai berikut:
net user /domain > users.txt
net group /domain > groups.txt
Setelah informasi ini dikumpulkan Saya ingin mencari "menarik" account pengguna. Username yang mengandung kata-kata "temp", "test", "tst", "tmp", "helpdesk", "ftp" semua yang menarik di sini sebagai pengujian dan akun sementara sering memiliki password yang sederhana.
type users.txt | find “test”
Jika tidak ada stand-out username dalam daftar di atas saya dapat mengarahkan usaha saya di query kelompok:
type groups.txt | find “helpdesk”
Kontroler domain kemudian dapat bertanya untuk membuang pengguna milik kelompok yang:
net group “helpdesk” /domain
*CATATAN: Saya telah memilih untuk menargetkan rekening non-administratif di sini karena mereka biasanya memiliki password lemah. Namun, hal ini tentunya tidak pernah terdengar memiliki password yang lemah pada akun milik "Domain Admin". Selalu layak memeriksa :)
Setelah memilih sejumlah pengguna domain untuk target saya sekarang dapat mencoba untuk berkompromi account tersebut melalui menebak password. Saya bisa mencapai ini melalui upaya koneksi SMB terhadap host pada domain. Yang tuan rumah saya pilih di sini tidak masalah karena otentikasi terjadi terhadap kontroler domain dan tidak tuan rumah itu sendiri.
for /f %i in (users.txt) do @(for /f %j in (passwords.txt) do @(echo Trying %i:%j... >> success.txt && net use \\wombat /u:%i %j 1>>success.txt && net use \\wombat /del))
Script ini akan loop atas daftar nama pengguna yang ditargetkan (di users.txt) dan mencoba upaya password sederhana terhadap setiap account dari file password.txt. Success.txt akan menyimpan log dari tebakan sandi sukses. Perlu diingat di sini saya hanya menargetkan buah tergantung rendah. Hanya beberapa password sedang berusaha untuk setiap account untuk tidak mengunci keluar account apapun.
Dengan adaptasi kecil script ini saya dapat memilih untuk menargetkan setiap akun di seluruh domain:
for /f %i in (users.txt) do @( echo Trying %i:%j... >> success.txt && net use \\wombat /u:%i %i 1>>success.txt && net use \\wombat /del)
Di sini saya memindai seluruh domain untuk account yang menggunakan nama pengguna mereka sebagai password mereka. Hal ini kadang-kadang dikenal sebagai password pemindaian horizontal.
Manfaat scanning horisontal menjadi jelas dalam lingkungan dengan basis pengguna yang besar. Peningkatan jumlah rekening sering meningkatkan kemungkinan menemukan account dengan password yang lemah. Kesempatan mengunci akun ini juga secara signifikan menurun karena hanya sejumlah kecil tebakan password dicoba terhadap setiap akun.
Script di atas juga bisa tweak untuk menebak password dari account administratif lokal default (RID 500) pada mesin saat ini. Menyediakan akun ini aktif, hal itu tidak dapat dikunci (berarti tebakan sandi tak terbatas).
Setelah mandat telah diperoleh untuk domain akun langkah berikutnya adalah untuk mencari tahu apa mengakses account memiliki. Memang, mungkin menjadi kasus bahwa hanya layanan tertentu pada host tertentu dapat diakses dari akun ditangkap.
Langkah berikutnya dalam proses ini adalah untuk mengetahui layanan apa yang tersedia pada domain. Ini akan cukup sederhana dengan nmap ... tapi ingat, kita tidak memiliki akses ke alat pihak ketiga! Untuk menyiasati ini saya telah beradaptasi Ed Skoudis 'FTP pelabuhan baris perintah scanner:
for /f %i in (hosts.txt) do @(for /f %j in (ports.txt) do @(echo Checking %i:%j... & echo %i:%j >> success.txt & echo open %i %j > commands.txt & echo quit >> commands.txt & ftp -n -s:commands.txt 1>>success.txt))
Script ini mencoba untuk membuat sambungan ke setiap port di ports.txt (saya sudah memilih 21 \ ftp) untuk setiap anggota domain di hosts.txt (ditemukan pada awal latihan ini). Ia menggunakan built-in FTP klien Windows untuk membaca dalam perintah (bendera-s) dari commands.txt untuk membuat setiap koneksi. Informasi log disimpan di success.txt.
Setelah layanan jaringan yang tersedia telah dipetakan Saya kemudian dapat mencoba untuk mengeksploitasi / mendapatkan akses ke layanan ini:
Dalam posting ini saya telah menunjukkan beberapa contoh bagaimana keanggotaan domain dapat disalahgunakan untuk mendapatkan hak istimewa pada domain Windows '. Karena sifat verbose melekat domain Windows, penyerang memiliki keuntungan untuk mendapatkan informasi berharga tentang jaringan target dalam waktu yang relatif singkat. Yang mengatakan, bagaimanapun, penyerang terampil selalu memiliki (dan akan selalu) dapat menembus pertahanan jaringan terlepas dari memiliki keanggotaan domain atau tidak.
Komentar