Mesin saya terus membuat permintaan lalu lintas udp dns. apa yang perlu saya ketahui adalah PID dari proses menghasilkan lalu lintas ini.
Cara normal dalam koneksi TCP adalah menggunakan netstat / lsof dan mendapatkan proses yang terkait di pid.
Apakah UDP koneksi adalah stateles, jadi, ketika saya menelepon netastat / lsof, saya bisa melihatnya hanya jika soket UDP dibuka dan mengirimkan lalu lintas.
Saya telah mencoba dengan lsof -i UDP
dan dengan nestat -anpue
, tetapi saya tidak dapat menemukan proses yang melakukan permintaan itu karena saya perlu memanggil lsof / netstat tepat ketika lalu lintas udp dikirim, jika saya memanggil lsof / netstat sebelum / setelah datagram udp yang dikirim adalah mustahil untuk melihat soket UDP yang terbuka.
Panggil netstat / lsof persis ketika paket 3/4 udp dikirim adalah MUNGKIN.
Bagaimana saya bisa mengidentifikasi proses yang terkenal? Saya telah memeriksa lalu lintas untuk mencoba mengidentifikasi PID yang dikirim dari konten paket, tetapi tidak mungkin untuk mengidentifikasinya dari konteks lalu lintas.
Adakah yang bisa membantu saya?
Saya melakukan root pada mesin ini FEDORA 12 Linux noise.company.lan 2.6.32.16-141.fc12.x86_64 # 1 SMP Rabu 7 Jul 04:49:59 UTC 2010 x86_64 x86_64 x86_64 x86_64 GNU / Linux
Anda dapat menggunakan netstat, tetapi Anda memerlukan flag yang tepat, dan itu hanya berfungsi jika proses yang mengirim data masih hidup. Ia tidak akan menemukan jejak sesuatu yang hidup sebentar, mengirimkan lalu lintas UDP, lalu pergi. Ini juga membutuhkan hak akses root lokal. Yang mengatakan:
Inilah saya memulai ncat pada host lokal saya, mengirimkan lalu lintas UDP ke port 2345 pada mesin (tidak ada) 10.11.12.13:
Berikut ini beberapa output tcpdump yang membuktikan bahwa traffic berjalan:
Inilah bit yang bermanfaat , menggunakan netstat dengan flag -a (untuk melihat detail port) dan flag -p untuk melihat detail ID proses. Ini adalah flag -p yang membutuhkan hak akses root:
Seperti yang dapat Anda lihat, pid 9152 dianggap memiliki koneksi terbuka ke port 2345 pada host jarak jauh yang ditentukan. Netstat juga membantu menjalankannya melalui ps dan memberi tahu saya nama prosesnya
ncat
.Semoga itu berguna.
sumber
grep -w 57550
karena beberapa proses bisa melakukan pencarian DNS ke server yang sama. Metode Anda tidak akan membedakan mereka.Saya memiliki masalah yang persis sama dan sayangnya
auditd
tidak banyak membantu saya.Saya memiliki lalu lintas dari beberapa server saya menuju alamat Google DNS,
8.8.8.8
dan8.8.4.4
. Sekarang, admin jaringan saya memiliki OCD ringan dan dia ingin membersihkan semua lalu lintas yang tidak perlu karena kami memiliki cache DNS intern kami. Dia ingin menonaktifkan port keluar 53 untuk semua orang kecuali server cache itu.Jadi, setelah gagal
auditctl
, saya menggalisystemtap
. Saya datang dengan skrip berikut:Kemudian jalankan:
Ini adalah output yang saya dapatkan:
Itu dia! Setelah mengubah
resolv.conf
PID tersebut tidak mengambil perubahan.Semoga ini membantu :)
sumber
Inilah opsi systemtap, menggunakan probe netfilter yang tersedia di stap verson 1.8 dan yang lebih baru. Lihat juga
man probe::netfilter.ip.local_out
.sumber
Saya akan menggunakan net-sniffer seperti tcpdump atau wireshark untuk melihat permintaan DNS. Isi kueri dapat memberikan gambaran tentang program apa yang mengeluarkannya.
sumber
Perlu diketahui bahwa saat menggunakan autitctl, nscd misalnya menggunakan parameter yang sedikit berbeda dalam panggilan sistem soket, saat melakukan permintaan DNS:
Jadi untuk memastikan Anda menangkap kueri itu selain dari yang disebutkan di atas, Anda dapat menambahkan filter tambahan, dengan nama yang sama jika Anda mau:
Di sini 2050 adalah bitwise OR dari SOCK_DGRAM (2) dan SOCK_NONBLOCK (2048).
Maka pencarian akan menemukan baik yang filter dengan tombol yang sama,
SOCKET
:Nilai hex untuk konstanta soket yang saya temukan di sini: https://golang.org/pkg/syscall/#pkg-constants
Karena saya tidak punya poin reputasi untuk berkomentar saya menambahkan ini.
sumber