Bagaimana saya menemukan jika ada server DHCP jahat di Jaringan saya?


92

Apa pendekatan terbaik untuk menentukan apakah saya memiliki server DHCP jahat di dalam jaringan saya?

Saya bertanya-tanya bagaimana kebanyakan admin mendekati masalah seperti ini. Saya menemukan Probe DHCP melalui pencarian, dan berpikir untuk mencobanya. Adakah yang punya pengalaman dengan itu? (Saya ingin tahu sebelum meluangkan waktu untuk mengkompilasinya dan menginstal).

Apakah Anda tahu ada alat yang berguna atau praktik terbaik untuk menemukan server DHCP jahat?


2
Alat MS dan sangat mudah digunakan! Pendeteksian DHCP Server Nakal - RogueChecker.zip blogs.technet.com/b/teamdhcp/archive/2009/07/03/…
aa.malta

Saya menemukan referensi resmi untuk nge-link aa.malta Anda di social.technet.microsoft.com/wiki/contents/articles/... tetapi link tidak lagi muncul untuk bekerja sebagai 2016. Ini menunjukkan saya posting blog dari 2009, tapi aku hanya lihat posting untuk 6 Juli dan 29 Juni. Tampaknya tidak ada posting 3 Juli seperti yang ditunjukkan oleh URL tautan yang Anda posting. Sepertinya MS menghapusnya untuk siapa yang tahu alasan apa.
Daniel

Sepertinya tautan langsung ini (yang saya temukan di situs wordpress) berfungsi untuk mengunduh file dari Microsoft Server. Tautan berfungsi mulai Januari 2016. Karena URL-nya adalah Microsoft, saya merasa itu bisa dipercaya, tetapi saya tidak membuat jaminan: blogs.technet.com/cfs-file.ashx/__key/…
Daniel

Jawaban:


54

Salah satu metode sederhana adalah dengan menjalankan sniffer seperti tcpdump / wireshark di komputer dan mengirimkan permintaan DHCP. Jika Anda melihat penawaran lain dari server DHCP Anda yang sebenarnya maka Anda tahu Anda memiliki masalah.


28
Membantu menggunakan filter berikut: "bootp.type == 2" (untuk hanya menampilkan penawaran DHCP, dan melihat apakah ada respons dari sumber yang berbeda / tidak diketahui)
l0c0b0x

4
Gunakan program seperti DHCP-Find ( softpedia.com/get/Network-Tools/Network-IP-Scanner/… ) bersama dengan TCPDump / Wireshark untuk memicu respons DHCP.
bernilai

1
Bisakah Anda menawarkan solusi yang lebih spesifik?
tarabyte

@tarabyte Saya tidak yakin solusi apa yang harus saya tawarkan. Saya pikir pertanyaan ini memiliki cakupan yang cukup bagus dari selusin jawaban bagus lainnya? Opsi goto saya hari ini adalah hanya mengkonfigurasi switch Anda untuk memblokir DHCP seperti yang disarankan Jason Luther. Adakah sesuatu yang spesifik yang perlu dicakup dengan lebih baik?
Zoredache

2
Saya mengharapkan lebih dari urutan perintah yang menggunakan tcpdump, arp, dll dengan parameter eksplisit dan penjelasan dari parameter.
tarabyte

22

Untuk merekap dan menambahkan ke beberapa jawaban lain:

Nonaktifkan sementara server DHCP produksi Anda dan lihat apakah server lain merespons.

Anda bisa mendapatkan alamat IP server dengan menjalankan ipconfig /allpada mesin windows, dan kemudian Anda bisa mendapatkan alamat MAC dengan mencari alamat IP menggunakan arp -a.

Di Mac, jalankan ipconfig getpacket en0(atau en1). Lihat http://www.macosxhints.com/article.php?story=20060124152826491 .

Informasi server DHCP biasanya di / var / log / messages. sudo grep -i dhcp /var/log/messages*

Menonaktifkan server DHCP produksi Anda mungkin bukan pilihan yang baik, tentu saja.

Gunakan alat yang secara khusus mencari server DHCP jahat

