Conférence BLACK HAT. Comment faire un téléphone espion. 2e partie

Conférence BLACK HAT. Comment faire un téléphone espion. Partie 1

La prochaine chose que nous devons modifier est le manifeste. C'est ce qui dit quels services sont impliqués dans l'application, quelles autorisations ils ont, etc.

Donc, nous allons commencer avec le code lui-même, et c'est avec le code du répertoire smali. Si vous regardez l'arborescence des répertoires Angry Birds, vous verrez de nombreux dossiers contenant divers composants, disposés sous forme de sous-répertoires.



Je ne sais même pas laquelle de ces choses dont j'ai vraiment besoin et ce qu'elles font, mais je n'en ai pas besoin. Maintenant, je vais faire une chose technique d'une complexité énorme - copiez le répertoire droidwhisperer d'ici, du répertoire SearchableDictionary, ici, dans le sous-répertoire com / burstly / example / android du répertoire smali. C'est tout, j'espère que vous comprenez quel est le point.

Donc, une copie de notre code a été insérée si nécessaire, mais il y a encore quelques choses à faire. Je regarde à nouveau ma liste de triche et constate que maintenant il est nécessaire d'apporter des modifications au manifeste. Tout d'abord, lorsque nous prenons le manifeste, nous devons trouver le nom de l'application - je vais le mettre en surbrillance en rouge, plus tard nous en aurons besoin parce que nous avons inséré quelque chose dans le code existant.

Ainsi, la mise à jour du manifeste est nécessaire pour inclure le service d'espionnage intégré et ses autorisations dans l'application. Il comprend les étapes suivantes:

- mémoriser le nom de l'application d'origine pour plus tard,
- DĂ©finition du service Droidwhisperer
- DĂ©finition des autorisations requises pour que Droidwhisperer fonctionne.



Je prends donc ce manifeste et le fais glisser dans un cahier. La première chose que je fais dans l'application est de définir notre service. Pour ce faire, je trouve la fonction onCreate dans le manifeste dans l'action principale de l'application cible. Dans le cas d'Angry Birds, il s'agissait de com / rovio / ka3d / App. Après cela, j'ai coupé la partie du code surlignée en jaune et l'ai mise immédiatement après avoir appelé involk-super dans onCreate.

Ainsi, nous avons déclaré dans le manifeste que nous aurons le service Droidwhisperer, qui devrait démarrer immédiatement après sa disponibilité. C'est pourquoi nous avions besoin du nom de l'application com.rovio.ka3d.App d'origine, nous l'utilisons pour saisir le nouveau nom de notre application com.rovio.ka3d. service.Droidwhisperer.

Ensuite, je copie et colle les autorisations de notre application d'espionnage à l'endroit approprié dans le manifeste - ce sont les lignes surlignées en vert.



Après avoir apporté les modifications, nous enregistrons le manifeste, qui inclut déjà les autorisations dont nous avons besoin et le service est défini qui devrait démarrer au démarrage du téléphone, donc tout va bien.

Android a besoin d'une certaine chose qui lance des applications, donc l'application Angry Birds doit contenir un code qui lancera mon service d'espionnage dès le lancement du jeu original. Maintenant, je vais dans le répertoire du jeu et y trouve le dossier ka3d, l'ouvre et copie le fichier d'application qu'il contient dans le bloc-notes. Il s'agit du code smali, qui est une version du code assembleur de Dalvik. Nous utilisons la fonction onCreate contenue dans Android. J'utilise la recherche de bloc-notes pour trouver l'emplacement de cette fonction. Ici, vous avez besoin d'un peu de connaissances sur le fonctionnement du système d'exploitation Android - par exemple, la fonction onCreate est utilisée pour appeler des super classes, c'est-à-dire pour créer ou redémarrer l'activité d'application. C'est là que j'insère mon code, qui devrait initier le lancement d'un service d'espionnage. Je reviens à ma feuille de triche, copiez les lignes nécessaires à partir de là et collez-la ici.
Comment savoir quel code insérer ici? Je viens de le copier à partir de l'application d'origine que j'ai écrite. J'ai dit qu'il y avait une excellente documentation pour smali, donc vous n'avez pas besoin de tout fouiller pour le faire.



Tout récemment, certains ensembles de «connexion» ont été annoncés qui vous permettent d'automatiser la réception du code nécessaire. Il y a quelques semaines à peine, de telles boîtes à outils pour développeurs Android ont été publiées, vous permettant de créer n'importe quel service et de l'implémenter dans une application existante. Tout cela peut être fait manuellement.

Ainsi, dès que la fonction onCreate est appelée, elle active notre service. N'oubliez pas qu'après cela, vous devez enregistrer le fichier modifié. Ainsi, après avoir effectué la formation technique appropriée, nous devons assembler notre application modifiée. Je reviens donc à Apk_tool et je récupère des parties du répertoire Angry Birds dans le répertoire birds.apk. Nous avons donc reconstruit l'application d'origine, en y apportant les modifications nécessaires, et avons placé le nouvel assemblage dans un fichier appelé birds.apk.

