En un episodio reciente de Tradecraft Tuesday, me acompañó Patrick Wardle, Founder de Objective-See Foundation, para hablar sobre cómo está evolucionando el malware de macOS y qué significa eso para la seguridad hoy en día. Abordamos varios temas clave sobre macOS, como la base de datos BTM (Background Task Management), el estado actual del malware en macOS y más.
Puedes ver la grabación completa del episodio aquí, o seguir leyendo para un resumen de toda la acción, además de un glosario de términos y siglas comunes de macOS al final de esta publicación.
Nuestra conversación en su totalidad se conectó muy bien, ya que aludió a la persistencia en macOS y cómo el malware permanece en el sistema, así como a cómo algunos investigadores han encontrado malware a través de CrashReports.
En el pasado, aquí en Huntress hemos hablado extensamente sobre la persistencia, incluyendo una lista de todos los mecanismos de persistencia conocidos en macOS. Desde entonces, Apple ha reunido algunos de los elementos de persistencia bajo un solo sistema, llamado BTM.
Background Task Management (BTM)
A partir de macOS Ventura, Apple lanzó una nueva base de datos en disco en /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app/Contents/MacOS/BackgroundTaskManagementAgent. Este plist binario (lista de propiedades) mantiene un registro serializado de los elementos de inicio (Launch Items) y elementos de inicio de sesión (Login Items). Los Launch Items, que normalmente se almacenan en una de unas pocas ubicaciones, ahora pueden incluirse dentro de sus propias aplicaciones, lo que dificulta su seguimiento. Al volcar la base de datos BTM, mediante la ejecución de sfltool dumpbtm, puedes ver el elemento de persistencia, su URL de ruta, el nombre del desarrollador y el identificador del equipo, además de otra información útil.
Para acceder al BTM no es necesario hacerlo estrictamente desde la línea de comandos; también se puede acceder a través de Endpoint Security de Apple, una API en C que permite a los desarrolladores acceder a niveles más bajos del sistema operativo. Apple ofrece dos eventos distintos para dar visibilidad sobre el BTM: el primero es ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Este evento notifica si se agrega un nuevo elemento a la base de datos BTM, mientras que el segundo evento ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_REMOVE rastrea si se elimina un elemento.
Hay más información sobre Endpoint Security y cómo interactúa macOS con él disponible en este blog.
Estado actual del malware en macOS
A medida que la cantidad de malware detectado en macOS parece aumentar exponencialmente año tras año, comenzamos a ver toda una gama de nuevas variantes. Desde ransomware perpetrado por la pandilla de ransomware LockBit a mediados de abril, hasta malware sofisticado de un actor estatal llamado RustBucket, pasando por adware y secuestro de motores de búsqueda tan frustrantes como Pirrit y Adload, el malware dirigido a macOS se ha vuelto más abundante.
A medida que Apple ha actualizado macOS, han incluido más verificaciones sobre qué software puede y no puede ejecutarse.
Ya sea que hablemos de la firma de código de una aplicación, el estado de notarización o los permisos TCC, todos estos mecanismos de seguridad se han implementado en un intento por reducir la superficie de ataque general en macOS. Esto ha ayudado a impedir que muchas familias diferentes de malware puedan acceder a información confidencial del usuario final sin su autorización explícita. Esto aplica especialmente, en gran medida, al malware que sus autores primero implementan en dispositivos Windows, antes de adaptarlo a macOS. Simplemente escribir malware multiplataforma, mediante algo como el lenguaje de programación Go, no es suficiente para ataques demasiado sofisticados, debido a estos mecanismos de seguridad.
Hay mucho para ver en el episodio de Tradecraft Tuesday de noviembre, y el estado actual de las cosas es solo una parte de eso. Mira el episodio completo para más contenido y más información sobre las herramientas gratuitas y de código abierto de Objective-See.
Términos y siglas comunes de macOS
Al hablar de macOS, existen muchas siglas y/o términos que puede ser útil conocer. Ya sea que se trate de la seguridad de macOS en particular, el sistema de archivos o algunas de las aplicaciones principales que usarás, siempre es útil tener una guía de referencia.
Para ayudarte a entenderlo todo, esperamos que la siguiente lista te brinde un lugar único con los términos y siglas comunes de macOS que deberías conocer.
- App Sandbox: brinda protección a los recursos del sistema y a los datos del usuario al limitar el acceso de tu app a los recursos solicitados mediante entitlements. Si deseas distribuir tu aplicación a través de la Mac App Store, debes habilitar esta función.
- Application bundle: una forma común de empaquetar aplicaciones para su instalación/distribución. La extensión de este tipo de archivo suele ser .app.
- Bundle ID: un recurso que representa el identificador único de la app, que puedes registrar, modificar y eliminar. La convención de nombres generalmente sigue com.companyName.applicationName.
- Codesigning: aplicar el developer/team ID (ver más abajo) de un desarrollador a una aplicación, para que la gente sepa quién es el propietario y no una copia falsificada. También es utilizado por Gatekeeper/File Quarantine/Notarization para buscar y detectar contenido malicioso.
- Daemon: un proceso que se ejecuta en segundo plano, normalmente con privilegios de “root” (es decir, de administrador). El Huntress Agent sería un ejemplo de daemon.
- Developer ID (también llamado Team ID): una cadena alfanumérica de diez caracteres asociada a una aplicación (y asignada por Apple). Es la forma de reclamar una aplicación como propia.
- Entitlement: un privilegio que otorga a un programa una capacidad específica en una Mac, como acceder al directorio Documents de un usuario o (en algunos casos) instalar extensiones del sistema. Esto último es un ejemplo de entitlement restringido, que requiere que los usuarios distribuyan un provisioning profile con nuestra app que especifique los entitlements que se le han otorgado.
- ES (a menudo llamado ESF): Endpoint Security (Framework): una API de bajo nivel en C provista por Apple diseñada para monitorear eventos del sistema en busca de actividad potencialmente maliciosa.
- File Quarantine: file quarantine es parte de la seguridad integrada de macOS. Asigna un atributo extendido a los archivos recién descargados. Luego los mueve a una carpeta temporal, donde le pregunta al usuario final si confía o no en el archivo.
- FileVault: brinda cifrado de disco completo para los datos del usuario. Garantiza que los datos del usuario estén protegidos de forma segura contra el acceso no autorizado en caso de que su Mac se pierda o sea robada, agregando una capa adicional de seguridad a sus archivos e información.
- Finder: similar al menú de inicio del Explorador de Windows. Es una manera fácil de buscar archivos, abrir aplicaciones y realizar otras tareas básicas. Es similar a cómo el Launchpad/Dock de macOS equivale al menú Inicio de Windows.
- Full Disk Access (FDA): para acceder a funciones como directorios con datos del usuario (o datos sensibles), directorios de biblioteca, etc., sin tener que aprobar explícitamente cada directorio. Esto es parte de Transparency, Consent, and Control (TCC).
- Gatekeeper: una función de seguridad en macOS que controla y verifica la autenticidad de las aplicaciones antes de permitir que se ejecuten, impidiendo la ejecución de software no autorizado.
- Hardened Runtime: una función de seguridad de macOS que restringe y supervisa el comportamiento de una aplicación. Aplica protecciones en tiempo de ejecución, incluidas la firma de código y las verificaciones de integridad de código en tiempo de ejecución, y previene la inyección de código, el DLL hijacking y la manipulación de memoria.
- Keychain: una app de macOS que almacena tus contraseñas e información de cuenta, y reduce la cantidad de contraseñas que debes recordar y administrar. Se almacena en el secure enclave.
- LaunchAgent: un elemento de persistencia que ejecutará un binario una vez que haya comenzado una sesión de usuario
- LaunchDaemon: un elemento de persistencia que ejecutará un binario una vez que el sistema arranque (no requiere una sesión de usuario interactiva)
- M1/M2: serie de sistemas en chip basados en ARM diseñados por Apple Inc. como unidad central de procesamiento y unidad de procesamiento gráfico para sus computadoras de escritorio y notebooks Mac, y las tablets iPad Pro e iPad Air
- Mobile Device Management (MDM): la gestión de dispositivos móviles (MDM) permite a los administradores configurar ajustes de forma remota, aplicar políticas de seguridad, distribuir apps y proteger el uso de dispositivos dentro de la organización. Apple se está orientando fuertemente hacia este modelo de seguridad mediante configuración declarativa. Ejemplos de MDM son Addigy, Intune, Jamf o Kandji.
- Notarization: similar al codesigning, es un mecanismo de seguridad provisto por Apple que consiste en enviar tu aplicación a Apple para su revisión (buscan malware)
- pkg: el tipo de archivo de un instalador. Generalmente contiene un script previo y/o posterior a la instalación
- Plist: un formato de archivo estructurado que normalmente contiene configuraciones, preferencias o metadatos para aplicaciones. Esta es la estructura de archivo para LaunchItems (LaunchAgents, LaunchDaemons).
- PPPC Payload: PPPC significa “Privacy Preferences Policy Control”. Al usar un MDM, los administradores pueden implementar un payload (o política) PPPC. Esto puede especificar permisos de TCC para aplicaciones sin requerir aprobación explícita del usuario final. Un ejemplo sería otorgarle al HuntressAgent acceso completo al disco. Esto solo está disponible cuando se implementa mediante un MDM.
- Provisioning Profile: una especie de manifiesto distribuido con aplicaciones de terceros, que describe, entre otras cosas, qué entitlements requiere la app y dónde se le permite ejecutarse (por ejemplo, solo en ciertas máquinas de desarrollo/prueba seleccionadas, o en cualquier lugar). Las apps de macOS normalmente no requieren provisioning profiles, pero puede ser necesario incluir uno si se utilizan entitlements restringidos (ver entitlement).
- Secure Enclave: un coprocesador seguro y separado que se encuentra en algunas Mac y dispositivos iOS, que maneja operaciones sensibles como datos biométricos (Touch/Face ID) y claves de cifrado.
- System Integrity Protection (SIP): un sistema de funciones de seguridad que impide la modificación de archivos del sistema.
- System Extension: similar al driver OSR en Windows. Es la forma de comunicarse con los niveles bajos del sistema operativo.
- TCC: Transparency, Consent, & Control (base de datos en disco). Este es un lugar común para comenzar a solucionar problemas tras la instalación o fallas de funcionalidad de la aplicación.
- Unified Logging: brinda una API integral y de alto rendimiento para capturar telemetría en todos los niveles del sistema
- XPC: un protocolo específico de Apple para la comunicación entre niveles bajos del sistema operativo. Permite la comunicación bidireccional entre procesos.