白袍的小行星

攻防演练中的自动化思考

字数统计: 1.5k阅读时长: 5 min
2021/03/19 Share

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

自动化资产收集

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

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

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

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

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

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

作为攻击方,我们要讲求一个效率问题,如同在2019 BCS红队行动里议题里讲的:
20210318205145ybnU3t
首先是大规模撒网,无果之后再采取手工精准测试。

子域名

子域名收集我个人喜欢使用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的端口和服务信息
  • 漏洞验证
  • 精准目标测试
  • 搜寻目标社工信息,生成字典
  • 钓鱼
  • ……

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

CATALOG
  1. 1. 自动化资产收集
    1. 1.1. 子域名
    2. 1.2. 空间搜索引擎
    3. 1.3. 可疑C段
    4. 1.4. 去重
  2. 2. 批量漏洞验证
  3. 3. 对精准目标的自动化
  4. 4. 其他信息自动化收集
    1. 4.1. 邮箱收集
    2. 4.2. 字典生成
  5. 5. 思路梳理