اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

12 دستور tcpdump برای sniff یا مانیتورینگ شبکه در linux

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    12 دستور tcpdump برای sniff یا مانیتورینگ شبکه در linux

    در این پست ما قصد داریم نحوه نصب ابزار tcpdump در لینوکس (ابزاری برای sniff پکت های شبکه) را آموزش بدیم و درباره دستورات مفید با مثال های عملی آنها بحث کنیم. tcpdump یکی از sniff کننده های packet و همچنین ابزاری برای آنالیز کردن پکت ها میباشد که بسیار قدرتمند و شناخته شده هست و کامند لاین میباشد که برای capture کردن یا filter کردن packet های TCP/IP که دریافت میشوند یا از طریق یک شبکه موجود روی یک interface خاص منتقل میشوند.

    این دستور در اکثر سیستم عامل های لینوکس موجود است همچنین این امکان را به ما میدهد تا پکت های captured شده را در یک فایل ذخیره کنیم و برای آنالیز در آینده استفاده نماییم. این نرم افزار فایل شامل packet ها را با فرمت pcap ذخیره میکند که میتواند توسط دستور tcpdump و یا یک ابزار opensource دیگر به نام wireshark Network Protocol Analyzier که تحت gui بوده به نمایش درآید.

    دستور tcpdump در لینوکس




    طریق نصب tcpdump در لینوکس :

    تعداد زیادی از توزیع های لینوکسی به صورت پیش فرض این ابزار روی آنها نصب هست در مواردی که شما آنرا روی سیستم خود ندارید میتوانید از طریق دستور yum انرا نصب کنید.
    کد PHP:
    # yum install tcpdump 
    به محض اینکه tcpdump روی سیستم تان نصب شد شما قادر به اجرای دستورات زیر خواهید بود:


    1 - capture کردن packet ها از یک interface خاص

    دستور screen به shell اسکرول میدهد تا زمانی که متوقف نشود و در آن هنگام ما دستور tcpdump را اجرا میکنیم که از همه اینترفیس ها کپچر خواهد کرد. به هر حال با گزینه i- میتوانید capture فقط interface دلخواه خود داشته باشید.
    کد PHP:
    # tcpdump -i eth0

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    11
    :33:31.976358 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 3500440357:3500440553ack 3652628334win 18760length 196
    11
    :33:31.976603 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 196win 64487length 0
    11
    :33:31.977243 ARPRequest who-has tecmint.com tell 172.16.25.126length 28
    11
    :33:31.977359 ARPReply tecmint.com is-at 00:14:5e:67:26:1d (oui Unknown), length 46
    11
    :33:31.977367 IP 172.16.25.126.54807 tecmint.com4240PTR125.25.16.172.in-addr.arpa. (44)
    11:33:31.977599 IP tecmint.com 172.16.25.126.548074240 NXDomain 0/1/(121)
    11:33:31.977742 IP 172.16.25.126.44519 tecmint.com40988PTR126.25.16.172.in-addr.arpa. (44)
    11:33:32.028747 IP 172.16.20.33.netbios-ns 172.16.31.255.netbios-nsNBT UDP PACKET(137): QUERYREQUESTBROADCAST
    11
    :33:32.112045 IP 172.16.21.153.netbios-ns 172.16.31.255.netbios-nsNBT UDP PACKET(137): QUERYREQUESTBROADCAST
    11
    :33:32.115606 IP 172.16.21.144.netbios-ns 172.16.31.255.netbios-nsNBT UDP PACKET(137): QUERYREQUESTBROADCAST
    11
    :33:32.156576 ARPRequest who-has 172.16.16.37 tell old-oraclehp1.midcorp.mid-day.comlength 46
    11
    :33:32.348738 IP tecmint.com 172.16.25.126.4451940988 NXDomain 0/1/(121


    2 - capture کردن تنها N تعداد از packet ها

    زمانی که شما دستور tcpdump را اجرا میکنید این دستور تمامی پکت ها برای اینترفیس مورد نظر را کپچر میکند تا زمانی که شما دکمه cancel را فشار دهید اما با استفاده از دستور c- شما میتوانید تنها تعداد خاصی از packet ها را capture کنید. مثال زیر تنها 6 پکت را capture خواهد کرد:
    کد PHP:
    # tcpdump -c 5 -i eth0

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    11
    :40:20.281355 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 3500447285:3500447481ack 3652629474win 18760length 196
    11
    :40:20.281586 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 196win 65235length 0
    11
    :40:20.282244 ARPRequest who-has tecmint.com tell 172.16.25.126length 28
    11
    :40:20.282360 ARPReply tecmint.com is-at 00:14:5e:67:26:1d (oui Unknown), length 46
    11
    :40:20.282369 IP 172.16.25.126.53216 tecmint.com.domain49504PTR125.25.16.172.in-addr.arpa. (44)
    11:40:20.332494 IP tecmint.com.netbios-ssn 172.16.26.17.nimauxFlags [P.], seq 3058424861:3058424914ack 693912021win 64190length 53 NBT Session PacketSession Message
    6 packets captured
    23 packets received by filter
    0 packets dropped by kernel 


    3 - print پکت های capture شده در ASCII

    دستور tcpdump به همراه آپشن A- پکیچ ها را به فرمت ascii نمایش میدهد. مثال زیر یک فرمت character- encoding میباشد:
    کد PHP:
    # tcpdump -A -i eth0

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    09
    :31:31.347508 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 3329372346:3329372542ack 4193416789win 17688length 196
    M
    .r0...vUP.E.X.......~.%..>N..oFk.........KQ..)Eq.d.,....r^l......m\.oyE....-....g~m..Xy.6..1.....c.O.@...o_..J....i.*.....2f.mQH...Q.c...6....9.v.gb........;..4.).UiCY]..9..x.)..Z.XF....'|..E......M..u.5.......ul
    09:31:31.347760 IP 192.168.0.1.nokia-ann-ch1 > 192.168.0.2.ssh: Flags [.], ack 196, win 64351, length 0
    M....vU.r1~P.._..........
    ^C09:31:31.349560 IP 192.168.0.2.46393 > b.resolvers.Level3.net.domain: 11148+ PTR? 1.0.168.192.in-addr.arpa. (42)
    E..F..@.@............9.5.2.f+............1.0.168.192.in-addr.arpa.....

    3 packets captured
    11 packets received by filter
    0 packets dropped by kernel 


    4 - نمایش interface ها موجود

    برای لیست interface های موجود روی یک سیستم دستور زیر را به همراه آپشن D- اجرا میکنیم:
    کد PHP:
    # tcpdump -D

     
    1.eth0
    2.eth1
    3.usbmon1 
    (USB bus number 1)
    4.usbmon2 (USB bus number 2)
    5.usbmon3 (USB bus number 3)
    6.usbmon4 (USB bus number 4)
    7.usbmon5 (USB bus number 5)
    8.any (Pseudo-device that captures on all interfaces)
    9.lo 


    5 - نمایش پکت های capture شده به فرمت HEX و ASCII

    دستور زیر با آپشن XX- اطلاعات هر پکت را capture میکند که شامل link level heder به فرمت HEX و ASCII میباشد:
    کد PHP:
    # tcpdump -XX -i eth0

    11:51:18.974360 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 3509235537:3509235733ack 3652638190win 18760length 196
            0x0000
    :  b8ac 6f2e 57b3 0001 6c99 1468 0800 4510  ..o.W...l..h..E.
            
    0x0010:  00ec 8783 4000 4006 275d ac10 197e ac10  ....@.@.']...~..
            0x0020:  197d 0016 1129 d12a af51 d9b6 d5ee 5018  .}...).*.Q....P.
            0x0030:  4948 8bfa 0000 0e12 ea4d 22d1 67c0 f123  IH.......M".g..#
            0x0040:  9013 8f68 aa70 29f3 2efc c512 5660 4fe8  ...h.p).....V`O.
            0x0050:  590a d631 f939 dd06 e36a 69ed cac2 95b6  Y..1.9...ji.....
            0x0060:  f8ba b42a 344b 8e56 a5c4 b3a2 ed82 c3a1  ...*4K.V........
            0x0070:  80c8 7980 11ac 9bd7 5b01 18d5 8180 4536  ..y.....[.....E6
            0x0080:  30fd 4f6d 4190 f66f 2e24 e877 ed23 8eb0  0.OmA..o.$.w.#..
            0x0090:  5a1d f3ec 4be4 e0fb 8553 7c85 17d9 866f  Z...K....S|....o
            0x00a0:  c279 0d9c 8f9d 445b 7b01 81eb 1b63 7f12  .y....D[{....c..
            0x00b0:  71b3 1357 52c7 cf00 95c6 c9f6 63b1 ca51  q..WR.......c..Q
            0x00c0:  0ac6 456e 0620 38e6 10cb 6139 fb2a a756  ..En..8...a9.*.V
            0x00d0:  37d6 c5f3 f5f3 d8e8 3316 d14f d7ab fd93  7.......3..O....
            0x00e0:  1137 61c1 6a5c b4d1 ddda 380a f782 d983  .7a.j\....8.....
            0x00f0:  62ff a5a9 bb39 4f80 668a                 b....9O.f.
    11:51:18.974759 IP 172.16.25.126.60952 > mddc-01.midcorp.mid-day.com.domain: 14620+ PTR? 125.25.16.172.in-addr.arpa. (44)
            0x0000:  0014 5e67 261d 0001 6c99 1468 0800 4500  ..^g&...l..h..E.
            0x0010:  0048 5a83 4000 4011 5e25 ac10 197e ac10  .HZ.@.@.^%...~..
            0x0020:  105e ee18 0035 0034 8242 391c 0100 0001  .^...5.4.B9.....
            0x0030:  0000 0000 0000 0331 3235 0232 3502 3136  .......125.25.16
            0x0040:  0331 3732 0769 6e2d 6164 6472 0461 7270  .172.in-addr.arp
            0x0050:  6100 000c 0001                           a..... 


    6 - capture و ذخیره packet ها در یک فایل

    همانطور که گفتیم tcp گزینه ای برای capture و ذخیره پکت ها درون فایلی با فرمت pcap. دارد. به منظور این کار کامند زیر را با آپشن -W اجرا کنید:
    کد PHP:
    # tcpdump -w 0001.pcap -i eth0

    tcpdumplistening on eth0link-type EN10MB (Ethernet), capture size 65535 bytes
    4 packets captured
    4 packets received by filter
    0 packets dropped by kernel 


    7 - خواندن فایل شامل packet ها capture شده

    برای خواندن و آنالیز packet های capture شده در فایل p0001.pcap دستور زیر را به همراه آپشن -r استفاده کنید:
    کد PHP:
    # tcpdump -r 0001.pcap

    reading from file 0001.pcaplink-type EN10MB (Ethernet)
    09:59:34.839117 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 3353041614:3353041746ack 4193563273win 18760length 132
    09
    :59:34.963022 IP 192.168.0.1.nokia-ann-ch1 192.168.0.2.sshFlags [.], ack 132win 65351length 0
    09
    :59:36.935309 IP 192.168.0.1.netbios-dgm 192.168.0.255.netbios-dgmNBT UDP PACKET(138)
    09:59:37.528731 IP 192.168.0.1.nokia-ann-ch1 192.168.0.2.sshFlags [P.], seq 1:53ack 132win 65351length 5 


    8 - capture کردن pacete های ip adderss

    برای capture پکت های یک interface خاص دستور زیر را به همراه آپشن n- اجرا کنید:
    کد PHP:
    # tcpdump -n -i eth0

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    12
    :07:03.952358 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 3509512873:3509513069ack 3652639034win 18760length 196
    12
    :07:03.952602 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 196win 64171length 0
    12
    :07:03.953311 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 196:504ack 1win 18760length 308
    12
    :07:03.954288 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 504:668ack 1win 18760length 164
    12
    :07:03.954502 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 668win 65535length 0
    12
    :07:03.955298 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 668:944ack 1win 18760length 276
    12
    :07:03.955425 IP 172.16.23.16.netbios-ns 172.16.31.255.netbios-nsNBT UDP PACKET(137): REGISTRATIONREQUESTBROADCAST
    12
    :07:03.956299 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 944:1236ack 1win 18760length 292
    12
    :07:03.956535 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 1236win 64967length 0 


    9 - capture تنها packet های TCP

    برای capture کردن packet ها برا اساس پورت TCP دستور زیر را با آپشن tcp اجرا نمایید:
    کد PHP:
    # tcpdump -i eth0 tcp

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    12
    :10:36.216358 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 3509646029:3509646225ack 3652640142win 18760length 196
    12
    :10:36.216592 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 196win 64687length 0
    12
    :10:36.219069 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 196:504ack 1win 18760length 308
    12
    :10:36.220039 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 504:668ack 1win 18760length 164
    12
    :10:36.220260 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 668win 64215length 0
    12
    :10:36.222045 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 668:944ack 1win 18760length 276
    12
    :10:36.223036 IP 172.16.25.126.ssh 172.16.25.125.apwi-rxspoolerFlags [P.], seq 944:1108ack 1win 18760length 164
    12
    :10:36.223252 IP 172.16.25.125.apwi-rxspooler 172.16.25.126.sshFlags [.], ack 1108win 65535length 0
    ^C12:10:36.223461 IP mid-pay.midcorp.mid-day.com.netbios-ssn 172.16.22.183.recipeFlags [.], seq 283256512:283256513ack 550465221win 65531length 1[|SMB


    10 - capture پکت ها از یک پورت خاص

    فرض کنید شما بخواهید پکت هایی از پورت 22 را capture کنید که برای این منظور باید دستور زیر را با مشخص کردن پورت 22 اجرا نمایید:
    کد PHP:
    # tcpdump -i eth0 port 22

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    10
    :37:49.056927 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 3364204694:3364204890ack 4193655445win 20904length 196
    10
    :37:49.196436 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 4294967244:196ack 1win 20904length 248
    10
    :37:49.196615 IP 192.168.0.1.nokia-ann-ch1 192.168.0.2.sshFlags [.], ack 196win 64491length 0
    10
    :37:49.379298 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 196:616ack 1win 20904length 420
    10
    :37:49.381080 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 616:780ack 1win 20904length 164
    10
    :37:49.381322 IP 192.168.0.1.nokia-ann-ch1 192.168.0.2.sshFlags [.], ack 780win 65535length 0 


    11 - capture پکت های از source ip

    برای capture پکت ها از source ip مثلا کپچر از ip 192.168.0.2 دستور زیر را اجرا نمایید:
    کد PHP:
    # tcpdump -i eth0 src 192.168.0.2

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    10
    :49:15.746474 IP 192.168.0.2.ssh 192.168.0.1.nokia-ann-ch1Flags [P.], seq 3364578842:3364579038ack 4193668445win 20904length 196
    10
    :49:15.748554 IP 192.168.0.2.56200 b.resolvers.Level3.net.domain11289PTR1.0.168.192.in-addr.arpa. (42)
    10:49:15.912165 IP 192.168.0.2.56234 b.resolvers.Level3.net.domain53106PTR2.0.168.192.in-addr.arpa. (42)
    10:49:16.074720 IP 192.168.0.2.33961 b.resolvers.Level3.net.domain38447PTR2.2.2.4.in-addr.arpa. (38


    12 - capture پکت ها از destination ip

    برای capture پکت ها از ip مقصد مثلا 50.116.66.139 دستور زیر را اجرا کنید:
    کد PHP:
    # tcpdump -i eth0 dst 50.116.66.139

    tcpdumpverbose output suppressed, use -or -vv for full protocol decode
    listening on eth0
    link-type EN10MB (Ethernet), capture size 65535 bytes
    10
    :55:01.798591 IP 192.168.0.2.59896 50.116.66.139.httpFlags [.], ack 2480401451win 318options [nop,nop,TS val 7955710 ecr 804759402], length 0
    10
    :55:05.527476 IP 192.168.0.2.59894 50.116.66.139.httpFlags [F.], seq 2521556029ack 2164168606win 245options [nop,nop,TS val 7959439 ecr 804759284], length 0
    10
    :55:05.626027 IP 192.168.0.2.59894 50.116.66.139.httpFlags [.], ack 2win 245options [nop,nop,TS val 7959537 ecr 804759787], length 0 
    این مقاله ممکن است به شما کمک کند تا از دستور tcpdump به صورت عمقی استفاده کنید و یا برای مانیتور و آنالیز packet ها در آینده بهره ببرید. آپشن های دیگری به ازای نیاز شما موجود هستند. لطفا اگر این مقاله برای شما مفید هست آنرا به اشتراک بگذارید.


    همچنین توصیه میشود مطالعه کنید :

    دستور netstat برای مدیریت شبکه در لینوکس

    آموزش نصب و راه اندازی wireshark در لینوکس

    دستور nc برای چک کردن پورت های باز ریموت در لینوکس


    موفق و موید باشید
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-02-2021, 04:58 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X