Fidye yazılımı avlayın

Şunlar için geçerlidir:

  • Microsoft Defender XDR

Fidye yazılımları, bireysel bilgisayar kullanıcılarını etkileyen basit ticari kötü amaçlı yazılımlardan sektörleri ve kamu kurumlarını ciddi şekilde etkileyen kurumsal bir tehdide kadar hızla gelişti. Microsoft Defender XDR fidye yazılımlarını ve ilişkili yetkisiz erişim etkinliklerini algılayıp engelleyen birçok özellik sağlarken, güvenlik açığı belirtileri için proaktif denetimler yapmak ağınızın korunmasına yardımcı olabilir.

İnsan tarafından çalıştırılan fidye yazılımı hakkında bilgi edinin

Microsoft Defender XDR'da gelişmiş avcılık sayesinde fidye yazılımı etkinliğiyle ilişkili tek tek yapıtları bulayan sorgular oluşturabilirsiniz. Ayrıca, hemen ilgilenilmesi gereken cihazları bulmak için etkinlik işaretlerini arayabilen ve bu işaretleri tartabilen daha gelişmiş sorgular da çalıştırabilirsiniz.

Fidye yazılımı etkinliğinin işaretleri

Microsoft güvenlik araştırmacıları, karmaşık davetsiz misafirler tarafından başlatılan birçok fidye yazılımı kampanyasında çeşitli yaygın ancak ince yapıtları gözlemlemektedir. Bu işaretler çoğunlukla şifrelemeye hazırlanmak, algılamayı önlemek ve adli kanıtları temizlemek için sistem araçlarının kullanılmasını içerir.

Fidye yazılımı etkinliği Ortak araçlar Niyet
İşlemleri durdurma taskkill.exe, net stop Şifreleme için hedeflenen dosyaların çeşitli uygulamalar tarafından kilitlenmediğinden emin olun.
Hizmetleri kapatma sc.exe - Şifreleme için hedeflenen dosyaların çeşitli uygulamalar tarafından kilitlenmediğinden emin olun.
- Güvenlik yazılımının şifrelemeyi ve diğer fidye yazılımı etkinliklerini kesintiye uğratmasını engelleyin.
- Yedekleme yazılımının kurtarılabilir kopyalar oluşturmasını durdurun.
Günlükleri ve dosyaları silme cipher.exe, wevtutil, fsutil.exe Adli delilleri kaldırın.
Gölge kopyaları silme vsadmin.exe, wmic.exe Şifrelenmiş dosyaları kurtarmak için kullanılabilecek sürücü gölge kopyalarını kaldırın.
Yedeklemeleri silme ve durdurma wbadmin.exe Mevcut yedeklemeleri silin ve zamanlanmış yedekleme görevlerini durdurun ve şifrelemeden sonra kurtarmayı engelleyin.
Önyükleme ayarlarını değiştirme bcdedit.exe Şifreleme işleminden kaynaklanabilir önyükleme hatalarından sonra uyarıları ve otomatik onarımları kapatın.
Kurtarma araçlarını kapatma schtasks.exe, regedit.exe, Sistem Geri Yükleme'yi ve diğer sistem kurtarma seçeneklerini kapatın.

Fidye yazılımı etkinliğinin bireysel işaretlerini denetleyin

Önceki bölümde açıklanan etkinlikler de dahil olmak üzere fidye yazılımı davranışını oluşturan birçok etkinlik zararsız olabilir. Fidye yazılımını bulmak için aşağıdaki sorguları kullanırken, aynı cihazların olası fidye yazılımı etkinliğine ilişkin çeşitli işaretler sergileyip sergilemediğini denetlemek için birden fazla sorgu çalıştırın.

taskkill.exe kullanarak birden çok işlemi durdurma

Bu sorgu, taskkill.exe yardımcı programını kullanarak en az 10 ayrı işlemi durdurma girişimlerini denetler. Sorguyu çalıştırma

// Find attempts to stop processes using taskkill.exe
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "taskkill.exe" 
| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where taskKillCount > 10

Net stop kullanarak işlemleri durdurma

Bu sorgu , net stop komutunu kullanarak en az 10 ayrı işlemi durdurma girişimlerini denetler. Sorguyu çalıştırma

// Find attempts to stop processes using net stop
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "net.exe" and ProcessCommandLine has "stop"
| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where netStopCount > 10

cipher.exe kullanarak birden çok sürücüdeki verilerin silinmesi

Bu sorgu ,cipher.exekullanarak birden çok sürücüdeki verileri silme girişimlerini denetler. Bu etkinlik genellikle şifrelemeden sonra verilerin kurtarılmasını önlemek için fidye yazılımı tarafından gerçekleştirilir. Sorguyu çalıştırma

// Look for cipher.exe deleting data from multiple drives
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "cipher.exe" 
// cipher.exe /w flag used for deleting data 
| where ProcessCommandLine has "/w" 
| summarize CipherCount = dcount(ProcessCommandLine),
CipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m) 
// cipher.exe accessing multiple drives in a short timeframe 
| where CipherCount > 1

