Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
macos_app_structure — Análisis educativo en profundidad de los bundles de aplicaciones de macOS, los archivos plist y el comportamiento de los procesos launchd, con notas de seguridad ofensiva sobre el empaquetado de payloads como archivos .app y la evasión de la monitorización del árbol de procesos. | Kitploit
Herramientas/GitHubGitHub/yo-yo-yo-jbo/macos_app_structure
Mecanismos de PersistenciaEvasión de IDS/IPSAprendizaje y EducaciónRed TeamingDesarrollo de Payloads
GitHubyo-yo-yo-jbo/macos_app_structure

macos_app_structure

Análisis educativo en profundidad de los bundles de aplicaciones de macOS, los archivos plist y el comportamiento de los procesos launchd, con notas de seguridad ofensiva sobre el empaquetado de payloads como archivos .app y la evasión de la monitorización del árbol de procesos.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
47218hace 2 mesesRevisado por Kitploit
Compartir

Introducción a macOS - Estructura de las Apps de macOS

Transicionar a macOS desde Linux o Windows puede sentirse como caminar por una tierra nueva y desconocida. Dado que Linux es de código abierto y Windows está bien documentado y es muy popular (y macOS no es ninguna de las dos cosas, exactamente), macOS puede resultar desafiante en ocasiones. En esta entrada de blog, pretendo hablar sobre algunas de las primeras cosas que podrías notar en macOS: ¡Apps, Apps por todas partes!

Apps vs. procesos (¿tareas?)

Si vienes de un entorno Windows o Linux, el concepto de Apps puede parecer extraño. Todos sabemos que los hilos son "unidades de ejecución" y que los procesos son contenedores de hilos con su propio espacio de direcciones; ¿qué más hay que saber? Bueno, los procesos rara vez se despliegan en un único archivo. Tanto en Windows como en Linux hay muchas cosas que el código podría necesitar para funcionar; algunas de ellas son:

  • Módulos cargables (.dll, .so). Por ejemplo, la biblioteca de runtime de C (msvcr<version>.dll en Windows, libc-<version>.so) así como otras dependencias.
  • Recursos. Por ejemplo, en Windows, los archivos ejecutables vienen en un formato llamado PE, que tiene directorios; uno de ellos es el directorio de recursos (incluso algo documentado aquí) que puede contener recursos (imágenes, cadenas y otros). Los recursos también podrían cargarse dinámicamente desde el disco, por supuesto.
  • Firmas digitales. Estas son menos comunes en Linux (aunque existen de alguna forma, por ejemplo, en Paquetes Debian) pero son importantes. En Windows pueden existir en el propio archivo PE (lee aquí) o en archivos de catálogo (es decir, externamente).
  • Configuración. En Linux, esos son archivos (como tus confiables archivos .bashrc), y en Windows se dividen entre archivos (por ejemplo, xml, ini, json) y el Registro de Windows.
  • Otros ejecutables.

Bueno, macOS pone un fuerte énfasis en los Application Bundles. La idea es empaquetar (casi) todo lo necesario para que el programa se ejecute en una estructura de directorios, incluyendo recursos, información de localización, etc. Por supuesto, no todo puede empaquetarse de forma ordenada (como la biblioteca de runtime de C, por ejemplo), pero eso sigue significando que las cosas están empaquetadas de forma ordenada: no hay necesidad de navegar por un enorme Registro o leer páginas de manual para ubicaciones oscuras de archivos de configuración. Los application bundles son simplemente directorios que terminan en .app, aunque la interfaz de usuario oculta la extensión .app (y el hecho de que es un directorio). Desde la perspectiva de un atacante, esto es interesante, ya que un Application Bundle puede tener iconos arbitrarios y ocultar la extensión .app; la entrega de malware podría lograrse engañando a un usuario desprevenido para que haga clic en dicha app. Por ejemplo, piensa en un archivo Resume.app con un icono de PDF.

La estructura de directorios de un Application Bundle puede examinarse fácilmente, obviamente con la App Calculator integrada:

jbo@McJbo ~ % cd /System/Applications/Calculator.app
jbo@McJbo Calculator.app % ll
total 0
drwxr-xr-x   3 root  wheel    96 Mar 17 21:34 .
drwxr-xr-x  43 root  wheel  1376 Mar 17 21:34 ..
drwxr-xr-x   9 root  wheel   288 Mar 17 21:34 Contents
jbo@McJbo Calculator.app % cd Contents
jbo@McJbo Contents % ll
total 16
drwxr-xr-x    9 root  wheel   288 Mar 17 21:34 .
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 ..
-rw-r--r--    1 root  wheel  2147 Mar 17 21:34 Info.plist
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 MacOS
-rw-r--r--  204 root  wheel     8 Mar 17 21:34 PkgInfo
drwxr-xr-x    4 root  wheel   128 Mar 17 21:34 PlugIns
drwxr-xr-x   54 root  wheel  1728 Mar 17 21:34 Resources
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 _CodeSignature
-rw-r--r--    1 root  wheel   461 Mar 17 21:34 version.plist
jbo@McJbo Contents % cd MacOS
jbo@McJbo MacOS % ll
total 344
drwxr-xr-x  3 root  wheel      96 Mar 17 21:34 .
drwxr-xr-x  9 root  wheel     288 Mar 17 21:34 ..
-rwxr-xr-x  1 root  wheel  540912 Mar 17 21:34 Calculator
jbo@McJbo MacOS %

Como puedes ver, Calculator.app es un directorio. Dentro hay un único elemento: otro directorio llamado Contents. Bajo Contents hay múltiples elementos:

  • Info.plist - contiene metadatos de la App. Más sobre esto más adelante.
  • MacOS - contiene el ejecutable principal de la App (como se puede ver en el tercer listado de directorio).
  • PkgInfo - no obligatorio. Un archivo binario que contiene información del paquete.
  • PlugIns - no obligatorio. Un directorio que podría contener plugins para la App. Calculator tiene dos: uno para "Básica y científica" y otro para "Hexadecimal" (realmente no sé por qué hicieron esa separación, ni me importa).
  • Resources - no obligatorio. Como su nombre sugiere, contiene recursos. Puedes encontrar varios elementos allí, incluyendo un archivo .icns con iconos, así como directorios con el sufijo .lprroj que están relacionados con la localización.
  • _CodeSignature - no obligatorio. Como su nombre sugiere - contiene información de firma de código.
  • version.plist - no obligatorio, contiene información de versión.

Ten en cuenta que hay muy pocos elementos que sean oficialmente requeridos. De hecho, ¡podemos crear nuestra primera App sin siquiera compilar nada! Pero primero debemos hablar sobre ese archivo Info.plist.

Archivos Property list

Cuanto más miras macOS, más encontrarás esos extraños archivos. No son más que archivos de configuración glorificados. Siempre tendrán una extensión .plist, que es solo una forma abreviada de llamar a su nombre formal: archivos Property list. Desafortunadamente, hay 3 formatos diferentes de plist mantenidos por Apple:

  • Un formato xml, legible por humanos.
  • Un formato json, no muy utilizado.
  • Un formato binario, que normalmente será visible por el texto bplist como magic number.

Afortunadamente, hay una utilidad llamada plutil que soporta todos los formatos. Para mostrar un archivo plist, simplemente usa plutil -p. Por ejemplo:

jbo@McJbo Contents % plutil -p Info.plist | head -n 20
{
  "BuildMachineOSBuild" => "22A380007"
  "CFBundleDevelopmentRegion" => "English"
  "CFBundleExecutable" => "Calculator"
  "CFBundleGetInfoString" => "10.14, Copyright © 2000-2018, Apple Inc."
  "CFBundleHelpBookFolder" => "Calculator.help"
  "CFBundleHelpBookName" => "com.apple.Calculator.help"
  "CFBundleIconFile" => "AppIcon"
  "CFBundleIconName" => "AppIcon"
  "CFBundleIdentifier" => "com.apple.calculator"
  "CFBundleInfoDictionaryVersion" => "6.0"
  "CFBundleName" => "Calculator"
  "CFBundlePackageType" => "APPL"
  "CFBundleShortVersionString" => "10.16"
  "CFBundleSignature" => "????"
  "CFBundleSupportedPlatforms" => [
    0 => "MacOSX"
  ]
  "CFBundleVersion" => "223"
  "CTIgnoreUserFonts" => 1
jbo@McJbo Contents %
Descargar herramienta