Apakah alamat IP "sepele untuk menempa"?

65

Saya membaca beberapa catatan tentang layanan DNS publik baru Google :

Saya perhatikan di bawah bagian keamanan paragraf ini:

Sampai solusi standar seluruh sistem untuk kerentanan DNS diimplementasikan secara universal, seperti protokol DNSSEC2, resolver DNS yang terbuka perlu secara mandiri mengambil beberapa langkah untuk mengurangi ancaman yang diketahui. Banyak teknik telah diusulkan; lihat IETF RFC 4542: Langkah-langkah untuk membuat DNS lebih tangguh terhadap jawaban yang dipalsukan untuk gambaran umum sebagian besar dari mereka. Di Google Public DNS, kami telah menerapkan, dan kami menyarankan, pendekatan berikut:

  • Menyediakan sumber daya mesin secara berlebihan untuk melindungi terhadap serangan DoS langsung pada resolver itu sendiri. Karena alamat IP sepele bagi penyerang untuk memalsunya, mustahil untuk memblokir kueri berdasarkan alamat IP atau subnet; satu-satunya cara efektif untuk menangani serangan semacam itu adalah dengan hanya menyerap beban.

Itu adalah realisasi yang menyedihkan; bahkan pada Stack Overflow / Server Fault / Super User, kami sering menggunakan alamat IP sebagai dasar untuk semua jenis blok dan pemblokiran.

Menganggap penyerang "berbakat" sepele bisa menggunakan alamat IP apa pun yang mereka inginkan, dan mensintesis sebanyak mungkin alamat IP palsu yang mereka inginkan, benar-benar menakutkan!

Jadi pertanyaan saya:

  • Apakah benar - benar mudah bagi penyerang untuk memalsukan alamat IP di alam liar?
  • Jika ya, mitigasi apa yang mungkin dilakukan?
Jeff Atwood
sumber
IP palsu tidak seharusnya menjadi masalah bagi larangan berbasis IP, karena tujuan utama seseorang adalah untuk mendapatkan akses, yang membutuhkan balasan yang sah. Tetapi beberapa risiko yang lebih besar adalah: IP dibagikan oleh banyak orang (sekolah, tempat kerja, warung internet, ...) dan IP yang dapat berubah menjadi apa pun setelah setel ulang modem pada DSL non-statis.
Halil Özgür
Mendapatkan akses bukanlah tujuan utama untuk banyak serangan menggunakan alamat palsu. Saya menduga berbagai serangan amplifikasi menggunakan DNS lebih sering. DNSnya bagus (dengan DNSSEC lebih buruk) - Anda dapat mengirim paket kecil <100 byte dengan alamat sumber palsu akan menyebabkan alamat palsu menerima amplifikasi 7x hingga 40x sebagai balasan.
Michael Graff

Jawaban:

50

Seperti yang dinyatakan oleh banyak orang lain, tajuk IP sepele untuk dipalsukan, asalkan orang tidak peduli menerima tanggapan. Inilah sebabnya mengapa sebagian besar terlihat dengan UDP, karena TCP membutuhkan jabat tangan 3 arah. Satu pengecualian penting adalah banjir SYN , yang menggunakan TCP dan upaya untuk mengikat sumber daya pada host penerima; lagi, karena balasan dibuang, alamat sumber tidak menjadi masalah.

Efek samping yang sangat buruk dari kemampuan penyerang untuk memalsukan alamat sumber adalah serangan backscatter . Ada deskripsi yang sangat baik di sini , tetapi secara singkat, ini adalah kebalikan dari serangan DDoS tradisional:

  1. Dapatkan kendali atas botnet.
  2. Konfigurasikan semua node Anda untuk menggunakan alamat IP sumber yang sama untuk paket jahat. Alamat IP ini akan menjadi korban akhirnya Anda.
  3. Kirim paket dari semua node terkontrol Anda ke berbagai alamat di internet, menargetkan port yang umumnya tidak terbuka, atau terhubung ke port yang valid (TCP / 80) yang mengklaim sebagai bagian dari transaksi yang sudah ada.

Dalam salah satu kasus yang disebutkan dalam (3), banyak host akan merespons dengan ICMP yang tidak terjangkau atau reset TCP, yang ditargetkan pada alamat sumber paket jahat . Penyerang sekarang berpotensi ribuan mesin tanpa kompromi di jaringan melakukan serangan DDoS pada korban yang dipilihnya, semua melalui penggunaan alamat IP sumber palsu.

Dalam hal mitigasi, risiko ini benar-benar risiko yang hanya dapat ditangani oleh ISP (dan khususnya ISP yang menyediakan akses pelanggan, bukan transit). Ada dua metode utama untuk melakukan ini:

  1. Penyaringan ingress - memastikan paket yang masuk ke jaringan Anda bersumber dari rentang alamat yang hidup di sisi yang jauh dari antarmuka yang masuk. Banyak vendor router menerapkan fitur seperti penerusan jalur balik unicast , yang menggunakan tabel perutean dan penerusan router untuk memverifikasi bahwa lompatan berikutnya dari alamat sumber dari paket yang masuk adalah antarmuka yang masuk. Ini paling baik dilakukan pada hop 3 layer pertama dalam jaringan (yaitu gateway default Anda.)

  2. Filter jalan keluar - memastikan bahwa paket yang meninggalkan sumber jaringan Anda hanya dari rentang alamat yang Anda miliki. Ini adalah pelengkap alami untuk penyaringan ingress, dan pada dasarnya adalah bagian dari menjadi 'tetangga yang baik'; memastikan bahwa meskipun jaringan Anda terganggu oleh lalu lintas jahat, lalu lintas itu tidak diteruskan ke jaringan yang Anda kenal.

Kedua teknik ini paling efektif dan mudah diimplementasikan ketika melakukannya di jaringan 'tepi' atau 'akses', di mana klien berinteraksi dengan penyedia. Menerapkan ingress / egress filtering di atas lapisan akses menjadi lebih sulit, karena kompleksitas beberapa jalur dan perutean asimetris.

Saya telah melihat teknik-teknik ini (terutama penyaringan masuknya) digunakan untuk efek besar dalam jaringan perusahaan. Mungkin seseorang dengan pengalaman lebih banyak penyedia layanan dapat memberikan lebih banyak wawasan tentang tantangan penyebaran penyaringan masuk / keluar di internet pada umumnya. Saya membayangkan dukungan perangkat keras / firmware menjadi tantangan besar, serta tidak dapat memaksa penyedia hulu di negara lain untuk menerapkan kebijakan serupa ...

Murali Suriar
sumber
Kedengarannya buruk. Jadi adakah yang bisa dilakukan administrator jika dia menemukan servernya menjadi target seperti ini? Mungkinkah untuk sementara memblokir paket ICMP dan pesan reset TCP dari semua IP? Apakah Anda bahkan dapat beroperasi dalam cara semi normal seperti ini?
UpTheCreek
45

Apakah benar-benar mudah bagi penyerang untuk memalsukan alamat IP di alam liar?

Tentu, jika saya tidak peduli untuk benar-benar menerima tanggapan, saya dapat dengan mudah mengirim paket menggunakan alamat sumber yang saya suka. Karena banyak ISP tidak benar-benar memiliki aturan jalan keluar yang baik, apa pun yang saya bina secara umum akan dikirimkan.

Jika penyerang benar-benar membutuhkan komunikasi dua arah, itu menjadi sangat sulit. Jika mereka membutuhkan komunikasi dua arah, cenderung lebih mudah untuk hanya menggunakan proxy. Yang sangat mudah diatur jika Anda tahu apa yang Anda lakukan.

Melarang orang dengan alamat IP cukup efektif di SF / SO / SU karena situs menggunakan http / https yang memerlukan komunikasi dua arah.

Sakit kepala
sumber
16
http adalah kunci di sini. DNS menggunakan UDP, jadi semua komunikasi adalah melalui paket tunggal tanpa persetujuan dalam protokol.
noah
16
Tebak itu seperti email. Anda dapat mengirim dengan alamat mana pun yang Anda inginkan, kecuali jika Anda ingin menerima balasan
Jorge Bernal
@Jorge: Pasti. Analogi email / surat adalah yang bagus untuk digunakan untuk menjelaskan hal ini kepada pengguna akhir.
Evan Anderson
Dalam DNS, TCP juga dapat digunakan, tetapi yang saat ini membuat orang takut. Namun, tidak ada ACK bawaan karena jawabannya adalah ACK.
Michael Graff
6
@noah - sebenarnya TCP adalah kuncinya, bukan HTTP. TCP tidak mungkin dipalsukan, tetapi 100 kali lebih sulit daripada UDP.
Alnitak
22

Sedikit Bukti Konsep untuk Jawaban Zordeche (dengan ubuntu):

$ sudo apt-get install hping3
$ sudo hping3 -1 --spoof 11.10.10.20 www.google.com
HPING www.google.com (eth0 64.233.169.105): icmp mode set, 28 headers + 0 data bytes

Kemudian di konsol lain:

$ sudo tcpdump -i eth0 'icmp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
13:30:19.439737 IP 11.10.10.20 > yo-in-f105.1e100.net: ICMP echo request, id 31297, seq 0, length 8

Jadi ya, sepele, tetapi kemudian Anda tidak mendapatkan balasan seperti yang disebutkan sebelumnya kecuali Anda memiliki akses ke 11.10.10.20 atau memiliki sniffer di suatu tempat antara www.google.com dan 11.10.10.20 (Dan itu harus tepat di depan) dari kedua ujungnya, karena Anda tidak dapat memprediksi rute paket). Juga, gateway spoofer (ISP) mungkin tidak membiarkan paket itu keluar dari pintu jika mereka memiliki semacam pemeriksaan ip dan melihat bahwa sumbernya berbau tidak sedap.

Kyle Brandt
sumber
1
Tetapi ISP biasanya tidak repot dengan inspeksi paket, kan?
Pacerier
13

Alamat IP mudah dipalsukan untuk lalu lintas UDP satu arah . Untuk paket TCP, Anda hanya bisa memalsukan untuk mendapatkan koneksi TCP setengah terbuka dengan paket SYN. Ini adalah dasar dari semacam serangan DOS juga. Tetapi Anda tidak dapat memalsukan koneksi HTTP dengan alamat palsu (misalnya, jika Anda memfilter sesi untuk menggunakan alamat IP yang sama). Meskipun ya, Anda bisa memalsukan alamat IP dalam paket, itu hanya berguna untuk beberapa jenis serangan penolakan layanan.

FryGuy
sumber
Apakah maksud Anda sulit untuk memalsukan koneksi HTTP dengan alamat palsu, atau bahkan tidak mungkin melakukannya?
Pacerier
Di internet terbuka, itu tidak mungkin. Ada beberapa trik jika Anda menggunakan LAN yang sama yang dapat menipu komputer lain agar mengirimkan lalu lintas kepada Anda ( web.eecs.umich.edu/~zhiyunq/pub/… ). Anda bisa memikirkannya dengan cara ini. UDP seperti mengirim kartu pos. Anda dapat menulis nama apa pun di alamat pengirim yang Anda inginkan. TCP seperti percakapan di mana jika Anda tidak memasukkan alamat pengirim yang benar, Anda tidak akan dapat melanjutkan percakapan. Beberapa jawaban lain di sini menjelaskannya dengan lebih baik.
FryGuy
10

Artikel GOOG secara eksplisit membahas DNS. DNS menggunakan paket UDP dan TCP. Yang UDP bisa dipalsukan, tetapi bukan TCP. TCP membutuhkan jabat tangan 3 arah . Jika alamat IP untuk paket TCP dipalsukan maka komputer tempa tidak akan menerima respons dan koneksi akan gagal. UDP, sebagaimana disebutkan dalam jawaban lain, adalah 'api dan lupakan' dan tidak memerlukan komunikasi respons. Serangan DoS datang hampir secara eksklusif dalam bentuk paket UDP karena alasan ini.

Dalam konteks Stack Overflow dan situs keluarga, masalah yang diangkat oleh Takaun Daikon sangat valid. Ada banyak cara untuk mendapatkan alamat IP baru dari ISP seseorang. Mengubah alamat MAC jelas yang paling mudah dan berfungsi untuk banyak ISP. Selain itu, banyak orang yang silliness mungkin menggunakan proxy publik atau TOR. Jelas memblokir IP asal untuk paket-paket itu hanya akan memblokir proxy atau simpul terminasi TOR.

Jadi, apakah memblokir alamat IP itu valid? Persetan ya. Tetapi Anda akan berakhir dengan kesalahan. Anda akan memblokir beberapa IP yang sebenarnya bukan sumber masalah (yaitu proksi) dan Anda juga akan meminta orang menghindari blok Anda dengan mengubah IP. Orang yang kurang beruntung untuk mendapatkan IP yang diblokir nanti tidak akan dapat mengakses keluarga SO situs. Tapi kesalahan tingkat harus kecil. Kecuali Anda memblokir set besar IP. Tetapi jika Anda memblokir satu atau dua hari, Anda seharusnya baik-baik saja.

Anda mungkin ingin memperkenalkan skema yang sedikit lebih canggih di mana Anda memblokir, tetapi hanya untuk suatu periode, seperti setahun. Jika jaringan Anda mampu membatasi bandwidth atau membatasi koneksi, Anda mungkin juga mempertimbangkan skema di mana tas douche yang menjalankan Tolok Ukur Apache di situs Anda hanya dimasukkan ke dalam kandang dengan bandwidth yang sangat terbatas.

JD Long
sumber
1
Anda bisa dipalsukan. Lihat saja pembajakan sesi TCP. google.com/search?q=hijack+tcp+session
Dan
Kecuali jika penyerang memiliki akses ke arus lalu lintas untuk memulai, serangan sequencing TCP dengan sistem operasi modern cukup tidak praktis. Jika mereka adalah orang yang paling pintar, maka mereka mungkin tidak perlu melakukan pembajakan koneksi TCP.
Evan Anderson
10

IP spoofing akan berlanjut karena ISP malas.

ISP saya sangat tahu bahwa saya berada di alamat tertentu, atau setidaknya subnet saya aktif. Namun saya dapat menggunakan alamat sumber apa pun. Mengapa demikian? Cukup, biaya.

Jika saya memalsukan beberapa alamat di sana-sini, tidak ada biaya ISP saya. Jika setiap pengguna ISP saya memalsukan satu paket antara pukul 01:00 dan 02:00, itu masih akan menjadi kesalahan pada radar. Namun, ketika botnet mengirimkan banyak paket palsu dari banyak host di banyak ISP, mesin atau jaringan target jatuh.

Realitas finansial adalah bahwa kecuali Anda yang diserang, spoofing tidak ada biaya. Dibutuhkan uang untuk menerapkan penyaringan di dekat pelanggan, dan orang yang menghabiskan uang itu menyadari sangat sedikit pengembalian selain mengetahui bahwa mereka adalah warga jaringan yang baik.

UDP dan ICMP paling mudah dipalsukan, tetapi TCP juga memungkinkan. Ini membutuhkan OS jarak jauh yang tidak aman, yang menggunakan nomor urut yang dapat diprediksi untuk dieksploitasi. Terkadang mesin penyeimbang bebanlah yang mengubah nomor urut dan membuatnya dapat diprediksi. Jadi, TCP dimungkinkan - tetapi lebih sulit.

