#Github #Internals
Windows System Call Tables (NT/2000/XP/2003/Vista/2008/7/2012/8/10)
(win32k.sys).
The interface between a process and an operating system is provided by system calls. In general, system calls are available as assembly language instructions. They are also included in the manuals used by the assembly level programmers.
🌐 Website
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
Windows System Call Tables (NT/2000/XP/2003/Vista/2008/7/2012/8/10)
(win32k.sys).
The interface between a process and an operating system is provided by system calls. In general, system calls are available as assembly language instructions. They are also included in the manuals used by the assembly level programmers.
🌐 Website
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
#Github #Internals
Another Repo with more details about Windows System Call Tables.
🌐 Website
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
Another Repo with more details about Windows System Call Tables.
🌐 Website
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
#Website #Internals
Useful websites that cover undocumented structures. Low-level programer's guide to Windows NT Kernel, Native API and Drivers.
🌐 Vergilius Project - Terminus Project - NT Internals
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
Useful websites that cover undocumented structures. Low-level programer's guide to Windows NT Kernel, Native API and Drivers.
🌐 Vergilius Project - Terminus Project - NT Internals
Telegram Channel : @securebyte
Our Public Group : https://t.me/joinchat/8IAKs9HaoGU2NmE0
_
#Internals
🔸Windows Internals Crash Course by Duncan Ogilvie the creator and maintainer ofx64dbg
ویدیو دوره ویندوز اینترنالز توسط Duncan Ogilvie نویسنده دیباگر x64dbg
دانلود به صورت مستقیم به همراه زیرنویس انگلیسی و فایل های اسلاید و متریال
🦅 کانال بایت امن | گروه بایت امن
_
🔸Windows Internals Crash Course by Duncan Ogilvie the creator and maintainer ofx64dbg
ویدیو دوره ویندوز اینترنالز توسط Duncan Ogilvie نویسنده دیباگر x64dbg
دانلود به صورت مستقیم به همراه زیرنویس انگلیسی و فایل های اسلاید و متریال
_
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤9👍4👎2
#Syscall #Internals
🔸Windows NT x64 Syscall tables
رفرنسی از فراخوانی های سیستمی در سری NT x64 شامل Ntoskrnl Service Tables و Win32k Service Tables
🦅 کانال بایت امن | گروه بایت امن
_
🔸Windows NT x64 Syscall tables
رفرنسی از فراخوانی های سیستمی در سری NT x64 شامل Ntoskrnl Service Tables و Win32k Service Tables
_
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥3👍1
#Syscall #Internals
🔸(In)direct Syscalls: A journey from high to low by DEF CON 31 workshop
اسلاید و سایر متریال های مرتبط با ورکشاپ DEF CON 31 با موضوع فراخوانی های سیستمی به صورت مستقیم و غیر مستقیم در سری NT ویندوز.
🦅 کانال بایت امن | گروه بایت امن
_
🔸(In)direct Syscalls: A journey from high to low by DEF CON 31 workshop
اسلاید و سایر متریال های مرتبط با ورکشاپ DEF CON 31 با موضوع فراخوانی های سیستمی به صورت مستقیم و غیر مستقیم در سری NT ویندوز.
_
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Forwarded from OS Internals (Abolfazl Kazemi)
سرقت توکن پروسهها در ویندوز به کمک WinDbg
توکن یا به صورت کاملتر Access Token در ویندوز، یک شی است که شرایط امنیتی که یک پروسه یا نخ تحت آن میتوانند کار کنند را مشخص میکند. توکن با احراز هویت موفق یک کاربر ایجاد شده و هر پروسهای که توسط کاربر ایجاد شود، یک نسخه از آنرا خواهد داشت.
ویندوز از توکن در زمانیکه یک نخ تلاشی برای دسترسی به یک شی میکند استفاده میکند که کاربر را تشخیص داده و بررسی کند که آیا کاربر مجوز دسترسی به شی مورد نظر را دارد یا خیر. به عنوان مثال فرض کنید که با notepad قصد باز کردن یک فایل را داشته باشید. در این مثال پروسهی notepad توسط کاربر شما ایجاد شده و در نتیجه توکن آنرا خواهد داشت. شی مورد دسترسی نیز فایلی است که برای آن دسترسی خاصی تعریف شده و باید بررسی شود که آیا توکن مورد نظر مجوز دسترسی به فایل را دارد یا باید جلوی این دسترسی توسط ویندوز گرفته شود.
برخی از اطلاعاتی که توسط توکن مشخص میشوند عبارتند از: شناسه یا SID کاربر. شناسهی گروههایی که کاربر عضوی از آنهاست. شناسهی نشست جاری. لیستی از مجوزهایی که کاربر یا گروههای آن دارند.
یکی از کارهایی که با توکنها قابل انجام بوده و در سرویسها کاربرد زیادی دارد impersonation است. در این مدل، یک نخ با توکن متفاوتی از توکن اصلی خود اجرا شده و در نتیجه مجوزهای متفاوتی خواهد داشت. به عنوان مثال فرض کنید یک File Server دارید که فایلهای آن محدودیتهای دسترسی متفاوتی دارند. در این مثال، سرور با انجام impersonation درخواست هر کلاینت را با توکن همان کلاینت پاسخ داده و در نتیجه هر کاربر تنها به فایلهای خود دسترسی خواهد داشت.
یکی از کارهایی که بدافزارها از آن بهره میبرند همین بحث impersonation و دسترسی به منابع مختلف، مثل dump اطلاعات کاربران، است. در این حالت بدافزار توکن یک پروسه با دسترسی بالا را دزدیده و از آن برای مقاصد خود استفاده میکند.
در این ویدئو به کمک WinDbg مفهوم توکن و شیوهی دزدیدن و قرار دادن آن بر روی پروسهی دلخواهی شرح داده میشود که هم با موضوع توکن آشنا شده و هم به صورت عملی ببینیم که بدافزارها چطور میتوانند از impersonation سواستفاده کنند.
لینک ویدئو در یوتیوب:
https://youtu.be/NTPVeauBDe4
لینک ویدئو در آپارات:
https://www.aparat.com/v/cvyprh5
#ShortWinInternals #windows #internals #token #WinDbg #impersonation #kernel
توکن یا به صورت کاملتر Access Token در ویندوز، یک شی است که شرایط امنیتی که یک پروسه یا نخ تحت آن میتوانند کار کنند را مشخص میکند. توکن با احراز هویت موفق یک کاربر ایجاد شده و هر پروسهای که توسط کاربر ایجاد شود، یک نسخه از آنرا خواهد داشت.
ویندوز از توکن در زمانیکه یک نخ تلاشی برای دسترسی به یک شی میکند استفاده میکند که کاربر را تشخیص داده و بررسی کند که آیا کاربر مجوز دسترسی به شی مورد نظر را دارد یا خیر. به عنوان مثال فرض کنید که با notepad قصد باز کردن یک فایل را داشته باشید. در این مثال پروسهی notepad توسط کاربر شما ایجاد شده و در نتیجه توکن آنرا خواهد داشت. شی مورد دسترسی نیز فایلی است که برای آن دسترسی خاصی تعریف شده و باید بررسی شود که آیا توکن مورد نظر مجوز دسترسی به فایل را دارد یا باید جلوی این دسترسی توسط ویندوز گرفته شود.
برخی از اطلاعاتی که توسط توکن مشخص میشوند عبارتند از: شناسه یا SID کاربر. شناسهی گروههایی که کاربر عضوی از آنهاست. شناسهی نشست جاری. لیستی از مجوزهایی که کاربر یا گروههای آن دارند.
یکی از کارهایی که با توکنها قابل انجام بوده و در سرویسها کاربرد زیادی دارد impersonation است. در این مدل، یک نخ با توکن متفاوتی از توکن اصلی خود اجرا شده و در نتیجه مجوزهای متفاوتی خواهد داشت. به عنوان مثال فرض کنید یک File Server دارید که فایلهای آن محدودیتهای دسترسی متفاوتی دارند. در این مثال، سرور با انجام impersonation درخواست هر کلاینت را با توکن همان کلاینت پاسخ داده و در نتیجه هر کاربر تنها به فایلهای خود دسترسی خواهد داشت.
یکی از کارهایی که بدافزارها از آن بهره میبرند همین بحث impersonation و دسترسی به منابع مختلف، مثل dump اطلاعات کاربران، است. در این حالت بدافزار توکن یک پروسه با دسترسی بالا را دزدیده و از آن برای مقاصد خود استفاده میکند.
در این ویدئو به کمک WinDbg مفهوم توکن و شیوهی دزدیدن و قرار دادن آن بر روی پروسهی دلخواهی شرح داده میشود که هم با موضوع توکن آشنا شده و هم به صورت عملی ببینیم که بدافزارها چطور میتوانند از impersonation سواستفاده کنند.
لینک ویدئو در یوتیوب:
https://youtu.be/NTPVeauBDe4
لینک ویدئو در آپارات:
https://www.aparat.com/v/cvyprh5
#ShortWinInternals #windows #internals #token #WinDbg #impersonation #kernel
YouTube
Token Stealing using WinDbg in Local Kernel Debugging [PER]
توکن یا به صورت کاملتر Access Token در ویندوز، یک شی است که شرایط امنیتی که یک پروسه یا نخ تحت آن میتوانند کار کنند را مشخص میکند. توکن با احراز هویت موفق یک کاربر ایجاد شده و هر پروسهای که توسط کاربر ایجاد شود، یک نسخه از آنرا خواهد داشت.
ویندوز از…
ویندوز از…
❤13👍1🔥1
Forwarded from OS Internals (Abolfazl Kazemi)
مروری بر پروسههای کرنلی لینوکس
در لینوکس برخی از پروسهها بخش user space نداشته و کامل در دل کرنل اجرا میشوند. این پروسهها در اجرای کارهای مختلف به سیستمعامل کمک کرده و به صورت background کارهایی که نیاز است انجام شوند که لینوکس بتواند سرویسدهی موارد مختلف را انجام دهد مدیریت میکنند. در این پست و ویدئو برخی از این پروسهها معرفی شده و کاربردهای مختلف آنها شرح داده میشود.
اولین پروسه (نخ) کرنلی لینوکس kthreadd است که وظیفهی ایجاد یک interface برای ایجاد و مدیریت پروسههای کرنلی در لینوکس را داشته و همیشه با PID برابر ۲ اجرا میشود. در کد این نخ یک حلقهی بینهایت وجود دارد که از لیستی به اسم kthread_create_list اطلاعات پروسهی کرنلی که قرار است ایجاد شود را برداشته و آنرا ایجاد میکند. تمامی پروسههای کرنلی لینوکس از اینجا به بعد فرزندان kthreadd خواهند بود.
پروسهی بعدی که معرفی میکنیم migration است. از پروسهی کرنلی migration به تعداد coreهای cpu خواهیم داشت و وظیفهی آن مدیریت پروسههایی است که بر روی یک core اجرا میشوند و در صورت زیاد بودن بار بر روی یک core یک پروسه را از روی run_queue یک core بر داشته و بر روی run_queue یک core دیگر قرار میدهد.
پروسهی دیگری که در ویدئو در مورد آن صحبت شده است kcompactd است که وظیفهی آن جلوگیری از ایجاد fragmentation در حافظه و کمک به کنارهم قرار گرفتن pageهای مرتبط در حافظه است.
یک پروسهی جالب دیگر oom_reaper است که در صورتیکه سیستمعامل با کمبود حافظه مواجه شود دست به کار شده و با kill کردن یک پروسه فضای لازم را برای کار مابقی پروسهها فراهم میکند.
در ویدئو در مورد پروسههای بیشتری صحبت شده است که میتوانید با مشاهدهی آن از این پروسهها اطلاع پیدا کنید.
لینک ویدئو در یوتیوب:
https://youtu.be/PsZ5GZhzvqE
لینک ویدئو در آپارات:
https://aparat.com/v/obt29c7
پ.ن ۱: برای اطلاع از جزئیات پروسههای ابتدایی لینوکس پست زیر را مشاهده کنید:
https://t.me/OxAA55/133
پ.ن ۲: برای اطلاع از جزئیات پروسه و نخ در لینوکس پست زیر را مشاهده کنید:
https://t.me/OxAA55/124
#ShortLinuxInternals #linux #internals #programming #kernel #memory #threads #processes #kernel_threads
در لینوکس برخی از پروسهها بخش user space نداشته و کامل در دل کرنل اجرا میشوند. این پروسهها در اجرای کارهای مختلف به سیستمعامل کمک کرده و به صورت background کارهایی که نیاز است انجام شوند که لینوکس بتواند سرویسدهی موارد مختلف را انجام دهد مدیریت میکنند. در این پست و ویدئو برخی از این پروسهها معرفی شده و کاربردهای مختلف آنها شرح داده میشود.
اولین پروسه (نخ) کرنلی لینوکس kthreadd است که وظیفهی ایجاد یک interface برای ایجاد و مدیریت پروسههای کرنلی در لینوکس را داشته و همیشه با PID برابر ۲ اجرا میشود. در کد این نخ یک حلقهی بینهایت وجود دارد که از لیستی به اسم kthread_create_list اطلاعات پروسهی کرنلی که قرار است ایجاد شود را برداشته و آنرا ایجاد میکند. تمامی پروسههای کرنلی لینوکس از اینجا به بعد فرزندان kthreadd خواهند بود.
پروسهی بعدی که معرفی میکنیم migration است. از پروسهی کرنلی migration به تعداد coreهای cpu خواهیم داشت و وظیفهی آن مدیریت پروسههایی است که بر روی یک core اجرا میشوند و در صورت زیاد بودن بار بر روی یک core یک پروسه را از روی run_queue یک core بر داشته و بر روی run_queue یک core دیگر قرار میدهد.
پروسهی دیگری که در ویدئو در مورد آن صحبت شده است kcompactd است که وظیفهی آن جلوگیری از ایجاد fragmentation در حافظه و کمک به کنارهم قرار گرفتن pageهای مرتبط در حافظه است.
یک پروسهی جالب دیگر oom_reaper است که در صورتیکه سیستمعامل با کمبود حافظه مواجه شود دست به کار شده و با kill کردن یک پروسه فضای لازم را برای کار مابقی پروسهها فراهم میکند.
در ویدئو در مورد پروسههای بیشتری صحبت شده است که میتوانید با مشاهدهی آن از این پروسهها اطلاع پیدا کنید.
لینک ویدئو در یوتیوب:
https://youtu.be/PsZ5GZhzvqE
لینک ویدئو در آپارات:
https://aparat.com/v/obt29c7
پ.ن ۱: برای اطلاع از جزئیات پروسههای ابتدایی لینوکس پست زیر را مشاهده کنید:
https://t.me/OxAA55/133
پ.ن ۲: برای اطلاع از جزئیات پروسه و نخ در لینوکس پست زیر را مشاهده کنید:
https://t.me/OxAA55/124
#ShortLinuxInternals #linux #internals #programming #kernel #memory #threads #processes #kernel_threads
آپارات - سرویس اشتراک ویدیو
Going over Linux Kernel Threads
در لینوکس برخی از پروسهها بخش user space نداشته و کامل در دل کرنل اجرا میشوند. این پروسهها در اجرای کارهای مختلف به سیستمعامل کمک کرده و به صورت background کارهایی که نیاز است انجام شوند که لینوکس بتواند سرویسدهی موارد مختلف را انجام دهد مدیریت میکنند.…
🔥16❤2
Forwarded from OS Internals (Abolfazl Kazemi)
ساعتی با حافظهی مجازی در لینوکس
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته و از اینکه واقعا چه مقداری حافظه در سیستم موجود بوده و داده بر روی RAM یا Disk ذخیره میشود اطلاعی نخواهد داشت.
دریافت حافظه از سیستمعامل و نگاشت آن در فضای آدرس دهی پروسهها نیز در واحدهایی به اسم Page و به کمک فراخوانی سیستمی mmap انجام میشود که پیشفرض مقدار 4KB داشته و از یک Page Table برای مشخص کردن اینکه چه فضایی از پروسه در کجای RAM/Disk قرار گرفته است استفاده میشود.
در این ویدئو مفاهیم مربوط به آدرسدهی مجازی Virtual Addressing در لینوکس و بخشهایی که در آن دخیل بوده شرح داده شده و به کمک چند نمونه کد مفاهیم تست میشوند.
برخی از مواردی که در مورد آنها صحبت میکنم به شرح زیر است:
• مقدمهای بر حافظه مجازی و دلیل استفاده از Virtual Addressing
• نحوه نگاشت Page و Frame
• مفهوم Page Table و نقش آن در نگاشت آدرسها
• بررسی فایل proc/iomem/ و نحوه نگاشت حافظه در RAM
• تفاوت Page Faultهای Major و Minor و نحوه مدیریت آنها
• آشنایی با Zoneهای حافظه در لینوکس
• معرفی Slab Allocator و مفهوم کشهای حافظه
• مقایسه روشهای تخصیص حافظه در کرنل kmalloc vs vmalloc
• بررسی اطلاعات در حافظه مجازی و RAM به کمک Qemu
لینک ویدئو در یوتیوب:
https://youtu.be/2bjuqRLFaHc
لینک ویدئو در آپارات:
https://aparat.com/v/xqj64rn
#ShortLinuxInternals #linux #internals #VirtualMemory #MemoryManagement #KernelProgramming #PageTable #PageFault #SlabAllocator #kmalloc #vmalloc #SystemProgramming #EmbeddedLinux
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته و از اینکه واقعا چه مقداری حافظه در سیستم موجود بوده و داده بر روی RAM یا Disk ذخیره میشود اطلاعی نخواهد داشت.
دریافت حافظه از سیستمعامل و نگاشت آن در فضای آدرس دهی پروسهها نیز در واحدهایی به اسم Page و به کمک فراخوانی سیستمی mmap انجام میشود که پیشفرض مقدار 4KB داشته و از یک Page Table برای مشخص کردن اینکه چه فضایی از پروسه در کجای RAM/Disk قرار گرفته است استفاده میشود.
در این ویدئو مفاهیم مربوط به آدرسدهی مجازی Virtual Addressing در لینوکس و بخشهایی که در آن دخیل بوده شرح داده شده و به کمک چند نمونه کد مفاهیم تست میشوند.
برخی از مواردی که در مورد آنها صحبت میکنم به شرح زیر است:
• مقدمهای بر حافظه مجازی و دلیل استفاده از Virtual Addressing
• نحوه نگاشت Page و Frame
• مفهوم Page Table و نقش آن در نگاشت آدرسها
• بررسی فایل proc/iomem/ و نحوه نگاشت حافظه در RAM
• تفاوت Page Faultهای Major و Minor و نحوه مدیریت آنها
• آشنایی با Zoneهای حافظه در لینوکس
• معرفی Slab Allocator و مفهوم کشهای حافظه
• مقایسه روشهای تخصیص حافظه در کرنل kmalloc vs vmalloc
• بررسی اطلاعات در حافظه مجازی و RAM به کمک Qemu
لینک ویدئو در یوتیوب:
https://youtu.be/2bjuqRLFaHc
لینک ویدئو در آپارات:
https://aparat.com/v/xqj64rn
#ShortLinuxInternals #linux #internals #VirtualMemory #MemoryManagement #KernelProgramming #PageTable #PageFault #SlabAllocator #kmalloc #vmalloc #SystemProgramming #EmbeddedLinux
YouTube
Virtual Memory in Linux
یکی از کارهایی که سیستمهای عامل از جمله لینوکس انجام میدهند مدیریت حافظه و ایجاد یک لایهی Abstraction برای پروسههاست که به کمک آن هر پروسهای تصور میکند کل حافظهی موجود در سیستم، معمولا ۳ گیگ در مدل ۳۲بیتی و ۱۲۸ترابایت در مدل ۶۴بیتی، را در اختیار داشته…
❤16👍5