
Pruebas unitarias para equipos azules para ayudar a construir detecciones para algunos métodos comunes de post-explotación en macOS.
Pruebas unitarias para equipos azules para ayudar a construir detecciones para algunos métodos comunes de post-explotación en macOS. He incluido algunos ejemplos de post-explotación utilizando tanto el historial de línea de comandos como llamadas a la API. Los ejemplos de post-explotación incluidos aquí no son exhaustivos. En cambio, son solo algunos ejemplos comunes que pensé que serían útiles para realizar pruebas unitarias. Planeo continuar añadiendo a este proyecto con el tiempo con pruebas unitarias adicionales.
Todas estas pruebas se ejecutan localmente y devuelven resultados a stdout (es decir, Swift-Attack no se conecta a un servidor).
git clone https://github.com/cedowens/Swift-Attack && cd Swift-Attack
Asegúrate de tener instalados swift y las herramientas de desarrollo (se pueden instalar desde la mac app store)
Compila calc.c para la prueba de inyección dylib:
gcc -dynamiclib -o calc.dylib calc.c
swiftc -o Swift-Attack swift-attack.swift
./Swift-Attack -h

Nota: Otras dependencias de TTP están a continuación:
Puedes ejecutar Swift-Attack con una sola opción o múltiples opciones
./Swift-Attack [option1] [option2]...
También incluí un archivo macro.txt simple (sin ofuscar) para probar relaciones padre-hijo en torno a ejecuciones de macros de Office en macOS. No lo ofusqué ya que el enfoque está en la visibilidad/detección de la relación padre-hijo. Si deseas probar con una macro ofuscada, tengo un repositorio en github.com/cedowens/MacC2 que contiene una macro ofuscada.
Solo incluí dos pruebas de persistencia (Launch Agent y Login Item). Revisa el repositorio de JXA persistente de Leo Pitt https://github.com/D00MFist/PersistentJXA para una lista más completa de ejemplos de persistencia.
Solicitud usando el binario osascript
Solicitud mediante llamadas a la API
Volcado de portapapeles usando el binario osascript
Volcado de portapapeles mediante llamadas a la API
Captura de pantalla usando el binario screencapture
Captura de pantalla mediante llamadas a la API
Volcado del historial de zsh
Enumeración de herramientas de seguridad
Obtención de información del sistema usando el binario osascript
Obtención de información del sistema mediante llamadas a la API
Volcado de claves ssh, aws, gcp y azure en disco
Volcado del historial del navegador (Chrome, Safari, Firefox)
Volcado del historial de cuarentena
Macro de Office: Incluí una macro de Office simple que se conecta al host local. Nota: la macro invocará curl para hacer una solicitud GET usando python a http://127.0.0.1/testing cuando se ejecute al hacer clic en el botón "Enable Macros". Esto te permitirá probar detecciones de relaciones padre-hijo en torno a la ejecución de macros. Nota: esta prueba simple no incluye ninguna ofuscación, ya que la prueba está realmente más orientada a las relaciones padre-hijo. Puedes usar otro repositorio mío en https://github.com/cedowens/MacC2 para probar con macros ofuscadas. Para usarlo, simplemente pega el contenido de "macro.txt" en un documento de Office, guárdalo como un documento habilitado para macros o en formato de documento 97-2004 (ej: .doc, .xls, etc.), y haz clic en "Enable Macros" al abrir el documento para ejecutarlo.
Paquete Instalador: Incluí el archivo TestInstaller.pkg para probar detecciones en torno a un paquete instalador básico. Este paquete instalador incluye un script preinstall que se ejecuta en bash y suelta com.simple.agent.plist a /Library/LaunchDaemons/ y suelta test.js (simple ventana emergente) a /Library/Application Support/. El archivo com.simple.agent.plist simplemente ejecuta osascript contra /Library/Application Support/test.js. También incluye un script postinstall que se ejecuta en bash y carga com.simple.agent.plis usando launchctl load. Manteniendo presionada la tecla Control haz clic en Abrir en TestInstaller.pkg para ejecutarlo. TestInstaller.pkg soltará los archivos mencionados como root.
CVE-2021-30657 Cargas de Bypass: Dos cargas de ejemplo (ambas hacen solicitudes curl a localhost cuando se detonan) para probar dos tipos diferentes de cargas que abusan de cve-2021-30657. Más información aquí: https://cedowens.medium.com/macos-gatekeeper-bypass-2021-edition-5256a2955508
Persistencia de Launch Agent
Persistencia de Login Item
Acceso/Copia de la base de datos del llavero de usuario
Inyección de Dylib
Volcado de cookies de Chrome