在电商、互联网金融、OTA等平台,黑客攻击很常见。针对黑客攻击,我们能做什么?一起来看看作者的亲身经历。
一直知道有黑客的存在,一直知道有“黑产”的存在,但没想到过有一天我如此近距离的接触黑客以及所谓的黑产。
事情的经过大概是这样的:
昨天晚上10点登录系统突然收到告警短信,告警信息表明,目前有异常大流量请求;由于时间比较晚,花了点时间才联系到核心的研发人员;登录系统查看了下,发现确实有接近平时200倍的异常登录请求。初步看了下请求的IP来源都是比较分散的,特征是在不断的尝试用户名、密码登录,并且已经破解了我们的图形验证码。
综合上面的信息,我们初步判断这应该是一次典型的黑客撞库行为。
何为撞库?
所谓撞库行为,就是黑客在别的地方,一般是安全程度不高的网站被入侵,拿到了这个网站所有用户的用户名,密码信息。然后拿这些用户名、密码在其他网站进行登录尝试,因为有不少人是存在一个普遍行为,即在不同的网站用的是同一个用户名,密码。
这样A网站如果被入侵,泄露了用户的个人信息,黑客可以拿这些用户名、密码到B网站去登录,如果同一个用户既注册了A网站又注册了B网站,这样黑客就可以用A网站得到的信息登录B网站,从而进入用户在B网站的账号。
以为解决掉了
发现了这个行为后,我们先想的是如何禁止黑客的暴力登录;这样不仅存在撞库风险,由于请求量比较大还会影响普通正常用的体验。
研发抓了日志,经过分析,基本可以确定黑客是通过工具进行批量进行登录。
黑客的请求,来源IP比较分散,每次都尝试不同的用户名和密码,想简单的采用封IP的方案是不行了,最后发现所有的异常请求里面,有一个http header是有相同的特征,拉上运维人员一起商量,最后决定在nginx这里对这类的请求进行拦截。
整个流程花费了大概1个半小时,最后nginx策略生效后确实有效的把异常流量给封住了,那会也快晚上12点了,又观察了一会,发现对方没有新的动作,以为这件事就这样结束了。
噩梦才真正开始
第二天上午接到用户投诉,说我们的网站泄露了用户的隐私,有人打电话给用户,冒充网站的客服人员,对用户进行欺诈。
经过跟几个被诈骗的客户了解,基本搞清楚了黑客的诈骗手段。
首选黑客登录用户的账号,看了下用户最新的订单信息,然后打电话给用户,冒充网站的客服人员,说这个客户买的某个商品质量有问题,网站要进行召回,请进行退货处理。退货地址的详细地址在用户的个人地址里面。黑客特意修改了用户的个人收货地址,并在里面藏了一个钓鱼网站的连接,诱导用户点击这个钓鱼网站。这个钓鱼网站完全模仿支付宝登录界面,除了域名不一样,其他一模一样,有些用户没注意,就在这个界面输入了自己的支付宝账号信息,黑客通过这个办法拿到了用户的支付宝账号,然后自己登录用户的支付宝账号——下面就不说了,大家懂的。。。
对于这种欺诈行为,有一定的迷惑性,因为对方可以清晰的报出用户买的东西以及订单号、下单时间、收货地址,有些警觉性比较低的用户就真的会相信这是网站“官方”的行为,然后按照引导去操作,最后支付宝账号信息被盗取。
一上午的时间,客服陆续接到近10起类似投诉,其中有一个用户支付宝被盗了2万块,要求我们进行补偿——这个时候,我们才意识到问题的严重性:首先我们不知道黑客具体拿到了多少我们网站的用户信息,然后还不知道即将有多少用户因此受骗。。。
魔高一尺道高一丈
我们紧急先找了下昨晚攻击时间段的请求日志,尝试发现哪些用户被黑客撞库成功了。
由于我们没有记录详细的登录日志,所以单从日志上看不出来这个信息,最后只能把攻击的那个时间段内,所有成功登录过的用户信息全部拉出来,悲观的认为这些都是被黑客攻击的账号;然后批量给这些用户发短信进行提醒,为了防止黑客还能登录这些账号进行欺诈,我们立刻把这些账号的密码置空,要求用户立即修改密码。
我们以为这样黑客就没办法再登录这些账号进行欺诈了,结果又被现实狠狠的打脸,因为还陆续有客服反馈有用户来投诉,这就让我们很不理解:为什么黑客都不能登录了,还能看到用户的信息进行诈骗呢?难道黑客把这些信息存下来拉?
我们立刻又去翻日志,最后发现:黑客在撞库成功后,立刻就把用户的订单信息,个人信息全部用脚本查询了一遍,并且把这些信息存了下来。
这时候才发现,黑客在攻击我们之前,已经对我们网站的接口进行了细致的分析,制定了一套相对完整的攻击方案。
黑客都比你努力
经过这次攻击,发现黑客还是很用心的做了很多准备工作。
首先分析我们的接口信息。
写撞库的工具,成功登录后,立刻将用户的关键信息落地。
选择在深夜进行攻击,我们发现异常到找到相关的人,到制定响应方案时间比较长,可以尽量争取攻击的时间。
针对我们的网站,执行针对我们网站用户的诈骗方案。
现在看下来,整个流程事先都是准备好的,而我们的响应方案确实漏洞百出。
吃一堑长一智
这次攻击也暴漏了系统很多的问题,总结几点。
没有任何安全防护措施,对于这种典型的异常流量响应很被动。现在市面上有很多成熟的waf,可以自动识别这种恶意工具,从而将恶意流量进行有效清洗。
协议没有加密,让别人很容易拿到协议的内容,进行模拟。
图形验证码没有难度,很容易被破解,需要增加级别更好的验证方式。语音验证或者滑动验证。
没有基本的风控模型,比如用户正常是在上海登录,突然在新疆登录了一次,这个时候应该有异常的标记或者告警。