日期:2014-05-16 浏览次数:20366 次
感觉江南这个称呼不错,就到盗用了过来,关于这个jsunpackn是一个decode网页js脚本的东西,因为js脚本挂马需要依赖于浏览器漏洞,主要集中与ie,
而chrome与firefox的漏洞不算特别多,还有就是弹出广告,之类的一些流氓功能。
jsunpack有一个网页版本和一个本地版本,本地版本配置需要python环境和几个python模块,官网介绍如下
jsunpack-n emulates browser functionality when visiting a URL. It's purpose is to detect exploits that target browser and browser plug-in vulnerabilities. It accepts many different types of input: PDF files - samples/sample-pdf.file Packet Captures - samples/sample-http-exploit.pcap HTML files JavaScript files SWF files
内存并执行,我们可以hook eval这个函数,根据观察jsunpackn就是这样做的,但这也不是全权之计,比如setTimeout也可以执行代码,或者使用匿名函数,也可以执行
js。具体可以看这篇文章http://huaidan.org/archives/3328.html
这里顺便吐槽一下,python版本之间的差异非常大,比如Exception , e 和 Exception as e print('a') 和 print 'a' import的隐试声明
再读源码的时候经常看到这句话,python __name__='__main__',他的意思是,自己调用时才执行main函数,
当别的模块调用它是,python__name__是他自己的名字,当自己调用自己时,python__name__才是__main__
之后是安装模块,在jsunpackn的目录下有模块的介绍
These packages are the original upstream packages provided by the authors with the only exception being the spidermonkey version which is patched to fit it's purpose to detect malicious JavaScript files. The reason for these copies is to have a known working dependency set to be able to compile and run JsUnpack on a usual Linux Distribution. The original source of the files are: BeautifulSoup-3.2.0.tar.gz Beautiful Soup is a Python HTML/XML parser http://www.crummy.com/software/BeautifulSoup/ js-1.8.0-rc1-src.tar.gz A modified version of SpiderMonkey which is Mozilla's JavaScript engine https://developer.mozilla.org/en/SpiderMonkey pycrypto-2.4.1.tar.gz The Python Cryptography Toolkit https://www.dlitz.net/software/pycrypto/ pynids-0.6.1.tar.gz pynids a python wrapper for libnids http://jon.oberheide.org/pynids/ yara-1.6.tar.gz YARA a tool to identify and classify malware samples http://code.google.com/p/yara-project/ yara-python-1.6.tar.gz The python bindings for YARA http://code.google.com/p/yara-project/
这里说一下,SpiderMonkey的源代码没有被编译,可能是因为作者修改了源码的问题
编译过程如下
configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(header file),让源程序可以很方便地在这些不同的平台上被编译连接。
所以一般的编译过程是
configure make(在MAKEFILE中读取指令,用来编译) make install (MAKEFILE中读取,安装到指定位置) 最后用make clean 来清除一些中间文件就可以了
先说一下这些模块的作用
BeatuifulSoup
这是一个可以解析HTML/XML的模块,需要使用urllib把网页信息下载下来再进行解析,这个模块的作用应该是分析HTML信息,并找出script标签,
但如果是单纯的寻找标签名,但对一些重定向之类的方法,应该不能发觉。
使用方法大概如下
import BeautifulSoup import urllib a = 'http://www.icafe8.com/icafe/archive/DisklessServer1.1.0.0.exe' b = 'c:/DiskLess.exe' #urllib.urlretrieve(a, b) url = 'http://www.baidu.com' f = urllib.urlopen(url) #response = urllib.request.urlopen(url) #print response all_url_text = f.read() soup = BeautifulSoup.BeautifulSoup(all_url_text) #print(soup.prettify()) soup.findAll('script')
这就是火狐使用的js解析器了,编辑完成时会出现一个叫做js的可执行文件,使用它就可以执行js脚本啦~
js -h 会显示帮助
在jsunpackn之中的语句如下
po = subprocess.Popen(['js', '-f', self.OPTIONS.pre, '-f', current_filename + '.js', '-f', self.OPTIONS.post], shell=False, stdout=js_stdout, stderr=js_stderr)但是简单的执行js脚本怎么达到解密功能那,作者应该是hoook了eval函数,在主目录下INSTALL.spidermonkey下有说明,
根据下面的修改,应该是只hook了eval函数,那么根据网络水友介绍,加密js函数不只有使用eval函数
还可以使用settimeout函数,
或者使用匿名函数,这样根本无法hook
package{ import flash.external.ExternalInterface; public class