Analyse d’un malware iOS : Unflod.dylib

Suite à la parution de commentaires sur /r/jailbreak concernant un malware ciblant iOS, je me suis dis qu’une analyse serait intéressante vu que cette plateforme est encore peu ciblée par ce type de menaces du à son architecture.

La première étape fut de récupérer des informations sur le binaire, ie. Entitlements et signature du code. Le premier point n’apporte pas grand chose sur le binaire, à part qu’il peut être débuggé et accéder au Keychain.

checksignBien que n’ayant été trouvée que sur des terminaux jailbreakés, cette bibliothèque est signée avec le compte iPhone Developer de Wang Xin. Ce procédé est étrange vu que le jailbreak désactive la validation de code signé sur iOS.

L’EntryPoint de la bibliothèque est assez simple et ne réalise qu’une seule action: remplacer la fonction SSLWrite du système par une fonction implémentée dans la bibliothèque: replace_SSLWrite. Le hooking de la fonction est réalisée à l’aide de la fonction libsubstrate.dylib!MSHookFunction. La bibliothèque MobileSubstrate est utilisée par  beaucoup d’applications provenant d’AppStore tierce afin de réaliser du Swizzling/hooking, il n’est donc pas étonnant de la voir utilisée ici.

call_mshookfunction

La fonctionnalité de la fonction remplaçant SSLWrite est elle aussi très simple: détecter une tentative d’authentification sur les serveurs d’Apple et intercepter les authentifiants de l’utilisateur. Pour ce faire, la chaine /WebObjects/MZFinance.woa/wa/authenticate est recherchée dans les données envoyées via SSL. Cette chaine fait en général partie des URLs pointants sur *.itunes.apple.com.

searching_iTunes_login

Une fois identifiés, les authentifiants sont envoyés à un serveur en écoute sur le port 7878 soit à l’IP 23.88.10.4, soit à l’IP 23.228.204.55.sending_info

Pour le moment, aucune information n’est disponible quant-à la source de l’infection. Il est toutefois intéressant de voir que les terminaux iOS jailbreakés commencent à être la cible de malware grand-public.

Catalogue de formations 2013

Pour 2013 SCRT étoffe à nouveau son catalogue de formations techniques afin de répondre au mieux au monde de la sécurité en perpétuelle évolution, notamment avec les formations sur le développement d’applications pour terminaux mobiles (COD102 & COD103) ainsi que la gestion des logs dans le contexte de la sécurité informatique (FOR102).

Vous trouverez dans la suite de cet article la liste des formations mise à jour. N’hésitez pas à nous contacter pour de plus amples informations.

Infrastructure

INF101 – Fortinet

Cette formation prépare au premier niveau de certification Fortinet : le FCNSA (Fortinet Certified Network. Securtiy Administrator).
Profils : Administrateurs systèmes
Pré-requis : N/A
Durée du cours : 1 jour

INF102 – Sécurisation d’infrastructures virtualisées VMware

Ce cours présente les nouveaux risques liés aux architectures virtualisées, ainsi que les bonnes pratiques à adopter dans l’administration de ces environnements.
Profils : Administrateurs système, Administrateurs d’infrastructures VMware ESX
Pré-requis : Connaissances de base VMware ESX
Durée du cours : 1 journée

INF103 – Sécurité windows 7/2008

Cette formation présente les différentes options et bonnes pratiques permettant de mieux sécuriser les systèmes Microsoft Windows 7 & 2008.
Profils : Administrateurs système, RSSI
Pré-requis : Administration Windows
Durée du cours : 1 journée

INF104 – Sécurisation / administration Linux

Découvrez au travers de cette formation les options et outils permettant de sécuriser au mieux un serveur Linux.
Profils : RSSI, chef de projet, administrateur système
Pré-requis : Notions / connaissances de base des systèmes Linux
Durée du cours : 1 journée

INF105 – Sécurité des architectures web

Cette formation présente les fondamenteux de la sécurité des architectures web : sécurité des architectures N tiers, cryptographie, équipements liés à la sécurité des architectures web (firewall, IPS, WAF, …), enjeux et méthodes, protocoles de fédération d’identité… .
Profils : Développeurs, chefs de projet, administrateurs systèmes, RSSI
Pré-requis : N/A
Durée du cours : 1 journée

INF203 – Bootcamp sécurité Windows

Les administrateurs systèmes sont souvent amenés à configurer des points clefs de la sécurité d’un système d’exploitation. C’est en partant de ce constat et pour ainsi les aider à mieux comprendre les fondements de la sécurité du système d’exploitation Windows que nous avons crée cette formation.
Après avoir présenté les fondements de la sécurité du système d’exploitation ainsi que les méthodes pour faire un état des lieux, les points permettant de faire face à une attaque en la comprenant et en sécurisant le système seront abordés.
La pratique ne sera pas oubliée avec des démonstrations et des exercices dans des environnements virtualisés pour illustrer le tout.
Profils : Administrateurs système Windows
Pré-requis : N/A
Durée du cours : 1 journée

Hacking

HAK101 – Outils et méthodes de hacking – niveau intermédiaire

Cette formation a pour but d’enseigner l’identification et l’exploitation des failles de sécurité les plus courantes. Au travers d’une dizaine d’exercices pratiques, les participants apprendront à déceler et à exploiter des vulnérabilités telles que les injections SQL ou le cross-site scripting. Ils apprendront également à tirer parti d’un serveur mal configuré ou encore à mener une attaque par “brute-force” sur un mot de passe.
Profils : Administrateurs systèmes/réseaux, RSSI, développeurs
Pré-requis : Connaissances basiques HTML, SQL, réseau
Durée du cours : 1 journée

HAK201 – Outils et méthodes de hacking – niveau expert

A l’instar de Outils et méthodes de hacking – Niveau 2, cette formation pratique a pour but d’enseigner la détection et l’exploitation de vulnérabilités réelles. La théorie et les exercices (en environnement de laboratoire) permettront ainsi aux participants de comprendre et de mener des attaques avancées telles que l’exploitation de buffer overflows, l’interception réseau ou encore l’attaque de réseaux sans-fil.
Profils : Administrateurs systèmes/réseaux, RSSI, développeurs
Pré-requis : Outils et méthodes de hacking niveau intermédiaire & connaissances basiques HTML, SQL, réseau
Durée du cours : 1 journée

HAK102 – Nouvelles attaques web

Cette formation présente les nouvelles attaques ciblant plus particulièrement les sites web : Cross site request forgery, click-jacking, attaques navigateur,… .
Profils : Administrateurs systèmes, développeurs, RSSI
Pré-requis : Connaissances des attaques « classiques » telles que XSS, SQLi, …
Durée du cours : ½ journée

HAK202 – Sécurité des nouvelles technologies web

Cette formation présente les nouvelles menaces et attaques sur les technologies récentes du Web : Node.js, bases de données NoSQL, HTML5. Ce cours comprend des exemples pratiques ainsi que des travaux pratiques permettant de mettre en oeuvre et de contrer ces attaques.
Profils: Développeurs, Chefs de projet
Pré-requis: Connaissances de bases sur les technologies web
Durée du cours : 1 journée

Code

COD101 – Secure coding OWASP

Découvrez le TOP10 des failles OWASP, les conseils et solutions pour éviter ces erreurs, ainsi qu’une série d’exemples et conseils adaptés aux langages uilisés par vos équipes (PHP, Java, C, …).
Profils : Développeurs, chef de projet
Pré-requis : Connaissances de base langage sélectionné
Durée du cours : 1/2 à  1 journée

COD102 – Secure coding iOS

Cette formation présente les erreurs de développement pouvant introduire des vulnérabilités lors du développement d’applications pour plateforme iOS en se basant sur le référentiel de l’OWASP mais également notre retour d’expérience d’audits d’applications.
Durée de la formation : 1/2 journée

COD103 – Secure coding Android

Cette formation présente les erreurs de développement pouvant introduire des vulnérabilités lors du développement d’applications pour plateforme Android en se basant sur le référentiel de l’OWASP mais également notre retour d’expérience d’audits d’applications.
Profils: développeurs
Pré-requis: développement et plateforme Android
Durée du cours: 1 journée

Forensics

FOR101 – Forensics

Formation visant à mieux connaître les outils open-source permettant de
mener à bien une analyse forensique.
Profils : RSSI, administrateurs systèmes
Pré-requis : N/A
Durée du cours : 1 journée

FOR102 – Log management in Depth

Cette formation présente les fondamentaux du log management et de son intégration. Elle regroupe les analyses forensiques, les mises en conformité avec les normes ISO27001, PCI-DSS, HIPAA ainsi que l’exploitation de logs pour le monitoring de service, le troubleshooting et la détection d’intrusion. Profils: RSSI, administrateurs systèmes et réseaux
Pré-requis: N/A
Durée du cours: 1 jour

