短链接网页木马解析大全

短网址网页源码的DOM解析技术,在处理完爬取下来的短网址网页源码后,上次讲述了短网址网页木马挂马的9种方式与短网址页面源码《短网址网页木马常见9种挂马技术》, 接下来要进行的是木马特征值的匹配。

短网址木马解析一、木马特征库建立


码人网mrw.so缩短网址文章图片
在创建木马特征库时,需要将常见的短网网页挂马方式写入数据库中。不同的网页木马地址数量很大,且HTML中标签属性的表示方式可以有多种,例如:width=“0”或者width=:“0”等。如果将每一种可能存在的网页木马类型都写入数据库,这将造成木马库十分庞大,并且造成检测的效率大大降低。

因此,这里引入正则表达式来描述木马特征库。根据前面介绍的正则表达式的常见符号,可以提取每一类短网址网页挂马的特征值,写入木马特征表中,从而大大降低木马特征库的容量,提高短网址网页代码与特征值匹配的效率。

此外,该特征库同时也可智能化的将用户或管理员输入的短网址网页木马特征直接转化为正则表达式并写入木马特征库数据库。

短网址木马解析二、木马特征码匹配

网页源码与木马特征值的匹配就是字符串与正则表达式的匹配。正则表达式的匹配都是通过正则表达式引擎实现的。正则表达式引擎分为两类:基于NFA (非确定型有穷状态自动机)和基于DFA (确定型有穷状态自动机)的引擎。DFA和NFA的区别在于,DFA对于一个状态和一个输入,一定会有一个唯一的后续状态,而NFA可能有多个状态,也可能没有。一般来说,DFA正则在编译的时候花的时间会多一点,但是在匹配的时候会更快一点。一般情况下,NFA引擎更多的被运用于实际使用中。

短网址木马解析三、正则匹配时,有两条最重要的规则:

1)优先选择最左端的结果。

2)对标准匹配量词’{m,n}’、‘+’、‘*’、‘?’优先使用贪婪模式。"贪婪匹配”模式是说,当解释器将代码中的字符解析成一个个的编译器,在处理代码时的最小语法单元时,编译器会使用一种贪婪匹配算法,也就是说会尽可能让一个单元包含更多的字符。

短网址主要基于NFA引擎,结合了 Matcher类和Pattern类进行字符串与正则表达式的匹配,一个Pattern对象是一个正则表达式经编译后的表现模式,一个Matcher对象是一个状态机,它依据Pattern对象作为匹配模式对字符串展开匹配检查。

Pattern类用于创建一个正则表达式,也就是创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern. complie( String regex )简单工厂方法创建一个正则表达式。例如:

Pattern P = Pattem.complie( ‘‘w+”); p.Pattern();//返回w+

Pattern()返回的是正则表达式的字符串形式。用于实现快速匹配字符串的方法是Pattem.matcher(CharSequence input),它返回的是一个 Matcher对象。

系统中的主要匹配过程如下:

String patt = trojan.getTrojanConteiit(); Pattern P = Pattem.Compile(patt);

Matcher m = p.matcher(detectionCoiitent);

短网址木马持征对应征则表达式

这里从前台获取用户选择的木马检测类型,查询得到数据库中该类型的短网址网页木马正则表达式pattern后,将该正则表达式编译成字符串形式,网页源码或是DOM解析技术提取过的源码作为input参数传给matcherO方法。这个Pattern对象P使用matcher()方法来生成一个Matcher实例M,接着便可以使用该Matcher实例以编译的正则表达式为基础对目标字符串进行匹配工作。

在进行网页源码中的木马匹配查找时,用到Matcher类中的一些方法,其中boolean find()用于尝试在目标字符串里查找下一个匹配子串;

intstart(intgrcup)方法用于计算当前查找到的指定木马字符串的第一个字符在网页源码中的位置;

inteiid(int group)用于计算木马匹配模式里指定的组相匹配的子串最盾一个字符的位置;

String group(int group)用于获取特定查找而获得的网页木马代码的内容;

intgroupCoimt()方法则用来返回当前查找所获得的网页木马的数量。

通过调用上的方法,可以获取查找到的木马代码、木马的位置以及木马的个数。

在Matcher类和Pattern类的基础上,本系统提供了两个方法分别为:publicstatic void trojanDetectionByDoin(String detectionContent, String trojanType, Stringemail,String tele,String url)和 public static voi过 trojanDetectionByType(StringdetectionContent, String trojanType,Stringemail,String tele,String url),前者用于匹配经过DOM解析后的网页源码,后者用于匹配顺序审查的网页源码。