gh0st远控软件采用驱动级RESSDT过主动.doc_第1页
gh0st远控软件采用驱动级RESSDT过主动.doc_第2页
gh0st远控软件采用驱动级RESSDT过主动.doc_第3页
gh0st远控软件采用驱动级RESSDT过主动.doc_第4页
gh0st远控软件采用驱动级RESSDT过主动.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

gh0st远控软件采用驱动级RESSDT过主动gh0st远控软件采用驱动级RESSDT过主动2010-05-30 16:45,svchost参数启动,替换系统服务的方式工作的,工作方式较为先进,美中不足的部分是没有进行驱动级或用户级隐藏,当然这部分可以添加进去。编码利用了VC的编程环境。一、环境配置编译环境一定要配置好:DDK+SDK+VC6,DDK用来编译sys文件的,SDK+VC6是用来编译工程的,配置部分比较简单,网上有很多资料,这里不再详述,有兴趣的朋友也可以查看DDK和SDK的相关帮助。二、特征码定位简述杀毒软件查杀木马的原理基本是根据特征查杀的,被查杀的部分我们称之为特征码,所以我们可以利用特征码定位工具MyCLL定位出病毒的特征码位置,定位工具原理是将被扫描木马分块,利用分段填充的方式,匹配杀软的特征值,找到杀软查杀病毒的位置。定位出特征码,如何反向找到源码中的对应位置呢?请看下面分析,三、二进制文件与源码定位之map文件利用map文件是二进制和源码之间对应的一个映射文件。我们假设根据第三步我们定位出了病毒的特征码:病毒名称特征码位置内存地址svchost.dll 000038 AA_ 00000002 100044 AA svchost.dll 00005F98_ 00000002第一步设置VC编译环境生成Map文件。在VC中,点击菜单Project-Settings选项页(或按下Alt+F7),选择C/C+选项卡,并在最下面的Project Options里面输入:/Zd,然后要点击Link选项卡,选中Generate mapfile复选框,并在最下面的Project Options里面输入:/mapinfo:lines,表示生成MAP文件时,加入行信息。设置完成。第二步编译VC工程,设置活动工程编译即可,这个不用说明。这个步骤完成后,在release(或debug)目录,多了一个.map文件(比如svchost.map)。第三步打开map文件(用UE或文本编辑器打开都行),形式如下:(begin)Timestamp is 488fcef2(Wed Jul 30 10:16:18 2008)Preferred load address is 10000000-1-(为方便说明,wrw添加)Start Length Name Class 0001:00000000 00010a50H.text CODE 0001:00010a50 00000485 H.text$x CODE 0002:00000000 000004 c8H.idata DATA.0003:00000010 00000004 H.CRT$XIZ DATA 0003:00000020 00001a50H.data DATA 0003:00001a70 00000688 H.bss DATA 0004:00000000 000000 a8H.rsrc DATA 0004:000000 b0 00000cf0H.rsrc DATA-2-(为方便说明,wrw添加)Address Publics by Value Rva+Base Lib:Object 0001:00000000?0CAudioQAEXZ 10001000 fAudio.obj 0001:000000 d0?_GCAudioUAEPAXIZ 100010 d0 fi Audio.obj 0001:000000 d0?_ECAudioUAEPAXIZ 100010 d0 fi Audio.obj 0001:000000 f0?1CAudioUAEXZ 100010 f0 fAudio.obj 0001:000001 e0?getRecordBufferCAudioQAEPAEPAKZ 100011 e0 fAudio.obj 0001:00000240?playBufferCAudioQAE_NPAEKZ 10001240 fAudio.obj 0001:000002 c0?InitializeWaveInCAudioAAE_NXZ 100012 c0 fAudio.obj.0001:00003310?SendTokenCFileManagerAAEHEZ 10004310 fFileManager.obj 0001:00003320?UploadToRemoteCFileManagerAAE_NPAEZ 10004320 fFileManager.obj 0001:00003440?FixedUploadListCFileManagerAAE_NPBDZ 10004440 fFileManager.obj 0001:00003670?StopTransferCFileManagerAAEXXZ 10004670 fFileManager.obj 0001:00003730?CreateLocalRecvFileCFileManagerAAEXPAEZ 10004730 fFileManager.obj.-3-(为方便说明,wrw添加)Line numbers for.ReleaseFileManager.obj(E:vtmpgh0st3srcServersvchostcommonFileManager.cpp)segment.text 17 0001:00002630 20 0001:0000267 f21 0001:00002698 24 0001:000026 d0 25 0001:000026 f8 26 0001:0000273 c29 0001:000027 d0 33 0001:000027 ee 77 0001:000027 f8 36 0001:000027 fb 37 0001:00002803 77 0001:0000280 d.532 0001:0000340 f534 0001:00003414 537 0001:00003428 540 0001:00003440 546 0001:0000345 d547 0001:00003487 548 0001:00003490 549 0001:00003492 551 0001:0000349 e552 0001:000034 b8 553 0001:000034 cb 554 0001:000034 d4 558 0001:000034 de 560 0001:000034 e9 563 0001:000034 ee 564 0001:00003506.(end)我们看下,定位svchost.dll的第一个特征码内存地址为:100044 AA,在第2块中,我们可以找到RVA+BASE与之很接近的是0001:00003440?FixedUploadListCFileManagerAAE_NPBDZ 10004440 fFileManager.obj这样我们可以定位到FileManager.cpp中的FixedUploadList函数,是不是范围缩小了?下面我们再缩小代码行利用这个公式:特征码行偏移=特征码地址(Crash Address)-基地址(ImageBase Address)-0x1000看起来好像很难,其实很简单,我们将100044 AA去掉内存基址10000000,再减1000,因为PE很多从1000开始,可以得到代码偏移地址为34AA。到第3块中找对应的代码行。偏移地址34AA在(551 0001:0000349 e552 0001:000034 b8)中间,也就是551行和552行中间,我们到源程序中查找第551行:wsprintf(lpszFilter,%s%s*.*,lpPathName,lpszSlash);这样就定位出源代码了,要怎么修改就怎么修改它就可以了。四、实战免杀A、卡巴免杀首次编译后,nod32免费激活码,先做卡巴的免杀。卡巴杀sys文件和dll,当然也就杀包装它们的install.exe,最后卡巴还杀生成的sever,我这里说杀生成好的server不是和前面的特征码重叠的地方,而是杀配置信息。第一步、sys免杀sys重新编译后,增加了输入表的函数,同时系统不同,造成很多地方不同于原特征,顺利通过卡巴、金山、小红伞等杀软。第二步、svchost.dll免杀特征码定位MultiByteToWideChar和gh0st update两个位置。这里是通过第3步map文件得出的。卡巴怕加花指令,这个函数MultiByteToWideChar的调用上,可以在这个函数前面随便加几句无效语句就可以通过卡巴杀软。字符串调用gh0st update,这个是用于更新用的,如果不要在线更新,直接把这个语句所在代码块删除;嘿嘿,其实搜索工程替换这个字符串为其他的字符串就可以了_,这个方法同时可以过金山杀软。第三步、server免杀卡巴定位在最后的配置信息,采取跳转显然是不行的,采用加花的办法,在写入AAAAAA配置信息之前,随便写些东西,就可以做server免杀。卡巴免杀完成!B、Avast免杀最新的avast杀软再查杀1下,杀install.exe和svchost.dll(也就是杀生成的文件和其中的资源文件),接着做它的源码免杀。定位在特征字符串%02d/%02d/%02d和SYSTEMCurrentControlSetServices%s两个地方。解决方案:1、svchost.dll的特征码定位在键盘记录KeyboardManager.cpp文件中的SaveInfo(char*lpBuffer)函数。特征字符串%02d/%02d/%02d,也就是我们看到键盘记录的日期,修改之,修改的方法很多,将其改为%d/%d/%d%d:%d:%d,编译即可通过avast杀软,nod32许可证。2、install的特征码定位在SYSTEMCurrentControlSetServices%s,对应文件是install.cpp里的InstallService函数,修改大小写,编译即可通过免杀。五、添加垃圾代码的小方法垃圾代码要移动特征码所在的位置,不要跑到堆栈中了,这样的代码没有用。可以采取添加for循环,做计数,简单统计,采用局部变量,不改变后面的逻辑为宜。添加输出表的方法:有杀输出表的,可以在生成的svchost.dll上添加空函数,但是每次编译都要修改1次资源,其实我们在源码上添加如下语句:externC_declspec(dllexport)bool JustTempFun();/声明externC_declspec(dllexport)bool JustTempFun()/实现return false;编译后,输出表就被改变了,有的杀软就可做到代码免杀。六、gh0st自动生成6to4ex.dll的修改看到好多站友提问自动生成6to4ex.dll的问题,有热心站友也提出了自己的见解,我感觉有些人提出的解决方案不完全正确,有可能造成刚入手人误解,我根据自己的理解说明1下。gh0st服务端是通svchost-netsvcs启动的,所以程序要利用netsvcs服务,服务端也就是根据netsvcs生成的,故不能说服务端生成是随机的,相对于大多数系统来讲,基本是固定的,下面看分析。查看install.cpp里面的InstallService()方法,首先遍历HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost中的服务项,查找到一个服务后,程序采取替换服务的方法,将原服务删除,然后生成对应服务项+ex.dll的文件替换原服务,6to4服务一般排在第一位,6to4服务是一种自动构造隧道的方式,作用在于只需要一个全球惟一的IPv4地址便可使得整个站点获得IPv6的连接,这个服务对一般人来讲,基本闲置,所以我们的程序就把6to4服务给替换掉,同时在windowssystem32目录下生成6to4ex.dll,以后启动就是6to4ex了,如果把这个服务跳过去,就依次向下生成Ias、Iprip等服务啦,如果netsvcs项没有可以替换的服务,则程序将自己添加1个服务,名称就是由AddsvchostService()方法产生的netsvcs_0x%d。这样说不知道关心服务名称的站友明白了不?这个不能说是技术问题,但是小技巧问题可以从这里产生,我不知道其他人的360是怎么过的,但是我觉得可以提示1下的是,如果是360默认系统安全的服务,它肯定不会报不安全,替换闲置的系统安全的服务则通过360的效果要好的多。gh0st免杀Unixshell作者:admin日期:2009-03-08字体大小:小中大gh0st3.6有源码,所以我们可以在源码的基础上做木马的免杀,个人感觉卡巴的免杀最好做。先抛一砖头,有兴趣的朋友可以接着做,也可以和本人交流。编译环境一定要配置好:DDK+SDK+VC6,DDK用来编译sys文件的,SDK+VC6是用来编译工程的,具体为什么以及如何配置可以查看网上有关资料,也可以查看DDK和SDK帮助。首次编译后,先做卡巴的免杀。卡巴杀sys文件和dll,当然也就杀包装它们的install.exe,最后卡巴还杀生成的sever,我这里说杀生成好的server不是和前面的特征码重叠的地方,而是杀配置信息。sys免杀sys重新编译后,增加了输入表的函数(原因未知,有兴趣的朋友可以比较1下),顺利通过卡巴、金山、小红伞等杀软。svchost.dll免杀1、MultiByteToWideChar这个函数的调用上,卡巴就怕花,可以在这个函数前面随便加几句无效语句就可以。2、字符串调用gh0st update,这个是用于更新用的,如果不要在线更新,直接把这个语句所在代码块删除;嘿嘿,其实搜索工程替换这个字符串为其他的字符串就可以了_,这个方法同样可以过金山,谁让我们有源码呢。server免杀卡巴定位在最后的配置信息,采取跳转显然是不行的,采用加花的办法,在写入AAAAAA配置信息之前,随便写些东西,就可以做server免杀。修改生成的dll在源程序里查找%s%sEx字符串,这个位置就是生成6to4的地方了,可以改成你想生成的任何的东西。纯粹想交流,大家可以在这里跟贴,一起讨论。macfee杀svchost.dll的输出表(ServiceMain)有改过的朋友嘛?为了便于路过者互相提高一下,我把3.6源代码附件上来,网上多的是,懒人就免搜了_其实先修改SYS文件.黑防有教程,改完后就过全部杀软了,我指的是SYS文件,DLL和EXE文件把基址改一下,就过N多杀软了.做了这几步,还有瑞星还查杀DLL文件,把DLL文件的大少优化下,加几个输出表.金山杀EXE文件,nod32激活码,把入口点改下就过了.麦咖啡还杀DLL文件的ServiceMain,把ServiceMain移动远点就过了.小红伞NOD还杀输入表,这2个不会改ServiceMain函数不能注解掉,如果注解掉后,你的木马在重启系统之前还能正常运行,一旦作为服务在后台运行,下次重启你的机器就很脆弱了。ServiceMain是svchost.dll的关键函数,这个函数本身对我们的gh0st是没有什么作用的,但是可以为系统的其他服务提供支持。小红伞变态到杀exe的子系统值,有没有方法?经测试,定位无误,将子系统外的其它数值全部填0,小红伞照杀,移动pe头也不能免杀!添加垃圾代码的小方法:垃圾代码要移动特征码所在的位置,不要跑到堆栈中了,这样的代码没有用。可以采取添加for循环,做计数,简单统计,采用局部变量,不改变后面的逻辑为宜。添加输出表的方法:有杀输出表的,可以在生成的svchost.dll上添加空函数,但是每次编译都要修改1次资源,其实我们在源码上添加如下语句:externC_declspec(dllexport)bool JustTempFun();/声明externC_declspec(dllexport)bool JustTempFun()/实现return false;编译后,输出表就被改变了,有的杀软就可做到代码免杀。gh0st红狼远控自定义过360主要原因还是经过为什么会出现那个什么6xxx的DLL文件.因为红狼的CoolDiyer大大已经说过.服务端的生成是随机的.但看来是不完全随机.是根据系统和什么垃圾来随机的吧.具体我也不清楚哈.嗯.OD载入了.我查个字符串给大家看看就明白了.这里.%s%sex.dll%s就是所谓的随机.这里我可以准确的告诉大家是6xxxex.dll 6xx其实就是%s变来的.只要修改%s就可以修改生成出来的是什么DLL了.嘻嘻.我修改成aaex.dll了.(不过大家注意ex.dll的ex是不要修改的好.因为修改这个会引起不上线.如果想修改后能上线.要连DLL里面的ex.dll也修改的.这里就不演示了)360看看.发现了.看.6to4ex.dll对比一下%sex.dll就是%s变成了6to4而已.gh0st自定义过360改源码的方法:install.cpp文件里面改wsprintf(strModulePath,%s%sex.dll,strSysDir,lpServiceName);这里wsprintf(strModulePath,%s%whm.clc,strSysDir,lpServiceName);就行了这个其实是作者的一个失误本意是随机选择服务安装但是这段函数其实并没有真正随机至使每次都从6to4这个服务开始一个简单的解决办法就是for循环里处理下添加一行代码.for(ptr=strSubKey;*ptr;ptr=strchr(ptr,0)+1)if(lstrcmp(ptr,6to4)=NULL)continue;/添加此行代码/MessageBox(0,ptr,调试中看看这是什么,0);/char temp500;.这样就跳过这个服务了:)还有更简单的下面这行代码就是个字符串相加ex.dll可以随便改wsprintf(strModulePath,%s%sex.dll,strSysDir,ptr);例如这样改wsprintf(strModulePath,%s%skill360.dll,strSysDir,ptr);或者这样改.后缀是什么其实也不重要wsprintf(strModulePath,%s%skill360.abc,strSysDir,ptr);%s%sex.dll第一个%s表示路径,第二个%s表示随机文件名,你就把第二个%s直接改为别人字母就行了,改后可以过了360和金山清理的查杀经测试Gh0st的SYS文件,是通用的2.5-3.5都可以用服务名称写360tray.exe最后描述信息填:360安全卫士实时保护模块。360是行为查杀。GH0ST源码里怎么加花?_asm你的花指令你的花指令你的花指令你的花指令ServiceMain函数特敏感.注解掉后,NOD32瑞星麦咖啡都过了.gh0st0免杀过Avast最新修改杀软更新真的好快,前2天还不杀呢,刚刚更新了avast杀软再查杀1下,竟然杀install.exe和svchost.dll(也就是杀生成的文件和其中的资源文件),接着做它的源码免杀。解决方案:1、svchost.dll的特征码定位在键盘记录KeyboardManager.cpp文件中的SaveInfo(char*lpBuffer)函数。特征字符串%02d/%02d/%02d,也就是我们看到键盘记录的日期,修改之,修改的方法很多,将其改为%d/%d/%d%d:%d:%d,编译即可通过avast杀软。2、install的特征码定位在SYSTEMCurrentControlSetServices%s,对应文件是install.cpp里的InstallService函数,修改大小写,编译即可通过免杀。没有办法上传附件,对应的代码看看吧,这2处特征码修改编译2进制文件也很简单。nod32一般查杀函数导出表(不知道是不是这样称呼的,就是用UE打开,可以看到一堆函数的地方),定位被查杀的函数名称,一般会有两个或多个,用loadlibrary装载函数所在的dll文件,然后将函数改个名称再调用,你会改函数名,剩下的应该不难!最后生成的文件不加壳能过NOD卡巴有个特点,它的特征码都是以代码为主,所以我们在改特征码时不一定要去改原来的特征码,也可以去修改特征以上的的代码,只要稍微调换一下,就可以起如同加花指令的效果。来源:gh0st3.6源码过卡巴2009文件特征码作者:admin日期:2009-03-08字体大小:小中大卡巴2009杀在了我宝贝gh0st 3.6的配置信息上了无奈之余花了一个通宵的时间研究了一下卡巴还是没变啊.对付卡巴只有对他的软肋下手,免杀卡巴用加花是永恒不变的哲理啊用改特征码的方法对付卡巴,无疑是正中卡巴的下怀.难改不说,你改了他还是能找到这里的,卡巴扫描的时候进行了简单的文件分析,卡巴2009更是把这种分析做到了极致.卡巴7.0和卡巴2009还是不一样的.我ghost3.6能过7.0,却过不了2009现在说说我的免杀经历:卡巴2009定位到了配置信息AAAAAA上了,特征码在第四个A上.于是,出于简单的修改方法,我把配置信息标识AAAAAA换成了BBBBBB,并且在BBBBBB前面加了好多垃圾信息来打乱特征码.但是还是被杀.我无语.于是我在网上搜了一下,都说在前面加几句垃圾信息就没事.但事实不是这样.2009不愧是2009啊.因为这两种方法不行,所以我怀疑卡巴可能是简单的运行了一下木马.分析一下木马的行为.于是,我将木马里面查找配置字符串改成了和配置信息不一样的字符.比如配置信息是AAAAAA,那我木马查找的字符串是AA AAAB这样的话,特征码不变.配置信息还是6个A.但是,奇怪的是,却免杀了.我再用一个方法,用动态变量来表示AAAAAA,我将两个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论