
LittleCorporal: مولد وثائق ضارة آلي بلغة C#
ليتل كوربورال: أداة توليد مستندات خبيثة آلية بلغة C#
C:\LittleCorporal\bin\Release>LittleCorporal.exe C:\beacon.bin explorer.exe
.____ .__ __ __ .__ _________ .__
| | |__|/ |__/ |_| | ____ \_ ___ \ _________________ ________________ | |
| | | \ __\ __\ | _/ __ \/ \ \/ / _ \_ __ \____ \ / _ \_ __ \__ \ | |
| |___| || | | | | |_\ ___/\ \___( <_> ) | \/ |_> > <_> ) | \// __ \| |__
| _______ \__||__| |__| |____/\___ >\______ /\____/|__| | __/ \____/|__| (____ /____/
\/ \/ \/ |__| \/
________
/ \
__ / (o)\__
/ ______\ \ I am the strongest debater in the whole Conseil.
| ____/__ __\____| I let myself be attacked, because I know how to defend myself.
[ --~~-- ] - Napoleon Bonaparte
| ( L )|
___----\ __ /----___
/ | < \____/ > | \
/ | < \--/ > | \
|||||| \ \/ / ||||||
| \ / o |
| | \/ === | |
| | |o ||| | |
| \______| +#* | |
| |o | |
\ | / /
|\__________|o / /
| | / /
[+] Parsed Arguments:
[>] Shellcode Path: C:\beacon.bin
[>] Target Process: explorer.exe
[+] Embedded shellcode in Loader.cs!
[+] Generated C# Loader artifact!
[+] Ran the .NET assembly through Donut!
[+] Donut artifact is located at: C:\LittleCorporal\Artifacts\payload.bin
[+] Path to Word document: C:\LittleCorporal\Artifacts\Form.doc
يرجى قراءة ملف README بأكمله قبل الاستخدام!
يقبل LittleCorporal وسيطًا يحدده المستخدم لعملية يتم حقنها في جهاز بعيد، حيث تخطط لتنفيذ مستند Word الخبيث عليه، ويقبل أيضًا مسارًا إلى ملف shellcode محلي مخزن بصيغة .bin - مثل كتلة shellcode غير المصحوبة بحالة (Stageless Beacon) على الجهاز الذي تشغّل منه LittleCorporal. لذا، إذا كنت ترغب في استخدام المستند الخبيث المولد من هذا المشروع، فستحتاج إلى تحديد عملية قيد التشغيل بالفعل على الجهاز الذي تنوي تشغيل المستند عليه (سواء كان الجهاز المحلي أو جهازًا آخر. explorer.exe لديه دائمًا نسخة واحدة، لذا استخدمه إذا كنت لا تهتم بالعملية التي تحقن فيها).
يقوم LittleCorporal بتضمين الـ shellcode واسم العملية المستهدفة في Loader.cs، ويقوم بتجميع Loader.cs فوريًا في ملف .NET .exe، ثم يستخدم اختطاف الخيط لإجراء حقن العملية عن بُعد. يتم إرسال ملف .NET .exe، وهو محمل اختطاف الخيط، عبر Donut لتوليد شيفرة shellcode مستقلة عن الموضع، والتي ستنفذ ملف .exe. يتم بعد ذلك ترميز شيفرة shellcode المولدة من Donut بتشفير base64، ويتم إنشاء مستند Word، ويتم تخزين كتلة Donut النهائية في خاصية InlineShape.AlternativeText من Word، القادرة على احتواء الحمولة بالكامل. يتم ذلك عن طريق إدراج صورة (حاليًا صورة فارغة، تعطي المستند مظهرًا "فارغًا") في المستند، كنص بديل على الصورة يحتوي على الحمولة. ثم يستفيد LittleCorporal من "قالب" VBA، موجود في هذا المشروع كملف نصي، ويحقن هذا الماكرو في مستند Word المنشأ حديثًا. يتم تسمية الماكرو بـ autoopen، بحيث يُفتح عند فتح المستند، ثم يتم تكوينه لاستخراج قيمة النص البديل للصورة التي تم إنشاؤها سابقًا، والتي تحتوي على الحمولة النهائية، وفك تشفير base64، وأخيرًا استخدام استدعاءات Windows API في VBA لإجراء حقن محلي في Word. باختصار، يستخدم هذا المشروع "محملًا" بسيطًا في VBA لإجراء حقن محلي في Word، وهو أقل تدقيقًا من حقن العملية عن بُعد، ثم يستخدم التنفيذ من خلال الحقن المحلي البسيط لتنفيذ شيفرة Donut shellcode، وهو محمل آخر يقوم باختطاف الخيط لحقن العملية البعيدة النهائي لشيفرة shellcode المقدمة من المستخدم في العملية المحددة من قبله. يتم كل هذا بطريقة آلية، بما في ذلك إنشاء مستند Word.
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\) وعلى الجهاز المستهدف الذي تخطط لتشغيل المستند عليه.LittleCorporal.exe عليه. وذلك لأن LittleCorporal يحتاج إلى التفاعل عبر COM مع Word. يرجى ملاحظة أيضًا أن مستند Word المُنشأ يسحب صورة فارغة من الإنترنت - مما يعني أنك ستحتاج إلى اتصال بالإنترنت على الكمبيوتر الذي تشغّل عليه LittleCorporal وعلى الجهاز البعيد الذي تخطط لتفجير مستند Word عليه.CONTEXT 64-bit، الذي يحتوي على أنواع بيانات خاصة بـ 64-bit. وذلك لأن اختطاف الخيط مدعوم حاليًا فقط على الأنظمة 64-bit، حيث يتطلب شيفرة shellcode مخصصة تلتزم باتفاقية الاستدعاء __fastcall. لا أخطط لتنفيذ إصدار 32-bit من إمكانية اختطاف الخيط، ولكن إذا كان هناك طلب سحب (pull request) لدعم 32-bit في المستقبل، نظرًا لأن العديد من تثبيتات Microsoft Word هي 32-bit، فلن أستبعد هذا الأمر تمامًا. من منظور منطقي، لا ينبغي أن يكون الإصلاح كبيرًا، المشكلة تكمن في عبء وصعوبة تتبع المكدس عند الانتقال من __fastcall إلى __stdcall وحساب الإزاحات الجديدة. هذا ليس معقدًا من الناحية الفنية، لكنه شاق بعض الشيء.bool FUNC1 = true; قبل تشغيل لإنشاء مستند Word.إذا كنت تخطط لاستخدام هذا المشروع في عمليات الفريق الأحمر النشطة، فيرجى التفكير في تعيين وظيفة "الخروج" (Exit) لشيفرة shellcode الخاصة بك لإجراء خروج "نظيف" مع خروج الخيط، بدلاً من قتل العملية التي توجد بها شيفرة shellcode تمامًا. يمكن تكوين ذلك باستخدام msfvenom عبر EXITFUNC=thread، ويمكن أيضًا تكوينه في Cobalt Strike عبر Aggressor.
bin\Release (cd C:\Path\to\LittleCorporal\bin\Release). يُوصى، إذا اخترت إعادة تجميع هذا المشروع، باستخدام إصدار Release بدلاً من Debug.LittleCorporal.exe والعملية قيد التشغيل بالفعل على الجهاز الذي ترغب في تنفيذ مستند Word عليه. (LittleCorporal.exe C:\Path\To\Shellcode.bin explorer.exe)LittleCorporal.exe cleanLittleCorporal.exe