Si vous essayez d'installer cette application modifiée sur votre téléphone Android en ce moment, il vous informera que cette application n'est pas signée, nous devons donc la signer. Pour ce faire, je crée un certificat numérique auto-signé avec la clé publique correspondante et l'enregistre dans mon répertoire de travail d'injection. Il s'agit d'un fichier appelé clés.



Ceci est juste un certificat que je crée moi-même. Maintenant, je vais revenir en arrière et prendre cette commande puissante et laconique de mon berceau:

jarsigner -verbose -keystore keys birds.apk alias_name

Afin de ne rien confondre, je viens de le découper et de le mettre au bon endroit. Je vais donc signer le fichier birds.apk avec ma propre clé, c'est assez simple. Ensuite, je donne la commande et signe tous les composants de l'application avec cette clé numérique. Maintenant, je peux le placer dans l'AppStore, sur Google Play - n'importe où.

Comme je l'ai déjà dit, le téléphone n'a pas d'interface qui montrerait à l'utilisateur qui a signé quoi. Une fois l'application signée, elle peut être installée. Personne ne peut dire qui a signé cette demande, et c'est tout simplement génial.

Ainsi, la version modifiée d'Angry Birds ressemble exactement au jeu original et fonctionne de la même manière, sauf qu'elle contient mon code d'espionnage. Vous voyez maintenant à l'écran les signatures numériques faites par Kevin McNami de Kindsite.
Une autre chose intéressante que je vais vous montrer, en revenant un peu en arrière. Nous regardons l'application d'origine - elle est signée par Rovio Mobile Ltd. Regardez la date de signature - ce certificat numérique est valable jusqu'au 26 août 2010, mais l'application est installée sur le téléphone sans aucun doute. Ainsi, même si votre certificat numérique est devenu une poubelle, il vous donne toujours le droit d'installer l'application, c'est-à-dire que personne ne la vérifie. Je pense que c'est l'une des choses qui est l'un des graves défauts du modèle de sécurité Android.

Le fait est qu'il n'y a pas de vérification stricte des certificats numériques utilisés. Ce problème peut être résolu en exigeant que ceux qui souhaitent recevoir un certificat numérique s'enregistrent. Revenons donc à notre présentation. Je veux m'attarder une fois de plus sur les signatures numériques.



Toutes les demandes doivent être signées. Toute ancienne signature reste valable si elle est auto-signée. La signature n'est vérifiée que lors de l'installation de l'application. Autrement dit, je peux modifier n'importe quel fichier .apk déjà installé sur le téléphone, et le système ne réagira en aucune façon. Il s'agit d'une vulnérabilité assez importante. Si vous souhaitez modifier le fichier .apk sur votre téléphone, vous devez avoir accès à modifier les répertoires dans lesquels ces fichiers sont stockés, mais il ne sera pas difficile d'obtenir les droits root pour faire quoi que ce soit avec le téléphone.

La deuxième chose qui me dérange, c'est qu'il n'y a pas d'interface utilisateur indiquant qui a signé la demande. Par exemple, lors de l'installation de l'application, une inscription doit apparaître comme signée par Kevin McNami de Kindsite. Je note que la signature doit correspondre pour une application existante déplacée ou mise à jour, donc je ne pourrais pas remplacer la version existante d'Angry Birds si je n'avais pas changé le nom de mon spyware. Mais dès que j'ai fait cela, aucun problème ne s'est posé. Les développeurs Android affirment que le certificat n'a pas besoin d'être signé par un centre autorisé et que les applications Android utilisent principalement des signatures auto-signées.

Avant de commencer à répondre aux questions, je tiens à dire qu'il existe toute une industrie de logiciels espions pour téléphones. Ils sont conçus pour surveiller vos proches, vos enfants ou vos partenaires commerciaux.



Auparavant, ils étaient utilisés pour surveiller les conjoints infidèles, mais maintenant leur objectif a changé. Par exemple, vous pouvez surveiller vos enfants pour assurer leur sécurité, et c'est tout à fait légal. Mais je pense que les téléphones espions sont plus adaptés à une utilisation dans le système BYOD. Vous pouvez donner au module espion n'importe quelle fonctionnalité et l'insérer dans n'importe quelle application, et l'utilisateur n'en saura rien. Ceci est idéal à des fins d'espionnage industriel, de sorte que ces appareils élargissent la portée des menaces de sécurité en cours.

Donc, c'est un périphérique réseau entièrement fonctionnel, et si je me connecte au Wi-Fi au travail, je peux installer un logiciel dans ce téléphone qui recherchera les vulnérabilités sur les réseaux. Dans le même temps, il sera mis à jour si nécessaire et enverra les informations volées au site Web de Command & Control. Autrement dit, un téléphone mobile infecté est une plate-forme étendue de menaces de sécurité constantes avec d'énormes capacités d'attaque. Par exemple, quelqu'un marche à l'intérieur du bâtiment avec un tel téléphone, analyse les réseaux, puis les attaque de l'intérieur. Bien sûr, les gens protègent leur connexion Internet via des pare-feu et pare-feu similaires, mais cet appareil se connecte aux réseaux directement par voie aérienne, un téléphone espion se connecte au réseau partout où il y a un point d'accès, et aucun pare-feu n'aidera ici. En fait, les téléphones entrent dans le réseau par la porte arrière. Un téléphone espion est plutôt cool, mais ici nous avons un cheval de Troie d'accès à distance, et je pense que c'est assez dangereux.

