Microsoft Defender Karantinası¶
Karantina neleri içerir¶
Microsoft Defender karantinası, bir tespite ilişkin meta verileri ve karantinaya aldığı kaynakların
şifrelenmiş içeriğini korur. Juntei; tehdit etiketini, karantina zamanını, özgün mantıksal ve fiziksel yolları,
dosya meta verilerini, sahibi, indirme kaynağını gösteren Zone.Identifier verisini, karmaları ve bütünlük
sorunlarını raporlamak için Entries, ResourceData ve Resources kayıtlarını birbiriyle ilişkilendirir.
Bu artefakt, tespiti/düzeltmeyi ilk kaydeden olay günlüklerinden daha uzun süre varlığını sürdürebilir. Ayrıca yalıtılmış tersine mühendislik için şüpheli baytların birebir aynısını da koruyabilir.
En iyi sonuç: Defender, adı geçen tehdit/kaynak için karantina kaydını kaydedilen zamanda oluşturmuştur. Ürün etiketi kötü amaçlı yazılımın bağımsız bir kanıtı değildir ve karantina tek başına önceden yürütme gerçekleştiğini kanıtlamaz.
Konum ve toplama¶
C:\ProgramData\Microsoft\Windows Defender\Quarantine\
Entries\{GUID}
ResourceData\<prefix>\<SHA-1>
Resources\<prefix>\<SHA-1>
Quarantine dizininin tamamını toplayın. Eşleşen içerik/kayıt dosyaları olmayan bir girdi yine de
kullanışlı meta veriler sağlar, ancak dosya baytlarını veya hesaplanan karmaları veremez.
Güvenlik ve analist için uyarılar¶
- Çıkarılan içerik büyük olasılıkla kötü amaçlıdır. Yalıtılmış bir analiz sistemi kullanın ve asla çalıştırmayın.
ThreatName, Defender'ın o andaki imzası/sınıflandırmasıdır. Hatalı pozitifler ve sonradan yeniden sınıflandırma mümkündür.- Karantina zamanı düzeltme/karantina zamanıdır; indirme, oluşturma veya yürütme zamanı olmak zorunda değildir.
- Karantinaya alınmış bir dosya, yürütülmeden önce veya çalıştıktan sonra tespit edilmiş olabilir.
- Özgün yol ve Zone.Identifier değerlidir, ancak bulunmayabilir veya saldırganın denetiminde olabilir.
- Sahipsiz (orphan) kayıtlar; saklama/temizleme, eksik toplama veya bozulma sonucunda oluşabilir.
- Juntei boyutları, CRC'leri, kimlikleri ve karmaları doğrular; kurtarılan baytlara güvenmeden önce
Problemsalanını inceleyin.
Juntei ile ayrıştırma¶
Usage: juntei parse-file defender-quarantine <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find quarantine folders
-f, --file <FILE> Parse one Entries\{GUID} file
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
--extract <DIR> Extract dangerous content with a .quarantined extension
-C, --clobber Overwrite confirmed output targets
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv
juntei parse-file defender-quarantine -d evidence/ -t jsonl \
| jq '{QuarantineTime, ThreatName, Path, SHA256: .Content.SHA256, Problems}'
# Only in an isolated malware-analysis environment
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv --extract extracted/
Örneğin tool.exe, tool.exe.quarantined olur. Yardımcı akışların adında türleri de yer alır;
örneğin tool.exe.Zone.Identifier.quarantined. Juntei ayrıca yürütme iznini de kaldırır.
Uzantı ve izinler kazara yürütme olasılığını azaltır, ancak kurtarılan baytlar yine de
kötü amaçlı yazılım olarak ele alınmalıdır.
Çıktı alanları¶
| Alan | Yorumlama |
|---|---|
Record |
resource, kaynağı olmayan girdi, orphan-content veya orphan-record. Sahipsiz kayıtlar eksik bağlantıyı/toplamayı ortaya çıkarır. |
QuarantineTime |
UTC olarak Defender karantina/düzeltme zamanı; yürütme zamanı değildir. |
ThreatName, ThreatID |
Defender sınıflandırması ve sayısal kimliği. Üretici kararı/bağlamı olarak değerlendirin. |
ResourceType |
Dosya, kayıt defteri anahtarı, hizmet, başlangıç öğesi, zamanlanmış görev veya başka bir kaynak kategorisi. |
Path, PhysicalPath |
Özgün mantıksal/fiziksel konum. Birincil ilişkilendirme pivot noktasıdır; yazımı birebir koruyun. |
FileSize |
Kaynak meta verilerinin kaydettiği boyut. ContentSize ve MFT ile karşılaştırın. |
CreationTime, LastAccessTime, LastWriteTime |
Karantinaya alınan kaynak için yakalanan meta veriler; karantina zamanından ayrıdır ve zaman damgası oynamaya (timestomping) açıktır. |
Attr |
Kaydedilen dosya öznitelikleri. Gizli/sistem durumu faydalı bağlam sağlayabilir. |
Owner |
Kurtarılan güvenlik tanımlayıcısındaki SID; sahiplik, yürüten kullanıcı olmak zorunda değildir. |
ZoneID, ReferrerURL, HostURL |
Zone.Identifier içindeki indirme bölgesi ve URL değerleri. Mevcut olduğunda kaynağa ilişkin güçlü ipuçlarıdır; ADS bulunmayabilir/kaldırılmış olabilir. |
ContentSize |
Kurtarılan birincil içeriğin gerçek boyutu. Kaydedilen FileSize ile karşılaştırın. |
MD5, SHA1, SHA256 |
Kurtarılan baytlardan hesaplanır. Modern içerik tanımlaması için SHA-256 kullanın; birlikte çalışabilirlik için hepsini saklayın. |
Streams |
Kurtarılan akışların türleri/adları/boyutları; ADS, güvenlik verileri veya bir kayıt defteri kovanı içerebilir. |
ResourceID |
Kaynak meta verisi/içerik kayıtlarını birbirine bağlayan tanımlayıcı. |
EntryID |
Karantina girdisi GUID'i; Defender geçmişi/olay kanıtlarıyla da bağlantı sağlar. |
ScanID |
Kaynakları/eylemleri gruplamak için Defender tarama tanımlayıcısı. |
QuarantineFolder |
Kök kaynak klasörü/ana bilgisayar ayrımı. |
EntryFile, ContentFile, ResourceRecordFile |
Satırı oluşturmak için kullanılan kaynak dosyaların tam yolları. Doğrulama için vazgeçilmezdir. |
ExtractedFile |
--extract tarafından yazılan birincil karantina dosyası; birincil çıkarma yapılmadığında boştur. Yardımcı akışlar yanına yazılır. auto-parse -x bunu kendi çıktı dizinine göre verir (./HOST1/SecurityProducts/DefenderQuarantined/…). |
Problems |
Bütünlük uyuşmazlığı, eksik içerik, kimlik uyuşmazlığı, hasar veya sahipsiz kayıt bağlamı. Gizlemeyin. |
JSON/JSONL, CSV'nin birleştirilmiş metni yerine yapılandırılmış kaynağı, akış listesini, kayıt girdilerini ve tüm ilişki ayrıntılarını korur.
Çıkarma davranışı¶
Karantina girdisi özgün dosya adını kaydetmişse Juntei bu adı, sonuna .quarantined uzantısı
ekleyerek kullanır. Sahipsiz veya dosya olmayan kaynaklar için içerik tanımlayıcısını kullanır ve dosya adı
çakışmalarını çözmek için tanımlayıcıyı ekler. Windows'ta geçersiz olan dosya adı karakterleri değiştirilir. Güvenlik
akışları ve alternatif akışlar birincil dosyanın yanına yazılır. Her güvenlik akışı için ayrıca okunabilir
bir metin raporu da oluşturulur. Juntei yürütme iznini kaldırır;
farklı içeriğe sahip mevcut dosyaların üzerine -C olmadan yazılmaz. Bu denetimler kazaları azaltır, ancak
baytları güvenli hâle getirmez.
Kurtarılan güvenlik tanımlayıcısının okunması¶
Bir .security.quarantined dosyası ikili biçimde Windows güvenlik meta verileri içerir, bu nedenle bir
metin düzenleyicide okunamaz. Bu dosya ayrı bir yedek akıştır, yürütülebilir dosyanın başka bir kopyası değildir. Juntei,
parse-file defender-quarantine --extract veya auto-parse -x ile çıkarma yapılırken bunun kodunu otomatik olarak çözer:
tool.exe.quarantined Original file content; treat as malware
tool.exe.security.quarantined Original binary security descriptor, preserved unchanged
tool.exe.security_descriptor.txt Readable ownership and permission report
Metin dosyasının adı, varsa çakışma tanımlayıcısı da dahil olmak üzere gerçek ikili dosyanın adını izler. Üretilen metin sıradan UTF-8'dir ve diğer çıkarılan dosyalarla aynı üzerine yazma korumalarını kullanır. Raporun kaynağıyla eşleştirilebilmesi için ikili dosyanın adını, bayt sayısını ve SHA-256 değerini içerir.
| Rapor alanı | Nasıl yorumlanır |
|---|---|
| Sahip ve birincil grup | Tanımlayıcıda kaydedilen SID'ler. Bilinen SID'lere BUILTIN\Administrators veya NT AUTHORITY\SYSTEM gibi adlar verilir. Diğer SID'ler çözümlenmeden kalır; tanıdık bir RID tek başına yerel/etki alanı hesabını adlandırmak için yeterli değildir. Sahiplik, bir dosyayı kimin oluşturduğunu veya çalıştırdığını kanıtlamaz. |
| Denetim bayrakları | Özgün sayısal bayraklar ve adları; ACL varlığı, devralma ve koruma dahil. |
| DACL | Sıralı erişim denetimi girdileri (ACE'ler): izin verme/reddetme türü, hesap SID'i, izin maskesi, haklar ve devralma bayrakları. Bunlar kaydedilmiş girdilerdir; bir kullanıcının belirteci (token) için etkin erişimin hesaplanması değildir. |
| SACL | Kaydedilmiş denetim (audit) veya zorunlu bütünlük girdileri. Denetim başarı/başarısızlık bayrakları bir erişim geçmişini değil, yapılandırmayı açıklar. SACL'nin bulunmaması tüm denetimin devre dışı olduğunu göstermez. |
| Nesne GUID'leri | Nesneye özgü ACE'ler için isteğe bağlı GUID'ler; nesneye özgü haklar, yanlışlıkla dosya hakları olarak etiketlenmek yerine sayısal olarak korunur. |
| SDDL | Sahip, grup ve desteklenen ACL girdilerinin Security Descriptor Definition Language gösterimi. Denetim bayraklarına ayrıca bakın. Herhangi bir bileşen hasarlı veya desteklenmiyorsa Juntei kısmi bir SDDL dizesi üretmez. |
| Kod çözme durumu ve sorunlar | Gerekçeleriyle birlikte complete veya incomplete. Desteklenmeyen ACE'ler raporda ham onaltılık biçimleriyle korunur. Çıkarma başarılı olduğunda özgün ikili dosya her zaman korunur. Kod çözme sorunları karantina kaydının Problems alanında da görünür. |
Bulunmayan bir DACL, NULL DACL ve boş DACL ayrı ayrı raporlanır. Bulunmayan veya NULL bir DACL isteğe bağlı (discretionary) hiçbir erişim kısıtlaması sağlamaz; boş bir DACL ise erişim veren hiçbir ACE içermez. Diğer Windows erişim denetimleri ve ayrıcalıkları yine de önemlidir. Devralınan ve yalnızca devralınan (inherit-only) ACE'ler açıkça işaretlenmiş olarak kalır.
Örneğin, Administrators grubuna devralınmış tam denetim veren bir girdi şöyle görünebilir:
Entry 1: ALLOW (type 0x00)
Flags: 0x10 (INHERITED_ACE)
Account: S-1-5-32-544 (BUILTIN\Administrators)
Access mask: 0x001F01FF
Rights: Full control (FILE_ALL_ACCESS)
Kod çözücü; Windows, macOS ve Linux üzerinde Windows API'leri, Python veya hesap araması olmadan çevrimdışı çalışır. Temel izin verme/reddetme/denetim/alarm ACE'lerinin, nesne ACE'lerinin ve zorunlu bütünlük etiketlerinin kodunu çözer. Koşullu, geri çağırma (callback), kaynak özniteliği ve diğer desteklenmeyen ACE'ler açıkça tanımlanır ve ham biçimde korunur; erişim koşulları değerlendirilmez. Hasarlı bir tanımlayıcı, diğer akışların çıkarılmasını durdurmaz.
İnceleme stratejisi¶
ThreatName,Path,QuarantineTime,EntryIdve karmalardan başlayın.Problemsalanını doğrulayın ve kaydedilen boyutu kurtarılan içerikle karşılaştırın.- SHA-256 değerini diğer ana bilgisayarlara, EDR, sandbox ve tehdit istihbaratı verilerine pivot olarak kullanın.
- Özgün yolu/zamanı
$MFT, USN Journal, Prefetch, Amcache ve olay günlükleriyle ilişkilendirin. - İlk erişimi araştırmak için URL/bölge alanlarını kullanın, ancak tarayıcı/proxy/DNS kanıtlarıyla doğrulayın.