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

信息收集内容总览

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 反序列化漏洞等),直接使用对应的漏洞扫描利用工具或验证脚本进行测试即可。

相关推荐
其实防守也摸鱼5 小时前
sqlmap下载和安装保姆级教程(附安装包)
linux·运维·服务器·测试工具·渗透测试·攻防·护网行动
派拉软件7 小时前
从 IAM 到 AAM,重构 AI Agent 时代的访问控制体系
大数据·人工智能·网络安全·重构·iam·身份与访问控制·aam
天山@1238 小时前
跨站脚本攻击(XSS)深度剖析:从原理到实战绕过及防御体系
网络安全·xss·beef
сокол10 小时前
【网安-应急响应-基础记录】Linux入侵排查
linux·网络安全·系统安全
一名优秀的码农11 小时前
vulhub系列-83-Grotesque:1.0.1(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
сокол11 小时前
【网安-Web渗透测试-Linux提权】SUID提权
linux·前端·web安全·网络安全
茫忙然11 小时前
kali渗透测试与CTF常用命令大全
渗透测试·ctf
白帽子黑客杰哥11 小时前
零基础学习网络安全的五大困难
web安全·渗透测试·湖南网安基地·网安培训