Como o próprio nome indica, um Indicador de Comprometimento (IoC, sua sigla em inglês) é um dado que surge como resultado de determinada atividade em nosso sistema e que nos fornece informações sobre o comportamento, característica ou descrição de uma ameaça. Um IoC funciona como uma evidência que nos permite confirmar se o nosso dispositivo foi comprometido por um malware, mas também é uma informação que pode ser usada para prevenir ataques futuros. Diante disso, um indicador de comprometimento pode ser dado na forma de um nome de arquivo, nome de um processo no gerenciador de tarefas, uma URL ou endereço IP, comportamento anormal no tráfego da web, tentativas de login malsucedidas, entre muitas outras.
Um pouco de contexto sobre o papel dos IoCs na indústria
Para entender como o malware funciona e qual é seu objetivo final, uma das tarefas realizadas pelos pesquisadores de segurança é a análise e monitoramento de diferentes ameaças que fazem parte de campanhas ativas operadas por um cibercriminoso. Essas ameaças podem ser novas ou já conhecidas. Se forem novas, o objetivo será entender como funcionam, e no caso de já terem sido reportadas anteriormente, o intuito será acompanhar sua evolução e possíveis mudanças. Os indicadores de comprometimento são frequentemente usados para realizar esse tipo de tarefa.
No caso dos laboratórios da ESET, nossos sistemas e soluções de proteção contra ameaças digitais coletam constantemente informações e amostras de diferentes campanhas de malware ao redor do mundo. Muitas dessas amostras são conhecidas e outras correspondem a arquivos suspeitos que são analisados de forma detalhada para descobrir se se trata de uma detecção de falso positivo ou se é um malware. Caso seja o último, vamos nos concentrar em saber:
- Quais recursos do sistema utiliza;
- Como ele manipula e o que muda no sistema para poder realizar suas ações;
- Qual é a finalidade do malware e seus componentes, se houver.
Indicadores de comprometimento como evidência de atividade maliciosa
Dado que o malware precisa realizar várias tarefas em um sistema para cumprir seu objetivo, é raro que isso aconteça sem deixar evidências de sua existência ou pistas que nos ajudem a detectar se houve ou há atividade suspeita no sistema, o que indicaria que fomos vítimas de uma infecção. Esses vestígios ou evidências que uma ameaça deixa no sistema são os indicadores de comprometimento. Esses IoCs são usados pelas empresas de segurança para desenvolver perfis para que soluções automatizadas, como pode ser um produto antimalware, possam detectar uma infecção em seu estágio inicial.
No entanto, em algum momento, todos nós já fomos pesquisadores. Seu PC já esteve funcionando de maneira estranha e você procurou no Gerenciador de Tarefas por um processo com um nome que não era familiar ou que esteve consumindo muitos recursos? E isso fez com que você suspeitasse que estaria sendo uma vítima de um malware? Bem comum! Você já leu em um site de segurança algumas informações sobre a descrição de uma ameaça que continha arquivos com o mesmo nome daquele processo estranho? Então você também tem usado um IoC para detectar uma ameaça em seu sistema.
Como geramos indicadores de comprometimento para nossos relatórios?
Como mencionamos anteriormente, isso é feito por meio de uma análise cuidadosa da funcionalidade e do comportamento da amostra de malware. A amostra em si é um IOC: a prática padrão da indústria é gerar um identificador exclusivo de cada amostra usando algoritmos de hashing. Este identificador (hash) é único e não há duas amostras de malware com dados diferentes e o mesmo identificador.
Hashes como indicadores de comprometimento
Algoritmos de hashing não são um segredo exclusivo das empresas de segurança. Qualquer pesquisador ou usuário com certo grau de conhecimento pode gerar um hash a partir de uma amostra com uma ferramenta e usá-lo para pesquisar informações sobre o mesmo em bancos de dados ou plataformas de análise de ameaças on-line, como o VirusTotal ou similares, que são abertas ao público.
Esses hashes são um recurso extremamente valioso para a comunidade e para todo o setor. Por isso é tão comum ver que ao final de cada artigo técnico e white paper que publicamos no WeLiveSecurity, e nos quais analisamos uma determinada ameaça e/ou campanha, os diferentes tipos de indicadores de comprometimento são detalhados para cada caso. Em cada análise publicada, os hashes das amostras analisadas são geralmente incluídos no relatório. Dessa forma, outras instituições podem aproveitar esses indicadores de comprometimento para incorporá-los em seus sistemas e realizar suas próprias pesquisas, o que geralmente fornece novos dados em uma campanha que distribui um malware em particular.
Este último faz parte de um processo de análise de informações conhecido como Inteligência de Ameaças (Threat Intelligence em inglês). Essa verificação cruzada e análise de informações é importante para detectar, mitigar e produzir relatórios estatísticos de uma campanha maliciosa em andamento, o que ajuda a comunidade a se manter a par das atividades de um cibercriminoso durante um período de tempo. Além disso, fornece informações atualizadas sobre os esforços que estão sendo realizados para coibir essas organizações criminosas e gangues.
Alguns exemplos de campanhas maliciosas que analisamos nos últimos meses:
- Vadokrist: análise deste malware bancário em que o alvo é o Brasil
- Operação SignSight: ataque à cadeia de suprimentos à uma autoridade de certificação
Além disso, a ESET mantém um repositório no GitHub com IOCs correspondentes a diferentes campanhas de malware que surgem de nossas pesquisas.
É importante mencionar que em uma mesma campanha de malware podem ser detectadas dezenas, centenas e até milhares de variações do mesmo malware. Por exemplo, a variação mais comum é a adição de um novo endereço para se comunicar com o servidor C&C, o que causa uma mudança no hash resultante da amostra. É por isso que é tão importante e os usuários são sempre aconselhados a manter suas soluções antimalware atualizadas e em completo funcionamento.
Tráfego de dados e endereços IP como indicadores de comprometimento
Não é incomum que atividades maliciosas sejam detectadas em alguma rede por meio de monitoramento de tráfego e sistemas de detecção de intrusão. Em alguns casos, os alarmes desses sistemas são ativados quando há tráfego significativo de dados fora da rede, seja para servidores externos ou pertencentes à organização. Isso também pode acontecer entre computadores conectados em uma rede local. Esse estranho movimento de dados, junto com o acesso a páginas incomuns da web, também são possíveis indicadores de comprometimento.
Por outro lado, quando analisamos um malware, queremos saber o endereço IP do servidor de Comando e Controle (C&C) com o qual ele se comunica. Esses servidores são usados por atacantes para diferentes fins. Por exemplo: para enviar comandos a um computador comprometido e, desta maneira, controlar o malware remotamente; para receber relatórios detalhados dos sistemas infectados; para exfiltrar informações úteis do computador ou sistema comprometido (incluindo senhas, documentos com informações confidenciais, etc.), ou até mesmo para baixar outra ameaça no sistema comprometido (como o trojan Emotet geralmente faz).
Por isso é muito importante encontrar os respectivos endereços IP desses servidores. Eles são então adicionados a listas negras de bancos de dados de sites para que sistemas automatizados detectem uma possível tentativa de conexão com esses sites e nos alertem. Portanto, esses endereços também fazem parte dos indicadores de comprometimento.
Indicadores de comprometimento a partir de mudanças no Registro do Windows
Outra tarefa da análise de malware é entender quais alterações o código malicioso realiza em seu sistema e como ele o manipula. Um exemplo das alterações que o malware pode causar é a manipulação do Registro do Windows. Este registro é uma base de dados que contém valores de configuração para o funcionamento do sistema, bem como os programas que o compõem e os softwares instalados pelo usuário. O Windows possui uma ferramenta para explorar o registro chamada "Editor do Registro", também conhecido pelo nome de arquivo: regedit.exe.
Muitos programas maliciosos criam entradas de registro para armazenar suas próprias configurações, bem como componentes inteiros para evitar salvá-los no sistema de arquivos, pois podem ser facilmente explorados pelo usuário (por exemplo: em C:\Windows). Algumas entradas de registro têm um valor estratégico importante para o malware, uma vez que precisa persistir quando o computador é desligado ou reiniciado, mas também precisa ser capaz de iniciar com o sistema para continuar sua atividade. Chamamos esses tipos de entradas de "AutoRuns" e é aí que quase sempre podemos encontrar a presença de malware e um indicador que confirme que nosso sistema foi comprometido.
Outros tipos de indicadores de comprometimento
Existem muitos outros tipos de IoC que podem ser reconhecidos, embora alguns requeiram um pouco mais de especialização por parte do usuário ou boa intuição, bem como o uso de algumas ferramentas, mas é por isso que não podemos deixar de citar as mais comuns:
- Tráfego de rede incomum para páginas da web desconhecidas, movimento de grandes volumes de dados para páginas da web, servidores externos ou entre computadores na mesma rede.
- Mudanças na configuração do sistema, novas entradas no registro que condicionam alguma atividade de atualização ou instalação de programas legítimos.
- Tentativas de acesso a computadores na mesma rede, especialmente com tentativas malsucedidas.
- Arquivos suspeitos não reconhecidos em execução ou no disco ou arquivos grandes em locais incomuns.
- Atividade incomum que aumenta o acesso ao disco em alguns processos.
- Atividade suspeita da conta do administrador ou de outros usuários com privilégios, bem como contas não reconhecidas ou logins suspeitos.
Dicas de Segurança
Não existe IoC infalível para detectar uma ameaça, às vezes, por simples intuição ou experiência, somos capazes de observar que há algo fora do lugar acontecendo em nossos sistemas. Mas devemos sempre lembrar que a primeira linha de defesa somos nós: devemos prevenir esse tipo de ataque tomando os devidos cuidados, instalando, configurando e mantendo atualizada a solução de segurança que instalamos. Também tome os cuidados necessários na hora de abrir, ler e responder e-mails de estranhos que prometem algo bom demais para ser verdade. O melhor que podemos fazer com esses e-mails é marcá-los como spam e excluí-los.