Lihat http://en.wikipedia.org/wiki/Rogue_DHCP untuk daftar alat (banyak di antaranya tercantum dalam respons lain).

Konfigurasikan sakelar untuk memblokir penawaran DHCP

Sebagian besar sakelar yang dikelola dapat dikonfigurasikan untuk mencegah server DHCP jahat:


17

dhcpdump , yang mengambil bentuk input tcpdump dan hanya memperlihatkan paket-paket yang berhubungan dengan DHCP. Membantu saya menemukan Windows rootkited, menyamar sebagai DHCP palsu di LAN kami.


15

Pendekatan Wireshark / DHCP explorer / DHCP Probe baik untuk pemeriksaan satu kali atau berkala. Namun, saya akan merekomendasikan melihat dukungan DHCP Mengintai di jaringan Anda. Fitur ini akan memberikan perlindungan konstan dari server DHCP jahat di jaringan, dan didukung oleh banyak vendor perangkat keras.

Berikut fitur yang ditetapkan seperti yang ditunjukkan dalam dokumen Cisco .

• Memvalidasi pesan DHCP yang diterima dari sumber yang tidak dipercaya dan memfilter pesan yang tidak valid.

• Tingkat-membatasi lalu lintas DHCP dari sumber yang terpercaya dan tidak dipercaya.

• Membangun dan memelihara basis data pengikat DHCP yang mengintai, yang berisi informasi tentang host yang tidak dipercaya dengan alamat IP sewaan.

• Menggunakan basis data pengikat DHCP untuk memvalidasi permintaan selanjutnya dari host yang tidak dipercaya.



10

dhcploc.exe adalah cara tercepat dan terindah di sistem Windows. Ini tersedia di Alat Dukungan XP. Alat Pendukung ada pada setiap disk XP OEM / eceran, tetapi mungkin atau mungkin tidak ada pada "disk pemulihan" yang disediakan oleh beberapa OEM. Anda juga dapat mengunduhnya dari MS.

Ini adalah alat commandline sederhana. Anda menjalankan dhcploc {yourIPaddress} dan kemudian tekan tombol 'd' untuk melakukan penemuan palsu. Jika Anda membiarkannya berjalan tanpa menekan tombol apa pun, itu akan menampilkan setiap permintaan DHCP dan menjawabnya dengan mendengar. Tekan 'q' untuk berhenti.


Hanya menggunakan ini dalam kombinasi dengan membunuh port switch individu untuk melacak server nakal licik yang kami hadapi. Barang bagus!
DHayes

1
Anda masih dapat menggunakan DHCPloc.exe di Windows 7: 1. Unduh "Alat Dukungan Windows XP Paket Layanan 2" dari [di sini] [1]. 2. Klik kanan pada executable dan pilih Properties-> Compatibility kemudian nyalakan Mode Kompatibilitas dan atur ke "Windows XP (Paket Layanan 3)". 3. Instal seperti biasa. DHCPLoc.exe berfungsi dengan baik pada instalasi Win7 x64 saya. [1]: microsoft.com/en-us/download/details.aspx?id=18546
parsley72

1
Saya baru saja memperhatikan bahwa Anda dapat mengunduh hanya executable dari lokasi berikut dan berfungsi dengan baik di bawah Win 10 x64: gallery.technet.microsoft.com/DHCPLOC-Utility-34262d82
PeterJ

9

Scapy adalah alat kerajinan paket berbasis python yang bagus untuk tugas-tugas semacam ini. Ada contoh bagaimana melakukan ini di sini .


2
Wow, saya menemukan Scapy sangat kuat setelah mempelajari beberapa hari. Ini melampaui alat jelek seperti dhcpfind.exe dan dhcploc.exe. Scapy 2.2 dapat berjalan di Linux dan Windows - Saya mencoba keduanya. Satu-satunya penghalang adalah Anda HARUS tahu bahasa pemrograman Python sampai batas tertentu untuk memanfaatkan kekuatannya.
Jimm Chen

Tautan yang Anda poskan rusak
Jason S

