2010-01-19 70 views
4

我見過一些密碼泄露軟件。他們大多數有一個像指針的射擊指針,你可以指向密碼文本框,軟件顯示密碼。密碼檢測器如何工作?

但是受保護的軟件和啓示軟件仍然沒有互聯。它們是在同一主機上運行的獨立進程。

我的查詢是,

  1. 如何做一個進程進行訪問的其他軟件的信息?
  2. 它有什麼限制?
  3. 我可以用來防止這種情況的做法是什麼?

編輯:是的,虛擬數據保持一個密碼是這個最常用的解決方案。但是同樣的理論可以適用於其他一些案例嗎?作爲一個例子外部程序可以讀取你的電子郵件,A間諜程序可以記錄您的活動等。即使我們能夠實現一些很酷的功能,如拖放在這種情況下IE支持拖放到Mozilla的:)

所以最有效的解決方案將是「阻止」 機制。無論如何要做到這一點? (避免訪問進程的資源?)

回答

2

如絲綢般說,這只是發送Windows消息的問題,有一個非常簡單的source揭示了所有密碼字段一次。一個簡單的對策將是一個密碼字段,其中包含虛擬字符而不是真實密碼。您可以捕獲正在輸入的內容,將其存儲在變量中,並將其替換爲密碼字段中的虛擬字符。

+0

感謝您將它存儲在一個可變的提示:) – akif 2010-01-19 04:17:25

2

可能通過找到控件並向文本框發送一條消息,將「密碼」字符更改爲空白(即它將被reeval)。

所以:

  1. 通過發送窗口消息給他們

  2. 我不記得,但我敢肯定,你只需要窗口句柄。

  3. 根本不要在密碼字段中顯示密碼。只要將它放在記憶中的某個地方,只有在用戶明確要求時才顯示。

+1

Windows窗口的缺陷之一。你可以從任何進程中窺探和修改「窗口」(閱讀:任何類型的控件)。 – 2010-01-19 04:21:04

0

IIRC自從關於Windows XP SP2以來,這個「弱點」已經被消除了嗎?無論如何,我敢肯定用於密碼的標準Windows文本框控件得到了升級,因此您不能只使用Spy ++之類的工具來查看被屏蔽的實際文本。

0

密碼的工作方式:
設置密碼時,密碼會使用散列函數轉換爲散列值,並且是存儲的散列值。密碼永遠不會被存儲。當用戶登錄密碼時進行散列並與存儲的散列值進行比較。如果兩個哈希匹配,則用戶提交了正確的密碼。

爲了揭示密碼,存儲的散列值必須與具有已知散列值的東西進行比較,或者在散列函數破碎的情況下,可以將散列值猜到提交的值中。思科密碼破解程序使用的方法之後,如果你可以進入方框,因爲思科使用一個臭名昭着的弱散列函數。對於後來的Windows操作系統,使用的哈希函數是NTLM,它非常強大。在這種情況下,您必須將存儲的散列值與已知的散列值進行比較。這種方法稱爲彩虹表。一個典型的字母數字和7位ASCII特殊字符14個字符的密碼有一個64GB大的彩虹表。這就是爲什麼較長的密碼要優越得多,因爲它需要幾分鐘的時間才能將散列值與數十億其他值進行比較。