0x00 前言
最近在对以往所学习的有关红队的知识点进行梳理总结,这里主要参考了 ATT&CK 矩阵模型,不过对其进行了简化,同时加入了一些国内特有的情况放了进去。
大体上会按照外网信息收集、打点、权限维持、提权、内网信息收集、横向移动、痕迹清理这样的顺序展开。
因为是梳理总结性的文章,所以文章的侧重点在于「面」而不在于具体的某个「点」,因此文中的具体技术细节不会展开去谈,不然内容会很多。
想了解具体细节的读者可以去看看我的个人公众号 TeamsSix 里的历史文章,里面会有针对一些点展开描述的文章。
受限于个人水平,文中难免会出现错误或者描述不当的地方,还望在评论处指出,望谅解。
0x01 确定目标
当开始做信息收集之前,肯定是要先确定目标的,在红队项目或者 HW 项目中,一般目标都是一个公司的名称,然后通过这个公司的名称获取各种信息,接着开展外网打点、内网渗透等等工作。
在我们得知目标公司名称后,就可以开展信息收集的工作了。
0x02 外网信息收集
我这里梳理了大概以下这些信息收集的方式,当然肯定是不全的,欢迎大家在评论区一起补充讨论:
1、组织股权结构
拿到公司名称后,先不用急着查备案、找域名,而是先看看这家公司的股权构成,因为一般一家公司的子公司也是可以作为目标去打的,不过有时是要求 50% 持股或者 100% 持股,这个就要看具体实际情况了。
比较常见的查询公司组织股权结构的网站有天眼查、企查查、爱企查、小蓝本、钉钉企典等等。
如果目标持股公司不多,可以直接看股权穿透图,比较直观;如果持股公司比较多,股权穿透图看着就比较费力了。
除了股权穿透之外,还可以看它的对外投资信息
这两个地方都可以查到有目标持股的公司。
如果目标比较少一个一个子公司的去看还好,但如果目标很多,那这效率就很低了,好在现在也有了现成的工具。
ENScanGo
ENScanGo 是现有开源项目 ENScan 的升级版本,工具地址:https://github.com/wgpsec/ENScan_GO
这是一款由狼组安全团队的 Keac 师傅写的专门用来解决企业信息收集难的问题的工具,可以一键收集目标及其控股公司的 ICP 备案、APP、小程序、微信公众号等信息然后聚合导出。
例如我这里搜集「北京百度网讯科技有限公司」以及他持股了 50% 的公司信息。
enscan -n 北京百度网讯科技有限公司 -invest-num 50
收集后的结果如下:
这样一来,直接省去了收集 ICP 备案的步骤,一键获得了目标公司及其子公司的公司名称、app、微信公众号、ICP 备案等信息。
2、主域名查询
主域名查询可以分为备案域名查询和未备案域名查询
备案域名查询
除了上面从企业信息查询网站中获取到备案信息外,最全也是最准确的方法就是去国家的备案信息查询网站里查询了,地址为:https://beian.miit.gov.cn
除了官方的渠道外,还有一些第三方的备案域名查询站点,比如站长之家等等。
未备案域名查询
有些企业会把自己的其他业务站点放在网站尾部,里面也许会包含未备案的站点。
- 通过 Fofa 等空间引擎进行证书、图标关联搜索,然后指定搜索规则 is_domain=true,即表示只返回域名
3、子域获取
比较常见的工具就是 OneForAll,除此之外还有 amass、subfinder、xray、ksubdomain 等等。
如果提前知道目标,还可以提前收集一波子域,然后项目快开始的时候,再收集一波子域,将两次收集的结果做下对比,优先打新增子域。
4、端口扫描
一般比较常见的可能就是 nmap 和 masscan 了,这里分享一个 nmap 快速扫描全部端口的命令
nmap -sS -Pn -n --open --min-hostgroup 4 --min-parallelism 1024 --host-timeout 30 -T4 -v -p 1-65535 -iL ip.txt -oX output.xml
不过除了这些方法外,fscan 其实也可以拿来做外网的端口扫描,而且速度更快
比如用 fscan 只扫描端口,不做漏洞扫描
fscan -hf hosts.txt --nopoc -t 100
fscan 默认线程是 600,因为是外网扫描 600 的线程就比较大了,所以这里设置了 100,如果感觉扫描结果不理想,线程还可以设置的再小点。
端口扫描可以结合空间搜索引擎的结果,如果通过空间搜索引擎发现目标存在很多的高位端口,那么在进行端口扫描的时候就要记得也把这些高位端口加上。
5、指纹识别
指纹识别是我个人觉着非常重要的一点,因为指纹识别的结果对打点的帮助是很大的,可以让打点更有针对性,同时也会节省很多时间。
比较常见的在线指纹查询网站有 godeye 和云悉等,工具有 observer_ward 和 Ehole 等。
6、空间搜索引擎
擅用空间搜索引擎,有时可以在最初刚拿确定目标的时候就发现目标弱点。
目前比较常见的空间搜索引擎有 Fofa、Shodan、360 夸克、奇安信全球鹰、知道创宇 ZoomEye 等等。
常见的工具有 Fofa_Viewer、FofaX、Kunyu,其中 Fofa_Viewer 为图形化界面,使用友好,下载地址:https://github.com/wgpsec/fofa_viewer
FofaX 为命令行界面,FofaX 可以结合其他工具联动使用,除了这两个工具调用 Fofa 接口外,上面提到的 Ehole 也可以调用 Fofa 查询。
Kunyu 调用的是 ZoomEye 的接口,工具下载地址:https://github.com/knownsec/Kunyu
7、api 接口
获取 api 接口常用的工具有 jsinfo、findsomething、jsfinder、BurpJSLinkFinder 等等。
如果找到了一些未授权接口,也许就可以搞到一些高价值信息,比如大量敏感信息泄露之类的。
另外在翻 js 文件的时候,可以关注下有没有以 runtime 命名的 js 文件,因为在这种 js 文件中会包含其他 js 文件的名称(包括当前页面没有加载的 js 文件),这样利用 runtime js 文件就发现了更多的 js 文件,使得找到 api 接口的概率又大了些。
8、目录获取
目录扫描比较常用的工具有 dirsearch、ffuf
ffuf 更侧重于 FFUZ,不过不管是目录扫描还是 FFUZ ,扫描的结果都在于字典,Github 上 4k 多个 star 的字典:https://github.com/TheKingOfDuck/fuzzDicts
9、邮箱地址获取
邮箱地址比较常用的方法有直接通过搜索引擎找网上公开的邮箱信息,这种往往会指向目标的网站中,比如目标某个网页的附件中包含有邮箱等信息。
之外还可以使用 Github 搜索目标公司开发者在代码中注释的邮箱信息,其实不太明白为什么开发者都喜欢把自己的邮箱注释到代码里。
也可以通过领英找到目标公司的员工姓名,通过「拼音+@公司域名」的方法去构造员工邮箱。
也有一些网站可以查询邮箱,这种比较方便,比如以下网站:
https://www.skymem.info/
https://app.snov.io/domain-search
https://www.email-format.com/i/search/
另外如果收集到了目标的 outlook 站点,也可以尝试去爆破邮箱用户名
10、网盘信息
网盘信息里有时也会发现不少好东西,这类网站也很多,可以在爱达杂货铺导航站里找到很多网盘搜索类站点。
11、其他信息
其他的信息比如 app、小程序、供应商、外包合作商、公众号等,或多或少都可以从上面的组织股权架构类网站中查询到,或者使用 ENScan 也可以。
其中比较值得注意是的供应商和外包合作商,如果拿下供应商也许可以直接进入目标内网,如果拿下外包合作商则可以借助这一层关系进行社工或者尝试进入目标内网等操作。
0x03 后记
红队中的信息收集当然远不止上面说到的,其他比较常用的还有资产监控平台、社工库、自动化信息收集工具(比如 ShuiZe)以及各种内部红队平台等等,这里篇幅有限就不再展开了。