نگاره‌هایی پیرامون امنیت، شبکه و رمزنگاری

01 ژانویه 2020

اگر تاحالا با دیباگرهایی مثه immunity debugger  یا ollydbg کار کرده باشید حتما به اینم فکر کرده اید که میشه خود ویندوز رو هم دیباگ کرد یا نه ؟ یا اگه میشه چه جوری اینکارو بکنیم؟

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

خب بریم سراغ اصل ماجرا

روش اول،

اول از همه باید به لینک زیر برید و ویندوز SDK رو نصب کنید.

https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

اگه فایل iso شو دانلود کنید که خب خیلی بهتره.

بعد از اون یه VMWare Workstation Pro  نصب کنید و یه ویندوز (ترجیحا 10) نصب کنید به عنوان Guest

اینکارو میتونید روو Hyper-v  یا VirtualBox هم انجام بدید.

بعد از نصب اون دیباگر Windbg به ویندوزتون اضافه شده ، حالا باید سرچ کنید و Windbg x64 رو پیدا کنید و Open File Location  رو بزنید تا به جایی برید که فایل اصلی اونجا قرار داده.

حالا دنبال این دوتا فایل بگردید :

VerifiedNICList.xml
kdnet.exe

و این دوتا فایل رو کپی کنید و داخل Guest تون کپی کنید.

حالا یه CMD  رو Run As Administrator  کنید و KDNET را ران کنید.

اگه به این صورت

Network debugging is supported on the following NICs

رو دیدید این یعنی NIC  شما ساپورت دیباگ داره ، توو مرحله بعدی باید آی پی هاست رو پیدا کنید برای مثال با IPCONFIG  ببینید آی پی تون (از GUEST) چیه.

آخرین مرحله اینه که کامند زیر رو ران کنید.

KDNET [Host IP] [Port]

KDNET 192.168.200.1 50000

و در آخر باید یه چنین ریزالتی رو ببینید

Enabling network debugging on Intel(R) 82574L Gigabit Network Connection.

To debug this machine, run the following command on your debugger host machine.

windbg -k net:port=50000,key=xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx

Then reboot this machine by running shutdown -r -t 0 from this command prompt

خب کلید بالا کلیدی هست که باهاش میشه دیباگ کرد.

همونجور که توضیحاتش میگه از هاست windbg  رو به این صورت اجرا کنید :

windbg -k net:port=50000,key=xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx

و بعد از اون GUEST رو Restart  کنید.

تقریبا تمومه، فقط باید صبر کنید که GUEST تون ریستارت بشه و بعدش Windbg به Guest متصل شده و عملا دیباگ ما شروع شده.

روش دوم ،

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

برای اینکار باید داخل تنظیمات VMWare  برید و یه Device  برای سریال پورت بهش اضافه کنید .

در واقع میخوایم Output to named pipe داخل این Guest راه اندازی کنیم.

همونجور که بالا میبینید باید یه اسم برای سریال پورتمون انتخاب کنیم.

\\.\pipe\Name

در واقع نام باید دقیقا به فرم بالا باشد و به جای Name  اسم مورد نظرتون رو بزارید.

حالا داخل Guest  باید داخل Run  تایپ کنید Msconfig

در نهایت  داخل اونجا داخل تب Boot  اون سریال پورتی را که اضافه کنید به صورت COM پورت اضافه کنیم.

سپس تیک Debug  رو بزنید.

حالا داخل windbg به مسیر زیر بروید:

File > Kernel Debug

بعد از اون به تب COM  برید و اون اسمی که برای سریال پورت رو انتخاب کردید رو بزنید و همچنین اون دوتا تیک Reconnect  و Pipe  رو هم فعال کنید.

خب دیگه تمومه و بعد از ریستارت باید بتونید وصل بشید.

خب الان دیباگ کردیم ، حالا بعدش چی ؟

بعد از اینکه دیباگ رو شروع کردیم الان وقتشه که Symbol  هارو ست کنیم.

اما Symbol  چیه ؟

سیمبل ها فایل های .pdb ای هستن که مایکروسافت ارائه میده تا بتونیم ساده تر دیباگ کنیم یا مکانیزم های ویندوز رو راحت تر بفهمیم. به این صورت که مثلا میتونیم اسم فانکشن های ویندوز رو داخلش ببینیمم.

برای اینکار باید به قسمت

File > Symbol File Path 

و اینو کپی کنید:

SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

این تنظیمات به windbg  اعلام میکنه که برای سیمبل ها اول داخل C:\Symbols  بگرد و اگر اونجا پیدا نکردی از سرور خود مایکروسافت دانلود کن.

همین !

امیدوارم این پست بهتون کمک کرده باشه.

1 پست نوشته شده
یک عدد علاقه مند به مهندسی معکوس کرنل ویندوز و معماری پردازنده‌ها
دسته‌ها: مهندسی معکوس
  • به اشتراک بگذارید:
  1. نام گفت:

    VirtualKD هم راهکار خوب و ساده ای هست.