项目笔记:渗透测试之信息收集

        在渗透测试中,信息收集是整个测试流程的基础和核心环节,其目标是全面、深入地了解目标系统的相关信息,为后续的漏洞发现和利用提供依据。

一、信息收集的目标

  1. 确定攻击面:识别目标系统的所有潜在入口点,包括公开服务、子域名、网络设备等。
  2. 发现潜在漏洞:通过收集目标系统的技术细节,识别可能存在的安全漏洞。
  3. 规划攻击路径:根据收集到的信息,制定针对性的渗透测试策略。

1.1:信息收集概述及分类

        1.1.1:信息收集分类

                信息收集分为两类:

                主动信息收集:需要与目标机器进行直接交互,缺点:容易被目标机器记录操作或屏蔽,比如NMAP,Scapy.

                被动信息收集:不需要与目标机器直接交互,主要利用第三站点或者渠道来进行信息收集,比如:Google,shadan,fofa

        收集内容

                IP地址,公司地址,邮件地址,域名信息,联系电话,公司组织,技术成员,网站技术架构,主机存活情况,端口信息,敏感信息等等。

·域名与子域名信息
  • Whois查询:获取域名的注册信息,包括注册人、注册商、注册日期、到期日期等。
  • 子域名枚举:通过工具(如Sublist3r、Amass)或搜索引擎(如Google、Bing)发现目标的子域名。
  • DNS解析记录:获取域名的A记录、MX记录、NS记录等,发现隐藏的服务或主机。
·网络与端口信息
  • 端口扫描:使用Nmap等工具扫描目标主机的开放端口,识别运行的服务和版本。
  • 网络拓扑:通过 traceroute、Shodan 等工具绘制目标网络的拓扑结构。
·Web应用信息
  • Web目录与文件枚举:使用DirBuster、Gobuster等工具扫描Web应用的目录和文件,发现敏感信息(如备份文件、配置文件)。
  • Web技术栈识别:通过Wappalyzer、BuiltWith等工具识别Web应用使用的技术栈(如CMS、框架、服务器)。
  • 敏感信息泄露:检查GitHub、Pastebin等平台,查找目标系统泄露的敏感信息(如源代码、配置文件)。
·操作系统与软件信息
  • 操作系统指纹识别:通过Nmap的-O选项或p0f等工具识别目标主机的操作系统。
  • 软件版本识别:通过Banner抓取、协议分析等方式识别目标系统上运行的软件及其版本。
·人员信息
  • 社交媒体挖掘:通过LinkedIn、Twitter等社交媒体平台收集目标公司员工的信息。
  • 邮件地址收集:收集目标公司员工的邮件地址,用于后续的钓鱼攻击测试。
· 云服务信息
  • 云资产发现:通过AWS、Azure等云服务提供商的API或第三方工具(如ScoutSuite)发现目标在云上的资产。
  • 云配置审计:检查云服务的配置,发现潜在的安全问题(如S3存储桶权限过大)。

二、信息收集的方法与工具

1. 主动信息收集
  • 网络扫描:使用Nmap、Masscan等工具进行端口扫描和服务识别。
  • Web应用扫描:使用Nikto、OWASP ZAP等工具进行Web应用的安全扫描。
  • 漏洞利用工具:使用Metasploit等框架对发现的漏洞进行初步验证。
2. 被动信息收集
  • 搜索引擎:使用Google Hacking、Shodan等工具搜索目标系统的公开信息。
  • 社交媒体:通过社交媒体平台收集目标公司及其员工的信息。
  • 公开数据源:查询WHOIS、DNSdumpster、Censys等公开数据源,获取目标的域名和IP信息。
3. 自动化工具
  • Recon-ng:一个开源的情报收集框架,支持多种模块进行信息收集。
  • Maltego:一个可视化工具,用于关联和分析收集到的信息。
  • TheHarvester:一个用于收集电子邮件地址、子域名、主机名和IP地址的工具。

