سایبریت

فیلترهای wireshark

وایرشارک پیشرفته ترین تحلیلگر پروتکل شبکه در جهان است که به شما امکان می دهد در سطح میکروسکوپی آنچه در شبکه شما اتفاق می افتد را ببینید. امروز ما یاد خواهیم گرفت که چگونه از فیلترهای wireshark استفاده کنیم.

فیلترهای Wireshark

در وایرشارک تعداد زیادی فیلتر وجود دارد و داکیومنت های زیادی در مورد این فیلترها وجود دارد که درک آن آسان نیست. در زیر جالب ترین و پر کاربردترین فیلترها را برای شما جمع آوری کردیم که می توانید به عنوان مرجع فیلترهای wireshark، مورد استفاده قرار دهید.

وایرشارک دارای فیلترهای نمایشی (display filter) و فیلترهای کپچر (capture filter) است. فیلترهای نمایشی در یک فیلد در زیر منو، و فیلترهای کپچر در پنجره اصلی برنامه وارد می شوند. در زیر فیلترها به صورت کلی نوشته شده اند و شما می توانید داده های خود برای مثال شماره port و مک آدرس و غیره را جایگزین کنید.

فیلتر نمایشی - فیلترهای وایرشارک

اپراتورهای wireshark

فیلترها می توانند مقادیر مختلفی داشته باشند، برای مثال می توانند یک string، یک hexadecimal یا یک عدد باشند. برای مثال، برای نشان دادن بسته های TCP حاوی رشته cybrit به فیلتر زیر نیاز دارید:

tcp contains cybrit

از اپراتورها (Operator) برای یافتن مقادیر دقیق استفاده می شود. آنها به شرح زیر هستند:

اپراتورهای وایرشارک - فیلترهای wireshark

همانطور که مشاهده می کنید اگر می خواهیم مقدار فیلتر را برابر با چیزی بدانیم، می توانیم از == یا eq استفاده کنیم. فیلترها با استفاده از اپراتورهای منطقی، می توانند برای ایجاد ساختارهای پیچیده استفاده شوند. اما بنظر از فیلترهای بالا می توان دو بار با اپراتور مقایسه استفاده کرد. برای مثال، در اینجا سعی می کنیم رنج پورت های 8000 تا 8180 را فیلتر کنیم:

tcp.port>=8000 && tcp.port<=8180

سپس مقدار فیلتر (tcp.port) با آخرین مقدار جایگزین می شود و در نتیجه، به جای رفتار مورد انتظار، فقط نتیجه قسمت آخر را می گیریم:

tcp.port<=8180

پس این موضوع را در خاطر داشته باشید.

اپراتورهای منطقی فیلترهای wireshark

اپراتورهای منطقی فیلترهای وایرشارک به شما امکان را می دهند که فیلترهای دقیق را با استفاده از چندین شرط همزمان ایجاد کنید. پیشنهاد می شود در هنگام اجرای فیلتر از براکت استفاده کنید، زیرا در غیر این صورت ممکن است مقداری را که انتظار دارید نگیرید.

اپراتورهای وایرشارک - فیلترهای wireshark

 

مثال های ترکیبی:

نمایش ترافیک HTTP یا DNS

http or dns

نمایش تمام ترافیک به جز ARP ، ICMP و DNS:

!(arp or icmp or dns)

فیلتر اینترفیس

بسته های ارسال شده یا دریافت شده فقط از اینترفیس wlan0 را نمایش بده:

frame.interface_name == "wlan0"

ترافیک پروتکل Link Layer

برای نشان دادن ترافیک ARP:

arp

فریم های پروتکل ARP که از دستگاهی با مک آدرس ‎00:c0:ca:96:cf:cb ارسال شده اند را نشان بده (src=source):

arp.src.hw_mac == 00:c0:ca:96:cf:cb

فریم های پروتکل ARP که از دستگاهی با IP آدرس 192.168.50.90 ارسال شده اند را نشان بده:

arp.src.proto_ipv4 == 192.168.50.90

فریم های پروتکل ARP ارسال شده به دستگاهی با مک آدرس 00:00:00:00:00:00 را نمایش بده (dst=destination). این مک آدرس زمانی استفاده می شود که پروتکل سعی کند مک آدرس مورد نظر را پیدا کند. آدرس رایج دیگری که می تواند شما را گیج کند ff:ff:ff:ff:ff:ff است، این آدرس broadcast است، یعنی پیام هایی با این آدرس برای همه دستگاه ها در شبکه local محلی:

arp.dst.hw_mac == 00:00:00:00:00:00

نمایش فریم های پروتکل ARP ارسال شده به دستگاهی با IP آدرس 192.168.50.1:

arp.dst.proto_ipv4 == 192.168.50.1

نمایش ترافیک اترنت Ethernet:

eth

نمایش فریم ها (به طور کلی همه فریم ها، نه فقط ARP مانند نمونه های قبلی) ارسال شده از دستگاهی که دارای مک آدرس ‎00:c0:ca:96:cf:cb:

eth.src == 00:c0:ca:96:cf:cb

نمایش فریم های ارسال شده به دستگاه با مک آدرس ‎78:cd:8e:a6:73:be:

eth.dst == 78:cd:8e:a6:73:be

ترافیک پروتکل Internet

فیلتر wireshark برای نمایش IP ترافیک. این فیلتر شامل TCP ،UDP و همچنین پروتکل های سطح برنامه DNS ،HTTP است. یعنی تقریباً همه موارد به جز پروتکل های data link layer که از IP آدرس برای انتقال داده استفاده نمی کنند (در شبکه های اترنت محلی local Ethernet از MAC آدرس استفاده می کنند):

IP

دقیق تر به معنای ترافیک IPv4 است، که معمولاً فقط IP (Internet Protocol) نامیده می شود. برای نمایش ترافیک مرتبط با یک IP آدرس خاص (آن را به جای xxxx وارد کنید). درخروجی بسته هایی نشان داده می شوند که در آنها این IP آدرس منبع یا دریافت کننده recipient هستند:

ip.addr == x.x.x.x

نمایش ترافیک مرتبط با این دو IP آدرس. با توجه به منطق زیر، یکی از این آدرس ها منبع خواهد بود و دومین آدرس مقصد.

ip.addr == x.x.x.x && ip.addr == y.y.y.y

نمایش ترافیک مربوطه از host با IP آدرس 138.201.81.199:

ip.dst == 138.201.81.199

لطفا توجه داشته باشید که پروتکل IP با IP آدرس ها کار می کند، اما با پورت ها کار نمی کند. پورت ها بخشی از پروتکل های TCP و UDP هستند. پروتکل IP فقط وظیفه مسیریابی ترافیک بین host را بر عهده دارد.

نمایش ترافیک IPv6 (Internet Protocol version 6):

ipv6

فیلترهای IP آدرس برای IPv6 و IPv4 مشابه هستند.

ترافیک پروتکل Transport

برای نمایش فقط ترافیک TCP:

tcp

نمایش ترافیکی که پورت مبدا یا مقصد آن یک پورت خاص باشد، برای مثال 8080:

tcp.port==8080

نمایش ترافیک از پورت 80:

tcp.srcport == 80

ترافیکی را که به سرویس listening در پورت 80 ارسال می شود را نشان بده:

tcp.dstport == 80

بسته های TCP را با فلگ SYN فعال نشان دهید:

tcp.flags.syn==1

بسته های TCP را با فلگ SYN فعال و ACK غیرفعال نمایش بده:

tcp.flags.syn==1 && tcp.flags.ack==0

به طور مشابه برای فلگ های دیگر

مطالعه کنید
نصب کالی لینوکس در VMware

SYN

tcp.flags.syn==1

ACK

tcp.flags.ack==1

Rst

tcp.flags.reset==1

FIN

tcp.flags.fin==1

CWR

tcp.flags.cwr

ECE

tcp.flags.ecn

URG

tcp.flags.urg==1

PSH

همچنین می توانید از ترکیب فرم tcp.flags == 0x0XX استفاده کنید، برای مثال:

  • FIN برابراست با tcp.flags == 0x001
  • SYN برابراست با tcp.flags == 0x002
  • RST برابراست با tcp.flags == 0x004
  • ACK برابراست با tcp.flags == 0x010
  • ACK و FIN به طور همزمان برابراست با tcp.flags == 0x011
  • ACK و SYN به طور همزمان برابراست با tcp.flags == 0x012
  • ACK و RST به طور همزمان برابراست با tcp.flags == 0x014

برای نمایش بسته های حاوی هر عبارتی، برای مثال، رشته pentest:

tcp contains pentest

جریان TCP در شماره X را دنبال کنید (stream):

tcp.stream eq X

فیلتر براساس شماره جریان (stream number):

tcp.seq == x

نمایش ارسال مجدد (resubmit) بسته ها. به عملکرد ردیابی (track) برنامه و از دست رفتن بسته (packet loss) کمک می کند:

tcp.analysis.retransmission

این فیلتر بسته های دارای مشکل را نشان می دهد (lost segments, resending و غیره). این فیلتر بسته های TCP Keep-Alive را منتقل می کند، اما آنها نشان دهنده مشکلات نیستند.

tcp.analysis.flags

فیلترهای wireshark برای ارزیابی کیفیت اتصال شبکه

موارد زیر در مورد فریم های TCP اعمال می شود.  ویژگی های (داده های حذف شده data omission، موارد تکراری duplicates) براساس آنالیز تعیین می شوند.

فیلتر زیر اطلاعات مربوط به فریم های دارای فلگ ACK را که duplicates هستند، نمایش می دهد. تعداد بسیاری از این فریم ها می توانند نشان دهنده مشکلات ارتباطی باشند:

tcp.analysis.duplicate_ack_num == 1

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

tcp.analysis.ack_lost_segment

برای نمایش فریم هایی که مجدداً ارسال می شوند (retransmission):

tcp.analysis.retransmission

فریم های خروجی که به ترتیب درست دریافت نشده اند:

tcp.analysis.out_of_order

برای دیدن فقط ترافیک UDP:

udp

از فلگها برای UDP استفاده نمی شود. برای این پروتکل، فقط می توانید پورت را مشخص کنید.

نمایش ترافیک از پورت 53:

udp.srcport == 53

نمایش ترافیکی که به سرویس listening در پورت 53 ارسال می شود:

udp.dstport == 53

یک بسته UDP که در آن یک رشته خاص رخ می دهد، برای مثال رشته pentest:

udp contains pentest

برای دیدن فقط ترافیک ICMP:

icmp

برای دیدن فقط ترافیک ICMP v6 (ورژن 6):

icmpv6

نمایش تمام پاسخ های ping:

icmp.type==0

نمایش تمام درخواست های ping:

icmp.type == 8

نمایش تمام مشکلات پورت و host های unavailable/denied

icmp.type == 3

نمایش تمام تلاش هایی که برای ریدایرکت مسیریابی با استفاده از ICMP انجام شده:

icmp.type == 8

برای مثال استفاده از مقدار CODE، فیلتر زیر پورت پیامهای غیرقابل دسترس را نشان می دهد:

icmp.type == 3 && icmp.code == 3

ترافیک پروتکل Application

برای پروتکل های HTTP ،DNS ،SSH ،FTP ،SMTP ،RDP ،SNMP ،RTSP ،GQUIC ،CDP ،LLMNR ،SSDP ما یکسری فیلترهای wireshark داریم که هم نام پروتکل خودشان نامیده می شود، اما با حروف کوچک نوشته می شود.

به عنوان مثال ، برای دیدن ترافیک HTTP:

http

برای دیدن ترافیک پروتکل HTTP / 2:

http2

به یاد داشته باشید هنگام آنالیز پروتکل ها، برنامه از شماره پورت متعلق به آنها استفاده می کند. اگر از پورت غیر استاندارد استفاده شود، برنامه نمی تواند داده های لازم را پیدا کند. برای مثال اگر اتصال به SSH در پورت 1234 برقرار شده باشد، پس فیلتر ssh نمی تواند ترافیک SSH را پیدا کند.

فیلتر زیر فقط داده های ارسال شده توسط متد POST را نشان می دهد:

http.request.method == "POST"

نمایش داده های منتقل شده توسط روش GET:

http.request.method == "GET"

درخواست ها را به یک سایت خاص (host) جستجو کنید:

http.host == ""

درخواست های یک سایت خاص را با نام جستجو کنید:

http.host contains "example.com"

فیلتر برای خروجی درخواستهای HTTP که در آن کوکی ها منتقل می شوند:

http.cookie

درخواست هایی که در آن سرور کوکی ها را در مرورگر کاربر تنظیم کرده است.

http.set_cookie

برای جستجوی هر تصویر منتقل شده:

http.content_type contains "image"

برای جستجوی انواع خاصی از تصاویر:

http.content_type contains "gif"
http.content_type contains "jpeg"
http.content_type contains "png"

برای جستجوی فایلهای یک فرمت خاص:

http.content_type contains "text"
http.content_type contains "xml"
http.content_type contains "html"
http.content_type contains "json"
http.content_type contains "javascript"
http.content_type contains "x-www-form-urlencode"
http.content_type contains "compressed"
http.content_type contains "application"

درخواستهای Wireshark را برای فایلهای خاصی جستجو کنید. برای مثا ، برای جستجوی فایلهای ZIP منتقل شده:

http.request.uri contains "zip"

برای دقت بیشتر به جای http.quest.uri می توانید از فیلترهای http.request.uri.path یا http.request.uri.query استفاده کنید. برای مثال، برای جستجوی درخواست برای دانلود فایلهای JPG:

http.request.uri.path contains "jpg"

همچنین می توانید درخواست هایی را که شامل مقدار هدر خاصی HTTP REFERER (ارجاع دهنده) هستند فیلتر کنید. برای مثال، برای جستجوی مواردی که در آن ارجاع دهنده cybrit.ir است:

http.referer contains "Kalitut.com"

درخواست ها را با هر authorization جستجو کنید. به طور مشابه، با کمک contains می توانید انواع خاصی از authorization را جستجو کنید:

http.authorization

فایلها را در جریان HTTP جستجو کنید:

http.file_data

برای دیدن اینکه کدام داده HTTP تأخیر دارد، از ساختار زیر استفاده کنید:

http.time>1

فیلتر بالا ترافیک دریافت شده را بعد از 1 ثانیه نشان می دهد. برای بررسی مشکلات می توانید وضعیت کدهای HTTP response را آنالیز کنید. برای مثال، فیلتر زیر ترافیکی را نشان می دهد که ارور 404‎ Not Found برای آن دریافت شده است (صفحه یافت نشد):

http.response.code==404

فیلترهای wireshark زیر بسیار جالب است. در مرحله اول، این نشان می دهد که کدام ساختارهای پیچیده را می توان از فیلترهای جداگانه ساخت. در مرحله دوم، به شما اجازه می دهد تا درخواست های HTTP و فعالیت کلی وب را مشاهده کنید و داده های غیر ضروری را حذف کنید. با استفاده از این فیلتر می توانید فعالیت وب را در سطح بالایی مشاهده کنید.

مطالعه کنید
اجرای حمله ARP Spoofing با Ettercap

قوانین داخل پرانتز تصاویر، فایل های Javascript و هر آنچه  صفحه وب در درون خود درخواست می کند را از خروجی حذف می کند. اگر صفحات بررسی شده شامل سایر آبجکت های جاسازی شده هستند، آنها را روشی مشابه حذف کنید:

http.request && !(http.request.uri contains ".ico" or http.request.uri contains ".css" or http.request.uri contains ".js" or http.request.uri contains ".gif" or http.request.uri contains ".jpg")

برای دیدن همه درخواست ها و پاسخ های DNS:

dns

برای دیدن اینکه کدام یک از درخواست های DNS زمان زیادی را صرف کرده اند. فیلتر زیر پاسخهایی که بیش از یک ثانیه بعد از ارسال درخواست آمده اند را نشان می دهد.

dns.time>1

این فیلتر نشان می دهد که کدام درخواست dns به درستی عمل (resolved) می نکند:

dns.flags.rcode != 0

فقط نمایش داده های DNS:

dns.flags.response == 0

فقط نمایش پاسخ های DNS:

dns.flags.response == 1

نمایش درخواست ها (requests) و پاسخ هایی (responses) را که در آنها IP برای google.com جستجو می شود:

dns.qry.name == "google.com"

نمایش درخواست ها و پاسخ های DNS را برای رکورد A (یکی از رکوردهای DNS):

dns.qry.type == 1

نمایش درخواست ها و پاسخ های DNS را برای رکورد AAAA:

dns.qry.type == 28

پاسخ هایی را نشان دهید که در آن 216.58.196.3 برای رکورد A به عنوان IP ارسال می شود:

dns.a == 216.58.196.3

نمایش پاسخهایی که در آن 2a01:4f8:172:1d86::1 برای ورودی AAAA به عنوان IP ارسال می شود:

