前言
上周参加了某地级市为期五天的网络攻防演练对抗赛,总共12支攻击队,大多参赛队伍为当地或周边城市等保测评机构。
大概情况
首先这一次比赛时间较短,所以比赛情况也比较激烈,并且随着比赛的进行,每天都有原始资产下线与新资产上线,针对重点资产的得分倍率也在上升。
第一天多为弱口令和应用层漏洞攻击且有攻击队申请高危漏洞攻击。之后都开始了高危漏洞利用,内网攻击。
到了第三天,所有的队伍分为AB两组,资产也划分为A组资产、B组资产、公共资产。并且此时已经有攻击队开始使用0 day,Nday,社工钓鱼攻击。
从第四天开始,又进入了混打乱斗模式,所有的资产都变为了公共资产,并且放出来新的资产。
第五天上午10点半,所有攻击队停止攻击,演练结束。
最终评判结果是第三名五万多分,第二名七万多分,第一名七万多分!我们队最终排名第七,得分8000。
情况分析
在比赛结束之后的总结会上,队长和我们说其他的队伍早在一个月之前就开始了对目标资产的渗透,并且他们的信息收集非常到位。他们针对不同的资产都进行了深入细致的划分,包括子域名、端口、IP、后台、敏感信息等等,信息量大而全。
所以说我们是在用五天的努力和别人的一个月奋斗,所有差距难免有点大。但是也得正视问题所在,对手很强,并且自己确实存在很多不足的情况。
思考
作为一只红队经验较少的菜鸟选手,在惊叹的同时也在思考和摸索着红队渗透该怎么玩?
他们是怎么打得那么快的?他们为什么能打穿内网,能单兵APT?
陷入了对渗透测试思考:
我是谁?我在哪?我要如何去往红队之路?
总的来说,在此次HW行动中还是学到了不少东西。
故才有了本文,意在对此次攻防演练进行复盘,总结在这次攻防演练中学到的东西以及自己的不足与改进方法,在攻防演练中作为攻击方我们应当做些什么才能达到攻防演练所要达到的效果。
不足与改进方法
参加此次攻防演练,从中发现了自己许多不足的地方,特此提出来以望下次改进:
1.漏洞发现,外网打点能力弱
在整个攻防演练过程中,自己发现的大多数漏洞都是敏感信息泄露、目录遍历、后台弱口令这样的基础漏洞,队友却能找到SQL注入从而os-shell,说明自己对于漏洞的识别不够敏感,缺少经验。
改进:有时可能不是技术上的问题,是想法和思路的问题。这个只能在平时的渗透中多注意、多思考一些,也可以通过对SRC的挖掘来提升这方面能力。
2.知识遗忘或掌握不牢固
相关知识点有学过,也实操过,遗忘了,没想到或者在用到时发现自己其实对于这方面知识点其实也不太熟,实在是有些眼高手低了。例如:这次攻防演练中存在多个文件上传文件,很多时候木马上去了却无法连接,或者木马被杀掉了,离成功总是差一点。
改进方法:平时空闲时多做一些靶机测试,多练,熟悉从外网打点到提权,内网横向获取内网所有主机权限的这一套流程。例如红日安全ATT&CK系列靶场,在空闲时间把红日系列的全部靶场实验一次。
3.攻击方式单一
这不仅是我,也是我们整个团队所存在的问题,都是通过传统的web来撕开口子。并且不仅仅是攻击方式单一,而且渗透工具也较为单一。
改进:多学习了解红队的一些打法,学学钓鱼、社工,平常做做实验。有空做一做工具分享,扩展自己的工具库。
后面可以针对本次渗透的目标进行一次全面细致的复盘,哪些地方没有做到,哪些地方没有深入,哪些地方有遗漏,这些都是需要学习的地方!
以后怎么做?
将整个攻防演练划分为两个阶段:
第一阶段进行信息收集,主要是对目标资产进行提前渗透,这里的资产目标怎么来,如果是某个地级市,那么对应的医院、学校、政府单位必然会出现在攻防演练的赛场上。
第二阶段进行现场攻防,主要是针对具体的资产进行深入渗透,以及对于第一阶段中没有完善信息收集的资产进行攻击,当然,这里的重点的报告的编写与提交。
信息收集阶段
这个阶段的信息收集可以进行深入的渗透,但是一定要做好隐秘与痕迹清除,以免被溯源或比赛开始之后暴露攻击痕迹。
主动信息收集:主动信息收集可能会暴露自身IP从而被溯源,如果现场有蓝队,需要降低暴露风险。主要资产信息来源。
被动信息收集:被动信息收集的不会导致自自身IP泄露,但是收集的资产较少,并且不准确需要鉴别。
信息收集范围:
端口、子域名、C段、旁站、目录、URL请求方式
Web组件(数据库、操作系统、容器、web框架、CMS)
社会信息(公司名称,注册人或者机构、联系方式:邮箱,手机号码,备案号)
这里的重点是对目标资产进行分类划分,信息越乱收集的意义越低。
例如:需要对信息收集的资产进行划分整理,对于存在可以利用的漏洞点、信息泄露点、敏感目录点、登录爆破点、协议爆破点等等进行标注,方便后面进行渗透测试。
攻防演练阶段
这个阶段就是比赛开始之后的攻防演练。
需要做好两件事:
- 人员分工(信息收集、Web打点、内网渗透、报告编写)
- 报告编写(需要又快又准确)
具体步骤:
1.信息收集
比赛开始之后会放出资产范围,之前做到信息收集可能存在不足的地方,也可能会存在不属于资产范围的地方,所以需要完善信息收集工作
2.漏洞探测
- 手动探测:使用手动验证的方式
- 自动探测:使用漏洞扫描工具的方式
推荐工具:
- Xray:主动方式使用默认poc扫描,扫描存在误报并且poc少难以找到利用点;被动方式使用代理的方式进行探测,类似于BP
- Nessus:全面扫描,误报率较高
- AWVS:全面扫描,适合web扫描,存在误报率
- Goby:扫描基于poc的范围,默认poc情况下很难探测出值得利用的点
- 中间件扫描:中间件范围大,应该根据指纹探测的情况进行定点扫描
- BP抓包:抓包探测较为准确,但是比较耗费时间,可以在这里使用插件完成上面的大部分扫描
3.漏洞验证
漏洞探测无论是手动还是自动化工具,都可能存在误报的可能,需要进一步验证,具体的验证方法根据所属漏洞的不同进行进一步验证。
4.漏洞利用
根据漏洞级别细分为:紧急、高危、中危、低危
5.Getshell
获取shell的方式:
Shell管理工具:
- 蚁剑
- 冰蝎
- 哥斯拉
反弹到自己的服务器或本地:
- 正向shell
- 反向shell
权限维持与权限提升
1.内网渗透
内网信息收集:
网络探测、主机探测、端口扫描、漏洞探测、弱口令爆破
内网移动:
权限提升、内网移动
2.痕迹清楚
清除木马痕迹、防止赛后溯源
贯穿全程的报告编写注意事项:
- 报告编写是比赛开始之后最重要的事情,需要安排单独的人员进行报告编写。
- 如果在比赛之前发现漏洞可以提前编写一份通用报告,在比赛开始之后安装对应模板进行编写。
- 报告编写的速度尤其重要,一些薄弱的资源很容易就被很多队伍拿下,这个时候报告的提交越早越可能得分。
- 报告编写中尽量做到细致全面,避免报告驳回导致的时间损失。
- 报告中有一个资产范围确认的过程,明确攻击目标属于攻击范围,这个在估计过程之中就应该做好截图保存。