
Escáner de secuestro de aplicaciones para macOS

boko.py es un escáner de aplicaciones para macOS que busca e identifica posibles vulnerabilidades de secuestro de dylib y dylib débiles en ejecutables de aplicaciones, así como scripts que una aplicación pueda usar y que tengan potencial para ser backdoorizados. La herramienta también señala archivos interesantes y los lista, en lugar de tener que navegar manualmente el sistema de archivos para su análisis. Con la función de descubrimiento activo, ¡no más adivinanzas sobre si un ejecutable es vulnerable al secuestro de dylib!
La razón detrás de la creación de esta herramienta fue que quería tener más control sobre los datos que Dylib Hijack Scanner descubría. La mayoría de los escáneres disponibles públicamente se detienen una vez que descubren el primer caso de un dylib vulnerable sin expandir el resto de las rutas rpath. Dado que a veces el primer resultado se expande en un archivo inexistente dentro de un área protegida por SIP, quería obtener el resto de esas rutas expandidas. Debido a esto, hay falsos positivos, por lo que la herramienta asigna un campo de certeza a cada elemento.
| Certeza | Descripción |
|---|
| Definitivo | La vulnerabilidad es 100% explotable |
| Alta | Si la vulnerabilidad está relacionada con un ejecutable principal y el rpath es el segundo en el orden de carga, hay una buena probabilidad de que la vulnerabilidad sea explotable |
| Potencial | Esto se asigna a dylibs y scripts backdoorizables, vale la pena investigarlos pero puede que no sean explotables |
| Baja | Baja probabilidad de que sea explotable debido al orden de carga tardío, pero el conocimiento es poder |
La base de esta herramienta está basada en scan.py de DylibHijack por Patrick Wardle (@synack).
boko.py [-h] (-r | -i | -p /path/to/app) (-A | -P | -b) [-oS outputfile | -oC outputfile | -oA outputfile] [-s] [-v]
| Argumento | Descripción |
|---|---|
| -h, --help | Muestra este mensaje de ayuda y sale |
| -r, --running | Verifica los procesos actualmente en ejecución |
| -i, --installed | Verifica todas las aplicaciones instaladas |
| -p /file.app | Verifica una aplicación específica, ej. /Application/Safari.app |
| -A, --active | Ejecuta los binarios ejecutables descubiertos para identificar activamente dylibs secuestrables |
| -P, --passive | Realiza comprobaciones solo viendo las cabeceras de los archivos (por defecto) |
| -b, --both | Realiza ambos métodos de prueba de vulnerabilidad |
| -oS outputfile | Envía la salida estándar a un archivo .log |
| -oC outputfile | Envía los resultados a un archivo .csv |
| -oA outputfile | Envía los resultados a un archivo .csv y un log estándar |
| -s, --sipdisabled | Úsalo si SIP está deshabilitado en el sistema para buscar rutas típicamente de solo lectura |
| -v, --verbose | Muestra todos los resultados en modo verbose mientras el script se ejecuta; sin esto solo se muestran en la consola las vulnerabilidades con certeza Definitivo |
Se recomienda solo usar el modo activo (-A) con la bandera -p y seleccionar un programa específico. Además, es buena idea usar -v con -oS o -oA, a menos que solo estés buscando vulnerabilidades de certeza Definitivo.
Nota de advertencia:
Se desaconseja encarecidamente ejecutar esta herramienta con las banderas -i y (-A o -b) juntas. Esta combinación abrirá cada ejecutable en tu sistema durante 3 segundos a la vez. No me hago responsable de que tu sistema se bloquee o se ralentice por ejecutar eso. Además, si tienes malware inactivo en tu sistema, esto lo ejecutará. También recomiendo no escanear todo el directorio /Applications si tienes Xcode instalado porque lleva mucho tiempo.
python -m pip install psutil