要去江北了,很紧张。
=================================
rule getAnnots: decodedPDF { meta: impact = 3 //Since getAnnots may be legitimate ref = "CVE-2009-1492" hide = true strings: $cve20091492 = "getAnnots" nocase fullword condition: 1 of them }有很多类似的rules,在文件一开始的时候有对规则的简介:
Alert modifiers: (does not affect detection) ref = CVE-NAME impact = (between 0 - 10, 10 being most severe) hide = (true|false), if hide=true, don't pass detected strings to program use this if the rule name captures everything of value, or you just don't care about the data Detection modifiers: decodedPDF = rules that only alert if decoding within a PDF file decodedOnly = rules that only alert if decoding level > 0 (ie. a decoding and not the original file) (add your own) I will support them (maybe not) ;)警报修饰符:
ref = CVE-NAME
CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。
impact 10个等级,10为影响最大的等级
hide 如果 hide = true,不把检测到的strings传递给我们这程序。基本上所有的rule要么 hide = true ,要么就没有hide这一项。说明很多rules不在乎数据。
检测修饰符:
decodedPDF 仅仅在解码一个PDF文件的时候发警报
decodedOnly 只要有解码,就发出警报
from time import time class DebugStats: '''Used to track performance statistics Within the application being debugged, you should not modify the members directly. Instead, modify those elements by using the add* functions like add_launch and add_detect Attributes: js_launches: One element for each times the SpiderMonkey js was called, could be either because there is a script error, also when evaluating other versions of the environment. rule_detects: One element for each time running YARA detection. '''
=========================SpiderMonkey的简介====================
SpiderMonkey是Mozilla项目的一部分,是一个用C语言实现的JavaScript脚本引擎,另外还有一个叫做Rhino的Java版本。
为了在SpiderMonkey中运行JavaScript代码,应用程序必须有三个要素:JSRuntime,JSContext和全局对象。
JSContext,就像是一台小机器,它涉及JavaScript代码和对象的很多东西。它可以编译和执行脚本、获取和设置对象属性、调用 JavaScript函数、一种类型转换为另一种JavaScript数据、创建对象,等等。几乎所有JSAPI函数都要一个JSContext*作为其第一个参数,就像<stdio.h>中的大多数函数都需要FILE*一样。
全局对象包含所有可以在JavaScript代码中使用的类、函数和变量。
=========================YARA detection========================
本来以为这个应该是某个东西才对,蓝蓝让我运行下,我当时就郁闷了,运行?哦,对啊,我怎么不先运行下看看效果呢?可是当我打开jsunpackn.py的时候,发现如下错误信息:
Traceback (most recent call last):
File "C:\Users\ouyang\Desktop\jsunpack-n\jsunpackn.py", line 31, in <module>
import detection
File "C:\Users\ouyang\Desktop\jsunpack-n\detection.py", line 9, in <module>
import yara
ImportError: No module named yara
意味着我没导入yara包,detection包。看来这个yara是个运行必须的包啊。
其实我应该早点认识到 :depens文件夹意味着文件夹中的都是必须要先安装的。
看了下INSTALL,发现都是linux下怎么安装yara,郁闷啊,难道大家都是linux下开发的吗?敢不敢来个win啊?
结果google到了yara-python-1.6.win-amd64-py2.7.exe,网址http://code.google.com/p/yara-project/downloads/list
下载地址:
安装完之后果断就能在 python shell 中 :import yara
说明yara已经嵌入到python中啦。。。成功
========================BeautifulSoup for win ====================
BeautifulSoup windows下 的 配置:http://hi.baidu.com/zchare/item/bae3a0302fc4aef7a884282e
下载地址:http://download.csdn.net/detail/xihuanqiqi/4593520
cmd下进入目录然后命令:
python setup.py build
python setup.py install
========================Crypto.Cipher.ARC4======================
C:\Users\ouyang\Desktop\jsunpack-n>python jsunpackn.py
Traceback (most recent call last):
File "jsunpackn.py", line 34, in <module>
import pdf
File "C:\Users\ouyang\Desktop\jsunpack-n\pdf.py", line 13, in <module>
import Crypto.Cipher.ARC4
ImportError: No module named Crypto.Cipher.ARC4
发现还是有这个Crypto.Cipher.ARC4模块没嵌入
要下载 PyCrypto,可是安装的时候不能:
File "setup.py", line 269, in run
raise RuntimeError("chmod error")
RuntimeError: chmod error
妈的。。今天就先这样了。。这个蛋疼的问题,至今没解决。。明天试试Ubuntu下能不能搞定。
=============================================================
一个 js_launches 元素只有在发生js error或者环境版本错误才会调用SpiderMonkey js 引擎而被产生。
一个 rule_detects 元素在每次运行 YARA detection的时候被产生。
def __init__(self, name, tmpdir): self.name = name self.tmpdir = tmpdir self.js_launches = [] self.rule_detects = [] self.html_parsing = [] self.total_js_launches = [] self.total_rule_detects = [] self.ignored_main = 0 self.before_decode = None self.during_decode = None self.responsibility = None self.start = None