
.NET, PE, और Raw Shellcode Packer/Loader Nim में लिखा गया है
Nimcrypt2 एक और PE पैकर/लोडर है जिसे AV/EDR को बायपास करने के लिए डिज़ाइन किया गया है। यह मेरे मूल Nimcrypt प्रोजेक्ट पर एक सुधार है, जिसमें मुख्य सुधार डायरेक्ट सिस्कॉल का उपयोग और नियमित PE फाइलों के साथ-साथ रॉ शेलकोड को लोड करने की क्षमता है।
आगे बढ़ने से पहले, मुझे उन लोगों को स्वीकार करना होगा जिन्होंने इस प्रोजेक्ट पर निर्भर अधिकांश कार्य और शोध किया है। सबसे पहले, मैं @byt3bl33d3r को उनके Offensive Nim repo के लिए, और @ShitSecure को उनके द्वारा सार्वजनिक रूप से जारी किए गए सभी कोड स्निपेट्स के लिए धन्यवाद देना चाहता हूं। इस टूल का मूल संस्करण उसी से बनाया गया था, और वर्तमान संस्करण भी अलग नहीं है। विशेष रूप से, इस टूल में उपयोग की जाने वाली नई PE लोडिंग कार्यक्षमता, 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 को Linux सिस्टम पर 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 सिस्टम पर काम किया:
इसके अतिरिक्त, आपको अपनी wclang बाइनरी की ओर nim को इंगित करने के लिए अपनी nim.cfg फाइल में निम्नलिखित पंक्तियाँ जोड़नी होंगी:
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 एक त्रुटि देगा।