@JasonS Hai, saya telah memperbarui tautan, tetapi perubahannya sedang menunggu tinjauan sejawat ... Sambil menunggu Anda dapat menemukannya di sini: bitbucket.org/secdev/scapy/wiki/doc/IdentifyingRogueDHCPServers
Huygens

7

Untuk memperluas komentar l0c0b0x tentang penggunaan bootp.type == 2sebagai filter. Filter bootp.type hanya tersedia di Wireshark / tshark. Tidak tersedia di tcpdump yang mana lokasi kontekstual dari komentarnya cenderung membuat saya percaya.

Tshark bekerja dengan sempurna untuk ini.

Kami memiliki jaringan kami dibagi menjadi beberapa domain siaran, masing-masing dengan probe berbasis Linux mereka sendiri dengan titik kehadiran pada domain broadcast "lokal" dan pada subnet administrasi dalam satu atau lain cara. Tshark dikombinasikan dengan ClusterSSH memungkinkan saya untuk dengan mudah mencari lalu lintas DHCP atau (hal lain apa pun) di sudut terlempar lebih jauh dari jaringan.

Ini akan menemukan balasan DHCP menggunakan Linux:

# ifconfig ethX promisc
# tshark -i ethX -n port 68 -R 'bootp.type == 2'

Sangat membantu, saya menghabiskan sedikit waktu untuk mencari tahu mengapa saya mendapatkan tcpdump: syntax error. Bahkan memposting pertanyaan tentang itu, jawaban Anda membebaskan saya, terima kasih! networkengineering.stackexchange.com/questions/39534/…
Elijah Lynn

1
Juga, saya pikir ada sesuatu yang berubah dengan -R <Read filter>. Saya mengerti tshark: -R without -2 is deprecated. For single-pass filtering use -Y.. -Yberfungsi dengan baik.
Elijah Lynn

6

setelah Anda menetapkan bahwa ada server dhcp jahat di jaringan saya menemukan cara tercepat untuk menyelesaikannya adalah ...

Kirim email ke seluruh perusahaan yang mengatakan:

"yang salah satu dari Anda telah menambahkan router nirkabel ke LAN, Anda telah membunuh internet untuk orang lain"

mengharapkan respons yang malu-malu, atau perangkat yang bertentangan menghilang, dengan cepat :)


3

Nonaktifkan server DHCP utama dan (re) konfigurasikan koneksi.

Jika Anda mendapatkan alamat IP, Anda memiliki bajingan.

Jika Anda memiliki Linux, dhcpclient standar memberi tahu Anda alamat IP dari server DHCP (selain itu Anda dapat mengendus lalu lintas untuk melihat dari mana datangnya respons DHCP).


2
Walaupun ini tentu saja akan berhasil, menghentikan produksi DHCP server mungkin bukan pendekatan terbaik jika Anda benar-benar khawatir tentang menyediakan layanan ...
Massimo

2
Tergantung pada jumlah orang yang Anda layani. Anda dapat mengganggu layanan selama beberapa menit dalam banyak kasus dan tidak ada yang akan menyadarinya, terutama di tengah hari ketika sebagian besar orang sudah memiliki sewa mereka.
Vinko Vrsalovic

3

Ada beberapa cara, jika Anda menjalankan jaringan kecil, cara paling sederhana adalah mematikan / menonaktifkan / mencabut server dhcp Anda dan kemudian jalankan ipconfig / renew atau sejenisnya pada klien dan jika Anda memperoleh dan IP Anda memiliki sesuatu yang kasar pada komputer Anda. jaringan.

Cara lain adalah menggunakan Wireshark packet capturer / analyzer untuk melihat lalu lintas jaringan Anda dan menemukan koneksi DHCP, ada lembar kerja lab tentang bagaimana hal ini tersedia dari sini .

Ada juga sejumlah utilitas yang tersedia untuk melakukan yang satu ini adalah DHCP explorer yang lain adalah penyelidikan DHCP yang Anda sebutkan di posting asli Anda.



2