dns.aaaa == 2a01:4f8:172:1d86::1

نمایش پست های CNAME از apollo.archlinux.org:

dns.cname == "apollo.archlinux.org"

نمایش پاسخ های بیشتر (longer) از 30:

dns.resp.len > 30

نمایش درخواست هایی با طول (length) بیش از 25:

dns.qry.name.len > 25

نمایش پاسخ های سرور DNS که بازگشت (recursion) برای آنها در دسترس (available) است:

dns.flags.recavail == 1

نمایش پاسخهای سرور DNS را که بازگشت برای آنها در دسترس نیست:

dns.flags.recavail == 0

آیا بازگشت مطلوب (desirable) است. اگر سرور DNS درخواستی اطلاعات hostname را نداشته باشد، آیا باید از سایر سرورهای DNS برای این اطلاعات نظر خواهی کند. اگر درخواست 1 باشد، پس بازگشت نیاز است. اگر 0 باشد، پس بازگشت مطلوب نیست.

dns.flags.recdesired == 1

آیا داده های تأیید نشده را بپذیرید (0 به معنای تایید نکردن، 1 به معنی پذیرفتن):

dns.flags.checkdisable == 0

برای دیدن نحوه اختصاص IP آدرس توسط DHCP:

udp.dstport==67
or
bootp.option.dhcp

برای نمایش درخواست های DHCP:

bootp.option.dhcp == 3

برای نشان دادن DHCP Discover:

bootp.option.dhcp == 1

فیلتر SMB. این فیلتر در ستون Info تمام اتصالات، دایرکتوری ها و فایل های باز را در ردیابی (trace) نشان می دهد.

smb2.cmd==3 or smb2.cmd==5

فیلترهای فریم های WiFi

نمایش تمام المنت های هندشیک چهار طرفه (به عنوان مثال فریم های پروتکل EAPOL):

eapol

نمایش فریم های Beacon:

wlan.fc.type_subtype == 0x08

نمایش فریم های پاسخ Probe:

wlan.fc.type_subtype == 0x05

نمایش تمام موارد EAPOL, beacons, Probe Response:

wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol

نمایش فریم های وایرلس برای یک دستگاه با مک آدرس (BSSID) مشخص:

wlan.addr == BSSID

نمایش فریم های EAPOL ،beacons ،Probe Response را برای یک دستگاه مشخص با مک آدرس 28:28:5D:6C:16:24

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==28:28:5D:6C:16:24

نمایش همه PMKID:

eapol && wlan.rsn.ie.pmkid

نمایش PMKID, Beacons, Probe Response:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid))

نمایش PMKID, Beacons, Probe Response برای اکسس پوینتی با مک آدرس 40:3D:EC:C2:72:B8

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) && wlan.addr==40:3D:EC:C2:72:B8

نمایش اولین پیام هندشیک:

wlan_rsna_eapol.keydes.msgnr == 1

نمایش پیام دوم هندشیک (به جای 2 می‌توانید پیام های 3 و 4 را نیز مشاهده کنید):

wlan_rsna_eapol.keydes.msgnr == 2

نمایش فریم های اکسس پوینت با سرعت (Data Rate) 1 مگابایت در ثانیه:

wlan_radio.data_rate == 1

نمایش فریم های اکسس پوینت با سرعت بیش از 10 مگابایت در ثانیه (10Mb/s):

wlan_radio.data_rate> 10

نمایش اکسس پوینت ها در یک فرکانس خاص:

radiotap.channel.freq == 2412

نمایش اکسس پوینت ها با سطح سیگنال مشخص:

wlan_radio.signal_dbm > -50

فیلترهای مرتبط با وجود دستگاه آنتن:

radiotap.present.antenna == 1
or
radiotap.antenna == 1

آنالیز با ابزار وایرشارک یکی از مهمترین مهارت هایی است که در تست نفوذ وایرلس و شبکه مورد استفاده قرار می‌گیرد.

دانلود PDF مقاله
1+

دیدگاه‌ها (0)

  • بخش دیدگاه محیط تعامل میان ما و شما است
  • سوالات، پیشنهادات و انتقادات خود را با ما در میان بگذارید
  • شما در بیان نظر خود آزاد هستید و تمامی کامنت ها منتشر می‌شوند، به جز کامنت های تکراری!

*
*