# 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)*