آموزش دسکتاپ فیشینگ، از نفوذ تا صید

۳ ۰۷ ۱۳۸۹

در مطلب قبل به اصول پایه حمله «دسکتاپ فیشینگ» پرداختیم. باید بگم بازتاب خوانندگان فوق العاده بود و از تمام کسانی که با نظرشان ابراز علاقه کردند تشکر می کنم. این کمک می کنه بفهمم زنگ زنگوله را چه وری باید بزنم! همان طور که قول داده بودم در این مطلب بیشتر وارد جزئیات میشیم پس ادامه را با دقت دنبال کنید.

توجه: این مطلب صرفآ جهت مقاصد آموزشی نوشته شده است و مسئولیت هر نوع استفاده از این محتوا به عهده خواننده است.

گفتیم اول باید اون فایل hosts را تغییر بدیم، اما چطوری؟
این کار (اعمال تغییرات روی فایل های قربانی) خودش یک زیرشاخه عظیم در بحث امنیت هست و صد ها روش و تکنیک مختلف برایش وجود داره و هر نوع آسیب پذیری که به شما اجازه بده اون فایل را تغییر بدید می تونه مناسب باشه، حالا از یک ماکرو اکسل گرفته تا یک فایل bat یا self-extracting archive و… من در اینجا به چند روش جالب اشاره می کنم.

self-extracting archive: این فایل ها مثل یک مینی installer هستند و فایل ها را در آدرس هایی که می خواهید استخراج می کنند. 7zip و KGB Archiver از این فایل های می سازند اما گزینه های مورد نظر ما را WinRAR خیلی بهتر از بقیه ارائه می کند (نسخه امتحانی کافیه). راهنمای تصویری؟

نکته: می توانید با استفاده از Binder ها آرشیو را با یک فایل اجرایی دیگه (مثلآ setup یک بازی) ادغام کنید.

رونویسی فایل با Installer: برنامه های زیادی نظیر Inno Setup و Install Jammer هستند که به شما این امکان را می دهند که فایل های مختلفی را روی سیستم نصب کنید. فقط کافی است یک نسخه از یک فایل hosts آلوده شده را هم به عنوان فایل جانبی برنامه ای که قرار است نصب بشود اضافه کنید و مقصد فایل را پوشه etc قرار دهید. راهنمای تصویری؟

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

فرمان های ویندوز: با چند دستور ساده میتونیم خطوطی که می خواهیم را به فایل hosts اضافه کنیم. کد زیر نمونه ای از Windows Batch Programming است.

Desktop Phishing Commands

خط اول، دستوراتم را فقط اجرا کن، به من نشون نده.

خط دوم و سوم، آن چه در میان گیومه ها هست را به انتهای فایل hosts اضافه کن.

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

مشکل این روش اینه که فایل با پسوند bat را نمی تونید به عنوان یک برنامه بدیم به قربانی. فقط کافیه طرف فایل را با نت پد باز کنه و همه چیز لو میره، از جمله IP سرور شما.

فایل اجرایی: با این کار در اصل همان دستورات مرحله قبل را با برنامه نویسی ++C به عنوان یک فایل اجرایی در میاریم که آنالیز کردنش برای قربانی ها سخت تر خواهد بود و می توان با ادامه دادن کد آن را به شکل یک برنامه کاربردی در آورد، مثلآ یک ماشین حساب ساده.

C++ Code System() hosts

همانطور که گفتم روش های معرفی شده مستقیمآ به فیشینگ ربطی ندارند. به همین دلیل من وارد جزئیات هر کدام نشدم. اگر اینها خیلی سخت به نظر می رسند احتمالآ بهتر است فعلآ به ماهی گیری فکر نکنید!

از اینجا نحوه پیاده سازی حمله اصلی را توضیح می دهم، برای دنبال کردن آموزش نیاز به امکانات خاصی نخواهید داشت در نتیجه توصیه می کنم هر مرحله را با دقت دنبال کنید و خودتان روی کامپیوتر انجام دهید.

اگر یادتان باشد گفتم در دسکتاپ فیشینگ نیازی به طراحی جداگانه صفحات برای هر سایت نیست. این در صورتی است که ما یک «بازوی فیشینگ» هوشمند بنویسیم و آن را بین راه کاربر قرار دهیم (حمله MITM). نوشتن این بازو به دانش عمیق برنامه نویسی و آموزش دادن آن به ده ها پست وبلاگی نیاز دارد. در این آموزش برای سادگی کار ما فقط سایت بلاگفا را مورد حمله قرار می دهیم.

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