Sensibilisation utilisateurs

(cette formation n’a pas de thème, elle est seule). Les mesures de sécurité les plus complexes peuvent généralement être déjouées en attaquant le maillon le plus faible de la sécurité de votre système d’information : l’utilisateur. Cette formation, basée sur des démonstrations et exemples concrets, vise à donner les bons reflexes aux utilisateurs. Le contenu de la formation peut être adapté en fonction de vos attentes : Social engineering, code malveillant, réseaux sociaux, utiliteurs nomades, équipements mobiles, attaques de type MiTM, … .
Profils : Utilisateurs finaux
Pré-requis : N/A
Durée du cours : 2 heures

Calendrier des formations 2013
Calendrier des formations 2013

Jailbreaks iOS et risques pour l’entreprise

Introduction

La sortie récente du jailbreak evasiOn pour iOS 6 et 6.1 et ce type d’outil en général inquiètent les entreprises ayant déployé des terminaux Apple. Nous allons donc ici, non pas faire une description technique d’evasiOn, mais expliquer les risques que cela implique en entreprise.

Post-evasiOn

Tout d’abord un topos de la situation avant lundi: via l’exploitation d’une vulnérabilité dans la bootrom des terminaux iOS (limera1n) il était possible de démarrer les iPhones 4 (et précédents) et iPad 1 sur une ROM non-signée. Du fait que ce composant est intégré au hardware, il est impossible à Apple de corriger la vulnérabilité sans produire de nouveaux modèles (ce qui a été le cas depuis l’iPhone 4S et iPad2).

Il est alors possible de démarrer les terminaux impactés avec une ROM contenant des outils spécialisés dans le but de brute-forcer le passcode défini par l’utilisateur. Sur un iPhone4, le temps moyen pour un passcode de 4 chiffres est de 10 minutes… A partir de ce moment, l’attaquant (ou l’analyste forensics) a accès à tous les secrets protégés à l’aide des fonctionnalités telles que le stockage dans le KeyChain ou le chiffrement à l’aide de la Data Protection API (ex: mot de passe du domaine utilisé pour la connexion à MS Exchange et certificats et clefs privées pour le VPN d’entreprise). La copie complète des informations stockées sur le terminal peut également être réalisée (environ 45min pour 16Go).

Un attaquant qui a physiquement accès à un terminal protégé par 4 chiffres pendant moins de 20 minutes peut donc réaliser des dégâts considérables en fonction des données stockées et ce sans laisser d’autres traces qu’un redémarrage dans les logs…

evasiOn

Les jours précédents la sortie de cet outil il a été possible de comprendre que le jailbreak nécessiterait de connecter le terminal via USB. On aurait donc pu penser, malgré une faible probabilité due aux revues effectuées par Apple, à une vulnérabilité pré-boot du même type que limera1n. Fort heureusement ce n’est pas le cas et le terminal doit être déverrouillé afin d’effectuer la manipulation. Du fait que la première phase d’evasiOn passe par la modification d’un backup, il est nécessaire que le terminal soit déverrouillé ou tout du moins déjà pairé avec le poste auquel il est connecté pour qu’il autorise le backup.

Dans le cas où un passcode a été défini, il n’est donc actuellement pas possible à un attaquant d’accéder au contenu d’un terminal iOS verrouillé. On pourrait néanmoins voir apparaitre des vers se propageant de postes Windows/OSX infectés aux terminaux iOS via l’injection de code exécutable dans iTunes.

A l’heure actuelle, les terminaux de versions supérieures ou égales à l’iPhone 4S et iPad 2 sont donc protégés contre une attaque liée à un accès physique (pour rappel, le système de fichiers d’iOS est chiffré avec une clef en partie stockées dans le matériel).

Conclusion

Du fait que la découverte d’une vulnérabilité pré-boot ne doit pas être exclue, il est recommandé de forcer l’utilisation de passcodes d’au moins 6 chiffres et si possible alpha-numériques. D’autre part, la démarche ne doit pas s’arrêter là et les procédures de changement de mot de passe en cas de perte ou de vol de terminaux doivent être revues, ainsi qu’expliquer les risques aux utilisateurs afin qu’ils préviennent au plus vite en cas de disparition de leur terminal.

Restent également les vulnérabilités dans les applications ayant une large surface d’attaque tels que MobileSafari. Ces dernières requièrent de mettre en place une politique de mise à jour des terminaux.

