信息收集精简
0x00 什么是信息收集
信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进行。比如目标站点IP、中间件、脚本语言、端口、邮箱等等。信息收集包含资产收集但不限于资产收集。
0x01 信息收集的分类
信息收集的方式可以分为两种:主动和被动。
- 主动信息收集:通过直接访问在网站上进行操作,对网站进行扫描等,这种是有网络流量经过目标服务器得信息收集方式
- 被动信息收集:基于公开的渠道,比如搜索引擎等在不与目标系统直接交互得情况下获取信息,并且尽量避免留下痕迹,比例:Google搜索、Shodan搜索等
没有一种方式是最完美的,每个方式都有自己的优势,主动方式,能获取更多的信息,但是目标主机可能会记录你的操作记录。被动方式,收集的信息会相对较少,但是收集信息得行动并不会被目标主机发现。一个渗透项目下,需要有多次的信息收集,同时也要运用不同的收集方式,才能保证信息收集的完整性。
常见搜集的信息包括
- IP地址信息(服务、端口、协议、CDN)
- 域名信息(whois、备案信息(邮箱、联系人、地址、电话)、子域名)
- 网站信息(框架、服务器、数据库、编程语言、指纹、WAF、敏感文件、C段、敏感目录、源码泄露、旁站)
- DNS记录
- 管理员信息(姓名、职务、生日、联系电话、邮件地址)
0x02 域名信息的收集
1.域名介绍
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
DNS(域名系统,Domain Name System)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
2. Whois
Whois是用来查询域名的IP以及所有者等信息的传输协议。简单说,Whois就是一个用来查询域名是否已经被注册,以及注册域名信息的数据库(如域名所有人、域名注册商、注册商邮箱等)。
通过Whois查询可以获得域名注册者邮箱地址等信息,一般情况下对于中小型网站域名注册者就是网站管理员,利用搜索引擎对Whois查询到的信息进行搜索,获取更多域名注册者的个人信息。
(1) web接口查询
常见的信息收集网站包括:
- Whois站长之家:http://whois.chinaz.com/
- 微步在线:https://x.threatbook.cn/
- 阿里云中国万网:https://whois.aliyun.com/
- Whois Lookup查找目标网站所有者信息:http://whois.domaintools.com/
- Netcraft Site Report显示目标网站使用的技术:http://toolbar.netcraft.com/site_report?url=
- 全球Whois查询:https://www.whois365.com/cn/
- 站长工具爱站查询:https://whois.aizhan.com/
- DNS服务器解析:http://tool.chinaz.com/nslookup
- 多地ping 检查dns是否存在:http://ping.chinaz.com/ping.chinaz.com
- 同ip查旁站:http://s.tool.chinaz.com/same
(2)通过Whois命令查询
在Kali Linux下自带的Whois查询工具,通过命令Whois查询域名信息。
Whois baidu.com
(3) Python撰写Whois代码
1. import urllib.request
2. req_whois = urllib.request.urlopen('http://whois.chinaz.com/doucube.com')
3. print(req_whois.read().decode())
4.
5. import whois
6. data = whois.whois("sohu.com")
7. print(data)
3.备案信息
ICP备案是指网络内容提供商(Internet Content Provider),《互联网信息服务管理办法》指出需要对网站进行备案,未取得许可不得从事互联网信息服务。
- ICP站长之家:http://icp.chinaz.com/
- 天眼查: http://www.tianyancha.com
4.子域名
子域名指二级域名,二级域名是顶级域名(一级域名)的下一级。比如mail.heetian.com和bbs.heetian.com是heetian.com的子域,而heetian.com
则是顶级域名.com的子域。
(1) Google Hack
Google Hack是指使用Google、百度等搜索引擎对某些特定网站主机漏洞(通常是服务器上的脚本漏洞)进行搜索,以达到快速找到漏洞主机或特定主机的漏洞的目的。
关键字 | 含义 |
---|---|
site | 指定搜索域名 例如:site:hetianlab.com |
inurl | 指定url中是否存在某些关键字 例如:inurl : php?id= |
intext | 指定网页中是否存在某些关键字 例如:intext:网站管理 |
filetype | 指定搜索文件类型 例如:filetype:txt |
intitle | 指定网页标题是否存在某些关键字 例如:后台管理 |
link | 指定网页链接 例如:link:hetianlab.com 指定与合天做了外链得站点 |
info | 指定搜索网页信息 例如: info:hetianlabcom |
(2) 第三方web接口查询
(3) 网络空间安全搜索引擎
(4) SSL证书查询
(5) 工具
- Layer子域名挖掘机
- JSFinder https://github.com/Threezh1/JSFinder
- OneForAll https://github.com/shmilylty/OneForAll
- subDomainsBrute https://github.com/lijiejie/subDomainsBrute
0x03 IP信息的收集
1. IP反查域名
如果渗透目标为虚拟主机,那么通过IP反查到的域名信息很有价值,因为一台物理服务器上面可能运行多个虚拟主机。这些虚拟主机有不同的域名,但通常共用一个IP地址。如果你知道有哪些网站共用这台服务器,就有可能通过此台服务器上其他网站的漏洞获取服务器控制权,进而迁回获取渗透目标的权限,这种技术也称为“旁注”。
2. 域名查询IP
知道一个站点的域名需要得到它的IP以便之后获取端口信息或扫描等后续工作。
3. CDN
(1)CDN
CDN全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率.其原理如下:某些大型网站在全国都会有很多用户,这些用户常常会向网站发送不同的请求,那么不同地域会具有不同的缓冲服务器来接收用户发送的流量。如果用户发送流量没有任何交互的数据,只是请求首页的话,此时根据用户所在地区来确定访问的高速缓存服务器,高速缓存服务器会返回对应的响应到用户的浏览器当中,比如广东。
当用户填写数据,需要交互时才会将请求发送到真实的服务器;此时通过广东省的缓存服务器来连接真实服务器。
(2)判断CDN
可以通过Ping来判断网站是否存在CDN,比如 http://www.xxxx.com/ 。显示如下图所示,可以看到该网站是存在CDN的。
(3)绕过CDN
如果目标使用CDN: 需要绕过CDN后去真实IP地址,方法如下:
-
多地Ping
http://ping.chinaz.com/
http://www.webkaka.com/Ping.aspx
用各种多地ping的服务,查看对应IP地址是否唯一 -
国外访问
https://asm.ca.com/en/ping.php
因为有些网站设置CDN可能没有把国外的访问包含进去,所以可以这么绕过 -
查询子域名的IP
https://ip.tool.chinaz.com/ipbatch
CDN流量收费高,所以很多站长可能只会对主站或者流量大的子站点做了CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的IP来辅助查找网站的真实IP -
网站phpinfo文件:phpinfo.php
-
内部邮箱源:收集到内部邮箱服务器IP地址
-
查询历史DNS记录
4. C段存货主机探测
C段指的是同一内网段内的其他服务器,每个IP有ABCD四个段,举个例子,192.168.0.1,A段就是192,B段是168,C段是0,D段是1,而C段嗅探的意思就是拿下它同一C段中的其中一台服务器,也就是说是D段1-255中的一台服务器,然后利用工具嗅探拿下该服务器。C段在线查询地址:
工具
- Namp
- Cwebscanner https://github.com/se55i0n/Cwebscanner
0x04 端口信息收集
1.端口简介
在Internet上,各主机间通过TCP/IP协议发送和接受数据包,各个数据包根据其目的主机的IP地址来进行互联网络中的路由选择,从而顺利的将数据包顺利的传送给目标主机。根据提供服务类型的不同,端口可分为以下两种:
- TCP端口:TCP是一种面向连接的可靠的传输层通信协议
- UDP端口:UDP是一种无连接的不可靠的传输层协议
TCP协议和UDP协议是独立的,因此各自的端口号也互相独立。
2.常见端口
(1) 常用端口类
端口 | 服务 |
---|---|
21 | ftp |
22 | SSH |
23 | Telnet |
80 | WWW |
139/445 | NetBIOS SessionService |
161 | SNMP |
389 | LDAP |
445 | SMB |
1433 | MSSQL |
1521 | Oracle |
3306 | MSSQL |
3389 | RDP远程桌面 |
5432 | PostgreSQL |
5900 | vnc |
6379 | Redis |
7001 | Weblogic |
8080 | Tomcat |
(2) 特殊服务类
端口 | 服务 | 漏洞 |
---|---|---|
1099 | rmi | RCE |
8000 | jdwp java | 调试接口RCE |
443 | SSL | HeartBleed |
873 | Rsync | 未授权 |
5984 | CouchDB | http://xxx:5984/_utils/ |
6379 | redis | 未授权 |
7001,7002 | Weblogic | 默认弱口令,反序列化 |
9200,9300 | elasticsearch | 未授权 RCE |
11211 | memcache | 未授权 |
27017,27018 | Mongodb | 未授权 |
50000 | SAP | 命令执行 |
50060,50070,50030 | hadoop | 默认端口未授权 |
2375 | docker | 未授权 |
3128 | squid | 代理默认端口 |
2601,2604 | zebra | 路由,默认密码zebra |
4440 | rundeck | |
4848 | glassfish | 中间件弱口令 |
9000 | fcigphp | 代码执行 |
9043 | websphere | 弱口令 |
3.端口扫描
Nmap
Network Mapper,是一款开放源代码的网络探测和安全审核的工具
nmap参考指南(中文版)https://nmap.org/man/zh/
功能介绍
1. 检测网络存活主机(主机发现)
2. 检测主机开放端口(端口发现或枚举)
3. 检测相应端口软件(服务发现)版本
4 .检测操作系统,硬件地址,以及软件版本
5. 检测脆弱性的漏洞(nmap的脚本)
4. 端口防御措施
对于端口攻击来说,只要端口开放并且可以连通,就可以利用对应的方式进行攻击测试。这里提供的防御措施包括:
- 关闭不必要的端口;
- 对重要业务的服务端口设置防火墙;
- 加强员工信息安全意识,经常性更换用户密码,避免弱口令爆破;
- 经常更新软件,打补丁(Patch);
- 利用CVE网站的漏洞信息,提高自身网站的安全。
0x05 网站信息收集
1. 网站指纹识别
(1) 操作系统
- ping判断:windows的TTL值一般为128,Linux则为64。TTL大于100的一般为windows,几十的一般为linux。
- nmap-O参数
- windows大小写不敏感,linux则区分大小写
(2) 网站服务/容器类型
- F12查看响应头Server字段
- whatweb https://www.whatweb.net/
- wappalyzer插件
(3) 脚本类型
php, jsp, asp/aspx, python
(4) 数据库类型
mysql,sqlserver,access,oracle
(5) CMS识别
在渗透测试中,对目标服务器进行指纹识别是相当有必要的,因为只有识别出相应的Web容器或者CMS(内容管理系统),才能查找与其相关的漏洞,然后才能进行相应的渗透操作。CMS又称整站系统。常见的CMS有:WordPress、Dedecms(织梦)、Discuz、PhpWeb、PhpWind、Dvbbs、PhpCMS、ECShop、、SiteWeaver、AspCMS、帝国、Z-Blog等。
常见识别工具:
- BugScaner:http://whatweb.bugscaner.com/look/
- 云悉指纹:http://www.yunsee.cn/finger.html
- WhatWeb:https://whatweb.net/
- Onlinetools https://github.com/iceyhexman/onlinetools https://pentest.gdpcisa.org/
2. 敏感文件、目录探测
针对目标Web目录结构和敏感隐藏文件探测是非常重要的,在探测过程中很可能会探测到后台页面、上传页面、数据库文件,甚至是网站源代码文件等。补充谢公子大佬的内容,扫描网站目录结构可以看看是否可以遍历目录,或者敏感文件泄漏,包括:
后台目录:弱口令,万能密码,爆破
安装包:获取数据库信息,甚至是网站源码
上传目录:截断、上传图片马等
mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
安装页面 :可以二次安装进而绕过
phpinfo:会把你配置的各种信息暴露出来
编辑器:fck、ke等
iis短文件利用:条件比较苛刻 windows、apache等
(1) 敏感文件、目录
-
github
开发人员将代码上传到网站,在上传的时候,没有删除重要的一些信息。如邮箱信息,SVN信息,内部账号和密码,数据库连接信息,服务器配置信息等。尤其是邮箱信息和内部账号和密码。这类信息可以通过在github上搜索公司的一些特定信息,查看是否有程序员将这些信息上传到了github上
-
git
".git" intitle:"index of "
https://github.com/lijiejie/GitHack -
svn
".svn" intitle:"index of "
https://github.com/admintony/svnExploit -
.DS_Storehg
-
.bzr
-
CVS
-
WEB-INF
-
备份文件
(2) 网站备份文件
网站备份文件泄露指管理员误将网站备份文件或是敏感信息文件存放在某个网站目录下。
https://github.com/7kbstorm/7kbscan-WebPathBrute
(3)目录探测
- dirsearch:https://github.com/maurosoria/dirsearch
- 御剑后台扫描工具
- dirmap:https://github.com/H4ckForJob/dirmap
3. 网站WAF识别
WAF 即:Web Application FireWall(Web应用防火墙)。可以通俗的理解为:用于保护网站,防黑客、防网络攻击的安全防护系统;是最有效、最直接的Web安全防护产品。WAF功能如下
防止常见的各类网络攻击,如:SQL注入、XSS跨站、CSRF、网页后门等;
防止各类自动化攻击,如:暴力破解、撞库、批量注册、自动发贴等;
阻止其它常见威胁,如:爬虫、0DAY攻击、代码分析、嗅探、数据慕改、越权访问、敏感信息泄漏、应用层DDOS、远程恶意包含、盗链、越权、扫描等。
(1) WAF识别
- wafw00f
https://github.com/EnableSecurity/wafwoof
nmap-p80,443--script http-waf-detect ip
nmap-p80,443--script http-waf-fingerprint ip - 看图识waf,常见WAF拦截页面总结
https://mp.weixin.qq.com/s/PWkqNsygi-c_S7tW1y_Hxw
0x06 其他信息收集
1.历史漏洞信息
- 乌云镜像站
http://wy.zone.ci/ - 乌云知识库
https://wooyun.kieran.top/#!/ - exploit-db
https://www.exploit-db.com/ - 知道创宇seebug
https://www.seebug.org/
2.社会工程学
- 略