--
کارایی پورت های مهم (80-79-25 و....)
پورت ۸۰ چیست؟
پورت ۸۰ یکی از مهمترین پورتهاست. دنیای وب (صفحات اینترنتی) بر اساس همین پورت کار میکنه. توضیح اینکه وقتی به یه سایت وصل میشیم و صفحه وب را درخواست میکنیم، در واقع مرورگر اینترنتی به پورت ۸۰ اون کامپیوتر وصل میشه و اطلاعات رو میگیره (البته بعد از گرفتن اطلاعات اون رو تفسیر میکنه و به صورت یه صفحه نشون میده - دقت کنید که اطلاعات در واقع به صورت یک سری تگ HTML است ).
- با پورت ۸۰ صحبت کنیم
حالا ما میخواهیم با پورت ۸۰ یک کامپیوتر صحبت کنیم ولی به کمک telnet و nc.
اول باید یه connection (اتصال) با پورت ۸۰ برقرار کنیم (مثلا برای سایت hotmail.com باید بنویسم):
telnet www.hotmail.com 80
nc -v www.hotmail.com 80
پس اول باید یکی از دستورات بالا را استفاده کنیم. من همیشه توصیهام استفاده از nc بوده و خواهد بود.
حالا باید شروع به صحبت با پورت ۸۰ کنیم. من فعلا دو تا جمله براتون میگم و بقیهاش بمونه واسه بعد. دقت کنید که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما مینویسیم، نمایش داده نمیشود ولی کار میکنه.
۱- اولین جمله اینه: GET / HTTP/1.0 و بعدش دوتا Enter
به فاصلهها دقت کنید. دو طرف / ی که بعد از GET است، فاصله وجود دارد. این جمله به پورت ۸۰ میگه که هرچی در header داره، نشون بده. و جواب میشنوم:
HTTP/1.0 302 Moved Temporarily
Server: Microsoft-IIS/5.0
Date: Thu 05 Dec 2002 12:02:51 GMT
Location: http://lc2.law5.hotmail.passport.com/cgi-bin/login
X-Cache: MISS from cache5.neda.net.ir
Connection: close
۲- دومین جمله اینه: GET / what/ever و بعدش دوتا Enter
به فاصلهها دقت کنید. این دستور باعث میشه که هر چی داره، رو کنه.
البته توجه کنید که ما مسیر را مشخص نکردیم. این حالت که بدون مسیر است خیلی وقتها کار نمیکنه (مثل همین مثال !!)
گاهی پیش میآد که یک سری دستورات خاص را همیشه باید پشت سرهم به یه پورت خاص بفرستیم و بخواهیم در وقت صرفهجویی کنیم. مثلا همین جمله GET / HTTP/1.0 و دو Enter پشت سرهم که همیشه استفاده میکنیم. در این موارد میتوان این دستورات را در یک فایل تایپ کرد (همراه با Enter ها که باید موقع نوشتن حتما بزنید) و بعد مثلا با نام ali.txt ذخیره کنید و بعد یکی از دستورات زیر را بنویسیم:
nc -v www.far30.com 80 < ali.txt
type ali.txt | nc -v www.far30.com 80
که همان کارهای بالایی را انجام میده.
- حالا میخوام مسیر رو مشخص کنم
مثلا فرض کنید که میخوام فایلی به اسم index.html را از مسیر startup در سایتی به اسم www.site.com داونلود کنیم. اول یه nc میکنیم به سایت. بعد مینویسیم:
GET /startup/index.html HTTP/1.0
بعد دو تا Enter میزنیم.
این مثال نشون میده که چطوری مسیر رو میشه مشخص کرد. همین کار رو میتونیم برای فایلهایی مثل فایلهای گرافیکی و ... انجام بدیم و حتی میتونید اطلاعاتی که میرسه رو در یک فایل ذخیره کنید. برای اینکار مینویسید:
nc -v www.site.com 80 > index.html
(این کاری که کردیم با موردی که در بالا نوشتیم فرق میکنه! در بالا دستورات GET رو تو یه فایل مینوشتیم و میفرستادیم که اجرا بشه ولی الان داریم نتایجی که بر میگرده رو در یک فایل ذخیره میکنیم!) میشه این دوتا رو ترکیب کرد مثلا نوشت:
nc -v www.site.com 80 <> index.html
پورت ۷۹ چیست؟
پورت ۷۹ را پورت finger میگویند. کاربرد این پورت به اوایل ایجاد اینترنت برمیگرده و کاربردش مخصوص سیستمعامل یونیکس بودهاست (الان هم تقریبا فقط در خانواده سیستمهای یونیکس این پورت قابل استفاده است).
وقتی این پورت روی سیستمعامل یونیکس باز باشه، میشه با یک request ساده فهمید که از بین کسانی که در آن سیستم account دارند، کدامها on هستند (یعنی کدامها به سیستم login شدهاند). برنامهای که پورت ۷۹ رو در یک سیستم باز میکنه، finger server میگن و چون مختص سیستمعامل یونیکس است، میتونین از عبارت Finger Deamon استفاده کنین. حالا که پورت ۷۹ روی سیستم باز شد، شما میتونین با اون ارتباط برقرار کنین.
- با پورت ۷۹ صحبت کنیم
همانطور که میدانید، برای صحبت کردن با پورتها از دو برنامه telnet و nc میشه استفاده کرد. در مورد پورت ۷۹ یه نرمافزار دیگر به نام finger در تمام سیستمعاملهای یونیکس و برخی سیستمعاملهای ویندوز وجود دارد که علاوه بر دو برنامه قبلی، اونم میشه به کار برد.
فرض کنید که میخوام با پورت ۷۹ در کامپیوتری به اسم router2.iums.ac.ir ارتباط برقرا کنم. برای این کار یکی از سه دستور زیر را استفاده میکنم:
telnet router2.iums.ac.ir 79nc -v router2.iums.ac.ir 79finger .@router2.iums.ac.ir
دقت کنید که در دو دستور اول شماره پورت مشخص شده ولی دستور آخری نه، چون دستور finger فقط برای همینکار استفاده میشه و نمیتوان باهاش با پورت دیگهای ارتباط برقرار کرد. ضمنا به ساختار دستور آخر توجه کنید. بعد از اجرای دستور، جواب میشنوم:
Line User Host(s) Idle Location 33 tty 33 whgh Async interface 0 34 tty 34 najahan Async interface 0 35 tty 35 sadf Async interface 0 36 tty 36 abokho Async interface 0 38 tty 38 whgh Async interface 0 39 tty 39 bzamani Async interface 0 40 tty 40 saeedmah Async interface 0 41 tty 41 mfaizi Async interface 0 42 tty 42 gourabi Async interface 0 43 tty 43 farhadz Async interface 0 44 tty 44 arbks Async interface 0 45 tty 45 mhalavi Async interface 0 46 tty 46 farhood Async interface 0 47 tty 47 staavoni Async interface 0 48 tty 48 whgh Async interface 0* 66 vty 0 idle 0 217.218.84.58 Interface User Mode Idle Peer Address
نکته مهم این است که اطلاعاتی که به کمک پورت ۷۹ به دست میآد، خیلی بستگی به سروری داره که این اطلاعات رو میفرسته. بعضی از سیستمها علاوه بر نام افراد (username) که در این مثال دیده میشه، نام و نام خانوادگی افراد، ساعت و محل login کردن و ... را نمایش میدهند. اما چیزی که همیشه وجود دارد و مشترک است، username هاست که از نقطه نظر یک هکر بسیار ارزشمند است. در این مثال ما اکانتهایی به اسم najahan ،whgh و ... در این سرور وجود دارد و افراد مربوطه در حال حاضر login کردهاند. اگر اکانتی موجود باشد ولی فرد مورد نظر در حال حاضر از آن اکانت وارد نشده باشد، نمایش داده نمیشود. این لیست فقط برای اکانتهای فعال است. پس نتایجی که شما در ارتباط با این سرور کسب میکنید، با نتایجی که من نوشتم متفاوت خواهد بود.
- این اطلاعات به چه دردی میخورد؟
اول اینو بگم که finger کردن، جزئی از مراحل Enumeration است (البته در حالت کاربرد legal یا قانونی). منظور از عبارت Enumeration یا به طور خلاصه Enum، پیدا کردن لیست کاربران است.
+ فرض کنید میخواهید یک لیست از پسوردها را تست کنید تا اینکه یکی شانسی درست در بیاد (درست مثل دزدها که یه سری کلید را تست میکنن که یکی به قفل بخوره و باز کنه!) حالا سوال اینه که این پسوردها رو برای چه username ی تست میکنید؟ جواب، username هایی است که با Enumeration به دست اومده است. پس اول با Enumeration یه لیست پیدا میکنید و بعد تعداد زیادی پسورد رو روش تست میکنید (روش این کارو بعدا میگم).
+ کاربرد بعدی finger در رابطه با یک سری اکانتهای خاص است. من همیشه وقتی به یک اکانت به اسم guest برخورد میکنم، همیشه پسوردهای guest یا libguest یا myguest و ... رو تست میکنم که گاهی جواب میده. همینطور در مورد اکانتی به اسم demo پسورد demo را تست میکنم و ... معمولا موسسات بزرگ پر است از این username های عمومی که حدس زدن پسورد مربوطه کار مشکلی نیست.
+ گفتم که بعضی سرورهای finger نام و نامخانوادگی افراد را هم برایمان میفرستند. چون بعضی از افراد متاسفانه یا خوشبختانه از این اطلاعات برای پسوردشون استفاده میکنند، میتونه مفید باشه.
+ یک کاربرد دیگه و البته بسیار مهم موقعی است که مثلا میخواهید یک سری پسورد رو روی یک اکانت خاص تست کنید. من همیشه اول یک finger میکنم که مطمئن بشم که فرد در حال حاضر login نکرده باشد و بعد این کار رو شروع میکنم ( یعنی انقدر صبر میکنم که دیگه آن اسم خاص در finger نمایش داده نشه یعنی طرف مقابل logout کرده باشد!)
ورت ۲۵ - خلاصه پروتکلهای مرتبط با E-mail
۱- SMTP :
روی پورت ۲۵ اجرا میشد. از این پروتکل برای ارسال E-mail استفاده میشود. این پروتکل امروزه دیگه برای خوندن E-mail استفاده نمیشه. این پروتکل بحث امروز ماست.
۲- POP3 :
این پروتکل را روی پورت ۱۱۰ بحث میکنیم و از آن برای خواندن E-mail های رسیده استفاده میکنیم.
۳- IMAP :
این پروتکل به عنوان جایگزینی برای پروتکل POP3 بهکار میره. از نظر ساختاری کمی با پروتکل POP3 متفاوت است ولی کارش همان است و برای خواندن E-mail های رسیده به کار میرود.
+ Web-based Email: یک روش دیگه برای دسترسی به E-mail وجود دارد و آن استفاده از امکانات وب برای خواندن و فرستادن E-mail است. وقتی شما از خود سایت yahoo یا hotmail برای کار با E-mail استفاده میکنید، در واقع همین روش را به کار میبرید. نکته قابل توجه آن است که این روش کندتر از استفاده مستقیم از پروتکلهاست.
- پورت ۲۵ چیست؟
پورت ۲۵ برای ارسال E-mail بهکار میرود. این پورت از پروتکل SMTP برای این کار استفاده میکند. نکته مهم آن است که این پروتکل توانایی خواندن E-mail را ندارد و فقط میتواند E-mail بفرستد.
حالا سوالی که پیش میآید که چه برنامههایی روی سرور پورت ۲۵ را باز میکند؟
همانطور که گفتم، SMTP فقط یک پروتکل است (نه یک برنامه) و از نظر لغوی مخفف عبارت Simple Mail Transfer Protocol است. برنامهای که پورت ۲۵ را باز میکند تا بتوان از طریق آن E-mail ارسال کنیم، SMTP Server میگویند. SMTP Server