یداز مجموعه چگونه یک TCP پراکسی بسازیم، با ساخت سرور جعلی رسیدیم. اکنون قسمت دوم از مقاله ساخت سرور جعلی DNS را ادامه میدهیم. در این قسمت میخوانیم که چگونه میتوانیم سرور DNS واقعی بسازیم.
اکنون با مفهوم DNS spoofing آشنا شدیم، در ادامه سرور جعلی DNS کاملی میسازیم. این اسکریپت پایتون را روی لپتاپ خود ذخیره کرده و سپس با دستور زیر اجرا کنید:
sudo python /PATH/TO/SCRIPT.py
قبل از اجرای دستور، مطمئن شوید که DNS سرور موبایل همچنان روی آدرس IP لپتاپ تنظیم شده است. سپس دستور را اجرا کنید. روی موبایل از چند وبسایت بازدید کنید، و ترمینال لپتاپ را ببینید – باید درخواست DNS که از موبایل ارسال شده و توسط DNS سرور ما لاگ شده است را ببینید.
رفتار این سرور بستگی به نام فضایی دارد که برایش درخواست DNS ارسال شده است. اگر درخواست برای فضای میزبانی وبسایت مورد نظر ما باشد (در اسکریپت بالا بنام nonhttps.com نوشته شده، اکنون نمیخواهیم نگران https باشیم)، سرور ما با IP داخلی لپتاپ به موبایل پاسخ میدهد. برای سایر وبسایتها، درخواست DNS واقعی به سرور DNS واقعی ارسال میشود، و پاسخ واقعی به سمت موبایل هوشمند برگردانده میشود.
اکنون از وبسایت nonhttps.com (آدرس وبسایت مورد نظر) روی موبایل بازدید کنید، میتوانید ببینید که سرور DNS ما پاسخ DNS را جعل کرده و آدرس داخلی لپتاپ را به موبایل میفرستد.
سپس موبایل درخواست http برای وبسایت nonhttps.com را به جای سرور اصلی آن، به لپتاپ ارسال میکند. صفحه وبی بارگذاری نمیشود، تا اینجای کار همه چیز درست است.
نرمافزار Wireshark را با فیلتر tcp port 80 && dst $YOUR_LAPTOPS_LOCAL_IP اجرا کنید. وبسایت nonhttps.com را روی موبایل دوباره لود کنیذ و به وایرشارک نگاهی بیاندازید. باید ببینید که موبایل سعی دارد یک اتصال TCP روی درگاه ۸۰ با لپتاپ برقرار کند. destination IP اتصال TCP باید همان آدرس داخلی لپتاپ باشد، و source IP باید همان IP موبایل هوشمندتان باشد. این بدین معنی است که موبایل را قانع کردهایم تا درخواست TCP برای وبسایت nonhttps.com را به لپتاپ ارسال کند.
تا اینجای پروژه TCP پراکسی، موبایل را تنظیم کردیم که درخواستهای DNS را به لپتاپ ارسال کند. یک DNS سرور ساختیم، بطوریکه لپتاپ را قادر به جعل پاسخ DNS میکند. اگر درخواست DNS با وبسایت مورد نظر ما مطابقت داشته باشد، IP داخلی لپتاپ بعنوان پاسخ برگردانده میشود. درغیر اینصورت پاسخهای اصلی و واقعی درخواستهای DNS به موبایل ارسال میشوند.
در دو قسمت بعدی، سرور TCP میسازیم که روی لپتاپ اجرا میشود و به اتصالهای TCPایی که از موبایل دریافت میکند گوش میدهد. این سرور محتویات این درخواستها را چاپ و ذخیره میکند، آنها را به مقصدهای مورد نظر هدایت میکند و رمزگذاری و رمزگشایی TLS را مدیریت میکند.
منبع: https://robertheaton.com/2018/08/31/how-to-build-a-tcp-proxy-2/