CDN和DNS劫持网络跳转,排查及解决经验分享

2023年 7月 10日 25.7k 0

https://www.sojson.com 被劫持了。开始没发现,个别地区用户发现打开sojson.com或者从百度搜索 sojson 的关键词进入的时候,就跳转到了搜狗。

下面来看看一个跳转的图:

CDN和DNS劫持网络跳转,排查及解决经验分享

另外看看视频吧:

感谢 @甘肃|Java|逝月  提供的视频。

我们可以看到,点击一个页面到了搜狗,并且 搜索的关键词是“json”。

抓包看了一下头信息:

第一次请求www.sojson.com

  • Request URL: https://www.sojson.com/
  • Request Method: GET
  • Status Code: 200 (from disk cache)
  • Remote Address: 123.132.254.145:443
  • Referrer Policy: no-referrer-when-downgrade
  • age: 1077
  • cache-control: max-age=7200
  • content-encoding: br
  • content-type: text/html
  • date: Fri, 13 Apr 2018 07:48:32 GMT
  • expires: Fri, 13 Apr 2018 09:30:35 GMT
  • server: marco/2.0
  • status: 200
  • vary: Accept-Encoding
  • via: S.mix-sd-dst-036, T.43.H, V.mix-sd-dst-040, T.139.H, M.cun-sd-lyi1-139
  • x-request-id: 64e8891e3fafd7c83206d4f897b4ddbb; fc4ef7cb4b954412c8a0710df20d9ab5
  • x-source: C/200
  • Provisional headers are shown
  • Upgrade-Insecure-Requests: 1
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
  • 第二次跳转到了(adg.payud.com):

  • Request URL: http://adg.payud.com/sogou_pc.php?flag=0&kw=json
  • Request Method: GET
  • Status Code: 200 OK
  • Remote Address: 113.10.139.224:80
  • Referrer Policy: no-referrer-when-downgrade
  • Connection: keep-alive
  • Content-Encoding: gzip
  • Content-Type: text/html
  • Date: Fri, 13 Apr 2018 08:04:25 GMT
  • Pragma: no-cache
  • Server: nginx/1.0.15
  • Transfer-Encoding: chunked
  • Vary: Accept-Encoding
  • X-Powered-By: PHP/5.2.17p1
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
  • Accept-Encoding: gzip, deflate
  • Accept-Language: zh-CN,zh;q=0.9
  • Connection: keep-alive
  • Host: adg.payud.com
  • Upgrade-Insecure-Requests: 1
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
  • flag: 0
  • kw: json
  • 第三次跳转(www.sogou.com)

  • Request URL: https://www.sogou.com/sogou?pid=sogou-site-9cd013fe250ebffc&ie=utf-8&query=json
  • Request Method: GET
  • Status Code: 200 OK
  • Remote Address: 58.250.125.49:443
  • Referrer Policy: unsafe-url
  • Cache-Control: max-age=0
  • Connection: keep-alive
  • Content-Encoding: gzip
  • Content-Type: text/html; charset=utf-8
  • Date: Fri, 13 Apr 2018 08:04:25 GMT
  • Expires: Fri, 13 Apr 2018 08:04:25 GMT
  • Server: nginx
  • set-cookie: black_passportid=1; domain=.sogou.com; path=/; expires=Thu, 01-Dec-1994 16:00:00 GMT
  • set-cookie: ld=Klllllllll2z1pRylllllVryBw6lllll0GMO1kllll1lllllRylll5@@@@@@@@@@; path=/; expires=Sun, 13 May 2018 08:04:25 GMT; domain=.sogou.com
  • Transfer-Encoding: chunked
  • Vary: Accept-Encoding
  • x_ad_pagesize: adpagesize=7622
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
  • Accept-Encoding: gzip, deflate, br
  • Accept-Language: zh-CN,zh;q=0.9
  • Connection: keep-alive
  • Cookie: ABTEST=0|1523605712|v17; SNUID=E493F8BB36335F812E71720F37BF314B; SUID=D2A5CF8C4F18910A000000005AD060D0; browerV=3; osV=1; SUV=000D53928CCFA5D25AD060D1BAD50261; IPLOC=CN3100; ld=vZllllllll2z1pRylllllVryYMylllll0GMO1kllllZlllllRylll5@@@@@@@@@@
  • Host: www.sogou.com
  • Referer: http://adg.payud.com/sogou_pc.php?flag=0&kw=json
  • Upgrade-Insecure-Requests: 1
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
  • pid: sogou-site-9cd013fe250ebffc
  • ie: utf-8
  • query: json
  • 通过CDN 获取CDN缓存的内容是以下内容:

    CDN和DNS劫持网络跳转,排查及解决经验分享

    仔细看吧,应该能看明白,就是返回的就是一个  js  ,并且直接刷新到上面第二个网址,然后跳转到搜狗了。

    过程就是这么简单,这个就确定了,100%是被劫持了。但是不一定是  DNS劫持  。

    答疑:

    1.有的人看到这里就会问了,不是  HTTPS  会解决劫持吗?sojson 不是HTTPS的站点吗?那为什么?

    这个问题问的漂亮,我来回答一下:首先  HTTPS  是防止嵌入  JS   方式的劫持,就是你请求一个页面,  DNS  恶心的厂商会加一段js放里面,会出现广告之类的,一般出现在移动端,PC端少,但是博客园就出现过一次。这种一般是  https  就可以解决。

    2.那这种是什么劫持?

    这种就是直接做的域名劫持,就是把你域名直接拦截,直接返回他的内容,然后就是上面图的恶心内容了。这种  https  没有用。

    3.怎么解决?

    首先告诉你,基本无解,只是这种太恶心了。你只能发律师函给网络运营商。好多是网络运营商和  CDN  厂商相互勾结,因为这个利益链很大。

    感谢群里的热心网友:@北京|java|lsp @杭州|java|Mr.周 @广东|Java|哈喽  @上海|Java|Ever  @甘肃|Java|逝月 @上海|Java|ETFOX  等等,感谢你们帮我一起排查问题。

    DNS劫持的几种示意图

    1、DNS域名拦截方式

    CDN和DNS劫持网络跳转,排查及解决经验分享

    2、DNS增加脚本方式

    CDN和DNS劫持网络跳转,排查及解决经验分享

    3、CDN + 网络运营商混合方式(今天SOJSON遇到的就是这种)

    CDN和DNS劫持网络跳转,排查及解决经验分享

    这样  CDN  直接缓存的就是劫持的脚本。

    这个就是没办法,下面看看CDN厂商的回复:

    您好,肯定不是我们和网络服务商一起搞的,您出现这样的问题,某种程度上说我们CDN 也是受害者。况且我们没有理由把您劫持到 sogou 而不是有利我们的其他一些网站。您目前出现的劫持类型应该数属于DNS层劫持,所以https方案 应该是不能解决您的问题的。

    刚才希望您配置的是有一点作用的,如果劫持返回了是content-type是 静态文件的话,会被我们CDN 默认缓存起来,这样的话,就可能会扩大您的影响范围了,所以在一定程度上是有作用的。

    目前我们这边也是缺少 直接的劫持证据,您也可以后续再观察一下,有复现可以随时联系我们,我们肯定会帮您强力的反馈给网络运营商,要求停止劫持行为。

    相关文章

    Mallox勒索软件新Linux变种现世
    伪装成破解程序和商业工具的新型恶意软件正在传播
    Orcinius后门新样本分析
    Poseidon窃取程序通过Google广告感染Mac用户
    大选开始之际,欧盟各政党遭受 DDoS 攻击
    微软2024

    发布评论