KeePass
密码管理器




Package

KeePass 2.x中双通道自动类型混淆功能


文本  简介:什么是双通道自动类型混淆?

KeePass 的自动类型功能非常强大:它将模拟按键发送到其他应用程序。这适用于所有Windows应用程序,对于目标应用程序,无法区分真实按键和Auto-Type模拟的按键。这同时是Auto-Type的主要缺点,因为键盘记录器可以窃听模拟键。这就是双通道自动类型混淆(TCATO)发挥作用的地方。

TCATO使标准键盘记录器无用。它使用Windows剪贴板将部分自动键入的文本传输到目标应用程序中。键盘记录程序可以查看 印刷机,但不记录从剪贴板粘贴的实际内容。Ctrl+V

剪贴板间谍也不起作用,因为只有部分敏感信息才会以这种方式传输。

无论如何,它并不是完全安全的(不幸的是,理论上无法做到)。当前可用的键盘记录程序或剪贴板间谍都不能窃听混淆的自动类型进程,但理论上可以编写一个专门用于记录混淆自动类型的专用间谍应用程序。

 

文本  什么时候可以使用双通道自动类型混淆?

TCATO不能与所有窗户一起使用。目标窗口必须支持使用箭头键在编辑控件中进行剪贴板操作和导航。此外,目标用户界面不得包含自动化功能,例如在达到文本框的最大长度时跳跃焦点(例如,在注册号对话框中可以看到)。

经验法则:

  • 可用于:
    • 浏览器。
    • 带有标准文本框的Windows程序。
  • 不能用于:
    • 基于控制台的应用程序(交互式终端,……)。
    • 游戏。

因为它不适用于所有窗口,所以它是每个条目的选择加入功能。您必须在“编辑条目”对话框的“自动类型”选项卡页面 上明确启用它。

 

文本  如何启用/配置双通道自动类型混淆?

您只需勾选 条目的“双通道自动类型混淆”复选框(条目编辑窗口的“自动类型”选项卡); KeePass将完成剩下的工作。

 

文本  技术概述

模糊的自动类型不是简单地将模拟按键发送到目标应用程序(正常的自动类型),而是执行以下操作:

  • 备份当前剪贴板内容。
  • 智能地将文本分成几部分。
  • 对于每个部分:检查是否可以使用剪贴板。
    • 如果是:将其拆分为两个子部分(字符方式,如两个扁平交织的梳子)。复制/粘贴第一部分,通过发送按键合并其余部分。
    • 如果否:使用模拟按键正常发送。
  • 恢复以前的剪贴板内容

下面详细描述这些步骤。

 

文本  智能地分割文本

必须首先智能地分割要发送的文本。并非所有字符串部分都可以使用剪贴板发送:特殊键代码和键修饰符必须不加改变地传递给SendInput函数。举个例子,看看下面的字符串:

mymail@myprovider.com{TAB}MyTopSecretPassword{TAB} {TAB} {ENTER}

这是KeePass发送给另一个应用程序的典型字符串的示例。首先,它键入用户的电子邮件地址,然后是选项卡,然后是密码,选项卡,切换复选框,另一个选项卡,最后按Enter键。该序列可以分为以下几部分:

mymail@myprovider.com
{标签}
MyTopSecretPassword
{标签}
' ' (空间)
{标签}
{输入}

对于每一行,检查是否可以使用剪贴板。如果该行包含'{‘,’}’,’(’,’)’,’+’,’^’,’%’或空格(空格),则只能由SendInput函数直接发送。例如,“+”按Shift键,不应将其复制/粘贴为“+”字符。空格也无法复制/粘贴,因为它们通常用于切换复选框。

在上面的示例中,可以使用剪贴板发送“mymail@myprovider.com”和“MyTopSecretPassword”。

 

文本  分裂秘密

让我们使用TCATO将“mymail@myprovider.com”传输到目标应用程序。

首先,秘密字符串“mymail@myprovider.com”随机分为两个部分,如两个扁平交织的梳子:

 y il m o d .c
m ma @ ypr vi er om

第一个字符串“yilmod.c”现在被复制到剪贴板。SendInput函数发送的字符串现在按如下方式汇编:

  • 从剪贴板粘贴开始:^v
  • n向左箭头键n次,其中n =剪贴板字符串的长度
  • 发送剩余的字符,然后按右箭头键跳过已从剪贴板粘贴的字符。

在上面的示例中,键序列将组合为:

^ v {LEFT 8} m {RIGHT} ma {RIGHT} {RIGHT} @ {RIGHT} ypr {RIGHT} vi {RIGHT} er {RIGHT} {RIGHT} om

这将首先粘贴剪贴板内容,转到它的开头并填写剩余的字符,构建原始字符串“mymail@myprovider.com”。

第一个字符串部分保留在剪贴板中的时间很短。它被复制到剪贴板,粘贴到目标应用程序并立即清除。此过程通常最多只需几毫秒。

有关秘密字符串拆分的更多信息:
在上面的示例中,字符串“mymail@myprovider.com”已拆分并发送。如果每次都对字符串进行不同的拆分,则恶意应用程序可以通过捕获多个自动类型并将它们组合来重新组合字符串。为了防止这种情况,KeePass根据字符串的散列初始化随机数生成器以进行拆分。这意味着每个字符串的分割方式不同,但字符串的分区是唯一确定的。因此,通过多次调用自动类型,攻击者无法重新组合原始字符串,因为他总是捕获相同的半部分。

上一页:
下一页:


沪ICP备19023926号-2 Copyright © 2003-2019 Dominik Reichl, [联系我们 / 版本说明] [团队 & 隐私政策]