安全性

了解共用帳戶密碼管理

Chris Stoneff

 

綜覽:

  • 共用與特殊權限帳戶密碼的風險
  • 儲存密碼的方式
  • 管理和保護共用密碼
  • 唯命是從

目錄

瞭解問題
越長越好
網域暴力
藉口、藉口,全是藉口
立規者的要求
自動化方法
深思熟慮

定期變更共用與特殊權限帳戶的密碼,例如,

內建的系統管理員或根帳戶、防火牆帳戶,甚或是處理帳戶,是系統管理員必須不斷應付的常見工作之一。就定義而言,內建系統管理員或根帳戶指的是每個 Windows® 版本、Linux 和 UNIX 上的帳戶,而且這些帳戶始終具備相同的安全性識別元 (SID) 或使用者識別碼 (UID)。防火牆帳戶則是指您建立用來加速緊急存取安全系統的其他那些帳戶。這些防火牆或系統管理員帳戶有時候會被未經授權的使用者,在發生問題時用來存取重要系統。最後,處理帳戶則是您用來執行服務、工作、COM+ 應用程式,以及內嵌項目 (例如指令碼和其他必須登入的二進位檔案) 的帳戶。

您目前可能是使用安裝指令碼或映像來部署系統。此外,您所有的工作站或伺服器可能都擁有相同的系統管理員帳戶名稱,以及同一個 8 字元密碼,而且可能從系統最初部署後都沒改過。所以,我才說「同一個」密碼,而不是「很多」密碼。

系統管理員可能為了採用最佳作法或達到循規的需求 (例如沙賓法案 (SOX)、付款卡業 (PCI),或是美國健康保險流通與責任法案 (HIPAA)) 而不得不變更這些密碼。有時候是因為知道這些密碼的前任系統管理員或技術人員離職,系統管理員害怕發生密碼被公開的安全性缺口或無法處理信用卡而更改密碼。撇開這些因素不管,系統管理員非得變更這些密碼,純粹為了公司的安全性,以及公司必須保護的資料。

瞭解問題

當處理這些帳戶及其密碼時,必須先了解幾個要素:

  1. 密碼使用的時間越長,就越不安全。
  2. 原則是,越長的密碼越難破解。
  3. 電腦驗證的方式並不會因為它們隸屬於網域而有所改變。每個網域的核心在於工作群組。

「密碼使用的時間越長,就越不安全」其實是一種誤解。它真正的含意是,只要決心入侵電腦,時間夠長就能辦得到。如果有人問:「破解密碼需要花多久的時間?」,我通常會說答案不一定,並且提供一些線索,以便針對特定系統找出適切的答案:

  • 有多少人知道密碼?
  • 這些人全都還在公司工作嗎?
  • 如果知道帳戶密碼的一些人已經不在公司工作,他們是心平氣和地離職嗎?
  • 您拒絕從磁碟片、CD 或 DVD 磁碟機,或是網路開機嗎?
  • 電腦的使用者也是本機系統管理員嗎?
  • 您所有系統的特殊權限帳戶都是使用相同的密碼嗎?

從這份清單的前頭說起,我們可以假設秘密要是越多人知道,就越可能變得眾所皆知。我還記得曾在一家公司上班,公司內的系統管理員覺得把共用密碼設成相同的值,然後告訴 IT 人員還有實習生這個密碼,要比在需要的時候為他們輸入密碼要方便得多了。不用說,不消多久的時間,公司便開始發現電腦滿是各種未經核准的設定,而且一般的網路使用者也能登入這些帳戶。

如果所有這些知道密碼的人都還在這家公司工作,而且個個都是開心又負責的員工,那麼倒是可以稍微舒緩這類的存取風險。但是您永遠不知道何時會出現惡意的使用者需要對抗。如果當中有任何使用者是不滿離職,外頭就有個敵意份子,知道怎麼使用無法追蹤的帳戶入侵您的網路。

若是您不拒絕從硬碟以外的任何媒介開機,那麼也等於是允許使用者使用非授權的映像開機,例如 Windows PE 或各種 Linux 系統,這些系統可直接從電腦的檔案系統讀取並存取電腦受保護的儲存區 (我應該註明,許多安全性漏洞確實是來自內部。即便所有人員和實習生仍舊受雇於公司,還是沒法保證密碼和系統是安全的)。

我知道有很多人仍繼續登入前雇主的網路是因為他們可以,所以有何不可。這種不變更系統密碼的錯誤習慣雖然有點引人發噱,但一想到他們若心存惡意而可能造成的傷害,不免令人惶恐。