Anda bisa melakukan ping sweep dari jaringan Anda dan kemudian membandingkannya dengan jumlah penyewaan DHCP yang diberikan oleh server DHCP Anda.

Anda perlu memiliki gagasan umum tentang jumlah perangkat statis (mungkin antarmuka router dan printer) yang akan sedikit condong angka ini, tetapi ini harus menjadi cara cepat dan akurat untuk mengidentifikasi mereka di beberapa jaringan.


0

pada debian / ubuntu kita juga memiliki opsi untuk menggunakan dhcpdumpdan / atau tcpdumpdengan bantuan egdhclient

Gunakan dhcpdump:

  • 1.a) berjalan dhcpdump -i eth0dalam satu shell / shell (eth0 atau nama antarmuka Anda)
  • 1.b) mulai dhclientdi shell lain (tidak harus berjalan dengan sukses)
  • 1.c) melihat ke dalam keluaran dhcpdumpuntuk informasi (itu harus menjadi format yang bagus, daftar informatif yang paling detail)

Opsi 2 jika Anda tidak ingin menggunakan dhcpdump:

  • 2.a) dijalankan tcpdump -i eth0 -t -n > /tmp/my_file.txtdalam satu shell / jendela
    (opsional: -t= nonaktifkan timestamp // -n= nonaktifkan resolusi-nama, cukup alamat IP, tidak ada nama server (untuk RHEL / penggunaan centos -nn))
  • 2.b) mulai dhclientdi shell lain (tidak harus berjalan dengan sukses)
  • 2.c) hentikan tcpdump yang sedang berjalan ()
  • 2.d) memeriksa file /tmp/my_file.txt dengan editor favorit Anda dan cari hal-hal seperti: ".53" (port DNS default) / "NX" / "CNAME" / "A?" / "AAAA" -

* sidenote: tcpdump dan dhcpdump mungkin harus diinstal (misalnya:) sudo apt get install tcpdump dhcpdump; dhcpdump tergantung pada tcpdump


0

Saya menyarankan memulai dua terminal, satu untuk pemantauan dan lainnya untuk mengirim permintaan. Terminal1 akan menampilkan respons dari semua server DHCP yang ada termasuk alamat MAC. Contoh ini dijalankan di Ubuntu:

Terminal1 (untuk pemantauan):

sudo tcpdump -nelt udp port 68 | grep -i "boot. * reply"

tcpdump: keluaran verbose ditekan, gunakan -v atau -vv untuk mendengarkan dekode protokol lengkap pada enp2s0, tipe tautan EN10MB (Ethernet), ukuran tangkap 262144 byte 20: a6: 80: f9: 12: 2f> ff: ff: ff: ff: ff: ff: ff: ff, ethertype IPv4 (0x0800), panjang 332: 192.168.1.1.67> 255.255.255.255.68: BOOTP / DHCP, Balas, panjang 290 00: 23: cd: c3: 83: 8a> ff: ff: ff : ff: ff: ff: ff, ethertype IPv4 (0x0800), panjang 590: 192.168.1.253.67> 255.255.255.255.68: BOOTP / DHCP, Balas, panjang 548

Terminal2 (untuk mengirim permintaan):

sudo nmap --script broadcast-dhcp-temukan -e eth0

Mulai Nmap 7.01 ( https://nmap.org ) pada 2019-10-13 21:21 EEST Hasil skrip pra-pemindaian: | broadcast-dhcp-temukan: | Tanggapan 1 dari 1: | IP Ditawarkan: 192.168.1.228 | Jenis Pesan DHCP: DHCPOFFER | Waktu Sewa Alamat IP: 2h00m00s | Pengidentifikasi Server: 192.168.1.1 | Subnet Mask: 255.255.255.0 | Router: 192.168.1.1 | _ Domain Name Server: 8.8.8.8, 8.8.4.4 PERINGATAN: Tidak ada target yang ditentukan, jadi 0 host dipindai. Nmap selesai: 0 alamat IP (0 host up) dipindai dalam 0,94 detik

Terminal pemantauan itu diperlukan hanya untuk melihat semua respons (nmap hanya mampu menunjukkan respons pertama).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.