1. xampplite را دانلود و نصب کنید.

2. جایی که xampplite را نصب کردید وارد پوشه apache سپس پوشه conf شده و فایل httpd.conf را باز کنید. در خط 178 (DocumentRoot) بعد از htdocs اضافه کنید phishing/

این طوری ریشه سرور به پوشه phishing تغییر پیدا می کند. پس این پوشه را در htdocs بسازید.

3. در پوشه phishing یک فایل به نام index.php بسازید و کد زیر را در آن بنویسید.

PHP Echo Apache is up

4. آپاچی را اجرا کنید (از xampp-control.exe).

XAMPPLite Start Apache

نکته: در این آموزش ما خودمان هم نفوذگر هستیم و هم قربانی، چون نمی خواهیم از دو کامپیوتر استفاده کنیم.

علت اینکه در شرایط واقعی حتمآ باید IP اختصاصی داشته باشیم اینه که در hosts فقط می تونیم IP اضافه کنیم (نه URL) در نتیجه صفحه تقلبی یا هر نوع اسکریپت دیگری که داریم باید در قسمت ریشه سرور ذخیره شده باشد و با یک آی پی اختصاصی مستقیمآ قابل دسترسی باشد.

5. سایت بلاگفا را باز کنید و از گزینه Save As با اسم blogfa ذخیره کنید. مطمئن شوید که Save as type را روی Complete گذاشته اید.

Save Webpage Complete Blogfa.html

6. با هر روشی که دوست دارید فایل هاست را تغییر بدهید و دو خط زیر را به آن اضافه کنید.

127.0.0.1 Blogfa IP

127.0.0.1 برای کامپیوتر یعنی «آی پی خودم»، در اینجا چون نمی خواهیم از کامپیوتر دیگری استفاده کنیم خودمان هم قربانی هستیم و هم هکر (سرور). در شرایط واقعی این آدرس باید IP سرور اختصاصی باشد.

7. حالا وارد سایت بلاگفا شوید، اگر همه چیز را درست انجام داده باشید باید به جای صفحه اصلی بلاگفا صفحه پیغام Apache is up را مشاهده کنید.

تا اینجا ما سرور اختصاصی خودمان را راه انداخته ایم و با موفقیت سیستم قربانی را هم آلوده کرده ایم تا به جای بلاگفا به سرور ما منتقل شود. حالا باید صفحه تقلبی را بسازیم.

نکته مهم: چون ما «بازوی فیشینگ» هوشمندی نمی سازیم روش ما دو کمبود اصلی خواهد داشت.

اول اینکه باید صفحه تقلبی را به صورت دستی بسازیم و این یعنی باید تمام فایل های گرافیکی که اون صفحه تقلبی را تشکیل می دهند را هم روی سرور مان داشته باشیم چون قربانی به بلاگفا واقعی دسترسی ندارد و مثلآ نمی تواند لوگوی بلاگفا را از سرور واقعی بگیرد. برای قربانی blogfa.com به معنی ریشه سرور شما (نفوذگر) خواهد بود و مثلآ blogfa.com/header.png نه به فایل روی سرور واقعی بلکه به سرور شما اشاره می کند. این یعنی هر محتوای زنده ای که در صفحه جعل شده وجود داشته باشد هم نمی تواند آپدیت شود و همیشه یکسان باقی می ماند (مثلآ آخرین وبلاگ های به روز شده…). همچنین مثلآ اگر ظاهر صفحه واقعی تغییر کند صفحه جعل شده همچنان مثل قبل باقی می ماند.

دوم، به خاطر همان مشکلی که در نکته اول توضیح دادم سایر لینک های بلاگفا از کار می افتند، مثلآ اگر قربانی وارد صفحه اول شود – و ما صفحه اول را جعل کرده باشیم – اگر قربانی به جای وارد کردن اطلاعات از فرم صفحه اول تصمیم بگیرد روی لینک «ورود کاربران» کلیک کند با پیغام Object not found مواجه می شود چون تنها صفحه ای که روی سرور شما وجود دارد همان صفحه اصلی است.

