SAM Yerel Hesapları¶
SAM neleri içerir¶
Güvenlik Hesapları Yöneticisi (SAM) kovanı, yerel hesap kayıtlarını saklar. Juntei; hesap adlarının,
RID'lerin, profil/açıklama alanlarının, hesap denetim bayraklarının, son oturum açma/parola zaman
damgalarının, sayaçların, parola ipuçlarının, Microsoft hesabı bağlantısının, profil yollarının ve
Windows'un hesabı oturum açma arayüzünden gizleyip gizlemediğinin kodunu çözer.
Bu, yeni oluşturulmuş yerel yöneticileri, etkinleştirilmiş uykudaki hesapları, parola değişikliklerini, gizli hesapları ve yanal hareket için hazırlanmış hesapları bulmak için yararlıdır.
En iyi sonuç: yerel SAM, hesabı kaydedilmiş durumla temsil ediyordu. Bu, eksiksiz bir kimlik doğrulama geçmişi değildir ve etki alanı hesaplarını tanımlamaz.
Konum ve toplama¶
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SAM.LOG1
C:\Windows\System32\config\SAM.LOG2
Kovanı ve günlükleri yeterli ayrıcalıklarla/ham erişimle toplayın. Ana bilgisayar kimliği, bir
koleksiyondaki ilgili SYSTEM kovanıyla zenginleştirilebilir.
Analist için uyarılar¶
- Bu komut Active Directory etki alanı kullanıcılarını değil, yerel hesapları ayrıştırır.
- Juntei, parola karmalarını kasıtlı olarak çıkarmaz.
- RID 500, yeniden adlandırılmış olsa bile yerleşik Administrator hesabıdır; ad tek başına yeterli değildir.
LastLogonve sayaçlar kayıt defteri durumudur; oturum başına eksiksiz bir denetim izi değildir.HiddenFromLogonUIbir hesabı oturum açma ekranından gizler; hesabı devre dışı bırakmaz.- Yerleşik
DefaultAccountveWDAGUtilityAccountmeşru olarak gizli olabilir. - Hasarlı/eksik bir
Fdeğerinden kaynaklanan boş hesap bayrakları, etkin olarak yorumlanmamalıdır. NamesKeyLastWrittenUTC, hesap adının kaydedilme bağlamına yaklaşık bir değer verir; ancak garanti edilmiş bir oluşturma zamanı değildir.
Juntei ile ayrıştırma¶
Usage: juntei parse-registry sam <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SAM hives
-f, --file <FILE> Parse one SAM hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--rid <RID> Parse one decimal RID (example: 500)
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry sam -f SAM -o accounts.csv
juntei parse-registry sam -f SAM --rid 500 -t jsonl | jq .
juntei parse-registry sam -d evidence/ -t jsonl \
| jq 'select(.HiddenFromLogonUi == true or (.AccountFlags | index("disabled") | not))'
Çıktı alanları¶
| Alan | Yorumlama |
|---|---|
Host, SourcePath |
Ana bilgisayar bağlamı ve tam SAM kovanı. |
RID |
Göreli Tanımlayıcı (Relative Identifier). Güçlü bir hesap kimliği pivotu; 500 yerleşik Administrator hesabıdır. |
User |
Güncel yerel hesap adı. Yeniden adlandırılabilir; RID ile ilişkilendirin. |
FullName, Comment, UserComment |
Açıklayıcı metin; saldırgan tarafından kontrol edilebilir ve kılık değiştirme (masquerading) incelemesi için yararlıdır. |
AccountFlags |
Devre dışı, kilitli, parola gerekmez, normal hesap, parola süresi dolmaz gibi kodu çözülmüş durumlar. |
AccountFlagsValue |
Doğrulama ve desteklenmeyen bitler için ham sayısal bayraklar. |
CountryCode, CodePage |
Hesabın yerel ayar/kod sayfası meta verileri; genellikle bağlamdır, atıf değildir. |
LastLogonUTC, LastLogonWholeSecondsUTC |
Tam hassasiyette ve tam saniye uyumluluğunda aynı son oturum açma durumu. Eksiksiz bir geçmiş değildir. |
PasswordLastSetUTC |
Kaydedilmiş parola değiştirme zamanı. Beklenmedik derecede yeni/eski değerleri inceleyin. |
AccountExpirationUTC |
Sonlu olduğunda yapılandırılmış sona erme tarihi. Null, hiçbir zaman/ayarlanmamış anlamına gelebilir. |
LastFailedLogonUTC |
SAM durumunda kaydedilmiş son başarısız yerel oturum açma; Security olaylarıyla doğrulayın. |
FailedLogonCount, LogonCount |
Windows'a özgü güncelleme davranışına sahip kümülatif/durum sayaçları; kesin olay sayısı olarak değil, bağlam olarak kullanın. |
PasswordHint |
Kullanıcının sağladığı hassas ipucu; parola kalıplarını açığa çıkarabilir. Uygun şekilde işleyin. |
InternetUserName |
Varsa bağlı Microsoft hesabı kimliği. |
HiddenFromLogonUI |
Arayüzde gizleme durumu. Yüksek RID'leri/beklenmedik özel hesapları inceleyin; devre dışı anlamına gelmez. |
HomeDirectory, HomeDrive, ProfilePath, LogonScript |
Yerel hesap ortamı/oturum açma yapılandırması; olağandışı betikler/UNC yolları kalıcılığa işaret edebilir. |
KeyLastWrittenUTC |
RID hesap anahtarının değişme zamanı. Alana özgü değil, anahtar düzeyindedir. |
NamesKeyLastWrittenUTC |
Kullanıcı adı eşleme anahtarının değişme zamanı; hesap yaşam döngüsü için yararlı bir yaklaşık değer. |
LastLogonFiletime, PasswordLastSetFiletime, AccountExpirationFiletime, LastFailedLogonFiletime |
Doğrulama ve özel gözcü (sentinel) değerlerin işlenmesi için korunan ham 64 bit FILETIME değerleri. |
TransactionLogStatus, LogsApplied |
Kayıt defteri yeniden oynatma bağlamı. |
Problems |
F/V/Names arasındaki uyuşmazlık, eksik girdiler, bozuk ofsetler veya kod çözme hasarı. |
İnceleme stratejisi¶
- RID, ad, bayraklar, profil yolu ve
NamesKeyLastWrittenUTCdeğerlerini ana bilgisayarın temel durumuyla karşılaştırın. - Etkin RID 1000+ hesapları, parola gerektirmeyen, süresi dolmayan, gizli veya yakın zamanda değiştirilmiş hesapları inceleyin.
- Security 4720/4722/4724/4732 olayları, oturum açma olayları, profil oluşturma ve uzak etkinlikle ilişkilendirin.
- Bir hesap toplamadan önce kaldırıldıysa kayıt defteri kurtarma geçmişinde arayın.
- Meşru hazırlama/varsayılan hesapları, saldırgan tarafından etkileşimli olarak oluşturulmuş hesaplardan ayırt edin.