hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md

4.9 KiB

macOS Dirty NIB

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

Para más detalles sobre la técnica, consulta la publicación original en: https://blog.xpnsec.com/dirtynib/**. Aquí tienes un resumen:

Los archivos NIB, parte del ecosistema de desarrollo de Apple, están destinados a definir elementos de interfaz de usuario y sus interacciones en aplicaciones. Incluyen objetos serializados como ventanas y botones, y se cargan en tiempo de ejecución. A pesar de su uso continuo, Apple ahora aboga por los Storyboards para una visualización más completa del flujo de la interfaz de usuario.

Preocupaciones de seguridad con los archivos NIB

Es crítico tener en cuenta que los archivos NIB pueden ser un riesgo de seguridad. Tienen el potencial de ejecutar comandos arbitrarios, y las alteraciones a los archivos NIB dentro de una aplicación no impiden que Gatekeeper ejecute la aplicación, lo que representa una amenaza significativa.

Proceso de Inyección de Dirty NIB

Creación y Configuración de un Archivo NIB

  1. Configuración inicial:
  • Crea un nuevo archivo NIB usando XCode.
  • Agrega un objeto a la interfaz, configurando su clase como NSAppleScript.
  • Configura la propiedad inicial source a través de Atributos de Tiempo de Ejecución Definidos por el Usuario.
  1. Gadget de Ejecución de Código:
  • La configuración facilita la ejecución de AppleScript a pedido.
  • Integra un botón para activar el objeto Apple Script, activando específicamente el selector executeAndReturnError:.
  1. Pruebas:
  • Un simple Apple Script para propósitos de prueba:
set theDialogText to "PWND"
display dialog theDialogText
  • Prueba ejecutándolo en el depurador de XCode y haciendo clic en el botón.

Apuntando a una Aplicación (Ejemplo: Pages)

  1. Preparación:
  • Copia la aplicación objetivo (por ejemplo, Pages) en un directorio separado (por ejemplo, /tmp/).
  • Inicia la aplicación para evitar problemas con Gatekeeper y cachéala.
  1. Sobrescribiendo el Archivo NIB:
  • Reemplaza un archivo NIB existente (por ejemplo, Panel Acerca de NIB) con el archivo DirtyNIB creado.
  1. Ejecución:
  • Desencadena la ejecución interactuando con la aplicación (por ejemplo, seleccionando el elemento de menú Acerca de).

Prueba de Concepto: Accediendo a Datos de Usuario

  • Modifica el AppleScript para acceder y extraer datos de usuario, como fotos, sin el consentimiento del usuario.

Ejemplo de Código: Archivo .xib Malicioso

Abordando Restricciones de Inicio

  • Las Restricciones de Inicio impiden la ejecución de aplicaciones desde ubicaciones inesperadas (por ejemplo, /tmp).
  • Es posible identificar aplicaciones no protegidas por Restricciones de Inicio y apuntarlas para la inyección de archivos NIB.

Protecciones Adicionales de macOS

Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, los métodos anteriores involucraban:

  1. Copiar la aplicación a una ubicación diferente (por ejemplo, /tmp).
  2. Renombrar directorios dentro del paquete de la aplicación para evitar las protecciones iniciales.
  3. Después de ejecutar la aplicación para registrarse con Gatekeeper, modificar el paquete de la aplicación (por ejemplo, reemplazando MainMenu.nib con Dirty.nib).
  4. Renombrar los directorios nuevamente y volver a ejecutar la aplicación para ejecutar el archivo NIB inyectado.

Nota: Las actualizaciones recientes de macOS han mitigado este exploit al evitar modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, volviendo el exploit ineficaz.