macOS Red Teaming
Abusando de MDMs
JAMF Pro:
jamf checkJSSConnection
Kandji
Si logras comprometer las credenciales de administrador para acceder a la plataforma de gestión, puedes comprometer potencialmente todas las computadoras distribuyendo tu malware en las máquinas.
Para el red teaming en entornos de MacOS, se recomienda tener algún entendimiento de cómo funcionan los MDMs:
macOS MDMUsando MDM como un C2
Un MDM tendrá permiso para instalar, consultar o eliminar perfiles, instalar aplicaciones, crear cuentas de administrador locales, establecer contraseña de firmware, cambiar la clave de FileVault...
Para ejecutar tu propio MDM necesitas que tu CSR sea firmado por un proveedor que podrías intentar obtener con https://mdmcert.download/. Y para ejecutar tu propio MDM para dispositivos Apple podrías usar MicroMDM.
Sin embargo, para instalar una aplicación en un dispositivo inscrito, aún necesitas que esté firmada por una cuenta de desarrollador... sin embargo, al inscribirse en el MDM, el dispositivo agrega el certificado SSL del MDM como una CA de confianza, por lo que ahora puedes firmar cualquier cosa.
Para inscribir el dispositivo en un MDM, necesitas instalar un mobileconfig
como root, que podría ser entregado a través de un pkg (podrías comprimirlo en zip y cuando se descargue desde Safari se descomprimirá).
Mythic agent Orthrus utiliza esta técnica.
Abusando de JAMF PRO
JAMF puede ejecutar scripts personalizados (scripts desarrollados por el sysadmin), payloads nativos (creación de cuentas locales, establecer contraseña EFI, monitoreo de archivos/procesos...) y MDM (configuraciones de dispositivos, certificados de dispositivos...).
Autoinscripción de JAMF
Ve a una página como https://<nombre-de-la-empresa>.jamfcloud.com/enroll/
para ver si tienen autoinscripción habilitada. Si la tienen, podría pedir credenciales para acceder.
Podrías usar el script JamfSniper.py para realizar un ataque de password spraying.
Además, después de encontrar credenciales adecuadas, podrías ser capaz de forzar otros nombres de usuario con el siguiente formulario:
Autenticación de dispositivo JAMF
El binario jamf
contenía el secreto para abrir el llavero que en el momento del descubrimiento estaba compartido entre todos y era: jk23ucnq91jfu9aj
.
Además, jamf persiste como un LaunchDaemon en /Library/LaunchAgents/com.jamf.management.agent.plist
Toma de control del dispositivo JAMF
La URL de JSS (Jamf Software Server) que jamf
utilizará se encuentra en /Library/Preferences/com.jamfsoftware.jamf.plist
.
Este archivo contiene básicamente la URL:
Entonces, un atacante podría dejar un paquete malicioso (pkg
) que sobrescriba este archivo al instalarlo, configurando la URL a un listener de Mythic C2 desde un agente Typhon para poder abusar de JAMF como C2.
Suplantación de JAMF
Para suplantar la comunicación entre un dispositivo y JMF necesitas:
El UUID del dispositivo:
ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'
El llavero de JAMF de:
/Library/Application\ Support/Jamf/JAMF.keychain
que contiene el certificado del dispositivo
Con esta información, crea una VM con el UUID de Hardware robado y con SIP deshabilitado, coloca el llavero de JAMF, intercepta el agente de Jamf y roba su información.
Robo de secretos
También podrías monitorear la ubicación /Library/Application Support/Jamf/tmp/
para los scripts personalizados que los administradores podrían querer ejecutar a través de Jamf, ya que son colocados aquí, ejecutados y eliminados. Estos scripts podrían contener credenciales.
Sin embargo, las credenciales podrían ser pasadas a estos scripts como parámetros, por lo que necesitarías monitorear ps aux | grep -i jamf
(sin siquiera ser root).
El script JamfExplorer.py puede escuchar nuevos archivos que se añaden y nuevos argumentos de proceso.
Acceso Remoto a macOS
Y también sobre los protocolos "especiales" de red de MacOS:
macOS Network Services & ProtocolsActive Directory
En algunas ocasiones encontrarás que el computador MacOS está conectado a un AD. En este escenario deberías intentar enumerar el directorio activo como estás acostumbrado. Encuentra algo de ayuda en las siguientes páginas:
389, 636, 3268, 3269 - Pentesting LDAPActive Directory Methodology88tcp/udp - Pentesting KerberosUna herramienta local de MacOS que también puede ayudarte es dscl
:
También hay algunas herramientas preparadas para MacOS para enumerar automáticamente el AD y jugar con kerberos:
Machound: MacHound es una extensión de la herramienta de auditoría Bloodhound que permite recopilar e ingerir relaciones de Active Directory en hosts de MacOS.
Bifrost: Bifrost es un proyecto en Objective-C diseñado para interactuar con las APIs Heimdal krb5 en macOS. El objetivo del proyecto es habilitar mejores pruebas de seguridad en torno a Kerberos en dispositivos macOS utilizando APIs nativas sin requerir ningún otro marco o paquetes en el objetivo.
Orchard: Herramienta de JavaScript para Automatización (JXA) para hacer enumeración de Active Directory.
Información del Dominio
Usuarios
Los tres tipos de usuarios de MacOS son:
Usuarios Locales — Gestionados por el servicio local de OpenDirectory, no están conectados de ninguna manera al Active Directory.
Usuarios de Red — Usuarios volátiles de Active Directory que requieren una conexión al servidor DC para autenticarse.
Usuarios Móviles — Usuarios de Active Directory con una copia de seguridad local de sus credenciales y archivos.
La información local sobre usuarios y grupos se almacena en la carpeta /var/db/dslocal/nodes/Default. Por ejemplo, la información sobre el usuario llamado mark se almacena en /var/db/dslocal/nodes/Default/users/mark.plist y la información sobre el grupo admin está en /var/db/dslocal/nodes/Default/groups/admin.plist.
Además de usar los bordes HasSession y AdminTo, MacHound agrega tres nuevos bordes a la base de datos de Bloodhound:
CanSSH - entidad permitida para SSH al host
CanVNC - entidad permitida para VNC al host
CanAE - entidad permitida para ejecutar scripts de AppleEvent en el host
Más información en https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/
Computer$ password
Obtén contraseñas usando:
Es posible acceder a la Computer$
contraseña dentro del llavero del Sistema.
Over-Pass-The-Hash
Obtén un TGT para un usuario y servicio específicos:
Una vez que se ha recopilado el TGT, es posible inyectarlo en la sesión actual con:
Kerberoasting
Con los tickets de servicio obtenidos, es posible intentar acceder a recursos compartidos en otras computadoras:
Accediendo al llavero
El llavero probablemente contiene información sensible que, si se accede sin generar un aviso, podría ayudar a avanzar en un ejercicio de red team:
macOS KeychainServicios Externos
El Red Teaming en MacOS es diferente al Red Teaming regular en Windows, ya que generalmente MacOS está integrado con varias plataformas externas directamente. Una configuración común de MacOS es acceder a la computadora usando credenciales sincronizadas de OneLogin y acceder a varios servicios externos (como github, aws...) a través de OneLogin.
Técnicas Misceláneas de Red Team
Safari
Cuando se descarga un archivo en Safari, si es un archivo "seguro", se abrirá automáticamente. Así que, por ejemplo, si descargas un zip, se descomprimirá automáticamente:
Referencias
Last updated