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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习基础之《特征工程(4)—特征降维》

一、什么是特征降维 降维是指在某些限定条件下&#xff0c;降低随机变量&#xff08;特征&#xff09;个数&#xff0c;得到一组“不相关”主变量的过程 1、降维 降低维度 ndarry 维数&#xff1a;嵌套的层数 0维&#xff1a;标量&#xff0c;具体的数0 1 2 3... …

认识http的方法、Header、状态码以及简单实现一个http的业务逻辑

文章目录 http的方法http状态码http重定向http常见Header实现简单业务逻辑Protocol.hppUtil.hppServer.hppServer.cc 效果 http的方法 方法说明支持的HTTP版本GET获取资源1.0/1.1POST传输实体主体1.0/1.1PUT传输文件1.0/1.1HEAD获得报文首部1.0/1.1DELETE删除文件1.0/1.1OPTIO…

【将回声引入信号中】在语音或音频文件中引入混响或简单回声,以研究回声延迟和回波幅度对生成的回波信号感知的影响(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【杨辉三角的两种解法——(超级详细)】

杨辉三角 1.杨辉三角简介&#x1f575;️ 杨辉三角&#xff0c;是二项式系数在三角形中的一种几何排列。在欧洲&#xff0c;这个表叫做帕斯卡三角形。帕斯卡&#xff08;1623----1662&#xff09;是在1654年发现这一规律的&#xff0c;比杨辉要迟393年&#xff0c;比贾宪迟600…

分布式 - 消息队列Kafka:Kafka消费者的分区分配策略

文章目录 1. 环境准备2. range 范围分区策略介绍3. round-robin 轮询分区策略4. sticky 粘性分区策略5. 自定义分区分配策略 1. 环境准备 创建主题 test 有5个分区&#xff0c;准备 3 个消费者并进行消费&#xff0c;观察消费分配情况。然后再停止其中一个消费者&#xff0c;再…

fastadmin 自定义搜索分类和时间范围

1.分类搜索&#xff0c;分类信息获取----php 2.对应html页面&#xff0c;页面底部加搜索提交代码&#xff08;这里需要注意&#xff1a;红框内容&#xff09; 图上代码----方便直接复制使用 <script id"countrySearch" type"text/html"><!--form…

python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制

目录 绘制简单的折线图1.1 修改标签文字和线条粗细1.2 校正图形1.3 使用内置样式1.4 使用scatter()绘制散点图并设置样式1.5 使用scatter()绘制一系列点1.6 python循环自动计算数据1.7 自定义颜色1.8 使用颜色映射1.9 自动保存图表练习题 绘制简单的折线图 绘制一个简单折线图…

GPT-3.5 人工智能还是人工智障?——西红柿炒钢丝球!!

人工智能还是人工智障&#xff1f;——西红柿炒钢丝球 西红柿炒钢丝球的 基本信息西红柿炒钢丝球的 详细制作方法材料步骤 备注幕后花絮。。。。。。。。。关于GPT-3.5&#xff0c;你的看法&#xff1a; 西红柿炒钢丝球的 基本信息 西红柿炒钢丝球是一道具有悠久历史的传统中式…

springboot汽车租赁后台java出租客户管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 springboot汽车租赁后台 系统有1权限&#xff1a;管理…

阿里巴巴面试题---考察对底层源代码的熟悉程度

题目如图所示: 很多人可能会觉得两个输出都会是false,因为我们都会觉得""比较的是引用类型的地址,虽然放入的值都一样但是重新创造了新对象,地址不一样,所以结果都是false. 然而,当我们运行程序会发现结果都是false. 下面,我们来分析为什么是这样的结果. 我们知道…

OneFlow 中的 Softmax

Softmax 是深度学习模型中的常见算子。PyTorch 的 Softmax 算子直接调用 cuDNN 的接口。而 OneFlow 内部针对输入数据的类别数量&#xff0c;采用3个 kernel 来分别处理&#xff0c;在多数情况下都可以获得比 cuDNN 更优的性能表现。测试结果可见 如何实现一个高效的Softmax CU…

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

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

配置docker,案例复现

配置docker(系统为centos) 1.检查操作系统环境: docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安装docker 2.查看你是否拥有旧的版本&#xff0c;有的话卸载&#xff0c;没有的话直接略过该步骤 sudo yum remove d…

【快应用】list组件属性的运用指导

【关键词】 list、瀑布流、刷新、页面布局 【问题背景】 1、 页面部分内容需要瀑布流格式展示&#xff0c;在使用lsit列表组件设置columns进行多列渲染时&#xff0c;此时在里面加入刷新动画时&#xff0c;动画只占了list组件的一列&#xff0c;并没有完全占据一行宽度&…

“解锁IDEA的潜力:高级Java Maven项目配置指南”

目录 前言&#xff1a;流程目录&#xff1a;1.确保Java和Maven已安装检查Java是否已正确安装并配置环境变量 2.创建一个新的Maven项目导航到要创建项目的目录配置Maven运行以下命令创建一个新的Maven项目 3.配置项目的pom.xml文件打开项目根目录下的pom.xml文件配置Web.xml 4.配…

案例13 Spring MVC参数传递案例

基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。 1. 创建项目 选择Maven快速构建web项目&#xff0c;项目名称为case13-springmvc02。 2. 配置Maven依赖 <?xml version"1.0" encoding"UTF-8&quo…

Vue2(生命周期,列表排序,计算属性和监听器)

目录 前言一&#xff0c;生命周期1.1&#xff0c;生命周期函数简介1.2&#xff0c;Vue的初始化流程1.3,Vue的更新流程1.4&#xff0c; Vue的销毁流程1.5&#xff0c; 回顾生命周期1.,6&#xff0c;代码演示1.6-1&#xff0c;beforeCreate1.6-2&#xff0c;created1.6-3&#xf…

9.2.1Socket(UDP)

一.传输层: 1.UDP:无连接,不可靠,面向数据报,全双工. 2.TCP:有连接,可靠,面向字节流,全双工. 注意:这里的可不可靠是相对的,并且和安不安全无关. 二.UDP数据报套接字编程: 1.socket文件:表示网卡的这类文件. 2.DatagramPacket:表示一个UDP数据报. 三.代码实现: 1.回显服务…

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输&#xff08;*&#xff09; 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…

自动驾驶——驶向未来的革命性技术

自动驾驶——驶向未来的革命性技术 自动驾驶的组件自动驾驶的优势自动驾驶的应用自动驾驶的未来中国的自动驾驶 自动驾驶是一种技术&#xff0c;它允许车辆在没有人类驾驶员的情况下自主地进行行驶。它利用各种传感器、计算机视觉、人工智能和机器学习算法来感知和理解周围环境…