26 août 2019
Iheb Kaabi, pentester chez Orange Cyberdefense, nous fait découvrir les bases de ces tests d’intrusion.
Selon une étude publiée par Hootsuite et We are Social en 2019, sur 60,42 millions d’internautes français, 74% surfent sur le web via leurs mobiles. Le trafic Internet passe donc aujourd’hui plus par nos téléphones que par nos PC.
Alors qu’ils contiennent un grand nombre de données sensibles, les smartphones sont pourtant plus exposés aux risques cyber que les ordinateurs. La plupart du temps, les systèmes d’exploitation ne sont pas mis à jour par les utilisateurs. En 2018, 57% des mobiles Android utilisés à des fins professionnelles utilisaient un système d’exploitation au moins deux versions plus anciennes que celle actuellement disponible. Cela représente potentiellement 507 vulnérabilités non “patchées” par mobile[2]. Plus de la moitié d’entre elles sont jugées critiques par les experts[3]. Sur iOS, même constat : 67% des utilisateurs professionnels disposent d’une version datant de moins de six mois, ce qui représente une moyenne de 17 vulnérabilités[4] par téléphone. Parmi elles, trois sont considérées critiques.
Il faut également savoir qu’il existe un temps de latence entre les mises à jour d’Android et celles proposées par les constructeurs et les opérateurs (dans le cas des téléphones “simlockés“), qui doivent les adapter à leur modèle. Cela peut prendre parfois entre deux et trois mois. Ainsi, un mobile sera toujours moins à jour qu’un PC.
Par ailleurs, après trois ou quatre ans d’utilisation, certains patchs ne sont tout simplement plus supportés par les appareils, qui restent, jusqu’au rachat d’un nouveau smartphone, dépourvus des dernières sécurités mises en place.
C’est un fait : les utilisateurs ont tendance à beaucoup moins sécuriser leur mobile que leur PC. Les PIN et mots de passe restent encore assez simples et les modèles de mots de passe sont encore trop faciles à saisir. Par ailleurs, les users ont tendance à installer des applications sans vraiment être vigilants et surtout à accepter un nombre trop grand d’autorisations.
Les constructeurs en ont conscience et essayent de compenser ces mauvaises pratiques en renforçant la sécurité des smartphones qu’ils vendent. Aujourd’hui, les modèles de téléphones sont en réalité très bien sécurisés et donc difficiles à forcer. Ce sont vraiment les usages qui pêchent.
En règle générale, les entreprises nous demandent de tester les applications qu’elles développent et/ou les téléphones de leur flotte mobile.
Un pentest sur une app mobile ressemble de très près à celui d’un client très lourd : il y a une partie locale (stock de fichiers, logs, binaire[5] installé, exécution, utilisation de la mémoire…) et une partie web. Pour la partie web, nous nous servons d’outils classiques comme des proxies ou des analyseurs de trafic réseau, du reverse engineering (rétro-ingénierie en français) utilisé pour la partie locale, pour désassembler et comprendre le binaire[5] de l’application.
Pour la partie spécifique iOS ou Android, il existe des outils dédiés aux penetration tests des mobiles, notamment des logiciels permettant de faire du dynamic patching. Il s’agit de modifications “à la volée” des comportements d’une app : nous ciblons la partie locale et modifions l’application pendant qu’elle est en train de tourner. Cela nous permet de contourner la sécurité mise en place par le développeur.
Lorsque nous auditons un smartphone, il nous faut trouver le mot de passe, le PIN ou pousser l’utilisateur à installer une app vérolée pour obtenir un accès à distance. Parfois, nous utilisons des techniques de social engineering, mais seulement si cela est adapté aux besoins du client et s’il a au préalable donné son accord pour l’utilisation de ce genre de méthodes.
Le plus important pour un pentester – et donc un cybercriminel – reste de récupérer le mot de passe du téléphone. Sans cette première étape, il est en réalité extrêmement difficile d’avoir accès aux données d’un smartphone. Une fois que nous sommes entrés dans le téléphone, nous pouvons par exemple nous connecter à la messagerie, récupérer des mails, là où se trouvent un volume considérables d’informations importantes.
En général, qu’il s’agisse d’auditer un mobile ou une application, nous partons en mode black box, c’est-à-dire avec un minimum d’informations. Nous devons donc connaître les spécificités de chaque version. Par exemple, entre iOS 12 et iOS 13, il existe des différences majeures.
Pour se former au pentest sur mobile, il est conseillé d’avoir des bases en sécurité applicative et de bien comprendre les modèles de sécurité d’Android et iOS, d’abord de manière théorique puis de passer rapidement à la mise en pratique. Pour ce faire, il existe des applications de tests très bien réalisées : une fois installées, le but est de réussir à les attaquer.
Les versions évoluant très rapidement, Internet reste une mine d’or pour s’auto-former ou se mettre à jour.
Trop d’utilisateurs ne sont pas conscients des attaques qu’ils peuvent subir sur leur mobile ou des techniques de sécurité pour s’en prémunir. Voici quelques conseils :
Notes
[1]Mobile Security Index 2019, Verizon
[2]Wandera, 2018
[3]Common vulnerability scoring system, CVSS scale, https://nvd.nist.gov/vuln-metrics/cvss
[4]IBM MasS360 Mobile Metrics
[5]binaire : fichier écrit en « langage machine ». C’est ce que le système d’exploitation lit et exécute. N’étant pas humainement lisible (symboles et des caractères spéciaux), le processus de rétro-ingénierie permet de le ramener à un format tangible (comme du code source par exemple) pour l’analyser et le comprendre.