通过第三方软件收集用户凭据key密钥文件服务器

在软件行业,可用性和安全性一直是个矛盾。许多第三方程序可以通过存储用户的凭据方便用户使用。然而,事实证明,这种便利通常是以安全性性为代价的,从而导致密码被盗的风险。以这种方式收集的凭据可以在实际的网络攻击期间使用。

很明显,凭据盗窃是很危险的。但是,有必要强调凭据盗窃可能产生的影响规模。

许多人倾向于在不同的程序中使用相同的密码,并且很少更改他们的密码。到了修改密码的时候,许多人都遵循可预测的模式。

因此,当攻击者可以从一个来源获得密码时,他们可以尝试使用它来攻击其他资源,包括一些更受保护的资源。因此,对于每个安全的程序 A,用户可以在不太安全的程序 B 上使用相同的密码或模式,这可能导致程序 A 的安全性降低。

此外,如果发现有人在其他不太安全的地方使用他们的操作系统密码,那么攻击者就会打开一个全新的可能性世界。

例如,假设某人 X 对他的 Windows 帐户域和 Linux FTP 文件服务器使用相同的密码。在这种情况下,X用户使用常用程序WinSCP在文件服务器上管理自己的文件。尽管 WinSCP 建议不建议保存密码,但是X用户每周都会访问这个文件服务器,所以他们更愿意节省时间,保存密码。

WinSCP 不建议保存密码

正如我们稍后将演示的那样,用户的密码可以很容易地从WinSCP存储密码的地方获取。可以在 X 的个人计算机上立足的攻击者可以获得他们的域帐户密码,只是因为它被不安全地保存了。最重要的是,密码对于连接到文件服务器是有效的。该文件服务器可能包含攻击者现在可以访问的敏感信息文件。那样,攻击者可以使用像 BloodHound 这样的工具来估计他们可以在一个组织内传播多远。

WinSCP是常用的一种SFTP客户端和FTP客户端,用于在Windows本地计算机和远程服务器之间通过FTP、FTPS、SCP和SFTP复制文件。

凭据存储在哪里?

WinSCP将加密后的用户密码存储在如下所示的注册表项下的一个名为 Password 的值中。

如何恢复凭据?

WinSCP工具对用户密码的位数进行对称数学运算。它获取密码的每个字节,计算0xFF(11111111)的补码,然后用字节0xA3(10100011)对其进行异或运算。

加密过程包括找到补码并执行一次异或运算。然后将密码存储在密码注册表值中。由于这些数学运算是对称的,我们需要做的就是以相反的顺序再次执行相同的两个运算,以获得原始值。

例如,让我们以一个常用的密码为例:Aa123456。“1D3D6D6E6F68696A”密码在WinSCP工具上的存储方式如下。

在下图中,我们看到了解密密码的步骤:

解密存储在 WinSCP 中的密码

密码与主机名和用户名一起保存。要从密码注册表值中获取它,我们必须找到密码开头的索引。这个计算非常简单,根据WinSCP版本,注册表值的第一个或第三个字节是连接的用户名、主机名和密码的长度。起始索引是长度的下一个字节,其值乘以 2。长度和起始索引都以相同的方式加密。

主机名和用户名也保存在不同的注册表值上,因此我们知道它们的长度和值。我们所做的就是从索引中解密密码注册表的值:开始索引+用户名长度+主机名长度,我们就会得到我们的密码。

连接的用户名、主机名和密码的位置

野外利用

我们已经看到在多个客户环境中执行了以下脚本:

可疑的PowerShell编码命令

-enc表示EncodedCommand,这意味着将使用一个base-64编码的字符串作为命令。

在解码的脚本中,我们可以看到尝试解密 WinSCP 密码:

用于提取和解密 WinSCP 密码的 PowerShell 脚本

Cortex XDR阻止了读取存储在WinSCP中的密码的尝试

凭据存储在哪里?

Git 允许同时使用密码和个人访问令牌 (PAT)。

