什麼是離線攻擊?(型別和工作原理)
離線攻擊是從實際密碼所在或使用過的電腦以外的位置執行的。離線攻擊通常需要完全訪問電腦,並將系統的金鑰檔案複製到外部介質。然後,程式設計師將檔案傳輸到另一臺電腦來完成破解。
儘管需要更多工作,但離線攻擊通常比線上攻擊更容易執行,並且更有可能不被發現。試圖從密碼雜湊轉儲中提取明文憑據的攻擊者被稱為離線攻擊者。攻擊者使用彩虹表中的預先計算的雜湊值進行離線和廣泛的網路攻擊。
離線攻擊的型別
離線攻擊可以分為以下幾種型別:
- 離線破解
- 彩虹表攻擊
- 掩碼攻擊
- 字典攻擊
- 暴力破解攻擊
讓我們詳細討論每種離線攻擊。
離線破解
離線密碼破解是從目標機器上獲取的密碼儲存檔案中恢復一個或多個密碼。在Windows系統中,這是SAM檔案;而在Linux系統中,則是/etc/shadow檔案。
在大多數情況下,離線密碼破解需要攻擊者獲得系統上的管理員/root許可權才能訪問儲存機制。但是,密碼雜湊可能已透過SQL注入、Web伺服器上的未加密純文字檔案或其他易受攻擊的來源直接從資料庫中檢索。
離線密碼破解的速度比線上密碼破解快1000到1,000,000倍。離線密碼破解在恢復憑據儲存機制後,不會在受害者的機器上留下任何痕跡。
彩虹表攻擊
當密碼儲存在系統上時,它會使用加密別名或雜湊進行加密。由於加密的存在,駭客將無法找出原始密碼。攻擊者必須儲存和分發包含從早期入侵建立的密碼及其雜湊的資料夾,才能解決此問題。此過程縮短了駭客訪問系統所需的時間。
彩虹表採用雜湊技術,並生成所有可能的加密密碼明文形式的列表。如果駭客在公司系統中找到加密密碼,他們可以將其與彩虹表中的加密密碼列表進行比較。如果大部分計算在攻擊之前完成,則啟動攻擊將比使用其他方法更快更容易。
掩碼攻擊
這種攻擊範圍有限。掩碼攻擊中的猜測基於數字或字元。例如,如果密碼以數字開頭,而駭客知道這一點,他們可以調整掩碼以僅測試以數字開頭的密碼。特殊字元、字元排列、重複單個字元的頻率、密碼長度和其他標準用於配置掩碼。掩碼攻擊旨在從密碼中消除多餘字元,並加快破解過程。
字典攻擊
駭客可以迴圈使用字典中現有的單詞,而不是猜測字元的隨機組合。人們經常在密碼中新增術語以使其更容易記住,從而使駭客更容易。暴力破解軟體甚至可以修改字典密碼以提高成功率。攻擊者使用字典攻擊來測試給定的密碼雜湊與常用、知名密碼列表中的每個單詞。列表中的每個單詞都經過雜湊處理(使用要破解的密碼雜湊中的鹽),並與雜湊進行比較。如果列表中的單詞匹配,則原始密碼或其他密碼都可以生成相同的雜湊值。
暴力破解攻擊
暴力破解攻擊涉及透過反覆試驗猜測登入資訊、加密金鑰或查詢隱藏的網頁。駭客嘗試所有可能的組合,希望能猜對。顧名思義,這些攻擊是使用蠻力進行的。儘管這是一種較舊的攻擊方法,但它仍然在駭客中很有效且流行。因為破解密碼可能需要幾秒鐘到幾年時間,具體取決於其長度和複雜性。
暴力破解攻擊使用特定字元集的所有可能的密碼組合,直到達到一定的密碼長度。例如,暴力破解攻擊可能會嘗試破解一個包含所有95個可讀ASCII字元的八位字元密碼。這意味著有95^8個可能的密碼組合。以每秒100萬次猜測的速度,破解一個八位字元密碼的暴力破解攻擊將需要210年。
離線攻擊是如何工作的?
現在讓我們瞭解離線攻擊是如何執行的。
網路嗅探
當我們連線到共享驅動器以訪問所需檔案時,必須首先驗證我們是否具有讀取檔案的許可權。共享驅動器將透過網路向您傳送一個挑戰,您將使用雜湊密碼和挑戰計算一個新值,並將其傳送回伺服器以進行授權。如果攻擊者能夠嗅探網路並獲取挑戰和響應,他們可以將其離線並嘗試密碼攻擊。
窺探
窺探是一種透過靠近真實使用者並觀察他們輸入密碼來竊取密碼的方法。攻擊者只需在使用者登入時觀察使用者的鍵盤或顯示器,例如,檢視他們是否從桌子上的物品那裡索取書面密碼或助記符。窺探只能在靠近目標的情況下進行。
轉儲記憶體內容
一旦攻擊者獲得了對單個伺服器或應用程式的管理員訪問許可權,他們就可以轉儲記憶體內容,包括SAM檔案。具有管理員許可權的攻擊者可以轉儲此檔案,從而暴露系統上所有本地帳戶的雜湊值。如果攻擊者獲得對資料庫的訪問許可權,他們還可以轉儲使用者表,該表可能包含密碼雜湊。
NTDS檔案
如果攻擊者獲得域管理員憑據並訪問域控制器,他們可以訪問NTDS檔案。此檔案包含所有域使用者的雜湊密碼。對於公司來說,這是最糟糕的情況,也是想要發起離線密碼攻擊的攻擊者的金礦。
社會工程
它指的是利用人類行為進行的非技術入侵。它通常依賴於人際互動,有時會欺騙人們違反常規安全措施。社會工程師扮演著“騙局”的角色。
例如,使用社會工程技術入侵網路的攻擊者可能會試圖獲得允許訪問網路的人的信任,然後提取破壞網路安全的資訊。攻擊者可以冒充使用者或主管來獲取使用者的密碼。人們經常試圖與朋友和同事建立友好的關係。這就是社會工程師獲利的地方。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP