10.1、SSH客户端
Cobalt Strike
使用内置SSH
客户端控制 UNIX 目标。此 SSH
客户端从父 Beacon 接收任务并通过父Beacon
路由其输出。
右键单击目标,然后转到 Login -> ssh
以使用用户名和密码进行身份验证。转到 Login -> ssh (key)
使用密钥进行身份验证。
在 Beacon
控制台中,使用 ssh [pid] [arch] [target] [user] [password]
注入指定进程以运行 SSH
客户端并尝试登录指定目标。使用 ssh [target] [user] [password]
(不带 [pid]
和 [arch]
参数)派生一个临时进程来运行 SSH
客户端并尝试登录到指定的目标。
你也可以使用 ssh-key [pid] [arch] [target:port] [user] [/path/to/key.pem]
注入指定进程,运行SSH
客户端并尝试登录指定目标。使用 ssh-key [target:port] [user] [/path/to/key.pem](
不含[pid]
和[arch]
参数)派生一个临时进程,运行 SSH
客户端并尝试登录指定目标。
注:密钥文件必须是 PEM 格式。如果文件不是 PEM 格式,则复制一份文件,然后使用以下命令转换: /usr/bin/ssh-keygen -f [/path/to/copy] -e -m pem -p
这些命令会运行 Cobalt Strike
的 SSH
客户端。客户端会向父Beacon
报告任何连接或身份验证问题。如果连接成功,你会在 Cobalt Strike
的显示中看到一个新会话。这是一个 SSH
会话。右键单击该会话,然后选择Interact
打开 SSH
控制台。
输入 help
查看 SSH 会话支持的命令列表。输入 help
后跟命令名,可查看该命令的详细信息。
# 10.2、运行命令
shell
命令将运行你提供的命令和参数。在 Cobalt Strike
将命令放到后台之前,运行中的命令会阻塞SSH
会话长达 20 秒。Cobalt Strike
会报告这些长时间运行命令的输出结果。
使用 sudo [password] [command + arguments]
尝试通过sudo
运行命令。该别名要求目标sudo
接受 -S
标志。
cd
命令将更改 SSH
会话的当前工作目录。pwd
命令报告当前工作目录。
# 10.3、上传和下载文件
可使用以下命令:
download
- 该命令下载请求的文件。文件名中如果有空格,则无需加引号。Beacon
专为低速、缓慢的数据外泄而设计。在每次check-in
过程中,Beacon
会下载每个文件的固定片段。该数据块的大小取决于Beacon
当前的数据通道。HTTP
和HTTPS
通道以512KB
的块大小下载数据。downloads
- 用于查看当前Beacon
正在进行的文件下载列表。cancel
- 使用此命令,并在命令后加上文件名,以取消正在进行的下载。你可以在取消命令中使用通配符,一次取消多个文件的下载。upload
- 该命令将文件上传到主机。timestomp
- 上传文件时,有时需要更新文件的时间戳,使其与同一文件夹中的其他文件保持一致。这条命令就能实现这一目的。timestomp
命令会将一个文件的 “已修改”、“已访问 ”和 “已创建 ”时间与另一个文件相匹配。
在 Cobalt Strike
中进入View -> Downloads,查看团队目前已下载的文件。只有完成的下载才会显示在此选项卡中。·
下载的文件存储在团队服务器上。要将文件保存到文件系统中,请在此处选中它们,然后点击 Sync Files。Cobalt Strike
会将所选文件下载到你系统中指定的文件夹。
# 10.4、点对点C2
SSH
会话可以控制 TCP
beacon
。使用connect
命令可以控制等待连接的 TCP Beacon
。使用 unlink
命令断开 TCP Beacon
会话。
通过[session] -> [Listeners] -> Pivot -> Listener...
,设置与此 SSH
会话绑定的 pivot
监听器。这将允许这个被入侵的 UNIX
目标接收反向 TCP Beacon
会话。此选项要求 SSH
守护进程的 GatewayPorts
选项设置为 yes
或 ClientSpecified
。
# 10.5、SOCKS跳板和反向端口转发
socks - 使用此命令在团队服务器上创建一个通过ssh
会话转发流量的SOCKS
服务器。rportfwd
命令还将创建一个反向端口转发,用于路由通过 SSH
会话和你的Beacon
链的流量。
rportfwd
有一个注意事项:rportfwd
命令要求 SSH
守护程序绑定所有接口(0.0.0.0)。SSH
守护进程很可能会覆盖此配置并强制端口绑定到localhost
。你需要将 SSH
守护程序的 GatewayPorts
选项更改为yes
或 clientspecified
。