使用这个命令,Git将以纯文本的形式无限期地将用户的凭据保存在磁盘上。

可能包含密码的文件:

Git 允许使用 PAT 作为凭据,而不是传统的密码使用。这些令牌更加模块化,因为可以创建任意数量的访问令牌,每个令牌具有不同的权限和过期日期。

这些标签也以明文形式出现在上面提到的相同文件中。

如何恢复凭据?

测试版本:2.83

RDCMan可以管理多个远程桌面连接。它对于管理需要定期访问计算机的服务器实验室非常有用,比如自动签入系统和数据中心。

凭据存储在哪里?

这个文件是一个XML文件,包含关于每个RDP连接的通用元数据。在这些数据中,有一个名为CredentialsProfiles的XML标签引起了我们的注意。

我们可以看到,在这个标签下,还有另一个名为CredentialsProfiles的标签,其中还有credentialsProfile XML标签,以及一个 Password 标签。

如何恢复凭据?

要检索密码,我们必须在使用RDCMan程序的用户的上下文中执行命令。这是因为密码是使用数据保护API (DATA Protection API, DPAPI)保存的,该 API 可以分别使用CryptProtectData和CryptUnprotectData函数对任何类型的数据进行对称加密和解密。

因此,为了获得密码,我们需要调用CryptUnprotectData函数。

尽管从 RDCMan 收集凭据需要攻击者采取比我们其他一些示例中所需的额外步骤,在相关用户的上下文中运行软件,但结果对攻击者来说具有很大的价值。如果成功,攻击者就有可能获得该特定用户连接到的所有计算机的所有用户和密码。

一旦攻击者能够在用户的上下文中执行命令,为了收集凭据,剩下要做的就是:

使用 base64 解码标签中的字符串;

使用解码的密码字符串调用 CryptUnprotectData;

删除不必要的空字符;

看看上面的例子,保存在文件中的密码是:

AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA8/nnW5aFNUi0AKiTG4y9UQAAAAACAAAAAAAQZgAAAAEAACAAAADIjLLw0X4z9RDdWgPpqabLU7hTcJ1HVlFklpzX3eA14QAAAAAOgAAAAAIAACAAAAB01OvDCNCjaEhrq8J8hRm/SKycef7nR52ZkqcPLJqMsCAAAACg2htaeRsutDziS3FISeEAg3DsBpGxBGpPeWlUSVnXOkAAAAB5Tei9g5KWcVIhOKQ2cXxr5ONUOHMEEH5h3Lmp12mPlWaaZ6y8dGIVz8WnNKr4e73dhqNU8NyzI7RZBamS6DG6

解密后的密码是Aa123456。

从RDCMan中恢复密码

测试版本:2.5.029。

OpenVPN 是一个虚拟专用网络系统,它实现了在路由或桥接配置和远程访问设施中创建安全的点对点连接的技术。

凭据存储在哪里?

OpenVPN 将用户的密码存储在如下所示的注册表项下的一个名为 auth-data 的值中。

如何恢复凭据?

OpenVPN还使用了DPAPI机制,并附加了可选的熵参数(可以设置为 NULL)。

当在加密阶段使用可选的熵DATA_BLOB结构时,必须在解密阶段使用相同的DATA_BLOB结构。

在OpenVPN的情况下,熵保存在一个名为熵的注册表值中。熵注册值也存储在如下路径。

因此,使用来自 auth-data 和 熵(来自熵)的密码调用 CryptUnprotectData 将为我们提供会话密码。

熵注册表值包含一个额外的字节00,所以我们只需要省略它。

测试版:

Google Chrome——测试版本:103.0.5060.53(官方版本)(64 位);

Microsoft Edge——测试版本:103.0.1264.37(官方版本)(64 位);

Opera——测试版本:88.0.4412.53;

Chromium 项目包括 Chromium,它是 Google Chrome 浏览器背后的开源项目。

在典型的使用例程中,许多人倾向于在上网时保存密码。

Google Chrome 版本 102.0.5005.115(官方版本)(64 位)保存的密码

凭据存储在哪里?

在使用基于 Chromium 的浏览器(如 Microsoft Edge、Opera 或 Google Chrome)时,密码被加密位于 SQLite 数据库文件中,通常称为登录数据。

用于加密密码的密钥位于父文件夹中的名为本地状态的 JSON 文件中。

例如:

区域位置:

Google Chrome: %localappdata%\google\chrome\user data\local state

Microsoft Edge: %localappdata%\microsoft\edge\user data\local state

Opera: %appdata%\opera software\opera stable\local state

如何恢复凭据?

登录数据库中的每个密码都使用高级加密标准 (AES) 以 GCM 模式进行加密。AES GCM是一种对称加密方法,因此相同的密钥对加密和解密都有效。AES算法对每个128位数据块使用不同的密钥,该密钥基于前一个块的计算。对于第一个块,可以选择使用初始化向量 (IV)。

要解密基于 Chromium 的浏览器保存的密码,我们需要:

加密的密码;

初始化向量;

AES 密钥;

让我们看看如何检索它们:

加密密码

初始化向量

位于相同的 password_value 字段列中,从第 3 位的字母到第 15 位的字母。[3:15]

AES密钥

写在本地状态 JSON 文件中,在密钥 os_crypt 和 encrypted_key 下,用 base64 解码。

基于 Chromium 的浏览器使用 DPAPI 机制保存 AES 密钥,因此要获取它,我们必须从 base64 解码它并在用户的上下文中使用 CryptUnprotectData。

来自谷歌Chrome的示例:

保存在 Google Chrome 本地状态 JSON 文件中的密码

它以五个字母开头的前缀保存:DPAPI。

保存在 Google Chrome 中的解码密码

如果攻击者能够在用户的上下文中运行,那么完成收集用户凭据所需要做的就是:

从本地状态JSON文件中获取AES GCM密钥;

解码(base64),解密(CryptUnprotectData)并从密钥中删除填充;

用于恢复 Chrome 中保存的密码的 POC

你可以阅读有关如何在 Python 中提取 Chrome 密码的更多信息。

野外利用

在一系列操作之后,最终的有效负载试图访问 Microsoft Edge 凭据文件:

本地状态文件(包含加密密钥)如下所示:

Cortex XDR 检测到读取保存在 Microsoft Edge 浏览器中的密码的尝试

测试版本:Firefox 版本 101.0.1(64 位)

使用其他浏览器(例如 Mozilla Firefox)时,密码保存行为模式也很重要。

Firefox 版本 101.0.1(64 位)保存的密码

凭据存储在哪里?

与基于 Chromium 的浏览器类似,在 Mozilla Firefox 浏览器中,每个配置文件也有自己的密码文件。

用户名和密码均以加密方式保存。

如何恢复凭据?

因此,如果攻击者能够获得在同一台计算机上运行的权限,那么窃取密码的过程将是:

将每个输入存储在一个 SecItem 对象中,该对象稍后在整个 NSS 中用于来回传递二进制数据块;

创建用于输出的 SecItem 对象;

与基于 Chromium 的浏览器的情况不同,攻击者不必在用户的上下文中运行以获取用户的密码,而是可以利用任何有权访问目标用户的文件系统配置文件的用户。

用户 S 获得了属于用户 D 的密码,这些密码保存在 Firefox 配置文件 2 中

我们已经看到执行了以下脚本:

可疑的混淆 PowerShell 脚本

解码后:

反混淆的 PowerShell 脚本

脚本:

创建文件夹%localappdata%\ujXgAD;

在第一次成功执行后中断;

请注意,路径中有一个规避:通过使用 \..\ 返回本地文件夹,攻击者避免直接访问它。

Systeminfo——列出计算机信息;

ipconfig /all——列出计算机上的所有网络接口;

