Monthly Archives: اردیبهشت 1395

آنالیز ساختار ویندوز و روت کیت های سطح هسته-بخش دوم

در ادامه بحث های مطرح شده در آنالیز ساختار ویندوز و روت کیت های سطح هسته-بخش اول  ادامه بحث را دنبال خواهیم کرد.

سطح هسته همانند سطح کاربر دارای هوک های خاص خودش است که معروفترین آن ایجاد تغییرات دلخواه در جداولی است که آدرس توابع مورد نیاز سیستم را در خود نگهداری می کنند:

  • System Service Dispatch Table (SSDT)
  • Interrupt Descriptor Table (IDT)

آدرس توابع سطح کرنل درون جدول SSDT نگهداری می شود(توابع nt*). هنگامیکه روند اجرا یک برنامه سطح کاربر میخواهد به سمت کرنل هدایت شود  ID مرتبط با تابع کرنل درون رجیستر EAX قرار می گیرد و رجیستر EDX به لیست پارامترهای که بایستی به تابع ارجاع داده می شود اشاره می کند، سپس با اجرای دستور int 2e و یا sysenter روند اجرا پروسه به سطح کرنل خواهد رفت.  هنگامیکه وقفه ای رخ می دهد سیستم عامل با جستجو در IDT ، روتین مرتبط با مدیریت آن وقفه را بدست میاورد. این جدول تمامی وقفه ها را درون خود نگهداری می کند. روتین هندل کننده وقفه 0x2e  تابع KiSystemService() از ntoskrnl است. برای بازگشت به سطح کاربر از دستور iret استفاده می شود. در صورتی که از دستور sysenter استفاده شود برای بازگشت به سطح کاربر از دستور sysexit استفاده خواهد شد. برای پشتیبانی از دستور sysenter ویندوز در زمان بوت آدرس روتین مرتبط را بجای IDT در رجیستر  MSR[1]  ذخیره می کند. . اسکریپت زیر را می توانید از این آدرس[2] دریافت نمایید. با دستور زیر در windbg میبینیم که handler این وقفه تابع  KiSystemService() است :

اطلاعات بیشتر

آنالیز ساختار ویندوز و روت کیت های سطح هسته-بخش اول

در این پست و چند پست آتی به نحوه آنالیز و تحلیل Rootkit ها خواهیم پرداخت که پیش نیاز آن، آشنایی با ساختار و تکنیک های مورد استفاده در آنها می باشد. Rootkit ها مختص به یک سیستم عامل و پلتفرم خاص نیستند، در واقع یک اصطلاح می باشد که به دسته خاصی از بدافزارها اشاره می شود. روت کیت هایی برای MS Windows ، Linux ، Cisco IOS و … نوشته شده و می توان نوشت. مایکروسافت درباره روت کیت چنین می گوید که نویسندگان بدافزارها برای پنهان کردن بدافزار از روت کیت ها استفاده می کنند، حال روت کیت بدافزار است یا بخشی از بدافزار و تعریف و تعابیر دیگر از این واژه ، خود را درگیر این قبیل مباحث نخواهیم کرد.

rootkit

Rootkit را می توان به دو بخش root و kit تقسیم کرد تا بهتر به مفهوم آن آشنا شد. سیستم عامل ویندوز به طورکلی به دو سطح تقسیم می شود یعنی Ring0 و Ring3 (به هر سطح Ring گوییم). Ring0 دارای بالاترین سطح دسترسی می باشد که به آن Kernel-mode نیز گفته می شود و همچنین Ring3 دارای کمترین سطح دسترسی که به آن نیز User-mode گوییم.

هر سطح دارای ساختار و ویژگی خاص خود می باشد بنابراین در مبحث دیباگینگ نیز تفاوت هایی وجود دارد. WinDBG دیباگر مایکروسافتی است که می توان در هر دوسطح عمل دیباگ را انجام دهیم ولی نکته قابل توجه کارایی آن است که در Ring3 دیباگر هایی مانند OllyDBG ، ImmunityDBG و… کارایی بهتری را دارا هستند. با توجه به ویژگی های WinDBG ، در دیباگ سطح هسته از آن استفاده می کنیم. راه های دیباگ در windbg را می توان در تصویر زیر مشاهده نمود:

windbg-debug-ways

 

برای دیباگ کرنل به دو صورت Remote و یا Local می توانیم عمل نماییم. Local Debug در سطح هسته بدین معنی است که خود سیستم مان را دیباگ نماییم که در این حالت دارای محدودیت هایی خواهیم بود و کارهایی مانند: توقف در اجرا، قرار دادن نقاط توقف در روند اجرا و امثالهم را نمی توان انجام داد. برای این حالت علاوه بر WinDBG ممکن است به ابزار LiveKD [1]  نیاز شود. در حالت Remote که در واقع بحث اصلی مان خواهد بود، علاوه بر روش های مختلف موجود که محبوبترین آن Serial است با استفاده از ابزار Virtual KD [2]  نیز میتوانید دیباگ را انجام دهید. روش Serial دارای سرعت پایین تری نسبت به Virtual KD می باشد. در حالت Serial سرعتی که داریم   bps  115200 است ولی در Virtual KD  حداکثر سرعت در Virtual Box نیز 450 KB/s  و برای VMware حداکثر 150 KB/s  است. بعد از نصب و راه اندازی Virtual KD در ماشین مجازی براحتی میتوان با استفاده از WinDBG و یا IDA به آن متصل شد و دیباگینگ را انجام دهیم.

اطلاعات بیشتر

تبدیل عدد به حروف در php

گاهی اوقات در پروژه ای نیاز به تبدیل عدد به حروف داریم .این یک تابع برای تبدیل عدد به حروف هست

مهمترین مزیتش هم سبک و کم حجم بودن اون هست که سرعت بالایی داره

 

 

معرفی pycharm یک IDE مطلوب برای پایتون- دانلود برای لینوکس و mac osx + کرک

مقدمه

JetBrains یک شرکت چند ملتی واقع در جمهوری چک میباشد که تمرکز این شرکت روی تولید نرم افزار هایی جهت محیط مجتمع توسعه یا همون IDE می باشد این شرکت محصولات خوبی دارد ولی غریب با اتفاق تمامی محصولاتش closed سورس و تجاری می باشد لذا شما بایستی حتما لایسنس تهیه کنید یا از نسخه های غیر قانونی استفاده کنید.

pycharm.png__470x290_q95_crop

معرفی اجمالی pycharm

pycharm به نظر من بهترین IDE پایتون هست و مهم ترین ویژگی این IDE ویژگی cross platform یا مستقل از سکو بودنش هستش یعنی روی سکو های ویندوز ، لینوکس و مک قابل اجرا است، و علت اصلی این که اکثر محصولات این شرکت این ویژگی را دارند استفاده از بان برنامه نویسی جاوا میباشد و روی همین حساب یه خرده کندی رو به همراه داره اما به صورت کلی خیلی به نسبت سایر برنامه های جاوا بهینه هستش و واقعا توسعه دهنده از پول که میدهد احساس رضایت می کند و از خصیه های این IDE اینهست که از هر دو ورژن پایتون 3.x و 2.x همزمان پشتیبانی می کند.اطلاعات بیشتر