خلاصه درس: در اين درس مي‌آموزيم که با پورت ۲۵ (SMTP) ارتباط برقرار کنيم و از آن براي ارسال Fake Mail استفاده کنيم.
◊ پورت ۲۵ چيست؟
پورت ۲۵ براي ارسال E-mail به‌کار مي‌رود. اين پورت از پروتکل SMTP برای اين کار استفاده مي‌کند. نکته مهم آن است که اين پروتکل توانايي خواندن E-mail را ندارد و فقط مي‌تواند E-mail بفرستد.

حالا سوالي که پيش مي‌آيد که چه برنامه‌هايي روی سرور پورت ۲۵ را باز مي‌کند؟
همان‌طور که گفتم، SMTP فقط يک پروتکل است (نه يک برنامه) و از نظر لغوی مخفف عبارت Simple Mail Transfer Protocol است. برنامه‌ای که پورت ۲۵ را باز مي‌کند تا بتوان از طريق آن E-mail ارسال کنيم، SMTP Server مي‌گويند. SMTP Server يک عبارت کلي است، برای اين نوع برنامه‌ها. حالا خود SMTP Server انواع مختلف دارد که مشهورترين‌هايشان، SMail، SendMail، ESMTP MAIL Service و … هستند. نکته مهم اين است که تفاوت زيادی نيست که سرور مورد نظر ما از کداميک از اين نرم‌افزارها استفاده مي‌کند، زيرا اصول کار با آنها يکي است.

برای صحبت کردن با پورت ۲۵ اول بايد يک Server پيدا کنيم که پورت ۲۵ در آن باز باشد (اگرچه در اکثر سرورها پورت ۲۵ باز است). بعد بايد طبق معمول از telnet يا nc براي ارتباط استفاده کنيم.
پورت ۲۵ از ديدگاه يک هکر چه کاربردی دارد؟

يک هکر از پورت ۲۵ برای ارسال Fake Mail (ميل ناشناس، ميل تقلبي) استفاده مي‌کند. دليل آن است که درصد بسيار بالايي از SMTP Server ها اهميتي نمي‌دهند که شما کي هستيد و به کي می‌خواهيد ميل بزنيد، بلکه فقط کار خود را مي‌کنند.

◊ چگونه يک SMTP سرور پيدا کنيم
پيدا کردن SMTP سرور کار سختي نيست. اگرچه از اکثر SMTP Server ها مي‌توان به هر کسي E-mail زد ولي من هميشه توصيه مي‌کنم از SMTP Server ی استفاده کنيد که مربوط به به Mail Box قرباني است. برای مثال فرض کنيد که مي‌خواهيد به کسي fake mail بزنيد و اون شخص mail box اش در ياهو است. در اين حالت من ترجيح مي‌دم که از SMTP Server های سرور ياهو استفاده کنم ( اگرچه از هر سرور ديگری برای اين کار مي‌تونم استفاده کنم ).
اگرچه ما عبارت fake mail (ناشناس) برای اين نوع E-mail ها استفاده مي‌کنيم ولي بايد توجه کنيد که در مواردی خاص مي‌شود شما را رديابي کرد. به عنوان مثال ip شما از مواردی است که همراه با E-mail ارسال مي‌شود. پس در انتخاب SMTP Server بايد دقت کرد (بعضي SMTP Server ها هستند که حتي ip شما را ارسال نمي‌کنند و اين يعني نهايت ناشناسي).

نکته بعدی اين است که بعضي SMTP Server ها يه کم باهوش عمل مي‌کنند به طوری که در نهايت E-mail ارسالي حداقل برای اشخاص حرفه‌ای ماهيتش (fake بودن) قابل تشخيص خواهد بود (يعني مي‌فهمند که اين يک fake mail است نه يه E-mail واقعي). پس اين هم در انتخاب SMTP Server مهم است که بايد از SMTP Server هايي استفاده کنيم که در نهايت حماقت باشند!

بازم يه نکته ديگه، SMTP Server در نهايت روی يک سرور قرار دارد پس در نهايت آدرس آن چيزی مثل mail.far30.com، mx01.hotmail.com و … خواهد بود.
حالا که معيارهای مهم برای انتخاب SMTP Server را شناختيم، حالا وقتش است که عملا يه SMTP Server پيدا کنيم:

۱- يکي از ساده‌ترين راه‌ها استفاده از سايت‌هايي مثل google است که با جستجوی عبارت SMTP Server هزاران سرور پيدا کنيم.
۲- استفاده از SMTP Server سايت دانشگاه‌ها. تجربه برام ثابت کرده که اين روش يکي از بهترين‌هاست.
۳- استفاده از يک سری SMTP Server های مشهور. اين روش هم بد نيست.

حالا روش را عملا نشونتون مي‌دم:
اول بايد يک سرور را مشخص کنيد که از طريق آن مي‌خواهيد fake mail را بفرستيد. همان‌طور که قبلا گفتم اگر مثلا مي‌خواهيد برای يه نفر که mail box او در ياهو است، fake mail بزنيد، سرور را همان سرور در نظر بگيريد يعني از خود yahoo.com برای ارسال استفاده کنيد.
بعد بايد ببينيد که در اين سرور کدام subdomain بايد استفاده کنيد (يعني اينکه SMTP Server سرور آدرسش، mail.yahoo.com است يا mx.yahoo.com است يا چيز ديگر). برای اين کار دو روش را مي‌گم:

۱- از nslookup استفاده کنيم:
با nslookup قبلا آشنا شده‌ايد. اول بايد با whois يک name server پيدا مي‌کرديم و بعد از طريق آن سايت را nslookup مي‌کرديم (اگر فراموش کرده‌ايد، درس ۵ و ۶ را دوباره بخوانيد. مثلا مي‌خواهم SMTP Server مربوط به far30.com را پيدا کنم. اول يک whois مي‌کنم و مي‌بينم که name server سايت، s1.sazin.com و s2.sazin.com است. حالا nslookup مي‌کنم و آن سطر هايي را مي‌خوانم که با نام MX مشخص شده است و ۲ تا آدرس مي‌بينم که عبارتند از far30.com و mail.far30.com پس SMTP Server های سايت far30.com همين دو آدرس است. در نتيجه اگر بخواهم از سايت far30.com برای ارسال fake mail استفاده کنم، از اين آدرس‌ها بايد بهره‌ گيرم.

۲- استفاده از بعضي سايت‌های خاص:
يکي از اين سايت‌ها http://www.mob.net/~ted/tools/mx.php3 است. در اين سايت، نام سايت را مي‌نويسيد و دکمه lookup را کليک مي‌کنيد. مثلا من نوشتم yahoo.com و به نتايج زير رسيدم:
Domain Server: ns.mob.net
yahoo.com mail is handled by 5 mx4.mail.yahoo.com.
yahoo.com mail is handled by 1 mx1.mail.yahoo.com.
yahoo.com mail is handled by 1 mx2.mail.yahoo.com.

Domain Server: ns.cw.net
yahoo.com mail is handled by 5 mx4.mail.yahoo.com.
yahoo.com mail is handled by 1 mx1.mail.yahoo.com.
yahoo.com mail is handled by 1 mx2.mail.yahoo.com.

مشخص است که SMTP Server های سايت yahoo.com عبارتند از: mx1.mail.yahoo.com , mx2.mail.yahoo.com , mx4.mail.yahoo.com
اگرچه اين روش راحت‌تر به نظر مي‌رسد ولي شما را يه انسان مصرفي بار مي‌آورد نه خلاق !

◊ با پورت ۲۵ صحبت کنيم
حالا که SMTP Server دارم مي‌تونم fake mail بزنم.
به عنوان مثال مي‌خواهم به آدرس target@yahoo.com يک fake mail بزنم که شخص فکر کند که Email از آدرس me@hotmal.com آمده است. (دقت کنيد که اين آدرس هر چيزی مي‌تواند باشد. مثلا مي‌توانيد از طرف Bill Gates به يه نفر E-mail بزنيد). و مي‌خواهم Subject آن باشد: arze salam و متن پيغام اين باشد: bah bah sam aleikum
برای اين کار :
۱- چون mail box قرباني در سايت ياهو است، پس من هم بهتر است از SMTP Server خود ياهو استفاده کنم (بهتر است ولي اجباری در آن نيست). SMTP Server های ياهو را در قسمت قبلي به دست آوردم. مثلا از mx1.mail.yahoo.com استفاده مي‌کنم.
۲- بايد از telnet يا nc برای برقراری ارتباط استفاده کنم. الان مي‌خوام از telnet استفاده کنم. پس بايد دستور زير را به‌کار برم (دقت کنيد که از اسم SMTP Serevr استفاده کردم).
telnet mx1.mail.yahoo.com 25
بعد از تايپ دستور، صفحه پاک مي‌شود و جواب مي‌گيرم:
۲۲۰ YSmtp mta499.mail.yahoo.com ESMTP service ready
۳- حالا دستور زير را مي‌نويسم. دقت کنيد که چون از telnet استفاده مي‌کنيد، چيزهايي را که تايپ مي‌کنيد، نمي‌بينيد و اينکه نمي‌تونيد از دکمه BackSpace استفاده کنيد (پس در تايپ‌کردن دقت کنيد!):
HELO yahoo.com
اين دستور يعني من از کجا هستم (يعني شما که مي‌خواهيد ميل بزنيد، کي هستيد). اينجا من گفتم که من از سايت yahoo.com هستم!! معمولا مهم نيست که جلوی عبارت HELO نام چه سايتي را بنويسيد چون اکثرا چک نمي‌شود. و جواب مي‌شنوم:
۲۵۰ mta499.mail.yahoo.com
۴- حالا بايد مشخص کنم که E-mail فرستنده (يعني من) چيست. چون مي‌خواهم E-mail از طرف me@hotmail.com به نظر بيايد، مي‌نويسم:
MAIL FROM:
و جواب مي‌گيرم:
۲۵۰ sender ok
۵- حالا بايد بگم که اين E-mail به چه آدرس ارسال شود که در اين مثال، target@yahoo.com است. بايد بنويسم:
RCPT TO:
و جواب مي‌شنوم:
۲۵۰ recipient ok
۶- حالا بايد بنويسم،
DATA
و Enter بزنم و جواب مي‌شنوم:
۳۵۴ go ahead
اينجا وقت تايپ کردن يک سری چيز‌های اساسي است. اول مي‌نويسم،
From: abbas akbari
اين همان اسمي است که به عنوان Sender يا همان From ديده خواهد شد. من‌ خواستم که به اسم abbas akbari ديده شود. حالا مي‌نويسم:
Subject: arze salam
اين هم در آن E-mail به عنوان subject خواهد بود. حالا موارد زير را مي‌نويسم (که اختياري است):
MIME-Version: 1.0
Content-Type: text/plain;
و بعد دوتا !! Enter زده و متن نامه را مي‌نويسم:
bah bah
sam aleikum
.
دقت کنيد که يک کاراکتر . (نقطه) در سطر آخر نوشتم و بعد Enter زدم. با اين روش به پورت ۲۵ حالي مي‌کنم که متن نامه تمام شده‌است و نامه ارسال شود. متعاقبا پيغامي مي‌گيرم که بيانگر ارسال E-mail است.
۲۵۰ ok dirdel
۷- مي‌نويسم:
QUIT
تا ارتباط قطع شود و از telnet خارج بشم.

اول توصيه مي‌کنم که يک fake mail واسه خودتون بفرستيد تا ماهيت fake mail را درک کنيد.
مسئله بعدی آن است که در قسمتي target@yahoo.com نوشته شده است، شما بايد اين سطر را تغيير داده و E-mail قرباني خودتان در ياهو را بنويسيد!

◊ همان کار با nc
برای انجام اين کار با nc اول همان دستورات بالا را در فايلي مثلا به اسم fake.txt مي‌نويسيم :

HELO yahoo.com
MAIL FROM:
RCPT TO:
DATA
From: abbas akbari
Subject: arze salam
MIME-Version: 1.0
Content-Type: text/plain;

bah bah
sam aleikum
.
QUIT
حالا فايل را ذخيره کرده و از دستور زير استفاده مي‌کنم:
nc -v mx1.mail.yahoo.com 25 < fake.txt
همين!

◊ Fake mail در صندوق پستي به چه شکلي ظاهر مي‌شود؟
اين قسمت رو در مورد mail box های yahoo و hotmail توضيح مي‌دم.

اينکه اين نوع E-mail ها به چه شکلي ظاهر مي‌شود، بستگي به اين دارد که تنظيمات mail box قرباني در چه حالتي تنظيم شده باشد. در حالت معمول فقط تعدادی از header ها نمايش داده مي‌شود. در اين حالت معمولا fake mail مثل يک E-mail معمولي ديده مي‌شود.
From: “abbas akbari”
Subject: arze salam

bah bah
sam aleikum
در mail box ها مي‌توان تنظيمات را طوری انجام داد که تمام header ها نمايش داده شوند.
برای اينکار در yahoo از منويي که بالای صفحه است، منوی Mail را باز کرده و گزينه Options را کليک مي‌کنيم. در صفحه‌ای که مي‌آيد، روی گزينه General Preferences کليک کنيد. در صفحه‌ای که مي‌آيد، از قسمت Message در قسمت Headers گزينه … Show all را انتخاب مي‌کنيم و دکمه Save را از پايين صفحه کليک مي‌کنيم. حالا همان ميل را دوباره باز مي‌کنم و مشاهده مي‌کنم که به شکل زير ظاهر مي‌شود:
From abbas akbari Mon Jan 6 05:56:37 2003
X-Apparently-To: ali1000vali2000@yahoo.com via 216.136.129.53; 06
Jan 2003 05:56:37 -0800 (PST)
Return-Path:
Received: from 217.218.84.27 (HELO yahoo.com) (217.218.84.27) by
mta576.mail.yahoo.com with SMTP; 06 Jan 2003 05:56:37 -0800 (PST)
From: “abbas akbari”
Subject: arze salam
MIME-Version: 1.0
Content-Type: text/plain;
Content-Length: 19

bah bah
sam aleikum

در اين حالت مي‌توانيد ip ارسال کننده را هم ببينيد. (سعي کنيد که هميشه تنظيمات yahoo mailbox تان به اين شکل باشد)
پيام ( ۴ نظر )
.: نوشته شد ۱۷:۲۹ در زمانسينا آزادنيا توسط :.

.: درس ۱۷ :. چهارشنبه، ۲۸ خرداد، ۱۳۸۲

– خلاصه درس: در اين درس ياد مي‌گيريم که با پورت‌ها تعامل داشته باشيم و ياد مي‌گيريم که با پورت‌های ۱۳ و ۸ و ۸۰ به کمک telnet و nc صحبت کنيم.

◊ شروع کار با پورت‌ها
الان به جايی رسيده‌ايم که می‌توانيم بحث پورت‌ها را شروع کنيم. اولين نکته‌ای که بايد بگم اين است که ابزاری که به کمک آن با پورت‌ها صحبت می‌کنيم در همه پورت‌ها يکی است ولی هر پورتی زبان مخصوص خود دارد (درست مثل زبان‌های مختلف در جهان که همشون از طريق زبان و دهان ادا می‌شن ولی هر کدام روش خاصی برای ارتباط برقرار کردن دارند). پس ما برای کار با پورت‌ها بايد زبان هرکدام را ياد بگيريم.
بحث بعدی اين است که وقتی می‌گيم يه پورت بازه بايد توجه کنيد که برنامه‌ای روی آن کامپيوتر نصب شده و اون پورت را باز کرده است (پورت‌ها خود به خود باز نمی‌شوند). يک سری پورت‌ها توسط خود سيستم‌عامل باز می‌شوند (يعنی به محض نصب سيستم‌عامل که خودش هم درواقع يه نرم‌افزاره) و نيازی نيست که برنامه ديگری برايش نصب کنيم. در مقابل، بعضی پورت‌های ديگر توسط برنامه‌های جانبی باز می‌شوند.
به عنوان مثال وقتی می‌گم که پورت ۲۵ روی يک ip باز است، اين معنی را دارد که برنامه‌ای روی اون کامپيوتر خاص وجود دارد که پورت ۲۵ را باز کرده و من وقتی از طريق کامپيوتر خودم با آن پورت کار می‌کنم در واقع دارم با آن برنامه خاص (که اون پورت را باز کرده) صحبت می‌کنم.
حالا يه سوال پيش می‌آد که چرا اصلا يه نرم‌افزار بايد پورت باز کنه و اينکه کدام نرم‌افزارها بايد پورت باز کنند؟
جواب اين است که هر برنامه‌ای که بخواهد از طريق شبکه (يعنی از راه دور اصطلاحا remote) قابل دسترس باشه بايد يه پورت باز کنه. پس يک برنامه‌ای که نيازی به برقراری ارتباط شبکه‌ای ندارد (مثلا يه نرم‌افزار گرافيکی) نبايد و نشايد که پورت باز کند.

بايد ببينيم که از طريق چه برنامه‌ای می‌توان با پورت‌ها صحبت کرد ( البته با هرکدام به روش خودشان )؟
برای اين‌کار از دو نرم‌افزار به نام‌های telnet و nc استفاده می‌کنيم. telnet که در خود سيستم‌عامل وجود دارد و nc را هم که جلسه قبل داون‌لود کرديم.
حالا چگونه از اين دو نرم‌افزارها می‌توان استفاده کنيم؟
۱- استفاده از telnet :
اگر بخواهيم با ip ای به شماره ۱۹۴٫۲۲۵٫۱۸۴٫۱۳ از طريق پورت ۲۵ صحبت کنيم بايد بنويسيم:
telnet 194.225.184.13 25
و بعد اينکه ارتباط برقرار شد بايد شروع کنيم و از طريق زبان پورت ۲۵ با آن صحبت کنيم.
۲- استفاده از nc :
اگر بخواهيم همان کار را با netcat انجام دهيم، بايد بنويسيم:
nc -v 194.225.184.13 25
و بعد از برقراری ارتباط شروع به صحبت کنيم.

◊ با پورت ۱۳ صحبت کنيم
نام ديگر اون daytime است و کارش هم اينه که زمان و تاريخ رو در اون کامپيوتر به ما می‌ده. اين پورت اصولا خيلی سر راسته. فقط کافيه که بهش وصل شيم تا اطلاعاتشون بيرون بريزه. البته اين پورت رو خيلی از کامپيوترها بسته است. (يادتون باشه که وقتی می‌توان با يه پورت کار کرد که باز باشد).
حالا می‌خوايم با پورت ۱۳ از ip شماره ۱۹۴٫۲۲۵٫۱۸۴٫۱۳ صحبت کنم. يکی از اين دو دستور را می‌نويسم:
telnet 194.225.184.13 13nc -v 194.225.184.13 13
البته در آن دستورات به جای عدد ۱۳ می‌توان معادلش را نوشت که daytime است.
و جواب می‌شنوم:
۱۱:۳۵:۳۳ AM 10/5/2002
بله، با اين پورت ارتباط برقرار کرديم و اطلاعاتش رو دريافت کرديم. اين اطلاعات معمولا به درد اين می‌خورد که مکان جغرافيايی اون کامپيوتر را حدس بزنيم (البته اگر زمان اون کامپيوتر صحيح باشد). به عنوان مثال اين کامپيوتر خاص در ايران است چون ساعتش همزمان با ايران است.

◊ با پورت ۷ صحبت کنيم
اسم اين پورت echo است. من اين پورت رو پورت ميمون می‌گم چون هرچی که شما براش بنويسيد را تقليد می‌کنه و همان‌ها را براتون پس می‌فرستد. مثلا من به پورت ۷ کامپيوتری با ip شماره ۱۹۴٫۲۲۵٫۱۸۴٫۱۳ تلنت يا nc می‌کنم.
telnet 194.225.184.13 7nc -v 194.225.184.13 7
بعد از برقراری ارتباط، هر چی من بنويسم، اون برام پس می‌فرسته. مثلا اگه تايپ کنم Ali1000 و Enter بزنيم، جواب می‌شنوم، Ali1000 … خودتون امتحان کنيد تا ببينيد. برای تمام شدن کار بايد دکمه Ctrl+C را فشار دهيم تا اين ميمون بازی تموم بشه.
پس کار کردن با اين پورت هم زياد سخت نيست.

◊ با پورت ۸۰ صحبت کنيم
پورت ۸۰ يکی از مهم‌ترين پورت‌هاست. دنيای وب (صفحات اينترنتی) بر اساس همين پورت کار می‌کنه. توضيح اينکه وقتی به يه سايت وصل می‌شيم و صفحه وب را درخواست می‌کنيم، در واقع مرورگر اينترنتی به پورت ۸۰ اون کامپيوتر وصل می‌شه و اطلاعات رو می‌گيره (البته بعد از گرفتن اطلاعات اون رو تفسير می‌کنه و به صورت يه صفحه نشون می‌ده – دقت کنيد که اطلاعات در واقع به صورت يک سری تگ HTML است ). حالا ما می‌خواهيم با پورت ۸۰ يک کامپيوتر صحبت کنيم ولی به کمک telnet و nc.
اول بايد يه connection (اتصال) با پورت ۸۰ برقرار کنيم (مثلا برای سايت hotmail.com بايد بنويسم):
telnet www.hotmail.com 80nc -v www.hotmail.com 80
پس اول بايد يکی از دستورات بالا را استفاده کنيم. من هميشه توصيه‌ام استفاده از nc بوده و خواهد بود.
حالا بايد شروع به صحبت با پورت ۸۰ کنيم. من فعلا دو تا جمله براتون می‌گم و بقيه‌اش بمونه واسه بعد. دقت کنيد که موقع کار با پورت ۸۰ با تلنت (نه nc) دستوراتی که ما می‌نويسيم، نمايش داده نمی‌شود ولی کار می‌کنه.
۱- اولين جمله اينه: GET / HTTP/1.0 و بعدش دوتا Enter
به فاصله‌ها دقت کنيد. دو طرف / ی که بعد از GET است، فاصله وجود دارد. اين جمله به پورت ۸۰ می‌گه که هرچی در header داره، نشون بده. و جواب می‌شنوم:
HTTP/1.0 302 Moved TemporarilyServer: Microsoft-IIS/5.0Date: Thu, 05 Dec 2002 12:02:51 GMTLocation: http://lc2.law5.hotmail.passport.com/cgi-bin/loginX-Cache: MISS from cache5.neda.net.irConnection: close

۲- دومين جمله اينه: GET / what/ever و بعدش دوتا Enter
به فاصله‌ها دقت کنيد. اين دستور باعث ميشه که هر چی داره، رو کنه.

البته توجه کنيد که ما مسير را مشخص نکرديم. بعدها در مورد اين مسير مشخص کردن صحبت خواهم کرد. اين حالت که بدون مسير است خيلی وقت‌ها کار نمی‌کنه (مثل همين مثال !!)

گاهی پيش می‌آد که يک سری دستورات خاص را هميشه بايد پشت‌ سرهم به يه پورت خاص بفرستيم و بخواهيم در وقت صرفه‌جويی کنيم. مثلا همين جمله GET / HTTP/1.0 و دو Enter پشت سرهم که هميشه استفاده می‌کنيم. در اين موارد می‌توان اين دستورات را در يک فايل تايپ کرد (همراه با Enter ها که بايد موقع نوشتن حتما بزنيد) و بعد مثلا با نام ali.txt ذخيره کنيد و بعد يکی از دستورات زير را بنويسيم:
nc -v www.far30.com 80 < ali.txttype ali.txt | nc -v www.far30.com 80
که همان کارهای بالايی را انجام ميده.
پيام ( ۱ نظر )
.: نوشته شد ۱۷:۲۸ در زمانسينا آزادنيا توسط :.

.: درس ۱۶ :. چهارشنبه، ۲۸ خرداد، ۱۳۸۲

– خلاصه درس: NMapWin نرم‌افزار آشنايی است، در اين درس با نسخه اصلی و خط‌فرمانی آن که nmap نام دارد، آشنا می‌شويم. در قسمت بعدی با نرم‌افزار netcat آشنا می‌شويم و از آن برای Port Scanning استفاده می‌کنيم.