信息收集内容总览
域名 子域名 真实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,注意空格和对齐:
#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
Usage: zpscan[command]Available Commands: alive WEB存活扫描 crack 常见服务弱口令爆破 dirscan 目录扫描 domainscan 子域名收集 expscan exp扫描helpHelp about anycommandipscan 端口扫描 pocscan poc扫描 webscan web信息收集 Flags:--debugshow debug output -h,--helphelpforzpscan -i,--inputstring single input(example:-i'xxx')-f, --input-file string inputs file(example:-f'xxx.txt')--no-color disable colorsinoutput -o,--outputstring outputfiletowritelog and results(default"result.txt")--resultstring outputfiletowritefound resultsweb 信息收集:./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
使用示例:
python3 ShuiZe.py-ddomain.com# 收集单一的根域名资产python3 ShuiZe.py--domainFiledomain.txt# 批量跑根域名列表python3 ShuiZe.py-c192.168.1.0,192.168.2.0,192.168.3.0# 收集C段资产python3 ShuiZe.py-furl.txt# 对url里的网站漏洞检测python3 ShuiZe.py--fofaTitleXXX大学# 从fofa里收集标题为XXX大学的资产python3 ShuiZe.py-ddomain.com--justInfoGather1# 仅信息收集,不检测漏洞python3 ShuiZe.py-ddomain.com--ksubdomain0# 不调用ksubdomain爆破子域名网络空间测绘
集成测绘工具:Finger
配置(必要):可以在config/config.py中进行修改
# 设置线程数,默认30threads=30# 设置Fofa key信息Fofa_email=""Fofa_key=""(不是密码)# 普通会员API查询数据是前100,高级会员是前10000条。Fofa_Size=100# 设置360quake key信息QuakeKey=""# 是否选择在线跟新指纹库,默认为TrueFingerPrint_Update=True使用方法参数:
-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来搜索相关子域名。
常用搜索语法:
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不扫描端口,-PEICMP 扫描,-n不进行 DNS 解析)
端口收集
常见高危端口与攻击技巧
Nmap 常用扫描命令
Nmap 端口状态含义:
高频命令:
nmap-sV-O192.168.0.100# 查看端口服务版本及操作系统类型nmap-sP192.168.1.100# 查看主机是否在线 (Ping扫描)nmap-p1-1000192.168.1.100# 扫描指定端口范围nmap-sS192.168.1.100# 半开放 SYN 扫描(速度快,较隐蔽)进阶命令速查:
nmap-Pn192.168.96.4# 绕过 Ping 扫描(针对禁 Ping 主机)nmap-sU192.168.96.4# UDP 端口扫描nmap-T4192.168.96.4# 设置扫描速度 (T1~T5,T4较为常用)nmap-sC192.168.96.4# 使用默认脚本进行扫描nmap-A192.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.ico、logo.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 反序列化漏洞等),直接使用对应的漏洞扫描利用工具或验证脚本进行测试即可。