Auteur Sujet: [Tuto informatif niveau intermédiaire] créer un petit malware invisible  (Lu 6195 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +18/-0
Bon avant tout je tiens a préciser que je ne donne ni de code, ni les fichiers en questions nécessaires a la création d'un petit malware.Cependant je vais en dire assez pour que vous compreniez le processus pour vous faire un petit truc fun  :P


Il était une fois un monde lointain, le monde merveilleux des malwares.Ou comment corrompre une machine en restant discret avec peu d'intervention de notre part une fois la machine infectée.Pour etre honnete je ne suis pas un spécialiste dans ce millieu la mais je continu mon apprentissage dans ce domaine (malware, trojan etc...), c'est passionnant et on apprends plein de truc.

Venons en au fait, plutot que de m'intéressé directement aux fichiers codés en vb C++ etc... je me suis d'bord penché sur un domaine qui me semble relativement beaucoup plus simple pour appréhender la chose, le navigateur.Dans un navigateur on a quoi ? on a tout un tas de truc dont le mode développeur et surtout beaucoup de java.Le java ça c'est pas étonnant mais vous allez me dire pourquoi s'intéresser au mode développeur si on est pas webmaster pour voir ce qui cloche dans nos page web ? Réponse: pour débugger tout simplement.Prenons l'exemple de chrome:



On peut maintenant voir ce qui se passe en arrière plan dans notre navigateur, très utile pour la suite.Comme vous pouvez le voir j'utilise adblock qui est quand meme une extension bien pratique, une extension d'ailleurs c'est quoi ? ben c'est des petit bout de code qui vont agir dynamiquement avec notre navigateur pour enregistrer, modifier et faire des truc de bases, il y en existe plein.Vous voyez pas encore ou je veux en venir ? bon continuons un peu, si une extension est capable de modifier des choses et de communiquer avec votre navigateur alors pourquoi ne pas la faire communiquer directement avec nous meme ?


Kezako ? mais google l'empeche pas ? et les antivirus alors ?


Google a en effet des règles strict concernant les extensions quand aux antivirus ils analysent pas une extension qui provient du chromestore.On a donc plusieurs objectif:

1- Créer une extension de manière a ce qu'elle soit utile et souvent télécharger, c'est du social engineering faites marcher votre esprit
2- Créer un fichier manifest.json qui est le fichier le plus important de l'extension.
3- Faire un peu de code en java pour effacer ses historiques et données de saisie automatique quand l'utilisateur ferme son navigateur puis récupérer les infos de l'utilisateur par la suite
4- Récupérer c'est une chose, faire sortir les données s'en est une autre
5- Traiter les infos a distance
6- Uploader cette extension bidon sur le chromestore et faire en sorte qu'elle soit validée.


Venons directement au petit 2, le manifest.json, le manifest.json c'est un fichier simple comme sa:

{
  "name": "Ma super extension",
  "description": "Pithy description (132 characters or less, no HTML)",
  "version": "0.0.0.1",
  "manifest_version": 2,
  "icons": {
    "128": "icon_128.png"
  },
  "app": {
    "urls": [
      "http://mysubdomain.example.com/"
    ],
    "launch": {
      "web_url": "http://mysubdomain.example.com/"
    }
  }
}

Ce fichier détail par groupe de bloc les fonctions de l'extension, l'exemple et tiré de la doc de google.Maintenant il faut savoir qu'n plus de ce fichier une extension ce compose de quelques fichier en .js correspondant donc au javascript.Eventuellement on peut aussi y ajouter une image ou plusieurs pour décorer l'extension.Maintenant voyons une partie du fichier manifes.json avec des script et une page html intégré:

"content_scripts": [{
    "matches": ["http://*/*", "https://*/*"],
    "css": [],
    "js": [
        "jquery.js",
        "blabla.js"
    ]
  }],
"background": {
    "page": "background.html"
  },


matches: signifie que l'extension est autorisé a communiqué en http tout comme en https, css je l'ai laissé volontairement vide mais c'est pour montrer qu'on peut vraiment personnaliser la chose a souhait.
js: nos javascript qui seront exécutés avec l'extension
background: La page html de présentation de l'extension.

On a la les 3 principales partie de l'extension.



Partie 3 : 3- Faire un peu de code en java pour effacer ses historiques et données de saisie automatique quand l'utilisateur ferme son navigateur puis récupérer les infos de l'utilisateur par la suite.

ça c'est relativement simple, il suffit de se servir du code d'extension qui existent déja qui font sa a chaque fermeture de chrome.A vous de modifier le code pour faire en sorte qu'il ne s'exécute qu'une fois a la fermeture de chrome et non a chaque fois.Voici une petite liste d'extension qui pourront vous aider a coder ce paramètre:

http://www.applicanet.com/2013/03/nettoyer-google-chrome-extensions-meilleures.html

Pour la récupération d'infos en javascript c'est vraiment très simple, ça tiens en une quinzaine de ligne de code.Le javascript est puissant est a déja fait ses preuves pour les keylogger.



Partie 4:  Récupérer c'est une chose, faire sortir les données s'en est une autre.

Ben oui, vous croyez que google va vous laisser exporter et enregistrer tout ce que vous voulez ? ben non google a mis en place le SOP (same origin policy) et le CSP (content security policy)

En gros l'un vérifie que les données locales ne soient pas affectés de l'extérieur et l'autre vérifie qu'il y est pas de faille xss possible.Pour faire simple tout ce qui est effectué dans google ne peut se transmettre sur l'ordinateur et modifier des fichier dessus localement, impossible d'accéder au mots de passe enregistrés etc qui sont aussi sur une partie locale et personnelle de chrome de plus les données traités par l'extension ne peuvent pas sortir du navigateur car personnel.. enfin en théorie  ;D

La vous allez me dire, si on peut pas accéder a l'ordinateur ni aux mots de passe a quoi ça sert ? rappelez vous de la partie 3 tout simplement.Ouvrons maintenant notre chrome en mode développeur et tentons d'y mettre un lien externe dans notre code sur un script extérieur actualisez la page et ... oups ça marche pas et on a une jolie ligne en rouge visible qui nous indique que l'opération n'est pas autorisé.De la placez une iframe dans ce meme script et vous vous apercevez que l'iframe est bien prise en compte mais ça reste une simple iframe on ne peut rien en tiré et en plus ce n'est pas une iframe "constente" c'est a dire qui s'affiche chaque seconde mais une iframe "statique" qui s'affiche a chaque actualisation de la page... bon jusque la pas très intéressant mais on voit quand meme que l'extension est capable de communiquer avec l'extérieur ne serait-ce pour afficher une simple page meme si pour l'instant ça n'a pas trop d'intéret.

Continuons, vue que l'on peut pas stocker sur l'ordinateur ni envoyer un fichier ou meme exécuté un script externe a partir de l'extension il va falloir envoyer sa a la volée sur un serveur distant.Et c'est la que le javascript de la partie 3 intervient, enregistrez les données et envoyer sa sur le serveur distant ou un petit script php traitera les requètes.Et oui c'est autorisé si vous bidouiller un peu votre manifest.json  ;)


Mais Houston on a un problème, les données sur les site https ne sont pas transmise sur le serveur distant ! Effectivement c'est le cas si le serveur distant et en http:// mais en https:// les données sont transmises.Il suffit juste de comprendre que le http communique avec le http mais le https qui est crypté ne communique qu'avec du https également.Donc si votre serveur distant possède un SSL valide est approuvé par chrome et les autres navigateurs (je précise), vous recevrez les données de l'utilisateur.. pendant qui rentre ses codes banquaires par exemple  8)




5- Traiter les infos a distance


On pourrait se dire youpi on a ce que l'on veut on s'arrète la, eh ben non on peut encore aller un peu plus loin.Rappelez vous de l'iframe qui peut communiquer avec l'extérieur pour afficher une simple page ça vous donne pas une idée ? On va l'inclure dans un javascript... zut alors ça marche pas c'est ballot.Rappellez vous que la communication entre l'extension et l'extérieur est restreinte par conséquent mettre un iframe dans un javascript est refusé par google.Bon ben je suis bai**, en faite non pas exactement.Une extension peut contenir un background.html qui est la page de présentation de l'extension est la l'iframe y est autorisé donc on peut la planqué la, iframe... beef, je dis ça je dis rien  ;)