Comme l’a rappelé Vincenzo Iozzo, il ne faut pas oublier que les attaquants choisiront toujours le chemin avec le coût le plus faible vers leur cible. Ainsi, la sécurité des applications déployées sur les terminaux doit également être prise en compte. Le système de cloisonnement d’iOS n’empêchant pas l’accès aux données d’une application via l’exploitation d’une vulnérabilité dans cette dernière (ou les données auxquelles elles a accès, ex. carnet d’adresses).

SCRT à l’AppSec Forum: audits d’applications iOS

Nous serons présents à l’AppSec Forum d’Yverdon les 7 et 8 novembre prochains afin de partager notre expérience sur l’audit d’applications iOS.

La première partie de notre présentation va consister en une revue rapide de l’architecture des terminaux iOS: processeurs ARM, simulateur et les modèles de distributions des applications. Bien entendu, comme il faut savoir quoi chercher avant d’étudier la façon de le faire, nous allons passer en revue les vulnérabilités impactant ce type d’applications.

Suite à cette introduction, l’environnement à utiliser va être présenté. En effet, pour beaucoup, les plateformes OSX et iOS restent une boite noire et on peut se poser des questions telles que “puis-je utiliser le simulateur?” et “est-ce que Apple distribue des outils permettant de m’aider?”. En utilisant ces outils nous allons voir comment procéder à une récolte d’informations sur l’application, c’est à dire ses fichiers companions, les bundles, etc. Nous expliquerons également comment extraire les informations stockées dans le KeyChain, le magasin de secrets d’iOS.

L’analyse de l’application elle-même ainsi que ses échanges avec des web-services sera ensuite abordée. Nous verrons comment procéder à une analyse statique et dynamique et tenterons de répondre aux questions telles que “comment extraire les définitions des classes?” et “mais où sont les xrefs?!”. La présentation finira sur une méthode d’instrumentation de processus, à l’aide d’un debugger ou du hooking de méthodes Objective-C, permettant de contourner des cas spécifiques comme celui où les communications ne peuvent pas être interceptées dû à une couche de chiffrement supplémentaire.

Pour celles et ceux désirant nous rencontrer nous serons présent aux conférences ainsi qu’au stand SCRT.

L’Application Security Forum – Western Switzerland est un forum Suisse sur le thème de la sécurité informatique. Il est organisé par l’association à but non lucratif APSEL. La sécurité informatique étant très vaste, l’APSEL a choisi de se concentrer sur la sécurité des applications, la protection des données et la gestion des identités numériques. Ce forum professionnel se déroulera sur trois jours : les 6,7 et 8 Novembre. La première journée sera dédiée à des formations et les deux suivantes à des conférences. Une formation consiste à assister à une journée de cours, comprenant des parties théoriques et pratiques. Chaque formation est donnée en groupe réduit avec un instructeur spécialiste du domaine enseigné. Les journées de conférences proposent deux pistes de conférences : une technique et une généraliste, permettant ainsi aux participants de faire un parcours “à la carte”.

SCRT at EUSecWest 2012 : iOS applications auditing

Later this month I will be presenting a talk on iOS applications auditing at EUSecWest in Amsterdam. Here is an overview of this talk.

Mobile applications security is becoming a bigger concern every day and it is not only an idea taken out of some Gartner’s quadrant, this is something we see every day as penetrations testers.

This presentation aims at sharing experience and knowledge in iOS applications pentesting. The first step will be to quickly review the iOS environment, including the ARM platform, the simulator and how applications could be distributed. Before explaining how to find bugs, people have, obviously, to know what to look for. This is why the most common flaws impacting third-party iOS applications will be presented.

After this introduction, we will dig into the main subject. The first thing an auditor should do is set-up his working environment, ie. “should we use the simulator, a jailbroken device or is Apple providing useful tools?” Then we will present how to do a recon on an application using its companion files, including configuration files, bundles, etc. As some applications are using the KeyChain to store information, we will also explain how to recover those. The next part related to more or less the passive analysis of applications will be the communication channel between the application and a possible web-service.

The passive analysis part will be followed by some reverse engineering technics to dig deeper into an application’s internals. The first part will be dealing with static analysis, answering questions like “how to extract class definitions?” and “where are all the xrefs!?”. The last part will be dealing with dynamic analysis which can be pretty useful for let’s say you want to manipulate the messages sent to a web-services but they are encrypted the data with an additional layer and not just SSL. We will view how to do that using GDB and bundles injection.