APT404-不作恶

在路上,一直在路上!

web渗透第一步之信息搜集[子域,旁站,C段,AS号...]



0x01 为什么要从子域入手
    如果我们的目标网络规模比较大,直接从目标主域入手显然是很不理智的,因为像这种规模的目标一般主域都是重点防护区域,与其浪费那个时间,不如先从目标的某个子域进去,然后再想办法迂回接近我们的真正目标,这样无疑是个比较好的选择,此时,也就不难理解那句话了,安全本就是一个全面立体的概念,单单只是边界几个点的安全,那不叫真正的安全

0x02 那么,现在问题来了,怎么尽可能多的搜集目标的高价值子域呢

0x03 利用dig 检查目标ns服务器是否允许传送
    出于习惯性反应,首先,你应该去查下目标的ns服务器是否允许区域传送,如果允许,直接把目标的整个子域备份过来即可,后面将要说的所有步骤就可以直接全省了,关于dig和nslookup的使用非常简单,请自行查看其命令帮助或谷歌,实际测试中,个人还是更推荐用dig [毕竟是从权威dns查的,结果相对较准]

查出目标所有的ns记录,然后挨个尝试目标ns服务器是否允许传送[这里要注意,务必是目标自己的ns服务器,第三方的不算],虽然说,可能性不太大,但运气好也不一定呢,总之,没尝试之前谁也不知道

1
2
3
4
# dig +short @8.8.8.8 cityu.edu.hk ns
vax.cityu.edu.hk.
cpccspc.cityu.edu.hk.
cpccux0.cityu.edu.hk.

通过上面的查询,我们确定了目标自己的三个ns服务器,下面就开始来尝试逐个传送,这里还是要注意,必须用目标自己的ns服务器来解析它自己的子域,如果还没搞清楚传送的具体原理,请务必先自行谷歌理解漏洞原理再来搞

1
2
3
# dig +nocmd @vax.cityu.edu.hk cityu.edu.hk axfr
# dig +nocmd @cpccspc.cityu.edu.hk cityu.edu.hk axfr
# dig +nocmd @cpccux0.cityu.edu.hk cityu.edu.hk axfr

很显然,上面的这些ns服务器都不允许传送,为了给大家看看实际的传送效果,这里就给大家一个可以传送的实例

1
# dig +nocmd @dns2.communilink.net i-software.com.hk axfr

0x04 从其他的各种记录中获取子域,如,mx记录,spf记录,srv记录…
    如果目标ns服务器实在不允许传送,我们就要开始后面正常的流程了,之所以要查各种记录,因为从这里也能获取一些目标子域,虽然想借此直接下手的可能性不太大,但对我们来讲同样有用

查目标的mx记录

1
2
# dig +short cityu.edu.hk @8.8.8.8 mx
smtp.cityu.edu.hk

0x05 各类子域搜集工具
    既然不让传送,其实也没什么特别好的办法,无非就是靠爆破或者从各类搜索引擎上现抓取,对于这类的脚本,质量也是参差不齐,既然有成品,我们不妨就直接拿过来改吧改吧接着用,像这种小脚本,没必要非花那个时间去自己写 [当然,对于自己练练代码还是很有必要的],不过,还是要先说明下,既然是个人写的小脚本,报错,不稳定,程序异常,是常有的事,毕竟,没有经过很多人长时间的测试,但我们的要求是,能用,结果正确,相对稳定可靠即可,效率可暂时不做过多考虑

0x06 介绍几款自己常用的perl脚本,功能强大,且较稳定,不出意外的情况下,基本都是自己的首选

dnsenum 搜集信息比较规整,全面,如,ns,mx,a记录,自动尝试区域传送,也会从搜索引擎上抓取目标子域不过早已不太好使了,当上述动作执行完之后,即开始爆破,最后,把获取到目标的所有的域名所在的ip段以CIDR格式列出来,工具的整个执行流程跟我们之前手工的过程几乎是一模一样的,这也是为什么之前要先带大家手工走一遍的原因,这样非常有助于我们深入去理解工具,以后如果我们自己想写工具或者定制别人的工具这些都是一手参考样本

1
2
3
4
5
常用选项:
-t 指定爆破线程
--dnsserver 指定用于查询的dns服务器地址
-f 指定子域字典
--enum 三个选项的集合 --threads 5 -s 15 -w

1
# dnsenum --dnsserver 8.8.8.8 --enum -f /usr/share/dnsenum/dns.txt cityu.edu.hk




dnsmap 另一款比较好用的子域爆破工具,功能虽然没dnsenum那么多,但更加直观简洁,就是速度稍微有些慢,不过还好啦

1
2
3
-w 指定域名字典
-r 指定结果存放位置
-i 把泛解析,丢到指定的地址上

1
# dnsmap cityu.edu.hk

fierce 功能基本同dnsenum,实际测试中,效果会更好一些,速度很快,结果相对比较准

1
2
3
4
5
常用选项:
-dns 指定要爆破的目标子域
-dnsserver 指定用域查询的dns服务器
-threads 指定爆破线程
-wordlist 指定域名字典