·Google搜索引擎使用技巧

1. 精确匹配搜索

  • 使用双引号:将关键词用双引号括起来,可搜索完全匹配的短语。例如:"admin login page"

  • 适用场景:查找特定文件名、路径或错误信息。

2. 限定搜索范围

  • site: 指令:仅搜索特定网站或域名。例如:site:example.com inurl:admin

  • filetype: 指令:搜索特定文件类型。例如:filetype:log site:example.com

3. 排除干扰结果

  • 减号(-):排除特定关键词。例如:intitle:"index of" -passwd

  • 适用场景:避免返回无关或误报结果。

4. 搜索URL中的关键词

  • inurl: 指令:搜索URL中包含特定关键词的页面。例如:inurl:/login

  • 适用场景:查找登录页面、管理后台等。

5. 搜索页面标题中的关键词

  • intitle: 指令:搜索标题中包含特定关键词的页面。例如:intitle:"backend management"

  • 适用场景:查找管理后台、配置页面等。

6. 搜索页面正文中的关键词

  • intext: 指令:搜索正文内容中包含特定关键词的页面。例如:intext:"password reset"

  • 适用场景:查找与密码重置相关的页面。

7. 搜索相关页面

  • related: 指令:搜索与指定网站相关的页面。例如:related:example.com

  • 适用场景:发现类似目标系统的其他网站。

8. 搜索链接到特定页面的网站

  • link: 指令:搜索链接到指定页面的网站。例如:link:example.com

  • 适用场景:查找引用目标系统的外部链接。

9. 搜索特定时间范围内的结果

  • 时间范围筛选:在搜索结果页面点击“工具”→“时间”,选择特定时间范围。

  • 适用场景:查找最新或历史信息。

10. 使用通配符搜索

  • 星号(*):作为通配符,代替未知或缺失的关键词。例如:"powered by *"

  • 适用场景:查找特定框架或CMS版本信息。

11. 搜索数学计算或单位转换

  • 数学计算:直接在搜索框输入算式,例如:8*5+5

  • 单位转换:例如:100 miles in km

  • 适用场景:快速进行计算或单位转换。

12. 使用OR逻辑搜索

  • OR 操作符:搜索包含任意一个关键词的页面。例如:admin OR root

  • 适用场景:扩大搜索范围,查找多个相关关键词。

13. 搜索特定地理位置的信息

  • location: 指令:搜索特定地理位置的信息。例如:location:new york "cybersecurity"

  • 适用场景:查找特定地区的公开信息。

14. 搜索特定文件内容

  • inanchor: 指令:搜索链接锚文本中包含特定关键词的页面。例如:inanchor:"click here"

  • 适用场景:查找特定链接指向的页面。

15. 使用Google Hacking数据库(GHDB)

  • 参考GHDB:利用Exploit-DB等平台提供的Google Hacking语法,搜索敏感信息。例如:intitle:"index of" password

  • 适用场景:查找数据库文件、配置文件等敏感信息。

16. 使用INFO显示与指定网站相关的信息

        使用方法:在Google搜索框中输入 info:,后跟目标网站的域名。例如,输入 info:wikipedia.org,将显示维基百科的相关信息和链接。

17. 缓存页面检索

  • 功能cache: 指令可显示 Google 缓存的网页版本。当目标网页无法访问、被删除或需要查看历史版本时,该指令非常有用。
  • 使用方法:在 Google 搜索框中输入 cache:,后跟目标网页的 URL。例如,输入 cache:www.example.com,将显示 Google 缓存的该网页快照。

18. 排除关键字

  • 功能:减号(-)用于排除搜索结果中包含特定关键词的页面。例如,搜索 "智能手机" -广告 将返回与“智能手机”相关的结果,但会排除包含“广告”一词的页面。
  • 使用方法:在搜索关键词前加上减号(-),确保减号与关键词之间没有空格。例如:"人工智能" -新闻
  • 注意事项
    • 减号后必须紧跟关键词,中间不能有空格。
    • 可结合其他搜索技巧使用,例如双引号、site:filetype: 等。

