Periksa bahwa pengguna yang diberikan memiliki hak istimewa yang diberikan

16

Diberikan sepasang pengguna dan hak istimewa, saya perlu menentukan apakah pengguna memiliki hak istimewa di server. Berikut ini benar dalam pengaturan saya:

  • Server adalah bagian dari domain tetapi bukan pengontrol domain
  • Ada beberapa domain dengan hubungan kepercayaan dalam infrastruktur
  • Kadang-kadang pengguna (lokal, domain, atau dari domain yang berbeda) dapat menjadi milik grup lokal dengan kemampuan mereka berada di beberapa grup lain (domain atau lokal) yang milik grup lokal, sebagai lawan dari milik grup secara langsung.

Skenario contoh untuk poin terakhir:

  • User1 milik grup TeamA di DomainA
  • DomaimA \ TeamA adalah anggota DomainB \ SpecialAccess
  • DomainB \ SpecialAccess adalah anggota DomainB \ DomainAdmins
  • Akhirnya DomainB \ DomainAdmins milik grup Administator lokal
  • Grup Administrator Lokal memiliki hak istimewa SeRemoteInteractiveLogonRight

Sekarang Jika saya memiliki pada input DomainA \ User1 dan SeRemoteInteractiveLogonRight saya harus sampai pada jawaban Ya atau Tidak. Jadi saya membuka Kebijakan Lokal di mesin, perhatikan grup apa yang terdaftar dengan hak saya juga tertarik lalu pergi ke manajer server dan melihat apa yang ada di anggota grup dan kemudian saya perlu melihat apa anggota grup mana pun dalam grup ini dan seterusnya.

Saya punya firasat bahwa itu bisa lebih mudah. Saya sangat senang ketika saya menemukan utilitas AccessChk. Ini berlangsung selama tiga menit yang membuat saya menyadari bahwa itu hanya mendaftar hubungan langsung, sehingga pengguna dalam grup tidak akan terdaftar.

Sekarang saya menduga bahwa akan mungkin untuk menggabungkan hasil dari AccessChk beberapa cara sehingga saya dapat memeriksa apakah pengguna milik salah satu kelompok yang kembali AccessChk, tetapi mengingat bahwa itu bukan domain tunggal tetapi beberapa dari mereka saya tidak yakin bagaimana mendekati ini. Output AccessChk juga tampaknya tidak membedakan antara grup dan pengguna.

EDIT : Dengan semangat tidak jatuh ke dalam jebakan masalah XY, apa yang benar-benar perlu saya lakukan adalah memastikan bahwa pada sekelompok server tidak ada akun pengguna spesifik yang digunakan sebagai identitas kumpulan aplikasi IIS memiliki hak SeInteractiveLogonRight atau SeRemoteInteractiveLogonRight. Saya tidak punya masalah dengan bagian IIS, tetapi langkah terakhir memeriksa akun yang menentang hak istimewa adalah sesuatu yang saya perjuangkan menemukan cara mudah untuk memeriksa. Saya juga ingin mengotomatiskan cek karena ini adalah sesuatu yang perlu dilakukan secara teratur.

Andrew Savinykh
sumber
6
Ini kedengarannya seperti pekerjaan untuk ... Rangkaian Kebijakan yang Dihasilkan (RSoP)! technet.microsoft.com/en-us/library/cc758010%28v=WS.10%29.aspx
Davidw
1
@zespri - Jawaban saya adalah sampah dan saya menghapusnya. Hak pengguna SeInteractiveLogonRight dan SeRemoteInteractiveLogonRight ditangani secara berbeda dari hak istimewa "normal" dan sepertinya melaporkannya akan menjadi masalah. Jika saya menemukan solusi untuk Anda, saya akan mengirim jawaban lain tetapi, untuk sekarang saya tidak punya apa-apa.
Evan Anderson
1
@ Davidvidw - RSoP bermasalah karena default Kebijakan Keamanan Lokal tidak akan tercermin dalam output. Jadi, setiap entri "Tidak Dikonfigurasi" hanya akan muncul sebagai "Tidak Dikonfigurasi" dan Anda tidak akan benar-benar melihat prinsipal apa yang diberikan hak oleh Kebijakan Keamanan Lokal. Akhirnya, bahkan jika Anda mendapatkan daftar kepala sekolah dari Kebijakan Grup Anda akan terjebak memperluas keanggotaan grup (berpotensi lintas domain, juga) untuk mereplikasi fungsi OS. Ini sebenarnya ternyata pertanyaan yang jauh lebih menantang daripada yang saya harapkan.
Evan Anderson
1
@EvanAnderson Tepat! Ketika saya diminta untuk memperkirakan berapa lama waktu yang saya perlukan, itu sepertinya tugas yang mudah. Dan setelah beberapa hari googling dan mencoba hal yang berbeda ... tidak ada. Saat ini rencana saya adalah untuk mem -pinchoke GetTokenInformation dengan TokenPrivileges kelas informasi token. Tentu saja saya perlu mencari tahu dulu bagaimana cara mendapatkan token itu sendiri. Rute ini tampaknya yang paling menjanjikan saat ini.
Andrew Savinykh
@zespri - NtOpenProcessToken () mungkin merupakan cara terbaik untuk mendapatkan token. (Lihat leeholmes.com/blog/2006/07/21/… )
Evan Anderson

Jawaban:

1

Token akses tidak memiliki informasi tentang hak, hanya tentang hak istimewa.

Yang perlu Anda lakukan adalah ini:

  • Temukan proses pekerja IIS yang sesuai dengan kumpulan aplikasi Anda. Karena Anda tahu identitas kumpulan aplikasi yang seharusnya mudah dengan menyebutkan semua proses dengan nama proses pekerja, dan memfilter yang memiliki identitas. Jika ada lebih dari satu, Anda dapat menggunakannya.
  • Gunakan GetTokenInformation dengan kelas informasi TokenGroup, bukan TokenPrivilege pada token proses. Hasilnya akan memberi Anda semua grup transitif identitas milik juga. Ini berarti bahkan yang tidak langsung.
  • Sekarang Anda dapat mengulangi kelompok-kelompok ini dan memanggil LsaEnumerateAccountRight di masing-masing grup dan menyusun informasi. Ini akan memberi Anda apa yang Anda inginkan.

Di atas bergantung pada keberadaan proses (dan token) yang sesuai dengan identitas akun. Dalam skenario Anda ini seharusnya tidak menjadi masalah. Dalam skenario saat ini merupakan masalah, Anda dapat mencoba dan menggunakan pencarian Direktori Aktif untuk atribut yang dihitung Token-Groups . Artikel ini mencantumkan beberapa pendekatan cara melakukannya.

Andrew Savinykh
sumber