最近在前端异常监控系统中,发现一些异常信息,从中做了一些分析,得到一些体会,因此作文。
发现异常某天早上打开监控系统发现,当天凌晨1点过测试环境有2个前端上报的异常,报错的原因都是由于没有获取到 url 中的参数,比如正常的地址应该是 ?a=1&b=2, 但是实际访问的是 %3Fa%3D1%26b%3D2。 很明显路径被 encode 了,导致程序没有拿到参数。
2个异常的访问路径是不一样的,并且以上2个地址 decode 之后再访问,能够正常打开页面,参数全部都是正确的。 这些访问的 url 是我们在做跳转的时候,入口配置的,我们的逻辑中不会 encode,这个地方非常让人疑惑,为什么会出现这样的请求,猜测很可能是人为修改了再访问的。 后来把参数获取出来,去查询一些信息,发现这条请求是都来自于我们的测试同学的账户,但是私下询问过,1点过同事根本什么都没有做。 也排除了有其他人用他手机访问的情况。 再对参数里的信息做查询,发现这2个参数对应的数据是在2个多月前,我们项目测试阶段的数据,这就更奇怪了,2个月前的版本我们已经没有再测试了,同事也很久没有访问过这几个入口。 是不是有人在刷我们的页面,但为什么几个参数都是如此精确,都是正确的。
一定有其他人在访问。因为各方面情况看起来都很不正常:
1. 凌晨1点过访问的
2. 访问路径被 encode 了
3. 数据是测试同事的,他自己却没有访问过。
4. 访问的地址的数据都是2个月前生成的,如果有三方黑客获取到了访问记录之后,延迟到最近批量访问也符合行为逻辑
再看看上报的其他异常信息,更奇怪了,浏览器的版本无从得知,User-Agent 只有 Go-http-client/1.1 , 怎么看都像是爬虫脚本在做请求。 说到爬虫,爬虫一般会针对已知的接口进行数据拉取,以获取他人的信息; 又或者不停的遍历不同的路径,查找可访问的路由(隐藏的后门),路径遍历很容易发现,如果有日志的话,就能看到很多 404, 大量的访问一些奇怪的路径。 那我们遇到的,是前期通过某种方式拦截到我们的网页请求,收集起来,到一定时间再去访问,这种方式叫做:重放攻击。
我们在服务器又查询了 IP 等一些相关的信息,发现有几个 IP 时不时的在做这样的访问攻击,而且也看得出对方很谨慎,没有同时做大批量的请求。 又发现了更多的异常行为,首先比如一个 的页面路径,它使用 post 方法去请求了一次。
所有的异常数据,被访问的路径都是测试环境的地址,使用的 http,而我们的正式环境使用的 https,对方似乎并没有能力获取到 https 的请求。 通过查询这几个 IP 在正式环境访问,又发现了一条记录,而刚好这条记录的访问地址没有 https(因为有时候,我们的开发自己可能会手动把 https 改成 http 去访问)。 到目前的结论是黑客方的监听是和我们的项目环境没有关系的,只是因为我们正式环境使用了 https 他才没有获取到。
最初以为只是一个同事的手机被监听了,但是因为又出现了另一个同事的请求,所以觉得爬虫在路由器层拦截的概率更大,而且刚好这两个同事有一个用的是安卓,有一个用的是苹果,所以看起来所有的设备都有命中的可能。 但是如果是公司路由器的问题,那为什么目前为止就只发现了两个同事的访问被爬取了,这些网页其他同事也都访问过,而且频率也不低。 对方的策略具体是什么,到底在哪里拦截的,我有点束手无策了。 而后询问过另一个同事后,得知对方大概是在20多天前访问的,爬虫访问的记录全部集中在这几天。 种种迹象表明确实是前期收集了一段时间,这两天才开始出来集中访问的。
前面通过查询 IP,发现爬虫的服务器都在国内,但是对方也可能隐藏掉了真实 IP 。 如果对方的行为对公司造成了伤害,也许可以进一步去查对方服务器归属人。 但是因为从对方访问量和攻击程序来说,对我们几乎没有伤害。 甚至能感觉到对方不是定向要攻击我们。 看起来更像是对方的程序游离在互联网上,收集到了什么,就干点什么的意思。
安全问题