Apakah mungkin untuk mengetahui apakah dua alamat IP milik server yang sama?

21

Diberikan dua alamat IP publik dan pengetahuan yang keduanya berada di jaringan yang sama / 27, apakah mungkin untuk menentukan dari lokasi yang jauh (yaitu negara yang berbeda) jika mereka milik satu atau dua server?

Michelle
sumber
2
Bisakah Anda menguraikan apa yang ingin Anda capai dan sifat server yang ingin Anda identifikasi?
bobstro
3
Pengaturan waktu ping dapat memberikan petunjuk - misalnya, jika semua IP merespons dalam jumlah waktu acak, tetapi dua di antaranya merespons dengan penundaan yang hampir sama.
10
Apakah Anda diizinkan melakukan DoS satu dan melihat apakah yang lain menjadi tidak responsif juga?
Ben Voigt
1
@ Timing AndréDaniel Ping benar-benar akan gagal jika server berada di lokasi. Rak yang sama bukan server yang sama.
TomTom

Jawaban:

29

Tidak, tidak, dalam kasus umum.


Beberapa tambahan, untuk membuat tamu kami dari SO senang:

  • Tidak ada apa pun dalam protokol TCP / IP dasar (mis. IP / TCP / UDP, ICMP) yang secara khusus dimaksudkan untuk membuat perbedaan yang diminta dalam pertanyaan.
  • Hal yang sama berlaku untuk banyak protokol tingkat yang lebih tinggi, misalnya HTTP.
  • Memang mungkin untuk menggunakan sedikit banyak perbedaan dalam pola jawaban untuk membuat perkiraan tentang sistem. Jika Anda memiliki dua sistem yang sangat berbeda, misalnya Linux dan server Windows, ini mungkin cukup untuk memastikan memiliki dua host.
  • Ini akan menjadi lebih sulit semakin mirip sistem itu. Dua node dalam cluster web HA dengan perangkat keras dan OS yang identik kemungkinan tidak dapat dipisahkan dengan cara ini. Saya menganggap ini kasus umum dalam sebagian besar skenario hari ini.
  • Terakhir: Apakah dua mesin virtual pada kotak fisik yang sama satu atau dua server? Tergantung pada mengapa Anda mencoba untuk membedakan pada awalnya, ini mungkin penting dan sama sekali tidak mungkin untuk mengatakan pada tingkat jaringan.
Sven
sumber
2
Jawaban Sven adalah 100% benar, tetapi dimungkinkan untuk menebak apakah mereka menjalankan Sistem Operasi yang berbeda (melalui nmap atau tes ping yang dijelaskan di sini kellyodonnell.com/content/determining-os-type-ping ). Mereka mungkin masih merupakan vms yang menjalankan satu host.
Andy
1
@Andy: Itu sebabnya saya berkata "dalam kasus umum". Dalam beberapa kasus, Anda dapat menemukan tetapi di sisi lain, dalam beberapa kasus Anda bahkan tidak menyadari bahwa itu bukan satu komputer di belakang satu alamat IP tetapi seratus ...
Sven
3
@Ven: Pertanyaannya adalah apakah dua IP berkorelasi dengan satu komputer, bukan apakah layanan pada IP umum berkorelasi dengan beberapa mesin. Saya setuju bahwa tidak ada metode universal dijamin untuk bekerja setiap saat, tetapi jika seseorang dapat menemukan cukup banyak kesamaan antara respons yang diterima, mungkin dimungkinkan untuk membuat perkiraan yang masuk akal. Michelle perlu menguraikan dengan tepat apa yang harus dicapai untuk menentukan apakah ada solusi yang berguna. Apakah masalah apakah itu konfigurasi yang seimbang atau beban, misalnya?
bobstro
1
Ambigu ketika Anda memasukkan virtualisasi. Misalkan Anda memiliki dua VM, Guest A dan Guest B, masing-masing dengan IP berbeda tetapi pada net yang sama / 27. Anggap lebih jauh bahwa kedua tamu ini di-host oleh Host C. Di satu sisi, dua / 27 alamat milik "server" yang berbeda, tetapi dalam arti lain mereka bisa melewati NIC dan host yang sama, sehingga orang dapat berpendapat bahwa IP itu milik ke "server" yang sama. Jika Guest A pada gilirannya host dua VM lagi, Guest X & Guest Y, juga dengan alamat / 27 mereka sendiri, yang mana dari IP ini milik komputer yang sama? Bagaimana jika Anda "vMotion" salah satu dari VM ini? Saya tidak punya jawaban yang bagus.
Joshua Huber
13

Ingin tahu "mengapa." Kekhawatiran tentang mesin dual homed biasanya terlokalisasi karena beberapa sakit kepala sysadmin yang tidak disebutkan namanya. Detail dimaksudkan untuk disembunyikan oleh model OSI.

Linux sentris menjawab di depan.

Ada beberapa cara untuk menghasilkan sidik jari dan membuat perkiraan pendidikan.

  1. nmap -o dan nmap dengan pemindaian port yang layak. Server tidak selalu mengikat kedua NIC. Tetapi sering kali mereka melakukannya.

  2. Alamat MAC Jika Anda memiliki cara apa pun untuk mendapatkan alamat MAC, produsen ingin menggunakan alamat berurutan untuk perangkat keras terintegrasi. Dua alamat MAC yang hampir identik lebih cenderung merupakan motherboard yang sama. Ini tidak berlaku untuk kartu aftermarket, tentu saja.

  3. Salam pembuka. Telnet, ftp, smtp, dan sejenisnya semuanya menawarkan informasi pengidentifikasi. Lihat apakah layanan ini berjalan, tawarkan informasi yang cukup berbeda. Spanduk kemungkinan langka hari ini tetapi masih layak dicoba.

  4. Uji perilaku mandiri NIC. Sebagai contoh, cobalah untuk melakukan trip tolak host dengan memberikan otentikasi palsu ke ssh belasan kali. Jika host menolak tersandung, Anda harus menemukan soket segera ditutup pada percobaan berikutnya. Lihat apakah ini juga terjadi untuk IP lainnya.

Net A / 27 adalah ... apa, 29 host? Saya akan mengatakan peluang mengidentifikasi mesin rumah ganda dengan kepercayaan tinggi sangat tipis, mungkin 5%. Tetapi dengan jumlah host yang sedikit, Anda mungkin bisa membuat tebakan yang berpendidikan.

Pertanyaan yang menyenangkan untuk wawancara. Saya mungkin mencurinya sebenarnya.

Brian
sumber
4
Adapun # 4, jika kedua alamat menjalankan ssh dan Anda dapat terhubung, Anda dapat membandingkan kunci host. Pada prinsipnya, dua server yang berbeda dapat diberikan kunci host yang sama, tetapi itu akan menjadi pengaturan yang sangat aneh. Jadi, jika Anda mendapatkan kunci host yang sama dari kedua alamat, kemungkinan besar server yang sama.
Nate Eldredge
Dua kotak dengan kunci host yang sama dapat dihasilkan dari kloning mesin.
Peter Green
7

Secara teoritis Anda dapat memberikan tingkat kepercayaan yang berarti dalam kebanyakan kasus. Ada beberapa peringatan yang membuatnya jauh lebih sulit dalam latihan.

Saya akan tumpang tindih jawaban lain, dan saya mungkin melewatkan hal-hal, tapi ini setidaknya alasan rinci mengapa bit ini penting atau tidak.

Pertama, lupakan pemikiran tentang alamat MAC. Kecuali jika Anda memiliki akses langsung ke segmen jaringan, Anda tidak akan dapat melihatnya.

Juga jangan percaya scan port. Ini sepele untuk port firewall hanya untuk IP tertentu, memiliki perangkat lunak hanya mendengarkan pada IP tertentu atau memiliki sistem IDS / IPS yang menerapkan pemfilteran ketika pemindaian terdeteksi. Semua ini akan mengacaukan pengujian Anda.

Ok, jadi cara Anda tahu itu sederhana: probabilitas dua kotak persis sama rendah kecuali mereka tetap terkait. Jadi apa yang sebenarnya Anda lakukan adalah mencoba membuktikan bahwa kotak-kotak itu berbeda, bukan berusaha membuktikan bahwa mereka sama.

  1. Ping. Anda perlu menguji keduanya pada saat yang sama dan melakukan banyak tes. Ternyata sementara ada jitter dalam waktu jaringan itu cukup tinggi kualitas pseudo-random noise, jika Anda memiliki sampel yang cukup dalam kerangka waktu yang kecil kebisingan rata-rata keluar cukup untuk memberikan perbandingan yang akurat.

    Setiap hop lapisan 2 dalam jaringan menambahkan sejumlah kecil latensi, tingkat kemacetan yang berbeda akan memberikan nilai latensi yang berbeda. Jika kedua IP menunjukkan latensi bersamaan yang berbeda secara signifikan, maka Anda dapat mengasumsikan bahwa mereka mungkin bukan kotak yang sama.

    Peringatan 1: Server tunggal dengan dua uplink (tidak terikat) dan dikonfigurasikan dengan IP berbeda pada setiap uplink dapat memiliki cukup ketidakseimbangan uplink untuk membuangnya.

  2. Pemindaian port. Port tujuan dapat di salah satu dari tiga negara: mendengarkan, menutup, memfilter. Di mana mereka berada sebenarnya tidak banyak digunakan seperti yang disebutkan di atas, tetapi masih ada informasi berguna yang bisa didapat.

    1. Kotak dengan port terbuka pada banyak IP kemungkinan besar akan menjalankan perangkat lunak yang sama pada semua IP. Dimungkinkan untuk menjalankan, katakanlah, nginx pada satu IP dan apache pada yang lain, tetapi kebanyakan orang tidak peduli. Sidik jari layanan yang berjalan untuk mencari kesamaan. Carilah perangkat lunak dan versi apa yang diiklankan itu sendiri, opsi apa yang didukungnya, nama host apa (jika ada) yang diiklankan, jika ada kebiasaan dalam perilaku perangkat lunak, hal-hal seperti itu.

      Layanan web adalah yang paling tidak berguna untuk ini, jauh lebih berguna adalah hal-hal seperti SMTP (sulit untuk mencampur dan mencocokkan karena dukungan sendmail, kebocoran banyak info), SNMP (tambang emas informasi), SSH (yang menjalankan beberapa daemon SSH? ) dan HTTPS (jika Anda beruntung dan mereka menjalankan perangkat lunak yang sama Anda dapat memeriksa perbedaan dalam konfigurasi SSL, konfigurasi yang identik tetapi tidak biasa adalah indikator yang baik). NTP dulunya merupakan tes yang baik tetapi sekarang sedang dikunci dengan keras karena penggunaannya yang berat sebagai penguat DoS, SNTP tidak benar-benar cukup akurat untuk pistol merokok dengan cara yang sama.

    2. Sidik jari Layer 3. Cara utama fingerprinting OS dari jarak jauh adalah dari kebiasaan dalam implementasi TCP / IP itu. Rincian persisnya terlalu panjang untuk masuk ke sini, tetapi pada dasarnya paket metadata membocorkan banyak informasi, seperti halnya bagaimana port yang ditutup atau difilter menanggapi koneksi dan bagaimana host bertindak ketika menerima paket yang cacat. Meskipun karakteristik ini bukan hal tertentu untuk mengetahui apa yang sedang berjalan, mereka dijamin cukup dekat dengan yang sama untuk setiap IP yang terikat pada tumpukan TCP / IP tertentu. Sistem yang sangat berbeda harus memiliki karakteristik yang sangat berbeda.

    Peringatan 2: Dua kotak yang menjalankan OS yang persis sama dan tambalan vendor cenderung terlihat sama. Pada Windows, dua salinan dari versi windows yang sama menjalankan pembaruan otomatis akan sangat sulit dibedakan kecuali mereka memiliki firewall yang berbeda berjalan. Di Linux perbedaannya cenderung terkait terutama dengan versi dan opsi kernel apa yang dikirimkan. Tes ini hanya dapat memberikan probabilitas tinggi bahwa dua IP tidak berada pada OS yang sama.

  3. Putar ulang serangan. Dengan daftar port terbuka pada kedua IP, lakukan tindakan yang identik pada setiap IP dan cari perbedaan perilaku. Hal-hal seperti time out, pesan kesalahan, coba lagi batas, dll. Beberapa perangkat lunak lebih sulit atau kurang sering dikonfigurasi untuk berbeda berdasarkan IP. Jika Anda tahu satu IP menerima email untuk domain tertentu, lihat apakah IP lainnya juga menerima email untuk domain tersebut.

    Peringatan 3: Ini adalah data berkualitas lebih rendah daripada bagian layanan sidik jari pada tes 2 karena hal ini lebih mudah untuk dikonfigurasikan secara berbeda pada IP yang berbeda dan ada segala macam interaksi di balik layar yang dimungkinkan. Peluang hasil palsu yang tinggi membuat sedikit kepercayaan pada hasil tersebut.

