记一次攻防演练(包含应急响应)项目的心路历程

发布于 2021-11-19  731 次阅读


写在前面

  这次攻防演练是我目前任职公司的一个项目,持续时间较久,也是我第一次系统的接触攻防演练性质的项目,怎么说也有一定的意义,所以呢简单写一写在这个项目中的经历、思考、踩坑历程之类的吧,以供下次进行参考。
  当然,因为是公司的项目,所以其中的敏感信息及项目细节在这里就不进行叙述了,主要是这次项目中所学习到的东西。

项目前言

  客户这边在我们筹划项目之前其实已经有和其他的公司进行过几次的攻防演练,因此客户想让我们给他们展示点不一样的东西,并且因为有设备合作的需求,所以要结合相应的设备进行演练,客户也是想看看设备具体的效果。
  说实话这两个需求其实都蛮有难度的,一个是因为已经举办过几次的攻防演练,普通的演练场景肯定不会满足这样的需求,所以说需要定制化的场景设计。这个问题我倒是没有费什么心思,在我加入这个项目之前这些场景就已经制定好了,我只需要负责后面的实施操作和其他工作就OK。
  我们这次选择的场景主要立足于"无声渗透",简单来说就是结合"社会工程学"进行的渗透攻击,比如说钓鱼攻击Bad USB这样的场景,更偏向于通过这次的演练让人员的安全意识有所提升。

环境搭建

  这次项目的环境搭建可以说是相当"踩坑"的一次,不仅仅是相关设备的使用,攻击机、服务器、攻击者远端机器等的选择,更重要的是这样的演练环境客户方并不允许进入他们的生产网络,演练环境存在大量的安全问题、合规性问题等。
  我们当时的想法是客户方的生产网络中有此次客户方想要查看效果的设备,并且环境接入网络中后也可以使用一些公网资源来辅助进行演练。这个问题是最为棘手的一个问题。
  首先分析下难点:

  1. 最为重要的难点就是相应的设备去哪里搞?时间是否允许我们设备到达项目现场这边?

  这个难点主要在于时间问题,因为公司备有测试设备,申请测试设备流程需要时间,设备到达项目现场也需要时间,如何压缩这不必要的时间就是最大的问题。
  我们想到了距离相对较近的正在使用的测试设备,神速进行申请、沟通、设备下架的操作,基本上是当天就将这些设备的问题搞定了。
  不过在这之前,我们其实是有申请测试设备,由总公司发货到我们项目现场这边,但是这台设备由于下架时的误操作导致硬件出现问题,到达我们这边之前并没有在总公司进行检查,在我们检查出这个问题的时候还是相当无奈的,所以后面就有了上文的操作。

  1. 在整体的演示场景中有需要公网访问的需求,如何解决?

  这个问题,我们开始时也没有什么思路,在磨合场景的过程中,无意之间我想到了双网卡服务器,这是什么意思呢?简单来说就是一块网卡连接公网,一块网卡连接内网,这样的场景刚好满足我们这样的需求。后面测试之后并不会影响内网环境的攻击,所以就准备这样的机器,好在个人PC都能够支持双网卡,所以这里并没有消耗很多时间

  1. 环境中需要有WIFI网络,如何处理?

  这个问题的第一反应就是接入家用WIFI路由器,但是应该如何配置?这个也是琢磨了有一段时间,我把我们的方法简单写一写。这个难点其实也可以说成是内网环境下怎么使用家用路由器
  这个问题一开始的疑问点是路由器上网需要一个wan网地址,而这个地址肯定是交换机上某个地址,但是配置完成后发现并不能使用,所以这个搁置了一段时间。
  后面由其他部门同事帮助调试,询问了一下具体的操作,简单来说就是这种内网环境相当于是你使用路由器把交换机网络从仅"有线"连接改变成"有线+无线"的连接,所以依照这个思路,路由器就应该去选择使用AP(Access Point)模式,路由器上的配置具体看情况进行处理,不同品牌的路由器的前端可能不太一样,但是思路就是这样。还有一点就是如果有外网上网需求就使用路由模式。
  这里还有一个问题就是接线怎么去弄?这边我也是有请教其他同事,简单来说在路由器设置为AP模式之后,把他当做一个交换机,所以路由器的WAN口就不用连接网线到交换机上,仅使用LAN口进行连接,基本上就是一个思想——将交换机网络从"有线"改变成"有线+无线"
  这个部分基本上就没有其他问题了,也是一点一点踩坑踩过来啊,蛮辛苦的也蛮有收获。

  1. 使用Web应用防火墙(WAF),如何去部署?

  这个倒不是一个很难的问题,最主要的是要注意,因为是内网环境,所以网络拓扑要尽可能的简单并且满足需求,所以这里推荐WAF为桥接模式部署。
  原因简单说一说吧。

  • 旁挂模式没有办法去联动去进行封堵恶意IP,所以说这个是直接否定
  • 路由模式,对于网络拓扑改动较大,需要做反代、路由等等一系列的操作
  • 思考取舍之下桥接最为简单,直接串进去配置好进行防护的网站即可

  到这里基本上环境问题算是完全解决了,剩下的就是配置交换机,分配内网IP这些基础操作,这里就不过多叙述了,不过,在配置交换机的时候还有一个点,就是交换机并不是我们自己的,所以我们并不知道一些用户的密码,所以说要进行清除并重新配置,这一块我之后写在其他地方,会做链接的!
  最终我们确定网络拓扑如下:

topo1


  更新:关于网络设备中的一些问题我之后统一都会更新在这篇文章中,除非比较典型的案例会单独进行更新——网络设备中的大小事


场景选择

场景一:公网Web应用攻击

  这个场景就是很普通的渗透流程,弱口令爆破—>爆破失败后进行登录框注入—>拿到数据库中存储的密码和用户名—>解密—>登录—>上传、绕过—>篡改网页—>应急及处置恢复流程。刻在骨子里的常规渗透流程,所以说没有什么好说的。
  不过,这里有一点,因为客户要求要准备充分,且压缩展示时间,所以部分内容要提前进行准备,比如说SQL注入提前跑好缓存,图片木马,所使用的工具提前打开,篡改所需要的图片要提前准备好等等这些内容。
  还有一些就是细节上的问题,比如注入这个要注意实际展示的时候还是要有流量的,SQLmap在跑已经完成的站点会读取缓存记录,当然你要提前设置保存,SQLmap读取缓存时是没有流量的,但有一些固定的命令是一定会跑流量的,所以跑好缓存的情况下使用这些命令去触发流量,当然在实际的演示过程中获取到需要的就可以断开注入行为,为了保证有断开的准备,所以不要使用--batch默认自动执行,这个参数也会导致某些情况下会注入失败,在实际的渗透过程中也可以注意一下这里,看看是不是你注入失败的原因。


  最最重要的一点!一定要有出现紧急情况的救场方案。正式场合下不会给你DeBug的机会,要么成,要么亡,所以,在出现紧急情况下的救场方案是必须的,比如提前准备好工具连接的木马,多准备一台网站机器等等。这些要看具体的情况去进行准备。


场景二:WIFI钓鱼+钓鱼邮件的组合场景

  这个场景我之前并没有实践经验,这个后面简单会简单复现一下,链接在这边WIFI钓鱼+钓鱼邮件组合攻击学习
  简单来说这个是红队常用的一种钓鱼手法,最终是上线Cobalt Strike或者Metaspolit等等后渗透框架、工具的攻击行为。
  准备钓鱼WIFI,免费、没有密码,并且准备钓鱼网站,比如说邮箱的钓鱼网站,在后台进行监听,并抓取你所需要的内容,然后根据你的内容去构造后续钓鱼的手法,比如钓鱼邮件。钓鱼邮件这个有一个难点就是非免杀的木马会被服务端检测到并且拦截邮件,我们用的是添加压缩文件、文件加密等等比较简单的方式,因为客户这边有点要求就是后面杀毒软件可以检测到,所以免杀方式是不能使用的。
  钓鱼的木马也有几种方法:

  • 利用office系列软件——宏病毒,这个实际环境中利用的限制比较多,在测试环境中倒可以控制这些内容。
  • 插入Cobalt StrikeShellCode,这个东西相对来说操作就比较简单,算是Cobalt Strike的基础用法,教程也比较多,搜索一下就可以,这个内容使用Metaspolit框架也是可以制作的。
  • ……

  后面就是受害者点击木马文件,上线展示效果。

