打造个性化免杀版防火墙、杀毒软件
东毒君 2005.7.16
前言:
众所周知,现在越来越多的病毒爱好者为了展示个人能力或一些不可告人的秘密而制作一系列的病毒程式;不过,由于国内大部分用户对网络安全有了更多的了解,都会在自己系统中安装使用防火墙或杀毒软件来保护自己的系统网络安全!因此,这类安全软件的存在成了这些病毒的“拌脚石“。如何扫除这些“拌脚石”也就成了他们所追求的另一种境界:“让病毒程式在系统中如入无人之境”!
常见的病毒保护技术:
加壳压缩或加密(主要是采用网络中流行的加壳程序);
修改病毒程式中的特征码(躲避杀毒软件中的特征码扫描);
在病毒程式激发其功能模块时先检测系统中的安全软件,如存在,则进行清除;
采用内核式、服务级编程方式,使得大部分杀毒软件能查无法清除,此类病毒技术性较强,随着Rootkit源码的公开,该方式也迅速传播…
… … …
这里讨论病毒保护方式3中的防护方法“打造个性化免杀版安全软件”
1、避开“进程扫描式”追杀;
要避开这种方式的追杀只需要修改主程序文件名就可以避开病毒所采用的“进程扫描式”追杀;
2、避开FindWindow()\FindWindowExA()函数的追捕;
hwnd = FindWindow("TApplication", vbNullString) ;查找特征窗口类名
hwnd = FindWindow(vbNullString, "Pfw") ;查找特征窗口标题
该方式主要是防止此类函数扫描窗口名或类名以此终止安全软件的运行;使用OllyDbg 或 SoftICE 载入需要打造的防火墙程序PFW.ExE ,设置断点USER32.CreateWindowExA()
部分代码:
004EA2B8 /$ 55 push ebp
004EA2B9 |. 8BEC mov ebp,esp
004EA2BB |. 53 push ebx
004EA2BC |. 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
004EA2BF |. 53 push ebx ; /lParam
004EA2C0 |. 8B5D 0C mov ebx,dword ptr ss:[ebp+C] ; |
004EA2C3 |. 53 push ebx ; |hInst
004EA2C4 |. 8B5D 10 mov ebx,dword ptr ss:[ebp+10] ; |
004EA2C7 |. 53 push ebx ; |hMenu
004EA2C8 |. 8B5D 14 mov ebx,dword ptr ss:[ebp+14] ; |
004EA2CB |. 53 push ebx ; |hParent
004EA2CC |. 8B5D 18 mov ebx,dword ptr ss:[ebp+18] ; |
004EA2CF |. 53 push ebx ; |Height
004EA2D0 |. 8B5D 1C mov ebx,dword ptr ss:[ebp+1C] ; |
004EA2D3 |. 53 push ebx ; |Width
004EA2D4 |. 8B5D 20 mov ebx,dword ptr ss:[ebp+20] ; |
004EA2D7 |. 53 push ebx ; |Y
004EA2D8 |. 8B5D 24 mov ebx,dword ptr ss:[ebp+24] ; |
004EA2DB |. 53 push ebx ; |X
004EA2DC |. 51 push ecx ; |Style
004EA2DD |. 52 push edx ; |WindowName ;窗口标题
004EA2DE |. 50 push eax ; |Class ;程序类名
004EA2DF |. 6A 00 push 0 ; |ExtStyle = 0
004EA2E1 |. E8 7C010>call ; \CreateWindowExA
004EA2E6 |. 5B pop ebx
004EA2E7 |. 5D pop ebp
004EA2E8 \. C2 2000 retn 20
堆栈数据:
0012FD6C 00000000 |ExtStyle = 0
0012FD70 004ACEAC |Class = "TApplication" ; 只需修改这里有类名为:skyxnet
0012FD74 00F61B28 |WindowName = "Pfw" ; 这里可以不用修改,因为修改了也没有作用... 嘿嘿...
0012FD78 84CA0000
|Style = WS_POPUP|WS_MINIMIZEBOX|WS_CLIPSIBLINGS|WS_SYSMENU|WS_CAPT>
0012FD7C 00000200 |X = 200 (512.)
0012FD80 00000180 |Y = 180 (384.)
0012FD84 00000000 |Width = 0
0012FD88 00000000 |Height = 0
0012FD8C 00000000 |hParent = NULL
0012FD90 00000000 |hMenu = NULL
0012FD94 00400000 |hInst = 00400000
0012FD98 00000000 \lParam = NULL
修改操作:
右键功能:"进数据窗口",然后在Hex dump 窗口中选择右键功能: " 二进制\\编辑(或快捷键Ctrl+E)" 修改类名字符串!
接下来,我们用VC++或其他资源编辑器打开 String Table 修改ID为10001的值:天网防火墙个人版 (将其修改为其他字符,这里改为免.杀.版..东毒君) ,保存。
最后使用Spy++ 查看成果:Window Caption: 免.杀.版..东毒君 Class Name: skyXnet
总结:
本例只是处理了主流个人版天网防火墙,同样道理我们可以继续打造修改其他的杀毒软件… … 其实这并不算什么较新技术,不过,只要是经常在网络上走动,或常使用网络通信工具如QQ、MSN之类的,就难免会感染病毒,既然病毒程式采用多样化的保护方式来达到其入侵的目的,我们也可以借鉴逆向工程思维处理我们的安全程式,使其具有免疫功能。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课