信息收集
1.简介
渗透的本质是信息收集,信息收集也叫做资产收集。
信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口。
2.分类
(1)服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
(2)网站指纹识别(包括cms,cdn,证书等) dns记录
(3)whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
(4)子域名收集,旁站,C段等
(5)google,hacking针对化搜索,word/电子表格/pdf文件,中间件版本,弱口令扫描等
(6)扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
(7)传输协议,通用漏洞,exp,github源码等
3.常见方法
(1)whois查询
域名在注册的时候,需要填入个人或者企业信息,如果没有设置隐藏属性可以查询出来,通过备案号查询个人或者企业信息,也可以whois反查注册人、邮箱、电话、机构等,反查更多的域名和需要的信息。
(2)收集子域名
域名分为根域名和子域名
moonsec.com 根域名 顶级域名
www.moonsec.com 子域名 也叫二级域名
www.wiki.moonsec.com 子域名 也叫三级域名 四级如此类推
(3)端口扫描
服务器需要开放服务,就必须开启端口,常见的端口是 tcp 和 udp 两种类型,范围 0-65535 ,通过扫得到的端口,访问服务,规划下一步渗透。
(4)查找真实ip
企业的网站,为了提高访问速度,或者避免黑客攻击,用了cdn服务,用了cdn之后真实服务器ip会被隐藏。
(5)探测旁站及C段
旁站:一个服务器上有多个网站,通过ip查询服务器上的网站。
C段:查找同一个段、服务器上的网站。可以找到同样网站的类型和服务器,也可以获取同段服务器进行下一步渗透。
(6)网络空间搜索引擎
通过这些引擎查找网站或者服务器的信息,进行下一步渗透。
(7)扫描敏感目录/文件
通过扫描目录和文件,大致了解网站的结构,获取突破点,比如后台,文件备份,上传点。
(8)指纹识别
获取网站的版本,属于那些cms管理系统,查找漏洞exp,下载cms进行代码审计。
4.在线whois查询
通过whois来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS解析服务器、注册人联系电话等,因为有些网站信息查得到,有些网站信息查不到,所以推荐以下信息比较全的查询网站,直接输入目标站点即可查询到相关信息。
站长之家域名WHOIS信息查询地址 http://whois.chinaz.com/
爱站网域名WHOIS信息查询地址 https://whois.aizhan.com/
腾讯云域名WHOIS信息查询地址 https://whois.cloud.tencent.com/
美橙互联域名WHOIS信息查询地址 https://whois.cndns.com/
爱名网域名WHOIS信息查询地址 https://www.22.cn/domain/
易名网域名WHOIS信息查询地址 https://whois.ename.net/
中国万网域名WHOIS信息查询地址 https://whois.aliyun.com/
西部数码域名WHOIS信息查询地址 https://whois.west.cn/
纳网域名WHOIS信息查询地址 http://whois.nawang.cn/
中资源域名WHOIS信息查询地址 https://www.zzy.cn/domain/whois.html
三五互联域名WHOIS信息查询地址 https://cp.35.com/chinese/whois.php
新网域名WHOIS信息查询地址 http://whois.xinnet.com/domain/whois/index.jsp
新网互联域名WHOIS信息查询地址 http://www.dns.com.cn/show/domain/whois/index.do
国外WHOIS信息查询地址 https://who.is/
5.在线网站备案查询
网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,如果需要查询企业备案信息(单位名称、备案编号、网站负责人、电子邮箱、联系电话、法人等),推荐以下网站即可查询到相关信息。
天眼查 https://www.tianyancha.com/
ICP备案查询网 http://www.beianbeian.com/
爱站备案查询 https://icp.aizhan.com/
域名助手备案信息查询 http://cha.fute.com/index
6.收集子域名
收集子域名可以扩大测试范围,同一域名下的二级域名都属于目标范围。
6.1常用方式
子域名中的常见资产类型一般包括办公系统,邮箱系统,论坛,商城,其他管理系统,网站管理后台也有可能出现子域名中。
首先找到目标站点,在官网中可能会找到相关资产(多为办公系统,邮箱系统等),关注一下页面底部,也许有管理后台等收获。
查找目标域名信息的方法有:
FOFA title="公司名称"
百度 intitle=公司名称
Google intitle=公司名称
钟馗之眼 site=域名 https://www.zoomeye.org/
站长之家 直接搜索名称或者网站域名即可查看相关信息 http://tool.chinaz.com/
6.2域名类型
A (Address) 记录
是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置域名的二级域名。
别名(CNAME)记录
也被称为规范名字。这种记录允许将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。同样的方法可以用于拥有多个域名需要指向同一服务器IP,此时就可以将一个域名做A记录指向服务器IP然后将其他的域名做别名到之前做A记录的域名上,那么当服务器IP地址变更时就可以不必麻烦的一个一个域名更改指向了,只需要更改做A记录的那个域名其他做别名的那些域名的指向也将自动更改到新的IP地址上了。
MX(Mail Exchanger)记录
是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@mydomain.com 时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
TXT记录
一般指为某个主机名或域名设置的说明,如:
(1)admin IN TXT "jack, mobile:138xxx138"
(2)mail IN TXT "邮件主机, 存放在xxx ,管理人:AAA",Jim IN TXT "contact: abc@mailserver.com"
NS(Name Server)记录
是一种域名服务器记录,用来明确当前的域名是由哪个DNS服务器来进行解析的。
6.3子域名查询
dns侦测 https://dnsdumpster.com/
https://www.ip138.com/
https://ipchaxun.com/
FOFA查询 https://fofa.info/
1 domain="baidu.com"
360空间测绘查询 https://quake.360.cn/
1 domain:"*.freebuf.com"
Hackertarget查询 https://hackertarget.com/find-dns-host-records/
Layer子域名挖掘机
Sublist3r
1 sublist3r.py [-h] -d DOMAIN [-b [BRUTEFORCE]] [-p PORTS] [-v [VERBOSE]] [-t THREADS] [-e ENGINES] [-o OUTPUT] [-n]
常用参数:
1 -h :帮助 2 3 -d :指定主域名枚举子域名 4 5 -b :调用subbrute暴力枚举子域名 6 7 -p :指定tpc端口扫描子域名 8 9 -v :显示实时详细信息结果 10 11 -t :指定线程 12 13 -e :指定搜索引擎 14 15 -o :将结果保存到文本 16 17 -n :输出不带颜色
默认参数扫描子域名 python sublist3r.py -d baidu.com
使用暴力枚举子域名 python sublist3r -b -d baidu.com
OneForALL
1 python3 oneforall.py --target baidu.com run
爆破子域名
Example:
1 brute.py --target domain.com --word True run 2 3 brute.py --targets ./domains.txt --word True run 4 5 brute.py --target domain.com --word True --concurrent 2000 run 6 7 brute.py --target domain.com --word True --wordlist subnames.txt run 8 9 brute.py --target domain.com --word True --recursive True --depth 2 run 10 11 brute.py --target d.com --fuzz True --place m.*.d.com --rule '[a-z]' run 12 13 brute.py --target d.com --fuzz True --place m.*.d.com --fuzzlist subnames.txt run
Wydomain
1 dnsburte.py -d aliyun.com -f dnspod.csv -o aliyun.log 2 3 wydomain.py -d aliyun.com
目标域名解析IP
https://site.ip138.com/
https://ipchaxun.com/
ip正则
https://www.aicesu.cn/reg/
查找厂商IP段
https://ipwhois.cnnic.net.cn/index.jsp
7.端口扫描
masscan端口扫描
1 masscan -p 1-65535 192.168.101.4 --rate=1000
御剑端口扫描
nmap端口扫描
1 nmap -sT -A 192.168.101.4
常用参数:
1 nmap [ip地址|域名] 2 3 nmap -A -T4 [ip地址|域名] 4 5 nmap --top-ports 100 [ip地址] 6 7 nmap -sS -sV -T4 [ip地址] 8 9 nmap -sn [ip地址] 10 11 nmap -Pn -sT -v -p [端口号] [ip]
渗透端口
21,22,23,53,135,139,1433,1521,3306,3389,5432,5900,50070,50030,50000,27017,27018,11211,9200,9300,7001,7002,6379,5984,873,443,8000-9090,80-89,80,10000,8888,8649,8083,8080,8089,9090,7778,7001,7002,6082,5984,4440,3312,3311,3128,2601,2604,2222,2082,2083,389,88,445,512,513,514,1025,111,1521
常见端口和攻击方法
8.旁站和C段
旁站:是和目标网站在同一台服务器上的其它的网站。
C段:是和目标服务器ip处在同一个C段的其它服务器。
站长之家
同ip网站查询:https://stool.chinaz.com/same、
查旁站:https://chapangzhan.com/
Google hacking
参考网站:https://blog.csdn.net/qq_36119192/article/details/84029809
网络空间搜索引擎
例如:FOFA搜索旁站和C段
该方法效率较高,并能够直观地看到站点标题,但也有不常见端口未收录的情况,虽然这种情况很少,但之后补充资产的时候可以用nmap扫描再收集一遍。
在线C段
https://webscan.cc/
https://c.webscan.cc/
利用脚本查询
pip install requests
1 #coding:utf-8 2 import requests 3 import json 4 5 def get_c(ip): 6 print("正在收集{}".format(ip)) 7 url="http://api.webscan.cc/?action=query&ip={}".format(ip) 8 req=requests.get(url=url) 9 html=req.text 10 data=req.json() 11 if 'null' not in html: 12 with open("resulit.txt", 'a', encoding='utf-8') as f: 13 f.write(ip + '\n') 14 f.close() 15 for i in data: 16 with open("resulit.txt", 'a',encoding='utf-8') as f: 17 f.write("\t{} {}\n".format(i['domain'],i['title'])) 18 print(" [+] {} {}[+]".format(i['domain'],i['title'])) 19 f.close() 20 21 def get_ips(ip): 22 iplist=[] 23 ips_str = ip[:ip.rfind('.')] 24 for ips in range(1, 256): 25 ipadd=ips_str + '.' + str(ips) 26 iplist.append(ipadd) 27 return iplist 28 29 ip=input("请你输入要查询的ip:") 30 ips=get_ips(ip) 31 for p in ips: 32 get_c(p)
Nmap,Msscan扫描等
例如:nmap -p 80,443,8000,8080 -Pn 192.168.0.0/24
常见端口
21,22,23,80-90,161,389,443,445,873,1099,1433,1521,1900,2082,2083,2222,2601,2604,3128,3306,3311,3312,3389,4440,4848,5432,5560,5900,5901,5902,6082,6379,7001-7010,7778,8080-8090,8649,8888,9000,9200,10000,11211,27017,28017,50000,50030,50060,135,139,445,53,88
注意:探测C段时要确认ip是否归属于目标,因为一个C段中的所有ip不一定全部属于目标。
9.网络空间搜索引擎
如果想要在短时间内快速收集资产,可以利用网络空间搜索引擎,能够直观地看到旁站,端口,站点标题,IP等信息,点击列举出站点可以直接访问,以此来判断是否为自己需要的站点信息。
FOFA的常用语法
(1)同IP旁站:ip="192.168.0.1"
(2)C段:ip="192.168.0.0/24"
(3)子域名:domain="baidu.com"
(4)标题/关键字:title="百度"
(5)特征:body="百度"或header="baidu"
(6)如果需要将结果缩小到某个城市的范围,那么可以拼接语句 title="百度"&& region="Beijing"
10.扫描敏感目录/文件
扫描敏感目录需要强大的字典,需要平时积累,拥有强大的字典能够更高效地找出网站的管理后台。
敏感文件常见的例如.git文件泄露 .svn文件泄露 phpinfo泄露等,这一步交给各类扫描器就可以了,将目标站点输入到域名中,选择对应字典类型,就可以进行扫描。
御剑后台扫描
参考网站:https://www.fujieace.com/hacker/tools/yujian.html
7kbstorm
https://github.com/7kbstorm/7kbscan-WebPathBrute
BBScan
https://github.com/lijiejie/BBScan
安装:pip install -r requirements.txt
使用示例:
(1)扫描单个web服务 www.target.com
python BBScan.py --host www.target.com
(2)扫描www.target.com和www.target.com/28下的其他主机
python BBScan.py --host www.target.com --network 28
(3)扫描txt文件中的所有主机
python BBScan.py -f targets.txt
(4)从文件夹中导入所有的主机并扫描
python BBScan.py -d targets/
–network 参数用于设置子网掩码,小公司设为28~30,中等规模公司设置26~28,大公司设为24~26,因为扫描过于耗时,所以需要尽量避免设为24。
dirmap
https://github.com/H4ckForJob/dirmap
安装:pip install -r requirement.txt
输入目标:
单目标,默认为http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
子网(CIDR格式)
python3 dirmap.py -i 192.168.1.0/24 -lcf
网络范围
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
文件读取:
targets.txt中支持上述格式
python3 dirmap.py -iF targets.txt -lcf
其他工具
dirsearch
gobuster
dirbuster
10.网站文件
https://www.secpulse.com/archives/55286.html
robots.txt
crossdomin.xml
sitemap.xml
后台目录
网站安装包
网站上传目录
mysql管理页面
phpinfo
网站文本编辑器
测试文件 1
DS_Store 文件
vim编辑器备份文件(.swp)
WEB—INF/web.xml文件
git
svn
网站备份文件(.rar、zip、.7z、.tar.gz、.bak)
文件内容,例如
config.php
config.php~
config.php.bak
config.php.swp
config.php.rar
conig.php.tar.gz
11.网站头信息收集
中间件 :
web服务(Web Servers)
apache iis7 iis7.5 iis8 nginx WebLogic tomcat
网站组件:
js组件jquery、vue 页面布局bootstrap
通过浏览器获取
火狐插件Wappalyzer
curl命令查询头信息
curl https://www.baidu.com -i
fofa网络空间测绘
常用语法
同IP旁站:ip="192.168.0.1"
C段:ip="192.168.0.0/24"
子域名:domain="baidu.com"
标题/关键字:title="百度"
如果需要将结果缩小到某个城市,那么可以拼接语句
title="百度"&& region="Beijing"
特征:body="百度"或header="baidu"
12.敏感文件搜索
12.1github搜索
in:name test #仓库标题搜索含有关键字test
in:descripton test #仓库描述搜索含有关键字test
in:readme test #readme文件搜索含有关键字test
搜索系统密码
https://github.com/search?q=smtp+58.com+password+3306&type=Code
github 关键词监控
https://www.codercto.com/a/46640.html
谷歌搜索
site:Github.com sa password
site:Github.com root password
site:Github.com User ID='sa';Password
site:Github.com inurl:sql
SVN 信息收集
site:Github.com svn
site:Github.com svn username
site:Github.com svn password
site:Github.com svn username password
综合信息收集
site:Github.com password
site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部
参考网站
http://www.361way.com/github-hack/6284.html
https://blog.csdn.net/qq_36119192/article/details/99690742
搜索代码
https://docs.github.com/zh/search-github/searching-on-github/searching-code
https://github.com/search?q=smtp+bilibili.com&type=code
12.2Google hacking
site:域名
inurl: url中存在的关键字网页
intext:网页正文中的关键词
filetype:指定文件类型
12.3js敏感信息
网站的url链接写到js里面
js的api接口 里面包含用户信息 例如 账号和密码
查询网站注册信息
https://www.reg007.com/
JSFinder
https://gitee.com/kn1fes/JSFinder
python3 JSFinder.py -u http://www.mi.com
python3 JSFinder.py -u http://www.mi.com -d
python3 JSFinder.py -u http://www.mi.com -d -ou mi_url.txt -os mi_subdomain.txt
使用-d可以进行深度爬取来获得更多内容,并使用命令-ou, -os来指定URL和子域名所保存的文件名
批量指定URL/JS来获取里面的URL
指定URL:
python JSFinder.py -f text.txt
指定JS:
python JSFinder.py -f text.txt -j
Packer-Fuzzer
https://gitee.com/keyboxdzd/Packer-Fuzzer
sudo apt-get install nodejs && sudo apt-get install npm
pip3 install -r requirements.txt
python3 PackerFuzzer.py -u https://www.liaoxuefeng.com
SecretFinder
一款基于Python脚本的JavaScript敏感信息搜索工具
https://gitee.com/mucn/SecretFinder
python3 SecretFinder.py -i https://www.moonsec.com/ -e
13.cms识别
收集好网站信息之后,可以对网站进行指纹识别
通过识别指纹,确定目标的cms及版本,制定下一步的测试计划,可以用公开的poc或自己累积的对应手法等进行正式的渗透测试
云悉
http://www.yunsee.cn/
潮汐指纹
http://finger.tidesec.net
whatcms
御剑cms识别
https://github.com/ldbfpiaoran/cmscan
https://github.com/theLSA/cmsIdentification/
14.SSL/TLS证书查询
SSL/TLS证书通常包含域名、子域名和邮件地址等信息
结合证书中的信息,可以更快速地定位到目标资产,获取到更多目标资产的相关信息
https://myssl.com/
https://crt.sh/
https://censys.io/
https://developers.facebook.com/tools/ct/
https://google.com/transparencyreport/https/ct
SSL证书搜索引擎:
https://certdb.com/domain/github.com
https://crt.sh/?q=baidu.com
https://censys.io/
https://getdomainsbyssl.py
15.js敏感文件
https://github.com/m4ll0k/SecretFinder
https://github.com/Threezh1/JSFinder
https://github.com/rtcatc/Packer-Fuzzer
16.github信息泄露监控
https://github.com/0xbug/Hawkeye
https://github.com/MiSecurity/x-patrol
https://github.com/VKSRC/Github-Monitor
17.资产收集神器
ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统
https://github.com/TophantTechnology/ARL
AssetsHunter
https://github.com/rabbitmask/AssetsHunter
一款用于src资产信息收集的工具
https://github.com/sp4rkw/Reaper
domain_hunter_pro
https://github.com/bit4woo/domain_hunter_pro
18.工具
Fuzz字典推荐:https://github.com/TheKingOfDuck/fuzzDicts
BurpCollector(BurpSuite参数收集插件):https://github.com/TEag1e/BurpCollector
Wfuzz:https://github.com/xmendez/wfuzz
LinkFinder:https://github.com/GerbenJavado/LinkFinder
PoCBox:https://github.com/Acmesec/PoCBox