攻防演练中的自动化思考

时间来到三月中旬,一年一度的全国攻防大演练就要开始了,但是自己还是觉得没准备好,想来想去不知道准备什么。
准备0day?挖不出来。准备内网乱杀?可能连边界都突破不了。到最后,决定准备一些自动化的内容,就当给能力强的同事打助攻了。

自动化资产收集

今天跟一个同事收集某个目标的信息,发觉自己的效率实在低得可怜。所有的IP和端口都要手工去验证一遍,FOFA搜关键字得到的链接也全都点一遍,一上午才完成了不到50个地址,并且还没发现有太大用处的信息。

对于某个目标,我们最先得知的一般都是其官网域名,后续可能会得知C段、子域等,要做到高度自动化,所收集的信息必须有较为同步的格式,不然就得花费时间和精力去整理归纳。

先来梳理一下我们需要的信息:

  • 有效子域名
  • 存活IP和开放端口
  • 网站cms版本
  • 服务组件
  • ……

那么大致的收集流程如下:

  1. 子域名爆破,验证有效性
  2. 空间搜索引擎获取相关IP和端口,验证存活和开放
  3. 可疑C段整体扫描,验证存活IP和开放端口
  4. 去重,获得整体资产

作为攻击方,我们要讲求一个效率问题,如同在2019 BCS红队行动里议题里讲的:


首先是大规模撒网,无果之后再采取手工精准测试。

子域名

子域名收集我个人喜欢使用OneForAll,每次收集到的都比较全面,速度也非常快。
关于子域名,主要关注域名本身、解析IP,还有响应码,通过这些可以快速判断是否为有效子域名。在OneForAll的输出结果里,所需要的列有:
urlsubdomainstatustitleresolver

使用脚本提取出这些列即可,最好也输出为csv文件。
之后就对这些列进行有效性验证,主要关注响应码为200403404的子域名,提取出来,供后面使用。

空间搜索引擎

使用FOFA这种空间搜索引擎可以获取到一些不在主域名周围的零散资产,通常有奇效,但使用手工的方式效率也太低,还需要借助脚本。
主要关注的内容也是IP和端口、响应码,以Web服务为主,生成的内容应该是类似这种的:http://192.168.1.1:8080,再借助脚本验证有效性。

可疑C段

遇到疑似目标的C段,可以使用Goby来扫描,还能顺便扫描漏洞,最后导出相关结果。

去重

需要自己写脚本完成,在这里放一个TODO,有空了尝试。

批量漏洞验证

需要验证的主要是一些被公布出来的漏洞,在某些边缘资产中有可能还没被修复。
这里主要使用xray来做漏洞验证,可以与Goby、AWVS联动使用。在正式的演练中不建议使用这种批量方式,因为防守方大都殚精竭虑地守在设备前,已知的POC流量会造成设备报警,就算有大量的代理,也会造成防守方警觉,所以还是需要更稳妥和安静的方式。

对精准目标的自动化

有可能在一大波操作之后,还是没有能利用的公开的漏洞。别灰心,一般还会有一些目标自主开发或闭源的系统,基本都是一个登录框。

针对登录框,要做的是尽量扩大攻击面,使用各种爬虫类工具收集额外信息。我常使用的有长亭出品的chaitin/rad,以及Threezh1/JSFinder.两者可以互补地从单个登录框中扒出更多信息。

Rad可以导出基本结果、完整结果和JSON,基本结果格式为:

GET http://example.com

而JSFinder导出的结果为纯URL格式,两者要做数据统一,最后再进行有效性验证,关注200、302、403、404.

其他信息自动化收集

邮箱收集

除了资产方面,我们还需要关注目标邮箱,在之后的钓鱼时用的上。
如果目标有自建的邮箱服务器,那自然是最好的,一般邮箱后缀都为目标的域名,对命名规则也要有大概的了解,可以借助自动化工具收集互联网上存在的邮箱。

有以下两款,基本都集成了通过各种接口来获取信息,需要自主配置:
GitHub - bit4woo/teemo: A Domain Name & Email Address Collection Tool
GitHub - laramies/theHarvester: E-mails, subdomains and names Harvester - OSINT

获得邮箱之后,还要做有效性验证,有可能一些邮箱已被停用,可以使用GitHub - Tzeross/verifyemail: Python在线验证邮箱真实性,支持批量验证

字典生成

通用的字典有时作用有限,还需要根据实际情况来生成。
特殊弱口令基本可以分为三个部分:

  • 特殊项:公司域名,姓名
  • 符号:如@!
  • 普通弱口令:年份、admin、123456

将三者进行不同的组合,可以获得一大批特殊弱口令,爆破时更有效果,主要的工具有BaiLu-SED-Tool以及pydictor.

思路梳理

最后来梳理下一场演练的大致流程:

  • 收集子域、C段
  • 收集相应IP的端口和服务信息
  • 漏洞验证
  • 精准目标测试
  • 搜寻目标社工信息,生成字典
  • 钓鱼
  • ……

本文只是一次简单的思考,写出来是为了整理自己的思路,以及收获一些意见,欢迎大家就本文跟我交流,提出宝贵意见。

首发于个人博客:攻防演练中的自动化思考 · 白袍的小行星

2 个赞

刚刚看到了这款工具,感觉不错,准备之后测试一下

学到了大哥的思,感谢分享

现在自动化真的太重要了……

1 个赞

请问大佬,文章方便转载以及二次编辑吗,最近也在思考同样的问题,提笔不知如何下手,大佬的文章是个不错的框架。

可以,注明来源即可

1 个赞