攻防演练中的自动化思考

  • A+
所属分类:安全文章
时间来到三月中旬,一年一度的全国攻防大演练就要开始了,但是自己还是觉得没准备好,想来想去不知道准备什么。
准备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的端口和服务信息

  • 漏洞验证

  • 精准目标测试

  • 搜寻目标社工信息,生成字典

  • 钓鱼

  • ……

本文只是一次简单的思考,写出来是为了整理自己的思路,以及收获一些意见。

白袍博客:https://eviladan0s.github.io

本文始发于微信公众号(安译Sec):攻防演练中的自动化思考

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: