KeePass CVE-2023-32784:进程内存转储检测

news2024/11/28 5:50:38

KeePass CVE-2023-32784:进程内存转储检测

KeePass 是一种流行的开源密码管理器,可以在 Windows、Mac 或 Linux 上运行。该漏洞允许从正在运行的进程的内存中以明文形式提取主密钥。主密钥将允许攻击者访问所有存储的凭据

强烈建议更新到KeePass 2.54以修复该漏洞

在本文将解释新漏洞 CVE-2023-32784,其工作原理以及当攻击者获得对系统的完全访问权限并执行其他技术来窃取凭据时如何检测此类攻击

Linux 内存中的凭证

在谈论Linux的凭证时,我们通常会想到/etc/shadow文件,但那并不是密码可能存储的唯一位置。许多进程也会将凭证存储在内存中,恶意工具会尝试提取这些凭证。例如,在下面描述的proc目录就是这种攻击类型的一个常见向量

来自Linux内核文档:
/proc目录包含(除其他内容外)系统上运行的每个进程都有一个子目录,以该进程ID(PID)命名。”

MITRE定义了对proc文件系统进行凭证获取的敌对行为称为操作系统凭证转储:Proc文件系统T1003.007

什么是 KeePass CVE-2023-32784?

CVE-2023-32784允许从内存转储中恢复明文主密码。内存转储可以是KeePass进程转储、交换文件(pagefile.sys)、休眠文件(hiberfil.sys)或整个系统的RAM转储

KeePass 2.X使用自定义开发的密码输入文本框SecureTextBoxEx。在这个CVE中被利用的漏洞是,每输入一个字符,就会在内存中创建一个剩余字符串。由于.NET的工作原理,一旦它被创建出来几乎不可能摆脱它。例如,当键入“Password”时,将产生以下剩余字符串: •a, ••s, •••s, ••••w, •••••o, ••••••r, •••••••d.第一个字符无法恢复

为了重现该场景,我们使用了18.04.1-Ubuntu和Linux上的KeePass 2.38版本。概念验证(PoC)基于此Github仓库,并且也是原始PoC的一部分

我们使用的 PoC 按照以下步骤提取 KeePass 密钥:

  • 首先,扫描所有/proc/<pid>/cmdline文件并存储带有关键字 KeePass 的文件的 pid
  • /proc/<pid>/maps然后,获取不与库直接关联的内存映射的地址
  • 最后,利用 . 将所有这些映射的内存存储到缓冲区中/proc/<pid>/mem。解析内存以尝试查找用户输入主密码时剩余的字符串,这些字符串依次为 •a、••s、•••s

Keepass CVE-2023-32784

正如我们在上图中看到的,主密钥在没有第一个字符的情况下被暴露

如何检测 KeePass CVE-2023-32784

为了检测这种类型的攻击,我们应该能够监控/proc未知进程对文件夹的访问。这将触发警报,我们可以进一步调查。

在这种情况下,我们需要调整策略 从/proc文件中读取环境变量或创建一个新的**

为了正确触发此规则,我们应该修改条件以捕获PoC 中用于获取 KeePass 主密码的/proc/<pid>/cmdline/proc/<pid>/maps或 的读取。/proc/<pid>/mem

- rule: Dump memory detection
  desc: An attempt to read process environment variables from /proc files
  condition: >
    open_read and container and (fd.name glob "/proc/*/mem" or fd.name glob "/proc/*/maps")
  output: >
    Detected process memory dump to search for credentials (proc.name=%proc.name 
proc.pname=%proc.pname fd.name=%fd.name container=%container.info evt.type=%evt.type 
evt.arg.request=%evt.arg.request proc.pid=%proc.pid proc.cwd=%proc.cwd proc.ppid=%proc.ppid 
proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline)<small>
<span class="shcb-language__paren"></span></small>

通过这条新策略,我们能够检测到 CVE-2023-32784 的利用

Keepass CVE-2023-32784

该告警包含我们继续调查威胁所需的所有信息

10:47:47.232147057: Warning Detected process memory dump to search for credentials 
(proc.name=dump proc.pname=sudo fd.name=/proc/2859/mem container=host (id=host) 
evt.type=openat evt.arg.request=<NA> proc.pid=2916 
proc.cwd=/home/kpdemo/CVE-2023-32784-keepass-linux/ proc.ppid=2915 
proc.cmdline=dump proc.pcmdline=sudo ./dump gparent=bash ggparent=gnome-terminal- 
gggparent=systemd proc.sid=2802 
proc.exepath=/home/kpdemo/CVE-2023-32784-keepass-linux/dump user.uid=0 
user.loginuid=1000 user.loginname=kpdemo user.name=root group.gid=0 group.name=root 
container.id=host container.name=host image=<NA>)<small>
<span class="shcb-language__paren"></span></small>

正如漏洞利用中所述,如果攻击者在您的计算机中拥有足够的权限和能力,则攻击者可能能够执行任何恶意操作。然而,这条策略可以让我们知道我们的凭据是否被破坏并采取相应的行动

更多转储进程内存的工具

如果我们对此类技术进行更多研究,我们会发现还有其他工具可以执行类似的操作。让我们看看几个以及如何以相同的方式检测它们

Mimipenguin

Mimipenguin 2.0是一个转储当前 Linux 桌面用户登录密码的工具。它改编自流行的 Windows 凭据窃取工具 mimikatz 背后的想法

Keepass CVE-2023-32784

该工具尝试执行类似于 KeePass PoC 的操作,但在这种情况下,它找不到密钥(因为未实现 CVE)。但是,它能够获取系统凭据。在上图中,我们可以看到两个警报;第一个是检测对/proc/<pid>/mem

10:56:59.508184318: Warning Detected process memory dump to search for credentials 
(proc.name=python proc.pname=sudo fd.name=/proc/1114/mem container=host (id=host) 
evt.type=openat evt.arg.request=<NA> proc.pid=7194 proc.cwd=/home/kpdemo/mimipenguin/ 
proc.ppid=7193 proc.cmdline=python mimipenguin.py proc.pcmdline=sudo python 
mimipenguin.py gparent=bash ggparent=gnome-terminal- gggparent=systemd 
proc.sid=2802 proc.exepath=/usr/bin/python user.uid=0 user.loginuid=1000 
user.loginname=kpdemo user.name=root group.gid=0 group.name=root container.id=host 
container.name=host image=<NA>)<small><span class="shcb-language__paren"></span></small>

第二个是它/etc/shadow从提取用户密码的地方获取访问权限

10:57:52.447428441: Warning Sensitive file opened for reading by non-trusted program 
(user=root user_loginuid=1000 program=python command=python mimipenguin.py pid=7194 
file=/etc/shadow parent=sudo gparent=bash ggparent=gnome-terminal- gggparent=systemd 
container_id=host image=<NA>)<small><span class="shcb-language__paren"></span></small>

LaZagne

LaZagne是一个开源应用程序,用于检索本地计算机上存储的大量密码。在这种情况下,它不仅关注内存,还使用不同的技术(纯文本、API、自定义算法、数据库等)搜索凭证

Keepass CVE-2023-32784

在此示例中,我们再次收到检测到访问的警报,并且该工具向我们显示它已找到用户的密码和我们保存的 KeePass 数据库

11:14:02.074516511: Warning Detected process memory dump to search for credentials 
(proc.name=python proc.pname=sudo fd.name=/proc/1114/maps container=host (id=host) 
evt.type=openat evt.arg.request=<NA> proc.pid=7253 
proc.cwd=/home/kpdemo/LaZagne/Linux/ proc.ppid=7252 proc.cmdline=python laZagne.py 
all proc.pcmdline=sudo python laZagne.py all gparent=bash ggparent=gnome-terminal- 
gggparent=systemd proc.sid=2802 proc.exepath=/usr/bin/python user.uid=0 
user.loginuid=1000 user.loginname=kpdemo user.name=root group.gid=0 group.name=root 
container.id=host container.name=host image=<NA>)<small>
<span class="shcb-language__paren"></span></small>

最后

收集凭据是攻击者非常常用的技术。需要拥有所有必要的工具来检测这些类型的操作,以防止它们横向移动或影响其他服务

mall>


## 最后

收集凭据是攻击者非常常用的技术。需要拥有所有必要的工具来检测这些类型的操作,以防止它们横向移动或影响其他服务

最后,我们强烈建议升级到新版本KeePass 2.54

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

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

相关文章

LC-环形链表

LC-环形链表 链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle/ 描述&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 思路&#xff1a;如果一个链表有环&#xff0c;当它进入环之后&#xff0c;就会沿着环一直走&#xff0c;这时…

断路器分合闸速度试验

试验目的 高压断路器的分、 合闸速度是断路器的重要特性参数, 反映出断路器的操动机构 与传动机构在分、 合闸过程中的运动特征。 断路器分、 合闸速度超出或者低于规定值 均会影响断路器的运行状态和使用寿命。 断路器合闸速度不足, 将会引起触头合闸振颤, 预击穿时间过长。 断…

SCAU操作系统知识点之(十)多处理器、多核和实时调度

1、多处理器系统中&#xff0c;采用简单的FCFS或“静态优先级FCFS”调度算法就足够了 2、实时任务分类&#xff1a;硬、软&#xff0c;周期性、非周期性 _例&#xff1a;__A_____优先权是在创建进程时确定&#xff0c;之后不再改变。 A. 静态 B. 短作业 C. 先来先服务 D. 时间片…

未来混合动力汽车的发展:技术探索与前景展望

随着环境保护意识的增强和对能源消耗的关注&#xff0c;混合动力汽车成为了汽车行业的研发热点。混合动力汽车融合了传统燃油动力和电力动力系统&#xff0c;通过优化能源利用效率&#xff0c;既降低了燃油消耗和排放&#xff0c;又提供了更长的续航里程。本文将探讨混合动力汽…

【从零开始学习JAVA | 第四十五篇】反射

目录 前言&#xff1a; ​反射&#xff1a; 使用反射的步骤&#xff1a; 1.获取阶段&#xff1a; 2.使用阶段&#xff1a; 反射的应用场景&#xff1a; 使用反射的优缺点&#xff1a; 总结&#xff1a; 前言&#xff1a; Java中的反射是一项强大而灵活的功能&#xff0…

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯 问题解决办法将引擎内插件拷贝到工程目录下修改插件代码蓝图接口使用 问题 Unreal Engine内嵌WebBrowser插件可以通过调用ExecuteJavascript接口执行js代码&#xff0c;但无法从JS调用Blueprint蓝图函数 解决办法 …

C#,数值计算——抛物线插值与Brent方法(Parabolic Interpolation and Brent‘s Method)的计算方法与源程序

using System; namespace Legalsoft.Truffer { /// <summary> /// 抛物线插值与Brent方法 /// Parabolic Interpolation and Brents Method /// </summary> public class Brent : Bracketmethod { public double xmin { get; set…

你的服务器安全吗?--服务器防渗透

1、概述 在本人所处的公司的服务器正式遭到黑客攻击之前&#xff0c;一直都以为 黑客 是个遥不可及的词&#xff0c;直到真正成为了受害者时&#xff0c;才猛然意识到安全的重要性。有一些基本经验和心得总结出来&#xff0c;和同行分享一下吧。 2、暴破手段 最粗暴的黑客行为…

chrome V3 插件开发 基础

目录 准备popup通信popup 发消息给 backgroundpopup 发消息给 content长期连接 如何页面上添加一个按钮&#xff1f;tabs.onUpdatedcontent-script.jsinject.js 右键菜单chrome.contextMenus举个例子添加关于报错&#xff08;cannot create item with duplicate id XXX&#xf…

❤ VUE3 项目路由拦截器配置(二)

❤ VUE3 项目 路由拦截器进一步 配置 路由拦截抽离为单个模块permission.ts 路由配置规则 白名单&#xff08;直接进入&#xff09; PC页面和PC子页面&#xff08;直接进入&#xff09; 后台页面&#xff08;验证token &#xff09; 没有token> 后台登录页面 有token> 后…

12.Eclipse导入Javaweb项目

同事复制一份他的项目给我ekp.rar (懒得从SVN上拉取代码了)放在workspace1目录下 新建一个文件夹 workspace2,Eclipse切换到workspace2工作空间 选择Import导入 选择导入的项目(这里是放到workspace1里面) 拷贝一份到workspace2里面 例子 所有不是在自己电脑上开发的web项目…

C语言案例 球落地反弹-10

题目&#xff1a;一球从100米高度自由落下&#xff0c;每次落地后反跳回原高度的一半;再落下&#xff0c;求它在第10次落地时&#xff0c;共经过多少米第10次反弹多高&#xff1f; 程序分析 球在落地后会反弹为原高度的一半&#xff0c;若设高度为h&#xff0c;那么每次落地的…

Python(八十)字符串的常用操作——字符串的劈分

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

思维导图在职业规划中的应用:从职业选择到职业发展的思维导图

职业规划的重要性 在我们进行职业选择的时候&#xff0c;一个有效的职业规划&#xff0c;会对我们的未来有很大的帮助作用。一个好的职业规划可以帮助我们通过认识自己的兴趣、价值观、技能以及优势&#xff0c;找到适合自己的领域。并做出合理有效的职业选择。有了明确的职业目…

打靶练习:WestWild 1.1(一个简单但不失优雅的Ubuntu靶机)

主机发现和nmap信息收集 //主机发现 sudo nmap -sn 192.168.226.0/24 //扫描整个C段//端口扫描//初步扫描 sudo nmap -sT --min-rate 10000 -p- 192.168.226.131 -oA nmapscan/ports //用TCP的三次握手&#xff0c;以速率10000扫描1-65535端口&#xff0c;扫描结果以全格式…

【CSS】CSS 布局——常规流布局

<h1>基础文档流</h1><p>我是一个基本的块级元素。我的相邻块级元素在我的下方另起一行。</p><p>默认情况下&#xff0c;我们会占据父元素 100%的宽度&#xff0c;并且我们的高度与我们的子元素内容一样高。我们的总宽度和高度是我们的内容 内边距…

制造业企业数字化转型之设备数据采集

导 读 ( 文/ 1894 ) 随着信息技术的快速发展和制造业的转型升级&#xff0c;企业数字化转型已成为保持竞争力和实现可持续发展的关键。在数字化转型过程中&#xff0c;设备数据采集作为重要的一环&#xff0c;发挥着关键的作用。设备数据采集通过收集、分析和利用设备所产生的数…

企业中商业智能BI,常见的工具和技术

商业智能&#xff08;Business Intelligence&#xff0c;简称BI&#xff09;数据可视化是通过使用图表、图形和其他可视化工具来呈现和解释商业数据的过程。它旨在帮助组织更好地理解和分析他们的数据&#xff0c;从而做出更明智的商业决策。 常见的商业智能数据可视化工具和技…

Python+Selenium+Unittest 之selenium11--WebDriver操作方法1-常用操作

目录 1、send_keys("输入的内容") &#xff08;输入文字&#xff09; 2、clear() (清除元素内的内容) 3、click()&#xff08;点击元素&#xff09; 4、quit()关闭浏览器 5、refresh()&#xff08;刷新浏览器页面&#xff09; 6、set_window_size()和用 maxim…

计时器setTimeout()函数、setInterval()函数

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f3c5;计时器setTimeout&#xff08;函数名&#xff0c;延迟时间&#xff09;结束计时器setTimeout &#x1f3c5;计时器setInterval&#xff08;函数名&#xff0c;延迟时间&a…