Paket sniffer jaringan untuk Linux yang menangkap nama aplikasi?

1

Saya mencoba Wireshark. Ini menunjukkan sumber dan alamat IP tujuan, nomor port, dan isi paket, tetapi tidak ada yang tentang aplikasi mana yang menggunakan paket.

Rupanya tcpdump serupa; data jaringan tetapi tidak ada info tentang aplikasi mana.

Wireshark menunjukkan aktivitas yang jauh lebih daripada yang saya harapkan (termasuk IP tujuan di luar jaringan rumah saya) ketika browser, email, dan program terkait internet lainnya yang diketahui ditutup dan komputer lain mati. Tetapi tanpa mengetahui program mana yang mengirim atau menerima, sulit untuk melakukan apa-apa.

Saya menggunakan Ubuntu 11.04.

Saya tidak mencari sniffer jaringan umum; Saya hanya ingin melihat apa yang masuk dan keluar dari mesin yang sama di mana sniffer berjalan.

Apakah ada yang seperti itu di Linux? Bahkan jika itu membutuhkan uang? Atau apakah saya tidak tahu bagaimana atau di mana mencari nama aplikasi di Wireshark?

Mike Rowave
sumber
@Breakthrough, Selamat datang di dunia nyata:-)
nik

Jawaban:

3

Saya pikir sebagian besar sniffer tidak berusaha untuk menentukan apakah mesin yang sedang mereka jalankan adalah titik akhir untuk setiap arus lalu lintas yang mereka lihat (berlawanan dengan, katakanlah, melihat bingkai mesin lain melalui hub) atau port mirror pada sakelar, atau pada saluran nirkabel, atau melihat bingkai bahwa mesin saat ini hanya menjembatani / routing / NAT-gatewaying). Jadi kebanyakan sniffer tidak repot-repot melihat apakah proses atau nama aplikasi dapat ditemukan, karena itu hanya dapat ditemukan jika mesin lokal adalah titik akhir dari lalu lintas.

Ini tidak semudah membuat sniffer melakukannya untuk Anda, tetapi inilah solusinya:
Karena Anda tahu alamat mana yang milik mesin lokal Anda, setelah Anda menemukan nomor port lokal, Anda dapat mencari nama proses menggunakan nomor port yang menggunakan lsofseperti ini:

sudo lsof +c15 -i :$PORT

... di mana "$ PORT" adalah nomor port yang Anda pedulikan.

Spiff
sumber
1
Saya suka sudo lsof -lMnP -i4 +c15- itu bisa diulang untuk mengumpulkan data juga.
nik
3

Saya telah melihat ini beberapa waktu lalu dan tidak menemukan apa pun.
Ada teknik skrip kasar yang bisa Anda lakukan berdasarkan netstat.

Itu bergantung pada detail (seperti yang telah Anda amati) bahwa tidak perlu mengendus semua lalu lintas - yang ingin Anda lihat adalah connection tableid program yang terkait .

netstat -npt

Beginilah cara kerja opsi,

-n - menunjukkan alamat jaringan biasa tanpa menyelesaikan nama (membuat segalanya lebih cepat)
-p - memberikan PID untuk program terkait
-t - membatasi untuk melihat koneksi TCP

Ini berfungsi cukup cepat dan dapat dilingkarkan melalui skrip untuk terus mencatat data (dicolokkan ke cron?).
Anda bisa menyaring data untuk mendapatkan database dari

{nama program, id program, IP 5-tuple, time-window}

Kelemahannya adalah, karena tidak ada entri koneksi UDP (seperti yang dipertahankan TCP), itu akan sangat mengendus untuk aplikasi UDP.

Saya benar-benar ingin tahu apakah ada alat yang ada melakukan ini :-) Ini proyek yang bagus.
Saya pikir saya menulis skrip python pada baris-baris ini di masa lalu.

nik
sumber
Terima kasih, setidaknya ini awal. Saya merasa sangat aneh bahwa ada puluhan Firewall, penebang, dan sniffer pada Windows yang akan menunjukkan dan / atau memblokir koneksi jaringan untuk aplikasi tertentu, tetapi praktis tidak ada di Linux. Rupanya ada beberapa anomali mendasar dalam arsitektur Unix / Linux yang membuatnya sulit untuk mengidentifikasi aplikasi yang terkait dengan setiap koneksi? Saya berharap saya tidak harus kembali ke Windows untuk memiliki pengetahuan dan kontrol yang cukup atas program-program yang menggunakan Internet.
Mike Rowave
@ Mike, Sebenarnya, bukan itu masalahnya; perintah suka netstatdan lsofcukup sejalan dengan filosofi Unix. Sniffing dan Firewalling membutuhkan tindakan intrusif. Mencari tabel koneksi untuk id proses relatif pasif.
nik