İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.



Folder Security Management
Fırat Boyan 16.10.2018 2

WMIC Komutu ile Kullanıcı SID Bilgisini Sorgulama Nasıl Yapılır?

Active Directory Domain yapısı içerisindeki objelerin her birinin benzersiz birer kimlik numarası vardır. Bu benzersiz kimlik numaraları, Active Directory nesnesi oluşturulduğunda otomatik olarak atanır ve bu değişken, benzersiz numaralara Relative Identifier (RID) adı verilmektedir. Relative Identifier (SID) atanırken, Active Directory nesnesinin oluşutuğu Domain altında ilgili Domain'in kimlik numarasıyla beraber atanır ki buna da SID-Security Identifier denir. Her Domain'in kendine ait sabit değerde bir Security Identifier (SID) numarası vardır ve atanan her Relative Identifier (SID) numarası, bu SID-Security Identifier numarası altında atanır. İşte bu noktada, Active Directory ortamında oluşturulan nesnelere RID numarası ataması işlemini RID Master FSMO rolü gerçekleştirir.

RID Master FSMO rolü, varsayılan olarak Domain yapısının ilk kurulduğu Primary Domain Controller üzerindedir. RID Master FSMO rolünü tutan Domain Controller, kendi üzerinde 1,073,741,823 (1 milyar 73 milyon 741 bin 832) adet RID numarası barındırır. Domain ya da Forest ortamındaki RID Master FSMO rolünü tutmayan diğer Domain Controller'lar üzerlerinde de sadece 500 adet RID numarası bulunurlar (Windows Server 2016 ile birlikte bu sayı 500'e çıkartıldı) ve bu RID Master FSMO rolünü tutmayan Domain Controller'lar, bu rakam tükenmeden hemen önce RID master FSMO rolünü üzerinde tutan Domain Controller ile iletişime geçerek, tekrar bir 500 tane daha RID numarası talebinde bulunurlar. Tüm bu işlemleri yerine getiren RID Master FSMO rolüdür.

Bu makalemde sizlere WMIC (Windows Management Interface Command) komutu ile Active Directory üzerinden User SID (Security Identifier) bilgilerini nasıl çekebileceğinizi göstereceğim.

Active Directory Üzerinden SID Bilgisi Sorgulama

Kullanıcı hesabı oluşturulduğunda, sadece görünür bir ad değil, sistemin perde arkasında tanıyabileceği benzersiz bir kimlik de tanımlanmış olur. Bu kimlik SID olarak adlandırılır ve sistemin güvenlik mekanizmalarında kullandığı temel referans noktasıdır. Kullanıcı adı değiştirilebilir ya da aynı adla yeni bir hesap açılabilir; ancak SID bir kez üretildiğinde sabit kalır ve sistem tüm izin atamalarını, log girişlerini ve kaynak erişimlerini bu bilgiye bağlı olarak işler.

SID yapısı sadece düz bir sayı dizisi değildir. İçeriğindeki segmentler bir domain'e mi ait olduğunu, Local bir kullanıcı mı olduğunu ya da ön tanımlı sistem hesaplarından biri mi olduğunu ayırt etmek için özel biçimde düzenlenmiştir. Bu yapının sonundaki parça RID olarak bilinir ve aynı domain içindeki her kullanıcıya farklı olarak atanır. Domain SID kısmı, tüm kullanıcılar için ortakken, RID kullanıcıya özgüdür. Sistem, bu kombinasyon üzerinden nesneleri birbirinden ayırt eder ve bu sayede aynı domain içinde aynı ada sahip iki kullanıcı dahi olsa, SID'leri farklı olduğu için sistem açısından karıştırılmaz.

Bu bilgilere ulaşmanın en doğrudan ve etkili yolu WMI üzerinden yapılan sorgulamalardır. useraccount sınıfı üzerinden alınan veriler sayesinde sistemde tanımlı tüm kullanıcıların SID değerleri pratik bir şekilde görüntülenebilir. Komut satırından alınan bu listeleme, GUI üzerinden manuel olarak toplanması hem zaman alacak hem de hataya açık olacak bilgileri eksiksiz ve tek seferde ortaya çıkarır. Domain ortamlarında çalışıldığında bu çıktı hem Local hem de domain kullanıcılarının SID'lerini içerir. Yapının sonunda görülen sayısal desenler genellikle tanıdık örnekler sunar. Örneğin, sonu 500 ile biten SID çoğunlukla varsayılan Administrator hesabına, 501 Guest hesabına, 502 ise krbtgt hesabına karşılık gelir.

SID bilgisi, sadece kullanıcıyı tanımak için değil, aynı zamanda geriye dönük sistem analizleri için de kullanılır. Profil klasörlerinde kalan eski kullanıcı izlerini ayıklamak, silinmiş kullanıcı hesaplarının kaynaklara bıraktığı etkileri temizlemek ya da Event Log üzerinden belirli bir hesaba ait girişleri takip etmek gibi işlemler doğrudan SID verisiyle mümkün hale gelir. Bu noktada kullanıcı adı bir anlam ifade etmez çünkü silinmiş ya da yeniden adlandırılmış olabilir. Ancak SID her zaman aynı kalır ve sistem geçmişinde iz sürerken en güvenilir kaynak bu olur.

Gerçekte bir kullanıcıyı tanımlayan şey sadece adı değil, arkasındaki SID değeridir. Sistem bu bilgiye göre karar verir, Log’ları buna göre yazar, kaynak erişimlerini bu doğrultuda denetler. Bu yüzden SID bilgisine ulaşmak, bir sistem üzerindeki kullanıcı hareketlerini anlamak ya da izlerini sürmek isteyen herkes için ilk ve en sağlam adımdır.

Domain Controller üzerinde aşağıdaki komutu çalıştırdığımda Active Directory üzerindeki tüm User SID bilgisine erişebiliyorum.

wmic Useraccount get name,sid

wmic komutu ile user sid bilgisi

SID, Windows güvenlik modeli içinde her kullanıcının, grup hesabının ve diğer güvenlik nesnelerinin kimliğini belirlemek için kullanılan benzersiz bir tanımlayıcıdır. Özellikle yetkilendirme, erişim kontrolü ve kullanıcı profili yönetimi gibi konularda büyük öneme sahiptir.

Active Directory ortamında veya yerel bir sistemde kullanıcı SID bilgisini almak, kullanıcı hesaplarını doğrulamak, erişim izinlerini yönetmek ve belirli bir SID’ye karşılık gelen kullanıcıyı tespit etmek için oldukça faydalıdır. Komutun çıktısında görülen her SID değeri, ilgili kullanıcı hesabına özel olarak üretilmiş olup, bu bilgiyi kullanarak hesap bazlı güvenlik politikaları oluşturmak mümkün hale gelir.

Belirli bir SID için Active Directory'de User Name sorgulama

SID bilgisinin doğrudan bilindiği ancak hangi User nesnesine ait olduğunun bilinmediği durumlarda yapılacak en sağlam adım, bu SID’nin Active Directory üzerindeki karşılığını sorgulamaktır. SID yapısı, domain'e ait segmentleri ve kullanıcıyı tanımlayan RID kısmını bir araya getirerek sistem için eşsiz bir kimlik oluşturur. Ancak bu eşleşmenin hangi kullanıcı adına karşılık geldiği yalnızca sistem içinden alınacak net bir sorgu ile öğrenilebilir.

Windows Management Instrumentation (WMI) altyapısı üzerinden çalışan useraccount sınıfı, bu tür birebir SID eşleşmelerine doğrudan yanıt verebilir. SID değeri, Where filtresiyle belirtildiğinde sistemde tanımlı kullanıcılar taranır ve eşleşen kayıt varsa ilgili Name alanı döndürülür. Böylece SID’yi doğrudan referans alarak, kullanıcı adı bilgisini net biçimde elde etmek mümkün olur. Bu yöntem, özellikle log kayıtlarında ya da Access Control List (ACL) üzerinde görülen ama adı silinmiş kullanıcıların arkasındaki kimliği ortaya çıkarmak için tercih edilir.

SID her zaman sabit kaldığı için, kullanıcı adı değişse bile bu tür bir sorgu doğru kullanıcıyı gösterir. Domain ortamlarında her User nesnesi için benzersiz bir RID üretildiğinden, SID yapısının tamamı sistem içinde eşsizdir. Bu nedenle yapılacak her sorgu, yalnızca bir kullanıcıyla eşleşir ve kesin sonuç verir.

Komut satırında yapılan bu sorgulama, çoğu zaman GUI üzerinden erişilemeyen bilgiyi birkaç saniyede görünür kılar. Kullanıcının sadece SID’ine sahip olunduğunda, onun kimliğini doğrulamanın en doğrudan ve hatasız yoludur.

Bir Domain Controller üzerinde aşağıdaki komut çalıştırıldığında, verilen SID’in hangi User'a ait olduğu bilgisi net olarak elde edebiliriz.

wmic Useraccount where sid="S-1-5-21-1683079158-1701141633-1973495690-1112" get name

wmic komutu ile user sid bilgisi

Windows ortamında belirli bir SID değerinin hangi kullanıcıya ait olduğunu öğrenmek için WMIC Useraccount where sid="SID_Değeri" get name komutu kullanılır. Bu komut, verilen SID ile ilişkili kullanıcı hesabının ismini döndürerek hesap doğrulama, yetkilendirme ve erişim yönetimi gibi işlemlerde büyük kolaylık sağlar.

Özellikle Active Directory ortamlarında, belirli bir SID'nin hangi kullanıcıya ait olduğunu öğrenmek, eski veya silinmiş hesaplarla ilgili analiz yaparken kritik bir adımdır. Aynı zamanda, sistemde bulunan log kayıtları, dosya izinleri veya güvenlik olayları gibi yerlerde rastlanan SID değerlerinin hangi kullanıcıya ait olduğunu belirleyerek daha iyi güvenlik politikaları oluşturabilirsin.

Bu yöntemi kullanarak kullanıcı hesaplarının doğruluğunu kontrol etmek, erişim yetkilendirmelerini yönetmek ve güvenlik olaylarını analiz etmek çok daha hızlı ve verimli hale gelir.

Belirli bir User Name için Active Directory'de SID sorgulama

Sistemde kayıtlı bir kullanıcıya ait SID değerini öğrenmek gerektiğinde, doğrudan kullanıcı adını referans alarak yapılan sorgulama en hızlı ve risksiz yöntemdir. SID bilgisi, kullanıcıya atanmış benzersiz bir kimlik olduğundan, log analizleri, izin denetimleri ya da profil eşleştirmeleri gibi işlemler için bu veriye ihtiyaç duyulur. Kullanıcı adı biliniyorsa, bu ad üzerinden SID değerine erişmek doğrudan mümkündür.

Windows Management Instrumentation (WMI) altyapısını kullanan bu sorgulama, useraccount sınıfı üzerinde Name filtresiyle çalışır. Kullanıcının adı belirtildikten sonra, sistem o kullanıcıya ait SID değerini getirir. Bu işlem sırasında herhangi bir GUI aracı kullanılmaz ve tamamen komut satırı üzerinden gerçekleşir. Özellikle Scripting ile çalışan otomasyonlarda, kullanıcı adından SID üretme ihtiyacının karşılığı tam olarak budur.

SID değeri sistem içinde değişmeyen tekil bir kimlik olduğundan, kullanıcıya dair daha önce atanmış kaynak izinleri, Log geçmişi ya da profiller bu bilgiye göre tanımlanır. Bu nedenle SID'e ulaşmak sadece kullanıcıyı tanımak için değil, aynı zamanda bu kullanıcıya bağlı geçmiş ilişkileri görmek için de kritik bir adımdır.

Domain ortamında bu sorgu, hem Local hem domain kullanıcıları için çalışabilir. Ancak özellikle domain SID yapısında, SID değeri domain SID + RID birleşimiyle oluşturulduğu için, sistem her kullanıcı için benzersiz bir sonuç üretir.

Komut satırından birkaç saniyelik bir sorguyla, kullanıcı adına ait SID bilgisini elde etmek hem pratik hem de doğrudan hedefi gösteren bir çözümdür. Özellikle kullanıcı adı bilinen ama SID değeri bilinmeyen durumlarda bu yöntem ilk tercih olmalıdır.

Yine Domain Controller üzerinde aşağıdaki komutu çalıştırdığımda Active Directory Üzerinde belirttiğim bir User'ın SID bilgisine erişebiliyorum.

wmic Useraccount where name='User10' get sid

wmic komutu ile user sid bilgisi

Windows ortamında belirli bir kullanıcı hesabının SID bilgisini öğrenmek için WMIC Useraccount where name='KullanıcıAdı' get sid komutu kullanılır. Bu komut, sistemde tanımlı kullanıcı hesabına karşılık gelen SID değerini döndürerek yetkilendirme, erişim yönetimi ve güvenlik kontrolleri için önemli bir veri sağlar.

Özellikle Active Directory ve yerel hesap yönetimi süreçlerinde, kullanıcıların benzersiz kimliklerini belirlemek ve doğru hesaplara erişim izinleri vermek için SID doğrulaması yapmak gerekir. Kullanıcı adı bazında SID değerine erişmek, log analizi, dosya izinleri kontrolü ve yetki yönetimi gibi işlemleri daha hızlı ve doğru şekilde gerçekleştirmeye yardımcı olur.

Bu yöntem sayesinde hesap denetimleri, güvenlik olay analizleri ve kullanıcı erişim izinlerinin yönetimi daha sistematik ve güvenilir hale gelir. 

Logon olmuş kullanıcıya ait SID bilgisini sorgulama

Aktif olarak oturum açmış kullanıcıya ait SID bilgisine doğrudan erişmek gerektiğinde, sistemde tanımlı User nesnesi üzerinden statik tanımlama yapmadan işlem yürütülebilir. Bu gibi durumlarda, kullanıcı adının komut içinde manuel belirtilmesine gerek kalmadan, ortam değişkeni kullanılarak dinamik bir sorgulama yapılabilir.

%username% değişkeni, o an oturum açmış kullanıcıyı temsil eder ve komut satırı içinde çağrıldığında otomatik olarak geçerli session kullanıcı adı ile eşleşir. Windows Management Instrumentation (WMI) sorgusu bu değişkeni, useraccount sınıfı içinde name filtresine uyguladığında, sistem bu kullanıcıya karşılık gelen SID değerini üretir. Böylece herhangi bir kullanıcı adı sabitlenmeden, oturum açan kişiye ait benzersiz kimlik bilgisi elde edilir.

Bu yöntem, tek bir komutla birden fazla bilgisayarda aynı görevi yerine getirecek otomasyon senaryoları içinde sıkça kullanılır. Özellikle kullanıcı profilleriyle eşleşen izinlerin veya Log analizlerinin yapılmasında, kiminle çalışıldığını tespit etmek için en net verilerden biri SID olduğu için bu sorgu doğrudan hedefe ulaşmayı sağlar.

Komut satırında kullanılan bu yapı, hem hata riskini ortadan kaldırır hem de manuel işlem yükünü azaltır. Her kullanıcı için benzersiz olan SID değeri, sistemin kimlik doğrulama ve erişim denetimi süreçlerinde temel referanstır. %username% üzerinden yapılan bu çağrı sayesinde, hangi kullanıcıyla oturum açıldığına bağlı olarak otomatik bir SID tespiti sağlanmış olur.

wmic Useraccount where name='%Username%' get sid

wmic komutu ile user sid bilgisi

Windows ortamında oturum açmış kullanıcının SID bilgisini hızlıca öğrenmek için WMIC Useraccount where name='%Username%' get sid komutu kullanılır. Bu komut, o an oturum açmış olan kullanıcının hesap bilgilerini dinamik olarak çeker ve SID değerini döndürür.

Manuel olarak kullanıcı adını yazmaya gerek kalmadan, %Username% değişkeni kullanılarak anlık oturum bilgisi alınabilir. Bu yöntem, kullanıcı doğrulama, erişim denetimi ve güvenlik analizleri için pratik bir çözüm sunar. Özellikle log analizleri, dosya izinleri kontrolü ve kullanıcı kimliklendirme süreçlerinde SID bilgisinin hızlı bir şekilde çekilmesi büyük kolaylık sağlar.

Bu yöntem sayesinde, mevcut oturum sahibi olan kullanıcının SID bilgisine anında ulaşmak mümkün hale gelir, böylece kimlik doğrulama süreçleri ve erişim yönetimi çok daha hızlı ve verimli bir şekilde gerçekleştirilebilir.

Bu makalede, Windows sistemlerde bir kullanıcının SID bilgisini WMIC komutu ile nasıl sorgulayabileceğini adım adım gösterdik. Özellikle wmic useraccount get name,sid gibi doğrudan ve sade komutlarla, herhangi bir Script yazmadan sistem üzerinde kullanıcı-SID eşleşmesini görüntülemenin ne kadar kolay olduğunu gördük. Bu tarz işlemler, sistemdeki kullanıcı hesaplarını tespit etme ya da olay günlüklerinde SID bazlı izleme yapma gibi senaryolarda çok işe yarıyor.

Komutun sunduğu çıktı, GUI üzerinden ulaşılması daha zahmetli olan SID bilgisine hızlıca erişim sağlıyor. Ayrıca bu yöntemin Domain'e bağlı olmayan makinelerde de geçerli olması, onu hem lokal hem de offline analizlerde pratik hale getiriyor. Özellikle audit, forensics ya da erişim takibi gibi konularla ilgilenenlerin elinin altında olması gereken basit ama etkili bir araç diyebiliriz.

Bir PowerShell komutuna kıyasla belki daha sınırlı ama kullanımı o kadar yalın ki, hızlıca bir terminal açıp ihtiyaç duyduğun anda işini görebiliyor. Bazı senaryolarda gereksiz karmaşıklığı önlemek için bu kadar sade bir yaklaşım yeterli oluyor.

Sonuçları aldıktan sonra SID ile farklı sistemlerde ya da Active Directory üzerindeki nesneler arasında ilişki kurmak çok daha kolay hale geliyor. Gereksiz süslemelere girmeden, işini yapan sade bir komutla neler yapılabileceğini bu örnek üstünden net şekilde göstermiş olduk.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



YORUMLAR
Bu makaleye 2 yorum yapıldı.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.


02.02.2019 yalçın
merhabalar zaman ayırıp yazdıgınız makale için teşekkürler sorum olacak size actiVe directory da oturumun açan bir kullanıcının bilgilerini iis ile yani localhost ta nasıl bir form hazırlayarak bilgileri ordan ekrana dökebilirim hangi kullanıcı otuuru açmışsa onun adı yazsın örnk hoş geldin ahmet yılmaz

06.02.2019 FIRAT BOYAN
Merhaba, bu sorunun cevabı yazılımla ilgili. Ama kodlama yapılırken LDAP yolu üzerinden DS sorgusuna benzer bir sorgulama gerçekleştirecek bir yapılanmaya gidilmeli.