محققان لابراتوار کسپرسکی روز دوشنبه 19 مارس اعلام کردند هویت «کد مرموز» استفادهشده در تروجان «دوکو» را کشف کردهاند. این ویروس که برای ایرانیان یادآور بدافزار استاکسنت است، از این ویروس قویتر بوده، ولی به دلیل شباهت بسیار آن با استاکسنت، بسیاری از برنامههای امنیتی، قادر به شناسایی مستقل آن نبودند. با این حال چند هفته پس از اعلام اینکه کد کامپیوتر منشاء ناشناخته تروجان «دوکو» را کشف کردهاند، کسپرسکی اعلام کرد که این کد مرموز به زبان C نوشته و با Microsoft Visual Studio 2008 کامپایل شده است.
اگرچه، سازندگان
«دوکو» تغییراتی در کد C ایجاد کردند که این کد ترکیبی از برنامهنویسی
شیگرا و زبان C باشد. این موضوع در اوایل ماه مارس آغاز شد؛ هنگامی که
محققان کسپرسکی به طور علنی این چالش را پیش کشیدند که بخش کلیدی تروجان
«دوکو» چگونه ساخته شده است. پس از موشکافیهای فراوان، محققان دریافتند که
بخشهایی از ماژول کلیدی که نقش کنترل دستورات تروجان «دوکو» را دارند به
یک زبان ناشناخته برنامهنویسی شده است. موضوعی که یکی از متخصصان کسپرسکی
به نام Igor Soumenkov نیز بیان کرده این است که این کد هیچ برگشتی به زبان
C++ یا هرگونه زبان برنامهنویسی سطح بالا ندارد. گسترش این مطلب
جنجالبرانگیز گفتوگوهای بسیاری را بین کارشناسان بدافزار و برنامهنویسان
در سراسر جهان پدید آورد که در پی آن بیش از 200 دیدگاه و پیشنهادهای
گوناگون در سایت securelist. com ارایه شد. این بگومگوها به فرومهایی
مانند Slashdot و Reddit هم کشیده شد. پس از یک هفته، محققان اعلام کردند
که با همکاری محققان دیگر توانستهاند به کد مذکور وارد شوند و دریابند که
این کد به زبان C نوشته و با Microsoft Visual Studio 2008 کامپایل _ ترجمه
_ شده و تنظیمات خاصی برای بهینهسازی حجم کد روی آن انجام شده است.
به
همین دلیل این پرسش مطرح میشود که چرا باید درک و موشکافی یک کد به زبان
ساده C تا این حد دشوار باشد؟ در پاسخ به این پرسش یکی از کارشناسان
کسپرسکی به نام VitalyKamluk میگوید برنامههایی که با زبان C و C++
کامپایل میشود، نمیتواند به کد اصلی برگردانده شود و این یک انتقال
یکسویه است. این مساله باعث سردرگمی تحلیلگران در یافتن زبان اصلی و برنامه
اسمبلکننده این کد شد. تقریبا همیشه این کار تا این حد دشوار نیست چرا که
بیشتر برنامهنویسان از یک زبان و کامپایلر معمول به این منظور استفاده
میکنند و هرکدام نشان خاصی از خود در کد اسمبل بهجای میگذارند که مانند
یک اثر انگشت عمل میکند. این در حالی است که کد نامبرده هیچ نشان بارزی از
این دست نداشت. نویسنده مطلبی در سایت ReverseEngineering. com دریافت که
تکهکد «دوکو» بسیار همانند کدهای نوشتهشده با CSOO (Simple Object
Oriented for C) است. از آنجا که بهکار بردن این زیرساخت (Framework) در
بین برنامهنویسان خیلی معمول نیست خروجی هیچ یک از زیرساختهای دیگر به
اندازه این زیرساخت با کد «دوکو» همخوانی ندارد. همچنین Kamluk اضافه کرد
که استفاده از OOC به جای زبانهای معمول مانند C++ نمایانگر این است که
برنامهنویسان کد «دوکو» برنامهنویسان قدیمی هستند که بیشتر با زبان C
آشنایی دارند. دلیل دیگر این مساله به گفته Soumenkov میتواند عدم اطمینان
برنامهنویسان به کامپایلر C++ در مقایسه با برنامه C باشد که تبدیل به یک
استاندارد شده است. همانطور که بسیاری از دیگر برنامهنویسان با ظهور C++
به علت عدم اطمینان به نحوه تخصیص حافظه در این برنامه و زبان مبهم آن که
باعث اجرای کدهای ناخواسته میشوند، همچنان بیشتر دوست دارند که زبان C را
برای برنامهنویسی بهکار ببرند. همچنین زبان C روی پلتفرمهای مختلف قابل
اجراست که برای نویسندگان کرمهای اینترنتی گزینه بسیار دلپذیری است.
اگرچه هویت واقعی افرادی که کد «دوکو» را نوشتهاند هنوز فاش نشده و مثلا
کسی نمیداند که ریشه آن از کدام کشور است. کارشناسان کسپرسکی بیان
داشتهاند که تیم برنامهنویسی این بدافزار کد بسیار پیچیدهای را
نوشتهاند که در اندازه برنامههای بسیار سطح بالا و حرفهای برآورد
میشود. دستاوردهای تازه، دید نوینی از کدنویسی ویروس «دوکو» را آشکار کرده
است که مهمترین آن این است که ایده ارتباط «دوکو» به
Stuxnet
_ ویروس
اکستاکسنت که به منظور سرقت اطلاعات و دستکاری در فعالیتهای هستهای
ایران تهیه شده بود_ کاملا رد میشود. روی هم رفته با اینکه هردو اینها در
سطحی مشابه و بسیار پیچیده هستند، تجزیه و تحلیل درباره کد «دوکو» روشن
میکند که «دوکو» و Stuxnet بسیار متفاوتند. Kamluk امیدوار است که این
تحقیقات عموم را پس از درک ماهیت نوع تروجان، به سمت شناسایی سازندگان آن
سوق دهد و این افراد را به دست قانون بسپارد.