گروهی از محققان دانشگاه فنی گراتس (اتریش) که قبلاً به دلیل توسعه روش های حمله شناخته شده بودند
برای تعیین این پارامترها کافی است کد جاوا اسکریپت تهیه شده توسط محققان را در مرورگر اجرا کنید. در عمل، این روش می تواند نه تنها به عنوان منبع اضافی برای شناسایی غیرمستقیم کاربر، بلکه برای تعیین پارامترهای محیط سیستم برای استفاده هدفمند از اکسپلویت ها، با در نظر گرفتن سیستم عامل، معماری و مرورگر استفاده شود. این روش همچنین هنگام استفاده از مرورگرهایی که مکانیسمهای مسدود کردن شناسایی پنهان را اجرا میکنند، مانند مرورگر Tor، مؤثر است. نمونه اولیه کد منبع با پیاده سازی روش
این تعیین بر اساس شناسایی الگوهای حالت ویژگی در جاوا اسکریپت که مشخصه مرورگرهای مختلف است و ویژگی های زمان اجرای عملیات بسته به ویژگی های JIT، CPU و مکانیسم های تخصیص حافظه انجام می شود. تعریف خصوصیات با ایجاد لیستی از تمام اشیاء قابل دسترسی از جاوا اسکریپت انجام می شود. همانطور که مشخص شد، تعداد اشیاء مستقیماً با موتور مرورگر و نسخه آن ارتباط دارد.
تابع getProperties(o) {
var نتیجه = [];
در حالی که (o !== پوچ) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
نتیجه بازگشت ؛
}
به عنوان مثال، برای فایرفاکس، اسناد پشتیبانی از 2247 ویژگی را بیان می کند، در حالی که تعداد واقعی ویژگی های تعریف شده، از جمله موارد غیرمستند، 15709 است (در مرورگر Tor - 15639)، برای کروم ویژگی های 2698 اعلام شده است، اما در واقع 13570 ارائه شده است (در Chrome for Android - 13119). تعداد و مقادیر ویژگی ها از نسخه مرورگر به نسخه مرورگر و در سیستم عامل های مختلف متفاوت است.
برای تعیین نوع سیستم عامل می توان از مقادیر و وجود ویژگی های خاص استفاده کرد. به عنوان مثال، در کوبونتو ویژگی window.innerWidth روی 1000 و در ویندوز 10 روی 1001 تنظیم شده است. ویژگی window.navigator.activeVRDisplays در ویندوز موجود است، اما در لینوکس در دسترس نیست. برای اندروید، تماسهای خاص زیادی ارائه میشود، اما window.SharedWorker نیست. برای شناسایی سیستم عامل، استفاده از تجزیه و تحلیل پارامترهای WebGL نیز پیشنهاد شده است که وضعیت آن به درایورها بستگی دارد. علاوه بر این، فراخوانی WEBGL_debug_renderer_infoextension به شما امکان می دهد اطلاعاتی در مورد موتور رندر OpenGL به دست آورید که برای هر سیستم عامل متفاوت است.
برای تعیین CPU، از ارزیابی تفاوتها در زمان اجرای بلوکهای کد معمولی مختلف استفاده میشود که پردازش آن با در نظر گرفتن رفتار JIT به معماری مجموعه دستورات بستگی دارد (مشخص میشود که چه تعداد ثبات CPU استفاده خواهد شد. و در چه مواردی JIT کد کارآمد را با بهینه سازی و استفاده از دستورالعمل های توسعه یافته تولید می کند و چه زمانی نه). برای تعیین نوع سیستم تخصیص حافظه و سیستم عامل، تفاوت زمان تخصیص حافظه برای ساختارهای مختلف نیز اندازه گیری می شود که می توان از آن برای قضاوت در اندازه بلوک های حافظه استفاده کرد.
پارامترهای تعیین شده در طول اجرای اسکریپت با مقادیر مرجع معمول برای محیط های آزمایش شده قبلی مقایسه می شوند. در طول آزمایش، تکنیک توسعهیافته امکان شناسایی دقیق ۴۰ محیط مختلف آزمایشی، شناسایی نسخههای مرورگرهای مورد استفاده، سازنده CPU، سیستم عامل مورد استفاده و این واقعیت را که روی سختافزار واقعی یا در یک ماشین مجازی در حال اجرا بود، میدهد.
به طور جداگانه، اشاره شده است که امکان تعریف افزونه های مرورگر و حتی تنظیمات افزونه های فردی، از جمله افزونه هایی که برای مسدود کردن روش های شناسایی پنهان یا فعالیت حالت مرور خصوصی طراحی شده اند، وجود دارد. در زمینه روش پیشنهادی، چنین اضافاتی به منبع دیگری از داده ها برای شناسایی تبدیل می شود. اضافات با ارزیابی اعوجاج پارامترهای محیط اصلی معرفی شده توسط اضافات تعیین می شوند.
سایر روش های شناسایی شامل در نظر گرفتن داده های غیرمستقیم مانند
منبع: opennet.ru