دسته: امنیت

  • چقدر از کاربرای خونگی در خطر از دست دادن اطلاعات شخصی‌شون هستن؟

    توی پست قبلی مطلبی در مورد امنیت ضعیف مودم‌های تی‌پی‌لینک نوشته بودم که به نظر اونطور که باید و شاید توجه رو به سمت خودش جلب نکرد.

    برای همین در ادامه‌ی اون پست، این مطلب رو اینجا میذارم تا یک مقدار بیشتر با خطراتی که کاربران خونگی رو تهدید میکنه آشنا کنم.

    برای شروع برنامه‌ای که توی پست قبل ازش استفاده کرده بودیم رو تغییر میدیم طوری که  به جای ریست روتر، یک راست با دادن آی‌پی طرف، پسورد رو تحویل بگیریم.

    حالا با دادن یک آی‌پی به برنامه راحت میشه پسورد روتر رو بدست بیارید. دقت کنید که برنامه ابتدا ip مقصد رو پینگ میکنه و در صورت بالا بودن هاست، میره عملیات بعدی رو  روی اون اجرا میکنه.

    Selection_026

    با رفتن به آدرس http://ping.eu/ns-whois و دادن آی‌پی ولید خودتون، می‌تونید یک رنج از آی‌پی‌های ولید isp  رو بدست بیارید.

    Selection_024

    با کمی جستجو در اینترنت به اسکریپت زیر می‌رسیم که رنج ابتدایی و انتهایی ip رو میگیره و در انتها تمام ipهای بینش رو برامون تولید میکنه (خروجی برنامه‌ی زیر سی و پنج هزار آی‌پی هست). 
    Selection_025

    حالا کافیه به طریقی این آی‌پی‌ها رو به خورد اسکریپت اصلی بدیم که پسوردها رو قراره در بیاره برامون.

    برای اینکار از برنامه‌ی xargs استفاده می‌کنیم. xargs خروجی یک برنامه رو میگیره و به صورت آرگومان به برنامه‌ای که مدنظرمونه میده. حالت پیشفرض xargs،‌ خروجی  به آخر برنامه اضافه میکنه. اگه بخوایم خروجی رو به وسط  کامندی که اجرا میکنیم، اضافه کنه از خروجی -I به همراه یک نام (place holder) استفاده مینیم.

     

    کامند بالا علارغم ظاهر خیلی پیچیده‌ای که داره خیلی ساده عمل میکنه.

    قلب اصلی  همون novid.py که فقط یک ip میگیره و قراره پسورد رو بهمون برگردونه. با اسکریپت Ip.sh و کمک برنامه xargs تعداد زیادی ip رو داریم به خوردش می‌دیم.

    اما به دلایل مختلف ممکنه برنامه پیغام‌های خطایی رو برگردونه که اونها رو داریم به dev/null میریزیم (به جای نمایش اونها در صفحه نمایش). سر بعضی از آی‌پی‌ها برنامه کلا متوقف میشه و دیگه جلو نمیره. برای جلوگیری از این اتفاق از timeout استفاده میکنیم و  میگیم حالت نرمال برای پیدا کردن پسورد یک روتر زیر ۲۰ ثانیه‌ست. اگه بیشتر از این زمان برد، بیخیال اون آی‌پی بشو و برو سراغ بعدی.

    xargs با استفاده از خروجی -I  به جای اینکه هر آی‌پی رو  انتهای کامند یعنی grep Router بیاره، اونها رو وسط کامند دونه دونه به برنامه میده! {}صرفا یک نام هست که می‌دونیم در کامندی که قراره بارها اجرا بشه هیچ استفاده‌ای نمیشه، میشه به جای اون هر چیز دیگه‌ای هم استفاده کرد.

    اون بخش grep رو برای این گذاشتم که برنامه بعد از پیدا کردن پسورد روتر چند خط رو به عنوان خروجی بر میگردونه. پسورد نیز در خطی قرار داره که کلمه‌ی Router وجود داره.

    بعد چند ساعت صبر و بسته به سرعت اینترنت، به کلی پسورد روتر خواهید رسید!

    Selection_028جالبه در خیلی پسوردها، نام isp داتک رو میتونستم ببینم که مشخص بود تنظیمات رو خود داتک بر روی روتر طرف انجام داده. بسیاری هم شماره تلفن خونه‌شون رو به عنوان پسورد انتخاب کرده بودن که خیلی راحت میشه به اطلاعات بیشتری از فرد دست پیدا کرد.

    کار قشگ دیگه ای که میشه انجام داد اینه که ببینیم بیشترین پسوردی رو که ملت استفاده میکنن چیه؟

    برای اینکار با کمی جستجو به اسکریپت count_all_words.py میرسیم.

    کافیه همه پسوردها رو در یک فایل به نام PASSWDUSERS.txt ذخیره کنیم و بعد اسکریپت رو اجرا کنیم. برای استخراج پسورد از لیستی که در اختیار داریم، کامند زیر رو اجرا میکنیم.

    و برای شمارش تعداد پسوردها نیز اسکریپت count_all_words.py رو اجرا کنیم.

     

    جامعه‌ی کاربری بالا ۶۵۵ مورد و همگی از isp داتک بوده. جستجو هم روی ۸۲۰۰ آی‌پی صورت گرفته. نکته اما اینه که همه‌ی این ۸۲۰۰  ip بالا نبودن و اگه آی‌پی‌هایی که در زمان جستجو داون بودن رو حذف کنیم به درصد خیلی خیلی بالایی میرسیم که آسیب‌پذیر هستن. در یک رنج آی‌پی ۲۵۶ تایی تقریبا صد تا از کاربران آنلاین هستن و از این تعداد پسورد ۴۰ تا کاربر رو میشه در اورد. با تقریب خوبی میشه گفت ۴۰ درصد کاربرای داتک این مشکل رو دارن و احتمالا خودشون هم اطلاعی از این وضعیت ندارند!‌

    خب حالا اینکه مشخص شد که تعداد خیلی زیادی از روترها مشکل دارن که چی؟ اول اینکه تا جای ممکن سعی کنید دسترسی به روتر از دنیای اینترنت رو غیر ممکن کنید.  هیچ دلیلی نداره که یک کاربر خونگی روترش از بیرون قابل دیدن باشه. برای اینکار روترها گزینه‌های متنوعی دارن. تعدادی مشخصا گزینه‌ای دارن که دسترسی به روتر رو خیلی ساده غیرممکن میکنه از دنیای اینترنت. بعضی نیز بخشی به نام ACL دارن و بخشی نیز از طریق فایروال و بستن ترافیک ورودی این امکان رو برای شما فراهم میکنن. یک راه نیز اینه که تمام ترافیک ورودی به روتر رو به سمت یک آی‌پی داخل شبکه‌تون که وجود خارجی نداره هدایت کنید! برای اینکار در بخش dmz روتر باید یک آی‌پی در رنج شبکه داخلی بدید که البته وجود خارجی نداشته باشه.

    و اینکه شاید این نفوذپیذیری رو روتر شما نداشته باشه،‌ اما با گذاشتن پسوردهای خیلی ساده مثل ده مورد بالا این اجازه رو به مهاجم میدید که از طریق یک دیکشنری خیلی ساده بتونه وارد روتر بشه. و اینکه شاید خیلی از نفوذپذیری‌های دیگه باشه که تا سالها مخفی باشه و صداش در نیاد بنابراین همیشه دسترسی به روتر از بیرون رو محدود به یک یا چند آی‌پی شناخته شده کنید.

    سوال دیگه‌ای که پیش میاد اینه که با وارد شدن به روتر،‌فرد مهاجم میتونه چیکار کنه؟ جواب اینه که میتونه برنامه‌ای رو بنویسه که به صورت خودکار علاوه بر در اوردن پسورد روتر، به صورت گروهی بره و dns روتر رو هم تغییر بده. با تغییر dns عملا شما متوجه هیچ مورد مشکوکی نخواهید شد. کافیه فرد مهاجم dns چند ده هزار روتر رو تغییر بده. در زمان حمله نهایی، فرد مهاجم صفحه اول تمام بانکهای معروف رو میسازه و در یک زمان، میاد و ترافیک مثلا بانک‌ سامان و پارسیان و دیگر بانکها رو به سمت سرور خودش تغییر میده! و اینطوری میشه که بجای اینکه وارد سایت اصلی بانک سامان بشید، وارد نسخه‌ای میشید که هکر اون رو طراحی کرده. طبیعتا کسی وارد سایت دستکاری میشه که از dns سرور فرد مهاجم استفاده کنه. پس توصیه مهم دیگه اینه که همیشه برید dns های داخل روتر رو خودتون به شکلی دستی تنظیم کنید. اگه dns رو به صورت دستی تنظیم نکنید،‌ به صورت خودکار روتر اونها رو از سمت isp دریافت میکنه که به نظرم این گزینه هم عاقلانه نیست. اینجور حملات در گذشته در بسیاری از کشورهای دنیا هم اتفاق افتاده.

    2014-02-mitr-en

    یادتون نره حتی در صورت بستن راه ورود به روتر از طریق اینترنت، مهاجم میتونه حمله رو از طریق خودتون انجام بده. بدین صورت که با وارد شدن به یک سایت آلوده، خودتون تبدیل به یک مهاجم میشید و پسورد مودم خودتون رو ریست میدید! بعد برنامه‌ دیگه‌ای میتونه وارد روتر بشه و از طریق پسوردی که معلوم و مشخصه، dns رو تغییر بده! :)‌

    csrf-router-attack-640x410راهکار چیه؟ جواب اینه که فرم‌ویر روتر خودتون رو به dd-wrt تغییر بدید. dd-wrt یک فرم‌ویر اپن سورس مبتنی بر کرنل لینوکس که با دنگ و فنگ و کمی خوش شانسی باید بتونید روی روتر خودتون نصب کنید. ریسک اینکار رو هم قبلش باید بپذیرید که دیگه روتر قابل استفاده نباشه. برای اینکه بفهمید dd-wrt روی روتر شما کار میکنه یا خیر کافیه به این آدرس برید و نام روتر خودتون رو وارد کنید.

    راهکار دیگه استفاده از روتر در حالت بریج هست. و اینکه از روتر خوتون در حالت bridge استفاده کنید. در این صورت تنظیمات pppoe که بر روی روترهای ADSL وجود داره به روی سیستم متصل به روتر منتقل میشه و مودم تنها نقش یک پل رو خواهد داشت!‌ افراد داخل شبکه در اینحالت باید از طریق سرور متقل به روتر، ip بگیرن. دیوایسی که برای اینکار در نظر میگیرید باید دو تا پورت لن یا یک پورت لن و یک وایرلس داشته باشه. حالت قشنگش اینه که از رزبری پای استفاده کنید. رزبری پای کلا یک پورت Lan بیشتر نداره. بنابراین باید یک مبدل usp به lan یا wireless نیز داشته باشید. برای os هم می‌تونید از ipfire یا OpenWRT استفاده کنید که هر دوی اونها نسخه مخصوص ARM رو دارن.

    openwrt-raspi-network

  • بازی موش و گربه

    حول و هوش ۴ صبح بود که می‌خواستم برم کوه خیر سرم که دیدم یهو کلی میل سرایز شده سمت اینباکسم و یه اسپمر وحشی رم کرده  و داره فرت و فرت میل اسپم می‌فرسته.

    خلاصه این شد که رفتم پشت سیستم و اول رسیدم به همچین آدرس کذایی رو سرور که از طریق اون کلی میل اسپم می‌فرستاد.

    وقتی که محتویاتش رو دیدم اولین کاری که به ذهنم رسید این بود که کل کدای داخلش رو با یه مادر فاکر جابجا کنم تا هکره توی اجرای بعدی ببینه و حسابی عصبانی شه! :)

    بعد چند دقیقه بود که دیدم دوباره محتوا رو عوض کرده و این یعنی وجود مکانی که تبدیل شده به مقر فرماندهی و اینطوری بود که به کل زدم فایل رو پاک کردم و سریع رفتم سر وقت لاگ اپاچی

     حالا دیگه آی‌پی رو داریم :) فایرفاکس ۳.۵ و طرف ظاهرا ویندوزکاره و البته اینا مشخصات یه بابایی توی نیجیریه ست! و همین احتمال رو قوی میکنه که طرف داره از تور استفاده میکنه.

    از روی دنبال کردن آی‌پی رسیدم به یه فایلی به اسم theme-edit.php داخل پوشه wp-admin و نکته جالب این بود که با باز کردن این فایل تو ادیتور مطلقا چیزی دستگیر آدم نمی‌شد به این خاطر که آقای هکر کد php رو رمزنگاری کرده بود و بنابراین محتویت فایل رو می‌دیم به سایتی مشابه ddecode که کارش تبدیل محتوای رمز شده به حالت عادیه.  بسته به سختی کد طی تعداد مراحلی این سایت کد واقعی رو در اختیارتون می‌گذاره و جالبه که این کد رو در یازدهمین مرحله می تونه از حالت رمز خارج کنه :)

    شروع بسم الله با افتخار نوشته‌ی هکر رو می‌بینیم! (کد دیکد شده شل)

    /* hide shell edited by r1pp3rm4ya*/

    بله یک شل مخفی کشف کردیم! شلی که بخاطر محتوای رمز شده ش آنتی ویروس clam هم هشداری بهتون نمی‌ده. شاید بشه فقط از رو md5 حجم فایل مثلا گفت که احتمال داره فرد دیگه‌ای هم توی این کره خاکی توسط این شل آلوده شده یا نه.

    ادامه سرک کشی به لاگ من رو رسوند به یه آی‌پی جدید و یه فایل جدید اینکود شده ولی چون دقیقا بازه زمانیشون یکی بود حدس می‌زنم وسط کار آی‌پی تور فقط عوض شده باشه و پشت جفتشون یه ادم بیشتر نیست.

    با نگاه کردن به فایل از رمز خارج شده میشه حدس زد که ازش برای وصل شدن به دیتابیس استفاده میکنه و همه اینا یعنی خطر! دنبال فایل‌های passwd و shadow و این موارد نیز هست پس این نقاطیه که باید دسترسی read رو طوری تنظیم کنید که فقط کاربر root بتونه محتویاتشون رو ببینه. در حالت عادی یوزر امکان مشاهده محتوای خیلی از فایل‌های حساس etc رو داره.

    اما ادامه خوندن لاگ ما رو به خط‌های خیلی مهمی رهنمون می‌کنه :) دقیقا از شروع حمله تا زمان موفقیت رو می‌شه دید پروسه‌ای که واقعا دید آدم رو نسبت به امنیت و این جور موارد به کل دگرگون میکنه

    اگه یادتون باشه پست قبلی در مورد یه شل به اسم wp-search گفتم. شلی که پاک شد اما اون هکر بعد چند روز اومده سر وقتش! بی خبر از اینکه پاک شده  و البته ارور ۴۰۴ گرفته:)

    اما بیکار ننشسته! احتمالا از همون تکنیکی که بار پیش شل رو وارد سیستم کرده اینبار هم اومده و اون روش رو دنبال کرده.

    خط دوم اومده استایل قالب وبلاگ رو گرفته حدس می‌زنم از داخل استایل خواسته ببینه چه پلاگینایی مثلا می‌تونسته طرف استفاده کرده باشه که احتمالا حفره ای داشته باشن برای استفاده‌های بعدی.

    و بعد در چندین مورد که همه ش رو اینجا نگذاشتم با استفاده از متد GET داخل پوشه آپلود رو می‌گرده به امید پیدا کردن اون حفره!

    به نظرم خط ۴م دقیقا جایی بوده که حفره رو پیدا کرده و توسط متد GET و با استفاده از سایت خودش تونسته شل خودش رو بارگزاری کنه.

    برنامه‌نویس نیستم اما حدس می‌زنم تونسته از حفره‌ای توی برنامه timthumb استفاده کنه و کد خودش رو که توی سایتش موجود بوده رو با استفاده از ضعف این برنامه به سرور قربانی منتقل کنه.

    راستش رو بخواید حتی متوجه آدرس جایی که کد رو گذاشته نمی‌شم :))

    http://blogger.com.bathroomremodeling.org/

    ولی داخلش که بشید سه تا کد اصلی ش رو خواهید دید که با استفاده از متد GET اونها رو به سیستم قربانی منتقل میکنه. پیشنهاد میکنم حسابی مراقب باشید که یهو خودتون الوده نشید با وارد شدن از طریق مرورگر! و خلاصه اینکه احتمالا مشکل پیدا شد! و چند تا شل جدید کشف شد و احتمالا یه حفره توی برنامه ذکر شده :)

    ساعت ۷:۱۳ با تاخیر برم کوه!