Lalu lintas jaringan dump aplikasi tunggal (seperti strace)

11

Saya mencari cara untuk membuang pcap data jaringan yang dihasilkan oleh suatu aplikasi, dengan cara yang sama stracemembuang syscalls, dll. Mis:

net-strace somecommand -args

somecommandakan melakukan sesuatu melalui jaringan, dan net-straceakan menyimpan dump pcap dari semua lalu lintas yang dihasilkan oleh aplikasi itu (+ balasan dan lalu lintas terkait).

Bisakah ini tercapai?

gesti
sumber
Masalahnya adalah aplikasi tidak mengirim paket (kecuali yang menggunakan soket mentah seperti ping) tetapi menggunakan API jaringan yang menyebabkan kernel mengirim paket (dan menerima yang terkait) atas namanya.
Stéphane Chazelas
Ya, tetapi ada aplikasi (mis. Proxychains - proxychains.sourceforge.net ) yang menjalankan semua data aplikasi melalui proxy. Tidak tahu bagaimana mereka melakukannya, tetapi mereka dapat menangkapnya dan mengirimkannya melalui proxy. Mungkin jika ada proxy sederhana (dijalankan secara lokal), yang dapat membuang pcap, proxychains + proxy combo dapat digunakan untuk mendapatkan dump.
gesti
Mereka lebih cenderung membajak API (dengan LD_PRELOAD) daripada paket. Karena itu, seseorang mungkin dapat menyuntikkan beberapa setockopt (SO_MARK) ke dalam aplikasi dan menggunakan netfilter untuk mencatat paket-paket ke ulog.
Stéphane Chazelas
3
Membuat namespace jaringan baru untuk aplikasi dan menangkap semua lalu lintas di sana mungkin ada pendekatan yang dapat diterima untuk beberapa kasus penggunaan juga.
Stéphane Chazelas

Jawaban:

3

Bagaimana dengan menggunakan strace itu sendiri?

strace -f -e trace=network -o output_file -s 10000 somecommand -args
Christian Long
sumber
Baris perintah yang Anda berikan tampaknya hanya menampilkan permintaan DNS. -eOpsi strace seringkali tidak memilih apa yang sebenarnya Anda inginkan.
Robin Green
2

Anda dapat membuang lalu lintas yang dihasilkan aplikasi dengan metode berbeda:

Jika Anda tahu port yang digunakan aplikasi, Anda dapat menjalankan tcpdump atau wireshark dengan aturan penyaringan khusus untuk port ini.

Jika itu bukan opsi, Anda dapat menandai paket aplikasi menggunakan aturan iptables , yang cocok dengan pemilik proses. Anda mungkin perlu membuat akun pengguna baru untuk sepenuhnya mengisolasi proses. Kemudian Anda dapat menangkap lalu lintas yang hanya cocok dengan aturan.

Anda dapat menemukan informasi lebih lengkap tentang topik terkait ini: /ubuntu/11709/how-can-i-capture-network-traffic-of-a-single-process

Anda juga dapat menemukan menarik program ini tracedump seperti yang dinyatakan oleh Topik sebelumnya. http://mutrics.iitis.pl/tracedump

almlys
sumber