如果您讓使用者能夠從 DVD 或網路開機,那麼您可能無法稽核他們進行的動作。也就是說,Linux 開機磁碟或網路映像通常可以直接存取您的檔案系統。如果您的系統對特殊權限帳戶使用相同的使用者名稱和密碼的話,您的系統顯然是等著遭大殃。不過我們還是稍後再詳細討論吧。

密碼使用期限和長度跟用來破解密碼的方法息息相關。若您應付的是暴力破解方法,那麼您面臨的問題其實是時間。密碼越不常變更,就等於留更長的時間讓破解者取得密碼。

同樣地,更長的密碼因為含有更多字元變形,因此需要花更長的時間破解。所以說,務必要考量您的密碼長度是否少於 7 個字元,8 至 14 個字元,還是包含 15 個或以上的字元。另外,若是密碼少於 15 個字元,而且您使用的是 Windows 的話,您是根據系統設定還是透過群組原則來停用 LAN Manager (LM) 雜湊?

密碼的長度究竟有什麼影響?就 Windows 來說,答案很簡單。姑且不談 Microsoft 雜湊程序的歷史,Microsoft 針對密碼實作兩種雜湊類型,也就是 LM 雜湊和 Message Digest 4 雜湊 (MD4)。Microsoft 預設是使用 LM 雜湊,而且除非您明確關閉這些雜湊的儲存選項,否則針對所有長達 14 個字元的密碼都會儲存值。這些密碼會分成兩個 7 字元的值 — 第一個值用於前 7 個字元,第二個值用於後 7 個字元,如 [圖 1] 所示。

[圖 1] 範例雜湊表

帳戶名稱 RID LM 雜湊 NT 雜湊 密碼 備註
Administrator 500 aad3b435b51404ee:aad3b435b51404ee 31d6cfe0d16ae931:b73c59d7e0c089c0 空白密碼 LM 雜湊與 20 個字元的密碼 LM 雜湊一模一樣。

Administrator 500 0182bd0bd4444bf8:aad3b435b51404ee 328727b81ca05805:a68ef26acb252039 7 個字元密碼 = 1234567 表示前 7 個字元的前半部與 8 字元密碼相同。

Administrator 500 0182bd0bd4444bf8:36077a718ccdf409 0182bd0bd4444bf8:36077a718ccdf409 8 個字元密碼 = 12345678 表示前 7 個字元的前半部與 8 字元密碼相同,但後半部不同。

Administrator 500 aad3b435b51404ee:aad3b435b51404ee b79d07c2ecb3d565:033ece663f5a0b2e 20 個字元密碼 = 9876543210 9876543210 LM 雜湊與空白密碼一樣,因為超過 14 個字元的密碼無法建立 LM 雜湊。

Fred 1221 e52cac67419a9a:224a3b108f3fa6cb6d 8846f7eaee8fb117:ad06bdd830b7586c 一樣 在這三個範例中,有看到 LM 與 NT 雜湊其實是一樣的嗎?這表示所有這些帳戶的密碼全都一樣。Microsoft 永遠不會改變雜湊演算法。

Monday 1385 e52cac67419a9a:224a3b108f3fa6cb6d 8846f7eaee8fb117:ad06bdd830b7586c 一樣
SvcAcctX 1314 e52cac67419a9a:224a3b108f3fa6cb6d 8846f7eaee8fb117:ad06bdd830b7586c 一樣

因此,如果您的密碼長度只有 7 個字元,便會包含在單一 LM 雜湊中。Microsoft 好幾年來都建議您,密碼至少要使用 8 個字元。原因是,這樣一來,第 8 個字元就會強制將密碼分成兩個 LM 雜湊值。

不過有一點要注意的是,LM 雜湊其實眾所皆知,而且很容易避開。目前的解決方案採用它們的唯一目的,是要幫助維持與下層系統的回溯相容性,例如 Windows NT® 4.0。

時至今日,您應該使用至少 15 個字元的密碼 (通關密語比較貼切),最好是更長,因為根據定義,它們將不會產生 LM 雜湊。如果在您的環境中強制使用 15 個字元的密碼不可行,您應該停用在映像建立程序 (利用本機原則) 和 Active Directory® 群組原則兩者中儲存 LM 雜湊。

此原則可在 [電腦設定]\[Windows 設定]\[安全性設定]\[本機原則]\[安全性選項] 中找到。只要將 [網路安全性: 下次密碼變更時不儲存 LAN Manager 雜湊數值] 原則設為 [啟用] 即可。

重要的是,要記住儘管良好的原則會規定使用大小寫字母,以及數值或特殊字元,但更完善的原則也當規定使用 15 個字元或以上的密碼長度。

越長越好

目前有個用來入侵電腦方法,叫做 Rainbow Tables,它便是利用 LM 雜湊作為弱點。但是較長的密碼可消弭 Rainbow Tables 的成效。

我很驚訝的是,很多負責安全性的系統管理員竟然對 Rainbow Tables 一知半解 (或一無所知)。要建立 Rainbow Tables 來處理不同的演算法,方法有很多。但這些其實只是從 0-14 個字元預先計算所有 LM 雜湊的清單。

對於 Rainbow Tables,要注意的是,攻擊者必須先取得 LM 雜湊。這也把重點帶到了之前的疑問,那就是系統要如何開機 (CD 或 DVD),或是您的使用者是否是本機系統管理員。最後,這些 LM 雜湊在幾秒的時間內,使用像是 pwdump 的免費工具,就擷取得到。藉著使用 Rainbow Tables,接著會搜尋雜湊來判斷密碼。

為了滿足我自己的好奇心,我在系統的內建系統管理員帳戶上設定了一個密碼。它有 14 個字元,而且包含各種大小寫字母,還有特殊字元和數字。我接著使用從網際網路上免費下載的 Rainbow Tables,結果我竟然能夠擷取系統上所有帳戶的密碼雜湊,並在不到兩分鐘的時間內判斷出系統管理員的密碼。

我必須承認,看到第一個 LM 雜湊被破解,接著第二個雜湊被破解,的確蠻酷的,只要再把它們湊在一起就可以得到您的密碼。在這裡要重述我的重點,那就是,假如我使用之前討論的原則停用 LM 雜湊的話,即使不能完全封鎖此一特定的攻擊標的,至少也能強加限制。

網域暴力

身處網域當中並不能解決問題。網域當中的電腦仍舊以相同的方式進行驗證。而且,我之前說過,每個網域的核心在於工作群組。這句話雖然簡單,卻不一定容易明瞭。我就曾對這個主題進行過多次討論,而且常常發現自己需要提醒系統管理員存取電腦的必備條件 — 就是使用者名稱和密碼。之後,我還得說明 Windows 如何在工作群組內運作。

如果您嘗試存取某系統,就必須提供使用者名稱和密碼給遠端系統。透過整合式驗證的運用,Windows 會試著為您進行這項作業。這表示,如果您存取其他 Windows 系統,Windows 將會使用您目前登入的使用者名稱和密碼。所以,若是您嘗試存取其他 Windows 系統,而遠端系統也擁有相同的使用者名稱和密碼的話,系統永遠不會提示您輸入使用者名稱和密碼。

這也稱為傳遞驗證,整個程序在工作群組和網域間一樣可行。最糟的情況不過是系統要求您輸入使用者名稱和密碼,也就是說您必須重新輸入您的登入資訊。

現在即使您將工作站或伺服器加入網域,而 Active Directory 變成您的中央帳戶存放庫,這些系統上所有的本機安全性帳戶管理員 (SAM) 或本機帳戶存放區也不會就這樣神奇地消失。看起來發生在這些本機 SAM 身上的,就是它們不受管理也不受保護,而這正是問題的根源。您上次變更系統上的內建系統管理員或根帳戶是什麼時候?不妨下載任一種報告公用程式,顯示所有帳戶的密碼使用期限,並看看結果是否能通過稽核。

如果您還不清楚我的用意,隨便找一台網域工作站,然後以具備系統管理權限的網域帳戶登入。開啟系統上的電腦管理,再建立一個稱為 ToldYouSo 的本機使用者。給帳戶設個密碼,然後把它加入到您系統的本機 Administrators 群組。在第二部網域系統上重複這個程序。

現在,從其中一部系統中,以本機 ToldYouSo 帳戶的身分登入,然後前往 \\systemName\c$ 嘗試存取第二台機器。您將能夠存取系統管理共用,而且系統甚至不會提示您輸入密碼!我希望您不會被這個例子嚇到,如果嚇到您,請從中學得教訓,並容我再次重述:即使您的系統隸屬於網域,也改變不了所有這些系統仍舊是以工作群組的方式運作的事實。

重點是,假如您的共用和特殊權限帳戶所使用的密碼鮮少變更,您的共用和特殊權限帳戶就有風險。只要時間夠,就足以入侵您的網路。

藉口、藉口,全是藉口

當我跟系統管理員,甚或是 CIO 對談時,常常聽到不肯變更這些帳戶密碼的幾個主要理由是:

  • 我們有上千部系統,沒有時間或人力來變更這些帳戶。
  • 我們沒有所需的預算。
  • 我們已經完全停用系統管理員帳戶。
  • 我們從沒被入侵過,所以我們真的不認為這有什麼問題。
  • 稽核人員沒有發現。

雖然我可以體諒前兩個理由,但這都不算藉口。一想到藉故不處理這個問題的公司,可能存有我的私人資訊,我就不寒而慄。

雖說並非網路內的每一部系統都會存放機密資訊,但這些電腦的使用者確實有可能存取機密資訊,例如您的身分證號碼、醫療記錄或財務資料等。身為系統的系統管理員,使用者可以安裝按鍵記錄程式和螢幕擷取公用程式,阻止套用群組原則,將填充碼引入各種子系統來擷取和傳輸資料等等。當使用者在個別的電腦進行這些作業時,因為他也稱為 Administrator 而使得要捕獲這名惡意使用者難上加難。

您知道停用 Windows 中的內建系統管理員帳戶並不能阻止您以該帳戶的身分登入嗎?試試這個動作:以安全模式重新啟動您的系統,然後以內建系統管理員帳戶的身分登入。您多半可以使用從原始映像發給帳戶的密碼順利登入。如需有關此行為的詳細資訊,請參閱 Microsoft® 知識庫文章<如何在停用系統管理員帳戶之後存取電腦>(support.microsoft.com/kb/814777)。

立規者的要求

應付 SOX、PCI、HIPAA 和其他法規,可能會讓您一個頭兩個大。瞭解它們的需求可能要費點功夫,畢竟它們既廣泛,定義又不清楚。一般而言,所有這些法規的要求大致可總結如下:

首先,您必須確定有誰可隨時存取所有特殊權限帳戶和資訊,並提供方法證明。這在各種案例下都屬於良好行為 — 特殊權限帳戶是具備權限在任何系統上進行任何動作的帳戶。這是內建系統管理員,也是防火牆帳戶。這些是替您工作的整組支援工程師和每名系統管理員可能都知道的帳戶。

當您選擇實作一套解決方案來管理這些共用帳戶密碼時,您等於是為內建系統管理員建立一份目前不存在的稽核記錄。您得到的會是變動不定的密碼。既然解決方案已自動化,所以您不會浪費好幾個星期的生產力來變更這些密碼。最後,由於解決方案提供稽核功能,貴公司將更輕鬆通過稽核。

自動化方法

處理這類帳戶最有效的方法,是定期變更帳戶,不讓兩個帳戶共用相同的密碼。若共用密碼,一個系統遭到入侵表示其他系統也跟著遭殃。換句話說,不應該有共同的本機或網域帳戶。

當您使用可管理和隨機安排密碼的自動化解決方案時,請避免只做稽核者所要求的最低限度工作。比方說,如果使用 8 個字元的密碼,與使用 15 或 20,甚或 127 個字元的密碼比起來,所花的精力一樣,何必只使用 8 個字元的密碼呢 (見 [圖 2])?

fig02.gif

[圖 2] 使用自動化建立超長的密碼 (按一下以放大影像)

另外,可考慮每天隨機安排特殊權限帳戶,如 [圖 3] 所示。如果每個月或每兩個月,甚或每天都可以這麼做,實在沒有理由每隔 90 天才做一次。畢竟,如果程序已自動化,您應該不用多費力氣。加上如果您定期這麼做的話,也可強制使用者從工具的稽核擷取介面復原密碼,提供過去不存在的稽核記錄 (如果您目前是把寫下的密碼放在信封裡面,然後鎖在某人辦公室角落的保險箱裡面,您就無法像使用密碼管理解決方案一樣保留這些密碼的稽核記錄)。

fig03.gif

[圖 3] 每天隨機安排特殊權限帳戶 (按一下以放大影像)

最後,確定密碼在復原時,在復原後的一段固定時間內可以而且也會重新隨機安排。我指的不是您建立的排程隨機安排工作,我說的是建立只在幾個小時內有效,而不是幾個月內有效的單次用密碼。再次強調,這個方法會強迫使用者從工具的稽核擷取介面復原密碼,進而提供稽核記錄。

深思熟慮

共用帳戶密碼管理的問題務必要解決。也就是說,您應該建立一種能夠可靠且定期變更密碼的方法。這套解決方案必須能夠調整,而且富有彈性。它也必須提供安全的密碼存取,而且它必須稽核工具所採取的每項動作,以及工具的使用者所採取的每項動作。此外,所產生的密碼在每部系統上必須是唯一的,如此才能避免因共用帳戶資訊而遭到入侵。

許多廠商致力於解決此問題已有多年的時間,還有更多新廠商才剛剛踏入這個領域。購買之前,務必花點功夫研究並試用所有的新工具,以確保您採用的解決方案確實合乎您的環境。

Chris Stoneff 在 Lieberman Software (liebsoft.com) 擔任產品經理,這是一家安全性和系統管理軟體的開發商。他的幹勁來自於不只要知道事情的運作方式,還要了解背後的原因。