但是,这个 JS 请求是个空的 HTML 页面,没有任何内容。我只能猜测,这个 JS 是动态生成的,有概率成功请求。问题又回来了,首先得想办法稳定复现。
黑客无非两个手段控制,一是简单按随机概率响应攻击 JS;二是识别终端用户,只有第一次访问才会跳转。多试几次,排除第一个情况。
因为没有登录信息,黑客无非就是通过 IP 或 MAC 地址识别终端用户。于是,我使用代理,每次切换不同 IP 访问,果然每次都会跳转。果然更狡猾了!
还是一样的手段,混淆并动态生成 JS,跳转到广告网站。区别是这次是通过 JS 文件加载的,而不是直接插入到 HTML 页面中。
总结
这是非常典型的网站入侵攻击。黑客非法取得源码文件修改权限后,使用了两种方式劫持网站,一是直接插入恶意代码到 HTML 页面中,二是通过 JS 文件加载恶意代码。这两种方式都是通过混淆代码,动态生成 JS,跳转到广告网站。黑客还使用了一些手段,如只识别手机端,或第一次访问才会跳转,通过 IP 地址识别终端用户等。
记一次典型的网站劫持
起因
最近接到一个朋友的求助,他的网站被封了,让我帮忙看看。网站是托管在某云平台的,云平台给出的原因是网站涉赌。 起初,我也是一脸懵逼,只能请求云平台临时解封,需要复现问题才好排查原因。但当我电脑浏览器输入网址,发现看起来正常的。这就是个最简单网站,几乎全是静态网页,没什么内容,怎么会涉赌呢?难道是云平台搞错了?
排查
首先猜测,是不是网站有敏感词,触发了安全检测的逻辑呢?我仔细浏览网站,都是一些基础的介绍性内容,不太可能出现敏感词。只能再次联系云平台客服给出网站被封的具体原因,他们发给我一个网站的截图,显示内容是菠菜,我检查网址,确实是我朋友的网站。
网站应该是被攻击了,但我电脑上为什么不能复现呢?难道是已经恢复了? 我把网址发给朋友让他试下,自己顺手也在手机上点击了一下,发现微信上打不开,也被封了。复制到手机浏览器,可以打开,但是自动跳转到一个菠菜网站。终于能复现了 :)
分析
原因就是网站被劫持了,猜测可能有两种情况: 1、域名被污染了,DNS 解析到了恶意网站 2、网站本身的问题,被黑客入侵,修改了网站的内容
我首先检查了域名的解析,发现没有问题,解析到了正确的 IP 地址。那就是网站本身的问题了。 使用 google 浏览器,打开开发者工具,模拟手机重新访问网站,发现首页正常显示,但马上又自动跳转到了菠菜网站。仔细分析 NetNetWork 请求记录,发现一个可疑的 js 请求:
打开这个 JS,源码如下:
很明显,就是这个 JS 搞的鬼,还故意做了判断,只有手机端才会跳转。
那么这个 JS 请求是怎么来的呢?直接按这个 JS 网址索搜关键字,找不到。只能用笨办法,逐一分析请求记录。 第一个请求是首页 index.html,打开源码,发现一段奇怪的代码:
看起来很可疑,解码查看如下:
终于找到原因了,首页被插入了这段恶意代码,这段代码会动态加载 JS,然后跳转到菠菜网站。 我删除了这段代码,并索搜,检查了其他页面,没有发现其他异常代码。重新上传页面到服务器,再次访问,问题解决!
又被劫持
但是,没过几天,朋友又反馈,网站又还是会跳到其他网站。我重新排查,发现个新的现象:不管是手机端还是模拟手机浏览器,都只会出现一次,再次访问就不会跳转了。这次病毒更狡猾了?
只能重新分析请求记录,发现这个 JS 请求:
但是,这个 JS 请求是个空的 HTML 页面,没有任何内容。我只能猜测,这个 JS 是动态生成的,有概率成功请求。问题又回来了,首先得想办法稳定复现。 黑客无非两个手段控制,一是简单按随机概率响应攻击 JS;二是识别终端用户,只有第一次访问才会跳转。多试几次,排除第一个情况。 因为没有登录信息,黑客无非就是通过 IP 或 MAC 地址识别终端用户。于是,我使用代理,每次切换不同 IP 访问,果然每次都会跳转。果然更狡猾了!
再次分析
我重新请求上面可疑的 JS 请求,发现这次返回的内容不是空的了,而是一段 JS 代码:
手段类似,还是使用编码混淆的方式,跳转到广告网站。那么这个 JS 请求又是怎么来的呢?与上一次一样,按顺序逐一分析请求记录,排除首页之后,是一些 JS 请求:
先直接搜索关键字试试,果然找到了相关的 JS 文件:
还是一样的手段,混淆并动态生成 JS,跳转到广告网站。区别是这次是通过 JS 文件加载的,而不是直接插入到 HTML 页面中。
总结
这是非常典型的网站入侵攻击。黑客非法取得源码文件修改权限后,使用了两种方式劫持网站,一是直接插入恶意代码到 HTML 页面中,二是通过 JS 文件加载恶意代码。这两种方式都是通过混淆代码,动态生成 JS,跳转到广告网站。黑客还使用了一些手段,如只识别手机端,或第一次访问才会跳转,通过 IP 地址识别终端用户等。
黑客是用什么手段入侵的呢?我只能猜测,可能是通过 FTP 泄露的密码,或者是网站的漏洞。这个网站是一个静态网站,没有输入之类的数据交互。其实托管平台也已经有一些基础的安全手段,如:修改 FTP 密码;设置文件权限,只读不可写;PHP 安全参数设置;网站备份等。这些基础安全措施,可以有效的防止大部分的入侵攻击。
搜索发现,这个攻击早在 22 年就有报道了https://www.freebuf.com/articles/network/351899.html,看样子影响面挺大的。