我是风筝,公众号“远古风筝”,一个深度和广度兼具的程序员鼓励者,一个打算写诗却写代码的田园码农!文章会被JavaNewBee收录,还会有更多文章合集。
头两天的中午还是和往常一样热,太阳在天上不知疲倦地燃烧着,热气冲走了云和鸟,快要点燃空气和我的大脑神经。让我和电脑感到凉爽的是我简陋的办公桌上的一个小风扇,没有它,键盘会很热,以至于我可能无法编写代码。
就在这时,我身边的手机震动了两下。对于从来不敢打电话的人来说,这种震动的声音太熟悉了。不用说,应该是广告短信,或者有人加我为微信好友。. 因为我基本上从不看短信,所以微信里没有提醒,只有加好友的时候。由于很多朋友都看过我最近写的文章,所以每天还是有很多人加我为好友。空闲时间统一处理。所以,我继续编写我的代码并忽略它。
大约两分钟后,嗡嗡~震动了两下,别慌,继续写代码。然后嗡嗡声~~我振动了两次,然后振动了两次。我心想,会不会又一个大号翻了我的文章(心里有点得意),冷静下来,继续写代码。
已经 6、7 次了。我正要看看手机,出事了,赶紧开门出去了。20分钟后回来,发现手机还在震动。我赶紧捡起来看了看。未读短信增加了(这是写文章时拍的,真实数字比这个多一点,被我点了)。
我怎么有这么多短信,我记得很清楚,只有820多条(我想向有强迫症的朋友道歉,这张图可能会让你看起来很不舒服),原谅我不看短信非常多,总是800多堆。怎么半个小时就多了几十条消息?我打开一看,都是陌生公司的登录验证码信息,如下图。
【XX科技】您是短信登录,验证码为689287,请在15分钟内提交验证码,请勿将验证码泄露给他人。
瞬间让我想起了一个词:短信轰炸机。什么,有人炸了我,我得罪了谁,所以我的大脑运转得很快。
莫非是前几天问我一个问题没及时回答,然后骂我被我删了?
莫非最近那个导演不客气,不熟,让我帮他抓数据吧?
还是大佬多次举报我的文章不是原创?
值得,不是吗?就在我这么想的时候,电话安静了,停了下来。事实证明,我可能想太多了。可能是某个短信轰炸机在轰炸的时候找错了目标,及时发现了,或者其他什么原因。
熟悉的场景
这一幕勾起了我的一些回忆,同时也表达了我对XX科技的深切同情。几年前,我的创业公司被短信轰炸机利用。一晚上,短信平台上的2万元就被刷光了。
短信轰炸机
手机短信轰炸机是一种将各种网站的注册验证码短信分批、循环发送到手机的方法。一般一分钟能收到100多条短信,可以用来测试手机的短信接收速度。它可以在电脑或手机上运行。
比如有人要骚扰你,花点钱买个短信轰炸或者电话轰炸(学名叫你死了)的服务,你的手机瞬间变成了高频振动器或者铃声播放器,让你的手机热的。严重的话会直接断电关机。
现在有很多短信平台,比如腾讯、阿里、华为等,都有防盗等功能。当时不知道老板是在哪个渠道找到了短信平台。我不记得具体的名字了。毕竟已经好几次了。年。当时平台好像是收2万元送5000元,所以老板直接收20000元,按每条短信几毛钱计算。从公司当时的业务量来看,可能要等到公司倒闭时才会用完。
当时,经过几个月的努力,开发的产品顺利上线,但没有推广,正在进行最后的上线测试。它只是由公司内部人员测试,我认识的一些朋友正在使用它。即将开始大规模推广。
一天晚上天黑,刮风,老板突然打来电话,说收到短信平台的收费预警通知。当我进入页面时,我惊呆了。我用了四万多件,只剩下几千件了。赶紧打电话给客服询问情况。事实上,此时此刻,我们还没有意识到系统安全漏洞被利用了。客服解释说,这个账号确实一直在发短信,而且短信内容和验证码有关,现在还在发,问你要不要先停止服务。
什么,还在继续,所以先停止,所以让客服人员先停止服务。
那时,我也是互联网新手。没想到江湖如此险恶。团队也是草根团队,没想到会出现这样的问题。当我冷静下来开始思考并去搜索引擎搜索相关问题时,我发现了短信轰炸机的概念。短信轰炸机喜欢使用存在安全漏洞的开放平台的短信发送接口,如注册、登录接口等,而我们网站没有采取发送验证码的保护措施,导致漏洞的发生被利用。说到底,那个时候能力还没有到位。
到现在,不知道我们这个还没有推广的小产品,是如何被定位和使用的。据说可能是短信平台有知情人将客户信息卖给第三方平台,也可能是自产自销。如果短信很快用完,您可以快速续费。
还有消息说,短信轰炸平台会黑掉这些正常的短信平台,然后找到用户代刷网轰炸机,然后使用。
也有人说他们会扫描整个网络的注册、登录等url,然后收集,进一步处理,找到可以使用的。
但我不知道它是什么样的。反正不保护自己,就得被利用。
事故现场及防护处理
这其实是一个安全漏洞,但是级别比较低。它有多低?即在注册页面输入手机号后,点击“发送验证码”按钮,只会判断手机号是否合法,是否已注册,否则,验证码直送,谓之无知无畏。这相当于开门迎客的状态,没有权限,没有通话频率限制,也没有token验证。
当时停止短信服务后,立即查看后台日志,发现有很多不同的IP在不断的发送请求。郁闷的是,虽然短信服务已经停止了,但是请求还是源源不断的涌来。看来这是一套完整的自动化流程,使用IP池动态代理来模拟发送请求,我们的短信接口只是其中之一微不足道的免费资源。
停止服务
已经很晚了,差不多是凌晨了,但是大脑却被刺激的很清醒。首先要考虑的是让服务正常工作。但是请求还是来了,所以我先关闭了 Nginx 服务。既然你这么聪明,如果你不能访问界面,它会停止吗?停了5分钟后,一重启,日志又被填满了。原来,不是它不聪明,而是我智障。它不关心你,它是一台没有情感的自动请求机器。
更改接口地址
好吧,我承认吧,我不能停止服务,也不能控制你的无情机器,所以我先换个接口地址。所以我先更改了注册和登录的接口地址。这样,我总是可以先把短信服务分开,先缓解服务器的压力。但是我还是不敢打开短信服务,以防它再次找到我们的新界面。
这个时候已经很晚了。好在产品还没有推广,也没有人用,所以我就去睡觉了,等第二天再处理。
添加图形验证码
第二天一早我就去了公司。我做的第一件事就是看看没有感情的机器是否让我们离开。看着日志,我的心突然有点凉。我请了一个晚上,但没有。.
有同事说,要不要换IP?
大哥,申请的是域名,但是可以改二级域名。之前是用api.xxxx.com作为后端服务域,所以有同事开始摆弄二级域名。
我开始在这里添加其他规则。我首先想到的是添加验证。在发送验证码之前,我添加了一个图形验证。当时我找到了《极限测试》提供的行为验证方法。大家经常看到的就是下面这个方法。在发送验证码之前,让用户完成行为验证,基本可以屏蔽机器人,集成很简单。
然而,在咨询了费用后,我被说服退出了。那个时候年费是5万,不知道现在是多少。
图文验证码也不错,关键是不花钱,所以找了个开源代码,做了图文验证码。当时为了更安全,让机器更难破解,当时做了6位字母和数字的组合,加上干扰因素。事实证明,它不仅可以防机器,还可以防人。很多同事说,他们在做测试的时候,往往很难辨认出来。于是改成4位,降低了干扰因素。
通过这一课,当我看到12306一步步提升验证码难度时,我能感受到12306的无奈和内心的彷徨。
限制访问频率
添加图形验证码是第一步。那还不够。万一被绕过了,毕竟自动识别验证码只是增加了门槛。如果有人真的想惹你,它不会阻止你。
限制单个手机号码的验证码请求频率。5分钟内只允许发送3次,1小时内发送9次以上,24小时内无法发送验证码。
除了限制手机号码的频率代刷网轰炸机,还限制了单个IP的请求频率。规则是一样的。
设置黑名单
但是对方使用的是动态IP池,5分钟内可能不会连续请求。通过日志分析发现,在此期间共有数百个IP在发送请求,因此在此期间所有超过10次的单个IP请求都被加入了黑名单。
并且4小时内单次IP请求超过8次都会被加入黑名单。当然,这些规律都是通过观察日志得到的,当然,最终的科学依据还是“拍脑袋”。
一个请求过来后,先查看该IP是否在黑名单中,如果是,直接拒绝。
其他方法
除上述措施外,还有其他保护方法。
例如,当用户进入前端页面(登录或注册页面)时,会生成或请求令牌,然后在发出请求时验证令牌。你可以在里面写一些更复杂的算法逻辑。当然,这只增加了门槛。如果掌握了这个过程,它仍然会被使用。
旧的域名接口也被保留了,但我们要看它会请求多长时间。大约 8、9 天后,请求将消失。
终于
安全问题也是互联网发展的一个重要方面,但往往被开发者所忽视。仔细想想,如果产品刚推广的时候出现问题,真的会给用户带来很大的伤害。
由于某些安全漏洞,有些初创公司已经倒闭。大型工厂的风险更大。许多强大的羊毛党利用漏洞来舀羊毛。比如前段时间,某大型商场因优惠券漏洞被砸千万。
只要是盈利的,就有被利用的风险,需要谨慎对待安全问题。
我是一只风筝,公众号“远古风筝”。一个兼具深度和广度的程序员鼓励者,一个打算写诗却写代码的田园码农!您可以选择现在关注我,或者阅读历史文章永远不会太晚。