20154312 曾林

0.写在前面

AV厂商检测恶意软件的方式主流的就三种:

  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测

我们要做的就是让我们的恶意软件没法被这三种方式找到,也就是免杀。具体的手段有:

  • 改变特征码

    • 如果你手里只有EXE
    • 有shellcode(像Meterpreter)
    • 有源代码
  • 改变行为

    • 通讯方式
    • 操作模式
  • 非常规方法

1.实践

1.0实验系统环境

靶机:

系统:Windows7 x64

杀软:360安全卫士 V11.4.0.2049

攻击机:

Kali 虚拟机

检测网站:

Viruscan

1.1MSF编码器

MSF编码器也就是上个实验玩的那个,所以我直接用上个实验的20154312_backdoor.exe去检测了。(改了个名字,因为含有数字的话Viruscan会提示含广告,可能就和什么WG123456一样?)



很显然,裸奔的后门非常的惨,19个杀软都检测到了它。(请记住这个没检测出后门的Baidu Antivirus

把这个后门编码十次之后还是一样的19个杀软检测到没有任何实质性的变化。这种老套路只要不是太蠢的杀软肯定都能识别(别问了,Baidu Antivirus还是没有检测出来)

1.2veil-evasion

是一个和Metasploit类似的免杀平台,Kali里没有,用sudo apt-get install安装以下就ok。



安装完成后,用use evasion命令进入Evil-Evasion



选择一个模板生成payload,选啥都可以,提供的模块还是挺多的。



拷贝到win10的过程中,被无情的拦截。



在那个时候还没有安装杀软的win7上还是一条好汉,回连是直接成功的



看看Viruscan的扫描结果怎么样吧



好在是比MSF进步了很多,只有8个引擎检测出来了有后门。(Baidu Antivirus总算是有所进步...)

试试看装了360之后能不能扫出来



嗯,国内第一大病毒杀软可不是吹的。

1.3shellcode

1.3.1Windows环境编译

在VS里编辑好直接编译就好



回连是没有任何问题的



还是一样用Viruscan和360扫描一下



比之前用Evil又好了很多,只有三个引擎报警。



360沦陷了...(我有个大胆的想法)

1.3.2Linux环境编译

这一块编译过程没截图,反正思路就是把shellcode放到C文件里面,然后i686-w64-xxx.c -o xxx.exe编译一下就ok。回连也是没有任何问题的。继续Viruscan+360扫描



一夜回到解放前,被11个引擎查杀了



360这边也不乐观,直接被找到了

1.4加壳

1.4.1UPX加壳

用下面的命令来加这个压缩壳

# upx 4312-1.exe -o 4312-1v3.exe

成功之后结果如下



来,继续viruscan检测一下



8个,emmmm比前面没有加壳好一点点。

在我拷贝到win10的过程中直接被杀了...

1.4.2Hyperion加壳

用下面命令来加这个加密壳

/root/veil-evasion/tools/hyperion/#wine hyperion.exe -v 4312-1.exe 4312-1v2.exe
记得先cd到Hyperion这个文件夹

加壳之后的结果



继续viruscan扫描一下



...你真的加壳了吗...

1.5shellcode变形

这一块就比较有意思了,看了学长学姐们的一些方法,我打算把shellcode去和一个固定16进制数做异或,因为是43的所以选了个0x43,用来得到异或结果的函数其实很简单。源代码就不在这放了,反正用函数就能得到异或的结果



异或的结果复制到word或者notepad++替换,,0x放回shellcode里面,然后在之前的后门程序里面重新异或一次0x43,可能会遇到strlen函数报错,因为本身是一个const char变成了unsigned charstrlen()会报错的。最简单的方法直接数就好了,341个16进制字符,直接把strlen(met)改成341就ok,编译一下。



Viruscan+360





近乎完美的通过。

伪装一下骗同学岂不是美滋滋

1.6实测于杀软共生

一个Windows直接编译的shellcode以及异或后的shellcode都是可以共生的。



2.报告

2.1总结

本次实验一共有如下版本

  版本名称 编译方式              viruscan  360
1. 4312 8 F
2. 4312-1 Kali下编译shellcode 11 F
3. 4312-2 Windows下编译shellcode 6 T
4. 4312-3 异或后的shellcode 1 T
5. 4312-1 v2 UPX加壳 8 F
6. 4312-1 v3 Hyperion加壳 12 F

总结就是啥都不干也比用Hyperion加壳好。

自给自足,自己用C去编一个shellcode是最好用的。

2.2基础问题回答

  • (1)杀软是如何检测出恶意代码的?
  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测
  • (2)免杀是做什么?

    防止被杀软检测出来

  • (3)免杀的基本方法有哪些?

    1.改变特征码

    2.加壳

2.3离实战还差哪些技术或步骤

IP地址转换技术

社会工程学(骗人)

20154312 曾林 Exp3 免杀原理与实践的更多相关文章

  1. 20155209 林虹宇 Exp3 免杀原理与实践

    Exp3 免杀原理与实践 使用msf生成后门程序的检测 将上周msf生成的后门文件放在virscan.org中进行扫描 结果很危险 使用msf编码一次进行扫描 使用msf编码10次进行扫描 结果同样很 ...

  2. 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  3. 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...

  4. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  5. 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  6. 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践 - 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  7. 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践

    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...

  8. 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

  9. 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

随机推荐

  1. 大规模Elasticsearch集群管理心得

    转载:http://elasticsearch.cn/article/110 ElasticSearch目前在互联网公司主要用于两种应用场景,其一是用于构建业务的搜索功能模块且多是垂直领域的搜索,数据 ...

  2. 【BZOJ2310】ParkII 插头DP

    [BZOJ2310]ParkII Description Hnoi2007-Day1有一道题目 Park:给你一个 m * n 的矩阵,每个矩阵内有个权值V(i,j) (可能为负数),要求找一条回路, ...

  3. iOS计算两个时间的时间差

    + (long)calculteHourL:(NSDate *)endDate startDate:(NSDate *)startDate { NSCalendar *cal = [NSCalenda ...

  4. Mongoose学习参考资料

    我们学习node操作mongodb数据库时,可能经常要用到MongoDB 数据库的模型工具Mongoose,下面是我整理的一些学习资料: 番外篇之——使用 Mongoose:https://githu ...

  5. Linux at 定时任务

    命令格式:at[参数][时间]  请注意系统时间是UTC 命令功能:在一个指定的时间执行一个指定任务,只能执行一次.假如该时间已过去,那么就放在第二天执行. /var/spool/mail/这里是任务 ...

  6. 【巷子】---Mock---基本使用

    一.mock解决的问题 开发时,后端还没完成数据输出,前端只好写静态模拟数据.数据太长了,将数据写在js文件里,完成后挨个改url.某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼.想要尽可能还原真 ...

  7. 2.2RNN

    RNN RNN无法回忆起长久的记忆 LSTM (long short Term memory长短期记忆)解决梯度消失或弥散vanishing 和梯度爆炸explosion  0.9*n-->0 ...

  8. 实现 TensorFlow 架构的规模性和灵活性

    TensorFlow https://mp.weixin.qq.com/s/tEyX596WXTzsABXaeTesug

  9. Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS

    Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS - buk ...

  10. complexity_action

    大话数据结构 /* 顺序存储的结构 */ #define MAXSIZE 20 //存储空间初始分配量 typedef int ElemType; //ElemType类型根据实际情况而定,这里假设为 ...