Apa prosedur penerimaan dan pemrosesan paket Wireshark pada mesin Windows?

20

Saya akan menggunakan Wireshark untuk memonitor lalu lintas di komputer Windows saya . Saat mengerjakannya, saya bertanya-tanya bagaimana Wireshark berhasil menangkap paket jaringan tingkat rendah sebelum Windows melakukannya.

Pertama-tama, antarmuka jaringan di NIC saya menerima paket. NIC kemudian melakukan beberapa pemeriksaan awal (CRC, alamat MAC yang tepat, ... dll.). Dengan asumsi bahwa verifikasi berhasil, NIC meneruskan paket. Tapi bagaimana dan dimana?

Saya mengerti bahwa driver adalah perekat antara NIC dan OS atau aplikasi lainnya. Saya selanjutnya menebak bahwa ada driver terpisah untuk Windows dan Wireshark ( WinPcap ?). Jika tidak, Wireshark tidak akan dapat menerima frame Ethernet . Apakah ada dua atau lebih driver NIC yang ada bersamaan? Bagaimana NIC tahu, mana yang harus digunakan?

Hansi
sumber
Premis Anda salah. NIC selalu menyerahkan paket ke Windows (khususnya, ke driver perangkat dan kemudian tumpukan jaringan), dan terserah Windows untuk memutuskan apa yang harus dilakukan dengannya. Windows memiliki fitur di mana suatu program dapat meminta untuk menerima salinan paket "seperti yang ada di kawat", mungkin menerapkan filter, dan Wireshark menggunakan fitur itu. Wireshark tidak mem - bypass Windows.
zwol
(Ada sistem operasi eksperimental yang berupaya melakukan jaringan berkecepatan sangat tinggi dengan lebih baik dengan memungkinkan paket dikirimkan langsung dari kartu jaringan ke aplikasi, tetapi AFAIK Windows tidak dapat melakukan ini: Anda selalu setidaknya melewati lapisan NDIS.)
zwol

Jawaban:

38

Model I / O di Windows didasarkan pada tumpukan komponen. Data harus mengalir melalui berbagai komponen tumpukan yang ada antara kartu jaringan fisik, dan aplikasi yang akan mengkonsumsi data. Kadang-kadang berbagai komponen memeriksa data (paket TCP misalnya,) ketika mereka mengalir melalui tumpukan, dan berdasarkan isi paket itu, data dapat diubah, atau paket tersebut dapat dibuang seluruhnya.

Tumpukan Jaringan

Ini adalah model yang disederhanakan dari "tumpukan jaringan" yang mengalir paket untuk mendapatkan dari aplikasi ke kabel dan sebaliknya.

Salah satu komponen paling menarik yang ditunjukkan pada tangkapan layar di atas adalah API Callout WFP (Windows Filtering Platform). Jika kami memperbesarnya, mungkin terlihat seperti ini:

Platform Penyaringan Windows

Pengembang bebas memasukkan modul mereka sendiri ke tempat yang sesuai dalam tumpukan ini. Misalnya, produk antivirus biasanya menggunakan "driver filter" yang terhubung ke model ini dan memeriksa lalu lintas jaringan atau menyediakan kemampuan firewall. Layanan Windows Firewall juga jelas cocok untuk model ini juga.

Jika Anda ingin menulis aplikasi yang merekam lalu lintas jaringan, seperti Wireshark, maka cara yang tepat untuk melakukannya adalah dengan menggunakan driver Anda sendiri, dan memasukkannya ke dalam tumpukan serendah mungkin sehingga dapat mendeteksi paket jaringan sebelum modul firewall Anda memiliki kesempatan untuk menjatuhkannya.

Jadi ada banyak "driver" yang terlibat dalam proses ini. Berbagai jenis driver juga. Juga, bentuk input / output lain pada sistem, seperti hard disk drive membaca dan menulis, mengikuti model yang sangat mirip.

Satu catatan lain - info WFP bukan satu-satunya cara untuk menyindir diri Anda ke tumpukan jaringan. WinPCap sebagai contoh, antarmuka dengan NDIS langsung dengan driver, yang berarti memiliki kesempatan untuk mencegat lalu lintas sebelum penyaringan telah terjadi sama sekali.

Driver NDIS

WinPCap

Referensi:

Stack TCP / IP Generasi Selanjutnya di Vista +

Arsitektur Platform Penyaringan Windows

Ryan Ries
sumber
3
Diagram luar biasa. Apakah ini diposting di microsoft.com di suatu tempat? Jika demikian, saya ingin melihat-lihat dan melihat informasi apa yang tersedia di samping ini.
EEAA
1
Jawaban sempurna. Bagus dan mudah dijelaskan, visualisasi yang luar biasa dan sumber yang disediakan! Terima kasih banyak!
Hansi
1
+1, perlu disebutkan bahwa ada driver open source yang dibangun di atas WFP yang membuatnya sepele untuk menulis aplikasi seperti itu yang disebut WinDivert . Saya juga menulis pembungkus .NET untuk itu.
1
Dulu kalau ada sesuatu yang disebut "Layered Service Provider" - di mana Anda bisa mencegat dan menulis ulang paket - apakah ada beberapa penggantian untuk kemampuan itu? Apakah itu bagian dari API "penyaringan"? (Oh, tunggu, sudahlah: Aku baru saja melihat tautan WinDivert dari @TechnikEmpire dan melihat itu mungkin.)
davidbak
1
@davidbak ya, WinDivert adalah sejenis hibrida. API driver callout dimaksudkan bagi pengembang untuk membangun driver khusus yang dapat melakukan apa saja selain menjatuhkan paket (tidak memerlukan driver). WinDivert adalah driver seperti itu tetapi generik, menyediakan akses penuh ke paket-paket dengan mendorong dan membuka paket-paket masuk dan keluar dari ruang mode kernel dan pengguna.
3

Seperti yang dikatakan oleh Ryan Ries:

WinPCap sebagai contoh, antarmuka dengan NDIS langsung dengan driver, yang berarti memiliki kesempatan untuk mencegat lalu lintas sebelum penyaringan telah terjadi sama sekali.

dan ini adalah deskripsi, dalam dokumentasi WinPcap, tentang cara kerjanya .


sumber
Ini akan lebih baik sebagai edit untuk jawaban Ryan. Itu bukan jawaban dalam dirinya sendiri.
Lightness Races dengan Monica
2
Sebenarnya, ya, itu adalah jawaban untuk pertanyaannya - lebih dari jawaban Ryan. Pertanyaannya adalah "bagaimana Wireshark melakukannya"; Jawaban Ryan memberikan banyak informasi tentang mekanisme yang WinPcap (yang adalah apa Wireshark menggunakan) tidak digunakan, sehingga itu pasti menarik, tapi tidak relevan dengan pertanyaan awal. Link saya diposting menjelaskan bagaimana WinPcap melakukannya, yang adalah relevan dengan pertanyaan awal.
7
Mungkin jika Anda mengutip dan menjelaskan bagian-bagian yang relevan dari sumber pihak ketiga. Jika tidak ada yang lain, jawaban hanya tautan bukanlah jawaban. Itu kebijakan SE. Semua jawaban Anda ditambahkan ke halaman ini, secara harfiah, "ada deskripsi tentang bagaimana jawaban Ries bekerja di tempat lain di internet"
Lightness Races with Monica