
AddInProcess.exe के माध्यम से .NET डिसेरियलाइज़ेशन का दुरुपयोग करके प्रारंभिक पहुँच पेलोड उत्पन्न करता है, जो मेमोरी में कोड निष्पादन के लिए HTA, VBA, JS और CHM टेम्पलेट्स का समर्थन करता है।
.-.
[.-''-.,
| //`~\)
(<| 0\0|>_
";\ _"/ \\_ _,
__\|'._/_ \ '='-,
/\ \ || )_///_\>>
( '._ T |\ | _/),-'
'. '._.-' /'/ |
| '._ _.'`-.._/
,\ / '-' |/
[_/\-----j
_.--.__[_.--'_\__
/ `--' '---._
/ '---. -'. .' _.-- '.
\_ '--.___ _;.-o /
'.__ ___/______.__8----'
c-'----'
Lefty @lefterispan - Nettitude Red Team - 2022 / 2023
अलादीन एक पेलोड जनरेशन तकनीक है जो जेम्स फोरशॉ (@tiraniddo) के काम पर आधारित है, जो .NET पेलोड के डिसीरियलाइज़ेशन और मेमोरी में निष्पादन की अनुमति देती है। मूल वेक्टर को https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html पर दस्तावेज़ित किया गया था।
AddInProcess.exe प्रक्रिया को /guid:32a91b0f-30cd-4c75-be79-ccbd6345de99 और /pid: आर्गुमेंट्स के साथ स्पॉन करके, प्रक्रिया \\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99 के नीचे एक नामित पाइप शुरू करेगी और .NET रिमोटिंग ऑब्जेक्ट की प्रतीक्षा करेगी। यदि हम एक पेलोड उत्पन्न करते हैं जिसमें .NET रिमोटिंग लिसनर के साथ संचार के लिए आवश्यक उपयुक्त पैकेट बाइट्स हैं, तो हम System.Workflow.ComponentModel से ActivitySurrogateSelector क्लास को ट्रिगर करने और कोड निष्पादन प्राप्त करने में सक्षम होंगे।
मूल रूप से, जेम्स फोरशॉ ने https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData पर एक POC जारी किया था। हालाँकि यह POC विंडोज के हाल के संस्करणों पर विफल हो जाएगा क्योंकि माइक्रोसॉफ्ट ने आगे बढ़कर कमजोर System.Workflow.ComponentModel को पैच कर दिया (https://github.com/microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/dotnet-48-changes.md)।
हालाँकि, निक लैंडर्स (@monoxgas) ने माइक्रोसॉफ्ट द्वारा शुरू की गई जांच को अक्षम करने का एक तरीका खोजा और https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/ पर एक विस्तृत लेख लिखा। बाईपास को https://github.com/pwntester/ysoserial.net/pull/41 पर दस्तावेज़ित किया गया है।
अलादीन एक पेलोड जनरेशन टूल है, जो विशिष्ट बाईपास और .NET रिमोटिंग प्रोटोकॉल के आवश्यक हेडर बाइट्स का उपयोग करके प्रारंभिक पहुँच पेलोड उत्पन्न करने में सक्षम है जो मूल रूप से दस्तावेज़ित AddInProcess का दुरुपयोग करते हैं।
प्रदान किए गए टेम्पलेट हैं:
* HTA
* VBA
* JS
* CHM
हमले के सफल होने के लिए, .NET असेंबली में डिसीरियलाइज़ेशन के दौरान प्रवेश बिंदु के रूप में कार्य करने के लिए एक खाली कंस्ट्रक्टर के साथ एक एकल सार्वजनिक क्लास होनी चाहिए। प्रोजेक्ट में एक उदाहरण असेंबली शामिल की गई है।
public class EntryPoint {
public EntryPoint() {
MessageBox.Show("Hello");
}
}
Usage:
-w, --scriptType=VALUE Set to js / hta / vba / chm.
-o, --output=VALUE The generated output, e.g: -o
C:\Users\Nettitude\Desktop\payload
-a, --assembly=VALUE Provided Assembly DLL, e.g: -a
C:\Users\Nettitude\Desktop\popcalc.dll
-h, --help Help
उपयोगकर्ता द्वारा प्रदान की गई .NET बाइनरी को AddInProcess.exe के तहत निष्पादित किया जाएगा जो HTA/JS पेलोड से स्पॉन किया जाता है। प्रक्रियाओं का स्पॉनिंग वर्तमान में 9BA05972-F6A8-11CF-A442-00A0C90A8F39 COM ऑब्जेक्ट का उपयोग करके होता है (https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf) जो प्रक्रिया को Explorer.exe प्रक्रिया के चाइल्ड के रूप में लॉन्च करेगा।
AddInProcess.exe के प्रक्रिया पैरामीटर में दिया गया GUID उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है। फिलहाल GUID टेम्पलेट और कोड में हार्डकोडेड है।
CHM XSLT रूपांतरण के माध्यम से JScript निष्पादित करता है।
Addinprocess.exe हमेशा /guid और /pid के साथ लॉन्च होगा। वैध उपयोगों के लिए अपने वातावरण का आधार रेखा निर्धारित करें - बाकी की निगरानी करें।* https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html
* https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/
कोड निम्नलिखित रिपॉजिटरी पर आधारित है:
* https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
* https://github.com/pwntester/ysoserial.net
विशेष धन्यवाद: