【微加固 v2】一个简单的安全事件经验

您好,我是系统解决方案部的犬冢。

用户对安全事件并不陌生。他们使用的某项服务可能有一天会成为网络攻击的目标,导致服务不可用,或者某些功能被暂停,服务运行状态下降。

这次,我参加了一个名为“微加固”的活动,在这个活动中,你可以真正体验到这样的安全事件,我在一篇博客文章中总结了我的经历。

拒绝

- 为避免剧透,本博客不包含微强化中具体攻击示例或详细应对措施。-
本文包含大量犬冢牙的个人观点。-
总共有6组练习,但本文仅为概要。

什么是微硬化?

安全加固是其中一个子项目。由 1 至 4 人组成的团队负责维护一个小型云环境,保护其免受各种网络攻击,并不断提升应对攻击的能力。同一种攻击会在短时间内分多次进行。

原有的加固项目对技能要求很高,参与门槛也很高,因此,即使没有事件响应经验,任何人都可以轻松参与的微型加固活动,是推荐给非工程师和刚开始学习安全知识的人的加固活动。

版本之间的差异

Micro Hardening v2 的事故数量比 v1 更高。

作为满足运营要求的标准 SLA)已

主线剧情

介绍

为了到达比赛场地所在的淡路岛,我先后乘坐了地铁、JR线和巴士。
前一天因多次事件而感到恐惧我兴奋得睡不着觉,所以在转机后的巴士上打了个盹儿。

暂且不谈其他,我们来说说淡路岛。
不出所料,作为热门旅游目的地,淡路岛地理位置优越,甚至从比赛场地 SAKIA 就能看到濑户内海。

此外,SAKIA 是由一所废弃的小学改造而成的社区设施,内设餐厅、酒店和联合办公空间,营造出友好温馨的氛围。

会前简报和团队划分

根据赛前资料,其中包含赛事说明和参赛队伍展示。
(资料主要内容是关于比赛环境的信息,因此此处不再赘述。)

团队组成是在当天公布的,所以我们无法提前沟通,但犬冢所在的 1 队由三名程序员和犬冢组成。

与每个人交谈都很有趣,因为每个人都有不同的背景和参加活动的理由。

事件开始

第一组

"GET /_________________________________________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_____aaaaa______a_____a_____a__aaaaaaa___________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_____a____a_a____aa___aa__a_________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_________a___a___a_a_a_a__a_________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a__aaaa__a_____a__a__a__a__aaaaa_______________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_____a__aaaaaaa__a_____a__a_________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_____a__a_____a__a_____a__a_________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_____aaaaa___a_____a__a_____a__aaaaaaa___________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /________________________________________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_________________________________________________ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_____aaaaa___aaaaaaa_____a_____aaaaaa___aaaaaaa__ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_____a_____a_______a_a____a_____a_____a_____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a___________a______a___a___a_____a_____a_____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_____aaaaa______a_____a_____a__aaaaaa______a_____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /__________a_____a_____aaaaaaa__a___a_______a_____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /____a_____a_____a_____a_____a__a____a______a_____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_____aaaaa______a_____a_____a__a_____a_____a____ HTTP/1.1" 404 486 "-" "curl/7.29.0" "GET /_________________________________________________ HTTP/1.1" 404 486 "-" "curl/7.29.0"

游戏一开始,访问日志中就会出现ASCII字符“[GAME START]”,表明……微加固已经开始。
目前,我们的计划是观察、整理事件并创建时间线,因此暂时不采取任何防御措施。

几分钟过去了,一切如常,
没有发生任何意外,犬冢内心的紧张感也渐渐消退。
(当时的犬冢并不知道,这只是暴风雨前的宁静。)

不久之后,团队内部收到报告称网站标题被人篡改了……
当我们重新加载电商网站时,网站标题中出现了“匿名黑客入侵”的字样。
这简直是赤裸裸的宣战!

通过对相关时间段的访问日志进行调查,我们发现了对可疑 URI 的请求。此外
,这些请求返回了 HTTP 状态码 200。
在文档根目录下,我们发现了一些文件名常见的陌生 PHP 文件。
这表明系统可能利用了某种漏洞,并植入了后门。

与此同时,该电商网站上的产品价格遭到恶意篡改。
很可能是电商网站数据库的管理员用户信息泄露,或者有人通过SQL注入非法更新了数据。
如果是前者,目前的情况可能已基本失控。

