什么是撞库?
“撞库”(Credential Stuffing Attack)在网络安全中是一个古老的概念,按中文的字面意思解读,就是“碰撞数据库”的意思。“碰撞”意味着碰运气,即不一定能成功;而“数据库”中往往存储着大量敏感数据,比如我们登录一个网站所需要的用户名、密码,再比如手机号、身份证号等个人隐私信息。“撞库”在英文中的表述为 Credential Stuffing(密码嗅探),也非常直白的说明了撞库的主要场景:试图获取正确的账号/密码组合,大白话就是“盗号”。
现实中发生的撞库攻击主要是攻击者通过一些自动化工具(如脚本)针对要撞库站点的相关接口(比如登录接口)批量提交大量的用户名/密码组合,记录下其中能成功登录的组合并盗取该账号,为接下来做其他的坏事(比如将银行账号中的资金转走,或是游戏账号中的虚拟物品出售,或是盗用他人身份发表一些言论等等)做好准备。
值得注意的是,撞库的目的有2种:
1 盗号并不是撞库攻击的唯一目的,
2 验证某个账号有没有在一个站点中注册过也是常见的撞库目的。
从攻击目的上区分,撞库有以下几种常见场景:
1.弱密码嗅探:类似 111111、123456 这样的简单密码因为很多人用,用这样的弱口令去试探大量的账号,就有一定概率能发现一些真正在使用弱密码的账号。实施这样的攻击一般要求攻击者手上已经掌握了大量的账号以及常见的弱密码库,当然如果不知道账号,随机构造一些也是有概率成功的,比如手机号这种格式固定的账号。
2.利用拖库数据:这是攻击成功率更高的一种方式,原理是大多数人倾向于在多个站点上使用同一个密码(有多少人淘宝和支付宝的密码是一样的?)。当攻击者成功入侵一个安全防护能力很弱的站点 A,并拿到其数据库的所有用户名密码组合,然后再拿着这些组合去站点 B 尝试,如果你两个站点都注册过并且使用了同样的密码……撞库就成功了。
3.针对高权限账号的暴力破解:暴力破解严格来说跟撞库是两种类型的攻击,但我们还是要提一下,因为二者从攻击方法和防护方式的角度来看都差不多。这主要是针对一些高权限账号(如网站的管理员)用大量密码去试探,想要盗用的账号目标非常明确。
如何预防撞库?
1.个人篇
从个人用户自我保护的角度来说,我们给出 4 个建议:
**尽量减少在不同网站使用相同密码。**当然,人性的懒惰跟密码机制的安全性天然上就有冲突,大部分人很难做到这一点,据第三方统计,超过60%的人依然在多个站点使用同一个密码。
**使用更复杂的密码。**比如请不要再用 123456、111111 了……
**定期更换常用密码。
**黑产手里往往掌握大量的“社工库”,里面存储了很多已知的用户名-密码组合,他们可能就包含了你多年前在某网站上使用的组合。因此经常更换密码可以减小社工库信息的有效期。
**启用更多密码以外的身份验证机制。**其实很多安全性好的企业已经在采取一些二次验证、多因素验证之类的最佳实践,如苹果的二次验证、Google的身份验证器、支付宝的人脸识别、微信的声纹等,建议个人用户尽可能的开启类似的验证机制。
2.企业篇
从企业的角度来说,做好账户安全是非常非常重要且基础的工作,因为账户很大程度上是业务安全体系的基石,账号安全一旦失守,只会带来后续更多的问题,补救这些问题需要付出的成本要远远大于做好账户安全防护本身。当然账号安全本身是非常复杂的系统工程,这里我们只是针对撞库这个场景给出一些最佳实践供参考:
强制用户密码的强度。
这点不少站点现在已经做得很好了,但是还有相当多的应用允许用户使用 111111 这样的弱密码。同时也特别注意,不要忽略小程序、App 等非网页环境的注册接口。
定期强制用户更换密码。
这点主要针对企业内部员工,毕竟记住一个密码已经很痛苦了,这带来的用户体验将会直线下降。
在账户相关接口加强人机防控策略。
这里的接口主要包括登录、注册、找回密码、获取短信验证码等,“人机防控”指的是将这些接口中“机器”的访问请求和“真实的人”区别出来,在文章开头我们已经讲过,真实情况下攻击者几乎没有手动实施攻击的情况,如果能将大部分针对账号的“机器流量”识别出来并拦截,会是安全水位很大的一个提升。从技术手段来说,常见的有使用图形验证码、封禁高频请求的 IP/会话、部署人机识别的 SDK 组件等等,但采用图形验证码等方式存在用户体验差以及被破解的问题。
重要业务流程采用二次验证。
如转账前通过人脸识别、指纹声纹、短信/邮件验证码、身份证末位数字验证等机制来确认当前操作来自账号拥有者。
建立业务维度的账户异常指标监控,并及时处理风险账号。
区别于“人机”的技术手段,这里主要是从业务角度(比如高频发帖、异常转账等等),对一些行为上不正常的账号进行监控和处罚,作为技术防控的补充。
借助安全工具做好防撞库攻击。
如果遇到撞库等账户安全问题的困扰,又没有足够专业的团队或精力来按照上述建议进行对抗,建议选择一款合适的安全工具来应对。一般来说, 新昕科技的防撞库防火墙产品就能有效应对撞库攻击,并且真正无感。其内置了撞库、短信防轰炸等AI模型,应对账户注册、登录、找回密码等场景,做到实时防护,风险大盘可以实时查看,攻防情况尽在掌握。从这个角度来看,对于企业来说,选择一款功能丰富强大的安全工具往往可以起到事半功倍的效果。
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe
Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。11年前关闭。我是一位精通HTML
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion首先,我想避免一场关于语言的口水战。可供选择的语言有Perl、Python和Ruby。我想提一下,我对所有这些都很满意,但问题是我不能只专注于一个。例如,如果我看到一个很棒的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到RubyDSL或一些Ruby巫术,我就会迷上Ruby一段时间。目前我是一名Java开发人员,但计划在不久的将来
我目前正在为一个新网站设计版本化的API。我了解如何为路由命名空间,但我一直坚持在模型中实现版本化方法的最佳方式。下面的代码示例使用的是rails框架,但是事情的原理在大多数web框架之间应该是一致的。目前的路线看起来像这样:MyApp::Application.routes.drawdonamespace:apidonamespace:v1doresources:products,:only=>[:index,:show]endendend和Controller:classApi::V1::ProductsController很明显,我们只是在此处公开Product上可用的属性,如果
我正在尝试使用ruby来使用Sharepoint网络服务。我基本上已经放弃尝试使用NTLM进行身份验证,并暂时将Sharepoint服务器更改为使用基本身份验证。我已成功使用soap4r获得WSDL,但在尝试使用实际Web服务调用时仍然无法进行身份验证。有没有人有过让ruby和Sharepoint对话的经验? 最佳答案 我是个新手。但经过很多时间并在更多经验编码人员的帮助下,我能够让ruby与Sharepoint2010一起工作。下面的代码需要“ntlm/mechanize”gem。我已经能够使用列表GUID和ListV
2022年10月21日星期五【数据指标】加密货币总市值:$0.95万亿BTC市值占比:38.51%恐慌贪婪指数:23极度恐慌 【今日快讯】1、【政讯】1.1.1、美联储布拉德:市场预期美联储11月会加息75个基点1.1.2、美联储哈克:将维持加息一段时间1.2、美国10年期国债收益率触及4.197%,为2008年6月以来最高1.3、法国数字转型部长:政府将专注于DeFi和Web31.4、巴西ATM机将于11月3日起支持USDT1.5、美众议院副议长将于11月初加入a16zCrypto担任政府事务主管1.6、香港数字资产托管机构FirstDigitalTrust首席执行官:香港仍是安全
WAF可以对网站进行扫描,识别API漏洞。API安全如何设置API安全_Web应用防火墙-阿里云帮助中心API安全如何划分API业务用途?登录认证手机验证码认证数据保存数据查询数据导出数据分享数据更新数据删除数据增加下线注销信息发送信息认证邮件信息发送邮箱验证码认证账号密码认证账号注册API安全支持检测哪些敏感数据?敏感数据级别敏感数据类型非敏感数据(N)不涉及。特级敏感数据(L0)与一级敏感数据(L1)或二级敏感数据(L2)相同。单次响应中一级敏感数据(L1)较多时,升级为特级敏感数据(L0)。单次响应中二级敏感数据(L2)较多时,升级为一级敏感数据(L1)或特级敏感数据(L0)。一级敏感数
我正在使用RubyonRails3,我正在尝试实现API以从Web服务检索帐户信息。也就是说,我想连接到具有Account类的Web服务并从show获取信息。在URIhttp:///accounts/1处路由的操作.此时,在网络服务中accounts_controller.rb我有的文件:classAccountsController@account.to_json}endendend现在我需要一些关于连接到网络服务的建议。在客户端应用程序中,我应该有一个HTTPGET请求,但这是我的问题:连接到发出HTTP请求的Web服务的“最佳”方法是什么?客户端应用程序中的这段代码有效:url=
谁能告诉我实现rubyonrailsweb应用程序30试用期的最佳方法,很像Basecampfrom37signals的方式是吗?目前我有一个用户登录页面,然后用户可以访问显示有关其产品/定价等的当前信息的仪表板。我希望用户能够注册并拥有完整的应用程序功能,然后在30天后过期。谢谢 最佳答案 创建用于x天试用期的Rails应用程序非常容易。您想为您的用户实现30天的试用期,然后执行以下操作:第1步:在application_controller.rb中创建这些方法,例如#application_controller.rbclas
一、扫描原因 (1)寻找到网站后台管理 (2)寻找未授权界面 (3)寻找网站更多隐藏信息 (4)通过使用目录扫描可以让我们发现这个网站存在多少个目录,多少个页面,探索出网站的整体结构。通过目录扫描我们还能扫描敏感文件,后台文件,数据库文件,和信息泄漏文件等等。二、方法1、robots.txt (1)Robots协议(RobotsExclusionProtocol)“网络爬虫排除标准”,网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 (2)同时也记录网站所具有基本的目录。