用户
搜索
  • TA的每日心情
    开心
    昨天 07:40
  • 签到天数: 66 天

    连续签到: 66 天

    [LV.6]常住居民II

    i春秋-见习白帽

    Rank: 3Rank: 3

    36

    主题

    79

    帖子

    1704

    魔法币
    收听
    0
    粉丝
    4
    注册时间
    2020-10-2
    发表于 2021-4-25 19:41:34 210550
    本帖最后由 Johnson666 于 2021-4-25 19:45 编辑

    写在前面

    前面有写过一篇关于远程访问型木马——灰鸽子软件的使用https://bbs.ichunqiu.com/thread-60496-1-1.html,今天就来讲讲灰鸽子的免杀吧

    一、灰鸽子免杀

    谈到免杀的方法,首先就要先弄懂那些杀毒软件到底是如何杀的原理,这里就来讲一讲

    1.杀毒原理

    通常的话,当研究病毒查杀与防御的人收到一个截获或者上报上来的病毒时,先是分析这个病毒文件执行后的动作,即病毒文件执行后会做哪些操作。例如会生成什么样的新文件、会怎样去更改注册表、会怎样去注册服务、会打开什么端口等等。

    搞明白这些以后,下一步一般就会开始研究这个病毒的文件结构,然后找出其与众不同的地方,将其定义为特征码。而这个特征码定义的高明与否,就要看他定义的位置到底是怎么样的,例如他如果定义的是病毒文件更改注册表键值那部分代码的话,这显然不会太难,因为只要病毒文件更改键值,大部分的情况下这个文件里一定存在被更改键值的字符串,所以找到这段字符串的位置就可以定义特征码了。但是针对这种特征码制作免杀是非常容易的,其中有一种免杀方法就是把特征码所对应的内容是可识别的英文字母或词组,并且确定其不是相关函数的,将大小写修改一下就可以了。而如果从文件头找出一段特征码已经是非常不容易的事情了。除此之外,所定义的特征码还要有一个分支,即内存特征码。所谓内存特征码就是指木马文件运行后释放到内存时所存在的特征,它的原理大体与上面介绍的文件特征码一样。

    当特征码定义出来之后,就会被提交到另外的部门,然后进入病毒库,当用户更新病毒库后,以后杀毒软件在碰到符合要求的文件时就会将其杀掉,也就是说,杀毒软件只认特征码,不认文件。

    由此可见,他们寻找特征码的方式也就是这样的。那接下来就来谈谈几种常用的免杀方式吧。

    2.免杀方法

    常见的灰鸽子免杀方法有:加壳压缩、加花指令、修改特征码、修改程序入口点等等,另外,在互联网上也存在着免杀版本的灰鸽子,并且不断更新。因为大多做了免杀汇编处理,所以对其客户端的查杀比较困难,大多数杀毒软件也无法识别它为病毒。

    2.1.加花指令

    由于黑客网站公布的花指令过不了一段时间就会被杀软辨认出来,所以需要你自己去搜集一些不常用的花指令,另外目前还有几款软件可以自动帮你加花指令,例如花指令添加器等。

    常见的花指令有:
    1.Visual C++ 6.0:

    PUSH EBP   MOV EBP,ESP   PUSH -1   PUSH 0   PUSH 0   MOV EAX,DWORD PTR FS:[0]   PUSH EAX   MOV DWORD PTR FS:[0],ESP   SUB ESP,68   PUSH EBX   PUSH ESI   PUSH EDI   POP EAX   POP EAX   POP EAX   ADD ESP,68   POP EAX   MOV DWORD PTR FS:[0],EAX   POP EAX   POP EAX   POP EAX   POP EAX   MOV EBP,EAX   JMP 原入口
    1. Visual C++ 5.0
      PUSH EBP   MOV EBP,ESP   PUSH -1   push 515448   PUSH 6021A8   MOV EAX,DWORD PTR FS:[0]   PUSH EAX   MOV DWORD PTR FS:[0],ESP   ADD ESP,-6C   PUSH EBX   PUSH ESI   PUSH EDI   jmp 跳转到程序原来的入口点
      2.1.1.花指令相关知识

      其实花指令就像上面那样,就是一段垃圾代码和一些乱跳转,但这些并不影响程序的正常运行。加了花指令后,可以使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。

      2.1.2.制作过程详解

      1.配置一个不加壳的木马程序。
      2.用OllyDbg载入这个木马程序,OllyDbg会自动停在入口点,同时记下入口点的内存地址。
      3.向下拉滚动条,找到零区域(也就是可以插入代码的都是0的空白地方)。并记下零区域的起始内存地址。
      4.从这个零区域的起始地址开始一句一句的写入我们准备好的花指令代码。
      5.花指令写完后,在花指令的结束位置写入一条JMP指令,跳转到刚才OD载入时的入口点内存地址。
      6.保存修改结果后,最后用PEditor这款工具打开这个改过后的木马程序。在入口点处把原来的入口地址改成刚才记下的零区域的起始内存地址,并按应用更改,使更改生效。
      例子:

      004A2A73 0000     add byte ptr ds:[eax],al
      004A2A75 0000     add byte ptr ds:[eax],al
      004A2A77 55     push ebp
      004A2A78 8BEC     mov ebp,esp
      004A2A7A B9 04000000   mov ecx,4
      004A2A7F E9 CCF3FFFF   jmp Server.004A1E50
      004A2A84 0000     add byte ptr ds:[eax],al
      004A2A86 0000     add byte ptr ds:[eax],al
      004A2A88 0000     add byte ptr ds:[eax],al

      上面的add byte ptr ds:[eax],al就是所谓的零区域,我们看到改完后的头文件位于004A2A77,所以我们还要用PEditor改一下入口点,打开PEditor后载入文件,将入口点处的地址改为我们的新文件头地址004A2A77,保存后即可。
      入口点加1:
      打开PEditor后载入文件,将原来的入口点+1即可,例如我们的入口点为004A2A77,加1后应该是004A2A78,然后点击“应用更改”即可完成更改。

      2.2.修改特征码

      2.2.1.修改字符串大小写

      刚才上文中也有提到,这里再说一下
      这是利用了Windows系统对大小写不敏感,而杀毒软件对大小写非常敏感的这一特性来达到免杀的目的。

    它的修改方法就是:把特征码所对应的内容是可识别的英文字母或词组,并且确定其不是相关函数的,将大小写修改一下就可以了。

    它的使用条件是特征码所对应的内容必需是字符串,否则不能成功。

    2.2.2.ADD指令与SUB指令互换

    这是利用了“1+1等于2,而1-(-1)也等于2”的原理。那么ADD指令就是“加”的意思,SUB指令则是“减”的意思。我们这样互换了一下,最终结果还是一样的,但是杀毒软件就不认识了。

    它的修改方法是:用OllyDbg载入木马程序,然后假设它的特征码所对应的地址中有ADD指令或者SUB指令,那么就将ADD指令与SUB指令互换,然后后面的十六进制数要自己改成负的。更改完毕后保存为EXE文件即可。

    二、灰鸽子绕过杀毒软件

    现在很多人在使用免杀灰鸽子软件后,遇见过这样一个奇怪的情况,就是明明已经免杀的文件,在导入用户的配置信息以后就立即被某些杀毒软件的数据流功能所查杀。那么下面就说几个方法来解决它。

    1.修改配置信息

    既然是在导入配置信息后才被某些杀毒软件所查杀的,说明问题就出现在配置信息里面。

    首先运行修改工具Restorator(这个工具挺好用的,打造个人版的灰鸽子软件的时候需要用到的软件),点击工具栏中的“打开文件”来选择服务端程序。

    接着在资源树中选择“RC数据”中的“HACKER”选项,现在从右侧窗口可以看到一串字符串信息,这就是经过服务端加密处理的配置信息内容。
    现在点击工具栏中的“编辑模式”按钮,只需要对加密信息中原有的英文字母改成小写即可。至于要更改多少个英文字母,就完全是凭个人意愿了,既可以改一个也可以改多个。完成操作以后,点击“文件”中的“另存为”命令,将文件重命名为其他的名称即可。

    经过这样处理过的灰鸽子软件,就不会被某些杀毒软件查杀了。

    2.更改调整信息

    既然文件可以被查杀就说明其存在特征码,因此还可以按照传统的方法来查杀并修改特征码。运行特征码分析程序MYCCL,按照以前介绍的方法进行设置,只不过需要点击操作界面中的“正向”按钮,来改变程序默认的分析方式。最终MYCCL程序得到的特征码位置是00000100_00000002

    现在运行十六进制工具C32Asm,点击“文件”菜单的“打开十六进制文件”,选择被杀的灰鸽子程序。接着点击右键菜单中的“跳到”命令,然后在弹出的窗口中输入“00000100”。

    从搜索结果中我们可以看到,特征码的位置和文件的PE头位置很接近。于是试着通过更改PE头,结果不是被金山给查杀了,就是服务端运行出现错误。于是就想在特征码前后的位置进行更改,因为这些地方有很多代码都是00,这样更改不会引起服务端的错误。于是我就将特征码所在的上一行的最后一个字节由00改成90,保存后发现文件不被查杀。另外,从PE头向下数第八行的最后一个字节在修改后也可以起到免杀的效果。这种方法不但适合于对服务端的修改,也适合于服务端母体的修改。通过“文件”菜单的“另存为”命令,将修改后的文件命名为CServer.Dat。然后将生成的母体文件复制到“Cache”文件夹中,替换原来的CServer.dat即可,这样用户以后就可以直接配置免杀的服务端。


    特征码只是一种判断依据,还有其他的。感觉你开头说的有点绝对,好像只依靠它判断似的。
    使用道具 举报 回复
    纯白的小白 发表于 2021-4-27 23:38
    特征码只是一种判断依据,还有其他的。感觉你开头说的有点绝对,好像只依靠它判断似的。 ...

    谢谢师傅指点!
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册