万字长文解析:构建从域名发现到框架识别的信息收集

信息收集内容总览

bash 复制代码
域名
子域名
真实ip
中间件
脚本语言
端口
服务器信息(端口、服务、真实iP)
网站信息(网站架构(操作系统、中间件、数据库、编程语言)、指纹信息、WAF、敏感目录、敏感文件、源码泄露、旁站查询、C段查询)
域名信息(whois、备案信息、子域名)
人员信息(姓名、职务、生日、联系电话、邮件地址)

提示提示:

本文里面很多工具都是网址,还有站长之家之类的,csdn一直判断成暗链,可以去我自己博客查看完整全文:

多说一句:csdn对网安真的不友好,全文链接都不让放。。。》好淘云《

自动化信息收集项目

ARL灯塔(常用)

安装方式(以 Kali 环境为例):

进入 root 用户:su

查看是否已经安装 docker:docker

(如果没有 docker 环境,请自行查阅资料安装 docker)

获取 ARL 项目(Github搜索:TophantTechnology/ARL):
git clone 项目地址

进入文件夹:cd ARL/docker

修改 yaml 文件:vim config-docker.yaml

在 FOFA 下面添加 RISKIQ,注意空格和对齐:

yaml 复制代码
#Fofa API 配置项
FOFA:
  URL: "fofa.info"
  EMAIL: "xxxxxxxx@qq.com"
  KEY: "xxxxxxxxxxxxxxxxxxxxxxx"

RISKIQ:
  EMAIL: ""
  KEY: ""

在当前目录创建容器数据卷:docker volume create --name=arl_db

输入启动命令启动:docker-compose up -d

后续使用:

进入文件夹:cd ARL/docker

输入启动命令启动:docker-compose up -d

登录到 ARL (默认端口:5003):https://<IP>:5003(注意是 https)

默认账号: admin / 密码: arlpass

zpscan(常用)

说明:

一款好用的命令行信息收集工具,支持 web 信息收集、目录扫描、子域名收集、端口扫描、poc 扫描等功能。项目可在 Github 搜索 zpscan 获取。

将获取的 exe 文件放置到资源文件(config.yaml、resource/)的同目录下。

使用(建议使用 powershell):

查看说明 ./zpscan -h

bash 复制代码
Usage:
  zpscan [command]

Available Commands:
  alive       WEB存活扫描
  crack       常见服务弱口令爆破
  dirscan     目录扫描
  domainscan  子域名收集
  expscan     exp扫描
  help        Help about any command
  ipscan      端口扫描
  pocscan     poc扫描
  webscan     web信息收集

Flags:
      --debug                show debug output
  -h, --help                 help for zpscan
  -i, --input string         single input(example: -i 'xxx')
  -f, --input-file string    inputs file(example: -f 'xxx.txt')
      --no-color             disable colors in output
  -o, --output string        output file to write log and results (default "result.txt")
      --result string        output file to write found results

web 信息收集:./zpscan webscan -i '目标域名'

子域名收集:./zpscan domainscan -i '目标域名'

Kunyu (坤舆)

项目获取:Github 搜索 knownsec/Kunyu

Kunyu 是一款高效资产收集工具,使用方法与 MSF 有相似之处。工具调用了 ZoomEye 和 SeeBug 的 API,使得资产收集更加方便快捷。

安装依赖文件:pip3 install -r requirements.txt

安装 Kunyu:python3 setup.py install

设置 API(必须):
kunyu init --apikey "<your zoomeye key>" --seebug "<your seebug key>"

进入 Kunyu 控制台:kunyu console 或者 kunyu

常见使用:

查看用户信息:info

