万字长文解析:构建从域名发现到框架识别的信息收集
信息收集内容总览域名 子域名 真实ip 中间件 脚本语言 端口 服务器信息端口、服务、真实iP 网站信息网站架构操作系统、中间件、数据库、编程语言、指纹信息、WAF、敏感目录、敏感文件、源码泄露、旁站查询、C段查询 域名信息(whois、备案信息、子域名)人员信息姓名、职务、生日、联系电话、邮件地址提示提示本文里面很多工具都是网址还有站长之家之类的csdn一直判断成暗链可以去我自己博客查看完整全文多说一句csdn对网安真的不友好全文链接都不让放。。。》好淘云《自动化信息收集项目ARL灯塔常用安装方式以 Kali 环境为例进入 root 用户su查看是否已经安装 dockerdocker如果没有 docker 环境请自行查阅资料安装 docker获取 ARL 项目Github搜索TophantTechnology/ARLgit clone 项目地址进入文件夹cd ARL/docker修改 yaml 文件vim config-docker.yaml在 FOFA 下面添加 RISKIQ注意空格和对齐#Fofa API 配置项FOFA:URL:fofa.infoEMAIL:xxxxxxxxqq.comKEY:xxxxxxxxxxxxxxxxxxxxxxxRISKIQ:EMAIL:KEY:在当前目录创建容器数据卷docker volume create --namearl_db输入启动命令启动docker-compose up -d后续使用进入文件夹cd ARL/docker输入启动命令启动docker-compose up -d登录到 ARL (默认端口:5003)https://IP:5003注意是 https默认账号: admin / 密码: arlpasszpscan常用说明一款好用的命令行信息收集工具支持 web 信息收集、目录扫描、子域名收集、端口扫描、poc 扫描等功能。项目可在 Github 搜索zpscan获取。将获取的 exe 文件放置到资源文件config.yaml、resource/的同目录下。使用建议使用 powershell查看说明./zpscan -hUsage: 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:-ixxx)-f, --input-file string inputs file(example:-fxxx.txt)--no-color disable colorsinoutput -o,--outputstring outputfiletowritelog and results(defaultresult.txt)--resultstring outputfiletowritefound resultsweb 信息收集./zpscan webscan -i 目标域名子域名收集./zpscan domainscan -i 目标域名Kunyu (坤舆)项目获取Github 搜索knownsec/KunyuKunyu 是一款高效资产收集工具使用方法与 MSF 有相似之处。工具调用了 ZoomEye 和 SeeBug 的 API使得资产收集更加方便快捷。安装依赖文件pip3 install -r requirements.txt安装 Kunyupython3 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 ThinkphpShuiZe (水泽)项目获取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中进行修改# 设置线程数默认30threads30# 设置Fofa key信息Fofa_emailFofa_key(不是密码)# 普通会员API查询数据是前100高级会员是前10000条。Fofa_Size100# 设置360quake key信息QuakeKey# 是否选择在线跟新指纹库默认为TrueFingerPrint_UpdateTrue使用方法参数-u对单个URL进行指纹识别-f对指定文件中的url进行批量指纹识别-i对ip进行数据查询采集其web资产-fofa调用fofa api进行资产收集-quake调用360 quake进行资产收集-o指定输出方式支持xlsxjsonxls。域名信息搜集使用威胁情报中心如 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~T5T4较为常用)nmap-sC192.168.96.4# 使用默认脚本进行扫描nmap-A192.168.96.4# 强力综合扫描耗时长nmap-D假IP192.168.96.4# 伪造源 IP 进行诱饵扫描御剑高速 TCP 全端口扫描工具适用于 Windows 的经典图形化端口扫描器。目标网站操作系统的区分URL 大小写敏感度Windows 系统URL 不区分大小写Linux 系统URL 严格区分大小写Ping 命令 TTL 值判断数据包每经过一个路由器TTL 值减 1。根据最终获取的 TTL 值可以大致反推目标操作系统。WINDOWS NT/2000/XP 默认 TTL128LINUX 默认 TTL64UNIX 默认 TTL255示例Ping 结果的 TTL 为 43接近 64大概率中间经过了二十多个节点目标系统多为 Linux。Nmap 系统指纹探测使用命令nmap -O 目标IP进行系统探测。网站指纹识别CMS 等CMS 概念CMS内容管理系统如 WordPress、织梦Dedecms、ThinkPHP 等。类似于建站模具如果在渗透测试中识别出对方使用的 CMS 及其版本就可以直接搜索相关的公开漏洞1day / Nday进行测试。CMS 识别方法Kali 自带工具 WhatWeb扫描单个目标whatweb www.xxx.comCmsVulScan (推荐)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, YiiJava 常见框架Spring, Shiro, Struts2Python 常见框架Django, Flask, Tornado框架的识别浏览器插件 Wappalyzer可以快速识别目标网站的前后端技术栈及框架。在线指纹平台如 BuiltWith 等网站提供深度的技术栈分析。框架漏洞利用类似于 CMS识别出框架版本后如著名的 Struts2 系列漏洞、Shiro 反序列化漏洞等直接使用对应的漏洞扫描利用工具或验证脚本进行测试即可。