zoukankan      html  css  js  c++  java
  • 纪念在乙方安全公司的2年_关于杀毒软件和远控的斗争

      乙方安全公司工作主要还是往外卖一些安全产品。比如做数据取证的,入侵检测的,或者往外卖硬件的IDS IPS没有实力的就买别家的产品自己贴牌,深深感受到乙方公司关系取得订单和销售的重要。我之前的公司还是做取数据的比较多。既然要拿数据一套好用的远控是必不可少的。在乙方公司的这段时间感谢小鱼。相互交流学到了很多东西,不管是技术上还是精神上。也得到了很多鼓励。

         如果要取境外的数据的话。远控从结构上要考虑这三点。

         1  多协议穿墙。这方面就是Plug X 做的是比较好的,好像再没有看到比较出彩的。也可能是Plug X 卖的也太多了所以广为人知了。

         比方说DNS HTTP  ICMP  TCP UDP多协议封包穿墙。但是实战的时候内网渗透受网关限制的情况比较多。

         a网关有发包数量的限制,一旦超越了这个限制,便不再接受数据包的向外传输

         b内网相关的隔离,只有.3的机器允许外连出网,但是你的那个是.5的机器。但是多协议穿墙这个在做境外高端客户的时候是无法绕过的。

         2  免杀

         这里说的免杀就不是A1pass讲的那种用ccl之类的工具去定位特征码然后修改PE特征去躲杀软,而是要从根本上就要解决掉免杀问题。

         AVG Avast 小红伞 趋势 麦咖啡 nod32 Norton 卡巴斯基 熊猫卫士  安博士  基本当地地区可能出现的杀毒软件在发出去之前都要过一遍。

         大体上来说现在远控为了免杀分两种

          a dll+内存加载的形式  (这种形式就好在dll编写起来比较轻松) 然后自己写一个shellcode的内存pe loader直接把dll转成shellcode 然后alloc一块内存eip指过去就好了

           转换成shellcode之后的dll文件大体就是这样的布局。

            //-----------------------------------------------------
            //|---shellcode---|---TShellData---|---dll文件---|
            //-----------------------------------------------------

          我还是习惯用C来写shellcode,会在shellcode尾部附着一个结构,用来解决全局变量的问题。当然Delphi真心更适合写shellcode。

          b  纯shellcode的远控。这段时间抽时间又改了一版出来  shellcode的好处就是可以编码加密,免杀性好,如果没忘记ben29a病毒时代多态BPE32的话,用多态引擎处理下shellcode更是好选择。支持xp_win8.1   (x32 x64) 上图留念一下。

                 

      

    x32 xp-win8.1

      x64  win7-win8.1

      

    生成的shellcode可以直接使用多态引擎处理。 在这么浮躁的年代,谁还会去认真的抠机器指令 模拟二进制执行 虚拟机这些出力不叫好的东西呢。

    3  启动项

              较于国外的杀毒软件,国内得益于360以及相关的互联网公司抢用户免费安全的产品大行其道的情况下,使得国内的很多杀软在杀毒技术方面积累基本都是速成的

              主防(匹配危险动作)+hash云查+严防死守启动项。拿360来说,要说技术做的好在哪里,就在严防死守启动项,和积累了多年的白库和不断更新的主防拦截点和规则。 就360主防来说靠着hookport 在 sub esp,ecx; shr ecx ,2(没有重启之前是int 4)  这两条指令下的主防钩子截获到用户态函数调用,并把控制权倒手给selfprotection来进行规则匹配。再配合上严防死守启动项和大量的白库(hash匹配,搜索技术),即使没有一个积累的多年的强悍查杀引擎,也能做的比较不错了。因此来说对于境外,启动项反而是容易一些的。国内环境启动项的话就得斟酌再三了。

            你如果真的就是为了取数据的话,还是老老实实呆在ring3比较好。这是我在乙方公司做过bootkit之后的感觉。

            聊聊bootkit吧。市面上的bootkit大体就是把自身的16位汇编代码写入到rom  (bios rom  pci卡的rom)或者是硬盘的MBR VBR等处。在系统引导到16位代码执行的时机这个时候bootkit又分成了两种。

            a  依靠16位实模式下解析fat32 和 ntfs磁盘文件系统往指定目录下扔文件或者感染文件

            b  依靠16位实模式下干涉文件读取 int 13h 然后patch系统文件加载比方说tdl4 patch kdcom.dll的加载,实现在系统引导的时候加载上自己的驱动,然后挂回调ring0注入ring3

           bootkit启动项不足

           a  bios+小于2TB硬盘走的是MBR VBR的引导,UEFI+GPT的怎么办

           b 如果不写入rom 系统用安全盘引导重装之后远控就彻底不存在了,那么bootkit这种启动项相对于ring3的文件感染 等或者劫持文件的启动项意义何在

           c rom的写入可是不通用的。

           等等。

           各有各的短板,国外的话协议穿墙这块是重点,国内的话启动项严防死守,都要花心思才做的好。

             

  • 相关阅读:
    20145223《Java程序程序设计》课程总结
    20145223《Java程序程序设计》第10周学习总结
    20145223《Java程序程序设计》实验报告5
    20145223《Java程序程序设计》第9周学习总结
    20145223 《Java程序程序设计》实验报告4
    20145223《Java程序程序设计》第8周学习总结
    20145223《Java程序设计》实验报告3
    20145223《Java程序程序设计》第7周学习总结
    20145223《Java程序程序设计》实验报告二
    node_promise
  • 原文地址:https://www.cnblogs.com/kmshhl/p/4116234.html
Copyright © 2011-2022 走看看