实用示例

  • 查找后台管理页面site:example.com intitle:admin

  • 查找登录页面site:example.com inurl:login

  • 查找包含密码的文件filetype:txt password site:example.com

  • 查找配置文件泄露intitle:"index of" config

汇总表

技巧类型指令/操作示例适用场景
精确匹配搜索双引号括起关键词"admin login page"查找特定短语,如文件名、路径或错误信息
限定搜索范围site:site:example.com inurl:admin仅搜索特定网站或域名
限定搜索范围filetype:filetype:log site:example.com搜索特定文件类型
排除干扰结果减号(-)intitle:"index of" -passwd排除特定关键词,避免误报
搜索URL关键词inurl:inurl:/login查找URL中包含特定关键词的页面
搜索标题关键词intitle:intitle:"backend management"查找标题中包含特定关键词的页面
搜索正文关键词intext:intext:"password reset"查找正文内容中包含特定关键词的页面
搜索相关页面related:related:example.com查找与指定网站相关的页面
搜索引用链接link:link:example.com查找链接到指定页面的网站
时间范围筛选搜索结果页面工具栏在搜索结果页面点击“工具”→“时间”,选择特定时间范围查找最新或历史信息
使用通配符星号(*)"powered by *"查找特定框架或CMS版本信息
逻辑或搜索ORadmin OR root扩大搜索范围,查找多个相关关键词
地理位置搜索隐含的地理位置相关搜索(通过语言或地区设置)或第三方工具结合地区关键词如"new york"与搜索内容,或使用工具细化范围查找特定地区的公开信息
链接锚文本搜索inanchor:inanchor:"click here"查找链接锚文本中包含特定关键词的页面
数学计算/单位转换直接输入算式或单位转换请求8*5+5 或 100 miles in km快速进行计算或单位转换
利用GHDB

参考Google Hacking数据库语法

intitle:"index of" password查找数据库文件、配置文件等敏感信息
网站信息查询info:info:example.com查询特定网站的基本信息,包括索引状态、相关链接等
缓存页面检索cache:cache:www.example.com

查看 Google 缓存的网页快照,适用于网页无法访问或查看历史版本

排除关键字减号(-)+ 关键词"智能手机" -广告去除搜索结果中包含特定词汇的页面

黑客语法网站 www.exploit-db.com

四,收集子域名信息

子域名介绍

1. 定义
子域名(Subdomain)是顶级域名(如 .com.net)或主域名(如 example.com)下的附属域名,用于进一步细分和组织网站内容。子域名通常位于主域名前,以点(.)分隔。例如:

  • blog.example.com 是 example.com 的子域名
  • shop.example.com 是 example.com 的子域名

2. 作用

  • 网站结构分割:将不同功能模块(如博客、商城、论坛)划分到独立子域名,便于管理和访问。
  • 品牌管理:支持多样化服务,如 mail.example.com 用于邮件服务,support.example.com 用于客户支持。
  • 技术管理:子域名可指向不同服务器,支持分布式架构和负载均衡。
  • SEO 优化:搜索引擎将子域名视为独立网站,有助于优化特定内容或关键词的排名。

1,maltego收集子域名信息

Maltego 是一款功能强大的开源情报(OSINT)工具,可用于收集子域名信息并可视化网络实体之间的关系。

  • 下载 Maltego:访问 Maltego 官方网站 下载适合操作系统的版本(社区版免费,专业版需付费)。
  • 安装并注册账户:安装完成后,启动 Maltego 并注册账户。如果使用社区版,选择 "Maltego CE" 登录。
  • 配置数据源:在 Maltego 中,通过 "Transform Hub" 添加所需的数据源(如 PassiveTotal、VirusTotal、Shodan 等),这些数据源可增强子域名收集能力。

2 威胁情报平台

        微步在线、360 威胁情报中心、奇安信威胁情报中心等平台可收集子域名信息。