其中一个有一个新的随机名称,但仍由 Microsoft 签名;

另一个是 certutil 的修改版本,它保留了原始名称,但具有不同的功能,并且没有签名;

4.上述步骤 C 进行两次。

未签名文件 SHA256:

A88C344F3F80F8A3EA2E9BA0687FEBCEE2A730FD9AC037D54C4FD21C0AB91039

Certutil SHA256(请注意,此文件是良性的):

D252235AA420B91C38BFEEC4F1C3F3434BC853D04635453648B26B2947352889

检查上图中的链接时,只有两个链接有效:

能够下载的 DLL

首先下载的DLL:

hxxps://www[.]yell[.]ge/nav_logo/AEnTP/

(SHA256:A1D513E4A5C83895E5769C994C4D319959EF5AE3F679CE6C0C5211B5BECA7695)

第二次下载的DLL:

hxxps://yakosurf[.]com/wp-includes/S/

(SHA256:1B8638333751EFCB6B5332C801C11DF0DE3D7077C6ACEA1D663C0302519D7172)

在这两种情况下,它实际上是同一个 DLL,除了改变 SHA256 哈希值的微小差异。

通过查看此样本,我们将第一个 DLL 确定为 Emotet 恶意软件家族的一部分。

Cortex XDR阻止了读取保存在Firefox浏览器中的密码的尝试

Cortex XDR 同步停止此操作,因此不会执行下一个攻击阶段。该恶意软件尝试按以下顺序读取密码:首先是 Firefox,然后是 Microsoft Edge,然后是 Google Chrome。

为了演示,我们将使用报告模式说明 Cortex XDR。我们将看到凭据收集保护模块还检测到读取基于 Chromium 的浏览器保存的密码的尝试。

Cortex XDR 检测到读取保存在 Microsoft Edge 浏览器中的密码的尝试

Cortex XDR 检测到读取保存在 Google Chrome 浏览器中的密码的尝试

由于我们看到了两个涉及 Emotet 的不同案例,因此我们更深入地研究了这个恶意软件家族及其用于第三方凭据收集的方法。我们看到,有时恶意软件甚至不需要自己实现所有逻辑条件。它可以包装现有工具,例如 WebBrowserPassView Nirsoft 工具,以显示 Web 浏览器存储的密码。

事实证明,某些第三方软件存储凭据的方式不如我们想象的安全。大多数这些程序通过文件或注册表值将用户凭据存储在本地磁盘上。这一事实可能是攻击者希望找到的链中的一个弱点,使他们能够对组织实施攻击。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

THE END
0.Chrome书签大变样!Pintree带你开启全新导航体验保留网站图标:导出的 JSON 文件会保留网站的小图标(favicon),让书签信息更加完整。下次查看书签文件时,看到熟悉的图标,能更快识别对应的网站。 文件结构有序:导出的 JSON 文件结构清晰,易于管理和查看。即使书签数量众多,也能轻松找到所需内容,不会出现混乱无序的情况。 打造个人书签导航站:在导出 JSON 文件后,你可以利用 Pintree开源jvzq<84yyy4489iqe0ipo8hqpvkov8771274386;1:764;=2:a726>;796:40|mvon
1.json格式文件肿么打开,用什么软件,手机上用什么软件?求大神告知json格式文件肿么打开,用什么软件,手机上用什么软件?求大神告知。手机 捷盛 查看全部7条评论回答 写回答 z89185672f 这个是代码编辑文件,JS文件的变种,用记事本就可以打开,乱码是正常的。 有用(0) 回复 举报 相关问题 手机数字密码锁了 密码忘记了打不开怎么办 我的手机是魅族JS4 求解锁 9036 浏览 2jvzquC41ycv/|xq0eqs/ew4cum5eg}fknue29;9496e48>5;35e40qyon
2.VSCode打开并配置settings.json文件的技巧编程开发软件教程使用VSCode时,需要在settings.json 里进行设置,现记录打开settings.json 文件的方式,详细请看下文介绍。 Visual Studio Code 64位 v1.99.3 官方最新安装版 类型:编程工具 大小:102MB 语言:简体中文 时间:2025-04-17 查看详情 1、直接打开 settings.json 文件 jvzquC41yy}/lk:30pku1|thvli09<55584ivvq
3.如何通过labelme标注将json文件转为png的label3、安装完成后,直接输入labelme,打开labelme软件即可 代码语言:javascript 代码运行次数:0 运行 AI代码解释 labelme 至于怎么使用就不说了,应该很简单,保存crtl+s保存的是json文件 下面说说如何将json文件转为png的label 2、文件转换 首先要注意的是,有些该导入的包还是要自己先导入的,比说说什么pillow等。下载的jvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk03A895:6
4.PhpStorm2021下载Ctrl+ALT+S 打开 Settings -> Plugins ,搜索Chinese安装,然后重启即可 更新内容 一、开箱即用的composer.json支持 轻松管理依赖关系:所有操作现在都在composer.json文件的编辑器中可用。 1、管理依赖 我们已经弃用了旧的“ 管理依赖项”对话框,因为从composer.json文件内部处理软件包要容易得多。 要添加新程序包,您jvzq<84yyy4xkw|kp94dqv4uqhz06=:570nuou
5.泰拉瑞亚种子地图怎么用种子地图使用方法教程泰拉瑞亚种子地图用法是首先找到Terraria存档文件夹里的configjson文件,使用记事本软件打开此文件,然后用查找工具找到UseExperimentalFeatures,将false改为true点击保存,即可使用种子功能。 泰拉瑞亚种子地图怎么用 泰拉瑞亚种子地图使用方法教程 1、 找到Terraria存档文件夹里的config.json文件 打 jvzquC41o0793A80eqs0vuw{14633:7159<83@>0jvsm
6.超详细的基础QMK键盘固件制作教程(Windows版)安装完成后我们打开软件所在路径,我的是C:\msys64 ps.注意不是安装完成后让你打开的那个窗口,那个不一样 如果是国内用户在这之前最好换一下源,为了提高下载速度 我的包含源的文件的路径是C:\msys64\etc\pacman.d 如果添加清华源, 修改mirrorlist.msys,在最上面增加一行 jvzquC41yy}/|owqpvoft7hqo1gqr8knqy53SaiO5IPLiKp
7.diyhome2.7教程diyhome软件常见问题解决.pdf某安装文件被损坏 原因:安装过程中,某些文件被电脑的某些程序破坏掉了或者是 的文件本身 就出错了 直接点击确定完成软件安装,会出现以下情况,请分别尝试: 情况1:打开软件会提示数据同步,点确定开始同步数据,完成同步后软件恢 复正常 情况2:没有提示同步,需要手动同步,点击 【帮助】- 【数据同步】- 【全量 数据jvzquC41oc~/dxtm33>/exr1jvsm1;5441664:4:26819:6392653970ujzn
8.zyplayer源jsonzyplayer源json是指zyplayer软件的源代码文件格式为json(JavaScript Object Notation)的文件。 json是一种轻量级的数据交换格式,易于阅读和编写,也易于解析和生成。它基于JavaScript语法,但与之不同的是,它是一种数据格式而不是编程语言。 zyplayer源json文件包含了zyplayer软件的源代码,它按照特定的格式组织数据,包括变jvzquC41ygtlw7hufp4og}4cpu}ft8928iuhhrpp
9.下载Bodymovin(AE插件)免费版下载v5.7.1最新版Bodymovin是专为快速导出JSON文件和PNG图片而设计的Adobe After Effects插件,这款插件的功能强大且易于使用,它能够将After Effects中的动画和图层转换为可在Web上播放的JSON格式,同时导出相关的PNG图片序列,方便设计师和动画师轻松处理复杂的动画,提升工作效率。 软件特色 它可以支持Android、iOS平台; 导出的文件体积小,jvzquC41o0isut~0eqs0oru1uqlu1>=764;/j}rn
10.基于OpenHarmomny的智能门锁简介如果要进行编译首先要在PROJECT TASKS中点击build,同时在编译过程中在源码里会产生config.json文件。在源码修改之后需要点击clean去清除config.json,然后才能继续点击Build进行编译。编译成功后点击Upload烧录到开发板中。 ​​想了解更多关于开源的内容,请访问:​​ ​​51CTO 开源基础 jvzquC41yy}/7:hvq0ipo8ftvkimg8<737<:0qyon
11.sublime格式化Json文件的方式相关技巧打开json文件,选中其中一段json,输入以下快捷键: macOS: command + ctrl + j Windows: ctrl + alt + j 4、扩展:对于软件vscode 首先打开vscode,然后在扩展栏输入json,选择Json Tools,选择install,安装完成之后,选择一个json文件,使用快捷键ctrl + alt + M(对于macOS,快捷键为Command + option + M) jvzquC41yy}/lk:30pku1ywqitgn1;=8437qgm3jvo
12.使用DataX实现数据同步(高效的同步工具)根据模板编写 json 文件 [root@MySQL-1 ~]# cat <<END > test.json{"job": {"content": [{"reader": {"name": "streamreader","parameter": {"column": [ # 同步的列名 (* 表示所有){"type":"string","value":"Hello."},{"type":"string","value":"河北彭于晏"},],"sliceRecordCount":jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1B8935?
13.|客户端软件文档点击【导入/导出】>【全部导出CSV】,将所有记录信息以CSV文件导出至本地。 导入CSV 点击【导入/导出】>【导入CSV】,在弹出的对话框中选择包含记录信息的CSV文件,点击“确定”,批量创建相关条目。 导出JSON 勾选记录,点击【导入/导出】>【导出JSON】,将勾选的记录以JSON文件导出至本地。 jvzq<84jgnv/hktz586/exr1iwoeg8VwkeqTvjwv0jznn
14.IoT开发者社区1.3 软件环境 Nodejs安装 https://nodejs.org 2. 开发步骤 2.1 IoT云端开发 1)创建高级版产品 2)功能定义,添加产品属性 3)注册设备,获得身份三元组 2.2 设备端开发 我们用nodejs程序来模拟设备,建立连接,上报数据。 1)创建设备端项目 创建文件夹 iot-demo 创建2个文件 package.json 和 device.js jvzquC41fg|/kxy0cnozww3eqo5qq|y177948;
15.求一个能将bin视频转换成MP4之类视频格式的软件吾爱破解key、json。将m3u8文件拖入软件M3U8地址栏、 key文件拖入软件的自定义KEY栏、json文件拖入混流文件栏。jvzquC41yy}/7;uqlkk/ew4vjtkbf667:7;8366/30nuou
16.网站打包成app博客打包成手机软件教程腾讯云开发者社区网站打包成app 博客打包成手机软件教程(苹果及安卓app都可以) 1、准备素材: Hbuilder、180*180以上的logo、启动图片一张 2、打开Hbulider注册账号 3、点击右上角文件新创一个「移动APP」 4、输入APP名称,选择空模板,点击完成即可 5、展开右侧APP名称文件夹,双击manifest.json文件 jvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk03:96799
17.BigTextFileSplitter附激活教程+注册机文件管理Withdata BigTextFileSplitter VIP会员激活版可以帮助大家将大文本文件拆分为较小的文件。BigTextFileSplitter 是一款帮助您将大文本文件拆分为较小文本文件的软件。它可以用于 CSV 文件、TSV 文件、JSON Lines 文件、日志文件和其他类型。 基本简介 BigTextFileSplitter是一个软件,帮助您将大文本文件分割成较小的文本文jvzquC41yy}/lk:30pku1|thvli0:=>;8:4ivvq