密码泄露者如何工作?
我见过一些密码泄露软件。大多数软件都有一个像指针一样的射击指针,只需指向密码文本框,软件就会显示密码。
但受保护的软件和揭露软件仍然没有互连。它们是在同一主机上运行的独立进程。
我的疑问是,
- 一个进程如何访问其他软件的信息?
- 它有哪些限制?
- 我可以采取哪些做法来防止这种情况发生?
编辑:是的,使用虚拟数据保存密码是最常用的解决方案。但同样的理论仍然可以应用于其他情况,对吗?例如,外部程序可以读取您的电子邮件,间谍程序可以记录您的活动等。甚至我们可以实现一些很酷的功能,例如对 IE 的拖放支持到 Mozilla :)
所以在这种情况下最有效的 解决方案是“阻塞” 机制。有办法做到这一点吗? (避免访问进程的资源???)
I've seen some password revealing software. Most of them has a shooting pointer like pointer and you can just point the password text box and the software is revealing the password.
But still the protected software and the revealer software are not interconnected. They are separate processes running on the same host.
My queries are,
- How does a one process access the other software's information?
- What are the limitations of it?
- What are the practices that I can use for prevent this?
Edit : Yes, Keeping a password with dummy data is the mostly used solution for this. But still the same theory can be applied to some other case right? As an example an external program can read your emails, A spy program can record your activities etc. And even we can implement some cool features like drag and drop support to IE to Mozilla :)
So in this case the most effective
solution would be a "Blocking"
mechanism. Is there anyway to do this? (Avoid accessing the process's resources???)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正如 Silky 所说,这只是发送 Windows 消息的问题,有一个非常简单的 来源一次显示所有密码字段。一个简单的对策是使用一个包含虚拟字符而不是真实密码的密码字段。您可以捕获正在键入的内容,将其存储在变量中,并将其替换为密码字段中的虚拟字符。
As silky said it's just a matter of sending windows messages, there is a very simple source that reveals all password fields at once. A simple countermeasure would be a password field that holds dummy characters instead of the real password. You can capture what is being typed, store it in a variable and replace it with the dummy character in your password field.
可能通过找到控件并向文本框发送一条消息,将“密码”字符更改为空白(即它将重新验证)。
所以:
通过向他们发送 Windows 消息
我不记得了,但我很确定你只需要窗口句柄。
根本不要在密码字段中显示密码。只需将其保存在内存中的某个位置,并且仅在用户明确要求时才显示它。
Probably by finding the control and sending a message to the textbox that changes the 'password' character to blank (i.e. it will reeval).
So:
By sending windows messages to them
I can't recall, but I'm pretty sure you just need the window handle.
Don't display the password in a password field at all. Just hold it somewhere in memory, and only show it if the user specifically asks for it.
IIRC这个“弱点”从Windows XP SP2开始就被消除了吗?无论如何,我非常确定用于密码的标准 Windows 文本框控件已得到升级,因此您不能仅使用 Spy++ 等工具来查看被屏蔽的实际文本。
IIRC this "weakness" had been eliminated since about Windows XP SP2? In any case, i'm pretty sure the standard Windows textbox control that is used for passwords got an upgrade so that you couldn't just use tools like Spy++ to peek at the actual text that was being masked.
密码的工作方式:
设置密码后,将使用哈希函数将密码转换为哈希值,并存储该哈希值。密码永远不会被存储。当用户登录时,密码将被散列并与存储的散列值进行比较。如果两个哈希值匹配,则用户提交了正确的密码。
为了揭示密码,必须将存储的哈希值与已知哈希值的值进行比较,或者在哈希函数损坏的情况下,可以将哈希值猜测到提交的值中。后者是思科密码破解者使用的方法,如果你能进入盒子的话,因为思科使用了众所周知的弱哈希函数。在以后的 Windows 操作系统中,使用的哈希函数是 NTLM,该函数非常强大。在这种情况下,您必须将存储的哈希值与已知的哈希值进行比较。这种方法称为彩虹表。典型的字母数字和 7 位 ASCII 特殊字符 14 个字符的密码具有 64GB 大的彩虹表。这就是为什么较长的密码要优越得多,因为将哈希值与数十亿个其他值进行比较需要几分钟的时间。
The way passwords work:
When a password is set the password is converted to a hash value using a hash function, and it is that hash value that is stored. The password is never stored. When a user logs in the password is hashed and compared to the stored hash value. If the two hashes match then the user submitted the correct password.
In order to reveal a password the stored hash value has to be compared to something with a known hash value or, in the case of a broken hash function, the hash value can be guessed into the submitted value. The later of these possibilities is the method used by Cisco password crackers, if you can get into the box, because Cisco uses a notoriously weak hash function. In the case of later Windows OSes the hash function used is NTLM, which is very strong. In this case you must compare the stored hash values to known hash values. This method is called a rainbow table. A typical alpha-numeric and 7-bit ASCII special character 14 character password has a rainbow table that is 64gb large. This is why longer passwords are vastly superior since it will take a few minutes to compare a hash value against billions of other values.