View Full Version : امنیت ویندوز 7 و 8
1485159
جمعه 24 آبان 1392, 22:01 عصر
سلام
خیلی وقته(حدود 4 سال) میشه کلا از مباحث امنیتی و مربوط به ویروس و بدافزار دور بودم و حالا به خاطر دلایلی مجبورم که دوباره قدم در این وادی بزارم :شیطان: راستش یکم تو گوگل سرچ کردم ولی گفتم اینجا از اساتید بپرسم بهتره.
ویندوز هفت و هشت چقدر در برابر بد افزار مقاوم هستن؟ اصلا مثل قدیما بد افزار شاخی داریم؟
اگر فرض کنیم که این دو سیستم عامل از امنیت کافی برخودار هستن و در برابر بدافزار مقاوم هستن تا چه حدی میشه این امنیت رو دور زد؟ اصلا امیدی به بدافزار نویسی برای این سیستم عامل ها هست؟
در کل اطلاعات من اصلا آپدیت نیست. دوستان اگه ممکنه یکم راهنماییم کنین. :لبخندساده:
ممنون.
بهروز عباسی
جمعه 24 آبان 1392, 23:43 عصر
ویندوز هفت و هشت چقدر در برابر بد افزار مقاوم هستن؟ البته که مقاوم هستن مخصوصاً نسخه های 64 بیتی (مقاله زیرو بخون، چون ویرایش نشده ممکنه توی متن اشتباهاتی باشه :چشمک:)!
چرا نسخه های 64بیتی ویندوز امنیت بیشتری دارند ؟
http://www.maximumpc.com/files/u17625/winx64_teaser_0.jpg
بر خلاف معماری نسخه های 32بیتی ویندوز در معماری 64بیتی امنیت تا حد زیادی بهبود یافته و این امن تر بودن تاحد زیادی به خاطر 64بیتی بودن است و نه نسخه های جدید تر یا بروز رسانی ها (هر چند این ها هم تاثیر دارند). یکی از اهداف قابل توجه در نسخه های 64بیتی ارتقاع سطح امنیت ویندوز برای جلوگیری از نفوذ بدافزار ها به سیستم است به طوری که در برخی مواقع تقریباً نفوذ بدافزار ها (Malware) را به سیستم غیر ممکن می کند.
نکته قابل توجه این است که علاوه بر خانواده ویندوز دیگر سیستم های عامل نظیر لینوکس هم از این قاعده مستثنا نیستند و در نسخه های 64بیتی این سیستم عامل ها هم امنیت به هد زیادی بهبود یافته است.
قابلیت هایی که باعث افزایش امنیت شده اند :
تصادفیسازی قالب فضای آدرس (Address Space Layout Randomization) :
ASLR یکی از ویژگی ها امنیتی است که باعث می شود ؛ در زمان تخصیص حافظه به یک برنامه که قصد اجرا شدن دارد آدرس داده های آن برنامه به صورت تصادفی تولید شود و در نتیجه برنامه در یک ارایش خاص قرار گیرد. در گذشته و قبل از بکار گیری این تکنیک آدرس داده های یک برنامه در حافظه RAM مستقر می شد و این آدرس ها هم قابل پیش بینی بودند که همین قابل پیش بینی بودن باعث کاهش امنیت می شد چرا که یک هکر می توانست با آگاهی یافتن از محل و آدرس داده های برنامه در حافظه RAM خیلی راحت تر بع اعمال خراب کارانه خود دست بزند ! .
امّا دیگر نباید نگران این مشکل بود چرا که به کمک قابلیت ASLR افراد خراب کار نمی توانند آدرس ها را پیدا کنند بلکه باید برای Exploit کردن آسیب پذیری ها آن ها را حدس بزنند که این خود کاریست دشوار و تقریباً غیر ممکن ،پس یا فرد خرابکار باید بسیار خوش شانس باشد و یا با شکست رو به رو شود، چرا که اگر آدرسی که حدس زده اشتباه باشد ممکن است برنامه Crash شود و تمام کار های او بی نتیجه بماند و او باید دوباره این کار را تکرار کند و … . به این نکته نیز توجه کنید که این قابلیت در نسخه های 32بیتی ویندوز هم موجود است ولی قدرت و توانایی مدل پیاده سازی شده در نسخه های 64بیتی را ندارد و این نیز دلایل خاص خود را دارد برای مثال مقدار حافظه ؛ معمولاً در سیستم عامل های 64بیتی برای آدرس دهی یک Process حد اقل از یک فضایی 4گیگابایتی استفاده می شود و این مقدار خیلی بیشتر از مقدار قابل تخصیص در نسخه های 32بیتی است . مقدار حافظه بیشتر یعنی آدرس های بیشتر و آدرس های بیشتر یعنی شانس کمتر برای یافتن یک آدرس به صورت تصادفی !.
امضای راهانداز اجباری(Mandatory Driver Signing):
درایور ها (راه انداز) هم مثل دیگر برنامه ها هستند با این تفاوت که برخلاف برنامه های عادی که در User-Mode اجرا می شوند در Kernel-Mode اجرا می شوند و نسبت به برنامه های عادی سطح دسترسی بالاتری دارند (معمولا با پسوند .sys مشخص می شوند) و تقریبا هم سطح هسته ویندوز به اجرا در می آیند برای استفاده از یک درایور باید آن را نصب و راه اندازی کرد و اجرای آن به سادگی اجرای برنامه های عادی نیست. نصب و راه اندازی درایور ها در نسخه های 32بیتی کار دشواری نیست و با برنامه های مثل osrloaderv قابل انجام است ! امّا همین روند در نسخه های 64بیتی کمی متفاوت است در این نسخه ها تمامی درایور ها باید یک امضای دیجیتالی معتبر داشته باشند تا سیستم اجازه نصب و راه اندازی را به آن ها بدهد و اگر سعی به نصب درایوری بدون امضا بکنیم با پیغامی شبیه به پیغام موجود در تصویر زیر روبه رو می شویم و روند نصب و راه اندازی متوقف می شود.
112850
شاید این سوال برای شما پیش بیاید که چرا درایورها باید امضا داشته باشند ؟
اگر شما اطلاعات مختصری در مورد بد افزار ها و مخصوصاً ROOTKIT ها داشته باشد تقریباً به سوال خود پاسخ داده اید چرا که معمولاً ROOTKIT ها به همراه یک Kernel mode driver عرضه می شوند و ROOTKIT به واسطه درایور خود تغییرات قابل توجهی را در سیستم عامل اعمال می کند که در نتیجه آن شناسایی آن را بسیار سخت و در برخی مواقع غیر ممکن می کند (برای نمونه ویروس Stuxnet که امضای دیجیتال شرکت Realtek استفاده کرده بود تا این مکانیزم امنیتی را دور بزند) به همین خاطر تمام درایور ها برای اجرا باید امضای دیجیتال داشته باشند که این امضا هم به همین راحتی به دست نمی آید و داشتن آن مستلزم هزینه و اعتبار زیاد است .
محافظت وصله هسته اصلی (Kernel Patch Protection) :
این ویژگی که به نام Patch Guard شناخته می شود یکی از ویژگی هایی مختص نسخه های 64بیتی ویندوز است و نقش بسیار مهمی در ارتقاع سطح امنیتی سیستم عامل ویندوز دارد. همانطور که اشاره کردم درایور ها در Kernel-Mode و هم سطح هسته سیستم عامل اجرا می شوند و سطح دسترسی بالایی نیز دارند ،در چنین شرایطی امکان ایجاد تغییرات در لایه های پایینی سیستم عامل وجود دارد و اگر درایور چیزی مثل درایور های Stuxnet یا در حالت کلی Rootkit ها باشد می تواند مشکل ساز شود مثلا با هوک کردن SSDT خود را کاملاً از دید نرم افزار های امنیتی مثل آنتی ویروس ها مخفی کند !.
برای جلوگیری از چنین اتفاقاتی این قابلیت را به نسخه 64بیتی سیستم عامل ویندوز اضافه کردند . این قابلیت دقیقاً چکار می کند ؟ این قابلیت به هیچ عنوان به اجزایی که جزو ساختار پیش فرض سیستم عامل نباشند اجازه دستکاری اجزایی مهم سیستم عامل را نمی دهد حتی اگر آن جز یک درایور باشد که با امضای دیجیتال معتبر به درستی نصب و راه اندازی شده و سطح دسترسی بالایی هم داشته باشد. حتی نرم افزار های امنیتی نظیر آنتی ویروس ها هم که قبلاً و در نسخه های 32بیتی –مثلا! – از هوک کردن SSDT برای انجام برخی کار هایی خود استفاده می کردند با به روی کار آمدن این قابلیت دیگر امکان هوک کردن SSDT را ندارند !! و اگر درایوری سعی در ایجاد تغییراتی که KPP آن ها منع کرده بکند سیستم با یک BSOD متوقف می شود !
جلوگیری از اجرای دادهها در یک ناحیه خاص از حافظه (Data Execution Protection) :
یکی دیگر از قابلیت های مهم DEP است که از اجرایی داده های (کدهای) موجود در نواحی خاصی از حافظه که سیستم عامل به کمک بیت “NX” به عنوان نواحی غیر قابل اجرا (non-executable)علامت گذاری کرده ، جلو گیری می کند و به کمک این قابلیت نواحی از حافظه که به عنوان non-executable تلقی می شوند حتی در صورت این که حاوی داده ای نیز باشند دستورات اجرایی روی آن نواحی عمل نخواهد کرد.
مثلا یک خراب کار در سیستم های فاقد DEP می تواند با استفاده از آسیب پذیری سرریزبافر (buffer overflow) کدی را به ناحیه از حافظه یک برنامه بنویسد و در نتیجه آن کد را اجرا کند اما در حالتی که DEP موجود باشد می تواند کدی را به ناحیه ای از حافظه برنامه بنویسد اما موقع اجرا DEP جلوی آن را می گیرد و حمله تمام !.
این قابلیت نیز در نسخه های 32بیتی وجود دارد اما نسخه های 64بیتی دارایی DEP مبتنی بر سخت افزار هستند و این قابلیت در نسخه های 64بیتی به صورت پیش فرض هم فعال است در صورتی که در نسخه های 32بیتی به دلایلی همچون عدم سازگاری و ایجاد اختلال در برخی برنامه ها این قابلیت به صورت پیش فرض غیر فعال است.
لایه ای با نام WOW64(Windows 32-bit on Windows 64-bit) :
حتماً شما هم متوجه این نکته شده اید که برنامه های 32بیتی اکثراً به راحتی در نسخه های 64بیتی ویندوز اجرا می شوند یا برنامه های 16بیتی که در نسخه های 32بیتی ویندوز اجرا می شود تمام این کار ها به کمک قابلیت Windows On Windows یا به اختصار WOW انجام می شود در حالتی که سیستم عامل 64بیتی باشد و برنامه مورد نظر برای اجرا 32بیتی باشد در این لایه محدودیت هایی بر آن برنامه اعمال می شود که در برخی مواقع ممکن است مثلاً جلوی اجرای درسا یک بد افزار را بگیرد. و همچنین از اجرای بد افزارهای 32بیتی در Kernel-Mode هم جلو گیری می کند. دانتسن این نکته که در برنامه های 16بیتی قدیمی هم به لطف این قابلیت امکان اجر شدن در محیط های 64بیتی را دارا هستند و باز این قابلیت از اجرایی صحیح بد افزار های 16بیتی هم جلو گیری می کند.
در آخر اینکه نسخه های 64بیتی نسبت به نسخه های 32بیتی امنیت به مراتب بیشتری دارند امّا 100درصد امن نیستند ! و حتی برخی از قابلیت های ذکر شده به آسانی تایپ چند دستور در RUN یا CMD (به شرط داشتن سطح دسترسی Admin) غیر فعال می شوند.
اگر دوست دارید بیشتر با قابلیت های سیستم عامل ویندوز آشنا شوید حتماً کتاب Windows Internals را مطالعه کنید .
خودم تابستان 1392 :افسرده:
----------------------------------------------------------------------------------------------
اصلا مثل قدیما بد افزار شاخی داریم؟این روزا دیگه کار Malware ها از شاخ و دم گذشته، جسارتا! اگه کسی سواد و اطلاعات کافی رو داشته باشه می تونه MalCode های خفنی بزنه:شیطان:.
اگر فرض کنیم که این دو سیستم عامل از امنیت کافی برخودار هستن و در برابر بدافزار مقاوم هستن تا چه حدی میشه این امنیت رو دور زد؟ اصلا امیدی به بدافزار نویسی برای این سیستم عامل ها هست؟ شما باید ببینی الان ویندوز به کدوم قابلیت خودش بیشتر متکی هستش؛ مثلاً اگه در 90درصد مواقع با UAC از خودش در مقابل بدافزارها محافظت می کنه UAC رو مورد حمله قرار بدی.
یا مثلاً اگه بتونی برای بدافزارت یه Code Sign رو جعل کنی به آسونی میتونی از دست خیلی از تله های امنیتی فرار کنی (این کار خیلی سخت شده اگه یه فایل از MD5 برای Hash و Sign کردن استفاده کرده باشه احتمال این که بشه امضا رو جعل کرد هست).
خلاصه اینکه اول باید به خوبی مکانیرم های امنیتی مهم ویندوز رو شناسایی کنی و روی اون ها تمرکز کنی تا بتونی یکی شون رو دور بزنی.
شب خوش.
r00tkit
شنبه 25 آبان 1392, 09:21 صبح
جدا از اینکه این مفاهیم توی ویندوز ویستا اضافه شدن
مقاله بالا تا حد خوبی چرته :لبخند:
بر خلاف معماری نسخه های 32بیتی ویندوز در معماری 64بیتی امنیت تا حد زیادی بهبود یافته و این امن تر بودن تاحد زیادی به خاطر 64بیتی بودن است و نه نسخه های جدید تر یا بروز رسانی ها (هر چند این ها هم تاثیر دارند).
فقط به خاطر bit بیشتر ؟:قهقهه:
ASLR
؛ در زمان تخصیص حافظه به یک برنامه که قصد اجرا شدن دارد آدرس داده های آن برنامه به صورت تصادفی تولید شود و در نتیجه برنامه در یک ارایش خاص قرار گیرد.
دقیقا اگه اکسپلویت نوشته باشی می بینی ادرس دادها ( مثلا vtable یه ماژول ) نسبت به بیس ادرس ماژول ثابت هستش و از همین نکته برای بای پس کردنش استفاده می شه
تنها چیزی که تغییر می کنه ادرس لود ماژول هستش
ASLR خیلی وقته با دور می خوره ( مموری لیکیج ) و حدسی هم در کار نیست
DEP هم همین طور وقتی یه ادرس گیر بیاری ROP می زنی
برای بقیه چیزا حوصله ندارم چیزی بنویسم
اصلا مثل قدیما بد افزار شاخی داریم؟
Andromeda
Bamital
BlackEnergy
BlackShades NET
Carberp
Citadel (Zeus clone, based on 2.x leak)
Conficker
Cridex
DarkComet
Fareit
Kelihos
MaxSS TDL4+
MyLoader (Oficla)
NgrBot (Dorkbot)
Poisonivy
PowerLoader
Ramnit
Rustock
Simda
Sinowal
SmokeLoader
SpyEye
TDL2
TDL3
TDL4
Ursnif
WSO PHP web shell
ZeroAccess
Zeus
Zeus Gameover
....
بهروز عباسی
یک شنبه 26 آبان 1392, 14:48 عصر
مقاله بالا تا حد خوبی چرته
در حالت کلّی و برای مخاطب های مثل شما موافق هستم :شیطان:
فقط به خاطر bit بیشتر ؟
منظورم این نبود، قابلیت های نسخه 64بیتی مدنظرم بود (فکر کن باشه، اصلا میشه:افسرده:)
جسارتاً تهش نوشتم که :
در آخر اینکه نسخه های 64بیتی نسبت به نسخه های 32بیتی امنیت به مراتب بیشتری دارند امّا 100درصد امن نیستند ! و حتی برخی از قابلیت های ذکر شده به آسانی تایپ چند دستور در RUN یا CMD (به شرط داشتن سطح دسترسی Admin) غیر فعال می شوند.
:کف:
برای بقیه چیزا حوصله ندارم چیزی بنویسم
بابت نظری که دادی ممنون ، ولی جدّی جدّی همه قابلیت هایی که گفتم رو میشه دور زد ها (مثلا برای جعل امضای درایور ها Playing With Authenticode and MD5 Collisions (http://blog.didierstevens.com/2009/01/17/playing-with-authenticode-and-md5-collisions/)) . الان تکلیف امنیت چیه ؟
روز خوش
r00tkit
یک شنبه 26 آبان 1392, 14:57 عصر
بابت نظری که دادی ممنون ، ولی جدّی جدّی همه قابلیت هایی که گفتم رو میشه دور زد ها (مثلا برای جعل امضای درایور ها Playing With Authenticode and MD5 Collisions) . الان تکلیف امنیت چیه ؟
خب از md5 استفاده نکنن :D
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.