iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Security

腳本小子的滲透測試學習筆記系列 第 16

第16天:CEH第六章系統入侵(特權提升)

  • 分享至 

  • xImage
  •  

特權提升

  • 攻擊者可以通過使用非管理員使用者帳戶 (non-admin user account) 獲得對網路的存取權,接下來的步驟就是獲得管理員特權。
  • 攻擊者執行特權提升 (privilege escalation) 攻擊,利用作業系統和軟體應用程式中的設計缺陷、編程錯誤、漏洞和配置疏忽來獲得管理員存取權,進而存取網路及其相關應用程式。
  • 這些特權允許攻擊者查看機密/敏感資訊 (critical/sensitive information)、刪除檔案或安裝惡意程式,如病毒、木馬或蠕蟲。

特權提升的類型

  1. 水平特權提升 (Horizontal Privilege Escalation)

    指的是通過假冒擁有相同特權的其他使用者來獲取已經被授予的相同特權。

  2. 垂直特權提升 (Vertical Privilege Escalation)

    指的是獲取比現有特權更高的特權。


利用 DLL 劫持進行特權提升

大多數 Windows 應用程式在載入外部 DLL 函式庫時不會使用完整路徑 (fully qualified path),而是會搜索它們已經被載入的目錄。這意味著,如果攻擊者能在應用程式目錄中放置惡意 DLL (malicious DLL),它將會代替真實的 DLL 被執行。

攻擊者可以使用例如 RobberPowerSploit 等工具來偵測可劫持的 DLL,並在目標系統上執行 DLL 劫持攻擊。

Robber
Robber 是一個開源工具,可以幫助攻擊者找到容易被 DLL 劫持的可執行檔。

流程:

  1. 使用者安裝應用程式,應用程式會從目錄中載入 DLL。
  2. 如果攻擊者將惡意 DLL 放置在應用程式目錄中,應用程式將載入這個惡意 DLL 而不是真實的 DLL。
  3. 攻擊者可以藉由此惡意 DLL 獲得系統的遠端訪問權限。

利用漏洞進行特權提升

  • 攻擊者通過利用程式、服務或作業系統軟體或核心中的程式設計缺陷來利用軟體漏洞 (exploit software vulnerabilities),執行惡意程式碼。
  • 利用軟體漏洞可以讓攻擊者在目標機器上執行命令或二進位檔案,以獲得比現有特權更高的權限 (privileges),或繞過現有的安全機制。
  • 攻擊者可以通過這些漏洞利用攻擊,取得**特權用戶帳戶 (privileged user accounts)**和憑據。
  • 攻擊者可以基於作業系統和應用程式的版本,在漏洞網站上尋找適用的漏洞利用程序,常用的網站包括 Exploit Database (https://www.exploit-db.com) 和 VulDB (https://vuldb.com)。

這些平台上提供了大量的漏洞數據,攻擊者可以根據系統版本等條件篩選漏洞利用,進行特權提升的攻擊。

利用 Dylib 劫持進行特權提升

  • macOS 系統中,當應用程式加載外部的 dylib(動態庫)時,載入程序會在多個目錄中搜尋這個 dylib。
  • 如果攻擊者能夠將惡意的 dylib注入到其中一個主要目錄中,這個惡意 dylib 將會取代原來的 dylib 被執行。
  • 工具如 Dylib Hijack ScannerDylib-Hijack-Scanner 可以幫助攻擊者檢測那些易受劫持攻擊的 dylib。

攻擊流程:

  1. 使用者運行應用程式,該應用程式會向目錄發出載入 dylib 的請求。
  2. 如果應用程式目錄中包含惡意的 dylib,則該惡意 dylib 將取代原始的 dylib 被加載和執行。
  3. 攻擊者因此獲得系統的遠端訪問權限,並可能進一步執行惡意行為。

這樣的攻擊針對 macOS 應用程式中未完全保護的 dylib 加載機制,攻擊者可以利用這個機制將系統引導至執行他們的惡意程式。

利用 Spectre 和 Meltdown 漏洞進行特權提升

  • SpectreMeltdown 是在現代處理器晶片設計中發現的漏洞,這些晶片包括 AMDARMIntel
  • 這些漏洞來自於處理器中的效能和 CPU 優化,例如分支預測、無序執行、快取和推測執行。
  • 攻擊者利用這些漏洞來獲取未經授權的訪問權限,並竊取關鍵的系統資訊,例如應用程式中的認證資訊和私密密鑰,從而進行特權提升。

Spectre 漏洞

  • 攻擊者可能利用這個漏洞來讀取進程的相鄰記憶體區域,並存取他/她未被授權的資訊。
  • 使用這個漏洞,攻擊者甚至可以讀取核心記憶體,或利用 JavaScript 執行網頁攻擊。

Meltdown 漏洞

  • 攻擊者可能利用這個漏洞來強迫非特權進程讀取其他相鄰的記憶體區域,例如核心記憶體和物理記憶體,從而進行特權提升。
  • 這可能會導致洩露關鍵系統資訊,如認證資訊、私密密鑰等。

Spectre 和 Meltdown 是基於硬體層面的漏洞,攻擊者利用它們可以直接從處理器級別進行攻擊,進而獲取系統敏感數據。

利用 Named Pipe 冒充進行特權提升

  • Windows 作業系統中,命名管道(Named Pipes) 提供了運行中的進程之間合法的通訊方式。
  • 攻擊者經常利用這種技術來在受害者的系統上提升特權,使特權等同於擁有較高訪問權限的用戶帳戶。

攻擊者的操作流程:

  • 攻擊者使用像 Metasploit 這樣的工具在目標主機上執行 Named Pipe 冒充
  • 攻擊者可以通過 Metasploit 的命令,如 getsystem,來獲得管理級別的特權,並提取管理員/用戶帳戶的密碼哈希值。

Metasploit 是一個強大的攻擊框架,它通過利用 Named Pipe 技術,讓攻擊者能夠冒充系統中的進程,進一步提權,並取得系統的控制權。

通過配置錯誤的服務進行特權提升攻擊:

  1. Unquoted Service Paths(未加引號的服務路徑)
    • 在 Windows 作業系統中,啟動服務時,系統會嘗試找到啟動服務所需的可執行文件的路徑。當可執行文件的路徑未加上引號時,攻擊者可以利用這一點將系統權限下運行的服務路徑改為惡意文件,以提升其權限。
  2. Service Object Permissions(服務對象許可權)
    • 錯誤配置的服務許可權可能允許攻擊者修改或重新配置與該服務相關的屬性。通過利用此類服務,攻擊者甚至可以向本地管理員組添加新用戶,並劫持該帳戶以提升權限。
  3. Unattended Installs(無人值守安裝)
    • 無人值守安裝過程中的配置設定細節會被儲存在 Unattend.xml 文件中。該文件存儲於:
      • C:\Windows\Panther\
      • C:\Windows\Panther\UnattendGC\
      • C:\Windows\System32\
      • C:\Windows\System32\sysprep\
    • 攻擊者可以利用 Unattend.xml 文件中的資訊來提升權限。

利用轉移與中繼技術來攻擊外部機器 (Pivoting and Relaying to Hack External Machines)

  • 攻擊者使用轉移技術 (Pivoting technique) 來入侵系統,取得遠端 shell 存取,並進一步通過被攻擊的系統繞過防火牆,存取網路中的其他脆弱系統。
  • 攻擊者使用中繼技術 (Relaying technique),通過被攻擊的系統存取其他系統上的資源,讓資源請求看起來像是來自最初被攻擊的系統。

轉移 (Pivoting)

  1. 發現網路中的線上主機
  2. 設定路由規則
  3. 掃描線上系統的埠
  4. 利用漏洞的服務

中繼 (Relaying)

  1. 設定埠轉發規則
  2. 存取系統資源

攻擊者可以使用以下 URL 瀏覽運行在目標系統上的 HTTP 伺服器:
http://localhost:10080

攻擊者可以使用以下命令存取運行在目標系統上的 SSH 伺服器:
# ssh myadmin@localhost


利用錯誤配置的 NFS 進行特權提升 (Privilege Escalation Using Misconfigured NFS)

  • 攻擊者經常嘗試列舉錯誤配置的網路檔案系統 (NFS) 來進行攻擊,並獲得遠端伺服器的 root 權限存取。
  • 錯誤配置的 NFS 為攻擊者提供了通過普通用戶帳戶或低權限用戶進行 root 級別存取的途徑。
  • 利用 NFS 漏洞,攻擊者可以攔截機密數據和通過內聯網傳遞的文件,並發動進一步的攻擊。

檢查目標主機是否正在運行 NFS 服務

通過 SSH 與目標主機建立遠端連接

使用 Windows Sticky Keys 進行特權提升

  • 在 Windows 系統中,Sticky Keys 功能允許用戶使用包括 CtrlAltShift 的組合鍵,而無需同時按下三個鍵。
  • 攻擊者在獲得對遠端系統的訪問權限後,通過簡單地更改與 Sticky Keys 相關聯的文件來提升特權,並在系統啟動後快速連續按下Shift 鍵五次來觸發此功能。

Privilege Escalation by Bypassing User Account Control (UAC)

  • 當攻擊者無法通過簡單的payload提升權限時,他們會嘗試繞過Windows的安全功能,如UAC,以獲得系統級別的訪問權限
  • 在Windows環境中,即使將UAC保護級別設置為任何選項,攻擊者仍然可以濫用某些Windows應用程序來提升權限,而不會觸發UAC通知。

繞過UAC的技術


Using Metasploit進行繞過UAC:

  1. Bypassing UAC Protection
    • 使用Metasploit框架可以進行UAC繞過。執行這些步驟,攻擊者能夠進行記憶體注入來繞過Windows的UAC通知,進行權限提升。
  2. 繞過UAC保護通過 FodHelper 註冊表鍵
    • 攻擊者利用Windows中的FodHelper應用程序來進行權限提升。通過修改與FodHelper相關的註冊表鍵,攻擊者可以運行惡意代碼,而不會觸發UAC通知。
  3. 繞過UAC保護通過 Eventvwr 註冊表鍵
    • Event Viewer中的漏洞也可被用於繞過UAC,攻擊者可以利用註冊表來執行惡意命令。
  4. 繞過UAC保護通過 COM Handler劫持
    • 攻擊者利用COM對象劫持來執行惡意程序並提升權限。

工具介紹

  1. Metasploit
    • Metasploit是目前最廣泛使用的滲透測試框架之一,它提供了各種模塊,能夠自動化大部分的攻擊流程,包括UAC繞過和權限提升。
  2. Bypass UAC via Memory Injection
    • 這個技術通過將惡意代碼注入到系統內存中,直接繞過UAC的保護機制,執行權限提升操作。

Privilege Escalation by Abusing Boot or Logon Initialization Scripts

(濫用開機或登入初始化腳本進行特權提升)

  • 攻擊者利用開機或登入初始化腳本來提升權限或維持持久性 在目標系統上。
  • 開機或登入初始化腳本還允許攻擊者執行不同的管理任務,這些任務可以讓他們在系統上運行其他程序。

各類初始化腳本說明:

  1. Logon Script (Windows)
    • 攻擊者通過將腳本的路徑嵌入到以下的註冊表鍵來創建持久性並提升權限:HKCU\Environment\UserInitMprLogonScript
  2. Logon Script (Mac)
    • 在macOS中,登入腳本也稱為登入鉤子(login hooks),允許攻擊者在系統登入時自動執行,從而維持持久性。
    • 攻擊者利用這些鉤子注入惡意載荷以提升權限並維持持久性。
  3. Network Logon Scripts
    • 網路登入腳本通常通過Active Directory或GPOs分配。
    • 攻擊者濫用這些網路登入腳本來獲取本地或管理員憑證,根據訪問配置進行特權提升。
  4. RC Scripts
    • 攻擊者濫用RC腳本,將惡意二進制文件或路徑嵌入RC腳本中,如rc.commonrc.local,這些腳本在Unix系統中執行,以提升權限並保持持久性。
  5. Startup Items
    • 攻擊者在/Library/StartupItems目錄中創建惡意文件或文件夾以維持持久性。
    • 這些StartupItems項目會在系統開機階段執行,擁有根級別的權限。

Privilege Escalation by Modifying Domain Policy(透過修改網域策略進行特權提升)

  • 網域策略 包含了在森林網域環境中不同網域之間實施的設定。
  • 攻擊者會藉由 修改群組策略 (Group Policy)網域信任關係 來更改網域設定,進而提升權限。
  • 攻擊者還可以植入一個 假網域控制器 以保持持續的滲透並提升權限。

1. Group Policy Modification (群組策略修改)

  • 修改 ScheduledTasks.xml 文件,通過腳本 (如 New-GPOImmediateTask) 創建惡意的排程任務或工作:

    <GPO_PATH>\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml
    

2. Domain Trust Modification (網域信任修改)

  • 使用 domain_trusts 工具來收集受信任網域的信息,並修改現有的網域信任設置:

    C:\Windows\system32>nltest /domain_trusts
    

使用 DCsync 攻擊提取其他網域控制器的密碼雜湊

  • DCsync 攻擊 中,攻擊者最初會取得 網域複製權限,並啟用複製協議,創建一個與原始 AD 相似的虛擬網域控制器 (DC)。
  • 這允許攻擊者向 DC 發送請求,檢索管理員的 NTLM 密碼雜湊,並進行進一步攻擊,如 金票攻擊、帳戶操縱和利用現有系統資源的攻擊。
  • 攻擊者利用 mimikatz 來執行 DCsync 攻擊。

攻擊流程:

  1. 攻擊者通過 MS-DRSR 發現並模仿 DC 的行為。
  2. 使用 GetNCChanges 發送複製請求。
  3. DC 提供 NTLM 密碼雜湊 給攻擊者。

工具 mimikatz 提供了 DCsync 指令,它利用 MS-DRSR 來模仿合法的網域控制器的行為。


Other Privilege Escalation Techniques (其他特權提升技術)

  1. Access Token Manipulation (訪問令牌操作)
    • Windows 使用訪問令牌來確定進程或線程的安全上下文
    • 攻擊者可以獲取其他用戶的訪問令牌或生成偽造的令牌來提升特權,並在躲避檢測的同時執行惡意活動。
  2. Parent PID Spoofing (父進程PID欺騙)
    • 可以將適當的父進程ID (PPID) 設置為來自 SYSTEM 的進程,如 svchost.execonsent.exe,使用 Windows 的UAC安全功能。
    • 攻擊者利用這種方法繞過父進程的限制生成進程,從而維持持久性或提升特權。
  3. Application Shimming (應用程序補丁)
    • Windows應用程序兼容性框架 (Shim) 用於在Windows的舊版和新版之間提供兼容性。
    • 攻擊者可以使用補丁,如 RedirectEXEinjectDLLGetProcAddress,來提升特權、安裝後門或禁用Windows Defender等。
  4. Filesystem Permission Weakness (文件系統權限弱點)
    • 如果二進制文件的文件系統權限設置不當,攻擊者可以用惡意文件替換目標二進制文件。
    • 如果執行該二進制文件的進程擁有更高級別的權限,那麼該惡意二進制文件也會以更高的權限執行。
  5. Path Interception (路徑攔截)
    • 應用程序通常存在許多弱點錯誤配置,例如未加引號的路徑、路徑環境變量配置錯誤以及搜索順序劫持,這會導致路徑攔截。
    • 路徑攔截可以幫助攻擊者在系統上保持持久性並提升特權。
  6. Abusing Accessibility Features (濫用輔助功能)
    • 攻擊者嵌入並運行惡意代碼,通過利用 Windows 輔助功能來保持持久性並提升特權。
    • 攻擊者利用替換 cmd.exe 或通過替換登記表中的二進制文件來獲得後門訪問。
  7. SID-History Injection (SID歷史注入)
    • Windows 安全標識符(SID) 是在創建時由域控制器分配給每個用戶和組帳戶的唯一值。
    • 攻擊者利用該功能將具有更高特權的管理員或同等帳戶的SID值注入到被入侵用戶的帳戶中。
  8. COM Hijacking (COM劫持)
    • COM 劫持過程涉及篡改 Windows Registry (Windows登錄表) 中的對象引用或用惡意內容替換它們。
    • 當用戶執行常用對象時,惡意代碼會自動執行,從而使攻擊者能保持持久性並提升特權。
  9. Scheduled Tasks in Windows (Windows中的計劃任務)
    • Windows 任務計劃程序及其相關工具(如 atschtasks)可用於在特定日期和時間執行計劃任務。
    • 攻擊者可以利用這一技術在系統啟動時執行惡意程序,保持持久性,遠程執行並提升特權。
  10. Scheduled Tasks in Linux (Linux中的計劃任務)
  • Linux 使用 croncrond 指令來自動化任務排程。
  • 攻擊者通過修改cron的腳本(位於 /etc/crontab)來提升系統權限。
  • Launchd 是 macOS 在系統初始化過程中使用的工具,用於加載每個按需啟動的系統級守護進程的參數。
  1. Launch Daemon (啟動守護進程)
  • Launchd 是 macOS 在系統初始化過程中使用的工具,用於加載每個按需啟動的系統級守護進程的參數。
  • 守護進程具有與啟動時運行的可執行文件相關聯的 plists 文件。
  • 攻擊者可以修改啟動守護進程的可執行文件以保持持久性或提升特權。
  1. Plist Modification (Plist文件修改)
  • macOS中的 Plist 文件 描述了程序應該如何執行,包括可執行文件的文件路徑、程序參數、所需的作業系統權限等。
  • 攻擊者可以通過修改plist文件以合法用戶的名義執行惡意代碼來提升特權。
  1. Setuid and Setgid (Setuid和Setgid)
  • 在 Linux 和 macOS 中,如果應用程序使用 SetuidSetgid,那麼該應用程序將以擁有用戶或組的權限執行。
  • 攻擊者可以利用應用程序的 Setuid 或 Setgid 標誌來執行帶有提升權限的惡意代碼。
  1. Web Shell (Web Shell)
  • Web Shell 是一種基於 Web 的腳本,允許訪問 Web 服務器。
  • 攻擊者可以創建 Web Shell 來在 Web 服務器上注入惡意代碼,以保持持久性並提升權限。
  1. Abusing Sudo Rights (濫用 Sudo 權限)
  • Sudo 是 Unix 和 Linux 系統中的命令,允許用戶使用另一個用戶(通常是 superuserroot)的安全權限運行命令。
  • 攻擊者可以覆蓋 /etc/sudoers 文件,通過他們自己的惡意文件來提升權限。
  1. Abusing SUID and SGID Permissions (濫用 SUID 和 SGID 權限)
  • SUID 和 SGID 是在 Unix 系統中賦予程序文件的 訪問權限
  • 攻擊者可以使用設置了 SUID 和 SGID 位的可執行命令來提升特權。
  1. Kernel Exploits (內核漏洞利用)
  • 內核漏洞利用是指通過利用內核中的漏洞來執行具有更高權限的命令或代碼的程序。
  • 攻擊者可以通過利用內核漏洞來獲取 superuser 權限或根目錄級別訪問。

Privilege Escalation Tools (特權提升工具)

  1. BeRoot
    • BeRoot 是一個事後利用工具,用於檢查系統中的常見錯誤配置,從而尋找提升特權的方法。
  2. linpostexp
    • linpostexp 工具獲取有關內核的詳細資訊,這些資訊可以用來在目標系統上進行特權提升。

Other Privilege Escalation Tools (其他特權提升工具)

  • PowerSploit:用於 Windows 系統的後期開發框架,支持多種漏洞利用技術,能實現特權提升。
  • FullPowers:能夠讓攻擊者在 Windows 系統中實現更高的權限訪問。
  • PEASS-ng:幫助檢查系統的配置錯誤和潛在的漏洞,能在多個平台上實現特權提升。
  • Windows Exploit Suggester:這個工具能夠自動分析 Windows 系統中的漏洞,並推薦相關的漏洞利用方法。

如何防止特權提升(Privilege Escalation)

  1. 限制互動式登入權限(interactive logon privileges)
  2. 讓用戶及應用程式使用最低權限(lowest privileges)
  3. 實施多因素身份驗證(multi-factor authentication)與授權(authorization)
  4. 以未授權的帳戶(unprivileged accounts)執行服務
  5. 實施權限分離方法(privilege separation methodology),以限制程式錯誤和漏洞的範圍
  6. 使用加密技術(encryption technique)來保護敏感數據
  7. 減少運行特定權限所需的程式碼量
  8. 使用邊界檢查器和壓力測試工具進行除錯(debugging)
  9. 徹底測試系統,找出應用程式代碼錯誤和漏洞
  10. 定期修補並更新核心(kernel)
  11. 將UAC設定更改為“始終通知”(Always Notify)
  12. 限制用戶寫入應用程式搜尋路徑(search paths)
  13. 使用審計工具(auditing tools)持續監控文件系統權限
  14. 降低用戶及群組的權限,僅允許合法的管理員進行服務變更
  15. 使用白名單工具(whitelisting tools)識別並阻擋惡意軟件
  16. 在所有Windows應用程式中使用完全合格的路徑(fully qualified paths)
  17. 確保所有可執行檔案都放置在寫保護目錄(write-protected directories)中
  18. 在macOS中,將plist檔案設為只讀(read-only)
  19. 阻止可能用於排程任務的系統工具或軟件
  20. 定期修補並更新Web伺服器(web servers)

明天看可不可以把持續存取跟清理log都記好


上一篇
第15天:CEH第六章系統入侵
系列文
腳本小子的滲透測試學習筆記16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言