سفارش تبلیغ
صبا ویژن
هرگاه خداوند، بنده ای را گرامی بدارد، او را به دوستیِ خود مشغول می سازد . [.امام علی علیه السلام]
پاییز 1386 - آرشیو مقالات کامپیوتری
  • پست الکترونیک
  • شناسنامه
  •  RSS 
  • پارسی بلاگ
  • پارسی یار
  • - خلاصه درس: بحث whois را ادامه می‌دهیم. با ping و tracert آشنا می‌شویم.

    ◊ ادامه بحث whois

    قبلا در مورد ip whois و dns whois صحبت کردم. بحث dns whois (کسب اطلاعات در مورد یک domain خاص) رو ادامه می‌دم.
    در درس قبلی از سایت SamSpade استفاده کردم. اگر این whois رو تست کرده باشید، می‌دانید که برای یک سری از domain (دامنه) ها، جواب نمی‌دهد. مثال آن سایت‌هایی است که دارای دامنه جغرافیایی مثلا ایران هستند، در مورد دامنه‌های جغرافیایی ایران باید گفت که به ir. ختم می‌شوند ( مثلا: neda.net.ir ). مثال دیگری که در whois سایت SamSpade کار نمی‌کند، تعدادی از دامنه‌های org , .net , .com. هستند که در internic.net ثبت نشده‌اند، بلکه در domainpeople.com ثبت شده‌اند ( مثلا sanjesh.org ). چند سال پیش ثبت domain هایی که در گروه org, net, com بودند، مختص به internic.net بود ولی الان دیگر اینطور نیست.

    کاری که شما باید برای whois کردن باید انجام دهید، توجه به نوع آن domain است که از نوع com است یا ir است یا biz است و ... بعد از آن از یکی از سایت‌های زیر استفاده کنید :

    ۱- internic.net :
    برای edu , org , net , com عالی است. برای museum , int , info , coop , biz , arpa, aero هم‌ می‌تواند استفاده شود.
    صفحه وب مربوطه عبارت‌ است از http://www.internic.net/whois.html
    یا می‌توانید مستقیما در مرورگر بنویسید:
    http://www.internic.net/cgi/whois?type=domain&whois_nic=xxxxxxxx که به‌جای xxxxxxxx مثلا باید بنویسید: far30.com

    ۲- nic.ir :
    برای ir استفاده می‌شود.
    صفحه وب مربوطه عبارت‌ است از /http://whois.nic.ir

    ۳- www.tv :
    برای cc , info , biz , tv عالی است.
    صفحه وب مربوطه عبارت‌ است از /http://www.tv
    یا می‌توانید مستقیما در مرورگر بنویسید:
    http://www.tv/en-def-8e33e8cf5e3c/cgi-bin/whois.cgi?domain=yyyyyy&tld=zzzz که اگر بخواهم مثلا hack.tv را whois کنم به‌جای yyyyy باید بنویسید hack و به جای zzzz باید بنویسید tv

    ۴- domainpeople.com :
    برای name , biz , info , org , net , com عالی است.
    صفحه وب مربوطه عبارت‌ است از /http://whois.domainpeople.com


    همانطور که ملاحظه می‌فرمایید، org , net , com در ۱ و ۴ مشترک است. علت آن است که بعضی‌ها در اولی و بعضی‌ها در چهارمی ثبت می‌شوند ولی برای whois کردن فرقی نمی‌کنه که شما از اولی استفاده کنید یا چهارمی چون همدیگر رو ساپورت می‌کنند.


    ◊ ping چیست ؟


    ping دستوری است که مشخص می‌کند که آیا یک کامپیوتر خاص که ما ip یا domain آن را می‌دانیم، روشن و فعال (Active) هست یا نه. و اینکه اگر فعال باشد مدت زمان رسیدن بسته‌های tcp/ip از آن کامپیوتر به کامپیوتر ما چقدر است.
    کاربرد این دستور به صورت زیر است:

    ping ip-or-domain

    که به جای ip-or-domain باید شماره ip و یا domain آن(اگر داشته باشد) را می‌گذاریم.

    مثلا ping sazin.com را در command prompt تایپ کردم و به نتایج زیر رسیدم :

    Pinging sazin.com [63.148.227.65] with 32 bytes of data:

    Reply from 63.148.227.65: bytes=32 time=1402ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=941ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=981ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=851ms TTL=105

    Ping statistics for 63.148.227.65:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 851ms, Maximum = 1402ms, Average = 1043ms

    این نتایج نشان می‌دهد که sazin.com فعال است.

    حالا به کامپیوتری با ip شماره 63.148.227.65 (که همان sazin.com است)، ping می‌کنم. نتایج همان است فقط با تغییراتی در سطر اول. (البته time که معنای مدت زمان رسیدن پکت را می‌دهد، با توجه به ترافیک شبکه، کم و زیاد خواهد شد). برای ping کردن به این ip ، دستور 63.148.227.65 ping را صادر می‌کنم :

    Pinging 63.148.227.65 with 32 bytes of data:

    Reply from 63.148.227.65: bytes=32 time=861ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=852ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=851ms TTL=105
    Reply from 63.148.227.65: bytes=32 time=881ms TTL=105

    Ping statistics for 63.148.227.65:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 851ms, Maximum = 881ms, Average = 861ms

    فرض کنید که به یک ip که فعال نیست، ping کنیم:

    Pinging 217.66.196.1 with 32 bytes of data:

    Request timed out.
    Request timed out.
    Request timed out.
    Request timed out.

    Ping statistics for 217.66.196.1:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

    که نشان می‌دهد که آن ip در آن لحظه فعال نیست.

    البته تمام مطالبی که در بالا ذکر شد، در حالتی است که مستقیما به اینترنت وصل شده‌اید و یا اگر از طریق شبکه محلی به اینترنت وصل هستید، شبکه شما به درستی پیکربندی شده باشد. اصولا ping یکی از بهترین دستورات برای پیدا کردن ایراد در شبکه است.


    ◊ tracert چیست ؟


    tracert ( در یونیکس می‌شود traceroute ) ابزاری است که نشان می‌دهد که یک packet اطلاعاتی از کامپیوتر شما چه مسیری را طی می‌کند و از چه کامپیوترهایی می‌گذرد تا به یک مقصد خاص برسد. مقصد را ما مشخص می‌کنیم و معمولا همان کامپیوتری است که داریم footprinting می‌کنیم.

    کاربرد این دستور به صورت زیر است:

    tracert ip-or-domain

    مثلا می‌خواهم ببینم که از چه کامپیوترهایی باید رد شویم تا به sazin.com برسیم. برای اینکار می‌توان از یکی از دستورهای زیر استفاده کرد:

    tracert sazin.com
    tracert 63.148.227.65

    به نتیجه زیر رسیدم:

    Tracing route to sazin.com [63.148.227.65]
    over a maximum of 30 hops:

    1 160 ms 160 ms 160 ms 217.218.84.3
    2 381 ms 691 ms 1772 ms 217.218.84.5
    3 * * 2324 ms 217.218.77.1
    4 201 ms 1101 ms 180 ms 217.218.0.252
    5 341 ms 220 ms 180 ms 217.218.0.2
    6 1993 ms 180 ms 181 ms 217.218.158.41
    7 180 ms 160 ms 160 ms 195.146.63.101
    8 2824 ms * * 195.146.32.134
    9 1472 ms 1463 ms 871 ms 195.146.33.73
    10 791 ms 841 ms 811 ms if-1....eglobe.net [207.45.218.161]
    11 1692 ms * 2654 ms if-4-....eglobe.net [207.45.222.77]
    12 1282 ms 891 ms 1052 ms if-1-....globe.net [207.45.220.245]
    13 902 ms 931 ms 881 ms if-15.....globe.net [66.110.8.134]
    14 931 ms 861 ms 871 ms if-8-....leglobe.net [64.86.83.174]
    15 901 ms 841 ms 852 ms if-5-.....globe.net [207.45.223.62]
    16 841 ms 862 ms 851 ms pos6-.....vel3.net [209.0.227.33]
    17 841 ms 842 ms 941 ms so-4-1.....vel3.net [209.247.10.205]
    18 882 ms 931 ms 851 ms so-0-1....vel3.net [209.247.11.197]
    19 871 ms 891 ms 951 ms gige9....vel3.net [209.247.11.210]
    20 1011 ms 851 ms 902 ms unknown.Level3.net [63.208.0.94]
    21 852 ms * 882 ms 64.156.25.74
    22 961 ms 942 ms 841 ms 63.148.227.65

    Trace complete.

    این نتایج نشان می‌دهد که باید از ۲۲ کامپیوتر بگذرم تا به sazin.com برسم. این اطلاعات همان‌طور که بعدا خواهید دید، حاوی اطلاعات زیادی برای پیدا کردن فایروال‌ها و ... است. (بعضی سطرها رو کوتاه کردم و به‌جاش .... گذاشتم)


    tracert دارای تعدادی switch است که دوتاش رو توضیح می‌دم:

    d- ==>
    با استفاده از این سویچ در نتایج حاصله فقط ip ها نمایش داده می‌شود.
    مثلا می‌نویسیم: tracert sazin.com -d

    h max-hops- ==>
    حداکثر تعداد گام‌ها را تعیین می‌کند. حالت پیش‌فرض ۳۰ است.
    مثلا می‌نویسیم: tracert sazin.com -h 50



    از این دستور بعدا بسیار استفاده خواهیم کرد.

    کوچیک ::: سه شنبه 86/7/10::: ساعت 3:0 صبح
    نظرات دیگران: نظر

    خلاصه درس: در این درس یک Port Scanner ساده به اسم acw_spscan به زبان C می‌نویسیم. درک مطالب این درس نیاز به آشنایی با زبان برنامه‌نویسی C دارد.

    ◊ یادآوری

    قبلا گفتم که برای اینکه هکر خوبی بشید، زبان C را باید یاد بگیرید. امروز اولین برنامه اینترنتی خود را به زبان C شروع می‌کنیم.برنامه‌ای که امروز می‌نویسیم، یک پورت اسکنر ساده (Simple Port Scanner) است که acw_spscan.exe نام دارد. acw یعنی Artawill Commandline Windows و spscan یعنی Simple Port Scanner. من سورس این برنامه را با Borland C++ 5.02 کامپایل کردم ولی فکر کنم روی هر نوع کامپایلر C ویندوز کار کند.
    یک سری نکات در مورد هر برنامه‌ای که با C برای ویندوز خواهم نوشت هست که فقط امروز می‌گم و بعدا دیگه اشاره نخواهم کرد.
    ۱- هر برنامه‌ای که من می‌نویسم، شامل دو فایل است که باید داون‌لود کنید: فایل اصلی که پسوند C یا CPP دارد و یک فایل به یکی از نامهای acw_sock.h یا agw_sock.h یا acu_sock.h ویا axu_sock.h که با توجه به نوع سیستم‌عامل (ویندوز یا یونیکس) و نوع ظاهر برنامه (خط‌ فرمان یا گرافیکی) یکی از این چهارتا خواهد بود. اگر برنامه برای ویندوز نوشته شده است، باید قبل از کامپایل نهایی فایل WS2_32.LIB را هم به پروژه اضافه کنید.
    ۲- هر بار که برنامه جدیدی خواهم نوشت فایلی که پسوند h دارد، کامل و کامل‌تر می‌شود، پس هر وقت یک فایل جدید C یا CPP داون‌لود می‌کنید، فایل h مربوطه را هم داون‌لود کنید.
    ۳- کامپایلر مورد استفاده در برنامه‌های ویندوز Borland C++ 5.02 است. اگر از کامپایلر دیگری استفاده می‌کنید، ممکن است لازم باشد که تغییراتی اعمال کنید.
    ۴- سورس تمام توابع و برنامه‌ها مشمول کپی‌ رایت است ولی استفاده از توابع در برنامه‌هایتان در صورت عدم اعمال تغییرات در سورس بلامانع است. - اینههههههه !

    ◊ درباره برنامه Artawill Command-prompt Windows - Simple Prot Scanner = acw_spscan

    برنامه acw_spscan.exe عمل پورت اسکنینگ را به صورت tcp و udp انجام می‌دهد. همانطوری که از نامش پیداست، برای ویندوز و به‌صورت خط فرمان عمل می‌کند.

    داون‌لود فایل‌اجرایی ( acw_spscan.exe )
    داون‌لود فایل برنامه ( acw_spscan.cpp )
    داون‌لود فایل‌ هدر ( acw_sock.h )

    اگر در command prompt تایپ کنید: acw_spscan ،خطوط زیر چاپ می‌شود:

    Artawill Command-line Windows SimplePortScanner (acw_spscan.exe) v1.0
    Programmed by Araz Samadi, ArtaWill.com

    Usage: acw_spscan []

    بنابراین مثلا اگر بخواهم سایت سازین را (که ip آن 63.148.227.65 است) برای پورت‌های ۲۰ تا ۳۰ به صورت tcp اسکن کنم، باید بنویسم:

    acw_spscan 63.148.227.65 20 30 tcp

    و جواب می‌شنوم:

    Artawill Command-line Windows SimplePortScanner (acw_spscan.exe) v1.0
    Programmed by Araz Samadi, ArtaWill.com

    >TCP
    [63.148.227.65] TCP 21 : OPEN
    [63.148.227.65] TCP 25 : OPEN

    Simple Port Scanner End.

    که نشان می‌دهد، پورت‌های ۲۱ و ۲۵ باز است.


    ◊ بررسی سورس برنامه

    من برای راحتی کار برنامه‌نویسی شبکه، یک سری تابع تعریف کرده و آنها را در فایل acw_sock.h قرار داده‌ام که در برنامه اصلی آن را include می‌کنم. حال به بررسی توابع مورد استفاده در برنامه امروز می‌پردازم ( اگر خواهان اطلاعات بیشتری هستید، سورس این توابع را از فایل acw_sock.h بخوانید ):

    ۱- (int arta_win_LoadWinsock(char, char ==>
    در برنامه‌نویسی ویندوز قبل از استفاده از سوکت(socket)، باید WinSock را لود کرد که من این کار را با این تابع انجام می‌دهم. اگر بپرسید سوکت چیست، می‌گویم سوکت ارتباطی است از نوع TCP/IP که از پورت خاصی از یک کامپیوتر به سوی یک پورت خاص از یک کامپیوتر دیگر برای رد و بدل کردن داده‌ها ایجاد می‌شود. کل برنامه‌نویسی شبکه به کمک C با استفاده از سوکت‌هاست.

    if(arta_win_LoadWinsock(2,0)==-1)
    arta_commandline_win_DieWithError("ERR: Cannot load WinSock!");

    دو خط بالا برای لودکردن WinSock ورژن 2.0 به‌کار می‌رود.

    ۲- (void arta_win_CleanWinsock(void ==>
    در آخر برنامه باید WinSockی را که با دستور بالا ایجاد کرده‌ایم، به‌کمک دستور این قسمت ببندیم:

    arta_win_CleanWinsock();


    ۳- (int arta_win_CreateTcpSocket(void ==>
    این تابع یک سوکت از نوع tcp ایجاد می‌کند.

    if((sock=arta_win_CreateTcpSocket())==-1)
    arta_commandline_win_DieWithError("ERR: Cannot Create Socket!");

    دو خط بالا برای ایجاد یک سوکت tcp به‌کار می‌رود.

    ۴- (int arta_win_CreateUdpSocket(void ==>
    این تابع یک سوکت از نوع udp ایجاد می‌کند.

    if((sock=arta_win_CreateUdpSocket())==-1)
    arta_commandline_win_DieWithError("ERR: Cannot Create Socket!");

    دو خط بالا برای ایجاد یک سوکت udp به‌کار می‌رود.

    ۵- (void arta_win_CloseSocket(int ==>
    این تابع، سوکتی را که با یکی از دو دستور بالا ایجاد کرده‌ایم، می‌بندد.

    arta_win_CloseSocket(sock);


    ۶- void arta_win_CreateServerAddressStructure
    (* struct sockaddr_in *, unsigned short, char ) ==>
    این تابع اطلاعات لازم برای برقراری اتصال را مانند IP, Port می‌گیرد و در یک structure مخصوص از نوع sockaddr_in قرار می‌دهد. این structure در توابع بعدی به‌کار می‌رود.

    arta_win_CreateServerAddressStructure(&addr,port,IP);



    ۷- (* int arta_win_EstablishTcpSocketConnection(int, struct sockaddr_in ==>
    این تابع sock (که از تابع‌های ۳ یا ۴ به‌دست آمده) و addr را (که از تابع ۶ حاصل شده) می‌گیرد و یک ارتباط واقعی tcp تشکیل می‌دهد. اگر ارتباط به‌وجود آمد، پورت باز است وگرنه بسته است.

    if(arta_win_EstablishTcpSocketConnection(sock, &addr)==-1){
    ....
    }



    ۸- (* int arta_win_EstablishUdpSocketConnection(int, struct sockaddr_in ==>
    این تابع sock (که از تابع‌های ۳ یا ۴ به‌دست آمده) و addr را (که از تابع ۶ حاصل شده) می‌گیرد و یک ارتباط واقعی udp تشکیل می‌دهد. اگر ارتباط به‌وجود آمد، پورت باز است وگرنه بسته است.

    if(arta_win_EstablishUdpSocketConnection(sock, &addr)==-1){
    ....
    }




    حالا یک توضیح کلی می‌دم:

    اولین سطرهای برنامه را بررسی می‌کنم

    /* An ArtaWill Production - copyright(c) ArtaWill.com */
    /* Programmed by: Araz Samadi - Ali1000 Hacker */
    /* This Source code and its Functions can be used - but no .... */
    /* Funcions source or code can be done ! */

    #include /* for printf(), fprintf() */
    #include /* for exit() */
    #include /* for strings */
    #include "acw_sock.h"

    void main(int argc, char *argv[])
    {
    struct sockaddr_in addr;
    char *IP;
    int sock;
    int port;
    int startport, endport;
    int tcp_udp_both=1;

    arta_commandline_win_StartMessage("SimplePortScanner ......");

    if ((argc != 4) && (argc != 5)) /* Test for correct ...... */
    {
    arta_commandline_win_DieWithError("Usage: acw_spscan []\n");
    exit(1);
    }

    IP = argv[1];
    startport = atoi(argv[2]);
    endport = atoi(argv[3]);
    if(argc==5){
    if(stricmp(argv[4],"udp")==0){tcp_udp_both=2;}
    else if (stricmp(argv[4],"both")==0){tcp_udp_both=3;}
    }

    if(arta_win_LoadWinsock(2,0)==-1)
    arta_commandline_win_DieWithError("ERR: Cannot load WinSock!");

    اوایل برنامه یه‌سری توضیحات
    بعدش یک سری هدر (header) را include کرده‌ام از جمله acw_sock.h را
    بعدش main شروع می‌شود و یک سری تعریف متغیر داریم که به نوع این متغیر ها دقت کنید.
    بعد از روی ورودی خط‌ فرمان، متغیر‌ها ست می‌شوند.
    دو سطر آخر هم یک WinSock لود می‌کند.

    حالا ادامه:

    if(tcp_udp_both!=2){
    puts(">TCP ");
    for(port=startport;port<=endport;port++){
    printf(" [%s] TCP %5d : Testing... ",IP,port);

    if((sock=arta_win_CreateTcpSocket())==-1)
    arta_commandline_win_DieWithError("ERR: Cannot Crea....");

    arta_win_CreateServerAddressStructure(&addr,port,IP);

    if(arta_win_EstablishTcpSocketConnection(sock, &addr)==-1){
    printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b........");
    }
    else{
    printf("\b\b\b\b\b\b\b\b\b\b\b");
    printf("OPEN \n");
    }
    arta_win_CloseSocket(sock);
    }
    }

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

    حالا ادامه برنامه:

    if(tcp_udp_both!=1){
    puts(">UDP ");
    for(port=startport;port<=endport;port++){
    printf(" [%s] UDP %5d : Testing... ",IP,port);

    if((sock=arta_win_CreateUdpSocket())==-1)
    arta_commandline_win_DieWithError("ERR: Cannot Cre....!");

    arta_win_CreateServerAddressStructure(&addr,port,IP);

    if(arta_win_EstablishUdpSocketConnection(sock, &addr)==-1){
    printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b.....");
    }
    else{
    printf("\b\b\b\b\b\b\b\b\b\b\b");
    printf("OPEN \n");
    }
    arta_win_CloseSocket(sock);
    }
    }

    همان کارها را ولی این‌بار برای udp انجام می‌دهد.

    و حالا آخر برنامه:

    puts(" \n");
    arta_commandline_win_EndMessage("Simple Port Scanner");

    arta_win_CloseSocket(sock);
    arta_win_CleanWinsock();

    exit(0);
    }

    در اینجا پیغام انتهایی چاپ شده و سوکت بسته می‌شود.

    کوچیک ::: دوشنبه 86/7/9::: ساعت 3:0 صبح

    - خلاصه درس: انواع Scanning را مشخص می‌کنیم. بحث Port Scanning را آغاز می‌کنیم و از نرم‌افزار ipEye برای Port Scanning استفاده می‌کنیم.

    ◊ معمول‌ترین Scanning ها کدامند؟

    دو نوع معمول Scanning وجود دارد:

    ۱- IP Scanning :
    فرض کنید که شما یک سری IP مربوط به یک ISP خاص را دارید و می‌خواهید بدانید که در این لحظه کدام‌ها فعال (up) هستند تا فقط آنها را بررسی کنید و نه‌ همه را. این موضوع را بعدا توضیح می‌دم ( این کار معمولا موقعی پیش می‌آید که قرار است کلاینت هک کنید و مهم نیست چه کسی باشد )

    ۲- Port Scanning :
    در این حالت ما IP یا IPهای مورد نظر را انتخاب کرده‌ایم و حالا می‌خواهیم بدانیم که کدام پورت‌ها روی آن کامپیوترها باز است. این کار به کمک نرم‌افزارهای خاصی انجام می‌شود که مبحث امروز ماست.

    ◊ چگونه یک ارتباط TCP برقرار می‌شود که بگوییم فلان پورت باز است یا نه؟

    برای اینکه تعیین کنیم که یک پورت روی یک سرور باز است یا نه، معمولا باید یک TCP connect scan انجام دهیم. اول این را بگم که Port Scanning انواع مختلف دارد که فعلا ما نوع TCP connect را مدنظر داریم. این نوع اسکن سه مرحله دارد که به آن TCP"s 3-way handshakeمی‌گویند:
    ۱- اول کامپیوتر ما به سمت سرور یک SYN packet می‌فرستد که به معنی درخواست اتصال است.
    ۲- اگر سرور این درخواست را قبول کند، در مرحله دوم سرور به سمت ما یک SYN/ACK packet می‌فرستد.
    ۳- در مرحله آخر کامپیوتر ما یک ACK packet به سمت سرور می‌فرستد.

    نوع دیگری از پورت اسکن TCP SYN scan نام دارد. با توجه به اینکه معمولا اگر پورت اسکن به روش بالا (TCP connect scan) انجام دهیم، معمولا در سرور این اتصال ذخیره خواهد شد و بعدا می‌تواند ما را ردیابی کنند، به جای آن می‌توان از TCP SYN scan استفاده کرد. در این نوع اسکن، مراحل ۱ و ۲ از بالا انجام می‌شود ولی مرحله ۳ نه! اگر در مرحله ۲ به ما یک SYN/ACK برسد، آن پورت باز است و اگر یک RST/ACK برسد، یعنی بسته است.

    انواع دیگری از پورت اسکنینگ هم وجود دارد مثل UDP scan, TCP Window scan, TCP ACK scan, TCP Null, TCP Xmas Tree, TCP FIN Scan

    ◊ چگونه می‌توان عمل Port scanning را انجام داد؟

    در تمام مطالبی که تا این مرحله گفته‌ام سعی کرده‌ام که فقط از ابزارهای موجود در ویندوز استفاده کنم و هیچ ابزار دیگری به‌کار نبرم، اما در مبحث پورت اسکنینگ چون هیچ ابزاری در ویندوز برای این‌ کار نیست، به‌ناچار باید یک سری برنامه را از اینترنت داون‌لود کنید. (توجه داشته باشید که فعلا حرفی از لینوکس نزده‌ام و سعی می‌کنم فعلا هیچ بحثی را در مورد آن مطرح نکنم)

    برای Port Scanning می‌توان از ابزارهای مختلفی استفاده کرد که اکثرا برای لینوکس طراحی شده‌اند، اما مهم‌ترین پورت اسکنرها برای ویندوز عبارتند از:

    ۱- نرم‌افزار NMapWin v1.3.0 :
    نسخه گرافیکی و مخصوص ویندوز برای nmap است (nmap در لینوکس استفاده می‌شود). nmap از کامل‌ترین ابزارهایی است که هکر‌ها استفاده می‌کنند که علاوه بر توانایی انواع پورت اسکنینگ‌ها، می‌تواند کارهای بسیاری چون تشخیص سیستم‌عامل سرور و ... را انجام دهد. این ابزار را بعدا توضیح خواهم داد ولی فعلا برای کار ما بیش‌ از حد کامله ;-)

    ۲- NetScanTools Pro 2000 :
    این هم از بهترین‌هاست ولی چون پولی است به‌ جای داون‌لود باید در CD هایی که در بازار هست پیدایش کنید.

    ۳- WinScan :
    برای اسکن کردن TCP (ونه UDP) می‌توانید از آن استفاده کنید. من زیاد ازش خوشم نیومد.

    ۴- ipEye v1.2 :
    من در این درس از این نرم‌افزار استفاده خواهم کرد، برای داون‌لود آن می‌توانید به سایت www.ntsecurity.nu مراجعه کنید یا مستقیما با کلیک روی این لینک آن را داون‌لود کنید. لازم است بگویم که این نرم‌افزار فقط در ویندوز ۲۰۰۰ و xp کار می‌کند و نیز در یک بار اجرا فقط یک ip را می‌تواند تست کند. ضمنا فقط TCP را تست می‌کند.


    ◊ چگونه از ipEye برای پورت اسکنینگ استفاده کنیم؟

    با تایپ ipEye در command prompt این نتایج ظاهر می‌شود:

    ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
    - http://ntsecurity.nu/toolbox/ipeye/

    Error: Too few parameters.

    Usage:

    ipEye -p [optional parameters]
    ipEye -p
    [optional parameters]

    is one of the following:
    -syn = SYN scan
    -fin = FIN scan
    -null = Null scan
    -xmas = Xmas scan>br>
    (note: FIN, Null and Xmas scans don"t work against Windows systems.

    [optional parameters] are selected from the following:
    -sip = source IP for the scan
    -sp = source port for the scan
    -d = delay between scanned ports in milliseconds
    (default set to 750 ms)


    فرض کنید که می‌خواهیم سایت سازین را از نظر پورت‌ها از پورت ۱ تا ۲۰۰ تست کنیم. اول باید ip آن را به دست بیاوریم که می‌شود، 63.148.227.65 و حالا به کمک دستور زیر آن را بررسی می‌کنیم:

    ipeye 63.148.227.65 -syn -p 1 200

    دقت کنید که 63.148.227.65 عدد ip سازین، syn- یعنی SYN SCAN و p 1 200- یعنی تست از پورت ۱ تا ۲۰۰ باشد. البته پارامترهای دیگری را هم می‌شود ست کرد که فعلا به درد ما نمی‌خورد. با اجرای این دستور به نتایج زیر می‌رسیم:

    ipEye 1.2 - (c) 2000-2001, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)
    - http://ntsecurity.nu/toolbox/ipeye/

    1-20 [drop]
    21 [open]
    22 [closed or reject]
    23-24 [drop]
    25 [open]
    26-52 [drop]
    53 [open]
    54-79 [drop]
    80 [open]
    81-109 [drop]
    110 [open]
    111-142 [drop]
    143 [open]
    144-200 [drop]
    201-65535 [not scanned]

    Closed یعنی کامپیوتر در آن طرف هست ولی به پورت گوش نمی‌دهد، Reject یعنی اینکه یک firewall هست که اجازه اتصال به آن پورت را نمی‌دهد، Drop یعنی اینکه یک firewall همه‌چیز را پس‌ می‌زند و یا اصلا کامپیوتری اونور نیست، Open هم که یعنی باز.
    در مورد سازین می‌بینید که از بین پورت‌های ۱ تا ۲۰۰ ، پورت‌های ۲۱، ۲۵، ۵۳، ۸۰، ۱۱۰، ۱۴۳ باز است و می‌توان به‌ آنها telnet کرد. دقت کنید که تا تمام پورت‌هایی که مشخص شده، تست نشده است، هیچ نتیجه‌ای نشان داده نمی‌شود و یه‌کم صبر می‌خواد.

    کوچیک ::: یکشنبه 86/7/8::: ساعت 3:0 صبح

    - خلاصه درس: nslookup را بررسی می‌کنیم. پورت‌ها را تقسیم‌بندی می‌کنیم و TCP و UDP را مورد بررسی قرار می‌دهیم.

    ◊ چگونگی استفاده از nslookup

    وقتی که DNS Server یک سایت را به‌دست آورده باشیم (از طریق whois )، به کمک دستور nslookup می‌توان اطلاعاتی اضافی در مورد آن سایت پیدا کرد. طریقه استفاده این دستور به صورت زیر است:
    فرض کنید که من می‌خواهم از Domain Server سایت خودم (far30.com) اطلاعاتی به‌دست بیارم. اگر به این سایت whois کنم، می‌بینم که دوتا Name Server یا DNS Server دارد:

    s1.sazin.com
    s2.sazin.com

    حالا دیگر آدرس DNS Server مربوط به far30.com را دارم و می‌توانم شروع کنم:

    ۱- دستور nslookup را در command prompt نوشته و اجرا می‌کنم:

    C:\>nslookup

    و نتایج را می‌بینم:

    *** Can"t find server name for address 192.168.20.3: Non-exi...
    *** Can"t find server name for address 192.168.20.1: Non-exi...
    *** Default servers are not available
    Default Server: UnKnown
    Address: 192.168.20.3

    >

    علامت > یعنی شما می‌توانید دستورات را تایپ کنید.

    ۲- در جلوی علامت < دستور زیر را تایپ می‌کنیم:

    > server dns_server

    که به جای dns_server باید آدرس DNS Server سایت موردنظر را بنویسم. پس برای سایت far30.com می‌شود:

    > server s1.sazin.com

    و جواب می‌شنوم:

    Default Server: s1.sazin.com
    Address: 63.148.227.63

    اگر در این مرحله پیغام خطا می‌گیرید، باید دوباره این دستور را تایپ کنید و نیز می‌توانید از DNS Server دومی که در whois برای far30.com به‌دست آوردیم ، استفاده کنیم.

    ۳- دستور زیر را تایپ کنید:

    > set type=any


    ۴- حالا به کمک دستور زیر اطلاعات را به‌دست می‌آوریم:

    > ls -d site_name .

    که برای far30.com می‌شود:

    >ls -d far30.com.

    دقت کنید که بعد از اسم سایت یک نقطه (dot) گذاشته‌ام، شما هم بهتر است اینطوری بنویسید.
    نتایج زیر حاصل می‌شود:

    [s1.sazin.com]
    far30.com. SOA s1.sazin.com admin.sazin.com.
    (2002070412 3600 600 86400 3600)
    far30.com. A 63.148.227.65
    far30.com. NS s1.sazin.com
    far30.com. NS s2.sazin.com
    far30.com. MX 10 mail.far30.com
    far30.com. MX 15 far30.com
    ftp CNAME far30.com
    mail A 63.148.227.65
    www CNAME far30.com
    far30.com. SOA s1.sazin.com admin.sazin.com.
    (2002070412 3600 600 86400 3600)
    >

    بعدا در مورد کاربرد تک‌تک اینها صحبت خواهم کرد ولی بعضی از آنها همین‌طوری هم اطلاعات واضحی دارند.

    ۵- دستور exit را مقابل < تایپ کرده و از nslookup خارج می‌شویم.

    شما برای تمرین همین کار را در مورد سایت neda.net.ir انجام دهید.


    ◊ تقسیم‌بندی پورت‌ها از روی شماره آنها

    ۱- پورت‌های 0 تا 1023 :
    مشهورترین پورت‌ها هستند و معمولا هرکدام برای یک سرویس خاص استفاده می‌شود. با تعدادی از این پورت‌ها در جلسات قبل آشنا شده‌اید.

    ۲- پورت‌های 1024 تا 49151 :
    این سری از پورت‌ها مشخصا با هیچ‌یک از سرویس‌های اینترنتی مرتبط نیستند بلکه وقتی که با یک ابزار شبکه مانند مرورگر اینترنت(مثل Internet Explore یا Netscape Navigator )، نرم‌افزار ارسال و دریافت E-mail (مثل Outlook یا Edura )، نرم‌افزارهای FTP (مثل WS-FTP یا Cute-FTP ) کار می‌کنید، یکی از این پورت‌ها به صورت random باز شده و یک ارتباط با سرور (با توجه به‌نوع سرویس اینترنتی که می‌دهد که یکی از پورت‌های 0 تا 1023 است) برقرار شده و داده‌ها ارسال و دریافت می‌شوند. یعنی پورت شما یکی از پورت‌های این قسمت است و پورت سرور یکی از پورت‌های بالایی.این سری پورت‌ها را پورت‌های register شده هم می‌گویند.

    ۳- پورت‌های 49152 تا 65535 :
    این سری از پورت‌ها به‌ندرت استفاده می‌شوند. کاربرد اساسی آنها برای یک سری سرویس‌های خاص اینترنتی است و یا توسط trojanها (که برای Hack کردن کامپیوتر است) است. البته خیلی از trojanهای معروف از پورت‌های ردیف ۲ هم استفاده می‌کنند و این تقسیم‌بندی‌ها همیشه برقرار نیست و به‌همین علت است که گاهی پورت‌ها را به دو‌دسته زیر 1024 و بالای 1024 تقسیم‌ می‌کنند.


    ◊ TCP و UDP چیست؟


    مدل TCP/IP که برای ارتباط اینترنتی به‌کار می‌رود، می‌توان به لایه‌های مختلفی تقسیم‌بندی کرد که بعدا بیشتر توضیح می‌دم، اما یکی از این لایه‌ها، لایه ارتباط host2host است که خود شامل دو پروتکل است به نامهای TCP و UDP :

    ۱- (TCP (Transmission Control Protocol :
    این پروتکل قوی‌تر و قابل اعتمادتر است و اصولا پروتکل مهمتری نسبت به UDP محسوب می‌شود. این پروتکل توانایی بازبینی بسته‌هاو کنترل خطا را هم دارد.

    ۲- (UDP (User Datagram Protocol :
    این پروتکل برای کاهش overflow طراحی شده است و در خیلی از موارد وابسته به TCP است.

    نکته مهم این است که وقتی با یک پورت خاص روی یک کامپیوتر دیگر ارتباط برقرار می‌کنیم، این ارتباط می‌تواند از نوع TCP یا UDP باشد. بنابراین وقتی می‌خواهیم یک کامپیوتر خاصی را از نظر پورت‌ها بررسی کنیم، هردو باید بررسی شود.

    کوچیک ::: شنبه 86/7/7::: ساعت 3:0 صبح
    نظرات دیگران: نظر

    - خلاصه درس: در این درس ip ها را تقسیم‌بندی می‌کنیم. ip خودمان را به‌دست می‌آوریم و بحث whois را آغاز می‌کنیم.

    ◊ تقسیم بندی آدرس‌های ip

    آدرس‌های ip به ۵ کلاس تقسیم‌بندی می‌شوند که A تا E نام‌ دارند ولی از این بین سه کلاس اول (یعنی C,B,A) کاربرد عملی دارند که آنها را شرح می‌دهیم:

    ۱- کلاس A: اگر ip را به‌صورت xxx.yyy.yyy.yyy در نظر بگیرید، این کلاس تمام ipهایی را شامل می‌شود که xxx بین ۱ تا ۱۲۶ است. این کلاس ویژه backbone های بزرگ اینترنتی است و در هنگام ثبت domain برای گرفتن ip از آنها استفاده می‌شود. بنابراین اکثر سایت‌ها چنین ipهایی دارند. این کلاس را 8/ هم می‌گویند.

    ۲- کلاس B: این کلاس تمام ipهایی را شامل می‌شود که xxx بین ۱۲۸ و ۱۹۱ است. این کلاس هم از جمله کلاس‌های پرکاربرد است. این کلاس را 16/ هم می‌گویند.

    ۳- کلاس C: این این کلاس تمام ipهای را شامل می‌شود که xxx بین ۱۹۲ و ۲۲۳ است. این کلاس معمولا به ISP هایی که خدمات dial-up ارائه می‌دهند، تعلق می‌گیرد (این جمله چندان مستند نیست.). بنابراین اگر به‌صورت dial-up به اینترنت متصل شوید، چنین ip می‌گیرید. این کلاس را 24/ هم می‌گویند.

    سوالی که پیش می‌آید این است که xxx چرا نه در کلاس A و نه در B، عدد ۱۲۷ را شامل نمی‌شود؟ جواب این‌ است که ۱۲۷ برای کامپیوتر خودمان رزرو شده است. مثلا 127.0.0.1 معمولا یعنی localhost یعنی خودمان.

    ◊ به‌دست آوردن ip خودتان بعد از اتصال به اینترنت

    برای این‌کار راههای متفاوتی وجود دارد:

    ۱- راحت‌ترین راه استفاده از دستور ipconfig است. من با تایپ کردن آن به نتایج زیر رسیدم:

    Windows 2000 IP Configuration

    PPP adapter neda:

    Connection-specific DNS Suffix . :
    IP Address. . . . . . . . . . . . : 217.66.198.116
    Subnet Mask . . . . . . . . . . . : 255.255.255.255
    Default Gateway . . . . . . . . . : 217.66.198.116

    که آدرس ip تان را می‌توانید در سطر Ip Address ببینید. (مسئله پروکسی را فعلا نادیده بگیرید)

    ۲- بعد از اتصال به اینترنت حداقل یک صفحه باز کنید و بعد دستور netstat -n را در command prompt تایپ کنید. من با تایپ این دستور به نتایج زیر رسیدم:

    Active Connections

    Proto Local Address Foreign Address State
    TCP 217.66.198.116:2469 64.58.76.177:80 ESTABLISHED
    TCP 217.66.198.116:2471 66.163.175.130:80 ESTABLISHED
    TCP 217.66.198.116:2473 212.73.194.143:80 ESTABLISHED
    TCP 217.66.198.116:2474 212.73.194.143:80 ESTABLISHED
    TCP 217.66.198.116:2476 212.73.194.136:80 SYN_SENT

    ستونی که زیر عبارت Local Address قرار دارد، ip من در آن اتصال است. بنابراین ip من در آن اتصال 217.66.198.116 بوده است.

    ◊ ادامه مبحث Footprinting برای سرورها

    قبلا بحث را با روش پیدا کردن ip سرورها (سایت‌ها) شروع کردیم. حالا کمی در مورد whois می‌آموزیم. لازم به ذکر است که هنوز درمورد FootPrinting کلاینت‌ها صحبتی نکرده و نمی‌کنم.

    ◊ Whois چیست؟

    تعریف کلی برای whois نمی‌توان ارائه داد ولی فعلا منظور ما از Whois همان کسب اطلاعات در مورد یک سایت است. (قبلا با نوع خاصی از whois برای تبدیل domain به ip آشنا شده‌اید).
    کاری که امروز می‌خواهم انجام دهم کسب اطلاعات در مورد یک شماره ip و یا یک domain (مثلا irib.com ) خاص است. برای کسب این اطلاعات باید به اینترنت وصل شده و به‌طریقی به یک سری سایت‌های خاص که وظیفه ثبت domain , ... را دارند متصل شده و اطلاعات را از آنها درخواست کنم. این سایت‌های خاص database (بانک‌های اطلاعاتی) ویژه این وظایف را دارند. برای کسب این اطلاعات از سایت‌ها روش‌های زیر را می‌توان به‌کار برد:

    ۱- اگر از طریق سیستم عامل یونیکس یا لینوکس به اینترنت وصل شده‌اید، دستوری به اسم whois در آنها وجود دارد. و یا می‌توانید از نرم‌افزارهای خاصی که برای این سیستم‌عامل‌ها وجود دارد (مثل Xwhois ) استفاده کنید. ولی فعلا بحث روی ویندوز است و این دستور در ویندوز وجود ندارد.

    ۲- برای whois کردن در ویندوز نرم‌افزارهای زیادی وجود دارد (که به زودی نوشتن یک whois متوسط را در زبان C یاد خواهم داد.) از مشهورترین این نرم‌افزارها Netscan tools و SamSpade است. ولی از اینها هم فعلا صرف نظر می‌کنم تا شما بیشتر با جزئیات این‌ کار آشنا شوید.

    ۳- روشی که ما در این جلسه به کار می‌بریم، استفاده از سایت‌هایی است که این جستجو را برای ما انجام می‌دهند. بحث را شروع می‌کنم:


    ◊ datebase های whois در چه سایت‌هایی وجود دارد؟

    تعداد زیادی از سایت‌ها این داده‌ها را دارند که مشهورترین‌ها عبارتند از:

    whois.internic.net (The InterNIC)
    whois.onlinenic.com (The OnLineNIC)
    whois.arin.net (American Registry for Internet Numbers)
    whois.ripe.net (European IP Address Allocations)
    whois.apnic.net (European IP Address Allocations)
    whois.nic.mil (US Military)
    whois.nic.gov (US Government)

    اولین سایت مشهورترین سایت ثبت domain برای org , net , com است.
    توجه کنید که امروزه سایت‌های مختلفی عمل ثبت domain را انجام می‌دهند و برای اینکه در مورد یک سایت خاص (که در واقع یک domain خاص دارد) اطلاعاتی کسب کنیم باید اطلاعات مربوطه را از آن سایتی بگیریم که ثبت domain را انجام داده است و چون این کار مشکلی است به جای استفاده از خود سایت‌های بالایی، از سایت‌هایی دیگر استفاده می‌کنیم که این کار را برای ما ساده‌تر می‌کنند (خود آن سایت‌ها در نهایت اطلاعاتشان را از سایت‌های اصلی می‌گیرند و فقط یک نقش واسط دارند... لازم به‌ذکر است که ایجاد چنین صفحات وبی زیاد هم مشکل نیست.). سایت مورد علاقه من برای کسب اطلاعات سایت زیر است:

    http://www.samspade.org/t/whois?a=xxxxxxxxx

    که بجای xxxxxxxxx آدرس سایت و یا ip آنرا می‌نویسیم و آدرس حاصله را در مرورگر خود می‌بینیم. مثلا اگر بخواهم در مورد سایت sazin.com اطلاعاتی به‌دست بیاورم، می‌نویسم:

    http://www.samspade.org/t/whois?a=sazin.com

    و اطلاعات زیر به دست می‌آید:

    sazin.com is registered with BULKREGISTER.COM, INC. - redirecting
    to whois.bulkregister.com

    whois -h whois.bulkregister.com sazin.com
    The data in Bulkregister.com"s WHOIS .........................(deleted)

    SazinNetWork
    2nd.Floor,Bldg#116,Mollasadra Ave.
    Tehran, TEH 14358
    IR

    Domain Name: SAZIN.COM

    Administrative Contact:
    Mohammad Hajati mjhajati@hotmail.com
    Sazin Rasaneh Co.
    4th.Floor,Bldg.339,Mirdamad Ave.
    Tehran, TEH 19696
    IR
    Phone: +98 21 8787064
    Fax: +98 21 8789841
    Technical Contact:
    Mohammad Hajati mjhajati@hotmail.com
    Sazin Rasaneh Co.
    4th.Floor,Bldg.339,Mirdamad Ave.
    Tehran, TEH 19696
    IR
    Phone: +98 21 8787064
    Fax: +98 21 8789841

    Record updated on 2002-03-02 05:47:36
    Record created on 1999-05-10
    Record expires on 2007-05-10
    Database last updated on 2002-09-15 08:58:02 EST

    Domain servers in listed order:

    DNS.SAZIN.COM 80.78.134.221
    S1.SAZIN.COM 63.148.227.63
    S2.SAZIN.COM 63.148.227.64

    ملاحظه می‌کنید که اطلاعات زیادی در مورد این سایت را به این طریق می‌توان به‌دست آورد. اطلاعاتی درمورد آدرس ISP ، شخصی که به‌عنوان Admin کار ثبت را انجام داده است و ... البته باز هم نمی‌توان در مورد صحت و سقم آن اظهارنظر قطعی داشت.
    تعدادی از مهمترین اطلاعات را در قسمت DNS Servers یا Domain servers (که در این مثال در آخر قرار دارد) می‌بینید. بعدا در مورد این آدرس‌ها توضیح خواهم داد ولی فعلا می‌گم که به کمک همین چند آدرسی که در آخر به‌دست آوردیم به کمک دستوری به نام nslookup می‌توان اطلاعات با ارزش‌تری به‌دست آورد که به‌زودی یاد می‌گیرید.

    کوچیک ::: جمعه 86/7/6::: ساعت 3:0 صبح
    نظرات دیگران: نظر

    <      1   2   3   4   5   >>   >
    لیست کل یادداشت های این وبلاگ

    >> بازدیدهای وبلاگ <<
    بازدید امروز: 4
    بازدید دیروز: 18
    کل بازدید :31847

    >>اوقات شرعی <<

    >> درباره خودم <<

    >>لوگوی وبلاگ من<<
    پاییز 1386 - آرشیو مقالات کامپیوتری

    >>آرشیو شده ها<<

    >>جستجو در وبلاگ<<
    جستجو:

    >>اشتراک در خبرنامه<<
     

    >>تبلیغات<<