O que acontece quando uma vítima é comprometida por um backdoor? É uma questão difícil que não é possível responder, de forma completa, simplesmente aplicando engenharia reversa ao código. Neste artigo, vamos analisar alguns comandos enviados pelos operadores para os alvos de ataque.
O grupo Sednit - também conhecido como APT28, Fancy Bear, Sofacy ou STRONTIUM - está ativo desde pelo menos 2014 e tem ganhado destaque nos últimos anos.
Recentemente, revelamos a existência de um rootkit do UEFI, chamado LoJax, que atribuímos ao grupo Sednit. Este é o primeiro associado a um grupo de APT, e demonstra que o Sednit teve acesso a ferramentas sofisticadas para realizar operações de espionagem.
Três anos antes, o grupo Sednit lançou novos componentes direcionados a vítimas em vários países do Oriente Médio e da Ásia Central. A partir daí, o número e a diversidade de componentes aumentaram drasticamente. Os pesquisadores da ESET, assim como outros profissionais de outras empresas, documentaram esses componentes. No entanto, neste artigo, vamos nos enfocar no que está por trás do comprometimento, ou seja, o que os operadores fazem quando o sistema da vítima está executando o backdoor.
A isca do urso
No final de agosto de 2018, o grupo Sednit lançou uma campanha de spear phishing (e-mail direcionados), na qual distribuía URLs encurtadas que liberavam a primeira fase dos componentes do Zebrocy. No passado, Sednit usava uma técnica semelhante para campanhas de phishing. No entanto, é incomum que o grupo use essa técnica para entregar diretamente um dos componentes do malware. Anteriormente, o grupo usava exploits para entregar e executar o malware da primeira fase, enquanto nessa campanha o grupo dependia inteiramente do uso de técnicas de engenharia social para enganar suas vítimas com o propósito de que executassem a primeira parte da cadeia. A captura de tela na Figura 1 mostra estatísticas do Bitly para a URL encurtada usada nessa campanha.
Esse link registrou cerca de 20 cliques na mesma semana em que a URL foi criada, e isso supostamente fez o download do arquivo de destino. Tenha em mente que isso pode significar menos de 20 vítimas, já que as vítimas podem ter clicado na URL duas vezes, ou até mais, pois o resultado não era o que eles esperavam... tal como descreveremos abaixo.
Embora os dados de telemetria da ESET indiquem que essa URL foi distribuída por meio de e-mails de spear phishing, não temos uma amostra desses e-mails. A URL encurtada direciona a vítima para uma URL com base em um IP no qual está o payload armazenado.
Infelizmente, sem a mensagem do e-mail, não sabemos se há alguma instrução para o usuário, se existe alguma outra engenharia social, ou se é baseada somente na curiosidade da vítima. O arquivo contém dois arquivos: o primeiro é um executável, enquanto o segundo é um documento PDF usado como uma isca.
Observe que há um erro de digitação no nome do arquivo executável, já que deveria ser "ДОВIДНИК" em vez de "ДОВIДНIК". Uma vez que o binário é executado, uma caixa de diálogo é aberta pedindo para digitar uma senha. O resultado da validação da senha sempre será errado, mas após a tentativa de validação aparente, o documento PDF usado como uma isca é aberto. Este documento parece estar vazio, mas o downloader, que está escrito em Delphi, continua rodando em segundo plano. O endereço IP também é usado na URL do código no primeiro downloader binário.
O covil do urso
O downloader de Fase-1 irá baixar e executar um novo downloader, escrito em C ++, não muito diferente de outros downloaders do Zebrocy. Novamente, este downloader é tão simples quanto os outros downloaders do Zebrocy. Cria um ID e baixa um novo e interessante backdoor (desta vez) escrito em Delphi.
Como explicamos em nosso artigo mais recente sobre o Zebrocy, a configuração do backdoor é armazenada na seção de recursos e é dividida em quatro blobs criptografados com código hexadecimal. Esses blobs contêm as diferentes partes da configuração.
Uma vez que o backdoor envia informações básicas sobre o novo sistema comprometido, os operadores assumem o controle do backdoor e imediatamente começam a enviar comandos para ele.
Portanto, o tempo que decorre entre o momento em que a vítima executa o downloader e os operadores enviam os primeiros comandos é de apenas alguns minutos.
Como o urso caça
Nesta seção, descrevemos com mais detalhes os comandos que os operadores executam manualmente através do backdoor Delphi.
Os comandos disponíveis estão localizados na configuração de um dos blobs acima mencionados (o blob "comando" na Figura 3). O número de comandos suportados aumentou com o tempo, com mais de 30 na última versão do backdoor. Como não identificamos um padrão na ordem em que os comandos são invocados, acreditamos que os operadores os executam manualmente.
O primeiro conjunto de comandos coleta informações sobre o computador e o ambiente da vítima:
Commands | Arguments |
---|---|
SCREENSHOT | None |
SYS_INFO | None |
GET_NETWORK | None |
SCAN_ALL | None |
Os comandos acima são comumente executados assim que os operadores se conectam a um novo backdoor ativado. Eles não apresentam nenhum argumento e são fáceis de entender. Outros comandos que foram comumente vistos e que são executados logo após a ativação desses backdoors, estão listados abaixo:
Commands | Arguments |
---|---|
REG_GET_KEYS_VALUES | HKEY_CURRENT_USER Software\Microsoft\Windows\CurrentVersion |
DOWNLOAD_DAY(30) | c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg; *.bmp;*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;*.lhz; d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg; |
DOWNLOAD_DAY(1) | c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg *.bmp*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf; d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg |
CMD_EXECUTE | echo %APPDATA% ipconfig /all netstat -aon |
CMD_EXECUTE | wmic process get Caption,ExecutablePath reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s |
Aqueles que já leram nossos artigos anteriores sobre o Zebrocy notarão que, mais ou menos, o mesmo tipo de informação é enviada repetidas vezes nos estágios anteriores. Esta informação é solicitada dentro de alguns minutos após o comprometimento inicial e a quantidade de dados que o operador terá que lidar é suficiente.
A fim de coletar ainda mais informações, a cada determinado período de tempo, os operadores do Zebrocy fazem o upload e usam dumpers nos computadores das vítimas. Os dumpers atuais têm certas semelhanças com aqueles que foram usados anteriormente pelo grupo. Nesse caso, apontam para navegadores como Yandex, Chromium, 7Star Browser (um navegador baseado no Chromium) e CentBrowser, bem como versões anteriores do Microsoft Outlook de 1997 a 2016.
Command | Arguments |
---|---|
UPLOAD_AND_EXECUTE_FILE | C:\ProgramData\Office\MS\msoffice.exe […] 4D5A9000… |
Esses dumpers criam arquivos de log que indicam a presença ou ausência de possíveis bancos de dados para dumpear.
Command | Arguments |
---|---|
DOWNLOAD_LIST | C:\ProgramData\Office\MS\out.txt C:\ProgramData\Office\MS\text.txt |
Os dumpers a seguir contêm as seguintes rotas quando não há bancos de dados para dumpear.
%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Default\Login Data not found
%LOCALAPPDATA%\Chromium\User Data\Default\Login Data not found
%LOCALAPPDATA%\7Star\7Star\User Data\Default\Login Data not found
%LOCALAPPDATA%\CentBrowser\User Data\Default\Login Data not found
Esses dumpers são rapidamente removidos depois de terem feito o seu trabalho. Além disso, o backdoor contém uma lista de nomes de arquivos relacionados às credenciais do software mostrado abaixo (nomes de bancos de dados):
key3.db | Firefox private keys (now named key4.db) |
---|---|
cert8.db | Firefox certificate database |
logins.json | Firefox encrypted password database |
account.cfn | The Bat! (email client) account credentials |
wand.dat | Opera password database |
Os operadores se preocupam em recuperar esses bancos de dados se estiverem presentes nos computadores das vítimas.
Command | Arguments |
---|---|
DOWNLOAD_LIST |
%APPDATA%\The Bat!\Account.CFN %APPDATA%\The Bat!\[REDACTED]\Account.CFN |
Os operadores recuperam esses arquivos na máquina usando o comando DOWNLOAD_LIST. Este comando pode ser usado quando os operadores estão cientes da presença de arquivos interessantes no computador.
Finalmente, dependendo de quão interessante é a vítima, os operadores de malware podem implantar outro backdoor personalizado. Este backdoor é executado usando o comando CMD_EXECUTE.
Command | Arguments |
CMD_EXECUTE |
|
Existem alguns fatos interessantes aqui. Primeiro, eles usam o sequestro de objetos COM para fazer o malware persistir no sistema, mesmo que o backdoor personalizado seja instalado por apenas algumas horas. Em segundo lugar, a string codificada em hex é o C&C usado pelo backdoor personalizado, enquanto que no backdoor no Delphi o C&C é embutido na configuração.
Os dois backdoors no Delphi são bastante semelhantes, mas eles contêm essas configurações interessantes:
Delphi backdoor | Downloaded Delphi backdoor | |
---|---|---|
Delphi compiler version | 14.0-15.0 | 32.0 |
32/64-bit | 32-bit | 64-bit |
Configuration location | resource section | no config (C&C is passed as an argument) |
Number of commands | 5 | 3 |
Encryption algorithm | AES ECB | custom |
Lifetime on the computer | a few days | a few hours |
Mais uma vez, não está muito claro qual é o propósito deste backdoor personalizado. A taxa de detecção é definitivamente baixa em comparação com o backdoor "usual". O curto período de tempo em que esse backdoor está dentro do sistema de forma operacional torna difícil a recuperação. Quando seus operadores concluem suas ações maliciosas, eles rapidamente o eliminam.
Resumo
Observe os comandos usados ativamente pelos operadores deste backdoor é bastante interessante. Eles estão coletando uma quantidade considerável de informações do alvo comprometido e não parecem se preocupar com a duplicação de dados. Isso mostra uma grande lacuna entre a estratégia de desenvolvimento e o que os operadores fazem na prática. Esses backdoors com configurações personalizadas e módulos são implantados com muito cuidado, o que indica certas precauções para evitar cair nas mãos dos pesquisadores.
O primeiro conjunto de comandos é o mesmo e é executado por um período de tempo muito curto, o que gera outra pergunta: é automatizado?
Indicadores de Comprometimento (IoCs)
Distribution URL |
---|
http://45.124.132[.]127/DOVIDNIK - (2018).zip |
C&C server |
---|
http://45.124.132[.]127/action-center/centerforserviceandaction/service-and-action.php |
SHA-1 | ESET detection names |
---|---|
48f8b152b86bed027b9152725505fbf4a24a39fd | Win32/TrojanDownloader.Sednit.CMT |
1e9f40ef81176190e1ed9a0659473b2226c53f57 | Win32/HackTool.PSWDump.D |
bfa26857575c49abb129aac87207f03f2b062e07 | Win32/PSW.Agent.OGE |
Técnicas do MITRE ATT&CK
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1192 | Spearphishing Link | Spearphishing emails using a URL-shortener service to trick the victim into clicking on a link to a zip file containing malicious files. |
Execution | T1204 | User Execution | Tricks users into running an executable with an icon that looks like a Microsoft Word document. |
T1085 | Rundll32 | rundll32.exe has been used to run a new, downloaded, malicious DLL. | |
T1047 | Windows Management Instrumentation | WMI commands to gather victim host details. | |
T1053 | Scheduled Task | Schedule task to execute malicious binaries. | |
Persistence | T1060 | Registry Run Keys / Startup Folder | Registry key HKCU\Software\Microsoft\CurrentVersion\Run\ used for persistence. |
T1122 | Component Object Model Hijacking | COM hijacking for persistence. | |
Defense Evasion | T1107 | File Deletion | Deletes files (binaries and files created) after usage. |
T1089 | Disabling Security Tools | Kills processes | |
Discovery | T1012 | Query Registry | Registry keys enumeration |
T1057 | Process Discovery | Lists running processes | |
T1082 | System Information Discovery | Uses systeminfo command to gather information about the victim. | |
T1083 | File and Directory Discovery | Uses echo ENV command to list the content of a directory. | |
Collection | T1005 | Data from Local System | Scans files that match extensions listed in the malware. |
T1039 | Data from Network Shared Drive | Enumerates remote and local drives and then exfiltrates files matching specific extensions. | |
T1025 | Data from Removable Media | Enumerates remote and local drives and then exfiltrates files matching specific extensions. | |
T1074 | Data Staged | Creates file containing path of all files to exfiltrate. | |
T1056 | Input Capture | Keylogger feature. | |
T1113 | Screen Capture | Screenshot feature. | |
Exfiltration | T1020 | Automated Exfiltration | Automatically prepare a file with all file paths to retrieve and send it. |
T1022 | Data Encrypted | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1041 | Exfiltration Over Command and Control Channel | Data are exfiltrated to a C&C server. | |
Command And Control | T1043 | Commonly Used Port | Downloaders and backdoors use ports 80 or 443 to communicate with the C&C server. |
T1024 | Custom Cryptographic Protocol | Data sent are hex encoded, encrypted with AES or a custom algorithm. | |
T1132 | Data Encoding | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1001 | Data Obfuscation | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1008 | Fallback Channels | A fallback C&C server is embedded in the configuration. | |
T1079 | Multilayer Encryption | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. | |
T1071 | Standard Application Layer Protocol | HTTP, HTTPS are used to communicate. | |
T1032 | Standard Cryptographic Protocol | Data sent are hex-encoded, encrypted with a known algorithm or a custom one. |