
ipsw v3.1.716
Navaja suiza para investigación en iOS/macOS
ipsw
Navaja Suiza de Investigación para iOS/macOS
¿Qué es ipsw? 🤔
ipsw es un framework integral de investigación por línea de comandos para iOS y macOS. Proporciona un amplio conjunto de herramientas para investigadores de seguridad, ingenieros inversos, desarrolladores de jailbreak y entusiastas de iOS para descargar, analizar y examinar el firmware de Apple e interactuar con dispositivos iOS.
Capacidades Principales
- 📱 Análisis IPSW/OTA - Descargar, extraer y analizar archivos de firmware de iOS
- 🔍 Análisis de Binarios - Análisis avanzado de Mach-O con desensamblado ARM y asistencia de IA
- 🧠 dyld_shared_cache - Análisis completo de caché compartida con volcado de clases ObjC/Swift
- 🔧 Análisis del Kernel - Análisis de kernelcache, extracción de syscalls y simbolización
- 📲 Interacción con Dispositivos - Gestión y depuración integral de dispositivos iOS
- 🔐 Investigación de Firmware - Análisis de firmware IMG4, iBoot, SEP y coprocesadores
- 🏪 App Store Connect - Integración completa de API para gestión de apps y certificados
- 🛠️ Herramientas de Desarrollo - Utilidades de SSH, Frida, depuración e ingeniería inversa
Inicio Rápido
Instalación
macOS
Usando el tap de blacktop (incluye extras)
brew install blacktop/tap/ipsw
Usando la fórmula oficial de Homebrew
brew install ipsw
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Uso Básico
# Descargar el último IPSW de iOS
ipsw download ipsw --device iPhone16,1 --latest
# Extraer kernelcache
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
# Analizar dyld_shared_cache
ipsw dyld info /path/to/dyld_shared_cache_arm64
# Obtener información del dispositivo
ipsw idev list
Características Principales
📱 Gestión de IPSW y OTA
- Fuentes de Descarga: Apple, AppleDB, Portal de Desarrolladores, feeds RSS, GitHub, iTunes, Wikipedia
- Tipos de Archivo: IPSW, OTA, instaladores de macOS, Xcode, KDKs, archivos PCC
- Operaciones: Extraer, comparar, montar, analizar metadatos
ipsw download ipsw --device iPhone16,1 --latest
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
ipsw diff iPhone16,1_18.1_22B83_Restore.ipsw iPhone16,1_18.2_22C150_Restore.ipsw
🔍 Análisis de Binarios e Ingeniería Inversa
- Análisis Mach-O: Análisis completo de binarios con extracción de símbolos
- Desensamblado ARM: Desensamblador ARM v9-a con análisis impulsado por IA
- Firma de Código: Verificar firmas, analizar entitlements
- Parcheo de Binarios: Añadir, modificar o eliminar parches
ipsw macho info /path/to/binary
ipsw macho disass /path/to/binary --symbol _main
ipsw macho search /path/to/binary --string "password"
🧠 Análisis de dyld_shared_cache
- Análisis de Caché: Extraer y analizar la estructura completa de la caché compartida
- Análisis ObjC: Volcados de clases, análisis de métodos, análisis de protocolos
- Soporte Swift: Volcado y análisis de clases Swift (experimental)
- Gestión de Símbolos: Extracción de símbolos y resolución de direcciones
ipsw dyld info /path/to/dyld_shared_cache
ipsw dyld extract /path/to/dyld_shared_cache --dylib Foundation
ipsw dyld objc class /path/to/dyld_shared_cache --class NSString
📲 Interacción con Dispositivos iOS (idev)
- Sistema de Archivos: Explorar y transferir archivos mediante AFC
- Gestión de Apps: Instalar, desinstalar y analizar aplicaciones
- Copia de Seguridad y Restauración: Operaciones completas de respaldo del dispositivo
- Desarrollo: Montar imágenes de desarrollador, capturar registros, captura de paquetes
- Diagnósticos: Información de batería, registros de fallos, diagnósticos del sistema
ipsw idev list
ipsw idev afc ls /
ipsw idev apps ls
ipsw idev backup create
ipsw idev syslog
🔐 Análisis de Firmware y Seguridad
- IMG4: Analizar y descifrar archivos en formato Image4
- iBoot: Análisis e investigación del bootloader
- SEP: Análisis del firmware del Secure Enclave Processor
- AEA: Descifrado de Archivos Cifrados de Apple
- Coprocesadores: Análisis de firmware AOP, DCP, GPU y cámara
ipsw img4 dec iBoot.img4
ipsw fw sep iPhone16,1_18.2_22C150_Restore.ipsw
ipsw fw iboot iPhone16,1_18.2_22C150_Restore.ipsw
🏪 Integración con App Store Connect
- Gestión de Certificados: Certificados y perfiles para iOS/macOS
- Registro de Dispositivos: Gestionar dispositivos de desarrollo
- Gestión de Apps: Bundle IDs, capacidades y revisiones
- Aprovisionamiento: Ciclo de vida completo del perfil de aprovisionamiento
ipsw appstore cert ls
ipsw appstore device reg --name "My Device" --udid 1234567890
ipsw appstore profile create --name "Development Profile"
🛠️ Herramientas Avanzadas de Investigación
- Simbolización: Análisis de registros de fallos y resolución de símbolos
- Volcado de Clases: Extracción de clases ObjC y Swift
- Acceso SSH: SSH en dispositivos con jailbreak con debugserver
- Integración con Frida: Capacidades de instrumentación dinámica
- Descompilador con IA: Integración con Claude, OpenAI, Gemini, Ollama y OpenRouter
ipsw symbolicate crash.ips --dsym /path/to/symbols
ipsw class-dump /path/to/binary
ipsw ssh debugserver
Arquitectura
ipsw consta de dos componentes principales:
ipsw- Herramienta CLI principal con capacidades completas de análisisipswd- Daemon de API REST para operaciones remotas y automatización
Configuración
ipsw admite archivos de configuración YAML y variables de entorno:
# Crear directorio de configuración
mkdir -p ~/.config/ipsw
# Copiar configuración de ejemplo
cp config.example.yml ~/.config/ipsw/config.yaml
Soporte de Bases de Datos
- SQLite (predeterminado) - Almacenamiento local
- PostgreSQL - Implementaciones de producción
Descompilador con IA
❱ ipsw macho disass /System/Library/PrivateFrameworks/ApplePushService.framework/apsd --entry \
--dec --dec-model "Claude 3.7 Sonnet"
• Cargando archivo de caché de símbolos...
• Descompilando... 🕒
int main(int argc, char *argv[]) {
@autoreleasepool {
__set_user_dir_suffix(@"com.apple.apsd");
@autoreleasepool {
APSDaemon *daemon = [[APSDaemon alloc] init];
if (daemon) {
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop run];
[runLoop release];
}
[daemon release];
}
return 0;
}
@catch (NSException *exception) {
if ([exception reason] == 1) {
id exceptionObj = [exception retain];
id logger = [APSLog daemon];
if (_os_log_type_enabled(logger, 0x11)) {
[exceptionObj logWithLogger:logger];
}
[logger release];
[exceptionObj release];
}
}
}
Casos de Uso
Investigación de Seguridad
- Análisis de vulnerabilidades y desarrollo de exploits
- Evaluación de seguridad del firmware
- Ingeniería inversa de binarios
Desarrollo de Jailbreak
- Análisis y explotación de la cadena de arranque
- Investigación de extensiones del kernel
- Modificación y parcheo del sistema
Desarrollo iOS
- Depuración y análisis de apps
- Gestión de certificados y aprovisionamiento
- Pruebas y automatización de dispositivos
Informática Forense Digital
- Extracción y análisis de datos del dispositivo
- Reconstrucción de líneas de tiempo
- Análisis de artefactos
Requisitos
- Go: 1.26+ (para compilar desde el código fuente)
- Plataforma: macOS, Linux, Windows
- USB: libusb para interacción con dispositivos
- Opcional: Claves API de IA para análisis mejorado
Documentación
- Sitio Web: https://blacktop.github.io/ipsw
- Documentación de API: Documentación de la API REST disponible en
/docsal ejecutaripswd - Ejemplos: Ejemplos completos de uso en la documentación
SKILL.md
Potencia tus agentes de IA con los superpoderes de ipsw
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
🆕 Wiki Impulsado por IA
Haz preguntas sobre el repositorio usando IA:
[!WARNING] Las respuestas de IA pueden contener alucinaciones: verifica la información importante.
Recursos de la Comunidad
📊 Diferencias de IPSW
Diferencias de firmware precalculadas: ipsw-diffs
💬 Comunidad
Contribuciones
¡Agradecemos las contribuciones! Consulta CONTRIBUTING.md para conocer las pautas.
Desarrollo
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Problemas Conocidos
- Soporte de IPSW para macOS: Algunas operaciones de firmware de macOS pueden presentar problemas de compatibilidad
- Pruebas: Las pruebas exhaustivas son difíciles debido a la variedad de versiones de firmware y tipos de dispositivos
- Uso Intensivo de Recursos: Algunas operaciones requieren memoria y potencia de procesamiento significativas
Crea un issue si encuentras problemas: ¡las correcciones tienen prioridad! Se planea un conjunto completo de pruebas para futuras versiones.
Créditos
Un enorme agradecimiento a:
- Jonathan Levin por sus legendarias herramientas y su exhaustiva documentación sobre los internals de iOS
- La comunidad de investigación de iOS por su continua innovación e intercambio de conocimientos
- Todos los contribuyentes que ayudan a mejorar este proyecto
Licencia
Licencia MIT: consulta LICENSE para más detalles.