Cobalt Strike|渗透初入门
Cobalt Strike|渗透初入门
Ec3oCobalt Strike & 渗透入门
CS运行配置
资源:
- 阿里云ECS一台Ubuntu(2C 2G)
- Cobalt Strike 4.2一份
安装Java环境
1 | sudo apt update |
配置Systemd服务
/etc/systemd/system/cobaltstrike.service
1 | [Unit] |
重载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 地址等信息,使用工具如
whois
、nslookup
、dig
查询域名注册信息。 - 搜索引擎:利用 Google Dorking 搜索敏感信息,如配置文件、暴露的数据库、管理页面等。
- 社交工程:通过社交媒体、论坛等途径获取目标员工的工作信息、联系方式、密码提示等。
- DNS 查询:获取域名、子域名、IP 地址等信息,使用工具如
主动信息搜集
:直接对目标系统进行扫描,收集目标主机的服务信息。
- 端口扫描:使用工具如
Nmap
扫描目标的开放端口,识别常见的服务和协议。 - 服务版本识别:识别开放端口对应的服务类型及版本,帮助后续漏洞分析。
- Banner Grabbing:通过读取目标系统的服务 banner,获得更多关于目标应用的细节。
- 操作系统识别:通过扫描目标机器的响应特征,推断出其操作系统信息。
- 端口扫描:使用工具如
2. 漏洞扫描与分析 (Vulnerability Scanning & Analysis)
在收集到足够的目标信息后,下一步是寻找目标系统中潜在的漏洞。这一步骤通常包括自动化扫描、漏洞评估以及手动分析。
- 自动化扫描:使用漏洞扫描工具(如 Nessus、OpenVAS、Nikto)对目标进行全面的扫描。这些工具会检查常见的漏洞、配置错误、已知的 CVE 漏洞等。
- 手动分析:尽管自动化扫描可以发现大量已知的漏洞,但一些特定的漏洞(例如复杂的逻辑漏洞或特定配置问题)仍然需要渗透测试者手动验证。此时可以结合漏洞数据库(如 CVE)、攻击框架(如 Metasploit)等工具进行进一步分析。
- 漏洞评估:根据扫描结果和手动分析的结果,渗透测试者需要评估每个漏洞的严重性,并根据漏洞的危害性、可利用性以及修复难度为其排序。
3. 漏洞利用 (Exploitation)
漏洞利用是渗透测试的核心部分,测试者将利用扫描阶段发现的漏洞,尝试获取目标系统的访问权限。漏洞利用有时会从某个具体的服务漏洞入手,有时则需要多重漏洞的结合。
- 利用已知漏洞:比如,利用 EternalBlue(MS17-010)漏洞攻击 Windows 系统,获取远程控制权限。
- Web 漏洞利用:如果目标存在 SQL 注入、XSS、RCE 等漏洞,测试者可能通过攻击 Web 应用漏洞直接获取后台权限。
- 社交工程攻击:如通过钓鱼邮件诱使目标用户点击恶意链接或打开恶意附件,从而植入木马、获取系统控制。
- 利用工具:利用 Metasploit、Cobalt Strike、BeEF 等攻击框架执行漏洞利用,获取初步访问权限。
4. 权限提升 (Privilege Escalation)
当渗透测试者获得低权限访问(如普通用户权限)后,通常需要提升权限以获取更高的系统控制级别。权限提升是渗透测试中至关重要的一步,因为管理员权限通常是渗透者完全控制目标系统的关键。
- 本地提权:如果目标系统配置不当(如文件权限设置错误、漏洞配置等),渗透测试者可以利用本地漏洞提升权限。例如,利用 Windows 系统中的 Token 或 Service Misconfigurations 等漏洞提权。
- 提权工具:使用如 Mimikatz、Linux Exploit Suggester 等工具,自动化扫描目标系统中可能存在的提权漏洞。
- 内存注入:通过注入恶意代码到正在运行的进程中,获得更高的权限。
5. 搭建代理 (Establishing Persistence)
在渗透测试中,保持对目标系统的持续控制通常是必要的。此时测试者会通过不同手段在目标系统中建立持久化机制,即使系统重启或其他操作后仍能重新获得访问权限。
- 持久化手段:
- 创建反向 shell:使用工具如 Cobalt Strike 或 Metasploit 创建一个持久的反向连接,以便测试者能够随时恢复连接。
- 利用计划任务:在目标系统中创建计划任务,确保某个恶意脚本或命令定时执行,保持持久化。
- 修改系统配置:通过修改注册表、添加自启动程序等手段,将恶意代码植入系统中。
- 代理工具:通过代理工具(如 Cobalt Strike、Impacket、PowerShell Empire)建立持久的通信通道。
6. 内网横向渗透 (Lateral Movement)
内网横向渗透是指通过在目标系统上获得的访问权限,进一步渗透目标网络中的其他主机或系统。横向渗透有助于扩大攻击面,发现更多潜在的敏感信息。
- 使用凭证进行横向渗透:通过提取的密码哈希或凭证(如通过 Mimikatz 获取的 Windows 凭证)访问其他主机。
- 端口转发与路由:通过在目标系统上设置 端口转发,绕过防火墙,访问内网中的其他资源。可以使用 Cobalt Strike 的
portfwd
命令进行转发。 - 横向渗透工具:如 CrackMapExec、PsExec、Impacket 等工具可以用来在内网中执行命令,获取更多的访问权限。
7. 数据收集与痕迹清理 (Data Collection & Trace Cleanup)
在渗透测试的过程中,渗透测试者可能会访问敏感数据,因此需要收集这些数据。同时,为了避免暴露测试行为,通常需要进行痕迹清理,移除对目标系统的操作痕迹。
- 数据收集:从目标系统中提取敏感信息,如数据库备份、文件、密码文件等。例如,使用 Cobalt Strike 或 Metasploit 下载目标系统中的重要文件。
- 痕迹清理:为了避免引起目标管理员的警觉,渗透测试者需要清理日志文件和删除任何上传的恶意工具或程序。可以使用 wevtutil 删除 Windows 事件日志,或者手动删除各类日志文件。
- 修改日志配置:在目标系统上修改日志记录设置,避免未来的安全审计留下线索。
8. 报告研判与总结复盘 (Reporting & Post-engagement Analysis)
渗透测试的最后一步是编写报告,记录测试的过程和结果。报告不仅包括发现的漏洞和攻击路径,还应提供针对每个漏洞的修复建议。报告应结构清晰,确保客户能够理解。
- 报告内容:
- 测试目标与方法:描述渗透测试的目标、范围和使用的方法论。
- 漏洞分析:详细记录发现的每个漏洞,包括漏洞的类型、危害性、利用步骤等。
- 风险评估:评估漏洞的实际危害,优先排序漏洞修复的顺序。
- 修复建议:给出具体的修复建议,如打补丁、配置修改、权限管理等。
- 后渗透分析:总结测试过程中使用的攻击技巧、工具和策略,为未来的防御提供参考。
- 复盘:通过对整个渗透测试过程的总结,评估成功的攻击路径、失败的策略,优化测试方法论,为下一次渗透测试提供更好的经验和指导。