信息收集
信息收集
一、简介
什么是信息搜集
信息搜集也称踩点,信息搜集毋庸置疑就是尽可能的搜集目标的信息,包括端口信息、DNS信息、员工邮箱等等看似并不起眼的一些信息都算是信息搜集,这些看似微乎其微的信息,对于渗透测试而言就关乎到成功与否了。
信息搜集的重要性
信息搜集是渗透测试的最重要的阶段,占据整个渗透测试的60%,可见信息搜集的重要性。根据收集的有用信息,可以大大提高我们渗透测试的成功率。
信息搜集的分类
1、主动式信息搜集(可获取到的信息较多,但易被目标发现)
2、通过直接发起与被测目标网络之间的互动来获取相关信息,如通过Nmap扫描目标系统。
3、被动式信息搜集(搜集到的信息较少,但不易被发现)
4、通过第三方服务来获取目标网络相关信息。如通过搜索引擎方式来搜集信息。
二、搜索引擎
常用搜索语法:
- intitle:KEYWORD //搜索网页标题中含有关键词的网页
- intext:KEYWORD //搜索站点正文中含有关键词的网页
- inurl:KEYWORD //搜索URL中包含有指定字符串的网址
- inurl:php?id= //搜索PHP网页
- site:DOMAIN //在指定站点内查找相关的内容
- filetype:FILE //搜索指定类型的文件
2. Shodan
Shodan与Google这种搜索网址的搜索引擎不同的是,Shodan是用来搜索网络空间中在线设备的。
3. Zoomeye
ZoomEye是一款针对网络空间的搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息。
搜索语法
1、app:nginx 组件名
2、ver:1.0 版本
3、os:windows 操作系统
4、country:”China” 国家
5、city:”hangzhou” 城市
6、port:80 端口
7、hostname:google 主机名
8、site:thief.one 网站域名
9、desc:nmask 描述
10、keywords:nmask’blog 关键词
11、service:ftp 服务类型
12、ip:8.8.8.8 ip地址
13、cidr:8.8.8.8/24 ip地址段
三、企业信息
1. 天眼查
天眼查是一款“都能用的商业安全工具”,根据用户的不同需求,实现了企业背景、企业发展、司法风险、经营风险、经营状况、知识产权方面等多种数据维度的检索。
2. 企业信用信息公示系统
四、whois信息
whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。张有刚.com
whois信息可以获取关键注册人的信息,包括注册商、联系人、联系邮箱、联系电话、创建时间等,可以进行邮箱反查域名,爆破邮箱,社工,域名劫持等等。
Nslookup用法
例如:
1.设置类型为ns
2.下面的例子查询baidu.com使用的DNS服务器名称:
3.下面的例子展示如何查询baidu.com的邮件交换记录:
4.查看网站cname值。
5.查看邮件服务器记录(-qt=MX)
6.同样nslookup也可以验证是否存在域传送漏洞,步骤如下:
1) nslookup进入交互式模式
2) Server 设置使用的DNS服务器
3) ls命令列出某个域中的所有域名
五、子域名收集
子域名收集可以发现更多渗透测试范围内的域名/子域名,以增加漏洞发现机率;探测到更多隐藏或遗忘的应用服务,这些应用往往可导致一些严重漏洞。
常用的工具有:子域名挖掘机Layer、subDomainsBrute、Dnsenum、Dnsmap ...
六、真实IP获取
现在大多数的网站都开启了CDN加速,导致我们获取到的IP地址不一定是真实的IP地址。
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
- 多地Ping法:由CDN的原理,不同的地方去Ping服务器,如果IP不一样,则目标网站肯定使用了CDN。多个地点Ping服务器-站长工具
- 二级域名法:目标站点一般不会把所有的二级域名放cdn上。通过在线工具如站长帮手,收集子域名,确定了没使用CDN的二级域名后。本地将目标域名绑定到同IP(修改host文件),如果能访问就说明目标站与此二级域名在同一个服务器上;如果两者不在同一服务器也可能在同C段,扫描C段所有开80端口的IP,然后挨个尝试。
- nslookup法:找国外的比较偏僻的DNS解析服务器进行DNS查询,因为大部分CDN提供商只针对国内市场,而对国外市场几乎是不做CDN,所以有很大的几率会直接解析到真实IP。
- Ping法:直接ping example.com而不是www.example.com,因为现有很多CDN厂商基本只要求把www.example.com cname到CDN主服务器上去,那么直接ping example.com有可能直接获得真实IP。
七、指纹识别
通过识别目标网站所使用的操作系统、CMS、服务器与中间件信息,可以帮助我们进一步了解渗透测试环境,可以利用已知的一些CMS漏洞或中间件漏洞来进行攻击。
1.可以在以下地方获取信息:
- 指定路径下指定名称的js文件或代码。
- 指定路径下指定名称的css文件或代码。
- <title>中的内容,有些程序标题中会带有程序标识,但不是很多。
- meta标记中带程序标识<meta name="description"/><meta name="keywords"/><meta name="generator"/><meta name="author"/><meta name="copyright"/>中带程序标识。
- display:none中的版权信息。
- 页面底部版权信息,关键字© Powered by等。
- readme.txt、License.txt、help.txt等文件。
- 指定路径下指定图片文件,如一些小的图标文件,后台登录页面中的图标文件等,一般管理员不会修改它们。
- 注释掉的html代码中<!--
10. http头的X-Powered-By中的值,有的应用程序框架会在此值输出。
11. cookie中的关键字
12. robots.txt文件中的关键字
13. 404页面
14. 302返回时的旗标
2.大小写
访问网站:
Windows操作系统不区分大小写,Linux系统大小写敏感,用此方法能够判断是Windows还是Linux系统。
工具:Whatweb、httprint、云悉、BugScanner ...
八、端口扫描
扫描端口可以使用Nmap,masscan进行扫描探测,尽可能多的搜集开启的端口好已经对应的服务版本,得到确切的服务版本后可以搜索有没有对应版本的漏洞。
常见的端口信息及渗透方法:
端口 |
服务 |
渗透用途 |
tcp 20,21 |
FTP |
允许匿名的上传下载,爆破,嗅探,win提权,远程执行(proftpd 1.3.5),各类后门(proftpd,vsftp 2.3.4) |
tcp 22 |
SSH |
可根据已搜集到的信息尝试爆破,v1版本可中间人,ssh隧道及内网代理转发,文件传输等等 |
tcp 23 |
Telnet |
爆破,嗅探,一般常用于路由,交换登陆,可尝试弱口令 |
tcp 25 |
SMTP |
邮件伪造,vrfy/expn查询邮件用户信息,可使用smtp-user-enum工具来自动跑 |
tcp/udp 53 |
DNS |
允许区域传送,dns劫持,缓存投毒,欺骗以及各种基于dns隧道的远控 |
tcp/udp 69 |
TFTP |
尝试下载目标及其的各类重要配置文件 |
tcp 80-89,443,8440-8450,8080-8089 |
各种常用的Web服务端口 |
可尝试经典的topn,vpn,owa,webmail,目标oa,各类Java控制台,各类服务器Web管理面板,各类Web中间件漏洞利用,各类Web框架漏洞利用等等…… |
tcp 110 |
POP3 |
可尝试爆破,嗅探 |
tcp 111,2049 |
NFS |
权限配置不当 |
tcp 137,139,445 |
Samba |
可尝试爆破以及smb自身的各种远程执行类漏洞利用,如,ms08-067,ms17-010,嗅探等…… |
tcp 143 |
IMAP |
可尝试爆破 |
udp 161 |
SNMP |
爆破默认团队字符串,搜集目标内网信息 |
tcp 389 |
LDAP |
ldap注入,允许匿名访问,弱口令 |
tcp 512,513,514 |
Linux rexec |
可爆破,rlogin登陆 |
tcp 873 |
Rsync |
匿名访问,文件上传 |
tcp 1194 |
OpenVPN |
想办法钓VPN账号,进内网 |
tcp 1352 |
Lotus |
弱口令,信息泄漏,爆破 |
tcp 1433 |
SQL Server |
注入,提权,sa弱口令,爆破 |
tcp 1521 |
Oracle |
tns爆破,注入,弹shell… |
tcp 1500 |
ISPmanager |
弱口令 |
tcp 1723 |
PPTP |
爆破,想办法钓VPN账号,进内网 |
tcp 2082,2083 |
cPanel |
弱口令 |
tcp 2181 |
ZooKeeper |
未授权访问 |
tcp 2601,2604 |
Zebra |
默认密码zerbra |
tcp 3128 |
Squid |
弱口令 |
tcp 3312,3311 |
kangle |
弱口令 |
tcp 3306 |
MySQL |
注入,提权,爆破 |
tcp 3389 |
Windows rdp |
shift后门[需要03以下的系统],爆破,ms12-020 |
tcp 3690 |
SVN |
svn泄露,未授权访问 |
tcp 4848 |
GlassFish |
弱口令 |
tcp 5000 |
Sybase/DB2 |
爆破,注入 |
tcp 5432 |
PostgreSQL |
爆破,注入,弱口令 |
tcp 5900,5901,5902 |
VNC |
弱口令爆破 |
tcp 5984 |
CouchDB |
未授权导致的任意指令执行 |
tcp 6379 |
Redis |
可尝试未授权访问,弱口令爆破 |
tcp 7001,7002 |
WebLogic |
Java反序列化,弱口令 |
tcp 7778 |
Kloxo |
主机面板登录 |
tcp 8000 |
Ajenti |
弱口令 |
tcp 8443 |
Plesk |
弱口令 |
tcp 8069 |
Zabbix |
远程执行,SQL注入 |
tcp 8080-8089 |
Jenkins,JBoss |
反序列化,控制台弱口令 |
tcp 9080-9081,9090 |
WebSphere |
Java反序列化/弱口令 |
tcp 9200,9300 |
ElasticSearch |
远程执行 |
tcp 11211 |
Memcached |
未授权访问 |
tcp 27017,27018 |
MongoDB |
爆破,未授权访问 |
tcp 50070,50030 |
Hadoop |
默认端口未授权访问 |
9、Nmap
Nmap是一个网络连接端口扫描软件,用来扫描网上电脑开放的网络连接端口。确定哪些服务运行在哪些连接端口,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
功能:
1、 主机发现
2、 端口扫描
3、 版本侦测
4、 OS侦测
几种部署方式:
- Kail集成环境
- 单独安装(使用yum工具直接安装)
- PentestBox环境
- Windows版等等
Nmap的参数和选项繁多,功能非常丰富。我们先来看一下Nmap的通用命令格式:
(详细教程及下载方式参见:[]()http://nmap.org/)
Nmap<扫描选项><扫描目标>
主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种不同的主机探测方式,比如发送ICMP ECHO/TIMESTAMP/NETMASK报文、发送TCPSYN/ACK包、发送SCTP INIT/COOKIE-ECHO包,用户可以在不同的条件下灵活选用不同的方式来探测目标机。
主机发现的基本用法
1. -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。
2. -sn: Ping Scan 只进行主机发现,不进行端口扫描。
3. -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。
4. -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。
5. -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。
6. -PO[protocollist]: 使用IP协议包探测对方主机是否开启。
7. -sP:Ping 指定范围内的 IP 地址
8. -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。
9. --dns-servers <serv1[,serv2],...>: 指定DNS服务器。
10. --system-dns: 指定使用系统的DNS服务器
11. --traceroute: 追踪每个路由节点
扫描局域网192.168.80.1/24范围内哪些IP的主机是活动的。
- 命令如下:nmap –sn 192.168.80.1/24
由图可知:192.168.80.1、192.168.80.254、192.168.80.166三台主机处于存活状态。
扫描局域网1192.168.80.100-2001范围内哪些IP的主机是活动的。
- 命令如下:1nmap –sP 192.168.80.100-200
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。Nmap通过探测将端口划分为6个状态:
open:端口是开放的。
closed:端口是关闭的。
filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
open|filtered:端口是开放的或被屏蔽。
closed|filtered :端口是关闭的或被屏蔽。
- 端口扫描方面非常强大,提供了很多的探测方式:
TCP SYN scanning
TCP connect scanning
TCP ACK scanning
TCP FIN/Xmas/NULL scanning
UDP scanning
其他方式
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。
- -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。
- -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。
- --scanflags <flags>: 定制TCP包的flags。
- -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)
- -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。
- -sO: 使用IP protocol 扫描确定目标机支持的协议类型。
- -b <FTP relay host>: 使用FTP bounce scan扫描方式
- -p指定端口扫描
在此,我们以主机192.168.80.166为例。命令如下:
- nmap -sS -p0-65535 -T4 192.168.80.166
参数-sS表示使用TCP SYN方式扫描TCP端口;-p0-65535表示扫描所有端口;-T4表示时间级别配置4级;
扫描特定端口是否开放
- nmap -p21,80,445,3306 192.168.80.166
简要的介绍版本的侦测原理。版本侦测主要分为以下几个步骤:
- 首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
- 如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
- 如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
- 如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
l 如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
- 如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务。
- -sV: 指定让Nmap进行版本侦测
- --version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
- --version-light: 指定使用轻量侦测方式 (intensity 2)
- --version-all: 尝试使用所有的probes进行侦测 (intensity 9)
- --version-trace: 显示出详细的版本侦测过程信息。
对主机192.168.80.166进行版本侦测。
- 命令如下:nmap -sV -p0-65535 -T4 192.168.80.166
Nmap使用TCP/IP协议栈指纹来识别不同的操作系统和设备。在RFC规范中,有些地方对TCP/IP的实现并没有强制规定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根据这些细节上的差异来判断操作系统的类型的。
具体实现方式如下:
Nmap内部包含了2600多已知系统的指纹特征(在文件nmap-os-db文件中)。将此指纹数据库作为进行指纹对比的样本库。分别挑选一个open和closed的端口,向其发送经过精心设计的TCP/UDP/ICMP数据包,根据返回的数据包生成一份系统指纹。将探测生成的指纹与nmap-os-db中指纹进行对比,查找匹配的系统。如果无法匹配,以概率形式列举出可能的系统。
- -O: 指定Nmap进行OS侦测。
l --osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
- --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。
命令:nmap –O 192.168.80.166
- -vv详细显示扫描状态
nmap -p21,80,445,3306 -vv 192.168.80.166
- --script 使用nse脚本,也可自行编写nse脚本,nmap有580多个脚本
nmap --script=auth 192.168.80.166
- --script=brute 对弱口令进行暴力破解
nmap --script=brute 192.168.80.166
- --script=default 使用默认nse脚本搜集应用的信息
nmap --script=default 192.168.80.166
- --script=vuln 检测常见漏洞
nmap --script=vuln 192.168.80.166
优势:
- 功能灵活强大,支持多种目标,大量计算机的同时扫描;
- 开源,相关帮助文档十分详细;
- 流行,由于其具有强大的扫描机探测功能,,已被成千上万安全专家使用。
劣势:
- Nmap参数众多,难以一一记忆;
九、旁站C段查询
旁站:是和目标网站在同一台服务器上的其它的网站。
旁注:通过入侵安全性较差的旁站,之后可以通过提权跨目录等手段拿到目标服务器的权限。
工具:K8_C段旁注工具、WebRobot、御剑、明小子 ...
C段:是和目标机器ip处在同一个C段的其它机器。
C段入侵:目标ip为192.168.1.128,可以入侵192.168.1.*的任意一台机器,然后利用一些黑客工具嗅探获取在网络上传输的各种信息。
工具:Cain、Sniffit 、Snoop、Tcpdump、Dsniff ...
十、其他信息
Web敏感文件
robots.txt、crossdomin.xml、sitemap.xml、源码泄漏文件 ...
WAF信息
WAF识别大多基于Headers头信息,还可以使用Wafw00f,Sqlmap的waf脚本,Nmap的http-waf-detect和http-waf-fingerprint脚本等等。
相关漏洞
漏洞查询站点:exploitdb、hackerone、CNVD、0day5、乌云漏洞库镜像站 ...