DNS anti-spoofing sebagian besar berfokus pada sisi keamanan mencegah seseorang dari mengirimkan jawaban yang salah kepada penyelesai rekursif. Aspek flooding UDP tidak spesifik DNS selain dari satu kueri kecil (katakanlah, untuk '.') Akan menyebabkan respons yang agak besar. Dengan demikian, itu membuat vektor amplifikasi yang bagus. Ada banyak protokol UDP lain di luar sana yang berfungsi, tetapi DNS digunakan di mana-mana, dan mudah untuk menemukan mesin yang digunakan untuk memperkuat serangan.

DNSSEC membuat ini lebih buruk, dengan paket-paket UDP yang dapat mencapai ukuran 4k.

Michael Graff
sumber
6

Alamat IP sepele untuk dipalsukan sejauh menyangkut serangan DOS berbasis DNS (D), karena biasanya merupakan kasus paket UDP yang tahan api dan lupakan. Untuk lalu lintas HTTP, bukan itu masalahnya, jadi Anda harus berada di jaringan lokal yang sama dengan server web (sepenuhnya mungkin, tentu saja, tergantung di mana situs Anda dihosting), atau mengontrol router perantara.

Mo.
sumber
6

Anda dapat mengirim surat kepada siapa pun, dan jika Anda tidak memasukkan alamat pengirim di amplop (atau memasukkan yang salah), mereka dapat menyewa semua penyaringan surat sampah di dunia dan tidak menyaring pesan Anda tanpa membuka (memproses) ) saya t.

Namun, jika pengirim menginginkan respons, alamat pengirim lebih baik benar, atau harus ada mekanisme lapisan aplikasi untuk mendapatkan alamat yang benar. Jadi saya bisa membuat Anda berpikir Anda membuka surat dari Nana, tetapi bahkan jika saya membodohi Anda dengan konten surat itu, Anda tidak akan mengirim Nana cek yang dibuat untuk TUNAI ke beberapa alamat di Nigeria (kecuali Nana adalah Nigeria) ). Jadi tantangan / respons adalah pertahanan yang efektif selama Anda tidak juga menjadi Man in the Middled.

Nuh
sumber
5

Saya dapat mengatur sumber alamat IP apa pun yang saya inginkan dalam datagram.
Apakah ISP saya akan membiarkan paket seperti itu keluar ke alam bebas adalah pertanyaan lain.

Martin Beckett
sumber
Apakah ada cara untuk mem-bypass filter ISP?
Pacerier
5

Walaupun ini tentu saja merupakan kenyataan yang perlu ditangani, masalah mendasarnya adalah benar-benar non-teknis: Orang dengan niat jahat mencoba melakukan hal-hal jahat. Oleh karena itu solusi nyata harus non-teknis juga.

Saya pikir apa yang telah dilakukan Stackoverflow adalah PERSIS solusi yang tepat untuk menangani pertahanan lini kedua: Teknik untuk membatasi pengguna spam potensial melalui berbagai cara membatasi kemampuan mereka untuk berinteraksi dengan platform sebelum mencapai beberapa tingkat 'kredibilitas'.

Tidak hanya teknik-teknik ini membantu meningkatkan kualitas keseluruhan situs, mereka sebenarnya mendorong pengguna untuk lebih terlibat dan memberikan jawaban yang lebih kredibel / andal.

Dari sudut pandang teknis, hal terbaik yang harus dilakukan adalah melakukan seperti yang disarankan Google: lebih efisien dalam menyerap / berurusan dengan beban tambahan.

Kerja bagus dan terus meningkat!

Joshua
sumber
3

UDP adalah bagian utama mengapa ini mudah - sebenarnya, Skype dan Slingbox mengeksploitasi kemampuan untuk memalsukan alamat IP dengan mudah di UDP untuk ' meninju ' melalui NAT dan memungkinkan peer-to-peer mudah.

