共用方式為


安全性監控我的 PII 在哪裡?

Frank Simorjay

我們老是強調 PII (個人識別資訊) 是最需要保護的重要資訊。但是要保護 PII 之前,您必須先充分了解電腦上收集了哪些 PII。您或許會說電腦上的一切資料都是機密,但是所謂的一切資料究竟指的是什麼?

為了釐清這一點,一開始我會深入剖析問題本質,細分敏感的資料類型,並找出資料可能存放在電腦上的哪些位置。首先,敏感資訊的位置通常因人而異。舉例來說,有些人對於自己的名字出現在搜尋結果中感到不自在。當然,除非您離群索居,否則很可能已經有人透過某種形式把您的姓名公佈在網際網路上。有興趣的話,不妨到您最常用的搜尋引擎線上搜尋您的姓名。請注意,您的姓名越常見,就越難找到直指您身分的搜尋結果,您不妨把它當作是一樁好事。

如果想在網際網路上搜尋自己,您也可以試試看一些受歡迎的社交網站,像是 LinkedIn、Facebook 及 YouTube。過去難找的私密資訊,現在卻如此輕易地在網際網路上存放和散佈,實在很不可思議。

如今,要瞭解該保護什麼樣的資訊需要更專門的技術。為了提供協助,我覺得找一下電腦上是否有您未察覺且需要保護的潛在私密資訊應該蠻有趣的。雖然您可能會說,所有可用來竊取您的身分識別的個人資訊都屬機密,但實際上資訊可以區分為兩種詳細資料層級。有一種資訊是隨手可得,而另一種資訊則比較私密,後者通常被視為攸關個人身分識別的重要資訊。

一般而言,唾手可得的資訊並不會被當做是 PII。這些資訊包括您的姓名,也可能涵蓋電話號碼、街道地址、電子郵件地址、性別,而且往往包含受雇的地點和教育資訊。這些項目都可以隨手從網際網路和公共目錄 (如電話簿) 上取得。洩漏這些資訊可能會產生惱人的後果 (例如,不小心讓濫發垃圾郵件者得知您的電子郵件地址),但這種事本身並不會導致身分識別遭竊。

機密資訊是由更私密的資料所構成,這些資料可連結到您的身分識別。您不希望公開的資料包括您的身份證號碼 (或是其他由政府提供之類似的唯一識別代碼)、銀行帳號、信用卡號碼 (尤其是加上到期日與信用卡會員帳號)、駕照號碼和指紋 (或其他有關生物特徵的資訊)。一旦落入壞人手中,這些項目就可能被不當利用。因此您必須要充分掌握在網際網路與電腦上記錄和存放這些資訊的位置及方式。為此,我現在要討論一些簡單的方法來尋找可能存放在系統硬碟上的 PII。

在電腦上尋找 PII 資料

PII 資訊散佈在各處。事實上,如果您檢查一下垃圾筒,可能隨便就找得到一些 PII。保護這類資訊要盡心盡力,建議每個人都買一台好的碎紙機,用它來絞碎所有包含個人資訊的紙張。

但是對於潛藏在電腦上的 PII 該怎麼辦?尋找這些資料就跟安全地存放這些資料一樣困難。Windows Vista® 還有其他一些桌面搜尋工具可以協助您在系統上尋找資訊。但是您必須先知道要找什麼資訊。

為了說明問題所在,我使用了一些簡單工具以便提供相關的實作範例。我使用 Windows PowerShell® 來編寫指令碼。Windows PowerShell 的功能很多,而且您會發現它也提供絕佳的字串比對功能。針對本文目的,我將著重在它比對規則運算式的功能上。Windows PowerShell (請參閱 microsoft.com/powershell) 是功能強大的工具,它已迅速成為管理工作的標準。

此外,我會使用 findstr.exe 來當做管理誤判的工具,也就是能夠忽略那些包含看來耐人尋味的字串 (基於資料字串在二進位檔中隨機組合的特性) 但其實無關緊要的檔案。換句話說,在此操作中可以忽略非文字檔。

我選用了兩種代表性的 PII 資料類型:身份證號碼與信用卡資訊。如果這些資料是以純文字的方式儲存在硬碟上,應該就很容易找得到。這兩種資料類型的結構與模式皆十分獨特,因此可以使用簡單的指令碼來尋找該資訊。不過,這些資料同時也具備高度機密性,所以我不建議無故就將它們存放在電腦上。如果您想要儲存這類資訊,就必須確定會好好保護它們。稍後我將討論如何保護您的 PII。無可否認地,我在此說明的內容很有限 — 還有其他重要的 PII 資料類型未包含在內,例如使用者名稱及密碼。

搜尋身份證號碼

在此有一個簡單字串會在檔案中尋找包含標準美國身分證號碼 (格式為 XXX XX XXXX 或 XXX-XX-XXXX) 的資訊。在 Windows PowerShell 中,您可以直接輸入下面幾行:

Get-ChildItem  -rec -exclude *.exe,*.dll |
select-string " [0-9]{3}[-| ][0-9]{2}[-| ]
[0-9]{4}" 

或者您可以利用以下方式,使用 findstr.exe 來確保搜尋中不會讀取二進位檔:

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string 
" [0-9]{3}[-| ][0-9]{2}[-| ][0-9]{4}"

