安全小课堂丨什么是暴力破解?如何防止暴力破解

news2025/1/10 20:42:35
什么是暴力破解?

暴力破解也可称为穷举法、枚举法,是一种比较流行的密码破译方法,也就是将密码进行一一推算直到找出正确的密码为止。比如一个6位并且全部由数字组成的密码,可能有100万种组合,也就是说最多需要尝试100万次才能找到正确的密码,但也有可能尝试几次后就能找出正确的密码。从理论上来说,只要字典足够庞大,枚举总是能够成功的,也就是说任何密码都能被破解,只是时间的问题。

而暴力破解也是一种常见的网络安全攻击方法,它利用计算机程序自动尝试大量的密码组合来破解密码。这种攻击方法通常用于获取未经授权的访问权限,如入侵网络系统或个人账户。

力破解的原理

暴力破解利用计算机程序自动化地生成可能的密码组合,并将其提交到目标系统进行验证。

这种攻击方法基于以下几个假设:

密码是由字符集合组成的:密码通常由字母、数字和符号组成,因此暴力破解程序将根据这些字符集合生成所有可能的密码组合。

密码长度是有限的:由于密码长度有限,暴力破解程序可以尝试所有可能的密码组合,直到找到正确的密码为止。

密码是可预测的:在某些情况下,密码可能是根据常见的模式或规律生成的,因此暴力破解程序可以利用这些规律来更快地破解密码。

黑客通过暴力破解攻击能得到什么?

使用暴力破解的攻击者必须付出一些努力才能让阴谋得逞。虽然技术的进步确实让这种攻击实施起来更容易,但您仍有可能会问:为什么有人会这样做?

以下是黑客通过暴力破解攻击可以获得的好处:

  1. 通过广告或收集活动数据来获利
  2. 窃取个人数据和贵重物品
  3. 传播恶意软件,造成破坏
  4. 劫持您的系统,进行恶意活动
  5. 破坏网站声誉

通过广告或收集活动数据来获利。

黑客可以与其他人一起利用网站赚取广告佣金。常用的方法包括:

  1. 在流量大的网站上投放垃圾广告,每次访客点击或查看这些广告时,他们都能赚钱。
  2. 将网站的流量重新路由到受委托的广告网站。
  3. 使用活动跟踪恶意软件(通常是间谍软件)感染网站或其访客的设备。未经您同意便将您的数据出售给广告商以帮助其改善营销状况。

窃取个人数据和贵重物品。

入侵在线账户就像打开银行保险库:从银行账户到税务信息,一切都可以在网上找到。对于犯罪分子来说,只需成功入侵一次,即可窃取您的身份信息、金钱,或者出售您的私人凭据以非法牟利。有时,企业级数据泄露会导致整个组织的敏感数据库暴露出来。

传播恶意软件,只为造成破坏。

如果黑客想要制造麻烦或练习技能,他们可能会将正规网站的流量重定向到恶意网站,也可能会使用安装在访客电脑上的隐藏恶意软件来直接感染网站。

劫持您的系统,进行恶意活动。

当一台机器不够用时,为了加快攻击速度,黑客会控制一组受害者设备,构建一个僵尸网络。恶意软件会渗透进您的电脑、移动设备或在线账户,实施垃圾邮件钓鱼和暴力破解攻击等活动。如果您未安装反病毒系统,被感染的风险会更大。

破坏网站声誉。

如果您运营一个网站并成为恶意破坏的目标,网络犯罪分子可能会决定在您的网站上投放淫秽内容。这可能包括暴力、色情或种族歧视性质的文字、图像和音频。

暴力破解攻击的类型

每次暴力破解攻击都会使用不同的方法来窃取您的敏感数据。您可能会遇到以下任何一种常见的暴力破解方法:

  1. 简单的暴力破解攻击
  2. 字典式攻击
  3. 混合暴力破解攻击
  4. 反向暴力破解攻击
  5. 撞库攻击

简单的暴力破解攻击:黑客试图在完全不借助软件工具或其他手段的情况下,从逻辑上猜测您的凭据。这类攻击可以破解极其简单的密码和 PIN 码。例如,设置为“guest12345”的密码。

字典式攻击:在标准攻击中,黑客会选择一个目标,并针对该用户名运行可能的密码。这些方法被称为字典式攻击。字典式攻击是最基本的暴力破解攻击方法。虽然这类攻击本身不一定是暴力破解攻击,但通常被用作破解密码的一个重要手段。一些黑客会整个运行未经删减的词典,并在单词中增加特殊字符和数字,或者使用特殊的单词词典,但这种类型的顺序攻击非常繁琐。

混合暴力破解攻击:黑客将外部手段与自己合乎逻辑的猜测相结合,试图入侵目标账户。混合攻击通常是将字典式攻击和暴力破解攻击结合起来。这类攻击被用于破解由常见单词与随机字符组合而成的密码。像 NewYork1993 或 Spike1234 这样的密码就属于这种性质的暴力破解攻击。

反向暴力破解攻击:顾名思义,反向暴力破解攻击将攻击策略反向执行,从已知密码开始。然后,黑客会搜索数百万个用户名,直至找到匹配的那一个。使用这种手段的很多犯罪分子都是从因数据泄露而被公布到网上的密码开始的。

撞库攻击:如果黑客知道了一个网站的用户名和密码组合,他们也会用这个组合在很多其他网站上尝试。很多用户习惯在很多不同的网站上重复使用相同的登录信息,因而容易沦为这种攻击的专属目标。

使用工具进行暴力破解

猜测特定用户或网站的密码可能需要很长时间,因此,黑客开发出了工具以更快完成这一任务。

自动化工具为暴力破解攻击提供了有效辅助。这种工具可以快速执行猜测程序,旨在创建所有可能的密码并尝试使用它们。暴力破解软件能在一秒内破解由一个字典单词组成的密码。

这些工具中都编入了变通方法,以便:

  1. 妨碍多种计算机协议(如 FTP、MySQL、SMPT 和 Telnet)
  2. 让黑客可以破解无线调制解调器。
  3. 识别弱密码
  4. 解密加密存储中的密码。
  5. 将单词转换为黑客语,例如,“don'thackme”变成“d0n7H4cKm3”。
  6. 运行所有可能的字符组合。
  7. 实施词典式攻击。

有些工具会扫描预计算的彩虹表,以获取已知散列函数的输入和输出。这些“散列函数”是基于算法的加密方法,可以将密码转换为较长且长度固定的字母和数字序列。换句话说,彩虹表去除了暴力破解攻击中最难的部分,加快了攻击过程。

GPU 加快暴力破解尝试

运行暴力破解密码的软件需要大量算力。不幸的是,黑客已经找到了硬件解决方案,使这部分工作变得更加容易。

CPU 和图形处理单元 (GPU) 结合使用可加快计算速度。通过将数千个计算核心添加到 GPU 中执行处理操作,系统能够同时处理多个任务。GPU 处理用于分析、工程和其他计算密集型应用。黑客使用这种方法破解密码的速度比单独使用 CPU 要快 250 倍。

那么,破解一个密码需要多长时间?例如,由 6 个字符组成、包含数字的密码大约有 20 亿种可能的组合。功能强大的 CPU 每秒可尝试 30 个密码,破解它需要两年以上。如果在这台计算机上添加一块强大的 GPU 卡,每秒就能尝试 7,100 个密码,只需 3.5 天就能破解该密码。

如何防止暴力破解?

为了保护自己和网络的安全,您需要采取预防措施并帮助他人也这样做。用户行为和网络安全系统都需要加强。

无论是 IT 专家还是普通用户,都需要牢记以下几条一般建议:

  1. 使用高级用户名和密码。为了有效抵御攻击,应使用比 admin 和 password1234 强度更高的凭据来保护自己。这种组合的强度越高,破解难度就越大。
  2. 删除任何闲置不用的高权限账户。这些账户在网络上相当于锁很容易撬开的大门。账户不维护就会形成漏洞,将您置于风险之中。应尽快删除这些账户。

一旦您掌握了基本知识,您就会想要增强自己的安全,同时也让用户这样去做。

我们将从您可以在后端执行的操作开始,然后向您分享培养安全习惯的建议。

利用被动式后端防护措施来保护密码

高加密率:要使暴力破解攻击更难成功,系统管理员应确保其系统密码的加密方法使用尽可能最高的加密率,例如 256 位加密。加密方案中的位数越多,密码就越难破解。

在散列中加盐:管理员还应该在密码本身中添加一个随机的字母和数字字符串(称为盐),以使密码散列实现随机化。此字符串应存储在一个单独的数据库中,并在散列之前检索并添加到密码中。通过在散列中加盐,用户就能通过相同的密码实现不同的散列。

双重身份验证 (2FA):此外,管理员还可以要求进行双重身份验证,并且安装入侵检测系统以检测暴力破解攻击。这需要用户使用第二个身份验证因子来跟踪登录尝试,如物理 USB 密钥或指纹生物识别扫描。

限制登录重试次数:限制尝试登录的次数也可以降低遭到暴力破解攻击的风险。例如,要求在三次尝试内输入正确的密码,否则将用户锁定几分钟,这样会造成明显的延迟,使黑客转向更容易得手的目标。

多次登录尝试后锁定账户:如果黑客可以无限制地继续重试密码,即使在短暂锁定之后,他们也可以再次尝试。锁定账户并要求用户联系 IT 团队进行解锁,可以阻止黑客的行为。短暂锁定对用户来说更方便,但方便可能意味着漏洞。为了达到平衡,如果短暂锁定后尝试失败次数过多,您可以考虑使用长期锁定。

限制重复登录的速率:您可以通过在每次登录尝试之间设置一定的间隔,进一步减慢攻击者的攻击速度。一旦登录失败,计时器可以拒绝登录,经过一小段时间再允许重试。这让您的实时监控团队能够有时间发现并采取措施来阻止这种威胁。如果不值得等待,一些黑客可能会停止尝试。

重复登录尝试后需要验证码:手动验证可阻止机器人通过暴力破解窃取您的数据。验证码有多种类型,包括重新输入图像中的文字、选中复选框或识别图片中的对象。您可以在首次登录之前和每次登录尝试失败之后,使用任意类型的验证码来加强保护。

使用 IP 黑名单阻止已知的攻击者。确保管理人员持续更新此名单。

利用主动式 IT 支持防护措施来保护密码

密码安全宣传教育:用户行为对密码安全至关重要。对用户进行安全实践和工具方面的宣传教育,帮助他们管理好自己的密码。由于用户往往为图方便而不顾安全,因此一定要帮助他们学会使用方便的工具来保护自己的安全。

实时监控账户以发现异常活动:奇怪的登录位置、过多的登录尝试等等。试着找出异常活动的趋势,并采取措施实时阻止任何潜在攻击者。注意 IP 地址阻止情况、账户锁定,并联系用户以确定账户活动是否合法(如果看起来可疑)。

用户如何增强密码以抵御暴力破解攻击

作为用户,您可以采取很多措施来加强在数字世界中的自我保护。抵御密码攻击的最好方法是尽可能提高密码的强度。

暴力破解密码需要时间。因此,您的目标是确保自己的密码尽可能延长这些攻击得逞所需的时间,因为所需时间太长而不值得,大多数黑客便会放弃攻击并转向其他目标。

以下是增强密码以抵御暴力破解攻击的几种方法:

设置包含不同字符类型的较长密码。如果有可能,用户应选择 10 个字符的密码,并且包含符号或数字。这样会产生 171.3 个一百万的三次方 (1.71 x 1020) 种可能性。如果使用 GPU 处理器每秒尝试 103 亿个散列值,破解密码大约需要 526 年。然而,超级计算机可以在几周内完成破解。按照这种逻辑,密码包含的字符越多,破解难度就越大。

复杂的密码短语。但是,并非所有网站都接受这么长的密码,因此用户应该选择复杂的密码短语,而不是单个单词。字典式攻击专门针对单个单词的短语构建,几乎不费吹灰之力就可以破解。密码短语是由多个单词或片段组成的密码,应在其中加入额外字符和特殊的字符类型。

密码的创建规则。最安全的密码是那些您自己能记住但别人看不懂的密码。在使用密码短语时,请考虑使用截短词,比如用“wd”代替“wood”,从而创建出一个只有您自己才能理解的字符串。还可以去掉单词中的元音字母或只使用每个单词的前两个字母来创建密码短语。

不要选择常用密码。重要的是避免使用最常见的密码,并且经常更改。

为您使用的每个网站设置唯一密码。为了避免成为撞库攻击的受害者,切勿重复使用密码。要提高安全等级,可以针对每个网站设置不同的用户名,这样即使一个账户被入侵,也可以防止其他账户受到攻击。

使用密码管理器。安装密码管理器可以自动创建并跟踪您的在线登录信息。只要先登录密码管理器,即可访问所有账户。这样一来,您就可以针对自己访问的所有网站创建极长且复杂的密码,并且安全地存储,而您只需要记住密码管理器的一个密码就够了。

总之,暴力破解是一种非常危险的攻击方式,可以对个人、企业和组织造成严重的后果。为了保护自己免受暴力破解攻击,我们应该采取一系列的安全措施,例如使用强密码、多因素身份验证和网络安全设备,以及实施访问控制策略和安全培训和意识提高活动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1619054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32系统参数和结构

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 基本参数 2. 片上资源(外设) 3. STM32系列命名规则 4. 系统结构 5. 引脚定义 6. 启动配置 7. 最小系统电路 8. 型号分类和缩写 1. 基本参数 STM32F103C8T6 系列&#…

【工具】录屏软件Captura安装使用及ffmpeg下载配置

开启技术视频创作,录屏软件林林总总,适合的、习惯的最好。 录屏软件Captura的使用及ffmpeg下载配置 1.Captura下载、安装2.FFmpeg下载、配置3.Captura屏幕录制试用、录制视频效果 1.Captura下载、安装 Captura主要是一个免费开源的录屏软件&#xff0c…

动态创建链表 与头插法 和头插法的优化

1.代码一 思想:在main函数中实行三次头插法,在insertFromHead()函数中,主要创建新的节点new,开辟空间,输入想要增加的data;根据头节点的情况来判断插入, 如果head NUL…

DSPy入门:告别指令提示,拥抱编程之旅!

原文:intro-to-dspy-goodbye-prompting-hello-programming 2024 年 2 月 27 日 DSPy框架如何通过用编程和编译代替提示来解决基于LLM的应用程序中的脆弱性问题。 目前,使用大型语言模型(LLMs)构建应用程序不仅复杂而且脆弱。典型的pipelines通常使用pr…

Xinlinx FPGA内的存储器BRAM全解

目录 一、总体概述1.7系列FPGA的BRAM特点2.资源情况 二、BRAM分类1.单端口RAM2.简单双端口RAM3.真双端口RAM 三、BRAM的读写1、Primitives Output Registers读操作注意事项2.三种写数据模式(1)Write_First(2)Read_First&#xff0…

梯度,hesse阵与Jacobi矩阵

分清楚三个量的含义和计算方法。 梯度 表征的是一个列向量,是相对于某个方向而言的,但是某个方向上可能有多个变量,所以梯度不是简单的直接求偏导,并且说了,它是一个列向量,所以, 我们设 f : …

从0到1—POC编写基础篇(二)

接着上一篇 POC常用基础模块 urllib 模块 Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 urllib 包 包含以下几个模块: ●urllib.request - 打开和读取 URL。 ●urllib.error - 包含 urllib.request 抛出的异常。 ●urllib.parse - …

Access2019直接将数据导入SQL Server数据库中,再直接链接回来

Access2019 的数据表等,除了通过 SSMA 导入数据库外,还可以利用access2019 自身的外部数据导出功能来达到目的。本文将详细介绍这一操作过程。 一、命令行操作阶段 1.以SA这一超级用户登录SQL Server,创建一个数据库,例如“个人…

【java毕业设计】 基于Spring Boot+mysql的高校心理教育辅导系统设计与实现(程序源码)-高校心理教育辅导系统

基于Spring Bootmysql的高校心理教育辅导系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于Spring Bootmysql的高校心理教育辅导系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及…

C++中的list类模拟实现

目录 list类模拟实现 list类节点结构设计 list类非const迭代器结构设计 迭代器基本结构设计 迭代器构造函数 operator()函数 operator*()函数 operator!()函数 operator(int)函数 operator--()函数 operator--(int)函数 operator()函数 operator->()函数 list…

MATLAB 数据类型

MATLAB 数据类型 MATLAB 不需要任何类型声明或维度语句。每当 MATLAB 遇到一个新的变量名,它就创建变量并分配适当的内存空间。 如果变量已经存在,那么MATLAB将用新内容替换原始内容,并在必要时分配新的存储空间。 例如, Tota…

Java虚拟机类加载机制详细总结

1、概述 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 2、类加载的时机 一个类型从被加载到虚拟机内存中开始&#xff…

idea自定义配置文件的注释

打开 IntelliJ Idea 软件 依次找到 File—>Editor—>File and Code Templates 设置 Files 下的Class、Interface、Enum等 输入下面的内容 /** * description: ${NAME} * date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * author: author **/

ElasticSearch总结二

正向索引和倒排索引: 正向索引: 比方说我这里有一张数据库表,那我们知道对于数据库它一般情况下都会基于i d去创建一个索引,然后形成一个b树。 那么你根据i d进行检索的速度,就会非常的快,那么这种方式的…

VMware 15 安装centos7虚拟机

1. 安装前准备 1.1 下载centos 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载需要版本的centos版本 直达链接 centos7.9 : centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 .基础使用的话安装选择这个就行了,大概下载几分钟 2. …

iOS ------代理 分类 拓展

代理协议 一,概念: 代理,又称委托代理(delegate),是iOS中常用的一种设计模式。顾名思义,它是把某个对象要做的事委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理…

【简单讲解下如何学习C++】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

P1106 删数问题

本题为洛谷&#xff1a; #include<iostream> #include<string> using namespace std; int main(){string n;int k;cin>>n>>k;while(k--){for(int i0;i<n.length();i){if(n[i]>n[i1]){n.erase(i,1); break;} }for(int i0;i<n.length()-1&&…

uniapp APP检测更新

需求&#xff1a; 1.首次进入APP给出弹窗提示是否存在最新版本APP&#xff0c;可选择更新或者取消 2.选择取消后&#xff0c;在使用期间不再弹出该弹窗 3.在设置中增加按钮&#xff0c;点击进行版本检测&#xff0c;再弹窗 效果图&#xff1a; 使用到的插件&#xff1a;APP升…

如何理解自然语言处理中的位置编码(Positional Encoding)

在自然语言处理和特别是在使用Transformer模型中,位置编码(Positional Encoding)是一个关键的概念。它们的作用是为模型提供序列中各个元素的位置信息。由于Transformer架构本身并不像循环神经网络(RNN)那样具有处理序列的固有能力,位置编码因此显得尤为重要。 为什么需…