TCP lebih sulit karena memerlukan siklus SYN / ACK penuh, tetapi Anda masih bisa membanjiri server dengan menggantung paket SYN yang pergi ke alamat IP berkali-kali dan pada dasarnya mengikat sejumlah besar router dalam proses.

Justin
sumber
1
Router hanya merutekan paket. Mereka tidak mempertahankan status TCP, jadi paket adalah paket yang merupakan paket bagi mereka.
Michael Graff
poin yang bagus. Jadi itu akan mengikat server (atau perangkat front-end apa pun yang melakukan negosiasi SYN / ACK) menunggu ACK mereka :-) Kami telah mengatur penyeimbang muatan kami untuk sepenuhnya menegosiasikan SYN / ACK sebelum menyerahkannya ke server di koneksi yang sudah terbuka, sehingga sangat membantu dalam hal ini.
Justin
2

Seperti disebutkan di atas, menggunakan proxy adalah sepele, dan ada sejumlah besar proxy anonim terbuka yang tersedia.

Bahkan tanpa menggunakan proxy, saya dapat mengatur alamat MAC di firewall saya ke nilai arbitrer baru apa pun, mengatur ulang modem kabel saya, dan ISP saya akan memberi saya alamat IP mengkilap yang baru.

Dan itu hanya untuk pemula. Ada banyak cara lain untuk mengatasi larangan IP.


sumber
ini bukan masalah. "Masalah" sesungguhnya di sini adalah desain protokol IP, yang tidak memiliki ketentuan untuk memverifikasi apakah alamat IP yang Anda buat paket IP Anda milik Anda atau tidak. Jadi, Anda diizinkan membuat badai paket dengan alamat sumber (tujuan) yang berbeda dan tidak ada yang akan menghentikan Anda mengirimkannya.
monomyth
3
Sesuatu bisa menghentikanmu. ISP Anda dapat mengatur filter keluar pada router mereka untuk tidak mengizinkan paket untuk diteruskan kecuali alamat IP sumber sebenarnya milik jaringan itu.
Zoredache
2

Jika ya, mitigasi apa yang mungkin dilakukan?

Tidak banyak yang dapat Anda lakukan di sisi penerima.

ISP pemalsu harus memfilter lalu lintas keluar mereka sehingga pelanggannya tidak dapat memalsukan IP dari jaringan yang berbeda.

Ini hanya beberapa baris dalam konfigurasi router sehingga tidak ada alasan yang baik untuk tidak melakukannya.

Ada cara untuk melacak penyerang, tetapi membutuhkan kerja sama penyedia hulu Anda: http://www.cymru.com/Documents/dos-and-vip.html

TonyB
sumber
2

Seperti yang orang lain tunjukkan, UDP cukup sepele untuk dipalsukan, TCP tidak terlalu banyak.

Pertahanan yang disukai, tetapi sayangnya tidak dikerahkan secara universal, adalah filter jalan keluar.

Untuk ISP yang menjalankan layanan DSL dll, setiap jalur virtual harus dikonfigurasikan dengan ip verify unicast reverse-path(atau apa pun yang setara dengan non-Cisco) yang memblokir paket mana pun yang alamat IP sumbernya tidak dalam rentang yang diketahui dialihkan ke jalur itu.

Alnitak
sumber
1

Saya ingat pernah melakukan pemrograman soket pada akhir 90-an dengan apa yang mungkin Visual Basic, dan kami dapat mengatur IP sumber pada koneksi kami. Saya ingat samar-samar bahwa ketika kami mencobanya, netstat -an menunjukkan IP sumber yang sebenarnya, tetapi log Apache menunjukkan IP palsu; dan saya pikir Apache memberikan IP palsu ke modul perl dan seterusnya.

Kyle Hodgson
sumber