Publicado: agosto 6, 2024
Piensa como un actor de amenazas: Una serie
Motivación detrás de esta serie
Dar los primeros pasos en la seguridad de aplicaciones puede resultar intimidante. Existen infinidad de blogs sobre ciberseguridad y decenas de herramientas de ataque gratuitas y de código abierto. Sin embargo, hay muy poca información que ayude a desglosar los elementos clave que representan una amenaza real para los desarrolladores de aplicaciones. Gran parte de la información existente consiste en investigaciones o pruebas de concepto.
Esta serie profundizará en las amenazas más importantes, explicará cómo reproducir los ataques a las aplicaciones, proporcionará los fundamentos que un analista de seguridad informática utilizará al probar su aplicación y ofrecerá recomendaciones para protegerse contra las amenazas más significativas. Aprender los mejores métodos para detener a los ciberdelincuentes comienza por comprender su comportamiento y objetivos. Esta serie se centrará en la seguridad de las aplicaciones iOS. Si bien todos los sistemas operativos presentan amenazas y vectores de ataque similares, iOS posee características únicas debido a su entorno de pruebas de aplicaciones restrictivo y a que el hardware y el código fuente del sistema operativo están más protegidos que en muchos otros sistemas. Este primer artículo revisará los aspectos generales que hacen única la seguridad de las aplicaciones iOS y profundizará en los formatos de archivo IPA de iOS, la firma de aplicaciones y la instalación de aplicaciones desde fuentes externas (sideloading), elementos fundamentales para comprender los ataques descritos en las siguientes partes de esta serie.
Motivos del actor amenazante
Los ciberdelincuentes pueden tener diversas motivaciones para atacar una aplicación. Podrían simplemente querer publicar información al respecto en sus blogs ;). También podrían hacerlo para demostrar su capacidad. En general, su objetivo es obtener beneficios económicos o perjudicar económicamente a sus objetivos. Como punto de partida, un ciberdelincuente podría querer realizar ingeniería inversa y comprender algoritmos sensibles, protocolos de comunicación, API o lógica de negocio para reimplementar dicha lógica en sus aplicaciones. Sin embargo, este proceso puede escalar rápidamente hasta eludir los mecanismos de DRM o de licencias, lo que podría llevar a la distribución gratuita de la aplicación. Los fundamentos de ingeniería inversaLa modificación del código y el análisis de la aplicación para estos ataques son los mismos. Comprender los ataquesy los actores que representan una amenaza, lo que conduce a una mejor defensa contra ellos.
Diferencia entre escritorio y móvil Application Security
Cada plataforma y sistema operativo expone diferentes vectores de ataque. Los sistemas operativos de escritorio como Windows, Linux y macOS ofrecen la menor seguridad a nivel de sistema operativo. Esto facilita el desarrollo de herramientas de ataque o la modificación de aplicaciones para aprovechar esta seguridad reducida. Las aplicaciones que se ejecutan en sistemas operativos móviles como iOS y Android suelen tener un entorno de ejecución más restringido que las aplicaciones de escritorio típicas. Sin embargo, el hecho de que el sistema operativo tenga funciones de seguridad integradas no significa que las aplicaciones que se ejecutan sobre él siempre estarán protegidas. safeTodavía existen ataques contra aplicaciones que se ejecutan en todos los sistemas operativos.
Analicemos qué hace que iOS sea diferente para los ciberdelincuentes:
- iOS no proporciona a los usuarios acceso de administrador ni de superusuario. Los sistemas operativos de escritorio sí permiten a los usuarios elevar sus permisos.
- Muchas herramientas de ataque deben ejecutarse en el mismo dispositivo que el software atacado. Crear y ejecutar herramientas de ataque en dispositivos móviles puede resultar más difícil.
- Las herramientas de ataque contra iOS suelen ejecutarse en un ordenador de sobremesa vinculado en lugar de en el propio dispositivo iOS, lo que dificulta su uso y desarrollo.
- Apple dificulta activamente la obtención de permisos elevados. Apple corrige las vulnerabilidades de seguridad que permiten el jailbreak y, con el tiempo, ha debilitado y restringido este proceso. Véase nuestro blog Para obtener información más detallada, consulte el historial. El sistema operativo Android de la mayoría de los dispositivos no otorga permisos de superusuario de forma predeterminada, pero facilita que un atacante escale dichos permisos.
- iOS ofrece menos opciones para depurar software. El desarrollo se realiza principalmente en Xcode o utilizando sus herramientas de compilación. La mayoría de las herramientas de depuración están vinculadas a Xcode y tienen capacidades limitadas para aplicaciones ya compiladas.
- Los dispositivos iOS no tienen SSH ni conexión directa a terminal por defecto.
- Los usuarios actualizan rápidamente sus dispositivos iOS para adaptarse a los cambios constantes en los sistemas operativos, el hardware y las aplicaciones, incluyendo los parches de seguridad. Esto dificulta el funcionamiento de las herramientas de ataque y el malware, obligando a los ciberdelincuentes a invertir más en mantenimiento.
- Los dispositivos iOS son más caros, requieren cuentas de desarrollador de Apple y tienen capacidades limitadas de simulador o emulador para ahorrar costes.
Empaquetado binario de iOS
Los archivos IPA de iOS están comprimidos en formato ZIP y contienen todo lo necesario para ejecutar la aplicación. Para acceder a los archivos binarios de la app, basta con descomprimirlos. Este es el primer paso para realizar ingeniería inversa de la aplicación mediante análisis estático. El siguiente ejemplo analiza la aplicación Job Dispatcher, que será la aplicación de muestra que se analizará en entregas posteriores de esta serie. La aplicación está disponible en https://github.com/digitalai-opensource/job-dispatcher.
% Descomprimir Job\ Dispatcher.ipa Archivo: Job Dispatcher.ipa Creando: Payload/ Creando: Payload/Job Dispatcher.app/ Creando: Payload/Job Dispatcher.app/_CodeSignature/ Extrayendo: Payload/Job Dispatcher.app/_CodeSignature/CodeResources Extrayendo: Payload/Job Dispatcher.app/AppIcon60x60@2x.png Extrayendo: Payload/Job Dispatcher.app/Assets.car Extrayendo: Payload/Job Dispatcher.app/AppIcon76x76@2x~ipad.png Extrayendo: Payload/Job Dispatcher.app/Job Dispatcher Extrayendo: Payload/Job Dispatcher.app/embedded.mobileprovision Extrayendo: Payload/Job Dispatcher.app/Info.plist Extrayendo: Payload/Job Dispatcher.app/PkgInfo
Esta es una aplicación pequeña; las aplicaciones grandes contienen muchos archivos de código binario, así como numerosos recursos, marcos de trabajo y otro contenido. Esta aplicación solo contiene un archivo binario ejecutable con el mismo nombre que el archivo IPA principal «Job Dispatcher». Podemos comprobar que se trata de un archivo ejecutable mediante el comando «file».
% archivo Job\ Distribuidor de trabajos Distribuidor de trabajos: Mach-O ejecutable de 64 bits arm64
Mach-O es el formato de archivo binario que utilizan los sistemas operativos de Apple, y todos los dispositivos iOS recientes utilizan CPU ARM64.
Ahora tenemos acceso al archivo que queremos analizar mediante ingeniería inversa y modificar en futuras entregas de esta serie. Una vez finalizado el análisis de la aplicación, podemos comprimir todo su contenido y renombrar el archivo ZIP a un archivo .ipa para crear el archivo IPA. Si los archivos se modifican, debemos volver a firmar la aplicación o instalarla mediante sideload.
Firma de aplicaciones iOS modificadas
La firma de aplicaciones para iOS se realiza normalmente a través de la interfaz gráfica de Xcode al compilar la aplicación o mediante la herramienta de línea de comandos `codesign`. Estas herramientas presentan limitaciones al volver a firmar una aplicación tras modificar los binarios compilados y firmados, que es el caso de uso típico de un atacante. Para volver a firmar una aplicación modificada, una herramienta como iOS App Signer puede recorrer recursivamente todos los archivos de un archivo IPA y volver a firmarlos. Este método requiere una cuenta de desarrollador de Apple, y Xcode mostrará un error al instalar una aplicación que se haya vuelto a firmar con un certificado diferente en un dispositivo con jailbreak. Cabe destacar que atacar aplicaciones iOS a menudo requiere descargar y ejecutar código potencialmente peligroso. ¡Ojo!
Instalación de aplicaciones iOS modificadas mediante sideloading
Una alternativa para volver a firmar e instalar aplicaciones modificadas es usar una herramienta de instalación lateral. Esta herramienta evita las restricciones de seguridad al volver a firmar aplicaciones y puede usarse para eludir las limitaciones de dispositivos compatibles y versiones de iOS. Sideloadly es una herramienta potente para instalar aplicaciones iOS mediante esta técnica. Tenga cuidado al descargar e instalar aplicaciones precompiladas cuyo código fuente no pueda revisar.
quitar
Comprender a los actores de amenazas y sus vectores de ataque le ayudará a entender cómo crear aplicaciones más seguras. En los próximos meses, esté atento a una serie de artículos que detallan diferentes vectores de ataque. En muchos casos, los ataques se retroalimentarán. Por ejemplo, los actores de amenazas necesitan Desbloquea su dispositivo Antes de poder instalar y ejecutar todas las funcionalidades de Frida, los atacantes también deben volver a firmar o instalar aplicaciones de forma externa para probar las modificaciones. El primer artículo ofensivo (¡próximamente!) mostrará cómo modificar una aplicación de ejemplo para eludir una función de autenticación.
Haga clic en aquí Para una evaluación de amenazas gratuita de su aplicación.
También puede interesarle
La seguridad de su hardware funciona correctamente. Ese no es el problema.
Escuchamos una versión de esta objeción con regularidad: “Ya estamos…
Cumplimiento de la Ley de Resiliencia Cibernética y Application Security
La mayoría de las organizaciones que se acercan a la Ley de Resiliencia Cibernética (CRA, por sus siglas en inglés) están invirtiendo…
De la App Store al clon: cómo la IA convierte tu archivo .ipa en un modelo a seguir.
IA: acelerando la ingeniería inversa de cada aplicación iOS que publiques…