با نوشتن یک بازوی هوشمند هر دو مشکل برطرف می شود. در این مثال ما فقط صفحه اول را جعل می کنیم،

8. حالا به جایی که در مرحله 5 صفحه را ذخیره کردید بروید و محتوای فایل html ای که ذخیره کردید را به جای کدی که برای “Apache is up” در فایل index.php داشتیم ذخیره کنید.

جایی که صفحه را در مرحله 5 ذخیره کردید باید یک پوشه به نام blogfa_files باشد. این پوشه را هم با جاش منتقل کنید کنار فایل index.php واقع در پوشه phishing.

9. حالا دوباره سایت بلاگفا را باز کنید. اگر همه مراحل را به درستی انجام داده باشید باید صفحه بلاگفا را با ظاهری خیلی شبیه به صفحه اصلی ببینید (می توانید با باز کردن آی پی 38.113.162.27 صفحه اصلی را ببینید).

حالا یک نکته کوچولو، باید favicon (آیکون کنار آدرس سایت) را درست کنیم. برای این کار favicon را از http://38.113.162.27/favicon.ico می گیریم. بعد از ذخیره کردن آیکون با اسم favicon.ico و قرار دادن آن در کنار فایل index.php باید به طور اتوماتیک توسط مرورگر نمایش داده شود (گاهی اوقات به خاطر باگ مرورگر ها و cache همان لحظه دیده نمی شود).

به هشت فایل پشت زمینه هم در style.css اشاره شده که آنها را هم باید جداگانه دانلود کرده و در پوشه images کنار بقیه فایل ها قرار دهید تا پشت زمینه دکمه ها و صفحه درست شبیه نسخه اصلی شود. همچنین احتمالآ تغییر ظریفی برای نمایش تبلیغات باید انجام بدهید که آن را به عهده خودتان می گذارم.

حالا که ظاهر سایت را درست کردیم فقط باید قسمت لاگین را دستکاری کنیم تا بتوانیم آنها را ذخیره کنیم.

10. در کنار فایل index.php یک فایل جدید بسازید به نام login.php، این فایل قرار است action فرم لاگین بشود. یعنی اطلاعاتی که در فرم ثبت می شود به این فایل فرستاده می شود تا پردازش شود. در این فایل ما باید کدی بنویسیم که اطلاعات دریافتی را در یک فایل دیگر ذخیره کند.

کد زیر (+) را در فایل login.php قرار دهید:

Simple PHP Phishers Arm Script

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

خط دوم، میگیم فایل Pass.txt را بساز و اگر وجود داره بهش اضافه کن.

خط سوم، نام کاربری را در فایل بنویس و برو سر خط.

خط چهارم، رمز را در فایل بنویس و برو سر خط.

خط پنجم، تاریخ و ساعت را بنویس، یک خط فاصله بده و برو سر خط.

خط شش، کارمون تموم شد.

حالا بازوی نه چندان باهوش ما آماده است و فقط باید فرم را به جای مقصد اصلی به فایل خودمان هدایت کنیم، برای این کار در فایل index.php عبارت =action را جستجو کنید و مقدار آن را به login.php تغییر دهید.

ست ماهی گیری شما آماده است! حالا صفحه را ریفرش کنید و یک نام کاربری و کلمه عبور الکی در فرم وارد کرده و لاگین کنید. می بینید هیچ اتفاقی نمی افته و فقط انگار صفحه ریفرش میشه.

Fake Blogfa Webpage

حالا اگر کنار فایل index.php را نگاه کنید یک فایل جدید به نام Pass.txt می بینید که حاوی اطلاعات صید شده است.

Pass.txt Phishing

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

امیدوارم از این مطلب استفاده برده باشید، از آن چه یاد گرفتید استفاده بد نکنید. در مطالب بعدی نحوه دفع این حملات را بررسی خواهیم کرد.



دسکتاپ فیشینگ، سرقت پیشرفته اطلاعات که احتمالآ چیزی از آن نمی دانید

۲۸ ۰۶ ۱۳۸۹

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

توجه: این مطلب صرفآ جهت مقاصد آموزشی نوشته شده است و مسئولیت هرگونه استفاده نادرست از این اطلاعات به عهده خواننده است.

