Cara menonton SDDL dan tidak mematahkan mata Anda pada titik koma



Jalan saya ke keamanan informasi dimulai dengan penemuan mengejutkan: "aman ≠ dienkripsi". Pernyataan ini sekarang terlihat sederhana dan jelas, dan pada tahun pertama kesadaran akan fakta ini menghasilkan efek yang sebanding dengan bom atom mental. Keamanan informasi diserang dengan memperluas batas-batas area subjek: ternyata kriptografi hanya satu garis pertahanan, dan pada akhirnya ada juga hukum, organisasi, dan hanya fisik. Salah satu aspek teoretisnya adalah "Semua masalah keamanan informasi dijelaskan oleh akses subjek ke objek." Dia menghafal, menggambar model akses kredensial dan diskresioner, diberitahu, berlalu dan lupa.

Saya berspesialisasi dalam analisis keamanan aplikasi Windows. Cukup sering, studi tentang hak akses yang berbeda justru mengambil bagian penting dari penelitian ini. Untuk mengotomatiskan proses mencari hak akses yang aneh atau tidak benar, saya harus memahami SDDL (Security Descriptor Definition Language). Yang tertarik belajar membaca hak dalam bentuk SDDL (misalnya, sesuatu seperti O: SYG: SYD: (A ;; CCLCSWLOCRRC ;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRR ;;;; (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) ) dan berkenalan dengan utilitas saya untuk bekerja dengan deskriptor dalam format ini, selamat datang di cat.

Format SDDL


SDDL adalah string dengan deskripsi hak akses dalam bentuk teks. Paling sering terdiri dari 3 bagian: pemilik, grup, dan hak akses DACL. Kadang-kadang bagian SACL ditambahkan - bagian audit (jika tindakan dengan objek sesuai dengan aturan SACL, acara sistem akan dibuat yang mudah dilacak oleh berbagai sistem). Deskriptornya terlihat seperti ini:

O: <owner> G: <group> D: <aturan akses DACL> S: <aturan audit SACL>



Dengan demikian, contoh di atas dapat diuraikan sebagai berikut:
  • O: SY
  • G: SY
  • D: (A ;; CCLCSWLOCRRC; ;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWD ;; BA ;;

Pemilik dan grup dapat diindikasikan sebagai SID dari pengguna atau grup OS, atau sebagai singkatan khusus. Misalnya, dalam hal ini, pemilik dan grup SY adalah Akun Sistem Lokal (NT AUTHORITY \ SYSTEM). Daftar singkatan (sayangnya, tidak lengkap) dapat ditemukan di sini .

Aturan akses terdiri dari enumerasi flag DACL dan string ACE (Access Control Entries). Analisis rinci ACE disajikan di sini , kami akan mempertimbangkan yang paling penting. Setiap garis ACE tertutup dalam tanda kurung di mana data dipisahkan oleh tanda titik koma.
Yang paling menarik adalah kelompok pertama, ketiga dan terakhir. Ini adalah jenis akses (diizinkan "A", dilarang "D"), daftar tindakan dan nama subjek akses. Aturan DACL pertama dari contoh di atas: (A ;; CCLCSWLOCRRC ;;; IU), kami akan pertimbangkan secara rinci.



  • "A" - aturan memungkinkan tindakan terhadap subjek;
  • "CC", "LC", "SW", "LO", "CR", "RC" - daftar tindakan yang diizinkan;
  • "IU" - singkatan ini berarti grup Pengguna Log-masuk Interaktif.

Masih memahami apa sebenarnya yang diizinkan. Apa arti "CC", "LC", "SW" yang misterius ini, "LO", "CR", "RC"?

Di sini kita menunggu jebakan lain - tidak selalu mungkin untuk menunjukkan tindakan secara tepat dengan reduksi. Mereka, dengan demikian, spesifik konteks. Misalnya, jika kita berbicara tentang hak untuk bekerja dengan layanan, maka WP berarti "menghentikan layanan", jika itu tentang file, lalu "eksekusi", dan jika tentang folder, lalu "lintasi" (akses ke file dalam folder dengan nama, jika itu tidak mungkin daftar isi). Beberapa deskripsi ada di sini , beberapa di sini , dengan dunia di utas.

Hei, Anda sangat merindukan bendera DACL, bendera ACE, warisan
Ya, benar, ini semua sangat penting dan menarik, tetapi tidak begitu umum. Saya fokus pada massa. Dalam kasus manifestasi tunggal dari bendera yang tidak biasa, akan lebih mudah dipahami dalam mode manual.

Otomasi


Utilitas Sysinternals sangat membantu saya, yaitu Monitor Proses dan Akses Periksa (juga dikenal sebagai procmon dan accesschk). Yang pertama memungkinkan Anda untuk melihat akses file dan registri secara real time, dan yang kedua memungkinkan Anda untuk mengumpulkan informasi dari OS pada deskriptor keamanan.

Omong-omong, di OS itu sendiri, jendela dengan hak terlihat seperti ini jika seseorang belum melihat:



Sayangnya, output accesschk tidak dapat disaring dengan mempersempit permintaan hak untuk tindakan tertentu. Monitor Proses hanya menampilkan panggilan aktual pada saat tertentu dan Anda mendapatkan permintaan yang terlalu akurat yang tidak secara langsung terpengaruh. Selain itu, saya ingin memiliki memo pada kelompok pengguna seperti apa TIDAK atau NS , dan tindakan apa yang tersembunyi di balik CC dan RC.

Jadi sebuah utilitas sederhana dilahirkan untuk melihat dan memfilter data SDDL.

Bagaimana cara menggunakan


Bekerja dengan utilitas itu sederhana, hanya tiga langkah:

  1. Dapatkan data SDDL.
  2. Tentukan filter aturan.
  3. Lihat laporan.



Baca lebih lanjut tentang setiap langkah.

Mendapatkan SDDL. Untuk mendapatkan catatan SDDL, Anda dapat menggunakan fungsi yang ada di utilitas (tombol 1, 2, 3 atau 4), atau unduh daftar yang Anda terima sebelumnya (tombol 5). Harap dicatat bahwa permintaan untuk hak akses dibuat atas nama pengguna yang meluncurkan SDDL Viewer, jadi dalam beberapa situasi ada baiknya menjalankan program tidak hanya sebagai pengguna biasa, tetapi juga sebagai administrator. Nah, secara umum, bidang itu sendiri dengan garis-garis SDDL dapat diedit - Anda setidaknya dapat menulis ulang secara manual.

Penyaringan dilakukan sesuai dengan dua parameter: grup pengguna dan hak akses. Daftar grup dan pengguna didasarkan pada semua pengguna yang disebutkan dalam SDDL. Perhatikan kotak centang Translate SIDs (6) - jika diinstal, maka SID pengguna dan grup akan diterjemahkan ke dalam nama relatif terhadap komputer saat ini jika memungkinkan. Daftar hak diatur sedikit lebih cerdik - Anda perlu memilih kategori hak (jika SDDL diisi dengan utilitas itu sendiri, maka kategori yang diperlukan dipilih secara otomatis) Selain itu, hak-hak yang hadir dalam SDDL lebih jelas disorot dalam daftar hak.

Laporan ini hanyalah hasil dekripsi SDDL dan penerapan filter. Anda dapat menemukan informasi lebih rinci pada setiap baris jika Anda memilihnya dalam daftar (ya, dengan fungsi ini saya mendapat lelucon, yang memunculkan sedikit riset tentang. NET internal ).

Ringkasan


Kode sumber tersedia di github . File biner juga ada di bagian Rilis .

Paket utilitas saya:

  1. Tambahkan pencarian ke bidang input SDDL - hanya penyaringan saja tidak cukup.
  2. Tambahkan parameter peluncuran yang memungkinkan pembuatan laporan tanpa bagian visual.
  3. Mungkin Anda harus menambahkan padding SDDL dari proses, folder bersama, dan printer?

Saya akan senang mendengar saran di komentar.

Source: https://habr.com/ru/post/id442662/


All Articles