3 其他方法

  • 官方备案网站:如工信部 ICP 备案系统,通过主域名查备案,获得域名所属公司名称,再搜索该公司名称以获取其所有注册域名。
  • 企业信息查询平台:如天眼查、企查查,通过查看股权穿透图查找子公司,并收集其子域名。
  • Whois 查询:通过同一公司的域名可能使用同一邮箱注册的信息进行反查。
  • 官网架构图:目标企业的官网可能列出子公司的介绍和官网链接。
  •  自动化工具:Subfinder:集成多个 API 接口,自动化搜索子域名信息。 ​​​​​​Layer 子域名挖掘机:适合使用自定义字典进行深度挖掘。

FOFA搜索引擎

        网站链接 https://fofa.info/

FOFA 搜索引擎使用汇总表

类别功能描述示例语法应用场景
基础查询按 IP 地址搜索资产ip="1.1.1.1"查找特定 IP 的资产
按域名搜索资产domain="example.com"查找根域名包含 example.com 的资产
按标题搜索资产title="login"查找网页标题包含“login”的资产
按端口搜索资产port="80"查找开放 80 端口的资产
逻辑运算符与(AND)ip="1.1.1.1" && port="80"查找 IP 为 1.1.1.1 且开放 80 端口的资产
或(OR)`ip="1.1.1.1"
非(NOT)ip="1.1.1.1" && !port="80"查找 IP 为 1.1.1.1 但未开放 80 端口的资产
模糊查询网页正文模糊匹配body~="admin"查找网页正文中包含“admin”近似关键词的资产
范围查询IP 段查询ip="192.168.1.0/24"查找 192.168.1.0 至 192.168.1.255 范围内的资产
时间范围查询after="2023-01-01" && before="2023-12-31"查找 2023 年内的资产
地理位置查询按国家查询country="CN"查找中国境内的资产
按城市查询city="Beijing"查找北京市的资产
服务与协议按服务类型查询app="Apache"查找运行 Apache 服务的资产
按协议类型查询protocol="https"查找使用 HTTPS 协议的资产
证书查询按证书名称查询cert="example.com"查找使用指定域名的 SSL 证书的资产
高级应用资产发现与管理domain="example.com"企业快速发现公开暴露的网络资产
漏洞排查app="Apache" && version="2.4.29"查找运行存在漏洞的 Apache 版本的资产
安全评估port="443" && country="CN"评估中国境内开放 443 端口的资产
渗透测试city="Shanghai" && app="摄像头"查找上海地区的摄像头设备

五,主动信息收集

主动信息收集是信息安全、渗透测试、网络侦查等领域中一项至关重要的技能,指通过直接与目标系统或网络交互,主动获取目标信息的过程。与被动信息收集不同,主动信息收集需要直接发起请求或探测,因此可能面临更高的风险,但也能获取更深入、更准确的信息。

主动信息收集方法

1. 二层发现-arping/netdiscover命令探索

        二层发现(Layer 2 Discovery) 是指在网络中通过第二层(数据链路层)的协议或技术,发现和识别网络设备或终端的方法。二层发现主要依赖于设备的物理地址(MAC 地址)以及数据链路层的通信机制,通常用于局域网(LAN)环境   

        arping的使用

        arping 是一个用于发送和接收 ARP(Address Resolution Protocol)请求的网络工具,主要用于在数据链路层进行网络诊断。

  • 基本语法
    arping [选项] 目标
    选项/参数描述示例
    -c <数量>指定发送的 ARP 请求数量。arping -c 3 192.168.1.1
    -I <接口>指定要使用的网络接口。arping -I eth0 192.168.1.1
    -s <源IP>指定源 IP 地址。arping -s 192.168.1.100 192.168.1.1
    -D启用重复地址检测(Duplicate Address Detection),用于检测 IP 地址冲突。arping -D -s 192.168.1.100 -I eth0
    -U无响应模式,仅发送 ARP 请求,不等待响应。arping -U 192.168.1.1
    -f快速模式,发送完指定数量的 ARP 请求后立即退出。arping -f -c 5 192.168.1.1
    -w <超时时间>设置每个请求的超时时间(以秒为单位)。arping -w 2 192.168.1.1
    -q安静模式,不显示详细输出,只显示成功或失败。arping -q -c 5 192.168.1.1

         注意:arping只能用于本地网络因为ARP 请求是广播帧,无法穿越路由器到达其他网络。

netdiscover使用

        netdiscover 是一款基于 ARP(地址解析协议) 的网络扫描工具,主要用于在 局域网(LAN) 中发现活动主机。它支持主动和被动两种扫描模式,能够快速识别网络中的设备,并显示其 IP 地址MAC 地址 和 厂商信息

参数说明示例注意事项
-i指定网络接口(如 eth0wlan0 等)。netdiscover -i eth0必须指定有效的网络接口,否则无法扫描。
-r指定扫描的 IP 范围(CIDR 格式,如 192.168.1.0/24)。netdiscover -i eth0 -r 192.168.1.0/24IP 范围需在本地网络可达,否则扫描无效。
-p启用被动扫描模式(不发送 ARP 请求,仅监听网络流量)。netdiscover -p -i eth0被动扫描适用于隐蔽场景,但可能漏掉未主动通信的设备。
-f启用快速扫描模式(减少扫描间隔,加快速度)。netdiscover -f -i eth0快速扫描可能增加网络负载,建议在测试环境使用。
-s设置扫描间隔时间(单位:秒,默认 1 秒)。netdiscover -s 0.5 -i eth0间隔时间过短可能导致网络拥塞,需根据网络环境调整。
-t设置扫描超时时间(单位:秒)。netdiscover -t 5 -i eth0超时时间过短可能导致漏掉响应较慢的设备。
-c指定自定义的 MAC 地址厂商数据库文件路径。netdiscover -c /path/to/oui.txt需提供有效的 OUI 数据库文件,否则无法解析厂商信息。
-n禁用 DNS 解析(仅显示 IP 地址,不解析主机名)。netdiscover -n -i eth0禁用 DNS 可加快扫描速度,但无法获取主机名信息。
-h显示帮助信息。netdiscover -h帮助信息包含所有参数的详细说明。
2,三层发现ping命令和路由追踪
  ping命令,最基础命令,我相信你们都知道,直接上表
命令功能描述示例备注
ping <目标IP/域名>默认发送 4 个 ICMP Echo Request 包,测试目标主机连通性ping 8.8.8.8基本用法,适用于快速测试网络连通性
ping -n <数量> <目标>指定发送的 ICMP Echo Request 包数量ping -n 10 8.8.8.8Windows 专用,Linux 用 -c
ping -c <数量> <目标>指定发送的 ICMP Echo Request 包数量(Linux/Unix/Mac)ping -c 10 google.com
ping -t <目标>持续发送 ICMP Echo Request 包,直到手动停止(Ctrl+C)ping -t 8.8.8.8Windows 专用,Linux 用 -i 或脚本循环
ping -i <间隔> <目标>设置发送 ICMP Echo Request 包的间隔时间(秒)ping -i 2 8.8.8.8Linux/Unix/Mac 专用,Windows 用 -w(超时时间)结合循环实现类似效果
ping -l <大小> <目标>设置发送的数据包大小(字节)ping -l 1500 8.8.8.8Windows 专用,Linux 用 -s
ping -s <大小> <目标>设置发送的数据包大小(字节)(Linux/Unix/Mac)ping -s 1500 google.com
ping -f <目标>设置数据包不分片(Don’t Fragment 位)ping -f 8.8.8.8测试路径 MTU(最大传输单元)限制
ping -v <目标>显示详细输出信息(部分系统支持)ping -v 8.8.8.8Linux/Unix/Mac 专用,Windows 可使用 -a 解析主机名
ping -a <目标>解析目标 IP 地址为主机名ping -a 8.8.8.8Windows 专用
ping -R <目标>记录路由(Record Route),显示数据包经过的路由器(部分系统支持)ping -R 8.8.8.8Linux/Unix/Mac 专用,需启用 IP 记录路由选项
ping -T <TTL值> <目标>设置数据包的 TTL(生存时间)值ping -T 64 8.8.8.8Linux/Unix/Mac 专用,Windows 用 -i(间隔)间接影响 TTL(不推荐)
ping -4 <目标>强制使用 IPv4 地址ping -4 8.8.8.8
ping -6 <目标>强制使用 IPv6 地址ping -6 2001:4860:4860::8888
ping -w <超时> <目标>设置每个请求的超时时间(毫秒)ping -w 1000 8.8.8.8
路由追踪命令

1,tracert命令(Windows系统)

功能描述
基本用法tracert [目标IP或域名]
默认最大跳数30
常用选项
-d不解析主机名,加快显示速度
-h设置最大跳数(如 -h 15 限制为15跳)
-w设置等待时间(如 -w 1000 等待1000毫秒)
-j指定松散源路由(仅限IPv4)
输出内容每跳显示IP地址、延迟时间(3个探测包)及丢包率(星号 * 表示超时)
应用场景网络故障排查、路径性能分析
限制依赖ICMP协议,可能被防火墙拦截

2,Linux/Mac 系统:traceroute 命令

功能描述
基本用法traceroute [目标IP或域名]
默认最大跳数30
常用选项
-n不解析主机名,仅显示IP地址
m设置最大跳数(如 -m 20 限制为20跳)
q设置每跳探测包数量(如 -q 5 发送5个探测包)
I使用ICMP协议(默认UDP,可选ICMP或TCP)
输出内容每跳显示IP地址、延迟时间(3个探测包)及丢包率(星号 * 表示超时)
变种命令tracepath(类似功能,不解析主机名)
应用场景网络故障排查、路径性能分析、负载均衡识别
限制部分网络可能限制ICMP或UDP协议
3,hping3命令

Hping3 是一款TCP/IP数据包组装/分析工具,通常web服务会用来做压力测试使用,也可以进行DOS攻击实验,同样,Hping只能每次扫描一个目标

功能命令示例说明
ICMP Ping 测试hping3 -1 <目标IP>发送 ICMP Echo Request 包,判断目标是否在线。
TCP SYN 扫描hping3 -S <目标IP> -p <端口>发送 TCP SYN 包,扫描目标端口是否开放。
UDP 扫描hping3 --udp -p <端口> <目标IP>发送 UDP 包,扫描目标端口是否开放。
端口范围扫描hping3 --scan <起始端口>-<结束端口> <目标IP>扫描指定端口范围,查找开放端口。
TTL 值设置hping3 --ttl <TTL值> <目标IP>设置数据包的 TTL(生存时间)值。
发送频率控制hping3 -i <时间间隔> <目标IP>设置数据包发送间隔(秒)。
数据包大小设置hping3 -d <数据包大小> <目标IP>设置每个数据包的大小(字节)。
源 IP 伪造hping3 -a <伪造IP> <目标IP>伪造源 IP 地址,隐藏真实身份。
洪水攻击(SYN Flood)hping3 -S -p <端口> --flood <目标IP>发送大量 TCP SYN 包,模拟 SYN Flood 攻击。
ICMP 洪水攻击hping3 --icmp --flood <目标IP>发送大量 ICMP Echo Request 包,模拟 ICMP Flood 攻击。
UDP 洪水攻击hping3 --udp --flood <目标IP>发送大量 UDP 包,模拟 UDP Flood 攻击。
数据包负载自定义hping3 -E <数据包文件> -d <数据包长度> <目标IP>发送自定义数据包负载。
记录路由hping3 --rroute <目标IP>记录数据包经过的路由路径。
监听模式hping3 --listen监听传入的数据包。

未完待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值