Series · 1 partsAnatomy of a Red Team OperationPart 1 · You are here
- 1Red Team Domain Admin'e Ulaştı. Tatbikat Yine de Başarısız Oldu.You are here
60 saniyede Red Team başarısı
Kırmızı takım Domain Admin yetkisine ulaştı. Ekran görüntüsü temizdi, yol tekrarlanabilirdi ve yönetici sunumunda herkesin beklediği cümle yer alıyordu: alan adı tehlikeye girmişti.
Egzersiz yine başarısız oldu.
Kimse, dizin erişiminin tehdit etmesi gereken işletme işleminin hangisi olduğunu yazmamıştı. SOC bir uyarı gördü ancak bunu kimlik yoluna bağlayamadı. Operatörler, yetki elde edilmeden önce veya sonra gerçekleştirilen eylemlerin hangileri olduğunu kanıtlayamadı. Kapanış çağrısından sonra geçici hesap hala aktif kaldı. Son rapor erişimi kanıtladı, ancak organizasyonun algılayıp, karar verip, sınırlayabildiğini veya kurtarabildiğini kanıtlamadı.
Bu serinin başlangıcı olan ayrım şudur:
Domain Admin bir yetenektir. Kırmızı takım hedefi, bu yeteneğin sağlayabileceği kontrol edilen işletme etkisini, oluşturması gereken sinyalleri ve savunmacının yapması gereken kararı tanımlar.
Kullanışlı bir operasyon NT AUTHORITY\\SYSTEM, uid=0, Global Administrator veya Domain Admin’de son bulmaz. Zararlı etkiyi yaratmadan zinciri bir adım daha ileri takip eder: hangi korunmuş sisteme erişilebilir hale gelir, yolu kesmesi beklenen kontrol hangisidir, eylemi kaydeden telemetri kaydı nedir, sınırlama kararını kim verir ve ortam bilinen duruma nasıl döner.
Bu makale sentetik bir Windows ve Active Directory dosyası sunmaktadır. Gerçek bir müşteri ihlalinin raporu değil; metodolojisi ve kontrol edilen laboratuvar iş akışıdır. Komutlar ya yerel kanıt yönetimi veya okuma-yazma olmayan dizin ve olay-günlük sorgulamalarıdır. Hesap oluşturmaz, grup üyeliğini değiştirmez, kimlik bilgilerini dökmez, kalıcılık kurmaz, kontrolleri devre dışı bırakmaz veya alan adını değiştirmez.
Sentetik vaka dosyası
Bu makaledeki kurgusal organizasyon sipariş-bırakma platformu işletmektedir. Bu platform tarafından kullanılan yönetim katmanını yönetmek için ayrıcalıklı bir dizin grubu vardır. Kırmızı takım, izole bir laboratuvar alan adı içinde onaylanmış standart test kimliği ve onaylanmış bir iş istasyonu ile başlar. Takım dizini sayabilir ve önceden hazırlanmış ayrıcalıklı bir test hesabının yönetim sınırına erişebileceğini gösterebilir. Siparişleri, üretim verilerini, kimlik politikasını, izleme sistemlerini, yedeklemeleri veya alan adı yapılandırmasını değiştirmesine izin verilmez.
Teknik milat ile operasyonel hedef arasındaki fark kasıtlıdır:
- Teknik milat: Onaylanmış ayrıcalıklı kimliğin yerleşik Domain Admins grubunun üyesi olduğu ve laboratuvar yönetim sınırına yetkilendirilebildiği kanıtlanabilir.
- İş hipotezi: Kimlik kontrol düzleminin ihlali, bir saldırganın sipariş-bırakma yönetimi yoluna erişmesine izin verebilir.
- Güvenli kanıt: Etkili kimliği ve onaylanmış yönetim hedefini çözüp, herhangi bir işletme işlemi veya yapılandırma değişikliğinden önce durdurun.
- Savunucu yükümlülüğü: Ayrıcalıklı oturum açma ile keşif aktivitesini ilişkilendirin, korunan yolu belirleyin ve tatbikat penceresi içinde belgelenmiş bir containment kararı verin.
- Kurtarma yükümlülüğü: Test erişimini iptal edin veya devre dışı bırakın, kanıtı koruyun ve operasyonun ardından test yetkisinin veya parçanın hayatta kalmadığını bağımsız olarak kanıtlayın.
Domain Admin’e ulaşmak yalnızca ilk maddeyi kanıtlar. Sipariş platformunun erişilebilir olduğunu, bir işlemin onaylanabileceğini, SOC’un yolu gördüğünü veya ortamın geri yüklendiğini tek başına kanıtlamaz.
Korunması gereken kararla başlayın
MITRE ATT&CK taktikleri saldırganın taktiksel hedeflerini tanımlar: ilk erişim, yürütme, yetki yükseltmesi, keşif, yatay hareket ve bir saldırganun bir eylem gerçekleştirmesinin diğer nedenleri. Bu vücut dili davranışı isimlendirmek için kullanışlıdır. Egzersiz hedefi değildir.
“Yetki yükseltme testi”, operatöre nerede çalışması gerektiğini söyler. Organizasyonun neyin doğru kalması gerektiğini söylemez. Daha güçlü bir hedef, korunmuş bir kararı ve güvenli bir durma noktasını adlandırır:
Onaylanmış standart bir kimliğin ihlali sipariş-bırakma yönetim sınırına erişebilir mi; siparişi değiştirmeden önce durdurun; SOC’un kimlik yolunu belirlemesini ve test hesabını devre dışı bırakıp bırakmayacağına karar vermesini gerektirin; ardından hesap ve tüm test parçalarının kaldırıldığını veya iptal edildiğini kanıtlayın.
Tekniği seçmeden önce bu sözleşmeyi yazarım. Kompakt makine-okunabilir bir sürüm, kapsam kayması ve retrospektif başarı kriterlerini zorlaştırır:
operation_id: RT-LAB-2026-001
objective:
protected_decision: "release an order to fulfillment"
hypothesis: "directory control can reach the order administration boundary"
safe_proof: "resolve effective access and authenticate to the approved lab management host"
forbidden_effects:
- "change an order or application configuration"
- "modify directory groups, policy, monitoring, or backups"
- "access production or third-party systems"
success_conditions:
red:
- "prove the approved identity path without crossing the business transaction boundary"
blue:
- "correlate the privileged logon and discovery action to the operation window"
- "record an allow, investigate, or contain decision with an owner"
recovery:
- "revoke test authority and verify no account, token, task, service, or artifact survives"
stop_conditions:
- "resolved target differs from the approved lab asset"
- "telemetry collection is unavailable"
- "account lockout, service degradation, or unexpected data access occurs"
Bu dosya yetki değildir. Onaylanmış planın imzalanmış ifadesidir. NIST SP 800-115 değerlendirme planlamasını, koordinasyonu, yürütümü, veri yönetimini, raporlamayı ve düzeltmeyi bağlantılı aktiviteler olarak ele alır; Katılım Kuralları şablonu plana kısıtlamaları tanımlamak için açık bir yer verir. Önemli operasyonel eklemeyi, bu kısıtlamaları çalışma zamanında tekrar çözmektir.
İmzalanmış kurallar çalışma zamanı belirsizliğini çözmez
Katılım Kuralları dizin keşfini yetkilendirebilir. 02:10’da operatör hala dc01.lab.example’nin beklenen laboratuvar kontrolcüsü olup olmadığını, kabukta bulunan kimliğin atanmış olanı olup olmadığını, olay toplayıcısının sağlıklı olup olmadığını ve bir sonraki eylemin okuma-yazma olmadığını bilmelidir.
Yürütmeden önce yanıtlanabilecek bir eylem matrisi kullanın:
| Önerilen eylem | Çalışma zamanında çözülen hedef | Beklenen etki | Yetki | Onay | Durdurma koşulu |
|---|---|---|---|---|---|
| Yerleşik ayrıcalıklı-grup üyeliğini saymak | Onaylanmış laboratuvar alan adı SID | Sadece dizin okuma | Standart denetim kimliği | Ön-onaylı | Alan adı SID’i veya kontrolcü dosya ile farklıdır |
| Önceden hazırlanmış ayrıcalıklı test kimliğiyle yetkilendirme | Onaylanmış yönetim hostu | Bir etkileşimli veya ağ oturumu açma | İsimlendirilmiş test kimliği | Zaman sınırlı operatör onayı | Host, hesap, rota veya pencere farklıdır |
| Güvenlik olaylarını sorgula | Onaylanmış toplayıcı veya laboratuvar hostu | Sadece günlük okuma | Savunucu olay-okuyucu rolü | Ön-onaylı | Toplayıcı boşluğu veya saat kayması toleransı aşıyor |
| İşletme işlemini egzersiz et | Sipariş-bırakma uygulaması | İşletme durumunu değiştirecek | Yok | Açıkça yasaklanmış | Erişim kararında dur; gönderme yapma |
| Grup üyeliğini değiştir veya kalıcılık oluştur | Alan adı kontrol düzlemi | Kalıcı kimlik değişikliği | Yok | Açıkça yasaklanmış | Çalıştırma yapma |
Bu matris, tanıdık bir başarısızlığı önler: Kontrolün koruması gereken işletme etkisini gerçekleştirmek yoluyla yetki yolunu kanıtlama. İşlem onay sayfasına erişmek erişim kararını kurarsa, işlemi göndermek etkidir, kanıt değildir.
Eylemden önce kanıt zarfını oluşturun
Operatör ve savunucu kontrol edilen eylem öncesinde saat, dosya tanımlayıcısı, onaylanmış sistemler ve toplama penceresi konusunda anlaşmalıdır. Aşağıdaki PowerShell, onaylanmış operatör iş istasyonunda yerel bir kanıt dizini oluşturur, çalışma zamanı kimliğini ve alan adını kaydeder, denetim-politikası temelini yakalar ve bir transkript başlatır. Active Directory’yi değiştirmez.
Sadece yetkilendirilmiş laboratuvar iş istasyonunda çalıştırın. Müşteri adı, kimlik bilgisi veya sır içermeyen bir dosya tanımlayıcısı kullanın.
Import-Module ActiveDirectory
$caseId = "RT-LAB-2026-001"
$evidenceRoot = Join-Path $env:ProgramData "JankeSec-RedTeam\\$caseId"
New-Item -ItemType Directory -Path $evidenceRoot -Force | Out-Null
$transcriptPath = Join-Path $evidenceRoot "$caseId-transcript.txt"
Start-Transcript -Path $transcriptPath -Force
$windowStartUtc = (Get-Date).ToUniversalTime()
$domain = Get-ADDomain
$controller = Get-ADDomainController -Discover -Service PrimaryDC
[pscustomobject]@{
CaseId = $caseId
WindowStartUtc = $windowStartUtc.ToString("o")
OperatorHost = $env:COMPUTERNAME
OperatorIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
DomainDnsRoot = $domain.DNSRoot
DomainSid = $domain.DomainSID.Value
ResolvedDc = $controller.HostName
ResolvedDcAddress = ($controller.IPv4Address -join ",")
} | ConvertTo-Json | Set-Content -LiteralPath (Join-Path $evidenceRoot "runtime-context.json")
whoami.exe /all | Out-File (Join-Path $evidenceRoot "whoami-all.txt")
auditpol.exe /get /category:* | Out-File (Join-Path $evidenceRoot "audit-policy.txt")
Burada durun. DomainDnsRoot, DomainSid, ResolvedDc, operatör kimliği ve IP adresini imzalanmış dosyaya karşılaştırın. Tanıdık bir host adı yeterli değildir. Çözülen herhangi bir değer farklıysa, test dizine değmeden önce durma koşulu tetiklenmiştir.
auditpol /get, yapılandırılmış yerel denetim politikasının kanıtıdır, olayların SIEM’e ulaştığının kanıtı değildir. Çıktının oturum açma, özel oturum açma, işlem oluşturma ve dizin-hizmeti değişikliği denetlemesinin beklenip beklemediğini göstermesi gerekir, ancak boru hattı sağlığı ayrı bir uçtan uca sinyali gerektirir.
Capability’yi etkiye dönüştürmeden ölçün
Yerleşik Domain Admins grubunun alan adı-göreceli tanımlayıcısı 512’dir. İngilizce grup adını varsaymak yerine mevcut alan adı SID’sinden çözülmelidir. Aşağıdaki sorgu okuma-yazma değildir ve yalnızca nesne sınıfı, hesap adı, SID ve ayırt edici ismi dışa aktarır. Sırları veya üyeliği değiştirmeyi içermeyen bir sorgudur.
$domainAdminSid = [System.Security.Principal.SecurityIdentifier]::new(
"$($domain.DomainSID.Value)-512"
)
$domainAdmins = Get-ADGroup -Identity $domainAdminSid
$actionStartUtc = (Get-Date).ToUniversalTime()
$members = Get-ADGroupMember -Identity $domainAdmins -Recursive |
Select-Object objectClass, SamAccountName, SID, DistinguishedName |
Sort-Object objectClass, SamAccountName
$memberExport = Join-Path $evidenceRoot "domain-admin-members.csv"
$members | Export-Csv -LiteralPath $memberExport -NoTypeInformation
$actionEndUtc = (Get-Date).ToUniversalTime()
[pscustomobject]@{
CaseId = $caseId
Action = "Read built-in Domain Admins recursive membership"
AttackMapping = "T1069.002 Permission Groups Discovery: Domain Groups"
StartUtc = $actionStartUtc.ToString("o")
EndUtc = $actionEndUtc.ToString("o")
ResolvedGroup = $domainAdmins.DistinguishedName
ResultCount = $members.Count
SideEffect = "Directory reads only"
} | ConvertTo-Json | Set-Content -LiteralPath (Join-Path $evidenceRoot "action-01.json")
Bu sorgu, sorgulayan kimlik tarafından gözlemlenen mevcut grup üyeliğini kurar. Her üyenin yönetim hostuna oturum açabileceğini, yuva veya yetkili yolların kontrol yolunun tek rotası olduğunu, belirli bir kimlik bilgisinin kullanılabilir olduğunu veya korunmuş uygulamanın dizin otoritesini kabul ettiğini kanıtlamaz. Bunlar ayrı iddialar ve ayrı negatif kontrollerdir.
Eğer laboratuvar Atomic Red Team kullanıyorsa, çalıştırmadan önce seçilen testi inceleyin:
Invoke-AtomicTest T1069.002 -ShowDetailsBrief
Invoke-AtomicTest T1069.002 -CheckPrereqs
Bir teknik tanımlayıcısını onay olarak kabul etmeyin. Invoke-AtomicRedTeam projesi testlerin sistemleri istenmeyen bir duruma bırakabileceğini uyarır ve çalışan toplama ve EDR’ye sahip yetkilendirilmiş bir test makinesi önerir. Tam atomik tanımı, girdileri, ön koşulları, temizliği ve sonuçlanan komutları gözden geçin; ardından seçilen test numarasını ve sürümünü eylem matrisine bağlayın. Bu ilk makale için açık SID-tabanlı okuma yeterlidir.
Savunucu testi kırmızı komut bittiği yerde başlar
Red Team transkripti operatörün niyetini ve gözlemlerini kanıtlar. Endpoint’in, Domain Controller’ın, collector’ın, SIEM’in veya analistin ne gördüğünü kanıtlamaz. Bunlar bağımsız kanıt düzlemleridir.
Windows olay kimlikleri korelasyon noktaları sağlar, sonuçlar değil:
4624, erişilen sistemde başarılı bir oturum açmayı kaydeder.4672, yeni bir oturuma atanmış hassas yetkileri kaydeder; ancak yaygın sistem aktivitesi de bunu oluşturabilir; Domain Admin ile eş anlamlı değildir.4688, denetim alt-kategorisi etkinleştirildiğinde işlem oluştumayı kaydeder. Komut satırı alanları ek komut satırı işlem denetleme ayarını gerektirir ve hassas argümanları ortaya çıkarabilir.4728,4732ve4756güvenlik-etkili gruplara eklemelerle ilgilidir. Bu okuma-yazma olmayan egzersizde yoklukları beklenir.5136dizin nesnesi değişikliğiyle ilgilidir. Yokluğu destekler ancak pencere boyunca dizinin değişmediğini tek başına kanıtlayamaz.
Microsoft’un işlem-denetleme rehberi hem İşlem Oluşturma denetlemesinin hem de düz metin komut satırı argümanlarını kaydetmenin gizlilik riskini açıkça belirtir. Testi aranabilir kılmak için yalnızca bir komut satırına şifre, token, müşteri verisi veya sır koymayın.
Sınırlı Windows olay penceresini dışa aktarın
Olay dışa aktarmayı onaylanmış bir olay-okuyucu kimliği ile ilgili laboratuvar hostunda veya toplayıcıda savunucu değil kırmızı operatör çalıştırmalıdır. action-01.json’den tam UTC penceresini kullanın, ardından orijinal olay kayıt kimliklerini koruyun.
$eventIds = 4624, 4625, 4672, 4688, 4728, 4729, 4732, 4733, 4756, 4757, 5136
$windowEndUtc = (Get-Date).ToUniversalTime()
$events = Get-WinEvent -FilterHashtable @{
LogName = "Security"
Id = $eventIds
StartTime = $windowStartUtc.ToLocalTime()
EndTime = $windowEndUtc.ToLocalTime()
}
$normalized = foreach ($event in $events) {
$xml = [xml]$event.ToXml()
$fields = @{}
foreach ($field in $xml.Event.EventData.Data) {
if ($field.Name) { $fields[$field.Name] = $field.'#text' }
}
[pscustomobject]@{
TimeCreatedUtc = $event.TimeCreated.ToUniversalTime().ToString("o")
EventId = $event.Id
RecordId = $event.RecordId
Computer = $event.MachineName
Account = $fields["SubjectUserName"]
TargetAccount = $fields["TargetUserName"]
LogonId = $fields["SubjectLogonId"]
ProcessName = $fields["NewProcessName"]
CommandLine = $fields["CommandLine"]
ObjectDn = $fields["ObjectDN"]
}
}
$normalized |
Sort-Object TimeCreatedUtc, RecordId |
Export-Csv -LiteralPath (Join-Path $evidenceRoot "windows-events.csv") -NoTypeInformation
Yerel-saat dönüşümünün kasıtlı olması, Windows filtreleme API’sinin burada yerel DateTime değerlerini tükettiği için; dışa aktarılan zaman çizelgesi UTC’ye geri normalize edilir. Bu davranışı toplayıcınızda onaylayın. Saat-zonesi varsayımı temiz görünen ancak yanlış bir boşluk yaratabilir.
SIEM’i bağımsız olarak sorgulayın
SecurityEvent tablosunu kullanan Microsoft Sentinel dağıtımları için savunucu sınırlı bir sorgu çalıştırabilir. Sentetik değerleri imzalanmış dosya penceresi ve onaylanmış hostlarla değiştirin; şifre veya sır aramayın.
let operation_start = datetime(2026-08-30T17:00:00Z);
let operation_end = datetime(2026-08-30T17:20:00Z);
let approved_hosts = dynamic(["RT-WKS01", "LAB-DC01", "LAB-MGMT01"]);
SecurityEvent
| where TimeGenerated between (operation_start .. operation_end)
| where Computer has_any (approved_hosts)
| where EventID in (4624, 4625, 4672, 4688, 4728, 4729, 4732, 4733, 4756, 4757, 5136)
| project TimeGenerated, Computer, EventID, Account, TargetAccount,
SubjectLogonId, Activity, Process, CommandLine, EventData
| order by TimeGenerated asc
Boş bir sorgu sonucu eylemin görünmez olduğu anlamına gelmez. Hostun veri bağlantı noktasının dışında olması, denetim alt-kategorisinin devre dışı bırakılması, olayın henüz ulaşmamış olması, alan haritalamasının farklı olması, zaman penceresinin yanlış olması veya saklamanın zaten kaldırmış olması anlamına gelebilir. Hangi katmanın başarısız olduğunu kaydedin.
Tespit, savunucunun karar vermesiyle aynı şey değildir
Bir uyarının tetiklenmesi bir ürün olayıdır. Bir savunucu kararı sahibine, kanıtına, zaman damgasına ve bildirilen sonraki eyleme sahiptir. Bu dosya için faydalı sıralama şudur:
- Uç nokta veya kimlik sensörü kontrol edilen keşfi veya ayrıcalıklı oturum açmayı kaydeder.
- Toplayıcı olayı sabit host, kimlik ve zaman alanlarıyla alır.
- Algılama mantığı bir uyarı oluşturur veya eylemi operasyon dosyasına ekler.
- Bir analist kaydedilmemiş bir telefon çağrısına dayanmadan yetkili egzersizi sıradan yönetimi ve kötü amaçlı aktivite ile ayırır.
- Analist
allow,investigateveyacontainseçer ve nedenini kaydeder. - Eğer sınırlama seçilirse, atanmış ekip önceden düzenlenmiş kurtarma prosedürünü kullanarak onaylanmış test erişimini devre dışı bırakır veya iptal eder.
- Ayrı bir kontrolün kurtarma eyleminin etkili olduğunu kanıtlar.
Her kırmızı takım göstergesini ön-beyaz-listelemek SOC’u sakin tutabilir, ancak test edilen sistemi kaldırır. Tam gizlilik tam tersi sorunu yaratabilir: yetkili bir egzersiz kaçınılmaz bir olaya dönüşür. Çakışma çözümü, insanları ve sistemleri güvenli tutarken değerlendirilen karar yolunu korumak için gereken minimum bilgiyi ortaya çıkarmalıdır.
Kanıt matrisi
| İddia | Kırmızı kanıt | Bağımsız savunucu kanıt | Negatif kontrol | Ne kanıtlamaz |
|---|---|---|---|---|
| Operatör onaylanmış alan adı içinde hareket etti | Çalışma zamanı bağlamı beklenen alan adı SID, kontrolcü, host, kimlik ve UTC saat içerir | Varlık envanteri aynı sistemleri laboratuvar dosyasına çözer | Kasıtlı olarak farklı bir laboratuvar alan adına karşı tekrar çözme ve kapsam kapısının durmasını gerektirin | Her sonraki komutun kapsamda kaldığını |
| Yerleşik ayrıcalıklı grup okuma-yazma olmadan sayıldı | Transkript, action-01.json ve dışa aktarılan üye listesi | Uç nokta işlem telemetrisi ve aynı pencerede dizin/EDR ağ telemetrisi | Zararsız yerel kimlik sorgusu ile aynı sarıyı çalıştırın ve alanları karşılaştırın | Üyeliğin değiştirildiğini veya bir kimlik bilgisinin elde edildiğini |
| Onaylanmış ayrıcalıklı kimlik özel oturum açma oluşturdu | İsimlendirilmiş test kimliği ve yönetim-hostu erişim kaydı | Erişilen hosttaki korelasyonlu 4624 ve, uygunsa, 4672 | Onaylanmış ayrıcalıklı olmayan bir test kimliğiyle yetkilendirin ve atanmış yetkileri karşılaştırın | 4672’nin tek başına Domain Admin veya kötü amaçlı aktivite anlamına geldiğini |
| Kontrol edilen adımda dizin yazma yoktu | Eylem tanımı okuma-yazmadır ve transkriptte yazma komutu yoktur | Tam toplama penceresinde korelasyonlu grup-değişimi veya 5136 olayı yok | İzole edilebilir atılabilir laboratuvarda savunucular ayrı onaylanmış canary değişikliği oluşturabilir ve boru hattının gördüğünü doğrulayabilir | Olayın olmamasının denetleme veya toplama eksik olduğunda değişiklik olmadığını kanıtlediğini |
| SOC eylemi algıladı ve işledi | Kırmızı takım yalnızca dosya penceresi ve onaylanmış çakışma verisi sağlar | Uyarı kimliği, analist dosyası, zaman damgaları, kanıt, sahibi ve karar | Temel yönetimsel eylemle tekrar edin ve mantığın ayırt edip etmediğini ölçün | Bir uyarının yalnızca sınırlama veya kurtarma ürettiğini |
| Test yetkisi iptal edildi | Operatör kapanıştan sonra test erişimini kullanamaz | Kimlik sahibi hesap/token durumunu ve ilgili oturumların geçersiz olduğunu onaylar | Onaylanmış kontrol kimliği hala normal yönetim yoluna erişebilir | İlgisiz ihlal yollarının kapatıldığını |
Negatif kontrol dekoratif bir sütun değildir. Kırmızı takım anlatısının dairesel hale gelmesini önler: ekip hareket etti, ekran görüntüsü aldı ve ekran görüntüsünün eylem etrafındaki her şeyin kanıtı olduğunu ilan etti.
Kanıtı mühürleyin ve operasyonu kapatın
Toplama penceresini açıkça bitirin, transkripti durdurun, her parçayı hashleyin ve bir manifest oluşturun. Hash’ler paketteki sonraki değişiklikleri tespit etmeye yardımcı olur; ancak bir parçanın iddia edilen sistemden geldiğini veya kaydedicinin güvenilir olduğunu kanıtlamaz.
$windowEndUtc = (Get-Date).ToUniversalTime()
[pscustomobject]@{
CaseId = $caseId
WindowEndUtc = $windowEndUtc.ToString("o")
Outcome = "Controlled directory read completed; no directory write authorized"
} | ConvertTo-Json | Set-Content -LiteralPath (Join-Path $evidenceRoot "operation-close.json")
Stop-Transcript
$manifestPath = Join-Path $evidenceRoot "sha256-manifest.csv"
Get-ChildItem -LiteralPath $evidenceRoot -File |
Where-Object Name -ne "sha256-manifest.csv" |
Sort-Object Name |
ForEach-Object {
$hash = Get-FileHash -LiteralPath $_.FullName -Algorithm SHA256
[pscustomobject]@{
File = $_.Name
Bytes = $_.Length
SHA256 = $hash.Hash
CollectedUtc = (Get-Date).ToUniversalTime().ToString("o")
}
} | Export-Csv -LiteralPath $manifestPath -NoTypeInformation
Manifest ile bitmeyin. Kapanış kontrol listesi isimlendirilmiş sahiplere ve bağımsız yanıtlara ihtiyaç duyar:
- Önceden hazırlanmış test kimliği devre dışı bırakıldı, süresi doldu mu veya dokümante edilmiş temel durumuna geri döndü mü?
- Aktif oturumlar ve zaman sınırlı tokenlar yalnızca süresinin dolmasını beklemek yerine iptal edildi mi?
- Test herhangi bir hesap, grup üyeliği, planlanmış görev, hizmet, sertifika, güvenlik duvarı kuralı, başlangıç öğesi, bulut kaynağı veya veri nesnesi oluşturdu mu? Bu ilk prosedür “hayır” yanıtı vermelidir; varsaymak yerine doğrulayın.
- Operatör tarafındaki transkriptler, dışa aktarımlar ve kimlik bilgileri onaylanmış kanıt deposuna taşındı mı ve katılım saklama politikasına göre kaldırıldı mı?
- Kontrol sahibi kırmızı takım olmadan reddetme veya iptal edilmiş erişimi tekrar üretebilir mi?
- Her uyarı, olay, istisna ve yanlış-negatif bir sahibine atanmış ve yeniden test tarihi verilmiş mi?
Temizlik “komut başarı döndü” değildir. Kurtarma temizlikten sonra bağımsız olarak gözlemlenen durumdur.
Başarılı bir ilk operasyon nasıl görünür?
Kırmızı takım bu dosyanın değerli olması için sipariş göndermek, kalıcılık oluşturmak, güvenlik araçlarını devre dışı bırakmak veya dizin veritabanını dökmemelidir. Bağlantılı bir kayıt üretmesi gerekir:
- korunmuş karar ve güvenli durma noktası eylemden önce tanımlandı;
- çalışma zamanı kapsamı yetkilendirilmiş laboratuvar alan adı, host, kimlik ve zaman penceresine çözüldü;
- dizin sorgusu ve ayrıcalıklı test erişimi onaylanmış otorite içinde kaldı;
- operatör, endpoint, kimlik, collector, uyarı ve analist kanıtı birbirinin yerine geçmeden ilişkilendirilebilir;
- SOC yalnızca bir uyarı biriktirmek yerine görünür bir karar verdi;
- test yetkisi iptal edildi ve temiz durum bağımsız olarak doğrulandı;
- her boşluk kontrol sahibi, kanıt gereksinimi ve yeniden test koşuluna dönüştü.
Ekip Domain Admin’e ulaşırsa ancak bu soruları yanıtlayamazsa egzersiz bir yetki yolunu ve çok az şeyi göstermiştir. Bu hala ciddi bir bulgu olabilir. Henüz başarılı bir kırmızı takım operasyonu değildir.
Bu serinin sonraki kısmı, planlamadan sonra her şeyi yapan veya bozan sınıra geçer: Katılım Kuralları imzalanmış olsa da çalışma zamanı yetkisi hala hangi tam eylem, hedef, kimlik, etki ve onayın var olmasına izin verileceğini belirlemelidir.
Sonraki: “Katılım Kuralları İmzalandı. Çalışma Zamanı Yetkisi Hala Tanımlanmamıştı.”
Bu teknik not ne kadar güncel?
En son kaynak incelemesi, içerik güncellemesi veya yayın tarihi gösterilmektedir.
Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.
