Caçar o ransomware
Aplica-se a:
- Microsoft Defender XDR
O Ransomware evoluiu rapidamente de ser um malware de mercadoria simples que afeta usuários individuais de computador para uma ameaça empresarial que está afetando severamente indústrias e instituições governamentais. Embora Microsoft Defender XDR forneça muitos recursos que detectam e bloqueiam o ransomware e atividades de intrusão associadas, a execução de verificações proativas em busca de sinais de comprometimento pode ajudar a manter sua rede protegida.
Com a caça avançada em Microsoft Defender XDR, você pode criar consultas que localizam artefatos individuais associados à atividade de ransomware. Você também pode executar consultas mais sofisticadas que podem procurar sinais de atividade e pesar esses sinais para encontrar dispositivos que exigem atenção imediata.
Sinais de atividade de ransomware
Pesquisadores de segurança da Microsoft observaram vários artefatos comuns, mas sutis, em muitas campanhas de ransomware lançadas por intrusos sofisticados. Esses sinais envolvem principalmente o uso de ferramentas do sistema para se preparar para criptografia, impedir a detecção e limpar evidências forenses.
Atividade de ransomware | Ferramentas comuns | Intent |
---|---|---|
Interromper processos | taskkill.exe, net stop | Verifique se os arquivos direcionados para criptografia não são bloqueados por vários aplicativos. |
Desativar serviços | sc.exe | – Verifique se os arquivos direcionados para criptografia não são bloqueados por vários aplicativos. – impedir que o software de segurança interrompa a criptografia e outras atividades de ransomware. – Impedir que o software de backup crie cópias recuperáveis. |
Excluir logs e arquivos | cipher.exe, wevtutil, fsutil.exe | Remova evidências forenses. |
Excluir cópias de sombra | vsadmin.exe, wmic.exe | Remova cópias de sombra de unidade que podem ser usadas para recuperar arquivos criptografados. |
Excluir e parar backups | wbadmin.exe | Exclua os backups existentes e pare as tarefas de backup agendadas, impedindo a recuperação após a criptografia. |
Modificar configurações de inicialização | bcdedit.exe | Desative avisos e reparos automáticos após falhas de inicialização que podem ser causadas pelo processo de criptografia. |
Desativar ferramentas de recuperação | schtasks.exe, regedit.exe, | Desative a Restauração do Sistema e outras opções de recuperação do sistema. |
Verifique se há sinais individuais de atividade de ransomware
Muitas atividades que constituem o comportamento de ransomware, incluindo as atividades descritas na seção anterior, podem ser benignas. Ao usar as consultas a seguir para localizar ransomware, execute mais de uma consulta para marcar se os mesmos dispositivos estão exibindo vários sinais de possível atividade de ransomware.
Interromper vários processos usando taskkill.exe
Essa consulta verifica as tentativas de interromper pelo menos 10 processos separados usando o utilitário taskkill.exe . Executar consulta
// 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
Interromper processos usando a parada líquida
Essa consulta verifica as tentativas de interromper pelo menos 10 processos separados usando o comando net stop . Executar consulta
// 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
Exclusão de dados em várias unidades usando cipher.exe
Essa consulta verifica as tentativas de excluir dados em várias unidades usando cipher.exe. Essa atividade normalmente é feita por ransomware para impedir a recuperação de dados após a criptografia. Executar consulta
// 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
Limpeza de evidências forenses de logs de eventos usando wevtutil
Essa consulta verifica as tentativas de limpar pelo menos 10 entradas de log de logs de eventos usando wevtutil. Executar consulta
// 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
Desativar serviços usando sc.exe
Essa consulta verifica as tentativas de desativar pelo menos 10 serviços existentes usando sc.exe. Executar consulta
// 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
Desativar a Restauração do Sistema
Essa consulta identifica tentativas de parar a Restauração do Sistema e impedir que o sistema crie pontos de restauração, que podem ser usados para recuperar dados criptografados por ransomware. Executar consulta
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'
Exclusão de backup
Essa consulta identifica o uso de wmic.exe para excluir instantâneos de cópia de sombra antes da criptografia. Executar consulta
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Verifique se há vários sinais de atividade de ransomware
Em vez de executar várias consultas separadamente, você também pode usar uma consulta abrangente que verifica vários sinais de atividade de ransomware para identificar dispositivos afetados. A seguinte consulta consolidada:
- Procura sinais relativamente concretos e sutis da atividade de ransomware
- Pesa a presença desses sinais
- Identifica dispositivos com maior chance de serem alvos de ransomware
Quando executada, essa consulta consolidada retorna uma lista de dispositivos que apresentaram vários sinais de ataque. A contagem de cada tipo de atividade de ransomware também é mostrada. Para executar essa consulta consolidada, copie-a diretamente para o editor de consulta de caça avançado.
// 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
Entender e ajustar os resultados da consulta
A consulta consolidada retorna os seguintes resultados:
DeviceId– identifica o dispositivo afetado
TimeStamp — primeira vez que qualquer sinal de atividade de ransomware foi observado no dispositivo
Sinais específicos de atividade – a contagem para cada sinal mostrada em várias colunas, como BcdEdit ou FsUtil
TotalEvidenceCount — número de sinais observados
UniqueEvidenceCount — número de tipos de sinais observados
Resultados da consulta mostrando dispositivos afetados e contagens de vários sinais de atividade de ransomware
Por padrão, o resultado da consulta lista apenas dispositivos com mais de dois tipos de atividade de ransomware. Para ver todos os dispositivos com qualquer sinal de atividade de ransomware, modifique o operador a seguir where
e defina o número como zero (0). Para ver menos dispositivos, defina um número maior.
| where UniqueEvidenceCount > 2
Mais recursos de ransomware
Informações importantes da Microsoft:
- A crescente ameaça de ransomware, postagem no blog Microsoft On the Issues em 20 de julho de 2021
- Ransomware operado por humanos
- Implantar rapidamente prevenções de ransomware
- Relatório de Defesa Digital da Microsoft 2021 (consulte as páginas 10-19)
- Ransomware: um relatório generalizado e contínuo de análise de ameaças de ameaças no portal do Microsoft Defender
Microsoft 365:
- Implante a proteção de ransomware para o seu locatário Microsoft 365 após a Etapa 1
- Maximizar a Resiliência do Ransomware com o Azure e Microsoft 365
- Guias estratégicos de resposta a incidentes do Ransomware
- Proteção contra ransomware e malware
- Proteger seu computador Windows contra ransomware
- Lidando com ransomware no SharePoint Online
- Relatórios de análise de ameaças para ransomware no portal do Microsoft Defender
Microsoft Azure:
- Defesas do Azure para Ataques de Ransomware
- Maximizar a Resiliência do Ransomware com o Azure e Microsoft 365
- Plano de backup e restauração para se proteger contra ransomware
- Ajudando a se proteger contra ransomware com Backup do Microsoft Azure (vídeo de 26 minutos)
- Recuperando-se do comprometimento de identidade sistêmico
- Detecção avançada de ataque em vários estágios no Microsoft Sentinel
- Detecção de Fusão para Ransomware no Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Postagens no blog da equipe de Segurança da Microsoft:
Três etapas para impedir e recuperar do ransomware (setembro de 2021)
Um guia para combater o ransomware operado por humanos: Parte 1 (setembro de 2021)
Principais etapas sobre como a Equipe de Detecção e Resposta (DARHS) da Microsoft conduz investigações de incidentes de ransomware.
Um guia para combater o ransomware operado por humanos: Parte 2 (setembro de 2021)
Recomendações práticas recomendadas.
-
Consulte a seção Ransomware.
Ataques de ransomware operados por humanos: um desastre evitável (Março de 2020)
Inclui análises de cadeia de ataque de ataques reais.
Resposta de ransomware: para pagar ou não pagar? (dezembro de 2019)
A Norsk Hydro responde a um ataque de ransomware com transparência (dezembro de 2019)
Dica
Você deseja aprender mais? Engage com a comunidade de Segurança da Microsoft em nossa Comunidade Tecnológica: Microsoft Defender XDR Tech Community.