1
# fierce -dns cityu.edu.hk -dnsserver 8.8.8.8 -threads 20 -wordlist /usr/share/dnsenum/dns.txt


0x07 其它的一些py子域爆破脚本:

后面的几个脚本基本都是用dnspython库写的,所以,这里事先安装下,不过,在最新版的kali,默认就已经装好了:

1
# apt-get install python-dnspython

subbrute 说实话,并不怎么好用,速度慢,而且不太准,截取的信息也比较简陋,不过适合学习,关于此脚本库依赖,配置详情,请自行参考 https://github.com/TheRook/subbrute

1
2
3
4
names.txt		子域字典
resolvers.txt 用于请求查询的dns服务器地址
target.txt 准备好目标域名文件,可以同时跑多个子域
-s 指定自己的子域字典,默认会使用当前目录下的names.txt

1
# python subbrute.py -t target_domain.txt -c 16 -s /usr/share/dnsenum/dns.txt

subDomainsBrute 效果很一般,用的很少,关于此脚本依赖及配置,请参考 https://github.com/lijiejie/subDomainsBrute

1
2
3
dns_servers.txt 存放用于请求的dns服务器地址,里面最好加上谷歌的8.8.8.8
-t 指定扫描线程
-f 指定用于爆破的域名字典

1
2
# pip install dnspython gevent
# python subDomainsBrute.py -t 200 -f /usr/share/dnsenum/dns.txt cityu.edu.hk

Sublist3r 跟上面的靠纯字典爆破不同的是,该脚本是现从各类搜索引擎中抓取的目标子域,想法还是很不错的,而且现从各种搜索引擎抓取的子域质量要比前面单纯靠爆破出来的也要高的多的多,尼玛,就是谷歌抓取一直都有问题验证改的贼快,不靠人民币,看来是很难痛快的玩耍了,另外,顺带的端口探测也是蛮不错的,较实用,对了,使用此脚本前务必先挂好vpn,你应该懂的,更多详情请参考 https://github.com/aboul3la/Sublist3r

1
2
3
4
5
-d 	指定要爆破的目标子域
-p 扫描那些已经爆出来的子域所开放的端口
-t 指定爆破线程
-e 指定要爬取的搜索引擎,默认是从所有搜索引擎上抓取
-b 启用暴力破解模块

1
2
# pip install -r requirements.txt
# python sublist3r.py -d cityu.edu.hk -p 80,443,8080 端口不宜太多,不然速度会很慢


0x08 前面基本都是一些在终端下跑的小脚本,下面再来介绍一款纯图形化的信息搜集工具[本身的功能还是非常实用的,抓取目标子域只是它的一个辅助小功能而已]foca [对于大型目标相对比较好使],它最开始是用来搜集目标站点的各种元数据的[至于元数据是什么,请自行谷歌],但现在开始逐渐支持常规的web漏洞扫描,错误配置扫描,自定义谷歌dorks,支持外部插件等等……,功能也已经趋于完善,而且纯图形化,配置选项[可使用google或者bing api]一目了然,相信大家一上手就会了,关键是能用它爬到我们想要的东西,最好再提醒一句,务必挂上vpn,谷歌可能有时还是用不了,尼玛

1
工具官方站点, https://www.elevenpaths.com/labstools/foca/   	可自行下载

0x09 相比之下,国内的朋友可能对seay的Layer 更熟悉,说实话,我自己确实用的比较少,总体来讲,还不错,除了爆破,顺便还会把响应头中的各字段数据也截取一下,使用非常简单,调好线程,纯图形界面也比较友好……给个目标子域,跑起来即可,字典文件和程序在同目录,如果你觉得它的字典质量不高,可以自己往里面加一些子域名,或者干脆用自己的字典,说实话,实际测试效果很一般

0x10 有些大公司基本一个C段都是他自己的,这都比较正常,所以,直接找下C端的目标web也未尝不可,有机会还是能直接跨过去的

1
# masscan -p 80,81,82,443,8080,8081 144.214.2.0/24 --rate=100

0x11 另外,如果目标规模真的是特别大的情况下,可以从AS号反查目标对应的ip段,然后再从这些段里面入手,也是靠谱的,有很多类似功能的反查站点,大家去谷歌搜搜,肯定一大堆

1
https://asnip.net/

0x12 如果你实在不太相信这类工具的话,比如我,也可以自己手工在bing,google,shodan…上慢慢翻,反正我们的最终目的只是想尽快随便找个目标子域先进去,工具有时候不见得会快很多,而且工具暂时还不具备人的经验判断的,经常跑出来很多没用的东西,虽然,手工找,可能稍微繁琐点,但往往更精准,总体算来效率还是高的,而且找到的东西往往更有价值

1
2
3
site:*.cityu.edu.hk 	谷歌,bing找子域
hostname:"cityu.edu.hk" shodan可能效果会更好一点
...

0x13 我们通常需要重点关注的一些目标子域,总结的不是很全,一下子暂时就想到这么些,大家自己慢慢拓展吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
内部oa系统
类似citrix的各种虚拟化办公系统
监控系统
日志搜集系统
crm系统
cmdb系统
mail系统
一些用于内部测试的目标站点,正常情况下,新功能上线一般都会先丢到测试机器上跑跑,没问题才会更新到线上,既是测试站点,防御自然也相对薄弱
一些老旧目标站点,有些目标站可能年头有些久,但由于业务的问题暂时又不能关闭,这也是一些相对比较好下手的地方
一些可能用于备份的机器,比如,边界的NFS,Rsync之类的
各类java控制台
各类服务器web管理面板
各类路由web管理面板
一些带有各类远程执行漏洞的特定版本的web中间件,比如,IIS6.0,Tomcat,jboss...
一般从子域命名大致都能看的出来,诸如,oa,zabbix,nagios,cacti,erp,sap,crm,cmdb,old,bakup,test...直接尝试针对这些的各类漏洞利用
所以,这个域名字典务必要有很强的针对性,最好花点时间自己好好整理一份留着,不然也很难跑出来我们想要的东西...
...

搜集目标子域小结:
    有时候,比如,当你直接跑test.org子域同时跑出来了os.test.org和monitor.os.test.org,这时你不妨尝试再把os.test.org当子域跑跑,说不定从这个子域下又会有不少收获,不过上面有些脚本也会自动遍历多级子域,这确实是个不错的切入点,可能还有些泛解析的问题,不过那些问题不太大,关于子域的各类查找手段,暂时就这些了,不管是爆破还是现从各种搜索引擎上抓取,我们最终目的只是为了想法设法接近我们真正的目标或者拿到一个边界入口,为我们后续方便进入目标内部先铺好路,工具仅仅只是为了辅助我们快速完成这一目的,并非决定性因素,所以大可不必在这类的工具上花太多时间,知道你自己想要的是什么就好了,还是那句话,你所搜集的每一个信息都有它存在的价值和意义,不要盲目,切记,从上面我们不难看到,反而是越大的目标,能入手的点就越多,废话不多说,祝大家好运吧 ^_^ ,最后觉得还是要再提醒大家一下,这里只是为了给大家更直观的说明,才不得不用了一些真实站点,希望大家不要恶意破坏,否则,后果自负

搜集目标的C段旁站信息 [主要针对某些小型单个目标站点]:

0x01 什么是旁站
    和搜集子域的情况类似,我们的直接目标站做的比较到位,从目标站本身基本上找不到什么比较好的入手点,这时候,如果想要快速拿下目标的话,一般都会先找个目标站点所在服务器上其他的比较好搞的站下手,然后再想办法跨到真正目标的站点目录中,前提是有权限,如果实在跨不过去,就只能想办法先提权[说实话,虚拟机其实是比较难提的]了,拿到服务器的最高权限以后就可以对目标站为所欲为了,一般我们把这种渗透方式就叫旁站,至于渗透同服其它网站的方法,和常规的web渗透并没什不同,只是相当于绕了个路进去的而已,关于web渗透,后续还会有大量的篇幅专门来说明,这里先不用着急

1
旁站: 和目标网站在同一台服务器上的其它的网站

0x02 什么是C段
    和旁站差不多的是,旁站是通过同一台服器上的其它网站跨到目标站的目录里,而C段,则是通过目标所在C段的其他任意一台机器,想办法跨到我们的目标机器上,至于怎么跨,嗅探,社工,web……随你便,反正最终目的能跨过去即可,实战可能还会有个问题就是,你搞下的一台目标C段机器在内网,也就是说它根本没有公网ip[靠路由映射进去的],像如果是这种情况,这台机器对你就没什么价值了,另外,如果是虚拟机,这种方式可能也不太好使,因为光提权就比较困难,这只是其中一个问题,很多其它的问题,我们暂时先不说,后续碰到再详细说,这里先理解一下基础概念即可

1
C段: 和目标机器ip处在同一个C段的其它机器,即都在同一个交换机下

0x03 关于旁站/C段工具的基本编写原理
    现在市面上这类的工具也是多如牛毛,但各有优劣(可能是接口质量的差别吧),但大多数都是用bing的接口,把查询到的结果数据中的旁站链接提取出来,C段和旁站唯一不一样的地方,就是C段是把整个段的ip上的旁站都轮询一遍,不过在此之前你需要先申请一下bing的搜索api,其实我自己都是选择性的用,因为不太准,手工直接在bing里面翻翻可能就有了,因为工具本身有时可能会漏掉很多有价值的参考信息,反正我们的目的就是随便找个能进去的站即可,怎么找,随意,你自己觉得怎么快就怎么来,渗透在乎更多的是结果和效率,过程几乎都不会太在意

0x04 好了,这部分内容确实比较简单,工具也没太多技术含量,单纯只是为了给大家理解一些基本概念而已,就不多说了

其实,还有非常多的一些提供类似功能的工具站,之前好用的,现在大多已经失效了,后期遇到好的再贴上来,大家可自行去谷歌上搜搜,确实挺多的,不过大部分似乎并不太好用,另外,大家如果有任何问题或者建议,也可直接私信我,其实,我一直都在

1
http://www.sameip.org/