6- Uploader cette extension bidon sur le chromestore et faire en sorte qu'elle soit validée.


Tout d'abord: cette dernière partie je ne l'ai pas testé car faire un botnet je m'en contre fiche comme de l'an 2000.Mais j'ai bien une idée qui pourrait marché si je voulais vraiment généraliser l'extension sur le chromestore.Le fait est qu'on ne peut pas envoyer une extension au chromestore avec du code vérolé dedans car elle est vérifié on peut faire une mise a jour de notre extension via notre serveur externe, et la ça ne passe pas par google vue que l'extension et déja validé, il suffirait d'envoyer une extension clean et une fois vérifié de lui faire faire une maj par la suite avec le code vérolé dedans, de plus vue que les antivirus ne vérifient pas les extensions validés par le chromestore vous etes pénard.La suite je vous laisse deviner  :D

Voili voilou, fin de de petit tuto, j'en ai assez dis pour que vous ayez votre propre malware donc je n'en dirais pas plus  :)



Don't thrust google  ;)









Hors ligne coyotus

  • Contributeur de Kali-linux.fr
  • Membre Elite
  • *****
  • Messages: 3785
  • +263/-30
  • IN GNU WE TRUST
    • Groupe d'Utilisateurs de GNU/Linux...
Intéressant, j'avais déjà chipoté les .xpi de firefox dans la même idée de test.

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +18/-0
Cette article est ne utilisation dévie de ce tutoriel, on va dire une utilisation plus "gentil" car faire pop des pubs c'est chiant mais pas vraiment dangereux.


