Procurar ransomware
Aplica-se a:
- Microsoft Defender XDR
O ransomware evoluiu rapidamente de ser software maligno simples que afeta utilizadores individuais de computadores para uma ameaça empresarial que está a afetar severamente indústrias e instituições governamentais. Embora Microsoft Defender XDR fornece muitas capacidades que detetam e bloqueiam ransomware e atividades de intrusão associadas, a realização de verificações proativas de sinais de comprometimento pode ajudar a manter a sua rede protegida.
Com a investigação avançada no Microsoft Defender XDR, pode criar consultas que localizam artefactos individuais associados à atividade de ransomware. Também pode executar consultas mais sofisticadas que podem procurar sinais de atividade e pesar esses sinais para encontrar dispositivos que necessitem de atenção imediata.
Sinais de atividade de ransomware
Os investigadores de segurança da Microsoft observaram vários artefactos comuns, mas subtis, em muitas campanhas de ransomware lançadas por intrusos sofisticados. Estes sinais envolvem principalmente a utilização de ferramentas do sistema para preparar a encriptação, impedir a deteção e limpar provas forenses.
Atividade de ransomware | Ferramentas comuns | Intenção |
---|---|---|
Parar processos | taskkill.exe, net stop | Certifique-se de que os ficheiros direcionados para encriptação não estão bloqueados por várias aplicações. |
Desativar serviços | sc.exe | - Certifique-se de que os ficheiros direcionados para encriptação não estão bloqueados por várias aplicações. - Impedir que o software de segurança interrompa a encriptação e outras atividades de ransomware. - Impedir que o software de cópia de segurança crie cópias recuperáveis. |
Eliminar registos e ficheiros | cipher.exe, wevtutil,fsutil.exe | Remova as provas forenses. |
Eliminar cópias sombra | vsadmin.exe, wmic.exe | Remova cópias sombra de unidades que podem ser utilizadas para recuperar ficheiros encriptados. |
Eliminar e parar cópias de segurança | wbadmin.exe | Elimine as cópias de segurança existentes e pare as tarefas de cópia de segurança agendadas, impedindo a recuperação após a encriptação. |
Modificar definições de arranque | bcdedit.exe | Desative os avisos e as reparações automáticas após falhas de arranque que possam ser causadas pelo processo de encriptação. |
Desativar as ferramentas de recuperação | schtasks.exe, regedit.exe, | Desative o Restauro do Sistema e outras opções de recuperação do sistema. |
Verificar se existem sinais individuais de atividade de ransomware
Muitas atividades que constituem o comportamento de ransomware, incluindo as atividades descritas na secção anterior, podem ser benignas. Ao utilizar as seguintes consultas para localizar ransomware, execute mais do que uma consulta para verificar se os mesmos dispositivos apresentam vários sinais de possível atividade de ransomware.
Parar vários processos com taskkill.exe
Esta consulta verifica se há tentativas de parar, pelo menos, 10 processos separados com 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
Parar processos com a paragem líquida
Esta consulta verifica se há tentativas de parar, pelo menos, 10 processos separados com 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
Eliminação de dados em várias unidades com cipher.exe
Esta consulta verifica a existência de tentativas de eliminação de dados em várias unidades com cipher.exe. Normalmente, esta atividade é efetuada por ransomware para impedir a recuperação de dados após a encriptação. 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
Limpar provas forenses dos registos de eventos com wevtutil
Esta consulta verifica a existência de tentativas para limpar, pelo menos, 10 entradas de registo dos registos de eventos com o 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 com sc.exe
Esta consulta verifica se existem tentativas de desativar, pelo menos, 10 serviços existentes com 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 o Restauro do Sistema
Esta consulta identifica as tentativas de parar o Restauro do Sistema e impedir que o sistema crie pontos de restauro, que podem ser utilizados para recuperar dados encriptados 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'
Eliminação da cópia de segurança
Esta consulta identifica a utilização de wmic.exe para eliminar instantâneos de cópia sombra antes da encriptação. Executar consulta
DeviceProcessEvents
| where FileName =~ "wmic.exe"
| where ProcessCommandLine has "shadowcopy" and ProcessCommandLine has "delete"
| project DeviceId, Timestamp, InitiatingProcessFileName, FileName,
ProcessCommandLine, InitiatingProcessIntegrityLevel, InitiatingProcessParentFileName
Verificar a existência de vários sinais de atividade de ransomware
Em vez de executar várias consultas separadamente, também pode utilizar uma consulta abrangente que verifica a existência de vários sinais de atividade de ransomware para identificar os dispositivos afetados. A seguinte consulta consolidada:
- Procura sinais relativamente concretos e subtis de atividade de ransomware
- Pesa a presença destes sinais
- Identifica dispositivos com maior probabilidade de serem alvos de ransomware
Quando executada, esta consulta consolidada devolve 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 esta consulta consolidada, copie-a diretamente para o editor de consultas de investigação avançada.
// 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
Compreender e ajustar os resultados da consulta
A consulta consolidada devolve os seguintes resultados:
- DeviceId — identifica o dispositivo afetado
- TimeStamp – a primeira vez que qualquer sinal de atividade de ransomware foi observado no dispositivo
- Sinais específicos de atividade — a contagem para cada sinal apresentado em múltiplas colunas, como BcdEdit ou FsUtil
- TotalEvidenceCount — número de sinais observados
- UniqueEvidenceCount — número de tipos de sinais observados
Resultados da consulta que mostram os dispositivos afetados e contagens de vários sinais de atividade de ransomware
Por predefinição, o resultado da consulta lista apenas os 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 seguinte where
e defina o número como zero (0). Para ver menos dispositivos, defina um número mais elevado.
| where UniqueEvidenceCount > 2
Mais recursos de ransomware
Informações importantes da Microsoft:
- A ameaça crescente de ransomware, publicação de blogue da Microsoft On the Issues a 20 de julho de 2021
- Ransomware operado por humanos
- Implementar rapidamente prevenções de ransomware
- 2021 Relatório de defesa digital da Microsoft (ver páginas 10-19)
- Ransomware: um relatório abrangente e contínuo de análise de ameaças no portal do Microsoft Defender
Microsoft 365:
- Implementar proteção contra ransomware para o seu inquilino do Microsoft 365
- Maximizar a Resiliência do Ransomware com o Azure e o Microsoft 365
- Manuais de procedimentos de resposta a incidentes de ransomware
- Proteção contra malware e ransomware
- Proteger o seu PC Windows contra ransomware
- Manipular ransomware no Microsoft Office SharePoint Online
- Relatórios de análise de ameaças para ransomware no portal do Microsoft Defender
Microsoft Azure:
- Defesas do Azure para Ataque de Ransomware
- Maximizar a Resiliência do Ransomware com o Azure e o Microsoft 365
- Plano de cópia de segurança e restauro para proteger contra ransomware
- Ajudar a proteger contra ransomware com o Microsoft Azure Backup (vídeo de 26 minutos)
- Recuperar de um compromisso de identidade sistémica
- Deteção avançada de ataques em várias fases no Microsoft Sentinel
- Deteção de Fusão para Ransomware no Microsoft Sentinel
Microsoft Defender for Cloud Apps:
Mensagens de blogue da equipa de Segurança Microsoft:
Três passos para impedir e recuperar de ransomware (setembro de 2021)
Um guia para combater o ransomware operado por humanos: Parte 1 (setembro de 2021)
Principais passos sobre como a Equipa de Deteção e Resposta da Microsoft (DART) conduz investigações de incidentes de ransomware.
Um guia para combater o ransomware operado por humanos: Parte 2 (setembro de 2021)
Recomendações e melhores práticas.
-
Consulte a secção Ransomware .
Ataques de ransomware operados por humanos: um desastre evitável (março de 2020)
Inclui análises da cadeia de ataques de ataques reais.
Resposta de ransomware para pagar ou não? (dezembro de 2019)
Norsk Hydro responde a ataque de ransomware com transparência (dezembro de 2019)
Sugestão
Quer saber mais? Interaja com a comunidade do Microsoft Security na nossa Tech Community: Microsoft Defender XDR Tech Community.