查找IP信息:SearchHost <IP> (如:SearchHost 222.22.2.2

查找网站信息:SearchWeb <url>

查找子域名:SearchDomain <主域名>

搜索Icon资产:SearchIcon <本地Icon文件地址/远程Icon文件地址>

查看历史漏洞(举例):Seebug Thinkphp

ShuiZe (水泽)

项目获取:Github 搜索 0x727/ShuiZe_0x727

(注:如遇本地环境报错,建议使用 Docker 搭建)

安装依赖文件:pip3 install -r requirements.txt

使用示例:

bash 复制代码
python3 ShuiZe.py -d domain.com	# 收集单一的根域名资产
python3 ShuiZe.py --domainFile domain.txt # 批量跑根域名列表
python3 ShuiZe.py -c 192.168.1.0,192.168.2.0,192.168.3.0 # 收集C段资产
python3 ShuiZe.py -f url.txt # 对url里的网站漏洞检测
python3 ShuiZe.py --fofaTitle XXX大学 # 从fofa里收集标题为XXX大学的资产
python3 ShuiZe.py -d domain.com --justInfoGather 1 # 仅信息收集,不检测漏洞
python3 ShuiZe.py -d domain.com --ksubdomain 0 # 不调用ksubdomain爆破子域名

网络空间测绘

集成测绘工具:Finger

配置(必要):可以在 config/config.py 中进行修改

python 复制代码
# 设置线程数,默认30
threads = 30
# 设置Fofa key信息
Fofa_email = ""
Fofa_key = ""  (不是密码)
# 普通会员API查询数据是前100,高级会员是前10000条。
Fofa_Size = 100
# 设置360quake key信息
QuakeKey = ""
# 是否选择在线跟新指纹库,默认为True
FingerPrint_Update = True

使用方法参数:

bash 复制代码
-u 对单个URL进行指纹识别
-f 对指定文件中的url进行批量指纹识别
-i 对ip进行数据查询采集其web资产
-fofa 调用fofa api进行资产收集
-quake 调用360 quake进行资产收集
-o 指定输出方式,支持xlsx,json,xls。

域名信息搜集

使用威胁情报中心

如 360 安全大脑等情报中心进行综合检索。

WHOIS 查询

WHOIS 是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。

可以通过各大站长工具站(如站长之家)、或者直接在 Kali 中利用 whois 命令进行查询。

备案信息查询

可通过工信部官网或各大站长工具平台进行 ICP 备案查询。


子域名搜集

利用搜索引擎语法

例如用 site:example.com 来搜索相关子域名。

常用搜索语法:

bash 复制代码
intitle:搜索网页标题中包含有特定字符的网页。
inurl:搜索包含有特定字符的URL。
intext:搜索网页正文内容中的指定字符。
filetype:搜索指定类型的文件。如"filetype:pdf"。
site:找到与指定网站有联系的URL。
通配符:星号 *
布尔逻辑:与或非 (and, |, or)

扫描工具

OneForAll

项目获取:Gitee 搜索 shmilylty/OneForAll

环境要求:python 3.8 以上版本

使用方法:python oneforall.py --target 域名 run

(扫描结果将存放于 oneforall\results 文件下)


layer(子域名挖掘机)

常用于 Windows 环境下的可视化爆破工具。

subDomainsBrute

使用:python3 subDomainsBrute.py example.com

扫描结束后会在当前目录下生成 txt 结果文件。

证书查询

注:仅限 HTTPS 网站。可以通过 crt.sh 等在线证书搜索引擎,输入目标域名查询其关联的子域名。


真实 IP 收集

超级 Ping 判断是否有 CDN

如果不同地区的响应 IP 不同,说明存在 CDN。
绕过技巧:

尝试 Ping 其顶级域名(去掉 www)。很多时候管理员只对 www 二级域名做了 CDN,而顶级域名没有配置。或者寻找边缘分站,从分站的真实 IP 推算出主站网段。

利用国外地址请求网站

通过海外节点请求网站,因为某些 CDN 服务商节点未覆盖偏僻国家,有概率直接解析到真实 IP。

查看历史 DNS 解析记录

通过一些在线的 DNS 历史记录查询工具,查看网站在套上 CDN 之前的真实 IP 记录。

利用遗留文件 phpinfo

如果目标网站存在遗留的 phpinfo.php 文件,可以在 SERVER['SERVER_ADDR'] 字段直接看到服务器的真实 IP。

主动邮件配合

让对方服务器主动发邮件给你(如利用注册、找回密码等功能),然后查看邮件原文的 Header 信息,获取发件服务器的真实 IP。


旁站和 C 段

  • 旁站:同服务器下的不同站点(如 IP 相同,域名不同)。
  • C 段:同网段不同服务器不同站点。一般同一个公司申请多个服务器时,会分配在相同网段下。

旁站可通过各大站长工具的"同IP网站查询"功能获取。

利用 Nmap 扫描 C 段存活主机:
nmap -sn -PE -n 192.168.1.1/24 -oX out.xml

-sn 不扫描端口,-PE ICMP 扫描,-n 不进行 DNS 解析)


端口收集

常见高危端口与攻击技巧



Nmap 常用扫描命令

Nmap 端口状态含义:

高频命令:

bash 复制代码
nmap -sV -O 192.168.0.100  # 查看端口服务版本及操作系统类型
nmap -sP 192.168.1.100     # 查看主机是否在线 (Ping扫描)
nmap -p 1-1000 192.168.1.100 # 扫描指定端口范围
nmap -sS 192.168.1.100     # 半开放 SYN 扫描(速度快,较隐蔽)

进阶命令速查:

bash 复制代码
nmap -Pn 192.168.96.4      # 绕过 Ping 扫描(针对禁 Ping 主机)
nmap -sU 192.168.96.4      # UDP 端口扫描
nmap -T4 192.168.96.4      # 设置扫描速度 (T1~T5,T4较为常用)
nmap -sC 192.168.96.4      # 使用默认脚本进行扫描
nmap -A 192.168.96.4       # 强力综合扫描(耗时长)
nmap -D <假IP> 192.168.96.4 # 伪造源 IP 进行诱饵扫描

御剑高速 TCP 全端口扫描工具

适用于 Windows 的经典图形化端口扫描器。


目标网站操作系统的区分

URL 大小写敏感度

  • Windows 系统:URL 不区分大小写
  • Linux 系统:URL 严格区分大小写

Ping 命令 TTL 值判断

数据包每经过一个路由器,TTL 值减 1。根据最终获取的 TTL 值可以大致反推目标操作系统。

  • WINDOWS NT/2000/XP 默认 TTL:128
  • LINUX 默认 TTL:64
  • UNIX 默认 TTL:255

示例:Ping 结果的 TTL 为 43(接近 64),大概率中间经过了二十多个节点,目标系统多为 Linux。

Nmap 系统指纹探测

使用命令 nmap -O <目标IP> 进行系统探测。


网站指纹识别(CMS 等)

CMS 概念

CMS(内容管理系统),如 WordPress、织梦(Dedecms)、ThinkPHP 等。类似于建站模具,如果在渗透测试中识别出对方使用的 CMS 及其版本,就可以直接搜索相关的公开漏洞(1day / Nday)进行测试。

CMS 识别方法

Kali 自带工具 WhatWeb

扫描单个目标:whatweb www.xxx.com

CmsVulScan (推荐)

Github 开源项目,基于 Python 编写。

使用:
python CmsVulScan.py -u 目标网址

静态文件 MD5 对比

下载目标网站特征文件(如 favicon.icologo.png 等)。

使用 cmd 计算其 MD5 值:certutil -hashfile favicon.ico MD5,随后在指纹库或网上比对该 MD5 对应的 CMS 程序。

CMS 漏洞利用

在识别出具体的 CMS 后,可前往漏洞库(如 Exploit-DB 等)或使用搜索引擎查询具体的 CVE 编号和利用方式(EXP)。


Web 应用框架

定义与区别

Web 应用框架用来支持动态网站及网络服务的开发。

CMS 通常是面向终端用户的一整套成品系统;而框架(Framework)是面向程序员的二次开发基础环境,将常用操作进行了封装。

  • PHP 常见框架:ThinkPHP, Laravel, Yii
  • Java 常见框架:Spring, Shiro, Struts2
  • Python 常见框架:Django, Flask, Tornado

框架的识别

浏览器插件 Wappalyzer

可以快速识别目标网站的前后端技术栈及框架。

在线指纹平台

如 BuiltWith 等网站,提供深度的技术栈分析。

框架漏洞利用

类似于 CMS,识别出框架版本后(如著名的 Struts2 系列漏洞、Shiro 反序列化漏洞等),直接使用对应的漏洞扫描利用工具或验证脚本进行测试即可。

相关推荐
见青..10 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道11 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你15 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000015 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你17 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000002 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全