Cobalt Strike|渗透初入门

Cobalt Strike & 渗透入门

CS运行配置

资源:

  • 阿里云ECS一台Ubuntu(2C 2G)
  • Cobalt Strike 4.2一份

安装Java环境

1
2
sudo apt update
sudo apt install openjdk-11-jre -y

配置Systemd服务

/etc/systemd/system/cobaltstrike.service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Cobalt Strike TeamServer
After=network.target

[Service]
Type=simple
WorkingDirectory=<工作目录>
ExecStart=<工作目录>/teamserver <ip> <password>
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

重载service内核,加载新服务配置文件

1
sudo systemctl daemon-reload

配置开机自启动

1
sudo systemctl enable cobaltstrike

立即启动服务

1
sudo systemctl start cobaltstrike

使用CS Client连接到服务器即可开始使用.

常用命令一览表

Beacon 命令

命令 说明 使用场景
beacon 启动或控制 beacon 反向 shell 用于控制目标系统,建立反向连接
beacon> help 显示 beacon 命令帮助信息 查看可用命令,了解 beacon 功能

会话管理

命令 说明 使用场景
sessions 列出所有活动的 session 查看当前建立的连接会话,选择控制的目标
session -i <ID> 切换到指定 ID 的 session 切换到目标系统,执行命令
getuid 获取当前用户的身份信息 查看当前用户权限
getsystem 提升权限(尝试获取 SYSTEM 权限) 提升权限以获得更高的控制
shell 启动一个交互式 shell 通过命令行与目标系统交互

文件操作

命令 说明 使用场景
upload <file> 上传文件到目标系统 将工具或恶意文件上传到目标
download <file> 从目标系统下载文件 下载目标系统中的文件,提取有用信息
cat <file> 查看目标系统文件内容 获取目标系统中的重要文件(如密码文件)
rm <file> 删除目标系统中的文件 删除痕迹,清理上传的恶意文件

网络操作

命令 说明 使用场景
portfwd 设置端口转发,将流量通过目标系统转发 用于绕过防火墙,访问目标内网
route 管理网络路由,进行横向渗透 在受控目标系统之间建立路由,进行网络传播
netstat 查看目标系统的网络连接 查看当前目标的网络状态,寻找潜在的攻击路径

权限提升

命令 说明 使用场景
getsystem 提升权限,尝试获得 SYSTEM 权限 使用提升权限技巧获得更高权限
mimikatz 执行 mimikatz 提取密码或凭证 提取目标系统内存中的凭证,进行横向渗透

攻击与渗透

命令 说明 使用场景
use exploit/<type> 使用特定的漏洞利用模块进行攻击 根据目标系统漏洞选择攻击模块进行渗透
attack 发起攻击,模拟目标的攻击场景 启动攻击流程,尝试获取控制目标
phishing 生成和发送钓鱼邮件 通过社交工程钓鱼攻击诱使目标执行恶意操作

持久化

命令 说明 使用场景
persistence 设置持久化,使恶意 payload 在目标系统中保持活跃 在目标系统上设置后门,确保长时间保持访问权限
beacon> kill 终止当前 beacon 会话 停止与目标系统的连接,断开控制

调试与操作

命令 说明 使用场景
exec <command> 在目标系统上执行命令 执行命令以获取信息或执行攻击
cd <directory> 更改工作目录 导航到目标系统中的其他目录
ps 查看目标系统上的进程 查找目标系统中运行的进程,识别潜在的防御软件

CS上线流程

1.完成前置准备工作,连接CS服务器

2.新建监听连接

3.生成木马(选择正确的监听器并生成可执行文件)

4.上传至目标机器并执行

5.机器上线

6.执行后渗透操作

大致渗透流程

1. 信息搜集 (Information Gathering)

信息搜集是渗透测试的第一步,也是最关键的一步。其目的是尽可能多地收集目标的公开信息,了解目标系统的架构、服务、人员信息、以及潜在的攻击面。信息搜集可以分为主动搜集和被动搜集。

  • 被动信息搜集

    :尽量不直接与目标系统交互,通过公开的资源收集信息。这包括:

    • DNS 查询:获取域名、子域名、IP 地址等信息,使用工具如 whoisnslookupdig 查询域名注册信息。
    • 搜索引擎:利用 Google Dorking 搜索敏感信息,如配置文件、暴露的数据库、管理页面等。
    • 社交工程:通过社交媒体、论坛等途径获取目标员工的工作信息、联系方式、密码提示等。
  • 主动信息搜集

    :直接对目标系统进行扫描,收集目标主机的服务信息。

    • 端口扫描:使用工具如 Nmap 扫描目标的开放端口,识别常见的服务和协议。
    • 服务版本识别:识别开放端口对应的服务类型及版本,帮助后续漏洞分析。
    • Banner Grabbing:通过读取目标系统的服务 banner,获得更多关于目标应用的细节。
    • 操作系统识别:通过扫描目标机器的响应特征,推断出其操作系统信息。

2. 漏洞扫描与分析 (Vulnerability Scanning & Analysis)

