软件逆向分析方法小结

3.5 软件逆向分析方法小结
在对软件逆向分析过程中,根据软件运行的内部机制和自身特点,我们
总结了三种通用的分析方法。


一是常数判别分析法,在软件内部存在着常数,这些常
数通常用作产生解密密钥,在分析过程中关注软件内部常最,可以对软件内置数据的
还原。

二是数据结构特征分析法,在软件的逆向分析过程中,存在11些加解密算法和
数据编码的算法,而这些算法t},通常包含具有特征的数据结构,利用这种特征,可以
快速分析软件逆向后的函数行为。

三是软件网络行为特征分析法,根据网络特征行为
分析软件内部结构。在软件逆向分析过程中,以上三种方法具有普遍性,而且能够快
速有效的逆向分析软件内部数据,算法及其运行机理皑}。


常量数据判别分析法的主要原理是由于软件内部都会隐藏一些常量数值或者字
符,而这些内置数据在软件内部算法被直接或者变形处理后作为重要参数使用。凼为
常量的不变性,而且有些数据常量被软件作为关键参数使Hj,这样软件运
行算法和运行行为也可以根据这些常景数据来逆向分析。在分析过程中,软
件向外部发送DNS请求,发送请求的域名为 域名字符以常量的方
式存储在软件内部,这样只需要在软件读取这些域名字符的代码段介入调试断点,再
对断点附近的代码进行分析,就可以分析软件的域名请求的全部行为。在
运行过程中有临时义件缓存名,注册表键值名生成算法,这螋算法均用到奉机磁盘驱
动器中C盘的卷序列号和一个常量数量作为参数来生成文件名称,而在内部DNS解
密算法l h常数OxFABEBABE,Ox3F6CB254和OxAE985D36作为解密辩钥的生成。
在软什调试中,根据这些常数能够准确把握软件内部算法和行为特征,从而能够对软
件.},的关键算法和运行行为进行有效分析[22】。
软件自身也会用到一些公开的算法,在软件逆向分析t I-,我们发现其使
用了变形Base64编码c23KT法,RC4加密算法[241,SHA-I散列算法l25I和随机数产生算
法。这样的算法都会有白己的特征数据结构,在变形Base64编码算法rf1,
软件改变其字^苛:表为"abcdefghij klmnopqrstuvwxyz-0123456789ABCDEFGHIJKLMNO
PQRSTUVWXYZ_",Base64编码算法特怔为以3个字IJ为'组。按顺序排列24位
数捌,再把这24位数据分成4组。在软件调试中,RC4算法明最特征为算
法初始化一个8*8的S盒,然后对S盒进行置换。SHA-1散列算法也具有一系列的
常数,而且代码的循环结构和循环次数都具备特征数据结构。软件中使用的随机数产
生算法均使用了时问作为随机数产生的种子。在软件调试过程中,我们只


需要分析清楚这些算法的特征数据结构,就能够确认其算法功能,从而确定具体的算
法。在软件调试中发现软件使用第j方密码算法库,使用标准密码算法。
因此在软件逆向分析调试小识别这些密码学算法能够提高逆向分析效率,更好把握软
件内部结构。
软件是一'款嘲络代理软件,因此在软件调试中可以利用其刚络行为特征
进行逆向分析。软件在和外部嘲络通信中多使用UDP的连接方式,在这种
网络协议中使用的特征函数为send()/receive()。软件采用多线程技术编程方
式,由一个线程向外部发送数据,另外一个线程接受服务器端传送的数据,在软件调
试中,只需要在两个函数处植入调试断点,就口J'以歇得软件放送和接受的
所有数据。在软件与web服务器建立连接后,需要从服务器r{-凄取网页内
容,用到的特征函数为Internetreadfile()。这些特征函数都是网络编程中使用的标准函
数,而软件实现网络行为均州到这些晒数。根据软件网络行为特征进行分
析,能够有效分析软件内部结构和功能模块l22】。
根据上述分析方法,对较件进行逆向分析,分析表明软件通信
过程中需要获取代理服务器IP主要通过查询内置DNS,查询docs,google中个人主页
还有'些特定的代理服务器IP等手段。

Powered by Zoundry

posted @ 2011-03-28 10:20  attilaxAti  阅读(38)  评论(0编辑  收藏  举报