apsry

去留无意,宠辱不惊

0%

外网信息收集

外网信息收集

外网信息收集

前言

最近在对以往所学习的有关红队的知识点进行梳理总结,这里主要参考了 ATT&CK 矩阵模型,不过对其进行了简化,同时加入了一些国内特有的情况放了进去。

大体上会按照外网信息收集、打点、权限维持、提权、内网信息收集、横向移动、痕迹清理这样的顺序展开。

img

因为是梳理总结性的文章,所以文章的侧重点在于「面」而不在于具体的某个「点」,因此文中的具体技术细节不会展开去谈,不然内容会很多。

想了解具体细节的读者可以去看看我的个人公众号 TeamsSix 里的历史文章,里面会有针对一些点展开描述的文章。

受限于个人水平,文中难免会出现错误或者描述不当的地方,还望在评论处指出,望谅解。

1 确定目标

当开始做信息收集之前,肯定是要先确定目标的,在红队项目或者 HW 项目中,一般目标都是一个公司的名称,然后通过这个公司的名称获取各种信息,接着开展外网打点、内网渗透等等工作。

在我们得知目标公司名称后,就可以开展信息收集的工作了。

2 外网信息收集

我这里梳理了大概以下这些信息收集的方式,当然肯定是不全的,欢迎大家在评论区一起补充讨论:

img

1、组织股权结构

拿到公司名称后,先不用急着查备案、找域名,而是先看看这家公司的股权构成,因为一般一家公司的子公司也是可以作为目标去打的,不过有时是要求 50% 持股或者 100% 持股,这个就要看具体实际情况了。

比较常见的查询公司组织股权结构的网站有天眼查、企查查、爱企查、小蓝本、钉钉企典等等。

如果目标持股公司不多,可以直接看股权穿透图,比较直观;如果持股公司比较多,股权穿透图看着就比较费力了。

重点:一般是官网,微信公众号,app

img

除了股权穿透之外,还可以看它的对外投资信息

img

这两个地方都可以查到有目标持股的公司。

如果目标比较少一个一个子公司的去看还好,但如果目标很多,那这效率就很低了,好在现在也有了现成的工具。

ENScanGo

ENScanGo 是现有开源项目 ENScan 的升级版本,工具地址:https://github.com/wgpsec/ENScan_GO

img

这是一款由狼组安全团队的 Keac 师傅写的专门用来解决企业信息收集难的问题的工具,可以一键收集目标及其控股公司的 ICP 备案、APP、小程序、微信公众号等信息然后聚合导出。

例如我这里搜集「北京百度网讯科技有限公司」以及他持股了 50% 的公司信息。

1
enscan -n 北京百度网讯科技有限公司 -invest-num 50

收集后的结果如下:

img

这样一来,直接省去了收集 ICP 备案的步骤,一键获得了目标公司及其子公司的公司名称、app、微信公众号、ICP 备案等信息。

2、主域名查询

主域名查询可以分为备案域名查询和未备案域名查询

备案域名查询

除了上面从企业信息查询网站中获取到备案信息外,最全也是最准确的方法就是去国家的备案信息查询网站里查询了,地址为:https://beian.miit.gov.cn

除了官方的渠道外,还有一些第三方的备案域名查询站点,比如站长之家等等。

未备案域名查询

  • 通过目标已知的网站获取

有些企业会把自己的其他业务站点放在网站尾部,里面也许会包含未备案的站点。

img

  • 通过 Fofa 等空间引擎进行证书、图标关联搜索,然后指定搜索规则 is_domain=true,即表示只返回域名

img

3、子域获取

比较常见的工具就是 OneForAll,除此之外还有 amass、subfinder、xray、ksubdomainr、subDomainsBrute等等。

如果提前知道目标,还可以提前收集一波子域,然后项目快开始的时候,再收集一波子域,将两次收集的结果做下对比,优先打新增子域。

https://github.com/shmilylty/OneForAll

4、端口扫描

一般比较常见的可能就是 nmap ,masscan ,fofa ,goby 了,这里分享一个 nmap 快速扫描全部端口的命令

1
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 只扫描端口,不做漏洞扫描

1
fscan -hf hosts.txt --nopoc -t 100

fscan 默认线程是 600,因为是外网扫描 600 的线程就比较大了,所以这里设置了 100,如果感觉扫描结果不理想,线程还可以设置的再小点。

端口扫描可以结合空间搜索引擎的结果,如果通过空间搜索引擎发现目标存在很多的高位端口,那么在进行端口扫描的时候就要记得也把这些高位端口加上。

5、指纹识别

