macOS .Net Applications Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Hii ni muhtasari wa chapisho https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/. Angalia kwa maelezo zaidi!
Usimamizi wa mawasiliano kati ya debugger na debuggee katika .NET unashughulikiwa na dbgtransportsession.cpp. Kipengele hiki kinaanzisha bomba mbili zenye majina kwa kila mchakato wa .NET kama inavyoonekana katika dbgtransportsession.cpp#L127, ambazo zinaanzishwa kupitia twowaypipe.cpp#L27. Mabomba haya yanaishia na -in
na -out
.
Kwa kutembelea $TMPDIR
ya mtumiaji, mtu anaweza kupata FIFOs za ufuatiliaji zinazopatikana kwa ajili ya programu za .Net.
DbgTransportSession::TransportWorker inawajibika kwa usimamizi wa mawasiliano kutoka kwa debugger. Ili kuanzisha kikao kipya cha ufuatiliaji, debugger lazima itume ujumbe kupitia bomba la out
linaloanza na muundo wa MessageHeader
, ulioelezwa katika msimbo wa chanzo wa .NET:
Ili kuomba kikao kipya, muundo huu unajazwa kama ifuatavyo, ukipanga aina ya ujumbe kuwa MT_SessionRequest
na toleo la protokali kuwa toleo la sasa:
Hii kichwa kisha kinatumwa kwa lengo kwa kutumia syscall ya write
, ikifuatwa na muundo wa sessionRequestData
unao zawadi ya GUID kwa ajili ya kikao:
Operesheni ya kusoma kwenye bomba la out
inathibitisha mafanikio au kushindwa kwa kuanzishwa kwa kikao cha ufuatiliaji:
Mara tu kikao cha ufuatiliaji kimeanzishwa, kumbukumbu inaweza kusomwa kwa kutumia MT_ReadMemory
aina ya ujumbe. Kazi readMemory inaelezewa kwa undani, ikifanya hatua zinazohitajika kutuma ombi la kusoma na kupata jibu:
The complete proof of concept (POC) is available here.
Vivyo hivyo, kumbukumbu inaweza kuandikwa kwa kutumia kazi ya writeMemory
. Mchakato unahusisha kuweka aina ya ujumbe kuwa MT_WriteMemory
, kubainisha anwani na urefu wa data, na kisha kutuma data:
The associated POC is available here.
Ili kutekeleza msimbo, mtu anahitaji kubaini eneo la kumbukumbu lenye ruhusa za rwx, ambalo linaweza kufanywa kwa kutumia vmmap -pages:
Kuweka mahali pa kufuta kiashiria cha kazi ni muhimu, na katika .NET Core, hii inaweza kufanywa kwa kulenga Dynamic Function Table (DFT). Meza hii, iliyoelezwa katika jithelpers.h
, inatumika na mfumo wa uendeshaji kwa kazi za msaada wa JIT.
Kwa mifumo ya x64, uwindaji wa saini unaweza kutumika kupata rejeleo kwa alama _hlpDynamicFuncTable
katika libcorclr.dll
.
Kazi ya ku-debug MT_GetDCB
inatoa taarifa muhimu, ikiwa ni pamoja na anwani ya kazi ya msaada, m_helperRemoteStartAddr
, ikionyesha mahali pa libcorclr.dll
katika kumbukumbu ya mchakato. Anwani hii kisha inatumika kuanza kutafuta DFT na kufuta kiashiria cha kazi kwa anwani ya shellcode.
Msimu kamili wa POC wa sindano katika PowerShell unapatikana hapa.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)