信息收集
信息收集是渗透测试的第一步,指的是在渗透测试中,对目标系统进行全面、深入、细致的调查分析,以获取其特征、状态、潜在漏洞等信息的过程。它可以帮助渗透测试人员确定目标范围、类型、弱点、风险等,从而指定合理的攻击策略和方案。
开源情报
(open source intelligence,OSINT)是指从各种公开的渠道上寻找和获取有价值的信息,具有以下特点
-
丰富性
-
可及性
-
实时性
-
合法性
-
whois
是一种用于查询域名或IP地址注册信息的工具,它通过向特定的whois服务器发送查询请求,获取目标域名或IP地址的相关信息
-
CDN(content delivery network,内容分发网络):是一种用于屏蔽运营商节点性能差异并实现数据告诉传输的技术。
-
原理:在各个运营商节点上部署高速缓存服务器,将用户常用的静态数据资源缓存在这些服务器上,当用户请求这些资源的时候就可以直接从离用户近的服务器上获取,而不需要从远程Web服务器上下载。只有当用户需要进行动态数据交互时,才会与远程Web服务器通信
-
但是如果目标服务器部署了CDN,我们扫描到的将是CDN服务器的端口,为此我们通过6种方法绕过它
-
邮箱地址:利用网站发送的电子邮电来获取网站的真实IP地址
找到一个可以向目标网站发送电子邮件的方式,使用攻击者发送电子邮件或者接收电子邮件,接着查看电子邮件的原始内容,找到其中的邮件头的received字段,这个字段记录了邮件在传输过程中经过的所有服务器的信息
-
phpinfo文件:是一个PHP函数,它可以输出PHP的配置信息,还可以用来检查PHP的安装情况和运行环境,也可以用来调试和优化PHP 的性能。是一个包含phpinfo函数调用的PHP脚本文件,可以在浏览器中显示PHP的配置信息
首先需要访问网站根目录下的phpinfo.php文件,如果能够正常访问就可以看到PHP的配置信息,在其中找到SERVER_ADDR字段,既可以找到服务器的IP地址
-
分站:分站是指一个网站的子网站,一般用子域名来体现,有些网站会使用CDN来保护主站,但是分站没有
-
国外访问获取真实IP地址:有些网站会针对国内发起的访问使用CDN进行保护,但是当访问由国外发起的则没有保护
-
域名历史解析记录:是指一个域名在过去的一段时间内,与哪些IP地址进行过解析的记录。
-
APP请求:有些网站提供了移动端的app,且与pc端使用同一个后台服务器,移动端没有启用CDN,这样就可以通过分析APP的网络请求,找到后台服务器的IP地址
-
-
-
子域名:子域名是指一个域名的前缀,用于划分网站不同的=部分或功能。
-
Netcraft在线网站查询:它是一个网络服务信息的网站,可以用于查询目标网络的子域名、IP地址、操作系统、服务器软件等信息(https://searchdns.netcraft.com/)
-
证书透明度公开日志:证书透明度(certificate transparency,CT)是一个让证书授权机构公开每个SSL/TLS证书的项目,这些证书通常包含了域名、子域名、邮件地址等信息(crt.sh | Certificate Search)
-
使用AORT枚举子域名:它是一个功能强大的网络侦查与信息收集工具,它可以用来扫描目标网络或主机端口、服务、漏洞等信息。在使用该工具枚举子域名时,采取的是被动方式,不会与目标建立任何请求
-
使用subfinder枚举子域名:它是一款能够从多个在线源快速扩区目标网站有效子域名的信息收集工具,采用了简单的模块化架构,优化了运行速度,降低了资源消耗
-
-
搜索引擎及在线网站:
-
Google搜索引擎
-
在线网站
-
Shodan是一个网络扫描引擎,它可以帮助我们查询互联网上链接的设备IP地址、端口、服务、潜在漏洞等信息
语法 解释 hostname 搜索指定的主机或域名,如hostname:"baidu.com" port 搜索指定的端口或服务 country 搜索指定的国家 city 搜索指定的城市 org 搜索指定的组织或公司 product 搜索指定的操作平台/软件/系统 version 搜索指定的软件版本 before/after 搜索指定收录时间前/后的数据 net 搜索指定IP地址或子网 server 搜索指定的服务 -
Censys:相较于Shodan,它可以进行更多的搜索,语法与之一样
-
FOFA:适用于网络空间测绘的一款搜索引擎,仅针对网页URL以及IP地址信息等进行查询,语法可在主界面“查询语法”进行查看
-
-
主动侦查
是指直接与目标系统进行交互,发送数据包或请求,获取目标的响应与反馈。好处是获得更准确和实时的消息;缺点是可能会被目标发现或触碰到目标的防御机制,造成不必要的风险或影响
-
DNS侦查:DNS侦查是指通过查询目标的域名系统来收集目标相关的信息,获取目标的网络拓扑和结构,发现潜在的攻击面和入口
-
DNSMap
dnsmap 域名 -r dnsmap.txt
枚举子域名,显示IP地址,枚举结果保存在dnsmap.txt文件中
-
DNSRecon
dnsrecon -d 域名
查询目标域名的SOA记录(系统操作日志)、NS记录(名称服务器)、A记录(IP地址)等信息
dnsrecon -r IP地址 -t rvl-v
通过查询目标IP地址来获目标的其他主机名和域名
-
DNSEnum
dnsenum 域名
该工具已经预装在Kali Linux系统中。可通过DNS查询获取子域名以及所有DNS记录值。默认情况下,该工具还会验证是否存在区域传输漏洞
-
Fierce
fierce --domain 域名
通过发送DNS请求来扫描对应的子域名和IP地址,并获取相关信息
-
-
主机枚举:是指在网络中发现和识别目标主机的活动
-
ATK6:是用于测试IPv6和ICMPv6协议弱点的工具包,可以执行枚举主机、发现新设备、发起拒绝服务攻击、利用已知漏洞等
atk6-alive6 eth0
可直接检测内网中存活的IPv6主机
-
fping:可以发送ICMP回显探测包到网络主机,类似于ping,但是同时ping多个主机时性能更好
fping -a -g -q IP地址范围/网段
-
hping3:是一款能够发送自定义的TCP/IP数据包并显示目标回复信息的网络工具,它的功能类似于ping,但更强大灵活
hping3 --icmp -c number IP地址
向IP地址主机发icmp请求来确认该主机是否存活,-c number表示发送请求的次数
hping3 -S --flood --rand-source -p 端口IP地址
基于SYN协议、源IP地址的随机DDos攻击
hping3 --scan 80-100,200-250 -S 域名
扫描域名下的80-100和200-250内存在的端口号,以确定那个端口处于开放状态
hping3 -c number -V -p number -F 域名或IP地址
执行FIN扫描来判断指定地址的主机是否开启了哪个端口
-
nping:是一款能够生成和分析网络数据包的工具,可以用于测量网络延迟和性能
nping 域名/IP地址
存活主机扫描
nping IP地址开头-IP地址结尾 -H
对指定范围内的主机进行扫描
nping --tcp -p number 域名或IP地址
可对指定的域名或者IP地址的端口进行扫描
-
Nmap:是一款开源的网络发现和安全审计工具,可以扫描网络上的主机和端口,检测主机的在线状态、端口的开放情况、服务的类型和版本、操作系统和设备类型等
nmap -A -T4 域名或IP地址
检测目标主机的操作系统和版本,显示路由追踪的结果,并通过自带的NES漏洞利用脚本来验证目标主机是否存在漏洞
namp -T4 域名或IP地址 -p 1-65535
进行全端口扫描。默认情况下,nmap只扫描常见的1000个端口
namp -O 域名或IP地址
检测目标主机的操作系统和版本
namp 域名或IP地址 --spoof-mac MAC地址或0
伪造Nmap所在的主机mac地址,继续对目标发起扫描,如果值为0,则会启用随机mac地址发起扫描
namp -f 域名或IP地址
对扫描的请求数据包进行分段处理,以加大目标主机上防火墙的拦截难度
nmap --mtu 数据包的大小 域名或IP地址
设置发向目标的数据包的最大长度,超过该长度的数据包将由Nmap自动进行分段
nmap -D 伪造IP地址 域名或IP地址
是将“伪造的IP地址”添加到攻击者的IP地址,是主机上的防御机制无法判断攻击者的真实IP地址。-D选项用于开启伪造请求数据包的IP地址功能
namp -D RND 随机IP地址数量 域名或IP地址
表示生成指定数量的 伪造的随机IP地址
namp --data-string“\u0068\u0065\u006c\u006f” 域名或IP地址
将自定义的字符串插入数据包,进行扫描
nmap --spoof-mac mac地址 --data-length number -T1 -f --mtu number -D RND -sS -sV -P number -n -oA/root -spoof-mac mac地址:表示伪造MAC地址 -data-length number:表示在TCP或UDP数据包中添加随机数据 -T1:表示设置扫描速度为1,即最慢的速度 -f:表示参数分割数据包。将数据包分成更小的片段 -mtu:表示设置数据包的最大传输单元,用来配合-f -D RND:表示使用随机的IP地址作为诱饵,即在扫描目标主机的时候同时伪造其他主机的扫描请求 -sS:表示SYN扫描 -sV:表示使用服务器版本探测,即根据开放端口返回的信息推断运行的服务和版本 -p number:表示指定扫面端口或端口范围 -n:表示不进行DNS解析 -oA/root:表示将扫描结果输出到/root目录下的三种格式文件中(namp、gnamp、xml)
-
-
指纹识别:是指通过一些特征或特定文件来识别目标网站或系统类型、版本、组件等信息,以便寻找相应的漏洞或攻击方法。指纹识别分为主动识别和被动识别
主动识别:是指通过向目标系统发送正常和异常的请求以及对文件内容的查找,记录相应方式,然后与指纹库进行对比来识别
被动识别:是通过分析目标主机发送或接收的数据包,来推断其操作系统、服务、应用程序等信息
*相较而言,主动识别的准确度更高,但容易导致被目标系统拉黑或阻断,而被动识别的准确度略低,但是不会产生异常请求,安全性更高
-
插件识别:Wappalyzer插件是一款浏览器扩展插件,可用于分析当前网络使用的技术
-
WhatWeb:开源的指纹识别工具,可识别网站使用的CMS、博客平台、中间件、Web框架模块、网站服务器、脚本、JavaScript库、IP、cookie等技术
whatweb 域名或IP地址 #识别目标网站的指纹特征 whatweb 域名或IP地址-H:Snowwolf:apt -U:Chrome #修改请求消息头中的HTTP头为Snowwolf:apt,User-Agent为Chrome whatweb 域名或IP地址 -v 命令 #获取指纹更多信息
-
WAF识别:WAF(Web Application Firewall,Web应用防火墙)可对来自Web应用客户端的各类请求进行内容检测和验证,确保其安全性和合法性,从而寻找相应的绕过方法或攻击点。现有的WAF识别技术可以通过向目标网站的WAF构造并发送恶意请求,然后分析返回的响应内容,从而判断目标网站使用的WAF
wafw00f 域名或IP地址 #识别WAF wafw00f 域名与IP地址 --proxy=代理地址 #通过代理来识别WAF
-
-
目录扫描:是一种信息收集技术,可以帮助渗透测试人员发现网站中的隐藏或敏感目录,从而获取更多的信息或利用漏洞。目录扫描的原理是使用字典或暴力破解的方法,对网站的URL进行拼接和访问,根据响应状态码或内容来判断目录是否存在。
-
Dirb:一个基于命令行界面的目录i扫描攻击,可以使用内置的字典或自定义的字典对网站进行扫描,同时支持代理、鉴权、忽略状态码等功能
dirb 域名或IP地址 #扫描目录网站的目录和文件 dirb 域名或IP地址 -c #如果目标网站需要登录,或者说我们需要枚举网站登录后的网页的目录,则可以使用cookie扫描 dirb 域名或IP地址 -R #如果要扫描地址路径下的目录,则可以通过-R选项进行交互式的递归扫描 dirb 域名或IP地址 字典文件路径 #如果待扫描的目录或文件较少,则可以指定其他字典文件进行枚举
-
DirBuster:一款基于图形用户界面的目录扫描工具,可以使用内置字典或自定义字典对网站进行扫描,同时支持多线程、代理、鉴权、忽略状态码等功能
*该工具已经预装在Kali Linux中,要使用直接单击kali左上角的logo,然后在web程序的web爬行子菜单中找到并打开
-
GoBuster:一款相当出色的目录扫描工具,它能够利用多线程、自定义请求头、代理、鉴权等功能,对目标网站的目录或文件进行扫描
gobuster dir -w 要使用的字典 -u 要扫描的网络地址 -c(要扫描登录后的目录和文件,可以使用cookie来扫描)
-
ffuf:一个命令行工具,可以快速对web应用程序进行模糊测试,检测器安全性和功能,可以允许我们自定义请求和响应的各种参数,可以帮助我们发现web服务器上隐藏或敏感的文件和目录,从而获得更多的攻击面
ffuf -u指定扫描的URL地址 -w指定的字典文件 -c(表示开启彩色输出)
-
Wfuzz:一个web应用程序的模糊测试工具,命令行工具,用来发现web应用程序的隐藏资源,特点是支持多编码、注入、过滤和代理技术。该工具会在执行时将字典文件中的每一行内容来替换FUZZ关键字,并发送请求到目标URL,然后根据响应的状态码、大小、时间等过滤和排序结果,最后显示出可能存在的文件或目录
wfuzz -w 字典文件 --hc 404 网站地址 #扫描网站中的目录和文件 --hc 404表示隐藏404状态码的文件或目录输出
wfuzz -z file,字典文件 -d "uname=FUZZ&pass=FUZZ" --hc 302 网站地址#枚举能够登录网站的用户名和密码
wfuzz -w 字典文件 -b cookie="cookie值" 域名或IP地址/FUZZ #通过cookie枚举登录后的网站中的目录或文件,如果将cookie值换成是FUZZ占位符,就会枚举cookie的值
-
综合侦查
是信息收集的一个重要步骤,涉及多个来源收集和分析目标信息,以了解其背景、特征、潜在漏洞风险等
-
Dmitry:一个预装在Kali Linux系统中的信息收集工具,一个命令行工具,可以使用不同的选项来收集目标的信息,可以与whois服务和Netcraft服务结合使用,以便于获取目标的注册信息、操作者系统、网络服务等。它是一个被动的信息收集工具,不会直接与目标进行交互,利用公开数据源获取信息。
dmitry -winsepo vulnweb.txt 目标的域名或IP地址 -winsepo表示在目标主机上执行whois查找、检索关于主机的Netcraft信息,搜索子域名和电子邮件地址、执行TCP端口扫描,并将将结果保存到vulnweb.txt文件中去
-
Maltego:是一个开源的情报和取证应用,可以帮助渗透测试人员快速挖掘和收集目标的信息,并用一种易于理解的格式呈现出这些信息。使用时需要先登录官网注册身份,然后进行使用
-
Normal Privacy Mode:该模式在信息收集过程中,允许直接从互联网上获取某些数据类型
-
Stealth Privacy Mode:该模式用于在信息收集过程中避免与目标服务器或网络直接联系
-
-
SpiderFoot:是一个用于收集开源情报的自动化工具,可以帮助渗透测试人员自动收集目标的各种信息,并以图形化的方式展现各个目标之间的联系,是一个预装在Kali Linux的工具
spiderfoot -l IP地址 #启动SpiderFoot的web服务 IP地址为127.0.0.1时后台地址只能本机访问,当为0.0.0.0时,所有主机都可以访问spiderfoot的web服务