指纹识别是我个人觉着非常重要的一点,因为指纹识别的结果对打点的帮助是很大的,可以让打点更有针对性,同时也会节省很多时间。

比较常见的在线指纹查询网站有 godeye 和云悉等,工具有 observer_ward 和 Ehole 等。

img

云悉

https://www.yunsee.cn/

在线识别

http://whatweb.bugscaner.com/look/

fofa,goby测绘

https://fofa.so/

wappalyzer插件

火狐,谷歌插件

潮汐指纹识别

http://finger.tidesec.net/

数字观星

https://fp.shuziguanxing.com/#/

一些工具

https://mp.weixin.qq.com/s/lHIJmIWbm8ylK6yjjmmNkg

6、空间搜索引擎

擅用空间搜索引擎,有时可以在最初刚拿确定目标的时候就发现目标弱点。

目前比较常见的空间搜索引擎有 Fofa、Shodan、360 夸克、奇安信全球鹰、知道创宇 ZoomEye 等等。

常见的工具有 Fofa_Viewer、FofaX、Kunyu,其中 Fofa_Viewer 为图形化界面,使用友好,下载地址:https://github.com/wgpsec/fofa_viewer

img

FofaX 为命令行界面,FofaX 可以结合其他工具联动使用,除了这两个工具调用 Fofa 接口外,上面提到的 Ehole 也可以调用 Fofa 查询。

Kunyu 调用的是 ZoomEye 的接口,工具下载地址:https://github.com/knownsec/Kunyu

img

7、api 接口

获取 api 接口常用的工具有 jsinfo、findsomething、jsfinder、BurpJSLinkFinder 等等。

如果找到了一些未授权接口,也许就可以搞到一些高价值信息,比如大量敏感信息泄露之类的。

另外在翻 js 文件的时候,可以关注下有没有以 runtime 命名的 js 文件,因为在这种 js 文件中会包含其他 js 文件的名称(包括当前页面没有加载的 js 文件),这样利用 runtime js 文件就发现了更多的 js 文件,使得找到 api 接口的概率又大了些。

img

8、目录获取

目录扫描比较常用的工具有 dirsearch、ffuf,wfuzz,御剑

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 站点,也可以尝试去爆破邮箱用户名

11、真实ip

关于真实ip

现在大多数的网站都开启了CDN加速,导致我们获取到的IP地址不一定是真实的IP地址。
什么是CDN呢?
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
如果想获取真实IP,我们可以使用以下几种方法

多地Ping法:

由CDN的原理,不同的地方去Ping服务器,如果IP不一样,则目标网站肯定使用了CDN。
这里推荐一个网站可以多个地点ping服务器,https://asm.ca.com/en/ping.php

https://ping.chinaz.com/

http://www.webkaka.com/ping.aspx

image-20220311172148709

二级域名法:

目标站点一般不会把所有的二级域名放cdn上。通过在线工具如站长帮手,收集子域名,确定了没使用CDN的二级域名后。本地将目标域名绑定到同IP(修改host文件),如果能访问就说明目标站与此二级域名在同一个服务器上;如果两者不在同一服务器也可能在同C段,扫描C段所有开80端口的IP,然后挨个尝试。

nslookup法:

http://tool.chinaz.com/nslookup

找国外的比较偏僻的DNS解析服务器进行DNS查询,因为大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有很大的几率会直接解析到真实IP。

Ping法:

直接ping example.com而不是www.example.com,因为现有很多CDN厂商基本只要求把www.example.com cname到CDN主服务器上去,那么直接ping example.com有可能直接获得真实IP。

浏览器插件:

fofa pro view ;shadon

shadon

image-20220311172243091

fofa pro view

可以看fofa对该网站的基本信息,查询C段

Snipaste_2021-08-04_10-52-16

12:信息泄露

github泄露

image-20220311172327105

image-20220311172357416

百度贴吧

image-20220311172445599

image-20220311172527444

Snipaste_2021-08-04_15-45-00

image-20220311172611612

Snipaste_2021-08-04_15-50-40

社会工程,大学表白墙

JS信息泄露

1
python JSFinder.py -u http://aaaaa/AC/sso/login

image-20220311172757561

网盘信息

网盘信息里有时也会发现不少好东西,这类网站也很多,可以在爱达杂货铺导航站里找到很多网盘搜索类站点。

谷歌hack

参考:https://blog.csdn.net/u012991692/article/details/82937100

1
2
3
与或非

AND | -

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
查找登陆点
site:域名inurl:login|admin|manage|member|admin_login|login_admin|system|login|user|main|cms

查找文本内容:site:域名 intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号|admin|login|sys|managetem|password|username
查找可注入点:
site:域名 inurl:aspx|jsp|php|asp
查找上传漏洞:
site:域名 inurl:file|load|editor|Files
查找eweb编辑器:
site:域名 inurl:ewebeditor|editor|uploadfile|eweb|edit
存在的数据库:
site:域名 filetype:mdb|asp|
查看脚本类型:
site:域名 filetype:asp/aspx/php/jsp
迂回策略入侵:inurl:cms/data/templates/images/index/
1
site:.edu.cn   intext:管理|后台|登陆|用户名|密码|验证码|系统|帐号|admin|login|sys|managetem|password|username

image-20220311172907872

1
site:.edu.cn   inurl:login|admin|manage|member|admin_login|login_admin|system|login|user|main|cms

image-20220311172906641

13:whois查询

https://whois.chinaz.com/

http://whoissoft.com/

http://tool.chinaz.com/ipwhois

https://tool.chinaz.com/ipwhois/?q=222.22.241.83

whois中包含了用户,邮箱,以及购买的网段!

whois反查

http://whois.chinaz.com/reverse?ddlSearchMode=1

微步在线ip反查域名

https://x.threatbook.cn/

14、资产监控平台

水泽

https://github.com/0x727/ShuiZe_0x727

ARL灯塔

https://github.com/TophantTechnology/ARL

rengine(国外的,很好用)

https://github.com/yogeshojha/rengine

15、其他信息

其他的信息比如 app、小程序、供应商、外包合作商、公众号等,或多或少都可以从上面的组织股权架构类网站中查询到,或者使用 ENScan 也可以。

其中比较值得注意是的供应商和外包合作商,如果拿下供应商也许可以直接进入目标内网,如果拿下外包合作商则可以借助这一层关系进行社工或者尝试进入目标内网等操作。

3 后记

红队中的信息收集当然远不止上面说到的,其他比较常用的还有资产监控平台、社工库、自动化信息收集工具(比如 ShuiZe)以及各种内部红队平台等等,这里篇幅有限就不再展开了。

本文将聊一聊红队中的打点。

img

受限于个人水平,文中难免会出现错误或者描述不当的地方,还望各位在评论处指出,望谅解。

打点

打点或者说建立据点、最初入口,都是一个意思,这就类似于古代攻打城墙,不管是通过直接正面撞城门还是翻城墙、亦或是挖地道、利用间谍从内部打开城门等等方法,最终的目的都是为了进入到城墙里。

在红队中的打点也是这个概念,不管是通过 0day 还是 nday、亦或是利用钓鱼、社工、近源等等,最终的目的都是为了进入到目标的内网里。

这里就简单谈谈红队中关于打点的那些事儿。

img

1、0day 和 nday

0day 和 nday 去打的方式是目前最常见的方式,同时也是蓝队比较关注的方式。

这些年来比较常见的 0day 与 nday 相关服务有 Shiro、Fastjson 为代表的中间件,泛微、致远、通达为代表的 OA 系统,之外还有用友、各类安全设备、VPN 等等。

在上文中提到了指纹识别,这里就能派上用场了,比如如果最近爆出来了某某 cms 存在 0day,那么通过指纹识别的结果找到存在这个 cms 的资产,直接就能打到点,但如果指纹识别的不准确或者漏识别,也许就会比别人少了一个点。

另外可以预见的是,未来关于 log4j2 的利用肯定会越来越多。

同时结合目前的国内情况来看,关于这些 0day 和 nday 的详情以及相应的利用工具也会越来越小范围得被传播,即使有些会被大范围传播,但一些内部版、增强版的工具还是会小范围的传播。

2、合法账号

合法账号也是目前比较常见的方式,比如通过字典爆破、社工字典爆破、弱密码猜解或者钓鱼获得目标的 VPN、SSH、RDP、Citrix 可用账号等等。

但这类打点方式有时不如利用 0day 和 nday 来得快,只要对方没有什么弱密码就比较难进了,不过也会经常遇到弱密码 yyds 的情况。

不过在内网中,利用合法账号就比利用 0day 和 nday 来得快了,因为在内网中常常会有通用密码,拿到这个通用密码,或许就能拿下一大批 Linux、Windows

img

同时在进入系统后,往往还会发现密码本或者浏览器存储密码等等,这样利用合法账号又能拿下不少系统的权限,不过这就偏离本文打点的主题了,就不再展开了。

3、钓鱼邮件

钓鱼邮件也是现在比较常用的方法,想要利用好钓鱼邮件,一个是要有好杆一个是要有好饵。

img

好杆就是发送钓鱼邮件的工具,好饵就是邮件的内容,邮件的内容又可以分成正文部分和附件部分,正文部分得让人看了觉着没问题,附件部分打开得不能报毒。

在平时常规的红队项目中,一般发送钓鱼邮件会批量发送多封,而不是像 APT 那样精准发送某一个或几个人。

批量发送邮件就需要解决不被对方邮件网关拦截的问题,同时也要解决发送邮件效率的问题,毕竟面对几十上百封的邮件,如果手动发送这个效率是会比较低的。

其次就是邮件内容的问题,一般会使用一些近期的热点事件、节假日通知等等作为话术的主题,比如《关于离开本市返乡过年需要报备的通知》《关于春节放假时间安排的通知》等等这类吸引人们查看的话术。

img

邮件附件也需要做好免杀,不然可能邮件还没发到别人邮箱里,就被网关拦截了,或者刚想打开附件就被杀软报毒了,这都是不行的。

钓鱼除了使用邮件外,还可以使用钓鱼站点、问卷调查、微信群、QQ群等等方式。

img

总之,钓鱼是一个环环相扣的过程,不存在那个环节重要不重要,因为所有环节都是重要的,如果其中有一环被忽视或者没处理好,就会导致整个钓鱼的失败。

4、近源攻击

近源攻击现在也是比较常见的方式了,常见的手法有以下几种:

  • WIFI 钓鱼,比如大菠萝等设备
  • 通过 NFC 设备复制目标员工门禁卡,方便接下来进入到目标办公区
  • 通过 bad usb 钓鱼
  • 直接连接墙上的网卡(风险有些高)
  • 在目标建筑附近连接对方的访客 WIFI,比如利用无人机、雷达型无线网卡等,或者将一个带有远控功能的 4G 无线路由器放到目标附近

img

  • 进入到目标的公共区域内,寻找智能终端设备,一般这种都是通内网的,但一般不通外网,不过如果是智能售货机这种一般就会通外网

img

  • 利用目标在互联网上开放的系统,比如开发者平台,有的会提供在线测试真机,这种测试真机一般都是在目标办公区域的,利用这点也可以进行近源
  • 在墙上贴一个《受疫情影响进入本区域需要扫码登记》的问卷调查二维码

除了上面的这些方法,肯定还有很多其他的方法,比如伪装成水电工、外卖员、面试人员进入目标内部啥的,近源社工这块感觉还是得向凱文·米特尼克学习,虽然他的那些方法手段是几十年前的,但其中的思路是不会过时的。

5、供应链攻击

供应链攻击有时也会被大家所使用,这种一般都是对付难以攻克的目标,比如金融行业。

首先拿下目标的供应商,借助供应商进入目标内网,一般在一些乙方供应商官网都会写下自己的客户单位,借助这点就能定位到这个供应商是否是目标的供应商。

但是供应链攻击会有些看运气,也许费力半天劲儿拿下了供应商,却没有通向目标的路,但也有发现通向了很多目标的情况。

所以当常规的手段都不奏效的时候,就可以试试供应链,也许就会柳暗花明又一村。

6、水坑攻击

水坑攻击感觉平时挺少有人去用,水坑攻击顾名思义就是在一个人经常走的路上挖一个坑。

放到安全的世界里就是事先分析目标的上网活动规律,找到目标经常访问的网站,然后攻击者拿下这个目标网站并植入恶意代码,当目标访问这个网站的时候就会中招了。

比较常见的手法有以下几种:

  • 在页面中嵌入 XSS,获取目标的 Cookie

img

  • 在网站上挂上带有后门的软件,例如之前的 phpstudy 后门事件
  • 引导用户访问精心构造带有 POC 的站点,比如 CVE-2018-4878 或者之前的 Chrome 沙盒 0day 等等

水坑攻击的方式也是多种多样,只不过不太适合需要短期快速打点的项目。

2 后记

在 ATT&CK 里,关于打点的方法是不止这些的,但其中一些平时很少遇到并且很少去使用的,比如硬件攻击等等,这类就不展开谈了。

总的来说在红队中,攻击的手法可以说是没有手法,因为手法是在是太多了,尤其是在 HW 时期,各种真真假假,让人根本没法判断,总有人能玩出花儿来。

但是有一点可以确定的是,打点远不止拿个公开已知漏洞去打这一种方式,还有很多其他的方法,还有很多其他的路。

Web 进不去不代表这个目标就是安全的,人员才是整个系统中最薄弱的环节。