http://www.clubic.com/navigateur-internet/google-chrome/actualite-837112-chrome-faux-adblock-dejoue-vigilance-google.html

Hors ligne _john_doe

  • Contributeur de Kali-linux.fr
  • Membre VIP
  • *****
  • Messages: 600
  • +33/-5
J'etais passé à coté de ce tuto.
Vraiment tres malin  8)
L'apprentissage du javascript est dans ma To do list (je galère actuellement sur l'assembleur : payload -> langage de bas niveau -> FUD) mais la ta petite demonstration montre bien que parfois ce n'est pas l'aspect technique qui prime mais l'idée  :)

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +18/-0
Le festival continu:

http://www.phonandroid.com/google-chrome-extensions-malveillantes-telechargees-500000-fois.html


En meme temps ils ne paient pas les gens qui leurs remonte des failles de sécu, ils misent tout sur leur monopole et s'en contrefoute du reste.Perso j'utilise google que pour mes hobbies l'informatique etc... dès que c'est des choses plus sérieuses je switch sur opéra.

Hors ligne coyotus

  • Contributeur de Kali-linux.fr
  • Membre Elite
  • *****
  • Messages: 3785
  • +263/-30
  • IN GNU WE TRUST
    • Groupe d'Utilisateurs de GNU/Linux...
ça ne m’étonne vraiment pas.

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +18/-0
Meme si c'était marrant, perso je vais me concentrer sur firefox pour remonter des possibles bugs, au moins la ça servira a quelque chose.

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +18/-0
Google n'a toujours pas réagi ou très partiellement, dans mon dernier mail avec eux ils disaient qui s'en occupaient... on attends toujours.Cette vidéo est donc la suite logique, évidement je montre pas mon facebook perso et les mots de passes de mes comptes bidon chez gmail présent dans mon fichier log ont été changés.

En gros la vidéo démontre qu'il est possible de quasiment tout faire avec une simple adresse gmail (ben voui google de m**** veut tout vous faire centraliser sur leurs services), démontre aussi que l'on peut capturer un mail a la volée ainsi que une conversation facebook entre moi et un pote (l'extension étant sur mon ordinateur on voit juste mes quelques messages)

le SOP et CSP (same origin policy et content secure policy) ne sont pas compromis mais ça reste un gros problème de sécurité.
Pas de code source fourni pour éviter les boulets qui passeraient par la.
Nécessite un SSL valide et approuvé cote attaquant pour capturer tout ce qui se passe en connexion sécurisé.

https://www.youtube.com/watch?v=ODFSw2SnAXw

Hors ligne Sghost1405

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 485
  • +26/-1
  • Je suis ce que je sais.
Yep bien vu l'idée, j'apprécie beaucoup c'est intéressant et bien expliqué

==> Good Job ;)