# T1059.007 - JavaScript ## Técnica Pai Esta é uma sub-técnica de [[t1059-command-scripting-interpreter|T1059 - T1059 - Command and Scripting Interpreter]]. ## Descrição JavaScript é uma linguagem de script multiplataforma originalmente concebida para navegadores, mas com implementações que ultrapassam em muito o ambiente web. No Windows, a implementação **JScript** - interpretada pelo Windows Script Host (wscript.exe / cscript.exe) - integra-se profundamente ao [[t1559-001-component-object-model|Component Object Model (COM)]], permitindo automação de processos do sistema operacional, acesso ao registro, criação de arquivos e execução de comandos sem necessidade de compilação. No macOS, o **JavaScript for Automation (JXA)** - parte da Open Scripting Architecture (OSA) da Apple - oferece acesso à API interna do sistema, executável via `osascript`. Adversários exploram essa ubiquidade para executar código malicioso em ambientes onde outras linguagens de script estão bloqueadas ou monitoradas. O principal atrativo do JavaScript como vetor de ataque é a sua capacidade de ofuscação e execução interpretada. Scripts JavaScript podem ser fortemente ofuscados usando técnicas como codificação em Base64, substituição dinâmica de strings, avaliação dinâmica de código em tempo de execução e geração procedural de instruções - todas alinhadas com a técnica [[t1027-obfuscated-files-or-information|Obfuscated Files or Information]]. Além disso, arquivos `.js` e `.hta` (HTML Application) podem ser executados diretamente pelo sistema operacional Windows sem alertas de segurança em configurações padrão, tornando-os vetores eficazes de entrega de payloads de segundo estágio. O [[s0650-qakbot|QakBot]], historicamente um dos trojans bancários mais prevalentes no Brasil, utilizou extensivamente scripts JS ofuscados em e-mails de phishing como dropper inicial. **Contexto Brasil/LATAM:** JavaScript malicioso é um vetor crítico no Brasil, especialmente em campanhas de phishing bancário. O malware [[s0455-metamorfo|Metamorfo]] - família de trojan bancário que mirou intensamente clientes de bancos brasileiros - utilizou scripts JS como componente de download e execução de payloads. Grupos como [[g0050-apt32|APT32]] (OceanLotus) usaram páginas web com JS malicioso em campanhas de watering hole contra organizações latinoamericanas. O [[s0640-avaddon|Avaddon]] ransomware, que afetou empresas brasileiras, usava scripts JS como vetor de infecção inicial distribuído por spam em massa - um padrão amplamente documentado em incidentes reportados ao CERT.br. ## Attack Flow ```mermaid graph TB A[Entrega - Phishing<br/>ou Watering Hole] --> B[Execução Inicial<br/>wscript.exe / cscript.exe] B --> C:::highlight[JavaScript Malicioso<br/>JScript / JXA / Node.js] C --> D[Download de Payload<br/>ou Acesso COM/WMI] D --> E[Persistência<br/>ou Movimento Lateral] classDef highlight fill:#e74c3c,color:#fff ``` ## Como Funciona **Preparação - Criação e Ofuscação do Script** O adversário cria um script JavaScript (`.js`, `.jse`, `.hta` ou embutido em documento Office) com funcionalidades maliciosas: download de payload, reconhecimento do sistema, estabelecimento de persistência via registro ou tarefas agendadas. O script é fortemente ofuscado - usando `unescape()` com Base64, substituição de caracteres, geração dinâmica de código via funções construtoras ou geração procedural de instruções em tempo de execução - para evadir detecção por assinatura de AV. A entrega ocorre via e-mail de phishing com anexo `.js` ou `.hta`, ou hospedado em site comprometido como parte de um [[t1189-drive-by-compromise|Drive-by Compromise]]. **Execução - Interpretação pelo Windows Script Host ou Navegador** No Windows, o duplo clique em um arquivo `.js` aciona o `wscript.exe` por padrão, que interpreta e executa o JScript sem exibir jánela de console visível ao usuário. O script pode usar objetos COM (`WScript.Shell`, `ActiveXObject("WScript.Shell")`) para executar comandos, criar processos, modificar o registro e fazer requisições HTTP. No macOS, `osascript -l JavaScript` interpreta JXA, permitindo controle de aplicações e acesso a APIs do sistema. Em ambientes corporativos com Node.js instalado, scripts JS podem ser executados diretamente via `node script.js`. **Pós-execução - Persistência e Payload de Segundo Estágio** Após a execução inicial, o script tipicamente realiza um ou mais dos seguintes: (1) faz download de um executável ou DLL de um servidor C2 e o executa; (2) cria tarefas agendadas ou entradas de registro para persistência; (3) usa `WMI` para reconhecimento do ambiente; (4) injeta código em processos via [[t1559-001-component-object-model|COM]]. Frameworks como [[s0154-cobalt-strike|Cobalt Strike]] podem ser carregados inteiramente via JavaScript reflective, deixando mínimo rastro em disco. O script inicial geralmente se auto-deleta após executar o payload de segundo estágio. ## Detecção > [!warning] Atenção - Execução Silenciosa via wscript.exe > O `wscript.exe` executa scripts JS em modo silencioso por padrão - nenhuma jánela ou notificação ao usuário. Monitorar a criação de processos filhos de `wscript.exe` e `cscript.exe` é crítico para detectar abuso desta técnica. **Event IDs críticos (Windows Security + Sysmon):** | Fonte | Event ID | Descrição | |-------|----------|-----------| | Sysmon | **1** | Criação de processo - `wscript.exe` ou `cscript.exe` com args suspeitos | | Sysmon | **3** | Conexão de rede - `wscript.exe` realizando requisição HTTP/HTTPS | | Sysmon | **11** | Criação de arquivo - script JS escrito em `%TEMP%` ou `%APPDATA%` | | Windows Security | **4688** | Criação de processo - filho de `wscript.exe` / `cscript.exe` | | Windows Security | **4104** | Execução de bloco de script PowerShell (quando JS invoca PS) | **Sigma Rule - Suspicious JScript Execution via Windows Script Host:** ```yaml title: Suspicious JScript Execution via wscript or cscript id: 3a7f2b1e-8c4d-4e9a-b2f1-5d8e3c6a9b0f status: experimental description: > Detects execution of JavaScript files via Windows Script Host (wscript/cscript), commonly abused for malware delivery and post-exploitation in Brazilian campaigns. references: - [[t1059-007-javascript]] logsource: product: windows category: process_creation detection: selection_wscript: ParentImage|endswith: - '\wscript.exe' - '\cscript.exe' Image|endswith: - '\powershell.exe' - '\cmd.exe' - '\mshta.exe' - '\rundll32.exe' - '\regsvr32.exe' selection_suspicious_path: Image|endswith: - '\wscript.exe' - '\cscript.exe' CommandLine|contains: - '.js' - '.jse' - '.hta' - '.wsf' CommandLine|contains: - '%TEMP%' - '%APPDATA%' - 'C:\Users\Public' - 'Downloads' condition: selection_wscript or selection_suspicious_path falsepositives: - Legitimaté software installers using JScript for setup - IT automation scripts in enterprise environments level: high tags: - attack.execution - attack.t1059.007 ``` ## Mitigação | Controle | Medida | Aplicação para Organizações Brasileiras | |----------|--------|----------------------------------------| | [[m1042-disable-or-remove-feature-or-program\|M1042]] | Desabilitar Windows Script Host | Em estações de trabalho que não necessitam de JScript, desabilitar o WSH via GPO (`HKLM\Software\Microsoft\Windows Script Host\Settings\Enabled = 0`). Reduz drasticamente o vetor de phishing via `.js`/`.hta`. | | [[m1021-restrict-web-based-content\|M1021]] | Bloquear conteúdo web ativo | Configurar proxies e navegadores para bloquear execução de JavaScript de domínios não confiáveis. Usar extensões de bloqueio de scripts em navegadores corporativos. | | [[m1038-execution-prevention\|M1038]] | Prevenção de execução via AppLocker | Criar regras de AppLocker bloqueando execução de `*.js`, `*.jse`, `*.hta`, `*.wsf` de pastas não-administrativas (`%TEMP%`, `%APPDATA%`, `Downloads`). | | [[m1040-behavior-prevention-on-endpoint\|M1040]] | EDR comportamental | Habilitar regras de detecção de filhos suspeitos de `wscript.exe`. Regras de ASR do Microsoft Defender bloqueiam específicamente scripts ofuscados e execução de payloads de JavaScript. | | Configuração de E-mail | Bloquear anexos `.js`, `.jse`, `.hta` | Configurar gateway de e-mail (Microsoft 365 Defender, Proofpoint) para bloquear ou colocar em quarentena anexos com extensões de script. Prática essencial no contexto de phishing brasileiro. | ## Threat Actors - [[g0010-turla|Turla]] - grupo russo que usa JavaScript em páginas de watering hole e em backdoors baseados em JScript para comunicação C2 sobre canais legítimos. - [[g0050-apt32|APT32]] - grupo vietnamita (OceanLotus) que usou páginas web maliciosas com JavaScript para comprometer organizações governamentais e privadas na ASEAN e América Latina. - [[g1031-saint-bear|Saint Bear]] - APT que abusa de JavaScript em documentos Office para entrega de payloads de reconhecimento em campanhas de espionagem. - [[g0037-fin6|FIN6]] - grupo financeiramente motivado que usou JavaScript em ataques a sistemas de ponto de venda (PoS) em varejistas, incluindo alvos latinoamericanos. - [[g0121-sidewinder|Sidewinder]] - APT sul-asiático que emprega JavaScript em documentos RTF para execução de shellcode contra alvos governamentais e militares. - [[g1019-moustachedbouncer|MoustachedBouncer]] - grupo que utiliza JavaScript em ataques de adversary-in-the-middle contra diplomatas em países de interesse estratégico. - [[g0069-mango-sandstorm|MuddyWater]] - APT iraniano que usa scripts JavaScript ofuscados como componentes de seus droppers multi-estágio. - [[g1006-earth-lusca|Earth Lusca]] - grupo de espionagem chinês com uso documentado de JavaScript em watering holes contra mídia e ONGs. - [[g1037-ta577|TA577]] - operador de malware-as-a-service que distribui QakBot e outros trojans via JavaScript em campanhas de spam em massa, com impacto documentado no Brasil. - [[g1035-winter-vivern|Winter Vivern]] - APT que usa páginas web com JavaScript malicioso para comprometer webmails governamentais europeus. ## Software Associado - [[s0154-cobalt-strike|Cobalt Strike]] - beacons podem ser carregados via JavaScript reflective em ataques de pós-comprometimento, eliminando a necessidade de executáveis em disco. - [[s0455-metamorfo|Metamorfo]] - família de trojan bancário que utilizou scripts JS como dropper inicial em campanhas extensas contra clientes de bancos brasileiros. - [[s0650-qakbot|QakBot]] - um dos trojans bancários mais prolíficos no Brasil, distribuído historicamente via e-mails com anexos `.js` altamente ofuscados. - [[s1246-beavertail|BeaverTail]] - malware de espionagem norte-coreano que se disfarça de pacotes npm legítimos, executando JavaScript malicioso no ambiente do desenvolvedor. - [[s0622-appleseed|AppleSeed]] - backdoor do grupo Kimsuky que usa JavaScript para execução de comandos remotos em alvos sul-coreanos e internacionais. - [[s1180-blackbyte-ransomware|BlackByte Ransomware]] - operador que usou scripts JavaScript como vetor de acesso inicial antes do deploy do ransomware em redes corporativas. - [[s0640-avaddon|Avaddon]] - ransomware que afetou empresas brasileiras e era distribuído via campanhas de spam com scripts `.js` como attachment malicioso. - [[s0228-nanhaishu|NanHaiShu]] - RAT que usa JScript como componente de infecção inicial em campanhas de espionagem contra o setor jurídico e governamental. - [[s1183-strelastealer|StrelaStealer]] - infostealer que abusa de JavaScript em arquivos `.hta` para roubo de credenciais de clientes de e-mail corporativos. - [[s1144-frp|FRP]] - ferramenta de proxy reverso frequentemente deployada via scripts JavaScript em ambientes comprometidos para tunelamento de C2. --- *Fonte: [MITRE ATT&CK - T1059.007](https://attack.mitre.org/techniques/T1059/007)*