
.NET, PE, و Raw Shellcode Packer/Loader مكتوب بلغة Nim
Nimcrypt2 هي أداة أخرى لتعبئة/تحميل ملفات PE مصممة لتجاوز برامج مكافحة الفيروسات/EDR. إنه تحسين لمشروعي الأصلي Nimcrypt، مع التحسينات الرئيسية المتمثلة في استخدام استدعاءات النظام المباشرة والقدرة على تحميل ملفات PE العادية بالإضافة إلى شيل كود خام.
قبل المضي قدمًا، يجب أن أعترف بفضل أولئك الذين قاموا بالغالبية العظمى من العمل والبحث الذي يعتمد عليه هذا المشروع. أولاً، يجب أن أشكر @byt3bl33d3r على مستودع Offensive Nim، و @ShitSecure على كل مقتطفات الكود التي أصدرها علنًا. هذا هو الأساس الذي تم إنشاء النسخة الأصلية من هذه الأداة منه، والنسخة الحالية لا تختلف. على وجه الخصوص، وظيفة تحميل PE الجديدة المستخدمة في هذه الأداة هي مجرد تطبيق لرمز Nim-RunPE الذي أصدره ShitSecure مؤخرًا Nim-RunPE. اعتبارًا من 14/3/22، يستخدم هذا الكود أيضًا رمز GetSyscallStub الخاص به لاستخدام استدعاءات النظام الديناميكية. أشجع بشدة على دعمه ماليًا للوصول إلى Nim PE Packer الخاص به، والذي لا شك أنه نسخة أفضل وأكثر ميزات من هذه الأداة.
بالإضافة إلى ذلك، أود أن أشكر @ajpc500 على مشروعه NimlineWhispers2 الذي تستخدمه هذه الأداة لاستدعاءات النظام المباشرة. لا يمكنني التأكيد بما فيه الكفاية على أن هذا المشروع هو مجرد تجميع للعمل العام لأولئك المذكورين سابقًا، لذا يجب أن تذهب كل الفضل إليهم.
___
.-' `'.
/ \
| ;
| | ___.--,
_.._ |0) ~ (0) | _.---'`__.-( (_.
__.--'`_.. '.__.\ '--. \_.-' ,.--'` `""`
( ,.--'` ',__ /./; ;, '.__.'` __
_`) ) .---.__.' / | |\ \__..--"" ""'--.,_
`---' .'.''-._.-'`_./ /\ '. \ _.-~~~````~~~-._`-.__.'
| | .' _.-' | | \ \ '. `~---`
\ \/ .' \ \ '. '-._)
\/ / \ \ `=.__`~-. Nimcrypt v2
jgs / /\ `) ) / / `"".`\
, _.-'.'\ \ / / ( ( / / 3-in-1 C#, PE, & Raw Shellcode Loader
`--~` ) ) .-'.' '.'. | (
(/` ( (` ) ) '-;
` '-; (-'
Nimcrypt v 2.0
Usage:
nimcrypt -f file_to_load -t csharp/raw/pe [-o <output>] [-p <process>] [-n] [-u] [-s] [-e] [-g] [-l] [-v] [--no-ppid-spoof]
nimcrypt (-h | --help)
Options:
-h --help Show this screen.
--version Show version.
-f --file filename File to load
-t --type filetype Type of file (csharp, raw, or pe)
-p --process process Name of process for shellcode injection
-o --output filename Filename for compiled exe
-u --unhook Unhook ntdll.dll
-v --verbose Enable verbose messages during execution
-e --encrypt-strings Encrypt strings using the strenc module
-g --get-syscallstub Use GetSyscallStub instead of NimlineWhispers2
-l --llvm-obfuscator Use Obfuscator-LLVM to compile binary
-n --no-randomization Disable syscall name randomization
-s --no-sandbox Disable sandbox checks
--no-ppid-spoof Disable PPID Spoofing
Nimcrypt2 مصمم للاستخدام على أنظمة لينكس مع تثبيت Nim. قبل تثبيت Nim، يجب التأكد من تثبيت الحزم التالية عبر مدير الحزم الخاص بك:
sudo apt install gcc mingw-w64 xz-utils git
لتثبيت Nim، أفضل استخدام choosenim على النحو التالي:
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
echo "export PATH=$HOME/.nimble/bin:$PATH" >> ~/.bashrc
export PATH=$HOME/.nimble/bin:$PATH
Nimcrypt2 يعتمد أيضًا على بعض الحزم التي يمكن تثبيتها عبر Nimble. يمكن القيام بذلك كالتالي:
nimble install winim nimcrypto docopt ptr_math strenc
مع تثبيت جميع التبعيات الآن، يمكن تجميع Nimcrypt2 كالتالي:
nim c -d=release --cc:gcc --embedsrc=on --hints=on --app=console --cpu=amd64 --out=nimcrypt nimcrypt.nim
اختياري: لاستخدام علامة Obfuscator-LLVM، يجب أن يكون مثبتًا على نظامك إلى جانب wclang. وجدت أن هذا أمر مزعج بعض الشيء ولكن يجب أن تكون قادرًا على فعله بقليل من المثابرة. إليك خطوات سريعة عملت على نظام Kali Linux الخاص بي:
بالإضافة إلى ذلك، يجب إضافة الأسطر التالية إلى ملف nim.cfg الخاص بك لتوجيه nim إلى ملفات wclang الثنائية:
amd64.windows.clang.exe = "x86_64-w64-mingw32-clang"
amd64.windows.clang.linkerexe = "x86_64-w64-mingw32-clang"
amd64.windows.clang.cpp.exe = "x86_64-w64-mingw32-clang++"
amd64.windows.clang.cpp.linkerexe = "x86_64-w64-mingw32-clang++"
من المحتمل أن تكون هناك طريقة أفضل للقيام بذلك ولكن هذا ما نجح معي. إذا واجهت مشكلات، استمر في المحاولة وتأكد من أنك تستطيع تشغيل x86_64-w64-mingw32-clang -v ويظهر "Obfuscator-LLVM" في المخرجات. تأكد أيضًا من أن MinGW يستخدم ملفات مكتبات Obfuscator-LLVM: سيعطيك Nim خطأ إذا لم يكن كذلك.