取证工作:怎样解锁 LUKS2 加密磁盘?

对于 LUKS2 密码进行恢复,Elcomsoft Distributed Password Recovery (简称 EDPR) 软件可以构建高性能集群,以更快地破解密码。EDPR 软件提供零开销的可扩展性,并支持 GPU 加速,以加快恢复速度。EDPR 可帮助在取证服务中用最少时间来破解最复杂的密码和强大的加密密钥。

LUKS2 是 LUKS 的更新、更好、更安全的版本。根据开发人员的说法,LUKS2 以更灵活的方式存储元数据、冗余信息以在元数据区域损坏的情况下提供恢复,从而扩展了 LUKS。它还引入了一个接口来存储外部管理的元数据,以便与其他工具集成。更重要的是 LUKS2 实现默认密钥派生函数 (KDF) 的方式的更改。LUKS2 开发人员没有将哈希轮数无限增加到数百万,而是决定使用 Argon2,这是一个关键派生函数,被选为 2015 年密码哈希竞赛的获胜者。新的默认 KDF 在最大限度地抵御 GPU 破解攻击。LUKS2 通过新的密钥派生函数使 Linux 磁盘加密更加安全,在攻击 LUKS2 卷时有效禁止 GPU 加速。这反过来只能让我们利用计算机的 CPU 而不是更快的 GPU 来攻击受 argon2id 保护的 LUKS2 磁盘。下面就对 LUKS2 密码恢复思路进行介绍:

  1. 使用Elcomsoft Forensic Disk Decryptor或Elcomsoft System Recovery从加密设备或磁盘映像中提取加密元数据。
  2. 使用提取的元数据(一个小文件)通过 Elcomsoft Distributed Password Recovery 对密码发起攻击。
  3. 找到密码后,挂载磁盘卷或解密数据。

使用 Elcomsoft Forensic Disk Decryptor 提取加密元数据。

  1. 启动Elcomsoft取证磁盘解密器。
  2. 选择“提取/准备数据以进行进一步的密码恢复”。
  3. 打开包含 LUKS2 卷的物理设备或磁盘映像。
  4. EFDD 将显示加密卷列表。选择要从中提取加密元数据的卷。
  5. 单击“下一步”提取加密元数据并将其保存到文件中。

攻击密码。

虽然 LUKS2 密码禁止调用 GPU 能力进行破解,但注册版软件目前支持多达 10,000 台计算机用于使用 Elcomsoft 分布式密码恢复,利用 CPU 暴力攻击单个密码。如果算力资源有限也可以根据获得现有密码内容信息,采用字典加密码突变选项来进行靶向破解。可以参照以下步骤:

  1. 启动Elcomsoft Distributed Password Recovery。
  2. 打开在上一步中使用 Elcomsoft Forensic Disk Decryptor 获得的加密元数据的文件。
  3. 将显示可用的密钥插槽以及哈希迭代次数。指定要攻击的密钥槽。

4、配置并启动攻击。

暴力破解模式,破解时间较长而且需要大规模计算能力。我们可以根据现有资源搭建分布式集群服务器选择“brute force”选项配合字符串,开启高算力的暴力破解模式。

如果已知用户的现有密码是一个很好的起点。这些密码可以从用户的 Google 帐户、macOS、iOS 或 iCloud 钥匙串、Microsoft 帐户中提取,也可以简单地从用户的计算机中提取。我们可以采用字典攻击模式,配合相关密码变体。

如果我们想要破解强密码,需要配合突变选项“Mutations”,如下图例,选择级别和突变类型。

  • 大小写突变(Case):程序检查密码中任何字符的大写/小写字母的所有变体。
  • 顺序突变(Order):字符顺序颠倒(即密码变成drowssap),一个单词重复几次(passwordpassword);反转的单词可以添加到普通单词 (passworddrowssap) 中。
  • 元音突变(Vowels):元音可以省略 (psswrd) 或变大/变小 (pAsswOrd、PaSSWord)。
  • 剥离突变(Strip):删除一个字符,就像在 assword 或 pssword 中一样。
  • 交换突变(Swap):角色交换和改变位置(例如psasword)。
  • 重复突变(Duplicate):某些字符重复(ppassword、paassword)。

现在数字和特殊字符开始发挥作用:

  • 数字突变(Digit):在单词的开头或结尾添加数字(1passowrd、password2)。
  • 年份突变(Year):将年份添加到单词的末尾 (password2009)。
  • 边框突变(Border):可以在末尾或开头添加常用的数字和特殊符号组合,或两者兼而有之(password123、#password#、password007)。
  • 分隔符突变(Delimiter):在字符之间添加分隔符(例如 p.a.s.s.w.o.r.d、p-a-s-s-w-o-r-d)
  • 怪异的突变(Freak):字母被替换为外观相似的特殊符号,如p@ssw0rd或p@$$word。
  • 缩写突变(Abbreviation):用作单词替代品的常见缩写 (Umean2secure4hackers)。

利用掩码选项破解,是在已知密码字符的情况下,其他未知得字符用掩码掩盖。这样节约破译复杂程度和时间。例如,您知道密码包含8个字符,以“x”开头,以“99”结尾;其他符号是小写字母或大写字母。可以设置的掩码是“x????99”,后面字符集设置为“大写拉丁字母”和“小写拉丁字母”。有了这些选项,*EDPR*将尝试的密码总数将与您使用的5个字符密码相同,而不是包含数字;这比长度设置为8并且选中所有“字符组”复选框的情况要小得多,如下图示。

当然掩码字符是可以自定义,如果已知密码中有“?”字符,你就需要把这个掩码改成别的字符,再进行配置。

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

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

相关文章

Redis-实战篇-编码解决商铺查询的缓存穿透问题(缓存空对象)

文章目录 1、缓存穿透2、常见的解决方案有两种:2.1、缓存空对象2.2、布隆过滤器 3、编码解决商铺查询的缓存穿透问题3.1、queryById3.2、RedisConstants.java 1、缓存穿透 缓存击穿是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效…

Spring Boot中使用Feign进行HTTP请求

Spring Boot中使用Feign进行HTTP请求 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下如何在Spring Boot中使用Feign进行HTTP请求。 一、Fei…

【b站-湖科大教书匠】3 数据链路层-计算机网络微课堂

课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 3 数据链路层 3.1 数据链路层概述 3.1.1 数据链路层在网络体系结…

2024华为数通HCIP-datacom最新题库(变题更新⑤)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

Python的with语句与上下文管理器:深入解析与实战应用

Python的with语句与上下文管理器:深入解析与实战应用 在Python编程中,with语句是一个强大的特性,它提供了一种简洁的方式来管理资源,如文件、网络连接等。通过使用with语句,我们可以确保在代码块执行完毕后&#xff0…

Python中的enumerate函数:索引与值的完美搭档

Python中的enumerate函数:索引与值的完美搭档 在Python编程中,遍历列表、元组或其他可迭代对象时,我们经常会需要同时访问每个元素的索引和值。这时,enumerate()函数就显得尤为重要,它为我们提供了一个简洁而高效的方…

【项目管理体系】代码评审规范

1完整性检查 2一致性检查 3正确性检查 4可预测性检查 5健壮性检查 6结构性检查 7可追溯性检查 8可理解性检查 9可验证性检查 软件开发全套资料获取:(本文末个人名片直接获取) 软件产品,特别是行业解决方案软件产品不同于一般的商品…

JavaScript中常用数据类型做布尔值(Boolean)转换

一、前言 二、示例 1、String转Boolean 2、Number转Boolean 3、NaN、Null、undefined 转Boolean 4、Object转Boolean 5、Array转Boolean 6、Symbol转Boolean 三、总结 四、思考 一、前言 JavaScript中,经常需要对一些值进行boolean判断,根据判…

DDoS攻击的最新防御策略:从检测到缓解的全方位方案

在数字化浪潮的推动下,互联网已成为现代社会的血脉。然而,随着网络空间的不断膨胀,分布式拒绝服务(DDoS)攻击如同潜伏在暗处的猛兽,随时准备发动致命一击,威胁着网络的稳定与安全。面对这一严峻…

前端-echarts tooltip展示多项自定义数据

效果如图,鼠标滑动到某一个柱子的时候,出现这一项数据的多个自定义数据,外加自己的模板样式渲染。 希望能展示每一列中的多个自定义数据 代码部分 主要是在data中,value就是实际展示的主数据,其他字段名为自定义的数…

【面试系列】Swift 高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

ArUco 相关(opencv)

主要的问题还是随着opencv的版本升级,对aruco模块的函数命名变化挺大的,因此需要正确调用opencv对应版本下的aruco相关函数,不然程序无法运行,会报各种异常 在线ArUco工具 https://chev.me/arucogen/ 保存下来的是svg格式 环境 …

Linux常见操作问题

1、登录刚创建的用户,无法操作。 注:etc/passwd文件是Linux操作系统中存储用户账户信息的文本文件,包含了系统中所有用户的基本信息,比如用户名、用户ID、用户组ID、用户家目录路径。 注:etc: 这个目录存放所有的系统…

Android关机闹钟的实现原理以及基于高通的实现

最近新到了一家公司, 做手机的rom, 刚来被分配做改造DeckClock这个部分以便熟悉整个代码环境.里面包含闹钟, 世界时钟, 定时器, 秒表四块. 我们是基于OnePlus的rom的基础上进行修改. 当我看到产品说关机闹钟相关的东西的时候, 因为之前懂一些关于RTC的东西, 就说这个是要基于RT…

Java工具包——Lombok

目录 1. maven仓库手动导入依赖注解 1.1 maven仓库引入依赖 1.2 在类上使用Data注解 1.3 在属性上使用Getter与Setter注解 2. EditStarters插件注解 2.1 安装EditStarters插件 2.2 在pom.xml中进行操作 2.3 在java对象类中使用注解 3. lombok工具使用结果查看 3.1…

腾讯云CVM,CentOS8系统下部署Java-Web项目步骤详解

在CVM中部署项目首先要配置好JDK,Tomcat,Mysql(这里以Tomcat和Mysql为例)。部署JDK和Tomcat的步骤可以参考 CentOS7系统下部署tomcat,浏览器访问localhost:8080/_不积跬步,无以至千里;不积小流,无以成江河。-CSDN博客 我这里从Mysql的安装和设…

HDOJ5616 Jam‘s balance

目录 HDOJ5616 Jams balance题目描述背景输入输出 题解解法一解法二优化 打赏 HDOJ5616 Jam’s balance 题目描述 背景 有 N N N个已知质量的砝码,分别询问给出的 M M M个质量能否被称出 输入 第一行输入一个变量 T T T,表示有 T T T组数据&#xf…

数据预处理功能教程,上传文件生成知识库 | Chatopera

如何快速的生成高质量的知识库? 数据预处理功能教程 | Chatopera 云服务低代码定制聊天机器人 关于 Chatopera Chatopera 云服务重新定义聊天机器人,https://bot.chatopera.com 定制智能客服、知识库、AI 助手、智慧家居等智能应用,释放创新…

【java算法专场】双指针(上)

目录 前言 基本原理 对撞指针 快慢指针 移动零 算法思路 算法步骤 代码实现 算法分析 复写零 算法思路 算法步骤 代码实现 快乐数 算法思路 算法步骤 代码实现 盛最多水的容器 ​编辑算法思路 代码实现 前言 双指针是一种在数组或链表等线性数据结构中高效…

Unity使用Fmod的线程安全大坑!

对EventInstance设置回调函数时,回调函数内不能调用协程。否则会秒崩溃,并且不带任何报错! 协程在主线程中执行,但是事件回调是异步在音频线程中执行的 Event Callbacks 某些 EVENT_CALLBACK_TYPE 回调会在音频线程中执行,比如 …