Jadi seperti yang saya katakan, teori yang mendasari adalah bahwa host yang berbeda mungkin akan konfigurasi yang berbeda dan yang bocor informasi.

Apa yang tidak diperhitungkan adalah bahwa lebih sulit untuk mengetahui apakah situs yang sama berjalan pada dua IP adalah server yang sama atau dua server yang dikonfigurasi untuk redundansi. Itu juga tidak memperhitungkan admin sistem yang menjalankan manajemen konfigurasi untuk menjaga sistem mereka sangat mirip. Juga tidak memperhitungkan host yang DNATing beberapa layanan berjalan pada host yang berbeda ke satu alamat IP.

Teknologi virtualisasi melempar beberapa kunci pas aneh dalam karya. Sistem kemas seperti Docker berbagi cukup banyak tumpukan untuk membuat wadah terpisah terlihat lebih mirip daripada yang sebenarnya. Virtual nics yang dijembatani dengan nic fisik seharusnya tidak mungkin untuk dibedakan dari perangkat keras yang terpisah secara fisik tetapi tidak, berasal terutama dari fakta bahwa bridge adalah perangkat lunak dan dengan demikian paket harus melewati tumpukan IP host.

Ada banyak cara untuk membingungkan orang yang mencoba menguji pengulangan. Yang terbaik yang bisa Anda harapkan adalah pola yang memiliki margin keraguan rendah.

Moral dari ini, untuk orang yang menjalankan server, adalah Anda harus mengonfigurasi server Anda untuk membocorkan informasi sesedikit mungkin:

  1. Kecilkan informasi spanduk sejauh mungkin. Semakin sedikit serangan yang tahu tentang konfigurasi Anda, semakin baik untuk Anda.

  2. Perangkat lunak hanya menerima koneksi pada IP yang seharusnya dilayani dan hanya jika diperlukan. Jika tidak perlu diakses secara eksternal, buatlah hanya di localhost. Mengurangi permukaan serangan selalu bagus.

  3. Jika Anda benar-benar harus mendengarkan sesuatu, dan Anda ingin menghindari korelasi antara dua IP, cobalah untuk menjaga pilihan yang tidak biasa seminimal mungkin. Anda ingin itu berbaur.

  4. Biarkan firewall berjalan dengan kebijakan penurunan default. Saya pikir mungkin ada nilai dalam pengaturan IDS yang menanggapi penyerang dengan tanggapan acak, kebisingan akan membuat penyerang lebih sulit untuk mempercayai hasil mereka tetapi tidak membuat Anda menonjol.

  5. Modul penundaan acak tidak berguna untuk mencegah serangan timing. Tidak benar-benar. Pilih nomor acak lalu gulung dadu beberapa kali, tulis hasilnya ditambah angka yang Anda pilih di awal. Yang akhirnya Anda dapatkan adalah kisaran dengan offset tetap. Jika nomor acak diganti kisaran bergerak. Jika rentang diubah offsetnya tetap sama dan itu hanya masalah pengulangan proses pengambilan sampel untuk mendapatkan garis dasar baru.

  6. IP stack normalisers memang ada tetapi sebagian diabaikan penelitian keamanan terakhir kali saya melihat. Mungkin akan menjadi pasar yang bagus untuk berinvestasi untuk vendor keamanan.

Kaithar
sumber