読者です 読者をやめる 読者になる 読者になる

jsunpackを動かしてみた

色々とあってjsunpackを動かしてみることになったので, その過程をメモっておきますgithub.com

環境は以下のとおり, Ubuntu 14.04 LTS 32bitです

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04 LTS
Release:	14.04
Codename:	trusty

まずjsunpackをGitHubからcloneします

$ git clone https://github.com/urule99/jsunpack-n.git

中身はこんな感じになるので, dependsに移動します

$ ls -la
合計 2496
drwxr-xr-x 5 root root    4096 105 22:01 .
drwxrwxrwt 6 root root    4096 105 22:00 ..
drwxr-xr-x 8 root root    4096 105 22:01 .git
-rw-r--r-- 1 root root    7913 105 22:01 CHANGELOG
-rw-r--r-- 1 root root   18093 105 22:01 COPYING
-rw-r--r-- 1 root root    2386 105 22:01 INSTALL
-rw-r--r-- 1 root root    1517 105 22:01 INSTALL.spidermonkey
-rw-r--r-- 1 root root    2227 105 22:01 INSTALL.spidermonkey.shellcode
-rw-r--r-- 1 root root     146 105 22:01 Makefile
-rw-r--r-- 1 root root    1191 105 22:01 README.md
-rw-r--r-- 1 root root    5831 105 22:01 debug.py
drwxr-xr-x 2 root root    4096 105 22:01 depends
-rwxr-xr-x 1 root root    3999 105 22:01 detection.py
-rwxr-xr-x 1 root root    4525 105 22:01 exampleImport.py
-rw-r--r-- 1 root root   17192 105 22:01 gzip.py
-rwxr-xr-x 1 root root    9270 105 22:01 html.py
-rw-r--r-- 1 root root    2150 105 22:01 htmlparse.config
-rwxr-xr-x 1 root root   60428 105 22:01 jsunpackn.py
-rw-r--r-- 1 root root    3942 105 22:01 lzw.py
-rw-r--r-- 1 root root     987 105 22:01 options.config
-rwxr-xr-x 1 root root   55943 105 22:01 pdf.py
-rw-r--r-- 1 root root    2633 105 22:01 post.js
-rw-r--r-- 1 root root   14853 105 22:01 pre.js
-rw-r--r-- 1 root root    7495 105 22:01 rules
-rw-r--r-- 1 root root     732 105 22:01 rules.ascii
-rw-r--r-- 1 root root 2240156 105 22:01 samples.tgz
-rwxr-xr-x 1 root root    9252 105 22:01 swf.py
drwxr-xr-x 2 root root    4096 105 22:01 tools
-rw-r--r-- 1 root root   12846 105 22:01 urlattr.py
$ cd depends/
$ ls -la
合計 3372
drwxr-xr-x 2 root root    4096 105 22:01 .
drwxr-xr-x 5 root root    4096 105 22:01 ..
-rw-r--r-- 1 root root   31056 105 22:01 BeautifulSoup-3.2.0.tar.gz
-rw-r--r-- 1 root root    1061 105 22:01 README
-rw-r--r-- 1 root root 2305216 105 22:01 js-1.8.0-rc1-src.tar.gz
-rw-r--r-- 1 root root  383032 105 22:01 pycrypto-2.4.1.tar.gz
-rw-r--r-- 1 root root  174723 105 22:01 pynids-0.6.1.tar.gz
-rw-r--r-- 1 root root     384 105 22:01 sha1sum
-rw-r--r-- 1 root root  523880 105 22:01 yara-1.6.tar.gz
-rw-r--r-- 1 root root    8780 105 22:01 yara-python-1.6.tar.gz

取り敢えず全部解凍します

$ tar zxvf BeautifulSoup-3.2.0.tar.gz

とかで解凍できます

解凍したら順番にビルドしてインストールします
その前にビルド等に必要なものをインストールします

# apt -y install libpcap-dev pkg-config python-dev libgtk2.0-dev libnet1-dev libpcre3 libpcre3-dev

Beautiful Soupはaptでインストール出来るので

# apt -y install python-beautifulsoup

次にjs-1.8.0-rc1-srcをビルドしてインストールします

$ make BUILD_OPT=1 -f Makefile.ref
# cp ./Linux_All_OPT.OBJ/js /usr/local/bin/

次にPyCryptoをビルドしてインストールします

$ python setup.py build
$ python setup.py install

pynidsをビルドしてインストールします

$ python setup.py build
$ python setup.py install

Yaraをビルドしてインストールします

$ ./configure
$ make && make install
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

最後にyara-pythonをビルドしてインストールします

$ python setup.py build
# python setup.py install

これで終わりです

ちゃんと使えるようになったかどうか試してみます
取り敢えずサンプルを解凍します

$ tar zxvf samples.tgz
$ ls -la samples
合計 2588
drwxr-xr-x 2 1001 1001    4096  820  2010 .
drwxr-xr-x 6 root root    4096 105 22:13 ..
-rw-r--r-- 1 1001 1001     112  521  2010 html.txt
-rw-r--r-- 1 1001 1001   39027  521  2010 http-exploit.pcap
-rw-r--r-- 1 1001 1001   27505  521  2010 lastModified.pcap
-rw-r--r-- 1 1001 1001   38699  521  2010 pdf-annot.file
-rw-r--r-- 1 1001 1001   57577  521  2010 pdf-annots.file
-rw-r--r-- 1 1001 1001  121864  521  2010 pdf-infoTitle.pcap
-rw-r--r-- 1 1001 1001   52793  521  2010 pdf-jsEval.file
-rw-r--r-- 1 1001 1001   33184  521  2010 pdf-numPages.file
-rw-r--r-- 1 1001 1001    1909  521  2010 pdf-thisCreator.file
-rw-r--r-- 1 1001 1001  405615  521  2010 pdf-versionDetection.file
-rw-r--r-- 1 1001 1001   23384  521  2010 pdf.file
-rw-r--r-- 1 1001 1001  686824  521  2010 pdf.pcap
-rw-r--r-- 1 1001 1001     115  521  2010 swf-js.file
-rw-r--r-- 1 1001 1001 1118805  521  2010 swf-url.file

後はテキトーにファイルを投げ込むだけです

# ./jsunpackn.py ./samples/pdf.file
[malicious:10] [PDF] ./samples/pdf.file
	suspicious: PDFobfuscation detected Collab[
	malicious: CollabgetIcon CVE-2009-0927 detected  
	suspicious: Warning detected //warning CVE-NO-MATCH Shellcode Engine Length 129358 //warning CVE-NO-MATCH Shellcode NOP len 121 //warning CVE-NO-MATCH Shellcode NOP len 1023 //warning CVE-NO-MATCH Shellcode NOP len 847 //warning CVE-NO-MATCH Shellcode NOP len 261283 //warning CVE-NO-MATCH Shellcode NOP len 9999
	malicious: shellcode of length 1451/847
	malicious: XOR key [shellcode]: 33
	malicious: shellcode [xor] URL=b35.info/w/who.exe
	file: decoding_dc5b8c9c4f4434b3a74a6ae87b6b69895959dc28: 16238 bytes
	file: decoding_f3f605ba0643f9d53a6d2574e170fe12372058a7: 5071 bytes
	file: shellcode_9e91c6f7ac43d4b404c9793f64e7617a2f257cba: 1451 bytes
	file: original_c34022681fa89171fc803baeb2b120400bc1775f: 23384 bytes
	[not analyzed] (shellcode) b35.info/w/who.exe


こんな感じで動いてることが確認できました