|
0xF0003C04的作用:
将用户态传入的整个代码体作为密钥种子对这个代码体进行类似于校验和的运算后得到4字节的解密KEY,然后使用此解密key将驱动自身携带的资源解密(仅仅是XOR),将解密结果返回给用户态。
关于解除DR0上的附加设备:
这种操作应该会影响系统正常的文件系统操作,但是因为实际操作时此驱动被打开和关闭的的间隔很短,所以应该不会有明显影响。
explorer.exe流程
1、释放资源中的pcihdd.sys并创建名为pcihdd的服务,启动服务 2、定位userinit.exe在硬盘中的位置。定位方法如下
1)通过FSCTL_GET_RETRIEVAL_POINTERS获取文件数据的分布信息
2)通过直接访问硬盘(\\\\.\\PhysicalHardDisk0)的的MDR和第一个分区的引导扇区得到分区参数(每簇扇区数),配合1)中得到的信息来定位文件在硬盘上的绝对偏移量。这里有个小BUG,扇区大小是使用固定的512字节而不是从引导扇区中获取
3)通过对比ReadFile读取的文件数据和自己定位后直接读取所得到的文件数据,确定定位是否正确
3、把整个代码体作为参数传递给pcihdd.sys,控制码0xF0003C04,并将pcihdd返回 的数据直接写入userinit.exe的第一簇
被修改后的userinit.exe
1)查询SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下的Shell键值 2)创建Shell进程 3)等待网络链接,当网络链接畅通后,则从http://yu.8s7.net/cert.cer下载列表 4)对于列表中的文件每个文件,创建一个新线程下载并执行,线程计数加一(INC) 5)等待所有线程结束后(线程计数为0)结束进程。
对于线程计数的操作并不是原子操作,理论上多CPU情况下有小的概率出问题。不过人家是写针对普通PC的病毒,多CPU不常见,也不需要稳定。
文中所指的病毒就是一般说的新AV终结者
上一页 [1] [2] |