
نسخة بلغة C# من SysWhispers2. تستخدم SharpASM للعثور على كهوف الكود لتنفيذ كعب استدعاء النظام.

نسخة C# من SysWhispers2.
تستخدم SharpASM للعثور على فجوات الكود (code caves) لتنفيذ كعب استدعاء النظام (system call stub).
اقرأ مقال المدونة للتفاصيل التقنية: https://www.secforce.com/blog/sharpasm-sharpwhispers/
______ _ ____ _
/ __/ / ___ ________| | /| / / / (_)__ ___ ___ _______
_\ \/ _ \/ _ `/ __/ _ \ |/ |/ / _ \/ (_-</ _ \/ -_) __(_-<
/___/_//_/\_,_/_/ / .__/__/|__/_//_/_/___/ .__/\__/_/ /___/
/_/ /_/
@d_glenx
@SECFORCE_LTD
=============================================================
usage: SharpWhispers.py [-h] [-p PRESET] [-f FUNCTIONS] -o OUT_FILE
optional arguments:
-h, --help show this help message and exit
-p PRESET, --preset PRESET
Preset ("all", "common", "dinvoke")
-f FUNCTIONS, --functions FUNCTIONS
Comma-separated functions
-o OUT_FILE, --out-file OUT_FILE
Output basename (w/o extension)
يتم توفير تعليمات إنشاء مشروع Visual Studio هنا
يتم توفير مثال أساسي لحقن العمليات هنا
في الوقت الحالي، تحتوي ملفات json على البيانات اللازمة لتوليد 33 استدعاء نظام.
ملاحظة: الإعداد المسبق All يحتوي على مجموعة فرعية من جميع استدعاءات النظام.
==== System Calls Imported ====
==[DInvoke]==
[i] Number of Delegates: 13
NtCreateThreadEx
NtCreateSection
NtUnmapViewOfSection
NtMapViewOfSection
NtQueryInformationProcess
NtOpenProcess
NtAllocateVirtualMemory
NtFreeVirtualMemory
NtQueryVirtualMemory
NtProtectVirtualMemory
NtWriteVirtualMemory
NtReadVirtualMemory
NtOpenFile
==[Additional]==
[i] Number of Delegates: 20
NtOpenThread
NtQueueApcThread
NtOpenSection
NtSuspendThread
NtQueryInformationFile
NtSetContextThread
NtResumeProcess
NtOpenProcessToken
NtWaitForMultipleObjects
NtQueryDirectoryFile
NtAdjustPrivilegesToken
NtQuerySystemInformation
NtDeviceIoControlFile
NtResumeThread
NtCreateProcess
NtSuspendProcess
NtGetContextThread
NtClose
NtQueryInformationThread
NtTestAlert
NtCreateThreadEx
NtCreateSection
NtUnmapViewOfSection
NtMapViewOfSection
NtQueryInformationProcess
NtAllocateVirtualMemory
NtFreeVirtualMemory
NtProtectVirtualMemory
NtWriteVirtualMemory
NtOpenFile
NtReadVirtualMemory
NtQueryVirtualMemory
NtOpenProcess
NtCreateThreadEx
NtCreateSection
NtUnmapViewOfSection
NtMapViewOfSection
NtQueryInformationProcess
NtOpenProcess
NtAllocateVirtualMemory
NtFreeVirtualMemory
NtQueryVirtualMemory
NtProtectVirtualMemory
NtWriteVirtualMemory
NtReadVirtualMemory
NtOpenFile
يتم توليده ديناميكيًا
يحتوي على مفوضيات (delegates) استدعاءات النظام المطلوب توليدها.
يعتمد على SharpASM
أداة مساعدة للحصول على عنوان PEB باستخدام ASM.
يحتوي على الكود لاستدعاء ASM ديناميكيًا في c#.
يمكن استخدام الدالة public static IntPtr callASM(byte[] stub) لاستدعاء الشيل كود (shellcode) عن طريق تمرير مصفوفة بايتات.
يتم توليده ديناميكيًا - يقوم البرنامج النصي بتوليد بذرة عشوائية (random seed) لتجزئة أسماء استدعاءات النظام
يحتوي على الكود لاسترجاع أرقام استدعاءات النظام باستخدام ElephantSe4l وتقنيته (كود منقول من SysWhispers2).
يعتمد على SharpASM
يحتوي على الكود لتنفيذ استدعاءات النظام ديناميكيًا باستخدام ASM.
يحتوي أيضًا على مغلفات (wrappers) لاستدعاءات النظام (مثل Syscall.NtAllocateVirtualMemory) (يتم توليده ديناميكيًا)
يتم توليده ديناميكيًا
يمكن استخدام ملفات مخرجات SharpWhispers مباشرة في مشروع C#. أنواع البيانات المطلوبة هي مجموعة فرعية من أنواع البيانات المعرفة في مشروع DInvoke (بعض أنواع البيانات مستعارة في الواقع من مشروع Rastamouse المصغر) وذلك لتقليل سطح الاكتشاف. يتم تعريف أنواع البيانات في مساحة الاسم SharpWhisper.Data لتجنب التداخل مع تعريفات DInvoke.
ملاحظة: يتم توليد أنواع البيانات فقط عند الحاجة (أي إذا كان استدعاء النظام يحتاج إلى نوع بيانات) لتقليل سطح الاكتشاف.
تُستخدم القوالب التالية لتوليد أنواع البيانات المطلوبة: