这是[信安成长计划]的第 13 篇文章

0x00 目录

0x01 任务号

0x02 功能执行

0x03 结果接收

在上一篇文章中已经讲明了 RDI 类型的任务在发布时候的流程,接下来就是执行了,文中不提任务接收与结果回传,这部分内容在之前也已经分析过了,继续使用 HashDump 来进行分析

0x01 任务号

按照上一次流程的分析,RDI 在构建的时候实际发布了两个任务,一个是 HashDump 的任务号,还有一个是通过 getJobType 获取到的

根据上一篇文章的流程 HashDump 所调用的任务号是 44,这里的 getJobType 值也是直接在 Job 类当中写死了 40

同时还有一点比较重要的就是,在第二个任务中所保存的,正是前面 Patch 到 HashDump 中的管道名

其实根据这些,也就大致能够推测出后面这个功能就是用来接收 RDI 功能执行结果的

0x02 功能执行

直接看功能执行函数,接收了两个参数,一个是功能数据,一个是数据大小

再回到 Controller 这边对比一下,刚开始任务号,然后就是处理过的功能 DLL,前四个字节是大小

所以,当前总大小应该是 0x14208,但是从参数传进来的大小并不是这样

所以跟到功能 DLL 的结尾处看一下,可以发现正是另外的一个任务,

这里总共有 0x65 个字节,合起来刚好是 0x1426D

再根据这边的情况可以看出来,会 while 循环来执行

然后通过两次 ntohl 的转换,也就得到了任务号和功能长度,然后就直接进执行函数了,这里就是 switch 找任务号然后执行了

所对应的函数如下

其实里面所实现的内容是非常多的,包含了他所支持的多种内存分配、注入执行等,这些内容全都是通过 C2Profile 的设置来决定到底走哪一个流程

比如说,内存申请使用 VirtualAllocEx 还是 NtMapViewOfSection

它所对应的是 0x34,也就是 52

根据相对应的函数走具体的实现 NtMapViewOfSection

VirtualAllocEx

对于实际的注入也是一样 CreateRemoteThread

RtlCreateUserThread

再或者 NtQueueApcThread 等等

在当前注入等完成以后,会有一个 rundll32 一直在运行,因为它一直在连接管道

0x03 结果接收

然后继续就回到了功能执行,来执行结果接收,解析等等都是一样的,直接跟进执行函数,可以很明显的看到与管道相关的内容

直接取到管道名

接着后续就是创建管道等等操作了

在后续再通过 PeekNamedPipe 获取管道信息,确保内容已经写入了

CobaltStrike逆向学习系列(13):RDI 任务执行流程分析的更多相关文章

  1. CobaltStrike逆向学习系列(10):TeamServer 启动流程分析

    这是[信安成长计划]的第 10 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 基本校验与解析 0x02 初始化 0x03 启动 Listeners 在之前的分析中,都是针对 Cob ...

  2. CobaltStrike逆向学习系列(4):Beacon 上线协议分析

    这是[信安成长计划]的第 4 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Beacon 发送 0x02 TeamServer 处理 0x03 流程图 0x04 参考文章 在上一篇 ...

  3. CobaltStrike逆向学习系列(1):CS 登陆通信流程分析

    这是[信安成长计划]的第 1 篇文章 关注微信公众号[信安成长计划][SecSource] 0x00 目录 0x01 密码校验 0x02 aggressor.authenticate 0x03 agg ...

  4. CobaltStrike逆向学习系列(5):Bypass BeaconEye

    这是[信安成长计划]的第 5 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 BeaconEye 检测原理 0x02 Bypass 1 0x03 Bypass 2 0x04 效果图 ...

  5. CobaltStrike逆向学习系列(12):RDI 任务发布流程分析

    这是[信安成长计划]的第 12 篇文章 0x00 目录 0x01 任务构建 0x02 结果处理 0x03 功能 DLL 分析 之前的分析都是针对整个 CS 的框架来进行的,但是功能也是整个 C2 中相 ...

  6. CobaltStrike逆向学习系列(15):CS功能分析-BOF

    这是[信安成长计划]的第 15 篇文章 0x00 目录 0x01 BOF功能分析 0x02 BOF功能执行 0x03 写在最后 其实在看过 RDI 与 DotNet 功能执行之后,BOF 的执行基本就 ...

  7. CobaltStrike逆向学习系列(14):CS功能分析-DotNet

    这是[信安成长计划]的第 14 篇文章 0x00 目录 0x01 DotNet功能分析 0x02 DotNet功能执行 0x03 写在最后 在上两篇文章中,讲述了 CS 中的一种功能执行方式 RDI, ...

  8. CobaltStrike逆向学习系列(2):Stageless Beacon 生成流程分析

    这是[信安成长计划]的第 2 篇文章 关注微信公众号 [信安成长计划] 0x00 目录 0x01 Patch Beacon 0x02 Patch Loader 0x03 文件对比 0x04 流程图 C ...

  9. CobaltStrike逆向学习系列(3):Beacon C2Profile 解析

    这是[信安成长计划]的第 3 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 Controller 端分析 0x02 Beacon 端分析 0x03 展示图 在上一篇文章中完成了 S ...

随机推荐

  1. uboot无法通过nfs加载ubuntu18.04中的文件(转)

    问题描述: i.mx6ull开发板,采用alientek官方维护的uboot,使用ubuntu18.04 lts作为nfs server,导致开发板uboot上nfs命令无法加载网络文件系统. 解决: ...

  2. Java集合-ArrayList源码分析

    目录 1.结构特性 2.构造函数 3.成员变量 4.常用的成员方法 5.底层数组扩容原理 6.序列化原理 7.集合元素排序 8.迭代器的实现 9.总结 1.结构特性 Java ArrayList类使用 ...

  3. centos6.6手动安装mysql5.5并配置主从同步

    0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave)   192.168.61.157 centos6.6 1.查看centos系统版本 [ ...

  4. LSM树以及在hbase中的应用

    转自:http://www.cnblogs.com/yanghuahui/p/3483754.html 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈希 ...

  5. 带你十天轻松搞定 Go 微服务系列(二)

    上篇文章开始,我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分(本文) 用户服务 产品服务 订单服务 支付服务 RPC 服务 ...

  6. 如何在Xamarin中快速集成Android版认证服务-手机号码篇

    Xamarin作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称AGC)也在逐步的支持Xamarin的SDK.认证服务也是支持Xam ...

  7. url地址如何定位到Servlet程序去访问

  8. IoC容器-Bean管理注解方式(创建对象)

    IoC操作Bean管理(基于注解方式) 1,什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值...) (2)使用注解,注解作用在类上面,方法上面,属性上面 ( ...

  9. IoC容器-Bean管理(bean生命周期)

    1,生命周期 即从对象创建到对象销毁的过程 2,bean生命周期 (1)通过构造器创建bean实例(无参数构造) (2)为bean的属性设置值和对其他bean的引用(调用set方法) (3)调用bea ...

  10. Elasticsearch使用系列-ES增删查改基本操作+ik分词

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...