免杀笔记 ---> CS特性角度看Veh免杀

news2024/11/23 22:40:33

前一段时间在玩WBGlIl大佬以前发的一篇过卡巴的思路(虽然现在不过了),但是在研究的时候发现如果我们我们在没有CS的特性基础下直接看这篇文章,或者说你去魔改他的脚本是不太可能的,刚好就来普及一下这个CS的一些简单特性!(如有说错,请大佬们纠正)

1.Stagless已成标配

为什么说Stagless已成标配呢? 我们分别来准备两个🐎(一个stage 一个stagless)(无C2Profile)

我们分别来用Process Hacker去看看他的内存

如果我们是通过Stage的shellcode上线的话,他会用Stagler去拉取stagless形成反射dll!!! 

这个拉取的行为就是一个特征,所以我们一般都是不会用stage的shellcode而是通过采用Stageless的shellcode去进行上线!!!!

2.CS的命令执行

1.Fork && Run 

还记得我们平时去Shell whoami 吗,其实这是一个极度危险的操作(虽然目前360不会因为你shell whoami 就把你杀了)

我们通过Process Hacker 去看看他的过程(systeminfo)

新开一个cmd,然后通过Pipe在cmd运行这个命令,运行的结果再回传给我们自己的beacon,这个其实也算有点灾难,不过也要看你的进程链了!

2.Execute-Assembly && Process Hollowing

execute-assembly是CS的大名鼎鼎的内存加载,设计的初心是不想让我们的文件落地,防止静态被扫描,但是它的原理和Process Hollowing差不多,直接掏空一个进程,然后塞我们自己的程序进去(这就是一个非常危险的操作)

就算这里我采用白加黑的操作都是直接死掉了(远程线程注入)

而且execute-assembly只能对.net的程序进行加载,如果对方是有Defender的话,你还要考虑AMSI,所以就诞生了Inject-Assembly !!! 但是执行完之后内存会非常难看(很多RWX的内存)

3.BOF && Inline-Execute

那么有无办法拯救这只CS呢 ???  有! 就是通过BOF去进行执行 !!

我们把我们的whoami进行BOF化(其实这里白加黑的话直接shell也是不会杀的)

我们也可以通过Inline-execute去执行,和BOF的效果是一样的!!

其实它的原理就是在本程序通过起线程通过WindowsAPI去执行命令(在本程序),这样就不会有太多的对其他的进程进行操作(更加OPSEC) ,当然他的缺点就是如果命令执行奔溃了,那么你的Beacon也会掉,一会用WBG大佬的脚本来演示一下就知道了!!! 

3.VEH免杀脚本的优略

这里的脚本就是直接复制WBG大佬的脚本上线的了!!!

CS上线原理如下 (不配C2 Profile)

不管你是正常跑stageless 还是跑stage 的上线都是可以的,在跑起来ShellCode之后,首先他会去用VirtualAlloc进行内存申请,然后再将反射dll和loader的产物复制到这块内存(真正重要的也是这块内存

那么VEH的免杀原理是什么呢 ??? 大致是这样的

首先对VirtualAlloc,Sleep进行HOOK,当我们要跑shellcode进行VirtualAlloc的时候,VirtualAlloc的第三块地址被我们拿到,然后Sleep的时候我们在自实现的Sleep里面改这个第三块内存为RW,当我们Sleep结束,要跑起来的时候,执行了一块RW内存,抛0xc005VEH异常处理捕获,然后改这块内存为RWX,在执行完命令之后再去sleep又把他改成RW,循环往复,这样在杀软看起来是一块RW内存就不会去扫描。  

 :::就是这样的

那么当今来说他的劣势是什么呢???? 

1.BOF执行导致内存修改无效

我们上面说到了他是Hook了VirtualAlloc的,如果我们用BOF执行whoami呢 ? ??

我们知道他是在本地进行VirtualAlloc的对吧,问题就在这里了,一旦VirtualAlloc之后它的地址就不是我们CS的第三块内存的地址了!!! 这就是一个很致命的问题

我们来演示一下:

首先我们上线一个Beacon,这是没有问题的,这时候我们用Bof去执行一下whoami

也是成功执行,但是问题就来了,我们再去看它的内存地址

他重新分配了一块内存,然后后续的改内存属性都变成了在这块内存而不是在我们的cs真正发挥作用的第三块内存了,我们用ProcessHacker去看看

可以看见我们真正的那块需要被隐藏的地址还是RWX

但是我们刚才执行的命令那块内存确实被改成了RW,但是这块内存也已经被清空了!

可能作者当时写这篇文章的时候,是想着我们都用shell 执行的,并无考虑到我们的BOF存在。

所以我个人看法

  1. 改变Hook的时机,或者说一开始不用VirtualAlloc(虽然好像这个并没有什么作用)
  2. 在VirtualAlloc之后进行Unhook,这样后续不论是shell 还是BOF 执行命令我们都不会出现上面的修改内存无效!

2.可以配合加密

我们上面是对内存进行了动态的RWX ---> RW  --- > RWX 这样的修改,以前的杀软可能会不扫描这块内存,但是现在应该是会了(卡巴会的)! 所以我们可以在触发异常 , sleep 的时候分别对内存进行解密和加密,这样这块内存就 既是RW 又被加密了 ! 

通过这种手法,也是能轻松的免杀火绒的内存扫描的!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

胃癌TMEscore的前瞻性临床研究(TME)

目录 ①关于胃癌TME分型介绍 ②TMEscore计算-TMEscore包 ③关于TMEscore的前瞻性研究 ①关于胃癌TME分型介绍 Tumor Microenvironment Characterization in Gastric Cancer Identifies Prognostic and Immunotherapeutically Relevant Gene Signatures - PubMed (nih.gov) …

【Linux —— POSIX信号量 - 基于环形队列的生产消费模型】

Linux —— POSIX信号量 - 基于环形队列的生产消费模型 POSIX信号量信号量的概念POSIX信号量的类型信号量的操作 POSIX信号量函数基于环形队列的生产消费模型设计思路同步和安全性代码 POSIX信号量 信号量的概念 POSIX信号量是一种用于进程和线程之间同步的机制,主…

【网络】网络层协议——IP协议

目录 1.TCP和IP的关系 2.IP协议报文 2.1. 4位首部长度,16位总长度,8位协议 2.2. 8位生存时间 ,32位源IP地址和32位目的IP地址 3.IP地址的划分 3.1.IP地址的表现形式 3.2.旧版IP地址的划分 3.2.1.旧版IP地址的划分思路 3.2.2.分类划…

各种注意力评分函数的实现

预备知识 本文基于MXNet进行实现,需要对于注意力机制有一定初步了解。也需要对Python有足够了解。 另外这里稍加说明,在注意力机制中,本质上是“注意”的位置,即加权计算后进行Softmax回归的结果。在Nadaraya-Watson核回归中&am…

问界M7 Pro发布,又做回纯视觉?华为智驾系统这3年到底功夫下在哪?

北京时间8月26日下午14:00,华为又公布了一款新问界车型,时至今日,华为问界家族已有三大款,细分9个系列车型(从动力方面看,各自都分为增程和纯电两种版本)。 1个多小时的发布会上,除…

Zabbix和Prometheus

1.Zabbix 1.1 Zabbix监控获取数据的方式 zabbix-agent 适用于服务器,主机监控 SNMP协议 适用于网络设备(交换机、路由器、防火墙) IPMI协议 适用于监控硬件设备信息(温度、序列号) JMX协议 适用于Java应用监控 1.2 …

基于SSM+微信小程序的跑腿平台管理系统(跑腿3)(源码+sql脚本+视频导入教程+文档)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM微信小程序的跑腿平台管理系统实现了管理员、接单员及用户三个角色。 1、管理员实现了首页、个人中心、管理员管理、基础数据管理、接单详情、跑腿任务管理等。 2、接单员实现了…

C++ TinyWebServer项目总结(14. 多线程编程)

早期Linux不支持线程,直到1996年,Xavier Leroy等人开发出第一个基本符合POSIX标准的线程库LinuxThreads,但LinuxThreads效率低且问题多,自内核2.6开始,Linux才开始提供内核级的线程支持,并有两个组织致力于…

离线环境下的 Prometheus 生态部署攻略

一、前言 在当今高度数字化的世界中,监控系统的稳定性和可靠性对于确保业务连续性和性能优化至关重要。特别是在网络隔离或无互联网接入的局域网环境下,离线部署监控解决方案成为了一种必要且挑战性的任务。本文将深入探讨如何在离线环境中成功部署 Pro…

深圳保障房、商品房、小产权房子类型对比

摘要: 整理了我认知以内的深圳房子类型,有安居房,可售人才房,共有产权房、配售型保障房、商品房、统建楼、农民房的区别。如果数据存疑,可以多方对比论证,我也主要靠百度。 我发现我很多同事是非深户&#…

秋招突击——算法练习——8/26——图论——200-岛屿数量、994-腐烂的橘子、207-课程表、208-实现Trie

文章目录 引言正文200-岛屿数量个人实现 994、腐烂的橘子个人实现参考实现 207、课程表个人实现参考实现 208、实现Trie前缀树个人实现参考实现 总结 引言 正文 200-岛屿数量 题目链接 个人实现 我靠,这道题居然是腾讯一面的类似题,那道题是计算最…

《分析模式》2024中译本-前言-01(加红色标注)

写在前面 今天开始,我们逐渐发布一些《分析模式》2024中译本的译文。 红色字体标出的文字,表示我认为之前的译本可能会让读者产生误解的地方。 感兴趣的读者,可以对照之前译本以及原文,捉摸一下为什么要标红。 主要原因当然是…

基于SpringBoot+Vue+MySQL的小区物业管理系统

系统背景 在当今信息化高速发展的时代,小区物业管理正经历着从传统模式向智能化、高效化转型的深刻变革。这一转变的核心驱动力,正是小区物业管理系统的全面智能化升级。该系统不仅极大地提升了物业管理的效率与精确度,还深刻重塑了物业与业主…

数分基础(03-1)客户特征分析

文章目录 客户特征分析1. 数据集2. 思路与步骤2.1 特征工程2.2 识别方法2.3 可视化 3. 分析准备3.1 读取数据集3.2 识别不同客户群体3.2.1 使用K-Means聚类进行初步细分3.2.2 关于聚类方法(1)特征缩放1)平衡特征对模型的影响力,避…

通过ICMP判断网络故障

一、ICMP协议 Internet控制消息协议ICMP(Internet Control Message Protocol)是IP协议的辅助协议。 ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。 TypeCode描述备注00Echo Replyping…

C++从入门到起飞之——list使用 全方位剖析!

​ 🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、迭代器 2、push_back与emplace_back 3、list成员函数sort与库sort比较 4、merge 5、uniqu…

2024117读书笔记|《李煜词(果麦经典)》——一壶酒,一竿身,快活如侬有几人?一片芳心千万绪,人间没个安排处

2024117读书笔记|《李煜词(果麦经典)》——一壶酒,一竿身,快活如侬有几人?一片芳心千万绪,人间没个安排处 《李煜词(果麦经典)》李煜的词很美,插图也不错,很值…

基于粒子群优化算法的六自由度机械臂三维空间避障规划

摘要:本研究旨在解决机械臂在复杂环境中避障路径规划的问题。本文提出了一种利用粒子群优化算法(PSO)进行机械臂避障规划的方法,通过建立机械臂的运动模型,将避障问题转化为优化问题。PSO算法通过模拟群体中个体的社会…

ggml 简介

ggml是一个用 C 和 C 编写、专注于 Transformer 架构模型推理的机器学习库。该项目完全开源,处于活跃的开发阶段,开发社区也在不断壮大。ggml 和 PyTorch、TensorFlow 等机器学习库比较相似,但由于目前处于开发的早期阶段,一些底层…

8月28c++

c手动封装顺序表 #include <iostream>using namespace std; using datatype int;//类型重命名struct SeqList { private:datatype *data;//顺序表数组int size0;//数组大小int len0;//顺序表实际长度 public:void init(int s);//初始化函数bool empty();//判空函数bool …