فیشینگ چیه؟
فیشینگ یک تکنیک قدیمی (بیشتر از بیست سال پیش) برای سرقت اطلاعات کاربران است که همچنان امروز هم مورد استفاده هکر ها است. فیشینگ به زبان ساده یعنی صفحه ای شبیه صفحه لاگین یک سایت معتبر که حاوی کدی است که آنچه شما در قسمت نام کاربری و رمز وارد می کنید را به طور مخفیانه برای هکر می فرستد. مثلآ یک صفحه که عینآ شبیه صفحه لاگین یاهو است با این تفاوت که وقتی روی دکمه Login کلیک می کنید اطلاعات شما اول به طور مخفیانه برای هکر ارسال شده و سپس وارد یاهو می شوید.

فیشینگ

حالا دسکتاپ فیشینگ چیه؟
دسکتاپ فیشینگ یک مدل جدید تر از فیشینگ است که مشکلاتی که فیشینگ قدیمی دارد را ندارد. مهم ترین تفاوت دسکتاپ فیشینگ با فیشینگ معمولی این است که در دسکتاپ فیشینگ لینک صفحه ای که حاوی کد مخرب است هیچ تفاوتی با لینک سایت اصلی نخواهد داشت! یعنی کاربر مثلآ آدرس سایت را همان yahoo.com می بیند و ابدآ شک نمی کند که این فرم بتواند یک صفحه فیشینگ باشد. در حالی که در فیشینگ قدیمی صفحه فیشینگ باید در یک لینک جدا قرار داشته باشد و کاربر با کمی دقت به سادگی می تواند متوجه شود که وارد یک صفحه تقلبی شده است. مزیت دیگر دسکتاپ فیشینگ این است که نیازی به طراحی یک صفحه تقلبی جداگانه برای هر سایت نیست و با یک کد می توان تمام سایت ها را آلوده کرد.

دسکتاپ فیشینگ

مگه میشه؟!
بله، در دسکتاپ فیشینگ نفوذگر با روش های متفاوت فایل مرتبط به DNS را تغییر می دهد (در ویندوز فایل hosts). این باعث می شود شما لینک های سایت ها را همانطور که هستند ببینید و فکر نمی کنید که دارید یک صفحه تقلبی را مشاهده می کنید اما آنچه در مرورگر شما لود شده است در اصل صفحه ای تقلبی است که حاوی کد های مخربی است که اطلاعاتی که شما در فرم های وارد می کنید را به نفوذگر می فرستد.

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

تفاوت فیشینگ با دسکتاپ فیشینگ

چطوری؟
من تا جایی که می شد ماجرا را براتون ساده کردم. اگر همچنان دقیق متوجه نمیشید که این روش چطوری کار می کنه باید یاد بگیرید DNS چیه و چی کار می کنه. من براتون به زبان ساده توضیح میدم. کامپیوتر ها آدرس سایت ها را با یک سری عدد به اسم «آدرس IP» می شناسند و اسم خود سایت مثلآ yahoo.com براشون معنی نداره. هر موقع شما تایپ کنید yahoo.com و بخواهید وارد سایت یاهو شوید کامپیوتر تان باید بداند آدرس IP سایت یاهو چیست تا بتواند سایت را برای شما باز کند. کامپیوتر تان اول دفترچه یادداشت خودش را نگاه می کند تا ببیند می داند این آدرس چیست یا خیر، اگر در دفترچه خودش نداشت (همان فایل hosts که راجع بش صحبت کردیم) از DNS می پرسد و DNS آدرس IP سایت مورد نظر را به کامپیوتر می گوید.

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

میشه با مثال نشون بدی؟

1.  وارد آدرس C:\Windows\System32\drivers\etc شوید و فایل hosts را با نت پد باز کنید.

