Service Hacktion - Notes attachées au balado S01E02 - Revue d'actualité n°1

Saison Épisode
1 2

Articles#

Extrait du magazine en ligne de sécurité applicative (Appsec Ezine) n°515

L'auteur, Zuki, a trouvé une vulnérabilité de détournement de clic dans WhatsApp permettant de faire des attaques d'hameçonnage. Un cybercriminel peut envoyer à n'importe qui un message élaboré avec un lien qui semble mener à un site web légitime, mais qui mène sur un site arbitraire contrôlé par l'attaquant.

Zuki voulait chercher dans la fonctionnalité de prévisualisation de lien. La prévisualisation n'est pas générée par la victime, mais par l'attaquant lors de l'envoi du message. Il est possible de générer une prévisualisation qui ne correspond pas au lien.

Comme le trafic est chiffré, Zuki a utilisé le débogueur JS pour injecter un point d'interruption juste avant le chiffrement.

Propriétés :

  • text : Le texte du message
  • canonicalURL : Le domaine qui apparaît au bas de l'aperçu
  • matchedText : Semble être comparé à canonicalURL, et a également testé que sa valeur apparaît dans text

Zuki a découvert qu'en supprimant matchedText, on pouvait avoir deux URLs qui ne correspondent pas.

Pour aller plus loin, l'auteur souhait que le lien malveillant original ne soit pas visible dans le message.

Il a donc injecté un caractère Unicode U+202E (Right-To-Left Override (RtLO)) pour modifier l'affichage de droite a gauche. Il a donc réservé le nom de domaine moc.margatsni.nl qui une fois renversé donne ln.instagram.com. https://moc.margatsni.nl//:sttph apparaitra donc comme https://ln.instagram.com//:sptth. WhatsApp prend en charge l'Unicode et en particulier l'affichage des caractères BiDi / RTL.

Le lien malveillant pointe vers le site de l'attaquant ressemble visuellement à celui d'Instragram et la prévisualisation est celle du vrai site Instragram. Parfait pour piéger la victime.

Pas de correction :

  • générer la prévisualisation depuis le client est impossible pour des questions évidentes de vie privée
  • depuis les serveurs de WhatsApp impossible car 1) en théorie la conversation chiffrée de bout en bout 2) le cas échéant risque de SSRF
  • filtrer les caractères BiDi empêcherait l'affichage correct en Hébreu ou en Arabe.

La vulnérabilité est bien la non-correspondance entre l'URL du texte et celle de la prévisualisation. La meilleure solution, qui resterait imparfaite, serait de vérifier que l'URL de prévisualisation est contenu dans le texte et de ne pas afficher la prévisualisation le cas échéant.

Note : l'auteur pense avoir trouvé une vulnérabilité similaire sur Facebook, Android Message, Google Keep, Google Photo. Mais il n'en est rien. C'est simplement la norme Unicode normale et il n'y a pas de prévisualisation sur ces services.

C'est une histoire de vulnérabilité corrigée / pas corrigée.

Aussi dans Radare2 et Github CLI.

Dans l'interface en ligne de commande (ILC) de npm, une expression régulière contournable.

Solution = filtrage de certains caractères / séquences d'échappement.

Dans ProxyCommand, injection via %h ou %p.

Exemple de preuve de concept avec les sous-modules git, avec une URL SSH et une commande entourée de guillemets simples inverses à la place du domaine.

Rappel sur la prise de contrôle de sous-domaine.

Prise de contrôle de DNS : compromission d'un serveur DNS dans la chaine de résolution.

Différence entre prise de contrôle de sous-domaine et de DNS.

Improbable de compromettre un serveur DNS donc comment faire en pratique ?

Beaucoup de fournisseurs infonuagiques proposent de gérer des zones DNS. On peut désigner le fournisseur DNS infonuagique comme serveur de nom faisant autorité.

