Swift-Attack
Testes unitários para equipes azul (blue teams) para auxiliar na criação de detecções para alguns métodos comuns de pós-exploração no macOS. Incluí alguns exemplos de pós-exploração usando tanto o histórico da linha de comando quanto chamadas de API. Os exemplos de pós-exploração aqui incluídos não são abrangentes. Em vez disso, são apenas alguns exemplos comuns que considerei úteis para realizar testes unitários. Pretendo continuar adicionando mais testes unitários a este projeto ao longo do tempo.
Todos esses testes são executados localmente e retornam os resultados para stdout (ou seja, o Swift-Attack não se conecta a um servidor).
Passos:
-
git clone https://github.com/cedowens/Swift-Attack && cd Swift-Attack
-
Certifique-se de que você tenha o swift e as ferramentas de desenvolvedor instalados (pode instalar pela Mac App Store)
-
Compile o calc.c para o teste de injeção dylib:
gcc -dynamiclib -o calc.dylib calc.c
-
swiftc -o Swift-Attack swift-attack.swift
-
./Swift-Attack -h

Nota: Outras dependências de TTP estão abaixo:
- instale o golang (para o teste de dump de cookies)
- instale o Firefox (para o teste de injeção dylib)
Uso:
Você pode executar o Swift-Attack com uma única opção ou várias opções
./Swift-Attack [option1] [option2]...
-
Também incluí um arquivo macro.txt simples (não ofuscado) para testar relações pai-filho em torno de execuções de macros do Office no macOS. Não o ofusquei, pois o foco está na visibilidade/detecção da relação pai-filho. Se quiser testar com uma macro ofuscada, tenho um repositório em github.com/cedowens/MacC2 que contém uma macro ofuscada.
-
Incluí apenas dois testes de persistência (Launch Agent e Login Item). Confira o repositório Persistent JXA de Leo Pitt https://github.com/D00MFist/PersistentJXA para uma lista mais abrangente de exemplos de persistência.
Testes Unitários Incluídos:
- Prompt usando o binário osascript
- Prompt via chamadas de API
- Dump da área de transferência usando o binário osascript
- Dump da área de transferência usando chamadas de API
- Captura de tela usando o binário screencapture
- Captura de tela usando chamadas de API
- Dump do histórico do zsh
- Enumeração de ferramentas de segurança
- Obtenção de informações do sistema usando o binário osascript
- Obtenção de informações do sistema via chamadas de API
- Dump de chaves ssh, aws, gcp e azure no disco
- Dump do histórico do navegador (Chrome, Safari, Firefox)
- Dump do histórico de Quarentena
- Macro do Office: Incluí uma macro simples do Office que se conecta ao host local. Nota: a macro invocará o curl para fazer uma requisição GET usando python para http://127.0.0.1/testing quando executada ao clicar no botão "Enable Macros". Isso permitirá testar detecções para relações pai-filho em torno da execução de macros. Nota: este teste simples não inclui nenhuma ofuscação, pois o teste é mais voltado para relações pai-filho. Você pode usar outro repositório meu em https://github.com/cedowens/MacC2 para testar com macros ofuscadas. Para usar, basta colar o conteúdo de "macro.txt" em um documento do Office, salvar como um documento habilitado para macros ou no formato de documento 97-2004 (ex: .doc, .xls, etc.), e clicar em "Enable Macros" ao abrir o documento para executar.
- Pacote Instalador: Incluí o arquivo TestInstaller.pkg para testar detecções em torno de um pacote instalador básico. Este pacote instalador inclui um script preinstall que é executado em bash e coloca com.simple.agent.plist em /Library/LaunchDaemons/ e coloca test.js (um prompt popup simples) em /Library/Application Support/. O arquivo com.simple.agent.plist simplesmente executa osascript contra /Library/Application Support/test.js. Também inclui um script postinstall que é executado em bash e carrega o com.simple.agent.plis usando launchctl load. Enquanto segura o botão Control, clique em Abrir no TestInstaller.pkg para executá-lo. O TestInstaller.pkg irá colocar os arquivos mencionados como root.
- Payloads de bypass CVE-2021-30657: Dois payloads de exemplo (ambos fazem requisições curl para localhost quando detonados) para testar dois tipos diferentes de payloads que abusam do cve-2021-30657. Mais informações aqui: https://cedowens.medium.com/macos-gatekeeper-bypass-2021-edition-5256a2955508
- Persistência de Launch Agent
- Persistência de Login Item
- Acesso/Cópia do banco de dados do Keychain do usuário