A equipe de pesquisa da ESET descobriu um grupo APT alinhado à China - rastreado como PlushDaemon - e uma de suas operações de ciberespionagem: o comprometimento da cadeia de suprimentos de um software de VPN desenvolvido por uma empresa sul-coreana. Nesse ataque, os invasores substituíram o instalador legítimo por uma versão que implantou o backdoor característico do grupo, SlowStepper: um backdoor avançado e repleto de recursos, acompanhado por um toolkit com mais de 30 componentes.
Pontos-chave deste post
- PlushDaemon é um grupo de ameaças alinhado à China, dedicado a operações de ciberespionagem.
- O principal vetor de acesso inicial do PlushDaemon é o sequestro de atualizações legítimas de aplicativos chineses. No entanto, também identificamos um ataque à cadeia de suprimentos contra um desenvolvedor sul-coreano de VPN.
- Acreditamos que o PlushDaemon seja o único usuário de vários implantes, incluindo o SlowStepper para Windows.
- SlowStepper possui um conjunto avançado de ferramentas, composto por cerca de 30 módulos, programados em C++, Python e Go.
Resumo
Em maio de 2024, identificamos detecções de código malicioso em um instalador NSIS para Windows, que usuários da Coreia do Sul haviam baixado do site do software VPN legítimo IPany (https://ipany.kr/; veja a Imagem 1), desenvolvido por uma empresa sul-coreana. Após uma análise detalhada, descobrimos que o instalador distribuía tanto o software legítimo quanto o backdoor, que denominamos SlowStepper. Entramos em contato com o desenvolvedor do software VPN para alertá-lo sobre o problema, e o instalador malicioso foi removido do site.
Atribuímos essa operação ao PlushDaemon, um grupo cibercriminoso alinhado à China, ativo desde pelo menos 2019 e envolvido em operações de espionagem contra indivíduos e instituições na China, Taiwan, Hong Kong, Coreia do Sul, Estados Unidos e Nova Zelândia.
O PlushDaemon utiliza um backdoor personalizado, que rastreamos como SlowStepper, e sua principal técnica de acesso inicial é o sequestro de atualizações legítimas, redirecionando o tráfego para servidores controlados pelos invasores. Além disso, observamos que o grupo também obtém acesso explorando vulnerabilidades em servidores web legítimos.

As vítimas parecem ter baixado manualmente um arquivo ZIP contendo um instalador NSIS malicioso a partir da URL https://ipany[.]kr/download/IPanyVPNsetup.zip. Não encontramos nenhum código suspeito na página de download (mostrada na Imagem 1) que indicasse descargas direcionadas, como por geofencing para regiões ou intervalos específicos de IP. Por isso, acreditamos que qualquer pessoa que utilizasse o IPany VPN poderia ter sido um alvo válido.
Por meio da telemetria da ESET, descobrimos que vários usuários tentaram instalar o software trojanizado nas redes de uma empresa de semicondutores e de uma empresa de desenvolvimento de software não identificada da Coreia do Sul. Os dois casos mais antigos registrados na nossa telemetria envolveram uma vítima do Japão em novembro de 2023 e outra da China em dezembro de 2023.
Análise técnica
Conforme ilustrado na Imagem 2, ao executar o instalador malicioso IPanyVPNsetup.exe, vários diretórios são criados, e tanto arquivos legítimos quanto maliciosos são implantados.

Além disso, o instalador configura a persistência do SlowStepper adicionando uma entrada chamada IPanyVPN a uma chave de execução, com o valor %PUBLIC%\Documents\WPSDocuments\WPSManager\svcghost.exe. Dessa forma, o componente malicioso svcghost.exe (posteriormente extraído e implantado pelo carregador em EncMgr.pkg) é iniciado sempre que o sistema operacional é inicializado.
O primeiro componente malicioso carregado pelo instalador é o loader AutoMsg.dll. A Imagem 3 ilustra os principais passos seguidos durante a execução desse componente.

Quando IPanyVPNSetup.exe chama ExitProcess, os bytes modificados redirecionam a execução para o shellcode, que carrega o arquivo EncMgr.pkg na memória e o executa.
O encMgr.pkg cria dois diretórios - WPSDocuments e WPSManager - em %PUBLIC%\Documents, iniciando a implantação ao extrair componentes dos arquivos personalizados NetNative.pkg e FeatureFlag.pkg. Os componentes são inicialmente baixados no disco e, em seguida, movidos para outras localizações com novos nomes de arquivo. A sequência e as ações realizadas são as seguintes:
Extração dos arquivos de NetNative.pkg para:
a. %PUBLIC%\Documents\WPSDocuments\WPSManager\assist.dll,
b. %PUBLIC%\Documents\WPSDocuments\WPSManager\msvcr100.dll,
c. %PUBLIC%\Documents\WPSDocuments\WPSManager\PerfWatson.exe, y
d. %PUBLIC%\Documents\WPSDocuments\WPSManager\svcghost.exe.
Elimina o arquivo NetNative.pkg.
Move o arquivo FeatureFlag.pkg para C:\ProgramData\Microsoft Shared\Filters\SystemInfo\winlogin.gif.
Move o arquivo assist.dll para C:\ProgramData\Microsoft Shared\Filters\SystemInfo\Winse.gif.
Extraí o arquivo de Winse.gif para %PUBLIC%\Documents\WPSDocuments\WPSManager\lregdll.dll.
Copia os dados de BootstrapCache.pkg para %PUBLIC%\Documents\WPSDocuments\WPSManager\Qmea.dat.
As últimas ações envolvem a execução do svcghost.exe usando a API ShellExecute e, em seguida, o processo finaliza.
O componente svcghost.exe realiza a monitoração do processo PerfWatson.exe, no qual o backdoor é carregado, garantindo que ele esteja sempre em execução. Caso os processos não estejam em execução, o svcghost.exe executa o PerfWatson.exe (originalmente uma ferramenta de linha de comando legítima chamada regcap.exe, incluída no Visual Studio), da qual os atacantes utilizam para carregar lateralmente o lregdll.dll. O objetivo da DLL é carregar o backdoor SlowStepper a partir do arquivo winlogin.gif.
Em um novo thread, o processo cria uma janela sem nome que ignora todas as mensagens, exceto WM_CLOSE, WM_QUERYENDSESSION e WM_ENDSESSION. Quando qualquer um desses três tipos de mensagem é recebido, o thread tenta estabelecer persistência no registro do Windows, dependendo dos permissões do processo atual; conforme mostrado na Tabela 1.
Tabela 1. Chaves do registro alvo para a persistência.
Requires | Registry key | Entry | Value |
Administrator | HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon | Userinit | Current path of svcghost.exe. |
User | HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows | load |
O backdoor SlowStepper
SlowStepper é um backdoor desenvolvido em C++ com amplo uso de programação orientada a objetos no código de comunicações com o servidor de comando e controle (C&C). Embora o código contenha centenas de funções, a variante específica usada no ataque à cadeia de suprimentos do software IPany VPN parece ser a versão 0.2.10 Lite, conforme identificado no código do backdoor. A chamada versão "Lite" contém, de fato, menos funções do que outras versões anteriores e mais recentes.
A versão mais antiga do backdoor SlowStepper que conhecemos é a 0.1.7, compilada em 31 de janeiro de 2019, de acordo com suas marcas de tempo PE. A versão mais recente é a 0.2.12, compilada em 13 de junho de 2024, e é a versão completa do backdoor.
Tanto a versão completa quanto a versão Lite fazem uso de uma série de ferramentas programadas em Python e Go, que incluem capacidades para coleta extensiva de dados e espionagem por meio de gravação de áudio e vídeo. As ferramentas estavam armazenadas em um repositório de código remoto hospedado na plataforma chinesa GitCode, sob a conta LetMeGo22; no momento da redação deste post, o perfil era privado (Imagem 4).

Comunicações C&C
O SlowStepper não armazena o endereço IP do servidor de comando e controle (C&C) em sua configuração. Em vez disso, ele realiza uma consulta DNS para obter um registro TXT para o domínio 7051.gsm.360safe[.]company. A consulta é enviada para um dos três servidores DNS públicos legítimos:
- 8.8.8.8 - DNS público do Google,
- 114.114.114.114 - 114dns.com, ou
- 223.5.5.5 - DNS público do Alibaba.
Obtivemos quatro registros desse tipo associados a esse domínio:
- &%QT%#/zZDmb4ATTVIxwHXPLGrj0FAOV7q+P/sMG109ooj5YLnVZBs3R/eZcuQximtgLkf
- &%QT%#/zZDmb4ATTVIxwHXPLGrj0FAOV7q+P/sMG109ooj5YKQs3XiHSjM3f+h9ok9XfQ1AjoX+C4UXZsDLVqCDhvxyw==
- &%QT%#aT1sAjOFTcwzQ7hwc0iyfygP/ooo8pkIRyaNKWcqBz+QRGYBV/2v8HrVg28+aZXhfXvgDxS1vXAuhdcN2dEKxw==
- &%QT%#aT1sAjOFTcwzQ7hwc0iyfySJBEDM0z6na7BiogG0hDJqdKlUqkrb9ppOjg8epeQ6I6cUXWLKyZGZCkJwFyKD4Q==
O formato dos dados da consulta é mostrado na Imagem 5. O código verifica se os primeiros seis bytes do registro TXT coincidem com &%QT%# e, caso afirmativo, extrai o restante da cadeia, que é um blob criptografado com AES e codificado em base64. Este blob contém uma matriz de 10 endereços IP que serão usados como servidores C&C. A chave utilizada para a descriptografia é *sQi9&2Uhy3Fg7se e o IV (Initialization Vector) é Qhsy&7y@bsG9st#g.

Ao analisar os dados descriptografados, o código pode extrair pelo menos quatro identificadores de dados, descritos na Tabela 2.
Tabela 2. Tipos de dados processados pelo backdoor.
Data identifier | Size of data | Description |
0x04 | 4 | Data is an IP address. |
0x05 | 6 | Data is an IP address and port number. |
0x06 | 16 | Skips the next 16 bytes of data. We suspect that, given the size of the data, it’s possible that it is an IPv6 address. |
0x00–0x03 0x07–0xFF |
Data identifier value is the value of the data size. | Skips the next (unknown) bytes of data. |
Uma das endereços IP é escolhida, e o SlowStepper se conecta ao servidor C&C via TCP para iniciar seu protocolo de comunicação. Caso, após várias tentativas, não consiga estabelecer uma conexão com o servidor, ele utiliza a API gethostbyname no domínio st.360safe[.]company para obter o endereço IP atribuído a esse domínio e usa o IP obtido como seu servidor C&C de reserva.
Uma vez estabelecida a comunicação, o SlowStepper pode processar os comandos listados na Tabela 3.
Tabela 3. Comandos básicos suportados pelo SlowStepper.
Command ID | Action performed |
0x32 | Collects the following information from the compromised machine and sends it to the server: · brand of the CPU, using the CPUID instruction, · HDDs connected to the computer and their serial numbers, · computer name, · local host name, · public IP address, by querying multiple services, · list of running processes, · list of installed applications, · network interface information, · additional information about the computer’s drives, such as volume name and free space, · system memory, · current username, · persistence type used, · whether cameras are connected, · whether microphones are connected, · whether the operating system is running as a virtual machine, · system uptime, · HTTP proxy configuration, and · whether queries to the DNS server at 114.114.114.114:53 to resolve the addresses of two legitimate domains, cf.duba.net (Kingston) and f.360.cn (360 Qihoo), failed or succeeded. It is unclear to us what the purpose of this information is. |
0x38 | Executes a Python module from its toolkit; the output and any files created by the module are sent to the server. The procedure is very similar to what is used in the shell mode. |
0x39 | Deletes the specified file. |
0x3A | This command can process other commands sent by the operator in SlowStepper’s shell mode, which we explain in more detail below. Alternatively, it can also: · Run a command via cmd.exe and send the output back to the server. · Run a command via cmd.exe without sending the output to the server. |
0x3C | Uninstalls SlowStepper by removing its persistence mechanism and removing its files. |
0x3F | Lists files in the specified directory, and lists drives. |
0x5A | Downloads and executes the specified file. |
O SlowStepper tem uma característica bastante incomum: os desenvolvedores implementaram um shell personalizado, ou interface de linha de comandos, sobre seu protocolo de comunicação. Embora o backdoor aceite e gerencie comandos de forma tradicional, o comando 0x3A ativa a interpretação de comandos escritos pelo operador (Tabela 4).
Tabela 4. Comandos admitidos no modo shell.
Command | Parameters | Description |
cd | Path to a directory. | Checks whether a directory exists. |
gcall | Module name and other unknown parameter(s). | This function can perform two tasks: · Download a module from the remote code repository and execute it. The module is supposed to be a console application. · Send a file from the compromised machine to the operator. |
pycall | Tool name to be executed. | This command is explained in detail in the Execution of tools via SlowStepper’s pycall shell command section. |
restart | self | Restarts SlowStepper by rerunning the host process and calling the ExitProcess API. Returns the message The mode of NSP doesn't support restart self. when SlowStepper is running in a process via a persistence technique that abuses Winsock namespace providers; however, it is not included in this variant of SlowStepper. |
update | N/A | Downloads a module from the remote code repository, replacing a previous existing version. |
gconfig | show | Displays the value of ServerIP (the C&C IP address). |
set | Changes the value of ServerIP. The console suggests the following to the operator: If you want make the Configuration effective immediately, please command “gconfig reload”. |
|
reload | Reloads the configuration. | |
getname | Returns the name of the current process in which SlowStepper is running. | |
getdll | Returns the name of the SlowStepper DLL in the current process. | |
getpid | Returns the process ID of the current process in which SlowStepper is running. | |
getsid | Returns the Remote Desktop Services session ID of the current process. This suggests that SlowStepper might also be intended to compromise machines running Windows Server. | |
getpwd | Downloads getcode.mod from the remote code repository and executes it using rundll32.exe. The module generates a file, named psf.bin, that contains the collected data. | |
gcmd | query | Creates a complete report of information about the specified file or directory. |
delete | Deletes the specified file, directory, or all files in a directory. | |
set | Sets configuration parameters. | |
terminate | Terminates the specified process. | |
cancel | Creates a file with the .delete extension. |
Execução de ferramentas por meio do comando shell pycall do SlowStepper
A Imagem 6 ilustra a cadeia de execução, começando quando o operador emite um comando pycall para solicitar a execução de um módulo Python na máquina comprometida; neste exemplo, o módulo CollectInfo.

A partir do repositório remoto, o comando pycall faz o download de um arquivo ZIP que contém o interpretador Python e suas bibliotecas de suporte. Uma das três distribuições personalizadas possíveis é baixada, conforme indicado na Tabela 5.
Tabela 5. Lista de distribuições personalizadas de Python e as condições sob as quais são baixadas.
Condition | Archive name | Description |
Windows operating system is XP. | winxppy.org | Python 3.4 |
All required Windows API set (stub) DLLs and the Microsoft C runtime are present. | winpy_no_rundll.org | Python 3.7 |
Neither of the preceding conditions are met. | win7py.org | Python 3.7; includes Windows API set (stub) DLLs and the Microsoft C runtime library. |
A Imagem 7 mostra a estrutura de diretórios do arquivo descompactado que contém a distribuição Python, listando apenas os arquivos maliciosos que estão incluídos dentro.

SlowStepper executa o interpretador Python utilizando a seguinte linha de comando:
%PUBLIC%\Documents\WPSDocuments\WPSManager\Python\Pythonw.exe -m runas <nome_modulo>
O módulo chamado runas é um script Python personalizado (Imagem 8) que carrega outro módulo Python personalizado chamado help, do qual utiliza a função chamada run para descriptografar e executar o módulo.

A Tabela 6 lista os módulos que recuperamos do repositório remoto durante o tempo em que esteve disponível.
Tabela 6. Lista de módulos Python e seu propósito.
Filename on disk | Original module name | Purpose |
900150983cd24fb0 |
abc | Test module that prints hello world. |
ef15fd2f45e6bb5c |
Browser | Collects a wide range of data from web browsers: Google Chrome, Microsoft Edge, Opera, Brave, Vivaldi, Cốc Cốc browser, UC Browser, 360 Browser, and Mozilla Firefox. |
967d35e40f3f95b1 |
Camera | If the computer has a camera connected, it takes photos. |
a7ba857c30749bf4 |
CollectInfo | Scans the disk for files with extensions .txt, .doc, .docx, .xls, .xlsx, .ppt, and .pptx. Collects information from several software titles, including: LetsVPN, Tencent QQ, WeChat, Kingsoft WPS, e2eSoft VCam, KuGou, Oray Sunlogin, and ToDesk. |
6002396e8a3e3aa7 |
Decode | Downloads a module from the remote repository and decrypts it. |
9348a97af6e8a2f4 |
DingTalk | Collects a wide range of data from DingTalk (a corporate management tool developed in China), including chat messages, audio, video, contact information, and groups the user has joined. |
801ab24683a4a8c4 |
Download | Downloads (non-malicious) Python packages. |
16654b501ac48e46 |
FileScanner | Scans the disk for files, using the same code as CollectInfo. |
7d3b40764db47a45 |
FileScannerAllDisk | |
3582f6ebaf9b6129 |
getOperaCookie | Gets cookies from the Opera browser. |
10ae9fc7d453b0dd |
list | Lists modules with a .py extension. |
ce5bf551379459c1 |
Location | Obtains the IP address of the computer and the GPS coordinates, using online services. |
68e36962b09c99d6 |
Location1 | |
5e0a529f8acc19b4 |
LocationByIP | |
c84fcb037b480bd2 |
PackDir | Creates a ZIP archive of the specified file. |
4518dc0ae0ff517b |
qpass | This script appears to be unfinished. It obtains and decrypts passwords from Tencent QQ Browser. Probably replaced by the qqpass module. |
5fbf04644f45bb2b |
qqpass | Obtains and decrypts passwords from Google Chrome, Mozilla Firefox, Tencent QQ Browser, 360 Chrome, and UC Browser. |
874f5aaef6ec4af8 |
ScreenRecord | Records the screen, saving the result as an AVI file inside a ZIP archive. |
c915683f3ec888b8 |
Telegram | Collects account information from the Telegram desktop application. |
104be797a980bcbd |
Webpass | Similar to the qqpass module. |
e5b152ed6b4609e9 |
One of the largest modules, it collects a wide range of data from WeChat. | |
6d07a4ebf4dff8e5 |
Wechat_all_file | Collects data from WeChat. |
17cf4a6dd339a131 |
Wechat_src | |
8326cef49f458c94 |
Wechat1 | Similar to WeChat. |
427f01be70f46f02 |
WechatFile | |
72704d83b916fa1f |
WirelessKey | Collects wireless network information and passwords, and output from the ipconfig /all command. |
Além do conjunto de ferramentas Python, encontramos armazenadas no repositório de código remoto outras ferramentas (Tabela 7) que não estão criptografadas; algumas delas foram programadas em C/C++ e outras em Go, conforme indicado a seguir.
Tabela 7. Ferramentas e sua função.
Tool filename | Description |
agent.mod | Reverse proxy programmed in Go. |
getcode.mod getcode64.mod |
Mimikatz. This tool is a DLL downloaded by the getpwd command. |
InitPython.mod | Old downloader to install the customized Python distribution on the compromised machine. This tool is a DLL. |
Remote.mod | RealVNC server that allows the attackers to remotely control the compromised machine. This tool is a DLL. |
soc.mod |
Reverse proxy programmed in Go. Signed with a certificate from a Chinese company called Hangzhou Fuyang Qisheng Information Technology Service Department. We were unable to find any information about the company. |
stoll.mod |
Tool used to perform downloads, written in Go. Signed with a certificate from the Chinese company Zhoushan Xiaowen Software Development Studio. We were unable to find any information about the company. |
Conclusão
Neste post, analisamos um ataque à cadeia de suprimentos contra um provedor coreano de VPN, direcionado a usuários do leste da Ásia, como é evidente pelo software específico voltado para a coleta de informações e confirmado pela telemetria da ESET. Também documentamos o backdoor SlowStepper, utilizado exclusivamente pelo PlushDaemon. Este backdoor se destaca por seu protocolo C&C de várias etapas que utiliza DNS, e sua capacidade de baixar e executar dezenas de módulos Python adicionais com capacidades de espionagem.
Os inúmeros componentes do conjunto de ferramentas PlushDaemon e seu rico histórico de versões demonstram que, embora desconhecido até agora, esse grupo APT alinhado com a China tem operado diligentemente para desenvolver uma ampla gama de ferramentas, o que o torna uma ameaça significativa a ser observada.
Para qualquer consulta sobre nossa pesquisa publicada no WeLiveSecurity, por favor, entre em contato conosco pelo e-mail threatintel@eset.com.
Indicadores de Comprometimento
Você pode encontrar uma lista completa de indicadores de compromisso e amostras em nosso repositório no GitHub.
Arquivos
SHA-1 | Filename | Detection | Description |
A8AE42884A8EDFA17E9D |
AutoMsg.dll | Win32/ShellcodeRunner.GZ | Initial loader DLL. |
2DB60F0ADEF14F4AB357 |
lregdll.dll | Win32/Agent.AGUU | Loader DLL for the SlowStepper backdoor. |
846C025F696DA1F6808B |
OldLJM.dll | Win32/Agent.AGXL | Installer DLL, internally named OldLJM.dll. It is extracted from EncMgr.pkg and executed in memory. |
AD4F0428FC9290791D55 |
svcghost.exe | Win32/Agent.AGUU | Process monitor component that launches PerfWatson.exe or RuntimeSvc.exe to side-load lregdll.dll. |
401571851A7CF71783A4 |
main.dll | Win32/Agent.AEIJ | Decrypted SlowStepper backdoor component. |
068FD2D209C0BBB0C6FC |
IPanyVPNsetup |
Win32/ShellcodeRunner.GZ | Malicious IPany installer. Contains the SlowStepper implant and the legitimate IPany VPN software. |
Rede
IP | Domain | Hosting provider | First seen | Details |
202.189.8[.]72 | reverse.wcsset |
Shandong eshinton Network Technology Co., Ltd. | 2024‑10‑14 | Server used by the (reverse proxy) soc.mod tool. |
47.96.17[.]237 | agt.wcsset[.]com | Hangzhou Alibaba Advertising Co.,Ltd. | 2024‑10‑14 | Server used by agent.mod tool. |
N/A | 7051.gsm.360safe |
N/A | 2020‑09‑29 | SlowStepper queries this domain to obtain its associated DNS TXT record. |
202.105.1[.]187 | st.360safe |
IRT-CHINANET-CN | 2021‑03‑11 | Fallback C&C server contacted by SlowStepper. |
47.74.159[.]166 | N/A | Alibaba (US) Technology Co., Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
8.130.87[.]195 | N/A | Hangzhou Alibaba Advertising Co.,Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
47.108.162[.]218 | N/A | Hangzhou Alibaba Advertising Co.,Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
47.113.200[.]18 | N/A | Hangzhou Alibaba Advertising Co.,Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
47.104.138[.]190 | N/A | Guowei Pan | 2020‑09‑29 | SlowStepper C&C server. |
120.24.193[.]58 | N/A | Hangzhou Alibaba Advertising Co.,Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
202.189.8[.]87 | N/A | Shandong eshinton Network Technology Co., Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
202.189.8[.]69 | N/A | Shandong eshinton Network Technology Co., Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
202.189.8[.]193 | N/A | Shandong eshinton Network Technology Co., Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
47.92.6[.]64 | N/A | Hangzhou Alibaba Advertising Co.,Ltd. | 2020‑09‑29 | SlowStepper C&C server. |
Técnicas ATT&CK do MITRE
Esta tabela foi elaborada utilizando a versão 16 do framework MITRE ATT&CK.
Tactic | ID | Name | Description |
Resource Development | T1583.001 | Acquire Infrastructure: Domains | PlushDaemon has acquired domain names for its C&C infrastructure. |
T1583.004 | Acquire Infrastructure: Server | PlushDaemon has acquired servers to be used as C&C servers. | |
T1608.001 | Stage Capabilities: Upload Malware | PlushDaemon has staged its toolkit in the code repository website GitCode. | |
T1608.002 | Stage Capabilities: Upload Tool | PlushDaemon has staged its toolkit in the code repository website GitCode. | |
T1588.001 | Obtain Capabilities: Malware | PlushDaemon has access to SlowStepper. | |
T1588.002 | Obtain Capabilities: Tool | PlushDaemon tools getcode.mod and getcode64.mod use Mimikatz. | |
T1588.003 | Obtain Capabilities: Code Signing Certificates | PlushDaemon tools soc.mod and stoll.mod are signed. | |
T1588.005 | Obtain Capabilities: Exploits | PlushDaemon has used an unidentified exploit for Apache HTTP server. | |
Initial Access | T1659 | Content Injection | PlushDaemon can intercept network traffic to hijack update protocols and deliver its SlowStepper implant. |
T1190 | Exploit Public-Facing Application | PlushDaemon exploited an unidentified vulnerability in Apache HTTP Server. | |
T1195.002 | Supply Chain Compromise: Compromise Software Supply Chain | PlushDaemon has compromised the supply chain of a VPN developer and replaced the original installer with a trojanized one containing the SlowStepper implant. | |
Execution | T1059.003 | Command-Line Interface: Windows Command Shell | SlowStepper uses cmd.exe to execute commands on a compromised machine. |
T1059.006 | Command-Line Interface: Python | SlowStepper for Windows can use the Python console to execute the Python components of its toolkit. | |
Persistence | T1547.001 | Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder | The SlowStepper installer establishes persistence by adding an entry in HKLM\SOFTWARE\Microsoft\Windows\ |
T1547.004 | Boot or Logon Autostart Execution: Winlogon Helper DLL | The SlowStepper process monitor component can establish persistence by adding an entry in HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit or HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\load. | |
T1574.002 | Hijack Execution Flow: DLL Side-Loading | PlushDaemon has abused a legitimate command line utility included in Visual Studio called regcap.exe to side-load a malicious DLL named lregdll.dll. | |
Defense Evasion | T1222.001 | File Permissions Modification: Windows File and Directory Permissions Modification | SlowStepper modifies the access rights of the directory where its components are stored on disk. |
T1070.004 | Indicator Removal: File Deletion | SlowStepper can remove its own files. | |
T1036.005 | Masquerading: Match Legitimate Name or Location | SlowStepper uses folder names and filenames from legitimate software. | |
T1112 | Modify Registry | SlowStepper can modify the registry. | |
T1027.007 | Obfuscated Files or Information: Dynamic API Resolution | SlowStepper dynamically resolves Windows API functions. | |
T1027.009 | Obfuscated Files or Information: Embedded Payloads | SlowStepper loader DLLs contain embedded, position-independent code, executed in memory, to load components. | |
T1027.013 | Obfuscated Files or Information: Encrypted/Encoded File | SlowStepper components are stored encrypted on disk. | |
T1553.002 | Subvert Trust Controls: Code Signing | PlushDaemon tools soc.mod and stoll.mod are signed. | |
Discovery | T1217 | Browser Bookmark Discovery | SlowStepper’s Browser tool collects information from browsers. |
T1083 | File and Directory Discovery | SlowStepper and its tools can search for files with specific extensions, or enumerate files in directories. | |
T1120 | Peripheral Device Discovery | SlowStepper and its toolkit can discover devices connected to the compromised machine. | |
T1057 | Process Discovery | SlowStepper can create a list of running processes. | |
T1012 | Query Registry | SlowStepper can query the registry. | |
T1518 | Software Discovery | SlowStepper can create a list of software installed on the compromised machine. | |
T1082 | System Information Discovery | SlowStepper can collect system information. | |
T1614 | System Location Discovery | SlowStepper’s Location tool attempts to discover the possible geolocation of the compromised machine by querying several online services. | |
T1016 | System Network Configuration Discovery | SlowStepper collects information from the network adapters. | |
T1016.002 | System Network Configuration Discovery: Wi-Fi Discovery | SlowStepper’s Wireless tool and its variants collects a wide range of information from the Wi-Fi network. | |
T1033 | System Owner/User Discovery | SlowStepper obtains the username. | |
Collection | T1560.002 | Archive Collected Data: Archive via Library | SlowStepper tools can compress the collected data in ZIP archives. |
T1123 | Audio Capture | SlowStepper can capture audio if the compromised machine has a microphone. | |
T1005 | Data from Local System | SlowStepper and its tools collect a wide range of data from the compromised system. | |
T1074.001 | Data Staged: Local Data Staging | SlowStepper and its tools stage data locally before exfiltrating it to the C&C server. | |
T1113 | Screen Capture | SlowStepper’s ScreenRecord tool can take screenshots. | |
T1125 | Video Capture | SlowStepper’s Camera tool can record videos if the compromised machine has a camera. | |
Command and Control | T1071.004 | Standard Application Layer Protocol: DNS | SlowStepper retrieves a DNS TXT record that contains an AES-encrypted list of C&C servers. |
T1132.001 | Data Encoding: Standard Encoding | SlowStepper retrieves a DNS TXT record that contains an AES-encrypted list of C&C servers. The record is base64 encoded. | |
T1573.001 | Encrypted Channel: Symmetric Cryptography | SlowStepper’s communication protocol with its C&C is encrypted with AES. | |
T1008 | Fallback Channels | SlowStepper gets a fallback C&C server IP address by resolving an alternative domain controlled by the attackers. | |
T1105 | Remote File Copy | SlowStepper downloads additional tools from a remote code repository at GitCode. | |
T1104 | Multi-Stage Channels | SlowStepper obtains a list of C&C servers by querying the DNS TXT record from a domain controlled by the attackers; if no communication can be established with the servers, it resolves the IP address of another domain controlled by the attackers to obtain a backup server. SlowStepper tools use different servers from PlushDaemon infrastructure. |
|
T1095 | Standard Non-Application Layer Protocol | SlowStepper communicates with its C&C via TCP. | |
T1090 | Connection Proxy | SlowStepper tools agent.mod and soc.mod are reverse proxies. | |
T1219 | Remote Access Tools | SlowStepper tool Remote.mod allows its operator to remotely control the compromised machine via VNC. | |
Exfiltration | T1020 | Automated Exfiltration | SlowStepper can exfiltrate staged data. |
T1041 | Exfiltration Over C2 Channel | SlowStepper exfiltrates collected data when connected to one of its C&C servers. |