Scénario (en vrai, c'est improbable) :

  • La victime achète un domaine
  • La victime établit une zone avec le fournisseur DNS
  • La victime définit la zone comme serveur de noms faisant autorité pour son nouveau domaine
  • À un moment donné, la victime a décidé qu'elle ne voulait plus rien héberger sur ce domaine
  • La victime supprime la zone dans le fournisseur DNS, mais ne modifie jamais les serveurs de noms faisant autorité assignés au domaine
  • Le domaine n'est pas expiré, juste inutilisé

Cela crée une situation où les enregistrements DNS d'un domaine sont contrôlés par des serveurs DNS que tout le monde peut utiliser, mais personne ne revendique le domaine. En tant qu'attaquant, on peut créer une zone qui utilise l'un des mêmes serveurs de noms, on peut ajouter des enregistrements DNS pour ce domaine.

La plupart des fournisseurs de DNS ne vous permettent pas de choisir les serveurs de noms qui vous sont attribués. Nous pouvons y remédier en créant de nombreuses zones jusqu'à ce que nous en obtenions une avec un serveur DNS correspondant.

Liste des fournisseurs vulnérables : Can I Take Over DNS?

Détection : Le domaine renvoie SERVFAIL (ou parfois REFUSED) lorsqu'on essaye de le résoudre.

Il existe un modèle Nuclei : servfail-refused-hosts.

Détails de tous les cas de figure :

  1. L'évident : le vecteur d'attaque par hyperlien
    1. Un simple clic sur le lien, pas de confirmation
    2. Liens autres que web (hors sujet)
  2. Le normal : le vecteur d'attaque par pièce jointe
    1. Double clic sur la P.J.
      1. Aucun clic, l'extension de la P.J. est marquée comme un type de fichier non sûr ➡️ impossible de l'ouvrir
      2. Un double-clic et un simple-clic : l'extension de la P.J. n'est pas marquée comme non sûre et n'est pas non plus marqué comme sûre
        • Dans ce scénario, une boîte de dialogue s'affiche pour demander à l'utilisateur de confirmer l'ouverture du fichier
        • Pour les devs d'app Windows, il faut honorer le Mark-of-the-Web (MotW)
      3. Un double-clic : l'extension de la P.J. est marqué comme un type de fichier sûre.
    2. Simple clic : prévisualisation de la P.J.
      1. Pas de prévisualisation : l'extension de la P.J. est marquée comme un type de fichier non sûre
      2. Pas de prévisualisation : il n'y a pas d'application de prévisualisation enregistrée pour l'extension
      3. Deux simples clics : L'application de prévisualisation est enregistrée, mais a besoin d'une confirmation supplémentaire pour prévisualiser le contenu.
      4. Un clic : l'application de prévisualisation est enregistrée et marquée comme sûre.
  3. L'avancé : le vecteur d'attaque par lecture des courriels et des objets spéciaux
    1. Le vecteur d'attaque de la lecture des courriels
      • Exemple : panneau de prévisualisation / lecture
      • 3 formats de courriels : texte, HTML, TNEF (spécifique Outlook)
    2. Le vecteur d'attaque d'objets spéciaux Outlook
      • Juste recevoir le courriel dans le client Outlook est suffisant, pas besoin de le lire
      • Vulnérabilité de jour zéro CVE-2023-23397 permettait à un Windows local de divulguer des informations d'identification (Net)NTLM au serveur contrôlé par l'attaquant à cause des objets de rappel, démo par MDsec

De base, SSRF en aveugle sur une appli PHP avec un analyseur syntaxique XML.

Le contenu est quand même retourné si les balises ne sont pas fermées.

Il est possible de récupérer le contenu avec la technique de chaîne de filtre PHP publié par Synacktiv (ajout de caractères base64 à un contenu pré-existant en jouant sur des conversions des jeux de caractères / encodage). En général, utilisé pour générer un interpréteur de commande web. Il est possible de détourner la technique pour ajouter les balises XML ouvrantes devant la ressource à extraire.

Jusqu'ici, rien de nouveau.

Mais comment faire s'il avait fallu avoir une syntaxe XML valide (balises fermantes) ou si la SSRF était sur du JSON ? Cette fois si un préfixe ne suffit pas, il faut aussi un suffixe.

Comment ajouter un suffixe ? Assez complexe, je vous laisse lire.

Outils#

Extrait de l'inventaire de Cybersécurité de Rawsec (Rawsec's Cybersecurity Inventory)

🛠️ Geolocation Estimation par @TIBHannover

Renseignement géographique (trouver l'emplacement d'une image) automatique en utilisant l'apprentissage approfondi.

🛠️ Echidna par tyeurada & @shiracamus

Plate-forme collaborative de tests d'intrusion ; partage de terminaux, extraction d'informations sur les cibles, suggestion de commandes, recherche de code d'exploitation, chat, visualisation de graphiques.

🛠️ PyWSUS par @e2cda98eb051178 à @GoSecure_Inc

Serveur WSUS conçu pour envoyer des réponses malveillantes aux clients

🛠️ NTLM to password par @lkarlslund

Table de consultation des empreintes NTLM, des milliards de mots de passe indexés

🛠️ NetExec par @MJHallenbeck, @mpgn_x64, @al3x_n3ff, @Memory_before, @_zblurx et d'autres

Test d'intrusion des environnements Windows / Active Directory ; fourche de CrackMapExec. Regarder ma vidéo Point de vue - CrackMapExec vs NetExec.

🛠️ GooFuzz par @David_Uton

Reconnaissance passive énumérant des répertoires, des fichiers, des sous-domaines ou des paramètres à l'aide de dorks Google.

🛠️ Whisker par @elad_shamir and @podalirius_

Prendre le contrôle de comptes d'utilisateurs et d'ordinateurs Active Directory en manipulant leur attribut msDS-KeyCredentialLink, ce qui a pour effet d'ajouter des informations d'identification fictives au compte cible.

🛠️ FTK Imager par @Exterro

Enquête numérique sur les appareils électroniques ; fonctions d'imagerie de disque complet : prévisualisation et imagerie des disques durs des ordinateurs Windows et Linux, des CD, des DVD, des clés USB et autres ; montage d'images judiciaires : montage d'une image pour une vue en lecture seule qui tire parti de l'explorateur de fichiers ; prévisualisation des données ; capture de la RAM.

Partager