一、打点的基本认识
对于有过红队经验的人来说,“打点”这项基本技能绝不会陌生。
简单来说,打点的目标就是获取一台外部机器的shell权限。其一般目的在于利用这台机器作为跳板,进而向目标内网渗透。
在时间充裕的理想情况下,打点并非难事。系统难免存在漏洞,即使系统固若金汤,人为因素(如社工钓鱼)或物理近源渗透,乃至通过内部渠道获取权限,都可能成为突破口。这本质上是一道计算题,权衡的是投入的时间、金钱成本与最终进入内网的潜在收益。
然而,从一名普通红队成员的视角出发,现实往往更为紧迫:项目周期短、外部资源有限,能依赖的几乎只有自身的技术储备。在这种情况下,个人能力成为决定性因素。一名红队人员能否快速、高效地完成打点,常常是区分普通团队与优秀团队的关键。
当然,有人会认为在某些场景下(如非限时的实战渗透或SRC漏洞挖掘)可以有更充裕的时间。但我们必须正视主流场景的规则:CTF赛事解题窗口通常只有1-2天,大型攻防演练项目周期也往往压缩在一周左右,SRC更是讲究“先到先得”。这些是客观存在的游戏规则,对所有参与者一视同仁。因此,与其寻找借口,不如思考如何在既定规则下提升效率。
从公司管理层面看,由于时间紧、任务重,且打点工作(尤其是初期)更偏向重复性的体力劳动而非高深技术,投入更多人手进行信息搜集通常能带来更好的效果。
总而言之,打点本身是一种遍历行为。攻击目标如同被围墙保护的城堡,红队的工作就是围绕城墙反复试探,寻找每一处可能的缺口。这无疑是一项繁重的体力劳动,尤其是在面对海量目标资产时。下文我们将详细探讨为何反复强调其“体力劳动”的属性。
二、打点的基本方法
打点的基本流程可以概括为:信息搜集 → 定位脆弱资产 → 漏洞利用 → 最终获取shell。说起来简单,但其中最耗费心力、最“肝”的部分,莫过于信息搜集。
这个过程虽可通过工具进行一定程度的优化,但我依然认为它是技术门槛相对较低、最考验耐性的环节。这就好比大学生和小学生都用计算器(各类渗透测试工具)去解一万道四则运算题(海量资产、域名、C段),其实很难真正区分出技术水平的高低。许多头部安全公司深谙此道,在大型攻防演练中,会部署大量人力进行资产收集与初步筛选,再将有价值的脆弱资产交给后续的漏洞利用专家进行突破,以实现快速得分。
尽管信息搜集略显“无脑”,但其标准步骤仍值得梳理。通常,一个完整的流程可能包含以下环节:
- 获取目标:从项目经理处获得攻击目标(通常是公司名称)→ 使用企查查等工具查询该公司及其子公司信息。
- 域名枚举:将获取到的公司及子公司名称,利用 OneForAll 等工具进行子域名爆破,得到一批子域名列表。
- IP与C段获取:将子域名列表交给 Eeyes 等工具,获取对应的IP地址及C段信息。
- 资产探测与初步扫描:将IP和C段信息导入 Fofa 和 Fscan。Fofa 可以快速发现该C段下的其他资产,Fscan 则能进行快速端口扫描并尝试攻击一些常见漏洞。
- 运气初检:如果运气足够好,此时 Fscan 可能已直接报出可利用的漏洞(小概率事件)。若没有,则进入下一步。
- 资产指纹与敏感目标筛选:查看从 Fofa 获取的资产,可配合 Ehole 等指纹识别工具进行快速筛选,重点关注如 Shiro、Fastjson 等可直接通过反序列化漏洞获取权限的敏感资产(同样是小概率事件)。如果幸运女神依旧没有眷顾,进入第7步。
- 心态调整:经过以上几轮操作,时间可能已过去不少却毫无进展,容易产生挫败感。此时建议暂停休息,调整心态,以免影响后续几天的工作效率。恢复状态后,继续第8步。
- 战略评估:经过上述筛选,Web层面的常规漏洞可能已排查一遍。若仍无收获,说明目标系统的日常安全自查比较到位,常见高危漏洞已修复。在大型攻防演练中,此时可考虑更换目标,重新循环上述流程。若是针对特定单位的定向攻防,则需继续深入,见第9步。
- 聚焦“三板斧”漏洞:Web直接漏洞虽未发现,但我们很可能已收集到各种登录后台、用户中心等交互型资产。这些资产看似无用,却是“攻防演练三板斧”漏洞的主要应用场景。若运气尚可,它们仍能派上用场:
- 反序列化漏洞:最受青睐的漏洞之一,一旦发现,获取 shell 的几率极高。但如今遍地 Shiro 的时代已逐渐过去,可遇不可求。
- 文件上传漏洞:老牌漏洞。遇到时,先判断是白名单还是黑名单机制。白名单可尝试结合文件包含等漏洞进行利用;黑名单则可将各种上传绕过姿势逐一尝试。即使上传成功后面临找不到路径的问题,也远比无法上传要好。
- SQL注入漏洞:更为常见。注入后,若是低权限则收效甚微;若为高权限,则可尝试通过注入点进一步获取 shell。
在时间有限的攻防演练中,建议集中精力将以上三种漏洞的利用技巧练精,其他漏洞的投入产出比可能不高。
- 针对性攻击尝试:对各类登录系统尝试弱口令爆破或 SQL 注入。弱口令进入后台后,积极寻找上传点。SQL 注入建议先用 Xray + Burp 进行初步探测,看到有希望的注入点再上 Sqlmap 进行深入利用。
- 信息深度挖掘:若弱口令无效,可尝试在网盘、Github、搜索引擎泄露公开库(SGK)中搜索目标单位或相关人员的信息,寻找可能的账号密码泄露。
- 外围资产拓展:检查目标单位的微信公众号、App、小程序等移动端或新媒体资产,这些可能成为新的突破口。
- 高级信息搜集技巧:尝试 DNS 域传送、通过备案号反查、IP反查网站、SSL证书信息、Google Hacking 搜索特定C段等方法,进一步扩大资产面。
- 目录与路径爆破:使用 Dirmap、Dirsearch 等工具对可疑网站进行目录爆破,寻找隐藏的接口、备份文件等。
- 社会工程学:若上述方法均无效,可考虑发起钓鱼邮件攻击,但这同样是一项需要耐心和技巧的“体力活”。
- 近源渗透:作为最后的手段,在获得批准后,可携带设备尝试进行近源渗透。
罗列这么多步骤,旨在阐明一个观点:信息搜集是开启后续渗透的基础,至关重要,但不可否认,它本质上是一项重复性的体力劳动。因为它几乎没有门槛,任何掌握了基础方法和工具使用的人都能上手,核心工作就是对照检查清单,使用工具进行一遍又一遍的尝试。
因此,通常意义上的“快速打点”,很大程度上比拼的是谁能够更高效、更先一步完成整个检查清单的遍历。尽管目前大部分工作已由工具实现半自动化,但在面对海量资产时,一个熟练的信息搜集人员,其工作模式仍类似于流水线工人,不断对巨量资产进行工具化筛选。
而那些擅长“高端技巧”(如高成功率的电话钓鱼、精妙的钓鱼邮件撰写或免杀样本开发)的专家,在施展这些技巧前,同样需要高质量的信息搜集作为支撑。但他们往往不愿亲自从事基础的搜集工作,因为他们深知这项繁重且技术含量相对较低的任务,完全可以交由他人或自动化脚本完成。
总结一下:
- 公司层面:要实现快速打点,最直接的方法是投入更多的人力资源进行并行信息搜集。
- 个人层面:要提升个人快速打点能力,除了忍受过程的枯燥,更要着力提升工具使用效率,最好能进行工具链的二次开发或集成,将半自动化的步骤串联、优化,从而在现有流程上进一步压榨出效率。
三、打点的技术区分线
在实战中,一个常见的情况是:你和队友发现了同一个脆弱资产,你利用失败了,而队友却成功了。这就引出了红队打点的技术分水岭——漏洞利用阶段。
利用失败的原因多种多样:
- 目标机器明明能出网,但反弹 shell 始终无法成功建立连接。
- 能够建立反弹 shell,但连接极不稳定,时常中断。
- 能够成功植入内存马并连接,但在上传/下载较大文件时操作失败。
- 能够稳定执行命令,但某些特定命令(如添加用户)执行时会被拦截或失败。
当面临这些复杂情况时,技术人员便开始脱离单纯的“苦力劳动”阶段,进入真正比拼技术功底的领域。区分一项工作是体力活还是技术活的标准很简单:看它是不是“谁都能做”。
实战中的漏洞利用往往涉及对系统原理、防护机制、网络协议的深入理解,以及对不同环境下利用手法的灵活变通。这对渗透人员的基本功和临场联想、解决问题的能力提出了更高要求。此时,技术储备更深厚、经验更丰富的成员优势便会凸显。
一个极端的类比就是 CTF 比赛:解题需要真正的理解和创造,不会就是不会,给再多时间也可能毫无头绪。而信息搜集,只要掌握了基本方法,人人都能上手,区别主要在于熟练度和效率。
因此,对于技术人员个体而言,如果仅仅满足于成为一个“熟练工”,很容易在技术迭代中被淘汰。应当将更多精力投入到技术的深化与构建个人竞争壁垒上。
技术的深化,扎实的代码能力是基石。进一步深入理解各类操作系统、应用框架及漏洞的底层原理,是能力的延伸。通过持续学习和实践突破,技术能力便会逐步提升,最终帮助从业者跳出低水平重复的信息搜集循环,迈向更高的技术层面。
当然,项目中的信息搜集是公司交付任务的一部分,不可避免。但个人技术栈的突破与延伸,则是关乎自身长期发展的核心。一个比较优化的解决方案是:先集中投入一段时间,高强度练习信息搜集,并通过自研小工具或脚本将流程效率提升到极致。达到一定水平后,在项目中就能稳定地产出成果,满足公司交付需求。之后,便可将更多时间投入到漏洞研究、逆向工程等更具深度的技术领域。
本文主要侧重于思路与方法的梳理,具体的工具使用命令、漏洞利用细节等在各大技术社区已有丰富资料,此处不再赘述。笔者更希望分享的是从事这项工作的底层逻辑,以及在有限条件下如何权衡与优化工作方法。以上多为个人实践经验与思考,难免有疏漏之处,欢迎大家在云栈社区等技术交流平台指正与探讨。