在此範例中,Get-ChildItem –rec 會從執行命令的目錄開始,對檔案執行遞迴目錄搜尋。Findstr.exe 會搜尋檔案中的字串,而 Select-string 則是 Windows PowerShell 字串搜尋函式 (Findstr.exe 也提供類似的功能,不過我不打算在此論述)。另外也請注意,規則運算式的前置空格是故意的。這麼做可以消除不必要的資訊以減少誤判,像是 HKLM\SOFTWARE\tool\XXX-XX-XXXX 這樣的登錄字串。

在我執行的範例中,搜尋模式傳回一個被我放入子目錄的測試範例檔,而且找到位於 XML 檔案中的範例,這些範例符合信用卡和身份證號碼的檔案模式 (見 [圖 1])。

Figure 1 搜尋數字模式的結果

Figure 1** 搜尋數字模式的結果 **(按影像可放大)

我在第一個範例中使用排除功能來捨棄所有 .exe 和 .dll 檔案,因為這些檔案會產生不必要的干擾。您可能發現其他檔案類型也會造成誤判。此時,您可以使用排除功能來微調搜尋作業。

如果您只搜尋特定的身份證號碼,可以執行下列動作 (將「123 45 6789」取代為您自己的身份證號碼):

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string 
"123 45 6789","123-45-6789"

此搜尋動作的結果如 [圖 2] 所示。

Figure 2 搜尋特定號碼

Figure 2** 搜尋特定號碼 **(按影像可放大)

搜尋信用卡資訊

信用卡資訊的格式不盡相同,因此比較棘手。而且我想要避免誤判 (也就是看起來像信用卡號碼的隨機結果),儘管如此,搜尋最後可能還是會找到一些貌似信用卡號碼的隨機序號。

我在建置這些字串時,使用的資訊是參考 Michael Gilleland 所寫的<信用卡號碼結構剖析> (請參閱 merriampark.com/anatomycc.htm)。譬如說,我的搜尋字串指定第一個數字必須是 4、5 或 6,因為根據定義,這些是信用卡的主要企業識別碼。

我在此建造的簡單字串將搜尋 Discover、MasterCard 和 Visa 信用卡。就 Windows PowerShell 來說,我的搜尋字串看起來像這樣:

Get-CchildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
 "[456][0-9]{15}","[456][0-9]{3}[-| ][0-9]{4}
[-| ][0-9]{4}[-| ][0-9]{4}"

[圖 3] 顯示的範例中,我使用排除功能來避免來自 .rtf、.rbl 及 .h 檔案類型的干擾。除此之外,範例程式碼還會尋找沒有空格或連字號的信用卡字串。但是這樣可能會讓結果顯示暴增。因此下面提供另一個具備相同功能的命令,不過它不會抓取無空格或無連字號的信用卡號碼:

Figure 3 使用排除功能來消除搜尋結果中的干擾

Figure 3** 使用排除功能來消除搜尋結果中的干擾 **(按影像可放大)

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"[456][0-9]{3}[-| ][0-9]{4}[-| ][0-9]{4}
[-| ][0-9]{4}"

由於美國運通卡的格式截然不同,因此我建立了經過修訂的搜尋字串來尋找此信用卡模式。就 Windows PowerShell 來說,搜尋字串看起來像這樣:

Get-ChildItem -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"3[47][0-9]{13}","3[47][0-9]{2}[-| ][0-9]{6}
[-| ][0-9]{5}"

資料暴增也可能影響到此結果。以下這個替代命令具備相同功能,不過它不會抓取無空格或無連字號的信用卡號碼:

Get-childitem -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"3[47][0-9]{2}[-| ][0-9]{6}[-| ][0-9]{5}"

撰寫本專欄時,我在自己的系統上執行過這些搜尋,而且很驚訝地發現我的身份證號碼儲存在多個根本不應該存放的位置,原來資料是我前陣子寫在便箋上留下來的,只是早忘了。這讓我重新思考哪些東西應該寫下,哪些則否!

如果您覺得自己需要以安全的方式存放這些資訊,不妨試試看 Password Safe (請參閱 passwordsafe.sourceforge.net) 這類工具。您也可以使用「BitLockerTM 磁碟機加密」這樣的工具來加密硬碟。最後,Data Encryption Toolkit for Mobile PC (行動電腦資料加密工具組) 可提供實證的指引來保護行動電腦上的資料。這些解決方案至少可以讓那些試圖竊取您電腦上的個人資訊的人無法輕易得逞。

總結

尋找 PII 資訊相當簡單,要留意這些資訊就比較複雜。不過別忘了,只消一小段惡意程式碼或某個心懷不軌存取您系統的使用者,就可以輕易用類似的探索技術來尋找系統上的資訊。注意您在何時何地輸入 PII 資訊,如果您想要儲存這類資訊,請務必予以加密。

在此特別感謝 Matt Hainje 協助解決我的 Windows PowerShell 指令碼難題。

Frank Simorjay 是 Microsoft Solution Accelerator ─ 安全性和法規遵循小組的技術專案經理;他為 Microsoft 客戶設計安全性解決方案,在會議 (例如他創立的 Secure World Exposition) 上發表演說,提供安全性教育訓練,並勤奮地撰寫各種有關安全性的文章和書籍。「惡意程式碼移除工具之入門套件」是他最新的作品。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.