一个感染型木马病毒分析(一)

一、 样本信息


样本名称:resvr.exe(病毒母体)

样本大小:70144 字节

病毒名称:Trojan.Win32.Crypmodadv.a

样本MD55E63F3294520B7C07EB4DA38A2BEA301

样本SHA1: B45BCE0FCE6A0C3BA88A1778FA66A576B7D50895




电脑中了该病毒的典型的特征是系统逻辑盘如U里的.doc.xls.jpg.rar格式的文件会被隐藏起来变成.exe格式的病毒文件。

被病毒母体resvr.exe感染的.doc.xls.jpg.rar格式的文件称作为衍生的病毒。


二、病毒母体resvr.exe行为预览


1.拷贝病毒母体文件resvr.exe自身到C:\Program Files\Common Files\Microsoft Shared目录下设置其属性为系统属性隐藏并运行创建C:\Program Files\Common Files\Microsoft Shared\resvr.exe进程。




2.在系统「开始」菜单添加程序开机启动项的快捷方式程序\启动\水印标签系统.lnk“即将C:\Program Files\Common Files\Microsoft Shared\resvr.exe设置为开机启动项。




3.遍历系统的磁盘中的文件进行文件遍历针对.doc.xls.jpg.rar格式的文件进行感染或者进行加密处理。


4.绑定监听端口40118,说明0.0.0.0这个IP它可以代表本机的所有IP地址。




5.在病毒母体resvr.exe所在的文件路径下创建X.bat文件,然后调用cmd.exe程序运行X.bat文件删除病毒文件自身。




三、病毒母体resvr.exe的衍生病毒行为具体分析


1. 获取系统文件目录"C:\Program Files\Common Files"拼接字符串得到文件路径"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"




2.尝试内存映射的方式打开文件路径"C:\\Program Files\\Common Files\\Microsoft Shared\\Index.dat下的Index.dat文件;如果Index.dat文件打开成功,判断该文件Index.dat的头2个字节的数据,如果头2字节的word型数据为0x450就进行进程本地提权关闭计算机;如果头2字节的dword数据为0x451则创建线程用来创建操作系统桌面”DISPLAY”窗口大小的对话框并将该对话框置顶。




Index.dat文件的头2个字节为0x450的情况,先本地进程提取然后关闭计算机。




Index.dat文件的头2个字节为0x451的情况,创建置顶的对话框。




3.在系统文件路径"C:\Documents and Settings\Administrator\「开始」菜单\程序\启动"COM方式创建快捷方式"C:\Documents and Settings\Administrator\「开始」菜单\程序\启动\水印标签系统.lnk"。




4.根据文件的路径判断当前运行的病毒进程是病毒母体"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"还是病毒母体resvr.exe感染其他文件如.xls等产生的衍生病毒如石林.xls.exe,还是运行在其他文件路径即"C:\\Program Files\\Common Files\\Microsoft Shared"下的病毒母体resvr.exe。对于运行的病毒的类型不同,对后面病毒感染文档和隐藏的方式就有所不同




5.对应4中,病毒运行环境和文件标记导致的病毒运行类型不同,在下面的病毒执行过程中会有3个运行情况。


情况1:当前运行的病毒进程是"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"路径下的病毒母体resvr.exe;


情况2:当前运行的病毒进程是"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"路径下的病毒母体resvr.exe;


情况3:当前运行的病毒进程是病毒母体resvr.exe感染.doc.xls.jpg.rar格式文件产生的衍生病毒。病毒运行情况的不同,对于病毒隐藏或者加密文件的方式也有所不同,该病毒对于它能感染的文件会有2中处理方式,加密文件和隐藏文件,地址[402004]的值不为-1


注:病毒文件的判断标记即地址[402004]的值是否为-1,这个标记在病毒文件中有,这个文件标记是判断病毒母体与衍生的病毒的依据。




