鉴定木马程序来源的两种方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
·80·
“注册码生成器”由木马作者编写,机器码的计算 算法和机器码转换为注册码的计算算法只有作者掌 握,“注册码生成器”程序由总代理使用,以便控制包 销,复制注册码到其他机器上是不能正常运行木马生 成器的,因为注册码是由机器码计算得到,也是与个 体的计算机直接相关的。 各个系列的木马都可能使用 这种机制,但是机器码的计算算法和机器码转换为注 册码的计算算法是各自独立的,可以用来区分木马系 列。 这就形成了对木马生成器的第一种鉴定方法:在 使用“大小姐”注册码生成器生成注册码后能够正常 设置收信地址,生成木马的木马生成器是“大小姐”系 列的木马生成器。 对于采用注册码机制的其他系列木 马也可以使用此方法加以确认。 “大小姐”系列木马中 是哪一款木马还可以通过注册表中的子项加以确认。 3.2 收信地址保存方式
DWORD key,DWORD sid)函数对 URLSTRU 结构数据 (src) 作 异 或 和 循 位 移 动 运 算 ,len 是 URLSTRU 的 长 度,URLE_SID 和 URLE_KEY 分别作为 key 和 sid。
用 rkey 对加密后的 url1 和 url2 作异或运算,rkey 根据系统时间随机生成。
在拥有源程序的基础上,对目标程序进行鉴定应 该很容易,在同一编译系统作用下,源程序不变,目标 程序就不变,将源程序编译后的目标程序与被检验的 目标程序进行比对,根据一致性就可以判别样本源程 序是否为被检目标程序的宿源。
盗号木马有其特殊性, 木马程序不是一直不变 的,其常规维护除自身改进外,主要来自于两方面因 素:一是由于游戏客户端程序的不断改进,盗号木马 必须作相应跟进,才能盗取所需信息;二是反病毒产 品一般也具有查杀木马的功能,依据从木马提取的特 征来进行查杀。 木马作者需要不断研究反病毒产品查 杀木马的模块,通过改变有关数据结构或添加无效功 能指令(如 nop 指令)来使得目标代码发生变化,原来
(3)地址解密过程是上述加密过程相反的 3 个 步骤。
加密后,只有 rkey 以明文形式存在,其他信息全 部加密, 但是 rkey 项的位置是未知的, 只有在破解 URLSTRU 结构信息后才知道。 进一步检查源程序发 现如下函数:
void GetUrl(){ URLSTRU urls; memcpy(&urls,&g_urls,sizeof(URLSTRU)); DWORD rkey=urls.rkey; DWORD* p=(DWORD*)&urls; for(int i=0;i<sizeof(URLSTRU)/4;i++) p[i]^=rkey; ::DecryptBuffer((DWORD*)&urls,sizeof(URLSTRU), URLE_KEY,URLE_SID); g_key=(char)urls.key; g_flag=(char)urls.flag; memcpy(g_url1,urls.url1,128); memcpy(g_url2,urls.url2,128); } EncryptBuffer()函数的反函数是 DecryptBuffer()函 数。 EncryptBuffer()函数存在于木马生成器中,其生成 的小马中没有它,但是有 DecryptBuffer()函数,木马发 挥作用时,盗取了游戏玩家的帐户信息,要发信,需要 收信地址 url1 和 url2。 GetUrl()函数是破解工作的关 键,有了它,就有了 rkey,URLE_KEY,URLE_SID 也有 了完整的 URLSTRU 结构,就获得了 S_KEY。 S_KEY 和 URLE_KEY 决定了木马款项, 还同时获得了收信 地址 url1 和 url2。
Two Methods for Identifying the Origin of Trojan Code
HUANG Bu-gen1, HUANG Zheng2, ZHAO Bing2 (1. Department of Forensic Science, Jiangsu Police Institute, Nanjing 210012, China; 2. Department of Network Security, Nanjing Municipal Public Security Bureau, Nanjing 210005, China) Abstract: After analyzing the characteristics of Trojan source code, two methods for identifying the Trojan objective code are proposed. One is based on the algorithm for calculating the machine code and the register code, and the other is based on the storing method of the receiver address and the encryption algorithm and parameters. The two methods are objective and efficient. Key words: Trojan; objective code; electronic evidence identification
中国司法鉴定 2009 年第 3 期 (总第 44 期)
鉴定实践
Forensic Practice
鉴定木马程序来源的两种方法
黄步根1,黄 政2,赵 兵2
(1. 江苏警官学院 公安科技系,南京 210012; 2. 南京市公安局 网警支队,南京 210005)
摘 要: 分析木马源程序自身的特征,提出两种鉴别目标代码宿源的方法:根据其机器码和注册码的计算方式或者根据 收信地址的保存方式和加密计算方式和参数进行鉴别。 上述方法客观而高效。 关键词: 木马;目标程序;电子证据鉴定 中图分类号: DF793.2 文献标志码: A 文章编号: 1671-2072-(2009)03-0079-04
的将木马捆绑在一些黄色网站,在用户不知情的情况 下自动下载并执行,也有的是利用网站漏洞,在 WEB 服务器(常常选择一些政府网站,网民比较信任)注入 指令(这个过程被称为挂马),使得游戏玩家在访问这 些 WEB 服务器的时候自动访问“木马服务器”,自动 下载和运行“木马服务器”中的木马。
在巨大的利益驱动下, 盗取游戏帐号等虚拟财 产,已经形成产业链,分工协作。 “大小姐”系列木马针 对不同游戏编写了 30 多款木马,由总代理进行经销, 按木马分销,分销商包销一款木马,包销者得到的是 木马生成器,设置收信地址,生成具有收信地址的“小 马”,再通过挂马人挂马。
木马传输可归结为下列过程:木马生成器—设置 收信地址形成小马—放入木马服务器—挂马—进入 游戏玩家的计算机,释放出 dll 模块,注入系统,完成 盗号功能。
“大小姐”系列木马主要用 VC 进行开发,每一款 游戏首先开发 dll 模块,用 load 模块外加注入系统功 能,然后用 make 模块外加设置收信地址的功能,形成 木马生成器。 木马购买者设置收信地址后将木马放出 去,等待从收信服务器收信,然后卖出虚拟财产获得 利益。 dll 模块是针对具体游戏的,各不相同,load 模 块和 make 模块的功能是一致的, 同一系列的木马中 相同。
3 “大小姐”系列木马的特殊性研究
3.1 机器码和注册码 在木马生成过程中, 卖出的是由 make 模块生成
的木马生成器,第一次使用木马生成器时出现“机器 码”,需要输入正确的注册码,木马生成器才能正常运 行,在设置收信地址和程序名后,生成木马程序。 机器 码是根据使用的计算机的固有特征 (如网卡 MAC 地 址、硬盘序列号)计算出来的,注册码是根据机器码换 算出来的,“注册码”由“注册码生成器”根据“机器码” 计算得到。 木马生成器正常执行后, 在注册表 “HKLM\SoftWare” 中 如 果 没 有 项 目 “DTTrojan”, 则 增 加该项目,在该项下,不同款项的木马生成器留下不 同的子项,例如:“QQ 自由幻想”子项的键名为“snzyhx”,键 值 为 注 册 码 ,木 马 生 成 器 每 次 执 行 时 要 检 查 该 项,进行注册码验证。
“大小姐”系列木马的收信地址一般有两个,一个 用于收信,另一个用于挂马统计,外加一些其他信息 和干扰信息并加密(由 make 模块完成)保存在生成的 木马程序文件最后。 各款木马加密运算的参数相异, 地址结构不断变化,但加密方法相同。 地址结构、加密 参数和加密算法形成了木马的固定特征,可以用于木 马鉴别。
2 Baidu Nhomakorabea马传输过程及木马程序的模块关系
游戏玩家中了木马后,木马获取其帐号、密码、装 备等信息, 这些信息被发送到专门的收信服务器,每 一个帐户信息被称为一封“信”,收信服务器的地址就 是收信地址。
为了实现将木马植入到游戏玩家的计算机上,有
·79·
Chinese Journal of Forensic Sciences, 2009, No.3 Total No.44
收稿日期: 2009-02-12 作者简介: 黄步根(1958-),男,教授、硕士。 主要研究方向为信息 安全,计算机取证。 E-mail:bghuang@sina.com。
位置的特征码发生偏移, 反病毒程序就可能失去作 用,这就是所谓“免杀”功能,反病毒产品在获取新的 样本后又要升级,如此反复,几天就要出一新版本。
在游戏玩家的计算机上,“小马”自动执行后被转 移到 c:\windows 文件夹下,并在注册表中设置启动项 (HKLM\Software\Microsoft\Windows\CurrentVersion\Run) 负责加 载运 行 , 还 在 c:\windows\System32 下 生 成 dll 模块,注入到系统程序 EXPLORER.EXE。
从木马作者处提取的源程序是最新的版本,而从 木马流通环节获取的木马则是不同时期形成的, 最新 的源代码与先前各目标代码已经不具备完全的对应关 系,不可以将源程序编译后与被检目标程序直接比对。
如果按照软件一致性检验的一般方法,将目标程 序反编译后进行程序结构、 功能和代码等方面的比 对,是实际不可行的,因为“大小姐”系列木马有三十 多款,针对不同游戏,需要鉴定的不同时期木马就更 多,工作量将非常大,难以在有限时间内完成鉴定。 再 则,木马不只有一个系列,还有“温柔”、“皇马”等其他 系列,不能仅仅从功能方面进行鉴定,针对同一款游 戏,各个系列的木马功能是基本相似的。 针对特定系 列木马研究其固有特征,找到特有的鉴别方法进行鉴 定就尤为重要。
2008 年,南京市公安局破获了一起利用木马(业 内称为“大小姐”木马)盗窃游戏玩家帐户信息,将虚 拟财产转卖而获利的案件。 在案件侦办过程中,提取 了木马作者的木马源代码,对于木马流通环节中的木 马生成器和游戏玩家计算机上提取的木马,需要鉴定 是否属于“大小姐”木马。 本文就此问题进行讨论。
1 盗号木马宿源鉴定的特殊性
(1)有关参数和数据结构(以一款具体木马为例) #define S_KEY 0xF7 #define URLE_KEY 0x3F44C7D2 #define URLE_SID 1 typedef struct{ DWORD rkey; //用于此结构信息的异或运算 char nousex[3]; //干扰信息 char url1[128]; //收信地址 1 DWORD nouse; //干扰信息 DWORD key; //存储 S_KEY DWORD flag; //加密信时用于异或运算 char url2[128]; //收信地址 2 }URLSTRU,*LPURLSTRU; 这是从一款木马中取得的, 经过检查分析发现, S_KEY 和 URLE_KEY 是用于进行加密运算的两个参 数,作者为了增加破解的难度,每一款木马的这两个 参数各不相同。 同一款木马中,不同时期的 URLSTRU 结构也是经常变换的,改变子项位置和干扰信息的长 度,在目标代码中的参数地址就发生变化,增加了破 解的难度。 (2)地址加密过程包括如下三步: 用 S_KEY 分别对 url1 和 url2 作异或运算。 用 EncryptBuffer (DWORD* src,DWORD len,
相关文档
最新文档