在收集到足够的目标信息后,下一步是寻找目标系统中潜在的漏洞。这一步骤通常包括自动化扫描、漏洞评估以及手动分析。

  • 自动化扫描:使用漏洞扫描工具(如 NessusOpenVASNikto)对目标进行全面的扫描。这些工具会检查常见的漏洞、配置错误、已知的 CVE 漏洞等。
  • 手动分析:尽管自动化扫描可以发现大量已知的漏洞,但一些特定的漏洞(例如复杂的逻辑漏洞或特定配置问题)仍然需要渗透测试者手动验证。此时可以结合漏洞数据库(如 CVE)、攻击框架(如 Metasploit)等工具进行进一步分析。
  • 漏洞评估:根据扫描结果和手动分析的结果,渗透测试者需要评估每个漏洞的严重性,并根据漏洞的危害性、可利用性以及修复难度为其排序。

3. 漏洞利用 (Exploitation)

漏洞利用是渗透测试的核心部分,测试者将利用扫描阶段发现的漏洞,尝试获取目标系统的访问权限。漏洞利用有时会从某个具体的服务漏洞入手,有时则需要多重漏洞的结合。

  • 利用已知漏洞:比如,利用 EternalBlue(MS17-010)漏洞攻击 Windows 系统,获取远程控制权限。
  • Web 漏洞利用:如果目标存在 SQL 注入、XSS、RCE 等漏洞,测试者可能通过攻击 Web 应用漏洞直接获取后台权限。
  • 社交工程攻击:如通过钓鱼邮件诱使目标用户点击恶意链接或打开恶意附件,从而植入木马、获取系统控制。
  • 利用工具:利用 MetasploitCobalt StrikeBeEF 等攻击框架执行漏洞利用,获取初步访问权限。

4. 权限提升 (Privilege Escalation)

当渗透测试者获得低权限访问(如普通用户权限)后,通常需要提升权限以获取更高的系统控制级别。权限提升是渗透测试中至关重要的一步,因为管理员权限通常是渗透者完全控制目标系统的关键。

  • 本地提权:如果目标系统配置不当(如文件权限设置错误、漏洞配置等),渗透测试者可以利用本地漏洞提升权限。例如,利用 Windows 系统中的 TokenService Misconfigurations 等漏洞提权。
  • 提权工具:使用如 MimikatzLinux Exploit Suggester 等工具,自动化扫描目标系统中可能存在的提权漏洞。
  • 内存注入:通过注入恶意代码到正在运行的进程中,获得更高的权限。

5. 搭建代理 (Establishing Persistence)

在渗透测试中,保持对目标系统的持续控制通常是必要的。此时测试者会通过不同手段在目标系统中建立持久化机制,即使系统重启或其他操作后仍能重新获得访问权限。

  • 持久化手段
    • 创建反向 shell:使用工具如 Cobalt StrikeMetasploit 创建一个持久的反向连接,以便测试者能够随时恢复连接。
    • 利用计划任务:在目标系统中创建计划任务,确保某个恶意脚本或命令定时执行,保持持久化。
    • 修改系统配置:通过修改注册表、添加自启动程序等手段,将恶意代码植入系统中。
  • 代理工具:通过代理工具(如 Cobalt StrikeImpacketPowerShell Empire)建立持久的通信通道。

6. 内网横向渗透 (Lateral Movement)

内网横向渗透是指通过在目标系统上获得的访问权限,进一步渗透目标网络中的其他主机或系统。横向渗透有助于扩大攻击面,发现更多潜在的敏感信息。

  • 使用凭证进行横向渗透:通过提取的密码哈希或凭证(如通过 Mimikatz 获取的 Windows 凭证)访问其他主机。
  • 端口转发与路由:通过在目标系统上设置 端口转发,绕过防火墙,访问内网中的其他资源。可以使用 Cobalt Strikeportfwd 命令进行转发。
  • 横向渗透工具:如 CrackMapExecPsExecImpacket 等工具可以用来在内网中执行命令,获取更多的访问权限。

7. 数据收集与痕迹清理 (Data Collection & Trace Cleanup)

在渗透测试的过程中,渗透测试者可能会访问敏感数据,因此需要收集这些数据。同时,为了避免暴露测试行为,通常需要进行痕迹清理,移除对目标系统的操作痕迹。

  • 数据收集:从目标系统中提取敏感信息,如数据库备份、文件、密码文件等。例如,使用 Cobalt StrikeMetasploit 下载目标系统中的重要文件。
  • 痕迹清理:为了避免引起目标管理员的警觉,渗透测试者需要清理日志文件和删除任何上传的恶意工具或程序。可以使用 wevtutil 删除 Windows 事件日志,或者手动删除各类日志文件。
  • 修改日志配置:在目标系统上修改日志记录设置,避免未来的安全审计留下线索。

8. 报告研判与总结复盘 (Reporting & Post-engagement Analysis)

渗透测试的最后一步是编写报告,记录测试的过程和结果。报告不仅包括发现的漏洞和攻击路径,还应提供针对每个漏洞的修复建议。报告应结构清晰,确保客户能够理解。

  • 报告内容
    • 测试目标与方法:描述渗透测试的目标、范围和使用的方法论。
    • 漏洞分析:详细记录发现的每个漏洞,包括漏洞的类型、危害性、利用步骤等。
    • 风险评估:评估漏洞的实际危害,优先排序漏洞修复的顺序。
    • 修复建议:给出具体的修复建议,如打补丁、配置修改、权限管理等。
    • 后渗透分析:总结测试过程中使用的攻击技巧、工具和策略,为未来的防御提供参考。
  • 复盘:通过对整个渗透测试过程的总结,评估成功的攻击路径、失败的策略,优化测试方法论,为下一次渗透测试提供更好的经验和指导。