社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 924阅读
  • 2回复

[交流]一个"有趣"小马的分析之旅

楼层直达
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511641
信誉值
8

[font=&quot]0x01[font=&quot]基本信息[font=&quot]  文件[font=&quot]: C:Users15pb-win7Desktop04.vir大小[font=&quot]: 631810 bytes修改时间[font=&quot]: 2017[font=&quot]9[font=&quot]29[font=&quot], 8:19:09[font=&quot]MD5: 81FE61EC3C044AA4E583BA6FF1E600E8[font=&quot]SHA1: D7C9D1E5A2FA2806A80F9EDBCDD089ED05D6B7D8[font=&quot]CRC32: 2EBCCBF8     加壳情况:未加壳[font=&quot]                                        [font=&quot]0x02[font=&quot]简介这是一个针对用户浏览器[font=&quot]FTP软件,窃取系统及个人信息的木马[font=&quot] [font=&quot]0x03[font=&quot]被感染系统症状创建[font=&quot]C:Users用户名[font=&quot]AppDataRoaming5F1832文件夹,并将木马以不同名称[font=&quot]2728C2.exe复制到其中,其中名称[font=&quot]5F1832和名称[font=&quot]2728C2为木马随机产生,接着修改木马的文件属性为隐藏。用户系统中浏览器、[font=&quot]FTP等软件本地存储密码会被上传到指定服务器。木马尝试在注册表中添加启动项但是失败。[font=&quot] [font=&quot]0x04[font=&quot]详细分析当木马运行后,会进行如下操作:[font=&quot]1.       [font=&quot]检测操作系统是否运行在虚拟机(wmware[font=&quot]等)中,系统进程列表中是否有安全工具[font=&quot]windbg[font=&quot]等)和杀毒软件,如果发现自动终止运行。[font=&quot] [font=&quot] [font=&quot][font=&quot]2.       [font=&quot]加载RC[font=&quot]数据中的名为1000[font=&quot]的资源到内存并其进行解密 [font=&quot] [font=&quot][font=&quot]3.       [font=&quot]加载Icon[font=&quot]资源类型下的所有资源到内存,并使用之前RC[font=&quot]中名为1000[font=&quot]的资源的数据对其进行解密 [font=&quot] [font=&quot] [font=&quot]一次解密 [font=&quot]第二次解密 [font=&quot]此时木马的主体已经暴露在外,将其[font=&quot]dump出来,保存为可执行文件 [font=&quot][font=&quot]4.       [font=&quot]接着木马程序获取自身路径以挂起的方式创建对应的子进程,并获取对应的线程上下文[font=&quot]CreateProcessW(0,[font=&quot]自身路径,0,0,0,4,0,0,buf1([font=&quot]大小0x44), buf2([font=&quot]大小0x10));[font=&quot] [font=&quot][font=&quot]5.       [font=&quot]将子进程的[font=&quot]主模块数据卸载 [font=&quot][font=&quot]6.  [font=&quot]创建一个内存段对象,将当前进程和子进程的指定位置指定大小的内存与之“绑定”[font=&quot](1)首先创建一个内存段对象 [font=&quot][font=&quot](2)两次调用下面的函数,将当前进程内存地址为[font=&quot]0x16E000和子进程内存地址为[font=&quot]0x400000,大小同为[font=&quot]0xA2000(也就是释放的恶意[font=&quot]PE[font=&quot]IMAGESIZE)的内存空间同时和上面创建的[font=&quot]SectionHandle“绑定”到一起。 [font=&quot]此时在当前进程中修改[font=&quot]0x16E000后的内容就会间接的修改了子进程[font=&quot]0x400000后的内容。[font=&quot] [font=&quot]7.       [font=&quot]将之前解密出来的恶意主体在当前进程中PE[font=&quot]展开(实现PE[font=&quot]文件加载到内存) [font=&quot]此时当前进程和子进程的内容应该都如图所示 [font=&quot][font=&quot]8.       [font=&quot]接着主进程恢复子进程的主线程,并结束自身进程 [font=&quot] [font=&quot][font=&quot]9.       [font=&quot]接下来就是分析之前dump[font=&quot]出来的主体untitle1.exe[font=&quot]了,下面是基本文件信息,.x[font=&quot]段很可疑 [font=&quot]程序使用[font=&quot]hash值获取函数地址 [font=&quot]字符串都是局部变量字符数组,隐蔽性很强 [font=&quot][font=&quot]10.   [font=&quot]获取"SOFTWAREMicrosoftCryptography"[font=&quot]下的"MachineGuid"[font=&quot]项的键值"f9117a5d-b155-4a3e-b6c9-5ae181247d3b",[font=&quot]加密之后,[font=&quot]得到"5ED09A55F1832728C292E32429D73569",[font=&quot]最后截取前0xc[font=&quot]个字节,[font=&quot]返回"5ED09A55F1832728C292E324"[font=&quot],如果获取键值失败则采用结合一个固定值产生字符串。以本机为例,之后创建互斥体和之后生成的文件夹名和文件名都和"5ED09A55F1832728C292E324"[font=&quot]有关[font=&quot]11.   [font=&quot]防止自身多启动 [font=&quot][font=&quot]12.   [font=&quot]尝试窃取几乎所有的浏览器、FTP[font=&quot]客户端中等软件保存的用户帐号[font=&quot]  下面是执行窃取操作的循环 [font=&quot]这里简单分析下第一个函数调用:火狐密码的窃取[font=&quot](1)首先[font=&quot],由注册表获取到路径[font=&quot]0012FB78   00271CB8  UNICODE "SOFTWAREMozillaMozilla Firefox53.0 (x86 zh-CN)"(2) 获取关键文件夹并用于初始化[font=&quot] [font=&quot] [font=&quot][font=&quot](3)初始化之后就是读取[font=&quot] [font=&quot]的这三个文件获取密码 [font=&quot]然后就关闭[font=&quot] [font=&quot]10.  [font=&quot]接着获取当前用户是否具有管理员权限,当前虚拟机未打开管理员权限[font=&quot]网络文献:[font=&quot]以上Delphi[font=&quot]检测用户是否具有administrator[font=&quot]权限(OpenThreadToken[font=&quot]OpenProcessToken[font=&quot]GetTokenInformation[font=&quot]AllocateAndInitializeSid[font=&quot]EqualSid[font=&quot][font=&quot]http://www.cnblogs.com/findumars/p/5281970.html 11. [font=&quot]将以上所有收集到的信息发送至指定服务器其中[font=&quot].x段存储着服务器地址[font=&quot]xor 0xFF后的值,每次均从中获取对应的网址 [font=&quot]获取服务器地址 [font=&quot]发送数据 [font=&quot][font=&quot]12.[font=&quot]接着就是移动文件到指定文件夹(并在这个过程中改文件名),并设置文件属性 [font=&quot] [font=&quot][font=&quot]13.   [font=&quot]之后就是循环上传 [font=&quot][font=&quot]14.   [font=&quot]执行流程图 [font=&quot][font=&quot]15.木马的缺陷:未能正确添加启动项这其间获取服务器地址使用一个奇怪的函数[font=&quot],函数内部首先使用[font=&quot]RSA相关的函数解密一块内存空间[font=&quot],然后又将释放的恶意[font=&quot]PE[font=&quot].x段与[font=&quot]0xFF异或[font=&quot],之后将[font=&quot]xor的结果覆盖到之前解密的部分[font=&quot],而这之间没有任何对解密部分的使用[font=&quot],也就是说白解密了[font=&quot].一开始以为是混淆[font=&quot],直到又看到一个函数[font=&quot]SHRegSetPath,一开始看到就觉得应该是设置启动项[font=&quot],函数第一个参数是主键[font=&quot]HKEY_LOCAL_MACHINE,但是第二个参数竟然是服务器地址[font=&quot],结果就是这个木马不能正确添加到启动项那么[font=&quot],为什么呢[font=&quot]?[font=&quot]SHRegSetPath上面看看[font=&quot],会发现刚刚说的那个那函数[font=&quot],跟进去会发现它还是首先解密一块空间[font=&quot], [font=&quot]解密后就是[font=&quot]SOFTWAREMicrosoftWindowsCurrentVersionRun,这正是[font=&quot]SubKey应该的字符串[font=&quot],但是之后被服务器地址无情的覆盖了[font=&quot],所以最后就悲剧了[font=&quot].这里猜测可能是作者是想改将服务器地址改为自己的[font=&quot](跟到过解密后的字符串[font=&quot],除了这个注册表的都是网址[font=&quot]),他可能是在原来的[font=&quot]RSA解密函数内部改的[font=&quot](你会发现有很多[font=&quot]nop),在其中使用汇编将自己添加的[font=&quot].x段异或[font=&quot]0xFF覆盖到返回地址[font=&quot],但是他没有注意到添加启动项也使用了这个函数也用于解密[font=&quot]"SOFTWAREMicrosoftWindowsCurrentVersionRun"字符串[font=&quot].  整个木马详细的分析过程在附件中[font=&quot](真心详细[font=&quot]),欢迎下载链接:http://pan.baidu.com/s/1qYbpdZu 密码:mqiw 解压密码:111
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
级别: 超级版主
发帖
833617
飞翔币
226622
威望
224648
飞扬币
2442865
信誉值
0

只看该作者 1 发表于: 2017-10-30
来看一下
级别: 超级版主
发帖
833617
飞翔币
226622
威望
224648
飞扬币
2442865
信誉值
0

只看该作者 2 发表于: 2017-10-30
不错,了解了