6.对于情况1,判断互斥量"40S118T2013"是否存在,以防止病毒的2次感染;若互斥量"40S118T2013"不存在,就会对用户电脑里的系统逻辑盘下的文件进行遍历,对文件进行病毒的感染或者加密,然后创建socket网络连接,以用户的电脑为service服务端病毒作者client远程控制用户的电脑。



 

遍历系统的所有逻辑盘如CD等,进行文件的遍历,然后对文件进行感染




对用户系统的软盘"ABCDEFGHIJKLMNOPQRSTUVWXYZ"进行文件的遍历,然后对文件进行感染。




病毒会对用户磁盘里的文件进行感染,并且病毒感染文件的方式有2种,感染的标识是0xAABBCCDD。若当前病毒文件的感染标识是0xAABBCCDD,进行文件的加密处理;如果没有感染标记0xAABBCCDD则对.doc.xls.jpg.rar格式的文件进行感染处理。




对用户文件的不同的感染方式。




7.针对情况2,拷贝病毒母体自身文件resvr.exe到文件路径"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"并设置该病毒文件resvr.exe的属性为系统属性、隐藏属性。运行病毒文件"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"创建病毒进程esvr.exe。在当前病毒母体resvr.exe的文件目录下创建X.bat文件,调用cmd.exe程序运行X.bat文件删除该病毒母体resvr.exe文件自身。










8.针对情况3也就是被感染的衍生病毒的运行行为。

打开"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe"文件,根据返回的文件句柄判断病毒母体resvr.exe文件是否已经释放到文件路径C:\Program Files\Common Files\Microsoft Shared下。如果resvr.exe已经释放了,则病毒运行的时候仅仅释放出被隐藏的.doc.xls.jpg.rar格式的文件,然后 ShellExecuteA运行.doc.xls.jpg.rar格式的文件;如果没有释放resvr.exe则先释放病毒文件resvr.exe到路径C:\Program Files\Common Files\Microsoft Shared下,然后ShellExecuteA运行.doc.xls.jpg.rar格式的文件。






连接本地127.0.0.1网络监听套接字发送"7+数据"格式的命令控制用户的电脑即service端(请联系情况1的病毒行为)。




运行释放的病毒文件"C:\\Program Files\\Common Files\\Microsoft Shared\\resvr.exe",删除当前病毒进程的文件,结束当前病毒进程。




 

总体来讲,这不是一份合格的病毒分析报告,因为病毒分析报告没必要这么详细,分析的越仔细,看报告的人糊涂。仅仅个人的爱好而已,不将这个病毒彻底分析清楚又不甘心。为了自己的爱好,特此将该病毒的分析彻底分析清楚,整理成笔记。权当自娱其乐。










  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在 Python 中,可以使用类似于下面这样的代码来模拟病毒感染传播: ``` import random class Person: def __init__(self, is_infected): self.is_infected = is_infected self.is_vaccinated = False self.is_dead = False def infect(self): self.is_infected = True def vaccinate(self): self.is_vaccinated = True def kill(self): self.is_dead = True class Virus: def __init__(self, mortality_rate): self.mortality_rate = mortality_rate def infect(self, person): if person.is_infected: return if random.random() < self.mortality_rate: person.kill() else: person.infect() def simulate(num_people, vaccination_rate, mortality_rate): population = [Person(False) for _ in range(num_people)] virus = Virus(mortality_rate) for person in population: if random.random() < vaccination_rate: person.vaccinate() infected_count = len([p for p in population if p.is_infected]) while infected_count > 0: for person in population: if person.is_infected: for other_person in population: if other_person is not person: virus.infect(other_person) infected_count = len([p for p in population if p.is_infected]) simulate(100, 0.8, 0.3) ``` 这段代码定义了两个类:`Person` 和 `Virus`。`Person` 类用来模拟一个人,有三个属性:是否感染病毒、是否接受了疫苗、是否死亡。`Virus` 类用来模拟病毒,有一个属性:致死率。 其中 `simulate` 函数用来模拟病毒感染传播的过程。它接受三个参数:总人数、接种疫苗的比率、致死率。在函数内部,首先初始化一个人群,然后给这个人群中的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值