与此同时,产品页面遭到黑客攻击,被植入了误导性的登录表单,页面布局也被改成了攻击者偏爱的、令人眼花缭乱的设计……
最终,服务崩溃,第一批产品彻底报废。真是
糟糕透顶的经历。但也挺有意思的。

第一轮测试结果对所有队伍来说都停滞不前。

防守分数会根据通过的评估项目数量而增减。
这次我们没有防守,所以队伍的防守得分是0分。
然而,防守过度可能会影响常规爬虫的购买步骤,所以防守并不一定意味着服务水平协议(SLA)就会提高。

〇 第二和第三阶段
在第二和第三阶段,我们还没有确定具体的入侵路径,也没有采取任何根本性的应对措施,所以我们的方法很简单:“让我们一起努力,坚持下去,不中断服务!” 在准备阶段,我们完成了各种配置调整并应用了安全补丁。

如上所述,袭击和事件会按照一定的时间线在特定时间发生,因此一旦你采取了措施,将来你可能会感到相对安心。

然而,服务中断的情况依然持续。
尽管如此,我们还是设法暂时阻止了一些入侵和篡改行为。

〇 第 4 组和第 5 组
根据上述结果,对于第 4 组和第 5 组,我们决定审查需要改进的领域,并根据第 3 组之前出现的漏洞和事件制定进一步的改进和缓解措施。

如果服务在任何时候停止运行,情况就尤其糟糕,因此必须避免这种情况发生。
由于问题是在到达 Web 服务器之前就返回了超时,我怀疑问题可能出在其他层面。

由于竞争环境涉及多台服务器,事后看来,如果我们当初能更透彻地理解并组织团队内部的规范,情况会更好……
最终,我们采取的改进和缓解措施效果并不理想,服务水平协议(SLA)的下降仍然无法避免……

〇 在第六组最后一局比赛开始前,
我们有机会获得了一些提示,于是我们决定根据这些提示重新检查问题。
结果发现,只需重启某个服务就能解决问题。

即便在撰写这篇博客时,我仍然深感遗憾,因为我当时忙于处理其他事件,而没有彻底检查相关服务日志,尤其因为这是我重点关注的服务……
事后看来,上述措施效果显著,服务级别协议 (SLA) 也得到了改善,没有出现停滞。

包括最后一局在内的比赛结果如下。


正如常言所说,球员在比赛初期只能发挥出50%的实力,我们可以看到,每支球队第一局和第六局的得分差距都超过两倍。
这凸显了反复练习的重要性。

事实上,我认为球队能够顺利应对第一局和第六局中出现的突发事件。

充分享受微硬化的秘诀

以下是一些建议(包括犬冢的感想),供计划参加未来活动的各位参考,以帮助您 100% 享受微硬化。

1. 需要一些预备知识。
如果您不是工程师或初学者,最好先熟悉一下LPIC-1考试中涉及的命令的用法。

这些练习涵盖了基本规范,并提供了有关如何重启服务的附加信息,但并未深入解释命令。

2. 团队建设至关重要。
让我们最终确定本次训练的目标、每个人的角色以及下一组训练的计划。

在这种情况下,我们第一阶段只制定了时间表,而没有花时间在团队内部理解和整理规范。这在后期造成了很大的影响,我们后来才意识到这是原因所在。即使每个人都理解规范,团队一起审阅并统一理解仍然非常重要。

3. 记录你的工作。
你可以使用 Slack 或 Google Sheets 来记录,但一定要保留记录。
这对于之后整理谁负责了哪些工作非常重要。

4. 考虑使用外部服务和工具。
为了发现问题并维持服务质量,充分利用外部服务和工具更为实际有效。

别以为你能像犬冢牙那样单枪匹马搞定一切。
那些最终登上排行榜榜首的队伍都擅长运用这类战术。

5. 专注于满足业务需求。仅仅
让服务运行起来并不会提高你的评分。
花些时间思考如何提高评分,以及满足业务需求意味着什么。

概括

虽然立即营造竞赛级别的环境可能比较困难,但我至少希望在公司内部举办一次安全事件经验分享会。

感谢您阅读至此!

如果您觉得这篇文章对您有帮助,请点个“赞”!
5
加载中...
5票,平均分:1.00/15
695
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

犬宿

我于 2021 年 4 月以应届毕业生的身份加入 Beyond。
我有时会说一些奇怪的话,也许是因为我表达能力有问题。