rangertaha/urlinsane

GitHub: rangertaha/urlinsane

一款用Go编写的多语言域名仿冒检测与OSINT调查工具,通过多种算法生成域名变体并收集DNS、HTTP等信息,帮助识别钓鱼和品牌冒充风险。

Stars: 26 | Forks: 3

# URLInsane [![Go Report Card](https://goreportcard.com/badge/github.com/rangertaha/urlinsane?style=flat-square)](https://goreportcard.com/report/github.com/rangertaha/urlinsane) [![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/rangertaha/urlinsane) [![PkgGoDev](https://pkg.go.dev/badge/github.com/rangertaha/urlinsane)](https://pkg.go.dev/github.com/github.com/rangertaha/urlinsane) [![Release](https://img.shields.io/github/release/rangertaha/urlinsane.svg?style=flat-square)](https://github.com/rangertaha/urlinsane/releases/latest) [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0bfa663ea8130356.svg)](https://github.com/rangertaha/urlinsane/actions/workflows/go.yml)
Urlinsane Urlinsane Urlinsane
Urlinsane 是一款用于检测域名仿冒(Typosquatting)并支持 OSINT 调查的工具,专为在多语言目标域名上运行而设计。它有助于识别仿冒、品牌劫持、URL 劫持、网络钓鱼、欺诈、商业间谍活动、供应链攻击等威胁。这款命令行工具会生成并扫描域名的潜在仿冒变体,协助发现和缓解安全风险。 它的灵感来源于 [URLCrazy](https://morningstarsecurity.com/research/urlcrazy)、[Dnstwist](https://github.com/elceef/dnstwist) 以及我当时研究的一些其他库和工具。 ## 安装 该工具主要面向 Linux 操作系统。 * [urlinsane-0.8.2-darwin-amd64](https://github.com/rangertaha/urlinsane/releases/download/0.8.2/urlinsane-0.8.2-darwin-amd64) * [urlinsane-0.8.2-linux-amd64](https://github.com/rangertaha/urlinsane/releases/download/0.8.2/urlinsane-0.8.2-linux-amd64) * [urlinsane-0.8.2-windows-amd64.exe](https://github.com/rangertaha/urlinsane/releases/download/0.8.2/urlinsane-0.8.2-windows-amd64.exe) ### Linux 下载二进制文件,移除旧版本,并将其安装到 /usr/local/bin: ``` wget https://github.com/rangertaha/urlinsane/releases/download/0.8.2/urlinsane-0.8.2-linux-amd64 chmod +x urlinsane-0.8.2-linux-amd64 sudo mv urlinsane-0.8.2-linux-amd64 /usr/local/bin/urlinsane ``` ## 使用方法 ``` urlinsane typo example.com ``` ## 插件 插件在扩展 Urlinsane 的功能、灵活性和定制化方面发挥着至关重要的作用,使其能够随着需求的变化和技术进步而演进。以下是插件列表: | 类型 | 数量 | 描述 | |---------------|--------|-------------------------------------------------------------------------| | Languages | 30 | 支持语言能力的语言插件。 | | Keyboards | 40 | 提供各种国际键盘布局的键盘插件。 | | Algorithms | 24 | 为每个目标域名生成拼写错误变体。 | | Information | 13 | 收集目标域名的信息。 | | Outputs | 6 | 格式化并以各种输出格式保存结果。 | ### 语言 ID 查看您构建版本中所有已注册的语言 ID: ``` urlinsane typo --options ``` 普什图语的语言 ID 为 `ps`。拉丁语的语言 ID 为 `la`。 ### 语言数据集 (`datasets/languages/`) 仓库附带了 `datasets/languages//` 结构(例如 `numeral.lst`、`homoglyph.lst`、`homophone.lst`、`positive.lst`、`negative.lst` 等)。 您可以使用以下命令从当前注册的语言插件生成/刷新这些文件: ``` go run ./cmd/datasets sync-languages --dir datasets/languages ``` 默认情况下,这**不会覆盖**任何现有的数据集文件(因此像 `datasets/languages/en/*` 这样的大型精选数据集会被保留)。要覆盖文件: ``` go run ./cmd/datasets sync-languages --dir datasets/languages --overwrite ``` ### 键盘布局 键盘布局是独立的插件。该仓库现在为每个语言插件至少包含一个键盘布局。要列出可用的键盘布局 ID: ``` urlinsane typo --options ``` ## 算法 算法通过分析常见的输入错误和语言模式,系统地生成合理的拼写错误域名变体。 | ID | 名称 | 描述 | |------|-------------------------------|--------------------------------------------------------------------------------------------------| | di | 点插入 | 在目标域名中插入句点。 | | do | 点省略 | 省略目标域名中的句点。 | | dh | 点/连字符替换 | 交换域名中的点和连字符。 | | hi | 连字符插入 | 在目标域名中插入连字符。 | | ho | 连字符省略 | 移除域名中的连字符。 | | co | 字符省略 | 省略域名中的一个字符。 | | cs | [字符交换](https://github.com/rangertaha/urlinsane/tree/master/pkg/typo#cs-character-swapping) | 交换域名中两个连续的字符。 | | acs | [相邻字符替换](https://github.com/rangertaha/urlinsane/blob/master/pkg/typo/README.md#acs-adjacent-character-substitution) | 替换域名中键盘上相邻的字符。 | | aci | 相邻字符插入 | 将键盘上的相邻字符插入到域名中。 | | gi | 字形插入 | 在目标域名中插入特定语言的字符。 | | gr | 字形替换 | 将域名中的字符替换为外观相似的字符。 | | hr | 同形字替换 | 将域名中的字符替换为视觉上相似的同形字。 | | sps | 单数复数化 | 将域名中的单词单数形式替换为复数形式。 | | cr | 字符重复 | 将域名中的字符重复一次。 | | dcr | 双字符替换 | 将域名中相同的连续字母替换为其他字符。 | | dcar | 双字符相邻替换 | 将连续相同的字母替换为键盘上的相邻键。 | | cm | 常见拼写错误 | 根据各种语言中常见拼写错误的字典生成。 | | hs | 同音词替换 | 在域名中替换发音相同但拼写不同的单词。 | | vs | 元音替换 | 将域名中的元音替换为其他元音以创建变体。 | | bf | Bitsquatting | 利用随机比特错误来重定向连接。 | | tld | 错误 TLD | 为域名使用错误的顶级域名 (TLD)。 | | tld2 | 错误 SLD | 为域名使用错误的二级域名 (TLD2)。 | | tld3 | 错误 TLD3 | 为域名使用错误的三级域名 (TLD3)。 | | ons | 序数替换 | 将域名中的序数词(1st, 2nd)替换为数字。 | | cns | 基数替换 | 将域名中的基数词(1, 2, 3)替换为数字。 | | si | 子域插入 | 在域名的开头插入常见的子域。 | | com | Combosquatting | **TODO**: 结合通过 NLP 和 HTML meta 标签提取的关键字生成域名变体。 | | st | [词干](https://en.wikipedia.org/wiki/Stemming) 替换 | **TODO**: 将域名中的单词替换为其词根形式(词干提取)。 | | ks | 键盘替换 | **TODO**: 更改国际键盘布局,假设用户使用其母语布局输入。 | ## 收集器 收集域名信息的收集器插件能够详细比较外观相似的域名,以确定它们是否正在被网络犯罪分子进行仿冒。通过收集有关域名所有权、注册日期、托管位置和网站内容的数据,算法可以分析这些变体是否可能是恶意的。这种方法有助于识别可疑模式和潜在的网络钓鱼、欺诈或品牌冒充企图。通过彻底的数据收集,组织可以更好地实时检测和响应仿冒威胁。 | ID | 名称 | 描述 | |-----|-------------------|------------------------------------------------------------------------------------------------| | | [Levenshtein](https://en.wikipedia.org/wiki/Levenshtein_distance) | 默认计算域名之间的 Levenshtein 距离以限制扫描范围。 | | a | DNS A | 获取主机 IPv4 地址。 | | mx | DNS MX | 获取 DNS 邮件交换 (MX) 记录。 | | txt | DNS TXT | 获取 DNS TXT 记录。 | | aa | DNS AAAA | 获取主机 IPv6 地址。 | | cn | DNS CName | 通过 CNAME 记录将一个域名映射到另一个域名。 | | ns | DNS NS | 检查 NS 记录以识别域名的权威名称服务器。 | | geo | GeoIP Info | 通过 MaxMind 数据库提供 IP 位置信息。 | | ssd | SSDeep | 使用 ssdeep 模糊哈希来确定域名相似性,适用于内容丰富的页面。 | | 301 | Redirects | 获取域名重定向。 | | idn | IDN | 获取国际化域名。 | | bn | Banner | 使用基本 TCP 连接捕获 HTTP/SMTP 标识。 | | png | Screenshot | 通过无头浏览器截取域名屏幕截图并将其存储在本地。 | | wi | Whois | **TODO**: 执行 Whois 查询以获取域名信息。 | | kw | Keywords | **TODO**: 使用 [RAKE](https://www.mathworks.com/help/textanalytics/ug/extract-keywords-from-documents-using-rake.html) 算法提取关键字。 | | tp | NLP Topics | **TODO**: 使用 [LDA](https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation) 算法提取主题。 | | vc | [VSM](https://en.wikipedia.org/wiki/Vector_space_model) | **TODO**: 比较域名的向量空间以计算余弦相似度。 | | lm | [LLM](https://en.wikipedia.org/wiki/Large_language_model) | **TODO**: 使用 LLM 进行关键字提取、词干提取、命名实体识别和其他 NLP 任务。 | | ng | [N-Gram](https://en.wikipedia.org/wiki/N-gram) | **TODO**: 使用域名中最常见的 N-gram 生成域名变体。 | | har | [HAR](https://en.wikipedia.org/wiki/HAR_(file_format)) | **TODO**: 从浏览器交互中检索 HAR 文件以进行深入的数据分析。 | pop | Popularity | **TODO**: 检索域名热度估计,类似于 [Urlcrazy](https://github.com/urbanadventurer/urlcrazy) ## 输出 通过结构化输出,用户可以将发现的结果无缝整合到现有的防御措施中,从而加强对仿冒威胁的防护。 | Name | Description | |-------|-------------------------------------------| | TABLE | 带颜色样式的精美表格格式 | | HTML | HTML 格式输出 | | JSON | **TODO**: JSON 输出格式 | | TXT | 纯文本输出,每行一条记录 | | CSV | 逗号分隔值格式 | | TSV | 制表符分隔值格式 | | MD | Markdown 格式输出 | 输出格式的一个主要限制是其在终端中的显示受限,数据主要以列和行的形式显示。虽然 `--filter` 标志允许您选择特定的列,`--output/-o txt` 类型允许将输出直接流式传输到终端而无需表格格式,但仅显示了收集到的信息的一小部分。新的 JSON 输出选项克服了这一点,允许转储完整的、高度嵌套的 JSON 文档,然后可以使用 [jq](https://jqlang.github.io/jq/) 等工具进行过滤,以便进行更详细的分析。 ## 进行中 - 我目前正在开发一个 sqlite 数据库后端来存储结果、数据集、语言和词嵌入。这种方法旨在减小整体二进制文件大小,实现更高级的分析,并允许程序将来下载更新。单词之间通常存在相互关系,这些关系最好在数据库中表示,从而确保更好的存储和更高的效率。 - 探索用基于 DAG 的管道替换链式任务管道的可能性。 ## TODO - **[LLM](https://en.wikipedia.org/wiki/Large_language_model)**: 我有兴趣利用大型语言模型 (LLM) 来替换我们现有的自然语言处理 (NLP) 算法,并自动生成语言数据集。 - 我想探索减小程序体积的方案,目前为 11MB。通过重用现有的操作系统数据集,如 MaxMind GeoIP、TLD 后缀列表、LLM 和向量数据库,我们可以最大限度地减少存储使用。 - 我正在考虑重构信息收集功能,使其遵循带有依赖关系的有向无环图 (DAG) 执行模式,而不是在流水线中线性链接插件。这将允许更高效、更灵活地处理相互依赖的任务,类似于 Terraform 管理插件执行的方式。 - 我计划添加一个分析插件,用于比较两个域名之间的数据,并且可以作为单独的 CLI 命令执行。 - 开发一个脚本,从 [kbdlayout.info](http://kbdlayout.info/) 下载并构建键盘布局。 - 致力于创建包含层级切换功能的高级键盘模型。 - 实现向多个 DNS 服务器发送 DNS 查询的功能。 - 将记录存储在嵌入式数据库中,使插件能够高效访问数据。 - 从 [urlinsane.com](https://github.com/rangertaha/urlinsane) 下载数据集更新 - 一个用于向 (urlinsane.com) 报告或检索仿冒域名的 CLI 命令可以帮助构建包含潜在仿冒案例的综合数据集。有了足够的数据和域名报告,可以开发 AI 分类器来自动识别仿冒域名。数据集越庞大,AI 就能越准确地检测和分类这些域名。 ### 其他工具 | Name | Language | Description | |-------|-----------|--------------------------------| | [Urlcrazy](https://github.com/urbanadventurer/urlcrazy) | Ruby | URLCrazy 是一款 OSINT 工具,用于生成和测试域名拼写错误或变体,以检测或执行域名仿冒、URL 持、网络钓鱼和商业间谍活动。 | | [DNSTwist](https://github.com/elceef/dnstwist) | Python | 域名置换引擎,用于检测同形字钓鱼攻击、域名仿冒和品牌冒充 | | [DomainFuzz](https://github.com/monkeym4ster/DomainFuzz) | JavaScript | 域名置换引擎,用于检测域名仿冒、网络钓鱼和商业间谍活动 | ## 作者 * [Rangertaha (rangertaha@gmail.com)](https://github.com/rangertaha) ## 许可证 本项目根据 GPLv3 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件
标签:DNS安全, ESC4, ESC8, EVTX分析, Go语言, IDN域名, OSINT, Typosquatting, URL劫持, 仿冒域名检测, 企业安全, 品牌保护, 品牌劫持, 域名安全, 多语言域名, 威胁情报, 开发者工具, 开源网络情报, 日志审计, 社会工程学, 程序破解, 组合音欺诈, 网络欺诈, 网络资产管理, 自动化扫描, 钓鱼防御