Wevtutil kullanılarak olay günlüklerinden adli kanıtların temizlenmesi

Bu sorgu , wevtutil kullanarak olay günlüklerinden en az 10 günlük girdisini temizleme girişimlerini denetler. Sorguyu çalıştırma

// Look for use of wevtutil to clear multiple logs
DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "WEVTUTIL" and ProcessCommandLine has "CL"
| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where LogClearCount > 10

sc.exe kullanarak hizmetleri kapatma

Bu sorgu, sc.exekullanarak en az 10 mevcut hizmeti kapatma girişimlerini denetler. Sorguyu çalıştırma

// Look for sc.exe disabling services
DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled"
| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where ScDisableCount > 10

Sistem Geri Yükleme'yi kapatma

Bu sorgu, Sistem Geri Yükleme'yi durdurma ve sistemin geri yükleme noktaları oluşturmasını engelleme girişimlerini tanımlar. Bu, fidye yazılımı tarafından şifrelenmiş verileri kurtarmak için kullanılabilir. Sorguyu çalıştırma

DeviceProcessEvents
//Pivoting for rundll32  
| where InitiatingProcessFileName =~ 'rundll32.exe'   
//Looking for empty command line   
and InitiatingProcessCommandLine !contains " " and InitiatingProcessCommandLine != ""  
//Looking for schtasks.exe as the created process  
and FileName in~ ('schtasks.exe')  
//Disabling system restore   
and ProcessCommandLine has 'Change' and ProcessCommandLine has 'SystemRestore' 
and ProcessCommandLine has 'disable'

Yedekleme silme

Bu sorgu, şifrelemeden önce gölge kopya anlık görüntülerini silmek için wmic.exe kullanımını tanımlar. Sorguyu çalıştırma

DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName

Fidye yazılımı etkinliğinin birden çok işaretini denetleyin

Birkaç sorguyu ayrı ayrı çalıştırmak yerine, etkilenen cihazları tanımlamak için birden çok fidye yazılımı etkinliği işaretini denetleyecek kapsamlı bir sorgu da kullanabilirsiniz. Aşağıdaki birleştirilmiş sorgu:

  • Fidye yazılımı etkinliğinin hem nispeten somut hem de ince işaretlerini arar
  • Bu işaretlerin varlığını tartıyor
  • Fidye yazılımı hedefi olma olasılığı daha yüksek olan cihazları tanımlar

Çalıştırıldığında, bu birleştirilmiş sorgu birden çok saldırı işareti sergileyen cihazların listesini döndürür. Her fidye yazılımı etkinliğinin sayısı da gösterilir. Bu birleştirilmiş sorguyu çalıştırmak için doğrudan gelişmiş tehdit avcılığı sorgu düzenleyicisine kopyalayın.