Je pense avoir dit tout ce dont je voulais parler, et maintenant je suis prêt à répondre à toutes les questions.
Ainsi, la première question est de savoir si cette application particulière essaie de cacher sa présence. La réponse est non, ce n'est pas le cas, car si vous regardez les services exécutés sur le téléphone, vous le verrez là. Je pense que cela pourrait être un processus caché, mais dans ce cas, notre «téléphone espion» a été créé juste pour démontrer le concept de menace.

Notre application peut-elle être détectée par un programme antivirus? Non, l'antivirus ne compte pas ce module d'espionnage, car il n'en sait rien. Il serait possible de confondre davantage le code, puis de l'insérer dans l'application, et un tel processus peut être automatisé.
Que peut-on opposer à une telle application de spyware? Vous pouvez utiliser un antivirus qui détecte les applications malveillantes connues dans tous les cas, mais nous nous sommes concentrés sur le trafic envoyé au site Web de commande et de contrôle. Il serait probablement possible d'automatiser le processus d'obscurcissement de code, mais il est très difficile de changer le protocole de communication avec le serveur de commande et de contrôle à la volée, vous devrez changer le serveur lui-même, changer de clients et tout ça. Par conséquent, nous vous recommandons de combiner les deux méthodes de protection: antivirus contre les applications malveillantes connues et surveillance du trafic réseau envoyé par le périphérique espion au site Web de commande et de contrôle.



Je répondrai à la question de savoir ce que signifie l'exigence de coïncidence des signatures numériques lors du déplacement ou de la mise à jour de l'application. Si c'est la première fois que vous installez l'application sur votre téléphone, vous n'aurez aucun problème avec celle-ci. Mais si le téléphone possède déjà l'application d'origine et que vous souhaitez la remplacer par une nouvelle copie avec une signature numérique différente, ou une application modifiée avec le même nom, vous ne réussirez pas, car le téléphone pourra comparer la signature d'origine dans l'application avec sa version modifiée et note qu'ils ne correspondent pas. Dans ce cas, j'ai contourné la protection en remplaçant simplement le nom de l'application d'origine par un nom différent.

Le serveur de commande et de contrôle peut interagir avec toutes les fonctionnalités Android et utiliser son API. Vous pouvez obtenir à distance un accès root, télécharger des fichiers sur votre téléphone et généralement en disposer à votre discrétion, car Android offre de nombreuses possibilités d'accès ouvert à votre téléphone via le réseau. Je pense que la même fonctionnalité est également disponible sur la plate-forme iOS, seuls les développeurs de cet OS sont plus sérieux quant à la vérification de la sécurité des nouvelles applications. Par exemple, vous devriez obtenir un certificat de leur part qui certifie votre personne en tant que développeur d'applications, et l'application elle-même sera vérifiée avant d'arriver sur leur App Store, tandis que Google vérifiera l'application après sa publication sur le Play Market.

Je ne connais pas les détails de la boutique d'applications Google Play, mais je pense que si le développeur a une mauvaise réputation ou si l'application est compromise, elle n'apparaîtra pas dans la boutique. Cependant, il existe de nombreux autres magasins d'applications mobiles en ligne où un attaquant pourrait héberger une application malveillante. Il s'agit d'un type d'attaque de phishing lorsque nous forçons un utilisateur à télécharger cette application de n'importe où en lui glissant des liens.
Le fait est que toutes les fonctions de notre application de spyware semblent comme d'habitude, il n'y a rien d'illégal que cette application essaie de faire. Une fois installé, il nécessite de lui accorder les mêmes autorisations que les applications légales. Une autre chose est de savoir comment ces fonctions seront utilisées plus tard. Bien sûr, si quelqu'un signale que droidwhisperer est un virus, tout antivirus installé sur le téléphone ne permettra pas l'installation d'une application qui le contient.

Comme je l'ai déjà dit, les logiciels espions peuvent être téléchargés à partir de sites tiers. Dans ce cas, l'attaque de phishing est qu'ils vous diront des instructions d'installation détaillées et vous proposeront de télécharger ce jeu gratuitement, car c'est un jeu sympa, et vous n'avez pas besoin de le payer en téléchargeant l'original dans la boutique Google. Habituellement, l'utilisateur est séduit par une telle offre.

Je note que nous n'avons pas cherché à pénétrer les réseaux protégés par cryptage, mais simplement connectés à n'importe quel réseau disponible. Merci de votre attention!



Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'en janvier gratuitement en payant pour une période de six mois, vous pouvez commander ici .

Dell R730xd 2 fois moins cher? Nous avons seulement 2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

Source: https://habr.com/ru/post/fr434054/


All Articles