程序简单的后门分析经验 tools WEB

admin 11月前 268

                           简介

此样本是运行在windows系统下的一款后门样本(来自恶意代码分析实战 lab-09-01),功能包括向指定域名上传、下载指定文件、获取shell等,通过命令安装服务、更新配置、卸载服务、打印配置信息。

二、被感染主机及网络迹象

  • 1、主动发起域名请求:http://www.practicalmalwareanalysis.com
  • 2、创建服务名为:lab9-01 的服务
  • 3、创建键值注册表:HM-SOFTWARE/MICROSOFT/XPS <br>

三、详细分析

(一) 壳信息

通过PEID、ExeInfoPe查壳发现程序未加壳,图一展示了PEID查壳结果:

 

如图二所示显示了ExeInfoPe的查壳结果,显示均无加壳:

(二) 功能分析

1. 通过工具strings获取程序包含的字符串如图三所示:

 

从字符串查询结果来看总结可疑字符串列表如下:

SOFTWARE\Microsoft \XPS
HTTP/1.0
GET
疑似后门远程命令
NOTHING
CMD
DOWNLOAD
UPLOAD
SLEEP
cmd.exe
>> NUL
/c del
ups
http://www.practicalmalwareanalysis.com 可能是连接用到的域名
Manager Service
疑似后门指令
-cc
-re
-in

以上是通过查看字符串,对字符串的作用产生的猜测。

2. 动态静态结合分析

通过ida反编译程序可发现主程序有两个跳转如图四所示。
1、程序运行采用默认参数
2、程序多参数运行

1、程序运行采用默认参数

功能描述:当程序采用默认参数运行时首先通过sub_401000判断注册表中有无Configuration值。有的话执行sub_402360();后门主函数。没有的话则执行sub_402410();函数删除程序自身。

 

通过图四可知当命令行参数为默认时(默认为一个即当前文件执行路径)程序运行到 0x00402B03 地址处执行 call sub_401000函数 程序逻辑如下图五所示:


call sub_401000函数用于获取注册表 HM-SOFTWARE\Microsoft \XPS下Configuration的值。如下图六所示:

当无此注册表时HM-SOFTWARE\Microsoft \XPS程序则执行sub_402410();删除自身如图八所示: 

动态调试sub_402410()详细参数图

当注册表包含HM-SOFTWARE\Microsoft \XPS-Configuration的值的时候将直接运行sub_402360();后门功能主函数。

如下图十所示为sub_402360();函数主要逻辑: 

其中sub_401280()为获取Configuration并且通过字符串拼接存储到指定位置,如下图十一所示:

通过查看注册表可发现Configuration中保存的值如下图十二所示保存的为URL以及端口信息。

通过动态调试可发现 sub_402020(&name)中的参数name即为注册表中的URL的值,如下图十示:

当跟踪进入sub_402020()函数后会发现此为后门功能选择的主要函数。其中包括命令如下:

1、SLEEP 程序暂停等待一段时间运行。
2、UPLOAD 调用函数sub_4019E0(name, v5, v6)往被控主机上上传文件等。
3、DOWNLOAD 调用sub_401870(name, v8, lpFileName) 函数往控制端传输文件等。
4、CMD 获取一个cmd shell
5、NOTHING 什么也不执行

程序多参数运行

功能描述:程序多参数运行时。首先需要最后一个参数作为运行密码,才能使程序得以正常运行。当输入正确密码后程序需要另外的参数作为功能指令,其中包括:
1、-in 安装后门程序
2、-re 卸载服务
3、-c 可更新HM-SOFTWARE\Microsoft \XPS-Configuration中的值(需要更新的值在命令行中输入)
4、-cc 控制台打印当前注册表中配置信息

运行密码解密:

当图四中的跳转实现当运行指针跳转到地址0x00402B1D的时候程序首先获取到命令行参数的最后一个。然后通过函数sub_402510对最后一个命令行参数进行验证。sub_402510此函数过程中主要通过逐次对 61h、62h、63h、64h(anscii abcd)进行比对进行验证的。当验证不通过时调用0x0040241 地址处的sub_402410();函数删除自身。如下图十四所示:

如图十五所示为密码验证过程sub_402510()实现部分

因此当命令行参数至少为两个。格式即为(xxx .... abcd)也可以直接通过爆破将sub_402510()验证过程直接修改(修改跳转指令即可实现)

-in指令

当命令行参数为 (-in abcd时候)程序执行装载过程。即 sub_402600(&ServiceName);函数过程。程序首先利用argv[1]与应编码“-in”进行执行比较。然后通过sub_4025B0(&ServiceName)函数获得要创建的服务的名称。最终执行sub_402600(&ServiceName);创建以serverName命名的服务。并且将自身文件拷贝到系统目录。
如下图十六所示创建服务: 

如图十七所示本机查看服务

将自身文件拷贝进系统目录如下图十八所示: 

通过 sub_401070(aUps, aHttpWww_practi, a80, a60)函数写注册表。如下图十九

此函数sub_4015B0(&BinaryPathName)将拷贝进系统的恶意后门文件时间修改与本机器kernel32.dll的时间一致。如下图20所示修改为2008年: 

当命令行参数为四个时候,-in www.baidu.com abcd 如下图二十一所示可更新c&c信息:

-re卸载服务指令

-re指令调用 sub_402900(&v8); 完全卸载服务于 -in指令相反 如下图二十二所示:

-cc指令

-cc指令用于控制台打印配置信息如下图二十三所示:

-c指令

-c指令用于更新配置信息调用 sub_401070(argv[2], argv[3], argv[4], argv[5]);函数参数必须为七个参数完全更新。(参数信息分别为-默认路径,-c,标志字,url,port,per(疑似心跳间隔),密码)函数如下图二十四所示:

相关IOC

http://www.practicalmalwareanalysis.com

技术热点与总结

  1. 以服务形式启动
  2. 自删除并将自身拷贝到系统文件夹且将自身时间修改为和系统kernel32.dll一致
  3. 自带配置更新功能
  4. 文件上传与下载
  5. 此样本为恶意代码分析实战样本,网上公开报告很多,但每个人方法不同,理解程度不同。尽量多交流些不同的分析方法进而提炼出关于分析的方法论。

少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:cocos2d棋牌类APP协议加密算法详解分析
下一篇:常见的计算机病毒类型
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回