场景三:WIFI路由器局域网入侵

  这个场景对于我个人来说真的可太亲切了,我靠着这个攻击手法拿到了人生中第一次红队比赛的奖项,这个在红队中归结为近源渗透。也正是因为这个渗透攻击方法,让我在对方拔线的情况下直接将对方送出局。
  场景中唯一一个难点就是之前在环境搭建中提到的内网环境下怎么使用家用路由器,除此之外就是如何稳定的利用漏洞上线,我们这次选择MS17-010(永恒之蓝)进行内网攻击。上线成功率在彩排过程中是一直折磨我们的一个问题,前前后后一直弄了有半个多星期,客户那边意见还蛮大的,所以没办法,必须要排查出来原因。
  Metaspolit中的报错信息Exploit completed, but no session was created实在是太广泛,公开的原因中比较有参考价值的也就是说没有关闭Windows防火墙所导致网络问题,网络问题确实是影响的一段时间,攻击机的网口有些松动导致网线连接不稳定,在排除网络问题之后反复确认也不是因为防火墙这个原因。也有同事说要不试试反连的payload,结果可想而知,一样是不成功的,所以后续一直没有思路。
  有天下午彩排结束后依然在排查这个问题,不得已,我盯着那个服务器让同事去打,没成想,找到了可能导致问题的原因——虚拟机性能资源问题。怎么说呢,我让同事打虚拟机,然后我同时测试网络连通性,这是发现虚拟机直接卡住不动了,停掉攻击之后还能恢复正常,并没有蓝屏等其他的反应,这个时候我想会不会是因为资源少导致的性能问题,虚拟机初始的性能是1C2G,然后调整了虚拟机性能之后让同事再次进行攻击,结果如陆夫人玩战斗方块剧场过疯狂模式的福伯特关卡一样的顺畅无比!
  到这里,这个问题是终于解决了!以后再也不小气虚拟机资源了(捂脸哭)。。。
  对于WIFI网络密码,这个。。。你自己想吧,这么简单的问题...跑~

场景四:Bad USB

  这个也是我之前没有接触过的内容,听同事叙述就是很像一个U盘的USB硬件,内部是一块开发板,开发板上可以安装内存卡或者其他的存储介质用以存储一些恶意代码,我们在其中其实并没有使用比较高大上的恶意代码,敲定的是模拟键盘输入的代码,然后配合PowerShell的一系列命令上线Cobalt Strike,为了最后的展示效果还联动了Metaspolit进行其他的操作。
  这个也是有真实的案例,大名鼎鼎的"震网病毒",这个案例大家可以了解一下,这个案例比较典型,也可以作为你日常工作中可以使用的内容,具体看你怎么去提炼你所需要的内容。
  因为Bad USB这个东西我并没有做过,计划后续做一下这个的复现。
  更新:Bad USB攻击复现

附加场景:微信的使用安全——CVE-2021-21220

  这段时间闹得沸沸扬扬的某讯的第三方隐私共享文件相关事情导致有关部门开始注重微信使用的安全,客户在我们大部分内容准备完成之后提出了这个场景的需求,具体的需求就是"识图"、"恶意链接"等有关于微信使用安全的内容。
  识图这边,客户的主要需求点就是证明识图小程序的通讯流量的交互过程展示并证明出来。这个我们最后打算用ARP欺骗这个攻击去演示其中如果有人劫持流量的场景,这个不是重点,我这边就不进行赘述了,最后其实这个ARP欺骗的场景还是被舍弃掉了。
  重点是CVE-2021-21220这个漏洞所导致的微信点击恶意链接导致电脑上线的场景,这个漏洞我写在另外一篇文章中,具体分析一下CVE-2021-21220这个漏洞。

应急处置

  这个东西呢,其实并没有很多内容,因为使用了态势感知相关的设备,所以很多都是自动化处置,只需要展示部分攻击的日志记录和一些功能即可,这里就不过多赘述了,不过这里并不是正式的应急响应,仅仅只是针对于上述的场景的处置。应急响应的内容后续如果有机会也会进行整理发到我博客这边。挖坑ing

其他内容

主持人、讲解稿等

  在彩排的过程中一直是我们自己的同事在充当主持人的角色,因为懂得技术,所以磨合时间就没有很长,而且比较轻松,但最后客户那边还是告知我们说他们要安排另外的主持人,我们自己的人不能上去主持。那么主持人这一块只能花时间去磨合。
  讲解稿这边,在写这一段的时候并没有跟新来的主持人见面,所以还没有实际经历,简单写一下自己的想法吧。这也算是后续怎么去跟那边进行磨合吧。
  我自己有一个定义:把自己要说的一字不落的写出来的稿子叫口水稿。没办法,虽然很麻烦,而且我个人也比较反感这种稿子,但是这却是对不懂技术的人快速磨合最有效果的方法。这一步度过之后,后续我建议就是根据你们实际情况去进行,案例、要点、转场、串词等等内容,根据具体情况进行吧。

场地等其他因素

  其他的因素,总之就是一句话:提前做好准备,预想好所有可能出现的意外,对应做好准备。

写在最后

  这次写的比较杂乱,主要是一些思路的陈述,并没有很多实际的案例的方法,可能感觉会比较水,如果一样能给你提供帮助那就再好不过了,感谢你看到这里!
  这也是也是我第一次参与这样的演练性质的项目,给自己留下一些参考,后续如果有其他内容我还会继续更新,重开一篇或者就在这篇的基础上去更改为类似项目的总结文章到时候再去思考,这一阶段就先这样!