2. دو خط زیر را به این فایل اضافه کنید (بعد از خط هایی که با # شروع شده اند):

Hosts IP Yahoo

فایل را ذخیره کنید و مرورگر خود را باز و بسته کنید.

3. حالا وارد سایت یاهو شوید، می بینید که وارد سایت پارسیک می شوید اما لینک همچنان سایت یاهو را نشان می دهد.

اگر همچنان صفحه یاهو را می بینید مطمئن شوید فایل را به درستی ذخیره کرده اید و مرورگر خود را باز و بسته کرده اید. در نهایت ممکن است مجبور باشید دیسکانکت شوید و دوباره به اینترنت وصل شوید.

الان چی کار کردیم؟
ما فایل hosts که همون دفترچه کامپیوتر مون باشه را تغییر دادیم و توش نوشتیم آدرس IP سایت یاهو 64.130.216.112 هست در حالی که این عدد مربوط به سایت پارسیک هست. در نتیجه وقتی کامپیوتر خواست یاهو را باز کند آن خط را خواند و گول خورد و سایت پارسیک را باز کرد، با این فکر که این همان یاهو است.

پس کد مخرب و این برنامه ها چی شد؟
تو این پست من می خواستم خیلی جلوتر از اینها برم و ریزه کاری های «بازوی فیشینگ» که اصل کار را انجام میده را توضیح بدم. اما همانطور که می دانید مطالب زنگوله را کاربران مختلفی می خوانند و ما می خواهیم که آنهایی که تازه کار هستند هم بتوانند مطالب را دنبال کنند. به همین دلیل مباحث پایه را با جزئیات و به زبان غیر فنی بررسی کردیم.

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



با ساختار پوشه ها در لینوکس آشنا شوید

۲۱ ۰۶ ۱۳۸۹

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

Linux Directory Hierarchy

/ – ریشه (روت): تمام فایل ها از اینجا سرچشمه می گیرند. یعنی در اصل ریشه سیستم اینجا است. تنها کاربر root اجازه تغییر خود این پوشه را دارد. توجه کنید که / با root/ یکی نیست. root/ پوشه خانگی کاربر root است و ربطی به ریشه اصلی یا / ندارد.

bin/ – باینری های کاربر: شامل فایل های دودویی (باینری) اجرایی است. دستور های معمول مثل ping، ls و grep در اینجا ذخیره شده اند.

sbin/ – باینری های سیستم: عین مورد قبل، با این تفاوت که دستورات موجود در این پوشه اختصاصآ قابل دسترس مدیر سیستم هستند و نه سایر کاربران با دسترسی پایین تر. مثلآ iptables، reboot و ifconfig.

etc/ – تنظیمات: شامل فایل هایی است که تنظیمات برنامه ها را نگه می دارند. اسکریپت هایی که موقع روشن و خاموش شدن کامپیوتر اجرا می شوند هم اینجا هستند.

dev/ – دستگاه های متصل شده: فایل های دستگاه های متصل شده به سیستم اینجا هستند (مثلآ دستگاه های جانبی usb).

proc/ – جزئیات پروسه ها: حاوی اطلاعات مربوط به برنامه های قابل اجرا است. این پوشه یک پوشه سیستمی مجازی است که اطلاعاتی نظیر uptime و شبکه کامپیوتر به صورت متنی در آن ذخیره می شود.

var/  – فایل های متغیر:حاوی فایل هایی است که انتظار می رود بزرگ شوند! مثلآ لاگ سیستم و…

tmp/ – فایل های موقت: فایل های موقت که فقط تا زمانی وجود خواهند داشت که سیستم ریستارت شود. این پوشه مثل چرک نویس کامپیوتر است.

usr/ – اطلاعات کاربر: محل جانبی برای ذخیره اطلاعات کاربر نظیر برنامه ها و سورس کد ها و… است. اگر چیزی در bin/ پیدا نکردید باید usr/bin/ را امتحان کنید.

home/ – اطلاعات کاربر: پوشه خانگی کاربران است. در اصل همان Documents and Settings ویندوز است.

boot/ – بوت لودر: شامل فایل های بوت لودر سیستم نظیر grub و lilo است. این پوشه معمولآ روی یک پارتیشن جدا است.

lib/ – کتابخانه های سیستم: شامل کتابخانه هایی است که برای درست اجرا شدن دستورات موجود در bin/ و sbin/ ضروری هستند.

opt/ – پکیج های متفرقه: شامل افزونه های «اختیاری» است که روی سیستم تان نصب می کنید.

mnt/ – فایل های mount شده موقت: شامل فایل هایی است که به صورت موقت mount شده اند.

media/ – اجزا جدا شونده: شامل اطلاعات موجود در دستگاه های جداشونده نظیر سی دی رام و فلاپی درایو و… است.

srv/ – سرویس های سیستم: شامل فایل های مربوط به سرویس های مختلف سیستم است.

اطلاعات بیشتر:

Wikipedia: Filesystem Hierarchy Standard

Pathname: Filesystem Hierarchy Standard

Redhat: Overview of FHS