CobaltStrike逆向学习系列(14):CS功能分析-DotNet
这是[信安成长计划]的第 14 篇文章
0x00 目录
0x01 DotNet功能分析
0x02 DotNet功能执行
0x03 写在最后
在上两篇文章中,讲述了 CS 中的一种功能执行方式 RDI,这一次来分析一下另外一个非常重要的功能执行方式——DotNet
0x01 DotNet功能分析
CobaltStrike 提供了一种可以执行任意 DotNet 程序的方案,使用了名叫 invokeassembly 的 DLL,来加载和执行所传递的 DotNet 功能,提供这个方法的 Job 是 ExecuteAssemblyJob,它跟 RDI 不一样,它继承自 JobSimple 类

与 RDI 一样,它也有一些必须要处理的方法

在实际执行的时候,它会直接来运行 ExecuteAssemblyJob 的 spawn 方法

首先它会获取到 invokeassembly.dll,然后获取到它的 ReflectiveLoader 函数,接着就开始了任务的构建

随后会对其再进行一些设置的操作

在 fix 中,会有对 amsi 的一些处理

接下来有一个比较重要的操作,获取参数

在这里会将 this.file 和 this.args 都组合到一起

而这两个东西,正是我们要执行的 DotNet 和参数,所以说 CS 实际上是把我们要执行的内容当作参数来进行传输了,最后再交给 invokeassembly 来执行

而后就是任务的构建和发送了

0x02 DotNet功能执行
在执行到 DotNet 功能的时候,前面的处理操作先不管了,只看执行这里的
根据之前 RDI 的分析,也很容易能够区分出进程创建的位置,其中的操作基本都是一致的

直接就跳进函数的执行,这里面就包含了各种执行方式以及加载运行

之后执行权限就交给了 invokeassembly

这里再追下去的意义就不是很大了,主要就是调用接口来加载 DotNet 程序集,其中所用到的技术也是已经开源了的 Hosting CLR,可以参考下面的这篇文章来阅读
https://b4rtik.github.io/posts/execute-assembly-via-meterpreter-session/
https://github.com/b4rtik/metasploit-execute-assembly
0x03 写在最后
与 RDI 不同的是,我们并不需要在 DotNet 当中处理管道相关的内容,这些东西都由 beacon 和 invokeassembly 处理了,因为 DotNet 是由我们来传进去的,而 RDI 的功能它是不支持像 DotNet 这样直接调用的,而我们通过二开的方式来进行了使用,就需要直接按照所规定好的方式来进行处理才可以。
CobaltStrike逆向学习系列(14):CS功能分析-DotNet的更多相关文章
- CobaltStrike逆向学习系列(15):CS功能分析-BOF
这是[信安成长计划]的第 15 篇文章 0x00 目录 0x01 BOF功能分析 0x02 BOF功能执行 0x03 写在最后 其实在看过 RDI 与 DotNet 功能执行之后,BOF 的执行基本就 ...
- CobaltStrike逆向学习系列(1):CS 登陆通信流程分析
这是[信安成长计划]的第 1 篇文章 关注微信公众号[信安成长计划][SecSource] 0x00 目录 0x01 密码校验 0x02 aggressor.authenticate 0x03 agg ...
- CobaltStrike逆向学习系列(11):自实现 Beacon 检测工具
这是[信安成长计划]的第 11 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 检测原理 0x02 检测方案 0x03 存在的问题 0x04 解决方案 0x05 示例代码 0x06 ...
- CobaltStrike逆向学习系列(10):TeamServer 启动流程分析
这是[信安成长计划]的第 10 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 基本校验与解析 0x02 初始化 0x03 启动 Listeners 在之前的分析中,都是针对 Cob ...
- CobaltStrike逆向学习系列(2):Stageless Beacon 生成流程分析
这是[信安成长计划]的第 2 篇文章 关注微信公众号 [信安成长计划] 0x00 目录 0x01 Patch Beacon 0x02 Patch Loader 0x03 文件对比 0x04 流程图 C ...
- CobaltStrike逆向学习系列(12):RDI 任务发布流程分析
这是[信安成长计划]的第 12 篇文章 0x00 目录 0x01 任务构建 0x02 结果处理 0x03 功能 DLL 分析 之前的分析都是针对整个 CS 的框架来进行的,但是功能也是整个 C2 中相 ...
- CobaltStrike逆向学习系列(7):Controller 任务发布流程分析
这是[信安成长计划]的第 7 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Controller->TeamServer 0x02 TeamServer->Beacon ...
- CobaltStrike逆向学习系列(6):Beacon sleep_mask 分析
这是[信安成长计划]的第 6 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 C2Profile 分析 0x02 set userwx "true" 0x03 s ...
- CobaltStrike逆向学习系列(3):Beacon C2Profile 解析
这是[信安成长计划]的第 3 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Controller 端分析 0x02 Beacon 端分析 0x03 展示图 在上一篇文章中完成了 S ...
随机推荐
- Java不限制从键盘输入一个数组
Java不限制从键盘输入一个数组 在写算法的时候,需要从键盘输入一个数组,一直不会,最近看了几篇博客学会了,下面用二分查找举例: package com.基础; import java.util.Sc ...
- JUC并发编程与高性能内存队列disruptor实战-上
JUC并发实战 Synchonized与Lock 区别 Synchronized是Java的关键字,由JVM层面实现的,Lock是一个接口,有实现类,由JDK实现. Synchronized无法获取锁 ...
- GLPK下载安装
GLPK下载安装 下载 wget http://ftp.gnu.org/gnu/glpk/glpk-4.65.tar.gz tar -zxvf glpk-4.65.tar.gz 安装 如果你有管理员权 ...
- RT-Thread移植入门学习
一.简介 RT-Thread 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2).实时线程操作系统不仅仅是一个单一的实时操作系统内核,它也是一个完整的应用系统,包含了实时.嵌入式系 ...
- thinkpad s5 电源功率不足提示
相关答案 作者:路灯瓜 链接:https://www.zhihu.com/question/47551448/answer/122578101 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...
- vue学习12-表单属性绑定
1 <!DOCTYPE html> 2 <html lang='en'> 3 <head> 4 <meta charset='UTF-8'> 5 < ...
- java单例模式(饿汉式和懒汉式)
1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程 ...
- StringBuffer类(增删改查及长度可变原理)
1 package cn.itcast.p2.stringbuffer.demo; 2 3 public class StringBufferDemo { 4 5 public static void ...
- python32day
内容回顾 操作系统的历史 多道操作系统 分时操作系统 实时操作系统 进程 线程 并行和并发 同步和异步 阻塞和非阻塞 今日内容 进程的三状态图 进程的调度算法 给所有进程分配资源或者分配CPU使用权的 ...
- python21day
内容回顾 re模块的常用方法 findall(正则,待匹配字符串,flag):返回所有匹配项的列表 search:返回一个变量,通过group取到第一个匹配项 match:从头开始找第一个,其他同se ...