內網橫向移動之LocalAccountTokenFilterPolicy


本文主要探討在工作組和域橫向移動中,由於默認remote UAC啟用對橫向移動造成的影響以及一些解決辦法。主要分為了工作組橫向和域橫向兩個板塊。

1.工作組橫向

workgroup相關環境如下

主機A:  
ip地址 192.168.178.169
操作系統版本 windows 10
主機名 DESKTOP-CBBH65I
主機B:  
ip地址 192.168.178.225
操作系統版本 windows server 2008

工作組橫向比較常見,用以下一個攻擊場景為例:

​ 滲透測試人員在B主機上,獲取到了A服務器一個名為dev的管理員賬戶密碼(或hash),那在B服務器上應當怎么登陸A服務器進行遠程管理?(排除RDP)

常見的有sc類(psexec,scshell)、wmi類(wmiexec.wmic)、smb類(smbexec,ipc,smbclient)、winrm類等工具可以進行橫向移動

​ 但是,在windows Vista之后引入了一種默認開啟的remote UAC,計算機的任何非SID 500本地管理員帳戶, 用戶在遠程計算機上沒有特權提升能力,並且用戶無法執行管理任務。

下圖是當remote UAC啟用時,對以上部分工具的測試:

Schtasks:

Psexec:

Wmiexec:

IPC:

Reg:

Scshell:

​ 默認情況下,這些工具都無法正常工作。根據官方文檔中的方法,我們可以使用如下命令,修改A主機的注冊表鍵值:LocalAccountTokenFilterPolicy 為1,即在主機A執行以下命令:

reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f 

​ 然后即可在主機B使用dev賬戶憑據進行遠程管理,其他師傅已經寫了不少這類文章,這里不再贅述,提一種比較新的方法:

​ 通過ChangeServiceConfigA接口來無文件橫向移動。這種方法依賴於DCERPC,優點在於無文件,不會注冊創建服務也不通過smb認證。

項目地址:https://github.com/Mr-Un1k0d3r/SCShell

​ 作者原文中采用了XblAuthManager這個xbox服務進行測試,我們可以用例如 vss(卷影拷貝服務) 這樣更加通用的服務來進行遠程命令執行,效果如下圖:

​ 以上方法都依賴於LocalAccountTokenFilterPolicy值為1,那么在LocalAccountTokenFilterPolicy值為0的時,有沒有可能進行遠程管理呢?

1.當管理員對C:\usser內任意文件進行共享后,即使關閉了文件共享,也會默認將Users目錄進行共享。

​ 詳見:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/ff660257(v=ws.10)?redirectedfrom=MSDN

​ 我們可以使用dev用戶的憑據建立ipc連接然后查看共享資源

​ 隨后,我們對啟動項等目錄復制文件,達到進一步控制的效果。當然這種方法需要目標主機曾經共享過C:\users下的文件且需要主機dev用戶重啟觸發payload(可能還需要繞過uac)。

2.winrm

​ 如下圖,我在主機A上對winrm進行快速設置時候,會將LocalAccountTokenFilterPolicy設置為1

此時意味着之前sc類(psexec,scshell)、wmi類(wmiexec.wmic)、smb類(smbexec,ipc,smbclient)等遠程訪問工具都可用,z=這里就不再詳細測試了,winrm只需要在B主機上添加信任A主機即可,直接連接會被拒絕。當然,在本機添加信任對我們來說很簡單。

如下圖,我在主機B上添加了信任所有主機。

然后在主機B上通過ps remoting進程遠程管理主機A

總結:

從以上結果可以看出,在工作組環境中,由於默認LocalAccountTokenFilterPolicy=1,極大地限制了橫向移動。但是由於一些windows自身或者其他程序的配置,將LocalAccountTokenFilterPolicy設置為0,又為pth等橫向手法提供了更多可能。


2.域橫向

testdomain.local相關環境如下

主機A:  
ip地址 192.168.124.134
操作系統版本 windows server 2012
主機名 DC1
域管理員 administrator、admin
主機B:  
ip地址 192.168.124.135
操作系統版本 windows server 2008
主機名 SQL01
本地管理員用戶 administrator、dev

​ 在域環境中,remote UAC只是對本地用戶進行限制,並沒有對域用戶進行限制,所以當獲取到域管理員的密碼(或hash),我們可以使用sc類(psexec,scshell)、wmi類(wmiexec.wmic)、smb類(smbexec,ipc,smbclient)、winrm類等工具進行遠程連接,如下圖所示,在SQL01上運行mimikatz,使用域管理員admin賬號,可以進行進行pth:

​ 同樣地,由於remote UAC存在,即使域內互相信任的主機使用非sid500的本地管理員憑據也無法登陸。即在DC1上使用SQL01上的管理員用戶dev憑據登錄SQL01,也無法成功。

​ 值得一提的是,由於多數域環境中,為了方便管理,采用域策略使域內所有電腦默認啟用了winrm服務,這為內網橫向提供了便利。如果主機沒有開啟winrm服務,遠程啟用winrm也比較簡單,以psexec為例,只需要如下命令即可:

psexec \ComputerName -s winrm.cmd quickconfig -q

​ 我們都知道,psexec、wmiexec等工具可以使用哈希傳遞而不使用明文,那winrm能否使用pth呢?答案是可行的。方法有很多,以CobaltStrike為例,我們可以通過pth然后啟動進程然后steal_token,使用winrm執行命令,效果如下圖:

總結:由於域用戶不受LocalAccountTokenFilterPolicy限制,所以當獲取到高權限域用戶憑據時,可以比較方便地進行橫向。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM