首页 > 其他分享 >通过命名管道检测Cobalt Strike——todo,待实际复现测试

通过命名管道检测Cobalt Strike——todo,待实际复现测试

时间:2022-09-29 17:56:18浏览次数:191  
标签:Cobalt pipe 命名 管道 https Strike todo

CobaltStrike 命名管道

检测 CobaltStrike 使用的命名管道的创建

已知的误报

  • 未知

参考

原始规则 

title: CobaltStrike Named Pipe
id: d5601f8c-b26f-4ab0-9035-69e11a8d4ad2
status: experimental
description: Detects the creation of a named pipe as used by CobaltStrike
references:
    - https://twitter.com/d4rksystem/status/1357010969264873472
    - https://labs.f-secure.com/blog/detecting-cobalt-strike-default-modules-via-named-pipe-analysis/
    - https://github.com/Neo23x0/sigma/issues/253
    - https://blog.cobaltstrike.com/2021/02/09/learn-pipe-fitting-for-all-of-your-offense-projects/
date: 2021/05/25
author: Florian Roth, Wojciech Lesicki
tags:
    - attack.defense_evasion
    - attack.privilege_escalation
    - attack.t1055
logsource:
   product: windows
   category: pipe_created
   definition: 'Note that you have to configure logging for Named Pipe Events in Sysmon config (Event ID 17 and Event ID 18). The basic configuration is in popular sysmon configuration (https://github.com/SwiftOnSecurity/sysmon-config), but it is worth verifying. You can also use other repo, e.g. https://github.com/Neo23x0/sysmon-config, https://github.com/olafhartong/sysmon-modular. How to test detection? You can always use Cobalt Strike, but also you can check powershell script from this site https://svch0st.medium.com/guide-to-named-pipes-and-hunting-for-cobalt-strike-pipes-dc46b2c5f575'
detection:
   selection_MSSE:
      PipeName|contains|all: 
         - '\MSSE-'
         - '-server'
   selection_postex:
      PipeName|startswith: '\postex_'
   selection_postex_ssh:
      PipeName|startswith: '\postex_ssh_'
   selection_status:
      PipeName|startswith: '\status_'
   selection_msagent:
      PipeName|startswith: '\msagent_'
   condition: 1 of selection*
falsepositives:
   - Unknown
level: critical

 

发表于2021 年 2 月 9 日 拉斐尔·马奇

命名管道是 Windows 中进程间通信的一种方法。它们主要用于本地进程相互通信。它们还可以促进不同主机上的两个进程之间的通信。此流量封装在 Microsoft SMB 协议中。如果您曾经听到有人将命名管道传输称为 SMB 通道,这就是原因。

Cobalt Strike 在它的几个特性中使用了命名管道。在这篇文章中,我将带您了解 Cobalt Strike 在哪里使用命名管道、默认管道名称是什么以及如何更改它。我还将分享一些技巧,以避免在您的 Cobalt Strike 攻击链中使用命名管道。

Cobalt Strike 在哪里使用命名管道?

Cobalt Strike 的默认 Artifact Kit EXE 和 DLL 使用命名管道以击败大约2014 年的防病毒二进制仿真的方式来清洗 shellcode 。它仍然是默认设置。当您看到\\.\pipe\MSSE-###-server时,这可能是默认的 Cobalt Strike Artifact Kit 二进制文件。您可以通过Artifact Kit更改此设置。查看Artifact Kit 中的src-common/bypass-pipe.c以查看实现。

Cobalt Strike 还使用命名管道在跳转 psexec_psh 模块中将其有效负载暂存以进行横向移动。这个管道名是\\.\pipe\status_##。您可以通过Malleable C2(设置 pipename_stager)更改管道。

Cobalt Strike 在其SMB Beacon通信中使用命名管道。该产品自2013 年以来一直具有此功能。它太酷了。您可以通过配置文件以及在配置 SMB 信标负载时更改管道名称。我还知道一些针对 SMB 信标功能内容的检测。SMB 信标使用 [length][data] 模式,这些 IOC 在流量开始时针对可预测的 [length] 值。smb_frame_header Malleable C2 选项对此进行了反击。默认管道是\\[target]\pipe\msagent_##。

Cobalt Strike 对其SSH 会话使用命名管道来链接到父 Beacon。就 Cobalt Strike 而言,Cobalt Strike 中的 SSH 客户端本质上是一个 SMB 信标。您可以通过在配置文件中设置 ssh_pipename 来更改管道名称(从 4.2 开始)。此管道(CS 4.2 及更高版本)的默认名称是\\.\pipe\postex_ssh_####。

Cobalt Strike 在其大部分开发后工作中使用命名管道。我们将命名管道用于注入显式进程(屏幕截图、键盘日志)的 post-ex 工具。我们的 fork&run 工具也主要使用命名管道将结果传回给 Beacon。F-Secure通过命名管道分析检测 Cobalt Strike 默认模块讨论了 Cobalt Strike 命名管道的这一方面。我们在 Cobalt Strike 4.2 中引入了更改这些管道名称的功能。在您的 Malleable C2 配置文件中设置 post-ex -> pipename 。在 Cobalt Strike 4.2 及更高版本中,这些管道的默认名称是\\.\pipe\postex_#### 。在 4.2 之前,默认名称是 random-ish。

Cobalt Strike 管件

有了以上内容,您现在已经掌握了 Cobalt Strike 在何处使用命名管道的知识。您也有权更改其默认名称。如果您正在寻找候选管道名,请使用Beacon 中的ls \\.\pipe快速查看已安装的 Windows 系统上的命名管道列表。这会给你很多选择。此外,当您设置合理的管道名称时,请注意每个 # 字符也被替换为随机字符 (0-9a-f)。而且,最后一个提示:您可以在 ssh_pipename 和 post-ex -> pipename 配置文件值中指定以逗号分隔的候选管道名称列表。当需要其中一个值时,Cobalt Strike 将从该列表中随机选择。

简化您的管道

Cobalt Strike 在其攻击链的多个部分使用命名管道。这些在很大程度上是可选的,您可以小心避免它们。例如,默认的 Artifact Kit 使用命名管道;但这不是 Artifact Kit 的要求。我们的其他 Artifact Kit 模板不使用命名管道。对于 Beacon 的横向移动和点对点链接TCP Beacon是一种选择。为了避免我们的 SSH 会话中的命名管道,请通过SOCKS 代理枢轴隧道连接外部 SSH 客户端。而且,虽然我们的许多 fork&run 后利用 DLL 使用命名管道来获取结果,但Beacon 对象文件是构建和运行后利用工具的另一种方式在灯塔之上。信标对象文件机制不使用命名管道。

结束的想法

这篇文章专注于命名管道名称,但这里的概念也适用于 Cobalt Strike 的其余部分。在进攻端,了解你的 IOC 以及如何改变或避免它们是成功的关键。我们使用 Cobalt Strike 的目标不是令人惊奇且不断变化的默认管道名称或 IOC。我们的目标是灵活性。我们当前和未来的工作是让您随着时间的推移更好地控制您的攻击链。要了解今天的选项,请阅读工具包、配置文件和脚本……哦,天哪!这篇博文总结了自定义 Cobalt Strike 的方法。我们在 2019 年末的Red Team Operations with Cobalt Strike也将这些想法融入到每场讲座中。

 

 

标签:Cobalt,pipe,命名,管道,https,Strike,todo
From: https://www.cnblogs.com/bonelee/p/16742455.html

相关文章

  • 搭建校园论坛之前所需了解的(关联抒发森林、comin、闭社、mastodon)
    在世纪初流行过不少的校内BBS,但在这个移动端的时代,各大BBS并没有适配的移动APP,因此用户量急剧减少但并不代表这一方面的交流需求没落了,大学生们仍喜欢拥有一个学校论坛去......
  • todo 1
    ......
  • idea TODO
    在注释中加入TODO,来标注为待开发。我们用来快速标注BUG,测试类,未完成内容,错误代码//TODO在这里输入标注/***TODO在这里输入标注**/   在IDEA左下......
  • 【2022.09.07】使用docker搭建一个mastodon
    前提准备一个公网ip的服务器(得要有80端口的转发,因此homelab很难实现)我这里使用的是腾讯云的1核2G的学生机域名,及其SSL证书宝塔安装因为嫌麻烦,所以采用了宝塔的方案,顺......
  • 如何让你的 Todo App 脱颖而出?
    如何让你的TodoApp脱颖而出?您可以开始使用的最常见的初学者项目之一是使用技术堆栈创建一个待办事项列表应用程序。但是,这里似乎没有什么可探索的。好吧,总有前进和探索......
  • MVN5️⃣属性 & 版本管理规范(todo
    前言:Maven是基于Java编写的属性:类比Java的属性(变量),可复用。版本管理规范:类比Java对象的命名规范,清晰易懂。1、属性自定义属性作用:等同于定义变量,方便统......
  • 以Docker Compose 建立Node.js 全端开发环境(四) — Todo List Api 串接
    以DockerCompose建立Node.js全端开发环境(四)—TodoListApi串接上个章节我们加入了Prisma作为与资料库沟通的中间层,这篇我们将使用它来协助我们开几只基础的Api......
  • VScode-TodoTree 待办事项插件的定制和使用
    VScode-TodoTree待办事项插件的定制和使用背景写代码过程中,突然发现一个Bug,但是又不想停下来手中的活,以免打断思路,怎么办?按代码编写会规范,都是建议在代码中加个TODO......
  • todo
    1)段错误分析https://blog.csdn.net/thesre/article/details/120070792 2)把共享库(SO)加载到指定的内存地址https://www.cnblogs.com/zhangyunlin/archive/2006/07/01/......
  • 20220816 springboot_idea_lombok_转Entity 生成的ToDominObject没有用有参构造方
    1问题:使用lombok,DDD设计思想整合mapStruct时,转Entity生成的ToDominObject没有用有参构造方法构造对象 2解决方案:2.1未解决_原因猜想因为生......