www.pedjvak.com

www.pedjvak.net

www.guarddongle.com
www.8df.com
www.shegerd.com
www.dedj.com
www.5df.com

www.lllcd.com

www.msbbs.com

www.4df.org

www.6df.org

www.9sh.org

 

 

www.lllcd.com www.4df.org www.6df.org www.8df.org www.9sh.org  www.pedjvak.net    www.pedjvak.com  www.shegerd.com  www.guarddongle.com  www.dedj.com www.5df.com

 2 Outsmarting.(هوشمندتر بودن نسبت به شبيه ساز)

      

            براي هوشمندتر بودن نسبت به شبيه ساز تعدادي از ويروسها از محرکهاي زمانبندي شده استفاده ميکنند. يا اگر داراي کدهاي رمزشده باشد از تکنيکهاي رمزگشايي مختلف استفاده ميکند. محرکهاي زمانبندي شده هر چيزي ميتواند باشد. براي مثال اجراي کدهاي مخرب در ساعت 3 بعداز ظهر يا فقط در روزهاي خاص. ويروس همچنين ميتواند شرايط را بسنجد، براي مثال چک کند که آيا در حال شبيه سازي شدن يا ديباگ شدن هست يا خير. اگر اينطور باشد کدهاي بي اثر را اجرا کند.

          تکنيکهاي کشف رمز که ميتواند مورد استفاده قرارگيرد شامل پراکندگي حلقه هاي رمزگشايي در بين کدها همرا با داشتن روشهاي مختلف رمزگشايي. اين روش توسط W32/Harrier، W32/Coke و W32/Zelly مورد استفاده قرار ميگيرد. در اين روش بخش اول، بخش دوم را رمزگشايي کرده، بخش دوم، سوم را و الي آخر. ويروس همچنين ميتواند بلاکهايي از کد را که مورد نياز است به منظور هوشمندي بيشتر رمزگشايي کند.

           ويروس RDA.Fighter از روش کشف رمز Brute Force استفاده ميکند. يعني اينکه ويروس کليد کشف رمز را ذخيره نميکند. بنابراين سعي ميکند تمام کليدهاي ممکن را براي کشف رمز امتحان کند. اين روش از اين جهت روش مفيديست که کار آنتيويروسها را براي کشف ويروس بدون داشتن روش مشابه بسيار مشکل ميکند که همين موضوع باعث بکار بردن روشهاي شبيه سازي بسيار زيادي ميشود. در زير کد مربوط به رمزگشايي RDA.Fighter  آمده است:

setup:

        xor ebx,ebx

 

iterate:

       mov esi,[ebp + hostOffset]

       mov edi,esi

       mov ecx,[ebp + host_size]

       inc ebx

decrypt:

       lodsb

       xor al,bl

       stosb

       loop decrypt

 

check:

       mov esi,[ebp + hostOffset]

       push esi

       mov ecx,[ebp + host_size]

       push ecx

       mov eax,[ebp + __ADDR_CheckSum]  ; whatever this happens to be

       call eax

       test eax,eax

       jnz iterate

       mov esi,[ebp + hostOffset]

       jmp esi

 

در مثال بالا ميبينيم که در بلاک Setup، ebx با صفر مقداردهي شده و فقط يکبار اجرا ميشود. سپس در بلاک Iterate esi و edi با آدرس ابتداي کد رمز شده مقداردهي ميشود، ecx با اندازه کد رمز شده مقداردهي ميشود. همچنين مقدار ebx يک واحد اضافه ميشود. در بلاک decrypt بايت به بايت در کد رمز شده پيمايش شده و هربايت را با کليد موجود در ebx، XOR ميکند. اين حلقه زمانيکه ecx صفر شود به پايان ميرسد. سپس در بلاک Check مقدار Checksum مورد ارزيابي و سنجش قرار ميگيرد. اگر اين ارزيابي معتبر بود، کد از حالت رمز خارج ميشود. بعد از عمليات رمزگشايي، به حلقه تکرار بازگشته و با کليد بزرگتري آغاز کرده، سپس به محل کدهاي جديد پرش ميکند.

W95/Fono از يک الگوريتم رمزگشايي غيرخطي استفاده ميکند. يعني اينکه بخش رمزشده بصورت خطي رمزگشايي نميشود. بنابراين عدم رمزگشايي بصورت بايت به بايت ميتواند باعث سردرگمي شبيه ساز گردد. W95/Fono از يک جدول شامل کليد استفاده ميکند و شبيهساز عمليات جانشيني و تعويض را بر اساس آن انجام ميدهد. هر کارکتر در داده ها، مربوط به يک کارکتر خاص ميباشد. براي مثال A با L مربوط است، Z با F و غيره. بنابراين با استفاده از اين روش رمز کردن، هر بخش از ويروس با يک ترتيب تصادفي رمزگشايي شده و بهر موقعيت فقط يکبار مراجعه ميشود. W95/Drill و {W32,Linux}/Smile.D از روش رمزگشايي غيرخطي استفاده ميکنند. W95/Slicer و W95/Resure لودر ويندوز را مجبور به جابجايي برنامه هاي آلوده، بهنگام بارگذاري آنها در حافظه ميکند. اين جابجايي مسئول رمزگشايي بدنه ويروس ميباشد. زيرا ويروس در محلهاي خاصي براي رمزگشايي در حافظه قرار ميگيرد. ويروس W95/Resurrel بعد از W95/Resure نوشته شده است. اين ويروس آدرس پايه فايل آلوده را به مقدار 0XBFXXXXXX (مقدار XXXXXX يک مقدار تصادفي بوده که توسط تابع GetTickCount() توليد ميشود) تنظيم ميکند. سپس براي هر مقدار DWORD در Code Section خود، يک ورود جابجا شده را اضافه ميکند و هر DWORD را بوسيله اضافه کردن مقدار آدرس پايه به آن، رمز ميکند و مقدار 0X400000 را از آن کم ميکند. هنگاميکه نرم افزار اجرا شد کپي برنامه نميتواند در حافظه بارگذاري شود به اين خاطر که آدرس پايه اشتباه بوده يا آدرسي در Kernell32.DLL ميباشد. بنابراين لودر سيستم آدرس معتبر را جايگزين کرده، ويروس را همانطور که انتظار ميرود رمزگشايي ميکند. اين دشواري در رمزگشايي ويروس، تشخيص آنرا سخت ميکند.

 Outlasting Outsmarting , Overextending