السلام عليكم ورحمة الله وبركاته اليوم راح أتكلم عن هجوم Ret2Syscall x86/x64
حسابي في التويتر هنا
ماهو SysCall ؟
يكون وسيط بين User و Kernel عندما يريد User من Kernel تنفيذ شيء يستعمل Syscall كي يطلب منها -> هنا جدول Syscalls
ماهو Ret2Syscall ؟
هو أستخدام Syscall كي نستدعي أي Funcations نريدها مثال أن نستدعي execve
ماهي execve
هي function في لغة c تستخدم لأجل أغلاق البرنامج و تشغيل برنامج آخر لمزيد من المعلومات تجدها هنا
مثال على أستخدام execve
#include unistd.h
int main() {
char binary[] = "/bin/sh";
execve(binary,NULL,NULL);
return 0;
}
//Note 0 == NULL
//To Compile it use gcc
//gcc execve.c -o execve
متطلبات الهجوم في معمارية x86
To use any funcation from syscalls table
===========================================
EAX, arg0 (sys-call number loaded here)
EBX, arg1
ECX, arg2
EDX, arg3
ESI, arg4
EDI, arg5
EBP, arg6
===========================================
//التعليمات التي نحتاجها
pop eax ; ret
pop ecx ; ret
pop ebx ; ret
pop edx ; ret
int 0x80 //is execute this code 'execve("/bin/sh",NULL,NULL)'