信息收集(一)域名信息收集
前言
信息收集也叫做资产收集。信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口
一般渗透测试的流程是这样的:
外网信息收集–>打点(边界突破)–> 内网渗透
域名信息收集
什么是域名?
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
列如:baidu.com、qq.com、abc.com
域名的分类
域名也有分类
一、种类分类
1、域名按语种的不同划分
中文域名、英文域名、日文域名和其他语种的域名
2、按域名所在的域的不同划分
顶级域名、二级域名.com域名是使用最早也最广泛的域名。例如表示工商企业的.com。表示网络提供商的.net。表示非盈利组织的.org。二是国家域名,又称为国内顶级域名(national top-level domainnames,简称nTLDs),即按照国家的不同分配不同后缀,这些域名即为该国的国家顶级域名。目前200多个国家和地区都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等
3、按管理机构的不同分为
国际域名由非营利性国际组织ICANN(The Internet Corporation for Assigned Names and Numbers)运营管理—以.com、.net、.org、.cc 、.tv等根域为后缀的域名,国家域名—在的后面再加上国家代码(如中国为.CN,日本为.JP,英国为.UK)后缀的域名
4、按后缀的不同形式分为
- .COM 商业性的机构或公司
- .ORG 非盈利的组织、团体
- .GOV 政府部门
- .MIL 军事部门
- .NET 从事Internet相关的的机构或公司
- .AC 科研机构
- .EDU 教育机构,互联网通用顶级域之一,主要供教育机构,如大学等院校使用
- .ARPA,由ARPANET(美国国防部高级研究计划局建立的计算机网)沿留的名称,被用于互联网内部功能
- .BIZ 网络商务向导,适用于商业公司(注:biz是business的习惯缩用)
- .info 提供信息服务的企业
- .pro适用于医生、律师、会计师等专业人员的通用顶级域名
- .name 适用于个人注册的通用顶级域名
- .coop 适用于商业合作社的专用顶级域名
- .travel 旅游域名,国际域名
- .int 国际组织
什么是子域名
比如whoami.com是一个域名,那么a.whoami.com、b.whoami.com类似这样的格式的域名就是whoami.com的子域名,都是属于whoami.com的资产
怎么查询子域名?
OneForAll
在渗透测试中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:
- 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证,FUZZ以及信息拓展等功能
- 不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多
- 缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的
- 效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢
为了解决以上痛点,此项目应用而生,正如其名,OneForAll是一款集百家之长,功能强大的全面快速子域收集终极神器
工具的安装和使用
下载好OneForAll,进入到OneForAll的目录下,执行以下命令安装OneForAll所需的环境依赖
python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
OneForAll扫描网站
单个目标网站扫描
python oneforall.py --target baidu.com run
# --target 指定扫描的网站
扫描完成后会在oneforall的目录下的result文件夹里生成爆破出来的子域名
批量扫描
python oneforall.py --targets target.txt run
#target.txt写上需要批量爬取域名
扫描后的结果同样会在oneforall的目录下的result文件夹里生成
全部扫描完成后还会生成一个excal表格,非常方便查看和筛选域名信息
subDomainBrute
subDomainsBrute是一款高并发的DNS暴力枚举工具
下载地址:subDomainsBrute下载地址
工具的安装和使用
下载好subDomainsBrute后,进入目录,执行以下代码安装环境依赖
pip install dnspython gevent
用法:subDomainsBrute.py[选项]target.com
选项:
--version 显示程序的版本号并退出
-h、--help 显示此帮助消息并退出
-f FILE文件包含新的换行子,默认为subnames.txt文件。
--full 完全扫描,将使用NAMES FILE subnames_full.txt暴力破解
-i、 --ignore-intranet 忽略指向专用IP的域
-w、--wildcard 通配符测试失败后强制扫描
-t THREADS, --threads=THREADS 扫描线程数,默认200
-p PROCESS, --process=PROCESS 扫描进程数,默认为6
-o OUTPUT, --output=OUTPUT 输出文件名称 {target}.txt
subDomainsBrute扫描网站
python subDomainsBrute.py -t 20 baidu.com -o baidu.txt
当网站扫描完成后,会在 subDomainsBrute目录下生成一个baidu.txt文件,里面存放着百度的子域名信息
在线网站查询子域名
除了使用工具去查询子域名,我们还可以使用在线网站去查询子域名
网站地址:https://phpinfo.me/domain/
网站地址:https://site.ip138.com/
通过证书平台发现子域名
如果我们不想使用暴力枚举的方式获得子域名,我们还可以通过证书平台去获取子域名
我们使用谷歌浏览器打开百度
注意这个锁的图像,我们点击他
我们接着点击【连接是安全的】
我们接着点击【证书有效】
然后我们在证书的主题背景的备用名称中找到当前网站的子域名信息,如下图所示
这是一种通过证书查域名的方式
此外,我们还可以通过一些证书平台去查询域名
网站地址:https://crt.sh/
点击【search】查询
网站地址:https://search.censys.io/
点击【search】查询