// Find attempts to stop processes using taskkill.exe
let taskKill = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "taskkill.exe" 
| summarize taskKillCount = dcount(ProcessCommandLine), TaskKillList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where taskKillCount > 10;
// Find attempts to stop processes using net stop
let netStop = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "net.exe" and ProcessCommandLine has "stop"
| summarize netStopCount = dcount(ProcessCommandLine), NetStopList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 2m)
| where netStopCount > 10;
// Look for cipher.exe deleting data from multiple drives
let cipher = DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "cipher.exe" 
// cipher.exe /w flag used for deleting data 
| where ProcessCommandLine has "/w" 
| summarize CipherCount = dcount(ProcessCommandLine), 
CipherList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 1m) 
// cipher.exe accessing multiple drives in a short timeframe 
| where CipherCount > 1;
// Look for use of wevtutil to clear multiple logs
let wevtutilClear = DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "WEVTUTIL" and ProcessCommandLine has "CL"
| summarize LogClearCount = dcount(ProcessCommandLine), ClearedLogList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where LogClearCount > 10;
// Look for sc.exe disabling services
let scDisable = DeviceProcessEvents
| where Timestamp > ago(1d)
| where ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled"
| summarize ScDisableCount = dcount(ProcessCommandLine), ScDisableList = make_set(ProcessCommandLine) by DeviceId, bin(Timestamp, 5m)
| where ScDisableCount > 10;
// Main query for counting and aggregating evidence
DeviceProcessEvents
| where Timestamp > ago(1d)
| where FileName =~ "vssadmin.exe" and ProcessCommandLine has_any("list shadows", "delete shadows")
or FileName =~ "fsutil.exe" and ProcessCommandLine has "usn" and ProcessCommandLine has "deletejournal"
or ProcessCommandLine has("bcdedit") and ProcessCommandLine has_any("recoveryenabled no", "bootstatuspolicy ignoreallfailures")
or ProcessCommandLine has "wbadmin" and ProcessCommandLine has "delete" and ProcessCommandLine has_any("backup", "catalog", "systemstatebackup")
or (ProcessCommandLine has "wevtutil" and ProcessCommandLine has "cl") 
or (ProcessCommandLine has "wmic" and ProcessCommandLine has "shadowcopy delete")
or (ProcessCommandLine has "sc" and ProcessCommandLine has "config" and ProcessCommandLine has "disabled")
| extend Bcdedit = iff(ProcessCommandLine has "bcdedit" and ProcessCommandLine has_any("recoveryenabled no", "bootstatuspolicy ignoreallfailures"), 1, 0)
| extend ShadowCopyDelete = iff (ProcessCommandLine has "shadowcopy delete", 1, 0)
| extend VssAdminShadows = iff(ProcessCommandLine has "vssadmin" and ProcessCommandLine has_any("list shadows", "delete shadows"), 1, 0)
| extend Wbadmin = iff(ProcessCommandLine has "wbadmin" and ProcessCommandLine has "delete" and ProcessCommandLine has_any("backup", "catalog", "systemstatebackup"), 1,0)
| extend Fsutil = iff(ProcessCommandLine has "fsutil" and ProcessCommandLine has "usn" and ProcessCommandLine has "deletejournal", 1, 0)
| summarize FirstActivity = min(Timestamp), ReportId = any(ReportId), Commands = make_set(ProcessCommandLine) by DeviceId, Fsutil, Wbadmin, ShadowCopyDelete, Bcdedit, VssAdminShadows, bin(Timestamp, 6h)
// Joining extra evidence
| join kind=leftouter (wevtutilClear) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (cipher) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (netStop) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (taskKill) on $left.DeviceId == $right.DeviceId
| join kind=leftouter (scDisable) on $left.DeviceId == $right.DeviceId
| extend WevtutilUse = iff(LogClearCount > 10, 1, 0)
| extend CipherUse = iff(CipherCount > 1, 1, 0)
| extend NetStopUse = iff(netStopCount > 10, 1, 0)
| extend TaskkillUse = iff(taskKillCount > 10, 1, 0)
| extend ScDisableUse = iff(ScDisableCount > 10, 1, 0)
// Adding up all evidence
| mv-expand CommandList = NetStopList, TaskKillList, ClearedLogList, CipherList, Commands, ScDisableList
// Format results
| summarize BcdEdit = iff(make_set(Bcdedit) contains "1" , 1, 0), NetStop10PlusCommands = iff(make_set(NetStopUse) contains "1", 1, 0), Wevtutil10PlusLogsCleared = iff(make_set(WevtutilUse) contains "1", 1, 0),
CipherMultipleDrives = iff(make_set(CipherUse) contains "1", 1, 0), Fsutil = iff(make_set(Fsutil) contains "1", 1, 0), ShadowCopyDelete = iff(make_set(ShadowCopyDelete) contains "1", 1, 0),
Wbadmin = iff(make_set(Wbadmin) contains "1", 1, 0), TaskKill10PlusCommand = iff(make_set(TaskkillUse) contains "1", 1, 0), VssAdminShadow = iff(make_set(VssAdminShadows) contains "1", 1, 0), 
ScDisable = iff(make_set(ScDisableUse) contains "1", 1, 0), TotalEvidenceCount = count(CommandList), EvidenceList = make_set(Commands), StartofBehavior = min(FirstActivity) by DeviceId, bin(Timestamp, 1d)
| extend UniqueEvidenceCount = BcdEdit + NetStop10PlusCommands + Wevtutil10PlusLogsCleared + CipherMultipleDrives + Wbadmin + Fsutil + TaskKill10PlusCommand + VssAdminShadow + ScDisable + ShadowCopyDelete
| where UniqueEvidenceCount > 2

Sorgu sonuçlarını anlama ve ayarlama

Birleştirilmiş sorgu aşağıdaki sonuçları döndürür:

  • DeviceId— etkilenen cihazı tanımlar
  • TimeStamp— cihazda ilk kez fidye yazılımı etkinliğine ilişkin herhangi bir işaret gözlemlendi
  • Belirli etkinlik işaretleriBcdEdit veya FsUtil gibi birden çok sütunda gösterilen her işaretin sayısı
  • TotalEvidenceCount— gözlemlenen işaret sayısı
  • UniqueEvidenceCount— gözlemlenen işaret türlerinin sayısı

Microsoft Defender portalında fidye yazılımı etkinliği için birleştirilmiş sorgu örneği

Etkilenen cihazları ve fidye yazılımı etkinliğinin çeşitli işaretlerini gösteren sorgu sonuçları

Varsayılan olarak, sorgu sonucu yalnızca ikiden fazla fidye yazılımı etkinliği türüne sahip cihazları listeler. Fidye yazılımı etkinliği işareti olan tüm cihazları görmek için aşağıdaki where işleci değiştirin ve sayıyı sıfır (0) olarak ayarlayın. Daha az cihaz görmek için daha yüksek bir sayı ayarlayın.

| where UniqueEvidenceCount > 2

Diğer fidye yazılımı kaynakları

Microsoft'tan önemli bilgiler:

Microsoft 365:

Microsoft Azure:

Microsoft Defender for Cloud Apps:

Microsoft Güvenlik ekibi blog gönderileri:

İpucu

Daha fazla bilgi edinmek mi istiyorsunuz? Teknoloji Topluluğumuzdaki Microsoft Güvenlik topluluğuyla etkileşime geçin: Microsoft Defender XDR Teknoloji Topluluğu.