前言:
信息收集分类:
1、主动式信息搜集(可获取到的信息较多,但易被目标发现)
2、通过直接发起与被测目标网络之间的互动来获取相关信息,如通过Nmap扫描目标系统。
3、被动式信息搜集(搜集到的信息较少,但不易被发现,如通过搜索引擎搜索)
4、通过第三方服务来获取目标网络相关信息。如通过搜索引擎方式来搜集信息。
搜集什么信息
1、whois信息
2、网站架构(语言、中间件、数据库、平台)
3、dns信息(通过查询dns可以检测是否存在dns域传送和域行走)
4、子域名搜集(搜索引擎和工具以及漏洞)
5、敏感目录及敏感信息、源码泄露(搜索引擎+工具、GitHub等)
6、系统漏洞(系统版本漏洞是否修补)
7、旁站查询(通过IP反查)
8、C端查询(确认大公司或组织网段内子站)
9、指纹信息(框架探测)
10、端口服务
11、备案信息(whois反查、)
12、真实ip(绕过CDN)
13、探测waf(后续可确定Bypass方式)
14、社工(朋友圈、微博、qq空间、求职、交易等社交平台)
15、企业信息(天眼查、企业信用信息公示系统、工业和信息化部ICP/IP地址/域名信息备案管理系统)
信息搜集的流程
上面我已经列举了需要搜集的信息,然后我给它们分了一下类。
我考虑到一个网站的组成是由域名、服务器、网站程序组成的。
因此:
首先入手域名方面:whois、子域名、备案信息;
其次是入手服务器方面:dns信息、端口服务、真实ip;
然后入手网站程序(web层)方面:网站架构、敏感目录及敏感信息、源码泄露(搜索引擎+工具)、脆弱系统(网络空间)、旁站查询、C端查询、指纹信息、探测waf;
最后入手企业方面:天眼查、企业信用信息公示系统
0x00:IP发现
- 1.IP反查域名(查询旁站)
如果你的渗透目标网站是一台虚拟主机,那么通过IP反查到的域名信息往往很有价值, 因为一台物理服务器上面可能运行多个虚拟主机,这些虚拟主机具有不同的域名,但通常共用一个IP地址。如果你知道有哪些网站共用这台服务器,就有可能通过此台服务器上其他网站的漏洞获取服务器控制权,进而迂回获取渗透目标的权限,这种技术也称为“旁注”。
站点和工具:
- http://www.ip-adress.com/reverse_ip
- http://www.7c.com/
- https://dns.aizhan.com/
- https://tools.ipip.net/ipdomain.php
- http://www.webscan.cc/
- http://dns.bugscaner.com/
- 2.域名查询IP
知道一个站点的域名需要得到它的IP以便之后获取端口信息或扫描等后续工作。
站点和工具:
- http://www.webscan.cc/
- http://www.yunsee.cn/
- https://www.whatweb.net/
- http://ip.tool.chinaz.com/
- http://dns.bugscaner.com/
注:判断是否目标使用CDN(1).ping 目标主域,观察域名的解析情况,以此来判断是否使用了 CDN;(2).利用在线网站 17CE,进行全国多地区的 ping 服务器操作,然后对比每个地区 ping 出的 IP 结果,查看这些 IP 是否一致,如果都是一样的,极有可能不存在 CDN。如果 IP 大多不太一样或者规律性很强,可是尝试查询这些 IP 的归属地,判断是都存在 IP。在确认目标用了 CDN 的情况下:
- 内部邮箱源(让服务器给你发邮件看邮件头IP)(最可靠)
- 通过zmpap全网爆破查询真实IP(可靠)
- 扫描网站测试文件
- 分站域名(根据收集分站查看产生交互最多的站)
- 国外访问(App Synthetic Monitor)
- 查询域名解析记录(NETCRAFT)(查询域名历史IP)
- 如果网站有 App,抓 App 的请求
- 绕过 CloudFlare CDN 查找真实 IP(CloudFlareWatch)
- 3.IP WHOIS查询
IP WHOIS就是查询IP的详细信息的数据库(如IP使用人和IP使用人的相关信息等)。
- http://tool.chinaz.com/ipwhois
- http://www.guoxue.com/whois/index.php
- http://whois.bugscaner.com/
- https://www.whois.com/whois
- https://www.cxw.com/
- 4.C端存活主机探测
- https://phpinfo.me/bing.php
- http://cduan.cc/c/
- http://www.webscan.cc/
- https://github.com/se55i0n/Cwebscanner
也可以使用Nmap扫描:
Nmap: nmap -sP www.XXX.com/24 || nmap -sP 192.168.1.*
- 5.C段常见端口探测
- (1)最笨的方法:C段导入到文件,nmap扫描。
-iL参数:扫描文件中列出的所有IP地址。nmap -iL ip.txt。配合其他自定义限制条件扫描。
- (2)其他工具
神器masscan: https://github.com/robertdavidgraham/masscan
- Masscan安装和使用:
http://zone.secevery.com/article/1098
0x01:域名发现
- 1.子域名发现
开始渗透一个网站前,需要知道网站的网络资产:域名、IP等,而IP和域名有着直接的解析关系,所以如何找到网站所有子域名是关键。
- (1)DNS枚举(根据字典爆破)
域名可以通过收集常用域名字典,去DNS服务商查询是否有解析记录来枚举子域名。很多工具都是通过预定义的字典枚举:如Lay子域名挖掘机,subbrute等。
DNS服务商的字典是最准确有效的,先找到一份DNSPod公布的使用最多的子域名:dnspod-top2000-sub-domains.txt//GitHub上的
- (2)自身泄露
可通过https://github.com/FeeiCN/WebProxy代理电脑所有流量,从流量中搜索出现交互的子域名,如域名跳转、Response、网络请求中的子域名。缺点:麻烦且没产生交互的子域名无法探测,略鸡肋。
- (3)搜索引擎
使用百度,bing,Google等搜索引擎,可通过site关键字查询所有收录该域名的记录,子域名权重较高会排在前面。具体规则网上很多,可参考: https://zhuanlan.zhihu.com/p/22161675https://www.freebuf.com/articles/network/169601.html具体使用:以 secevery 为例,可以通过搜索 site:secevery.com 来得到指定的网站内容。
- (4)第三方查询
--有许多拥有大量 DNS 数据集的第三方服务,可通过他们来检索给定域的子域。如VirusTotal,dnsdumpser
脚本工具Sublist3r( https://github.com/aboul3la/Sublist3r) 使用各种资源来枚举子域。通过诸如 Google,Yahoo,Bing,百度和 Ask 等许多搜索引擎来枚举。Sublist3r 还使用 Netcraft,Virustotal,ThreatCrowd,DNSdumpster 和 ReverseDNS 等第三方服务来枚举子域。缺点:信息多很繁杂且有错误,许多站已经关闭,内容需要筛选。
- (5)crossdomain.xml
利用跨域策略文件,以 http://www.sina.com.cn/crossdomain.xml为例:
- (6)Google HTTPS证书信息
Google透明度报告中的证书透明度项目是用来解决HTTPS证书系统的结构性缺陷,它能够让所有人查询各个网站的HTTPS证书信息,从而能发现签发了证书的子域名。利用SSL证书的注册登记发现子域名。
使用收集 CT(Certificate Transparency)日志的搜索引擎,是发现某个域证书最简单的方法。以下是一些流行的搜索引擎:
- https://crt.sh/
- https://transparencyreport.google.com/https/certificates
- https://censys.io/
可以结合Masscan# ct.py - extracts domain names from CT Logs(shippedwith massdns) # massdns - will find resolvable domains & adds them to a file./ct.py icann.org | ./bin/massdns -r resolvers.txt -tA -q -a -o -w icann_resolvable_domains.txt -//读取文件里面的CT信息搜索还可以直接通过本地证书:大厂的SSL证书一般都是一证多用,根据这个特性,可以得到一些子域名.eg:
使用SSL证书缺点很明显,没有注册SSL证书的子域名无法查到。
- (7)自治系统编号(ASN)
使用dig或host来解析指定域的IP地址(可以得到IP所在组织的IP域范围)。使用IP查找ASN号码:https://asn.cymru.com/cgi-bin/whois.cgi
也可以使用域名查询ASN号码:https://bgp.he.net/
找到的ASN号码可用于查找域的网络块。使用Nmap脚本可以实现使用ASN号码来查找域的网络块。$ nmap --script targets-asn --script-args targets-asn.asn=XXXX
- (8)利用域传送漏洞
因为对DNS服务器配置不当,导致任意IP都可以直接向DNS服务器请求数据,从而导致该域名的所有子域名暴露,可以写脚本也可以通过网站查询DNS。
- http://tool.chinaz.com/dns/
- https://tool.lu/dns/
域传送漏洞漏洞很老旧不常见。kali下检测:root@kali:~# dig +short @8.8.8.8 secevery.com ns
- dns24.hichina.com.
- dns23.hichina.com.
得到了目标ns服务器,接下来使用目标ns服务器尝试传送dig @dns24.hichina.com secevery.com axfr发现Transfer failed失败即不存在漏洞。Kali下dns子域探测工具:dnsmap,dnsenum,fierce。也可以Windows下nslookup查询:
- (9) FDNS(forward DNS,DNS转发)
FDNS数据集作为 Project Sonar 的一部分发布。这些数据是通过提取来自多个源的域名并且给每个域发送 ANY 请求来收集的。这些数据是 gzip 格式的 json 文件。我们可以解析数据集来查找给定域的子域。数据集是很大的(压缩后约 20 + GB,未压缩约有 300 + GB)。
- https://registry.opendata.aws/rapid7-fdns-any/
- https://github.com/rapid7/sonar/wiki/Forward-DNS//GitHub说明
# Command to parse& extract sub-domains for a given domain$ curl -silenthttps://scans.io/data/rapid7/sonar.fdns_v2/20170417-fdns.json.gz | pigz -dc | grep “.icann.org” | jqFDNS能搜索到的子域名比爆破和CT查询和存在域传送加起来都多。但文件过大使用起来很费事。
- (10)zone walking(NSEC)区域行走
DNSSEC协议的一个重要功能是能根据"DNS中的已验证拒绝存在"权威的断言给定域名不存在,但它允许区域行走,可以从一个域到另一个域。协议这样写->https://tools.ietf.org/rfc/rfc7129.txt现在主流的NSEC3协议是NSEC协议的替代,但是仍然有很多域在使用NSEC。使用ldns-walk工具来检测使用NSEC域名TLD列表 http://data.iana.org/TLD/tlds-alpha-by-domain.txt安装之后$ ldns-walk domainname即可使用//linux下安装使用。wget https://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz 除了这些还有如网络深度爬虫等方法能探测子域名。
- 2.关联域名发现
- (1)注册人和邮箱反查域名
先whois获取注册人和邮箱,再通过注册人和邮箱反查域名。
- https://whois.chinaz.com/
- http://whois.4.cn/reverse
- https://whois.aizhan.com/reverse-whois/
- http://www.langongju.com/domain/reverse
缺点很明显:除了大厂之外很多公司都是DNS解析的运营商注册的,查到的是运营商代替个人和小公司注册的网站信息。
- (2)相似域名查询
根据目标公司名称来查找可能是目标资产的相似域名。
- https://www.whois.net/
- https://typoku.com.cutestat.com/
- https://github.com/elceef/dnstwist//相似、钓鱼域名检测。
0X02:端口信息探测
- 1、快速判断端口是否开启:
a、http://coolaf.com/tool/port使用方式: 直接输入要测试的域名,然后指定要测试的端口。 不过每次只能指定50个端口。
b、https://tool.lu/portscan/index.html 跟上一个工具差不多都一样,只不过每次能测试100个端口。使用方式也一样。
c、http://www.matools.com/port 没有说明端口限制,并且会显示端口的服务。只是每次扫描的时候,需要输入验证码。
- 2、对服务器的信息进行详细的收集:
主机发现,生成存活主机列表:nmap -sn -T4 -oG Discovery.gnmap 192.168.10.0/24grep "Status: Up" Discovery.gnmap | cut -f 2 -d ' ' > LiveHosts.txt 端口发现,发现全部端口:nmap -sS -T4 -Pn -p 0-65535 -oN FullTCP -iL LiveHosts.txt #一般选用这个,因为速度比较快。nmap -sU -T4 -Pn -p 0-65535 -oN FullUDP -iL LiveHosts.txt 发现大部分常用的端口:nmap -sS -T4 -Pn -oG TopTCP -iL LiveHosts.txtnmap -sU -T4 -Pn -oN TopUDP -iL LiveHosts.txtnmap -sS -T4 -Pn --top-ports 3674 -oG 3674 -iL LiveHosts.txt 系统和服务检测:nmap -O -sV -T4 -Pn -p U:53,111,137,T:21-25,80,139,8080 -oG OS_Service_Detect -iL LiveHosts.txt 系统扫描:nmap -O -T4 -Pn -oG OSDetect -iL LiveHosts.txtnmap -O --osscan-guess 192.168.1.134 服务版本侦测:nmap -sV -T4 -Pn -oG ServiceDetect -iL LiveHosts.txtNmap命令详见:http://zone.secevery.com/article/245
- 0X03:网站信息收集
- 1、指纹识别
代码框架识别、中间件、CMS识别: https://www.whatweb.net/ 能得到的目标网站的 IP、中间件类型以及版本、语言环境(带版本)
http://www.yunsee.cn/finger.html 只能判断出一种语言环境,代码框架、中间件的版本信息。
http://whatweb.bugscaner.com/look/ 代码框架、web框架为ASP.NET、语言为PHP、中间件为IIS6.0 除此之外还有一些额外的信息:同ip网站CMS查询、icp备案查询、whois查询、网站地址、服务器的操作系统、子域名查询、网站CDN服务商查询、CDN缓存命中查询。 信息还是挺多的。与上边两个相比,我更倾向于选择第三个网站,云悉的信息那么少,大概是没有登陆的缘故吧。它的账号是要购买的。
- 2、waf识别:
wafw00f 一个识别waf的很成熟的工具,使用方式也很简单。 github项目地址:https://github.com/EnableSecurity/wafw00f kali上自带wafw00f,一条命令直接使用。建议最好在kali下使用,windows下的使用很麻烦。
nmap的扩展脚本,众所周知,nmap是一个端口扫描工具。但是它额外有的扩展模块,使得它具有了识别和绕过waf的能力。
- 2、敏感路径探测
- 1、Git源码泄露
成因及危害:当前大量开发人员使用git进行版本控制,对网站进行自动部署。如果配置不当,可能会将.git文件部署到线上环境,这就引起了git泄露漏洞。在网站安全维护方面,git和svn信息泄露,是非常常见也是非常致命的漏洞。会导致整个网站的源码泄露。 漏洞检测: 批量寻找:".git" intitle:"index of"
对单个网站进行检测: a、githack,github上的地址:https://github.com/lijiejie/GitHack 使用方法:python GitHack.py http://xxx.com/.git/ 这个直接就可以获取到网站的源码和图片该工具建议在有git工具的linux环境下使用,我在 windows10环境下使用的时候,会报Error 10060和Error 183
手工验证的方法,如下。在kali linux下, wget --mirror --include-directories=/.githttp://www.xxx.com/.git cd www.xxx.com www.xxx.com文件夹是自动创建的。 git reset --hard后续学习:https://blog.csdn.net/qq_36869808/article/details/88909961
- 2、SVN源码泄露
介绍:跟git一样,都是用来版本迭代的一个功能。具体一点就是使用svn checkout功能来更新代码。 产生原因以及危害:没有配置好目录访问权限,从而导致该漏洞被人利用,整个网站的源码泄露。 批量寻找:".svn" intitle:"index of" 利用工具及过程: 工具:svnExploit github地址:https://github.com/admintony/svnExploit 利用过程: a、判断.svn的版本信息
前者版本小于1.7,后者版本大于1.7 版本小于1.7的: python2 SvnExploit.py -u https://xxx.com/.svn 查看信息,把泄露的文件列出来。 python2 SvnExploit.py -u https://xxx.com/.svn --dump 将网站的源码下载下来。
版本大于1.7的, 1、列出所有的文件。 2、把所有的文件dump下来。
后续钻研:https://www.cnblogs.com/batsing/p/svn-bug.html
- 3、网站文件备份
直接扫目录就可以得到,工具:7kbscan、御剑都可以。
- 0X04:互联网信息收集
- (1)google和GitHub
使用谷歌关键字。例如搜索site:github.com secevery.com搜索目标公司程序员上传到GitHub上的代码和敏感信息,可能泄露如数据库连接信息、邮箱密码、uc-key、阿里的osskey、甚至是网站源代码。
还可以site:GitHub.com svn(smtp等) @XX.com(user,password)等在后面添加限制脚本类型或者服务类型。
- intext:后台登录
查询页面中含有后台管理的网站,这里还可以利用site:语句(下同)指定查找的网站(包含子域名)中页面含有后台登录的站点
- intitle:管理登录
查找网站标题中存在管理登录的页面
- filetype: pdf
查找网站中pdf格式的文件,也可以搜索网站sql或者压缩包等文件
- inurl: php?id=
查找url中带有php?id=的网站
- filetype:php site:secevery.com查找secevery中的PHP文件
- (2)shodan搜索引擎
shodan网络搜索引擎偏向网络设备(摄像头、路由器)以及服务器(端口、开启服务、服务器平台版本)的探测,具体内容可上网查阅,这里给出它的高级搜索语法。https://www.shodan.io/
可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法可以直接搜索到站点IP开启的端口、服务器版本及平台、开启服务、地理位置等搜索语法
- hostname: 搜索指定的主机或域名,例如 hostname:”google”
- port: 搜索指定的端口或服务,例如 port:”21”
- country: 搜索指定的国家,例如 country:”CN”
- city: 搜索指定的城市,例如 city:”NanYang”
- org: 搜索指定的组织或公司,例如 org:”google”
- isp: 搜索指定的ISP供应商,例如 isp:”China Telecom”
- product: 搜索指定的操作系统/软件/平台,例如 product:”Apache httpd”
- version: 搜索指定的软件版本,例如 version:”1.6.2”
- geo: 搜索指定的地理位置,例如 geo:”31.8639, 117.2808”
- before/after: 搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15”
- net: 搜索指定的IP地址或子网,例如 net:”210.45.240.0/24”
- (3)censys搜索引擎
censys搜索引擎功能与shodan类似,偏向网络设备和服务器的信息探测。地址:https://www.censys.io/
搜索语法默认情况下censys支持全文检索。
- 23.0.0.0/8 or 8.8.8.0/24 可以使用and or not
- 80.http.get.status_code: 200 指定状态
- 80.http.get.status_code:[200 TO 300] 200-300之间的状态码
- location.country_code: DE 国家
- protocols: (“23/telnet” or “21/ftp”) 协议
- tags: scada 标签
- 80.http.get.headers.server:nginx 服务器类型版本
- autonomous_system.description: University 系统描述
- (4)FoFa搜索引擎
FoFa搜索引擎偏向资产搜索。http://fofa.so
搜索语法直接输入查询语句,将从标题,html内容,http头信息,url字段中搜索
- title="abc" 从标题中搜索abc。
- header="abc" 从http头中搜索abc。
- body="abc" 从html正文中搜索abc。
- domain="secevery.com" 搜索根域名带有secevery.com的网站。
- host=".gov.cn" 从url中搜索.gov.cn,注意搜索要用host作为名称。
- port="443" 查找对应443端口的资产。
- ip="1.1.1.1" 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。 如果想要查询网段,可以是:ip="192.168.111.1/24",
- protocol="https" 搜索制定协议类型(在开启端口扫描的情况下有效)。
- city="Beijing" 搜索指定城市的资产。
- region="Henan" 搜索指定行政区的资产。
- country="CN" 搜索指定国家(编码)的资产。
- cert="google.com" 搜索证书(https或者imaps等)中带有google.com的资产。
- banner=users && protocol=ftp 搜索FTP协议中带有users文本的资产。
- type=service 搜索所有协议资产,支持subdomain和service两种。
- os=windows 搜索Windows资产。例: 搜索Windows资产
- server=="Microsoft-IIS/7.5" 搜索IIS 7.5服务器。例: 搜索IIS 7.5服务器
- app="海康威视-视频监控" 搜索海康威视设备,更多app规则。例: 搜索海康威视设备
- after="2017" && before="2017-10-01" 时间范围段搜索。例: 时间范围段搜索
- 高级搜索:可以使用括号 和 && || !=等符号,如
- title="powered by" && title!=discuz
- title!="powered by" && body=discuz
- ( body="content=\"WordPress" || (header="X-Pingback" && header="/xmlrpc.php" && body="/wp-includes/") ) && host="gov.cn"
- 新增==完全匹配的符号,可以加快搜索速度,比如查找qq.com所有host,可以是domain=="qq.com"
- (5)钟馗之眼(Zoomeye)
钟馗之眼搜索引擎偏向web应用层面的搜索。地址:https://www.zoomeye.org/
搜索语法
- app:nginx 组件名
- ver:1.0 版本
- os:windows 操作系统
- country:”China” 国家
- city:”hangzhou” 城市
- port:80 端口
- hostname:google 主机名
- site:thief.one 网站域名
- desc:nmask 描述
- keywords:nmask’blog 关键词
- service:ftp 服务类型
- ip:8.8.8.8 ip地址
- cidr:8.8.8.8/24 ip地址段
- (6)邮箱收集
--首先确定邮件服务器本身有没有什么错误配置,没有禁用VRFY或EXPN命令导致的用户信息泄露,如果有可以直接把目标的邮件用户都爆出来,也可以尝试弱口令。
--收集目标的各类webmail入口。
找目标的各种webmail入口,不一定有,但这也是为了后面一旦拿到密码尝试撞库的手段,如果用的是某种开源WEB邮件程序,也可以尝试找对应版本的exp。
--提取whois邮箱去搜索引擎搜索,拿到旧密码可以去社工库去撞库。
--直接从目标站点查找邮箱。一般的网站都有的"联系我们"之类的链接或许就是邮箱,当然如果是[email][email protected][/email]或者[email][email protected][/email]这种邮箱直接忽略,我们需要有互动的邮箱,拿到后都试一试撞一撞库和搜索引擎跑一跑。
---利用各种工具直接抓取目标邮箱
theharvester:一个比较老的邮箱抓取脚本,主要是从各种搜索引擎抓取邮箱,抓取后的文档杂乱需要自己筛选分析。
https://github.com/laramies/theHarvester下载或者Kali直接运行。
-d 参数指定目标域
-l 参数指定数量
-b 参数指定端口
-s 指定起始数值
TheHarvester+Hydra可以大量扫描弱口令账户。
也可以使用metasploit的 auxiliary/gather/search_email_collector 模块:
msfconsole打开MSF控制台,输入use auxiliary/gather/search_email_collector,然后set domain XXmail.com设置目标邮件网站,然后show options显示搜索来源,exploit
目前使用菜单内的google选项去搜索邮箱需要,直接用如图。
两种方法都可以将结果保存为文件然后使用hydra爆破。
(7)历史漏洞信息
虽然乌云关了但是镜像上面还有大量企业漏洞信息,此外CNVD,seebug等平台
也能查找一些企业历史漏洞信息。
0X05:人力资源情报收集
(1)招聘信息
用google从招聘网站找到信息再去查找企业信息
通过招聘信息我们找到了公司全称和负责人构成和邮箱电话等信息。
通过这些信息可以与前面的WHOIS反查结合。
社会工程学方面的知识太繁杂就先不讨论了。
参考:
https://wh0ale.github.io/2019/02/22/SRC%E4%B9%8B%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/
https://www.secpulse.com/archives/74312.html
https://www.freebuf.com/articles/web/190403.html
http://www.davex.pw/2016/07/01/How-To-Fuzz-Sub-Domain/
https://www.freebuf.com/articles/web/179043.html
https://cloud.tencent.com/developer/article/1180157
https://klionsec.github.io/2014/12/22/email-collector/
https://www.secpulse.com/archives/69237.html
https://yq.aliyun.com/articles/366927
https://www.secpulse.com/archives/29475.html
http://www.lijiejie.com/ds_store_exp_ds_store_file_disclosure_exploit/
https://zhuanlan.zhihu.com/p/22161675
https://zhuanlan.zhihu.com/p/22407076
https://www.jianshu.com/p/d2af08e6f8fb
https://blog.csdn.net/zvall/article/details/50115815