مجله آنلاین مگ باز

شناسایی برنامه نویسان ناشناس از روی سبک کدنویسی آن ها

متخصصان در سی و دومین کنگره ارتباطات آشوب (۳۲c3) اعلام کردند که این امکان وجود دارد تا بتوان تقریباً همه برنامه‌نویسان ناشناس را، از تولیدکنندگان بدافزار گرفته تا ناقضان کپی‌رایت و آن‌هایی که با ارائه نرم‌افزارهای مقابله با سانسور دولت‌ها را خشمگین می‌سازند، از طریق تحلیل سبک برنامه‌نویسی آن‌ها که تا مرحله کامپایل باینری‌ها ادامه می‌یابند شناسایی نمود؛ حتی اگر از شیوه‌های رایج مبهم‌سازی استفاده کرده باشند.
در این کنگره، پژوهشی با عنوان «شناسایی برنامه‌نویسان ناشناس با توجه به ویژگی‌های کلی برنامه‌نویسی در باینری‌های اجرایی کدهای کامپایل‌شده و سورس‌کدها»، توسط آیلین کالیسکان اسلام ارائه شد. پژوهش دیگری نیز با عنوان «وقتی سبک برنامه‌نویسی از مرحله کامپایل عبور می‌کند: شناسایی برنامه‌نویسان ناشناس از طریق باینری‌های اجرایی» در این کنگره ارائه گردید که بر پایه تحقیقات دانشگاه پرینستون آمریکا انجام گرفته بود.
پژوهشگران در این مقاله به دنبال شناسایی برنامه‌نویسان نابکار هستند و اشاره دارند که در تعیین سبک مطالب، هیچ تفاوت فنی خاصی بین برنامه‌نویسی برای ارتقای امنیت و برنامه‌نویسی برای نقض حریم خصوصی وجود ندارد. به زبان دیگر، سبک برنامه‌نویسی به برنامه‌نویس خیانت می‌کند.
بسیاری از ویژگی‌های تعیین سبک نظیر اسامی متغیرها که توسط پژوهشگران بررسی گردید، در زبان برنامه‌نویسی C یا ++C پس از کامپایل شدن کدها از بین می‌روند. رویه‌های بهینه‌سازی کامپایلر نیز ممکن است کیفیت ساختاری برنامه را تغییر دهند و شناسایی کدنویس را پیچیده‌تر سازند.
با این حال، در بررسی باینری‌های اجرایی برای شناسایی کدنویسان از منظر یادگیری ماشین، پژوهشگران قادر بودند به کمک مجموعه جدیدی از ویژگی‌ها شامل آن‌هایی که از طریق دیکامپایل باینری‌های اجرایی به سورس‌کدها حاصل می‌شوند، نشان دهند که بسیاری از ویژگی‌های سینتکسی سورس‌کدها بعد از فرایند کامپایل نیز باقی می‌مانند و از طریق دیکامپایل کردن باینری‌های اجرایی قابل بازیابی هستند.
این پژوهشگران با استفاده از پیشرفته‌ترین شیوه‌های مهندسی معکوس، طیف وسیعی از ویژگی‌ها را از باینری‌های اجرایی استخراج نمودند و با بهره‌گیری از بردارهای ویژگی، سبک برنامه‌نویسان را شناسایی کردند.
به این منظور، در عمل از دیس‌اسمبلرهای Netwide و Radare2 و پس از آن، دی‌کامپایلر پیشرفته Hex-Ray و دی‌کامپایلر کدباز Snowman استفاده شد تا ۴۲۶ بردار ویژگی سبک برنامه‌نویسی از باینری‌ها استخراج شود.
در ادامه، به یک ماشین طبقه‌بندی از نوع جنگل تصادفی که هشت باینری اجرایی از هر برنامه‌نویس در اختیار داشت، آموزش داده شد تا مدل‌های دقیقی از سبک کدنویسی هر برنامه‌نویس تولید نماید. از آن به بعد، این ماشین قادر است با نمایش برداری باینری‌های اجرایی جدید، کدنویس آن‌ها را مشخص نماید.
پژوهشگران می‌گویند در شناسایی برنامه‌نویسان از طریق باینری‌های اجرایی بهینه‌نشده، دقت آن‌ها ۷۸ درصد بوده است، ولی دقت آن‌ها در خصوص باینری‌های اجرایی بهینه‌شده ۶۴ درصد بوده است. حذف اطلاعات مربوط به نمادها از باینری‌های اجرایی، این میزان دقت را به ۶۶ درصد کاهش می‌دهد. این تغییر به هیچ وجه به چشم نمی‌آید و می‌توان نتیجه گرفت که سبک برنامه‌نویسی از تحولات پیچیده عبور می‌کند.
در تحقیقات آتی، پژوهشگران قصد دارند بررسی نمایند که آیا ممکن است ویژگی‌های برنامه‌نویسی به طور کامل از باینری‌های اجرایی حذف شوند تا نویسنده آن شناسایی نشود. همچنین، می‌خواهند وارد دنیای واقعی تعیین ویژگی‌های برنامه‌نویسی شوند. برای مثال، به شناسایی نویسندگان بدافزارهایی بپردازند که در آن‌ها ترکیبی از شیوه‌های پیشرفته مبهم‌سازی از طریق ترکیب رمزگذاری و چند ریختی اعمال شده است.

Add comment

Your Header Sidebar area is currently empty. Hurry up and add some widgets.