Lompat ke konten Lompat ke sidebar Lompat ke footer

Spoofing Attack




A simple TCP spoofing attack


Selama beberapa tahun terakhir, jumlah serangan prediksi nomor TCP telah menjadi
ancaman aktual terhadap jaringan yang tidak terlindungi, mengambil laba dari yang melekat
hubungan kepercayaan hadir di banyak instalasi jaringan. Urutan TCP
jumlah serangan prediksi paling sering diimplementasikan dengan membuka a
serangkaian koneksi ke host target, dan mencoba memprediksi nomor urut yang akan dipakai selanjutnya. Banyak sistem operasi Oleh sebab itu berusaha untuk memecahkan problem ini dengan menerapkan metode menghasilkan nomor urut dalam mode tak terduga. Metode ini tidaktidak memecahkan masalah.

Penasihat ini memperkenalkan metode alternatif untuk mendapatkan awal nomor urut dari beberapa layanan tepercaya umum. Serangan yang disajikan di sini tidak mengharuskan penyerang untuk membuka banyak koneksi, atau membanjiri port pada host tepercaya untuk menuntaskan serangan. Satu-satunya persyaratan ialah itu source routed paket sanggup disuntikkan ke jaringan sasaran dengan palsu alamat sumber.

Penasihat ini menganggap bahwa pembaca sudah mempunyai pemahaman wacana caranya Serangan prediksi nomor urut TCP diimplementasikan. Dampak dari hikmah ini sangat berkurang sebab banyaknya jumlah organisasi yang memblokir paket dan paket paket yang di-routing dengan alamat di dalam jaringan mereka. Oleh sebab itu kami menyajikan informasi lebih banyak pesan 'heads up' untuk yang cenderung teknis, dan untuk mengulangnya kembali pengacakan nomor urut TCP bukanlah solusi yang efektif terhadap serangan ini.


Detail Teknis



Masalah terjadi ketika daemon jaringan mendapatkan koneksi

dengan perutean sumber diaktifkan, dan lanjutkan untuk menonaktifkan perutean sumber apa pun

opsi pada koneksi. Namun, koneksi diizinkan untuk dilanjutkan

rute sebaliknya tidak lagi digunakan. Contoh serangan sanggup diluncurkan melawan

daemon in.rshd, yang pada kebanyakan sistem akan mengambil opsi soket

via getsockopt () dan kemudian matikan semua opsi berbahaya melalui setsockopt ().

Contoh serangan berikut.

Host A ialah host tepercaya

Host B ialah host target

Host C ialah penyerang

Host C menginisiasi sumber yang mengarahkan koneksi ke in.rshd pada host B, berpura-pura

menjadi tuan rumah A.

Host C spoofing Host A <SYN> -> Host B in.rshd

Host B mendapatkan paket SYN awal, menciptakan PCB gres (protokol

blok kontrol) dan mengaitkan rute dengan PCB. Tuan rumah B merespons,

memakai rute sebaliknya, mengirim kembali SYN / ACK dengan nomor urut.

Host C spoofing Host A <- <SYN / ACK> Host B in.rshd

Host C merespon, masih spoofing host A, mengakui nomor urut.

Opsi routing sumber tidak diharapkan pada paket ini.

Host C spoofing Host A <ACK> -> Host B in.rshd

Kami kini mempunyai koneksi yang mapan, panggilan accept () selesai, dan

Kontrol kini diteruskan ke daemon in.rshd. Daemon kini melaksanakan IP

pilihan mengusut dan memilih bahwa kami telah memulai sumber yang diarahkan

koneksi. Daemon kini mematikan opsi ini, dan setiap paket dikirim

sesudah itu akan dikirim ke host A yang sebenarnya, tidak lagi memakai reverse

rute yang telah kami tentukan. Biasanya ini akan aman, namun

host menyerang kini tahu apa nomor urut berikutnya akan. Penuh arti

nomor urut ini, kita kini sanggup mengirim paket palsu tanpa sumber

opsi routing diaktifkan, berpura-pura berasal dari Host A, dan kami

perintah akan dieksekusi.

Dalam beberapa kondisi, banjir pelabuhan pada host A yang bersama-sama diperlukan

bila lebih banyak jumlah data dikirim, untuk mencegah A host yang sebenarnya

menanggapi dengan RST. Ini tidak diharapkan dalam banyak perkara ketika melakukan

serangan ini terhadap in.rshd sebab kecilnya jumlah data yang dikirimkan.

Perlu dicatat bahwa nomor urut diperoleh sebelum mendapatkan ()

telah kembali dan ini tidak sanggup dicegah tanpa mematikan sumber

routing di kernel.

Sebagai catatan tambahan, kami sangat beruntung bahwa TCP hanya menghubungkan rute sumber dengan

sebuah PCB ketika SYN awal diterima. Jika diterima dan mengubah ip

pilihan kapan saja selama koneksi, lebih banyak serangan eksotis sanggup dimungkinkan.

Ini bisa termasuk koneksi pembajakan di internet tanpa bermain

seorang laki-laki di serangan tengah dan bisa melewati investigasi opsi IP

dipaksakan oleh daemon memakai getockopt (). Untungnya, tumpukan TCP / IP berbasis BSD akan

tidak melaksanakan ini, namun akan menarik untuk mengusut implementasi lain.

Dampak



Dampak dari serangan ini seolah-olah dengan urutan TCP yang lebih kompleks

nomor serangan prediksi, namun ini melibatkan lebih sedikit langkah, dan tidak memerlukan

kita untuk 'menebak' nomor urut. Ini memungkinkan penyerang untuk mengeksekusi

perintah absolut sebagai root, tergantung pada konfigurasi target

sistem. Diperlukan bahwa kepercayaan hadir di sini, sebagai contoh, penggunaannya

file .rhosts atau hosts.equiv.

Solusi



Solusi ideal untuk problem ini ialah mempunyai layanan apa pun yang mengandalkan

Otentikasi berbasis IP drop koneksi sepenuhnya ketika awalnya

mendeteksi opsi routed source yang hadir. Administrator jaringan

dan pengguna sanggup mengambil tindakan pencegahan untuk mencegah pengguna di luar jaringan mereka

dari mengambil laba dari problem ini. Solusinya mudah-mudahan sudah

diimplementasikan atau diimplementasikan.

1. Blokir semua koneksi yang diarahkan sumber ke jaringan Anda

2. Blok semua paket dengan alamat berbasis internal dari memasuki jaringan Anda.

Administrator jaringan harus sadar bahwa serangan ini sanggup dengan gampang terjadi

diluncurkan dari belakang penyaringan router dan firewall. pelayanan internet

penyedia dan perusahaan harus memastikan bahwa pengguna internal tidak sanggup memulai

serangan yang dideskripsikan. Tindakan pencegahan yang disarankan di atas harus dilaksanakan

untuk melindungi jaringan internal.

Contoh isyarat untuk memroses paket source routed dengan benar disajikan di sini

sebagai contoh. Tolong beri tahu kami bila ada problem dengan itu.

Kode ini telah diuji pada sistem operasi berbasis BSD.

        u_char optbuf[BUFSIZ/3];
        int optsize = sizeof(optbuf), ipproto, i;
        struct protoent *ip;

        if ((ip = getprotobyname("ip")) != NULL)
                ipproto = ip->p_proto;
        else
                ipproto = IPPROTO_IP;
        if (!getsockopt(0, ipproto, IP_OPTIONS, (char *)optbuf, &optsize) &&
            optsize != 0) {
                for (i = 0; i < optsize; ) {
                        u_char c = optbuf[i];
                        if (c == IPOPT_LSRR || c == IPOPT_SSRR)
                                exit(1);
                        if (c == IPOPT_EOL)
                                break;
                        i += (c == IPOPT_NOP) ? 1 : optbuf[i+1];
                }
        }


Salah satu perhatian penting ialah dalam perkara di mana TCP wrappers digunakan. Jika

seorang pengguna mengandalkan pembungkus TCP, perbaikan di atas harus dimasukkan ke dalam

fix_options.c. Masalahnya ialah bahwa TCP wrappers sendiri tidak menutup

koneksi, namun menghapus opsi melalui setsockopt (). Pada perkara ini

ketika kontrol diteruskan ke in.rshd, itu tidak akan pernah melihat opsi apa pun yang ada,

dan koneksi akan tetap terbuka (bahkan bila in.rshd mempunyai patch di atas

tergabung). Sebuah opsi untuk benar-benar menjatuhkan koneksi yang diarahkan sumber

semoga sanggup diberikan dalam rilis TCP wrapper berikutnya. Pilihan lainnya

ialah untuk mendefinisikan KILL_IP_OPTIONS, yang sepertinya tidak ditentukan secara default.

Ini melewati opsi IP dan memungkinkan daemon yang dipanggil untuk menanganinya

demikian.

Menonaktifkan Routing Sumber



Kami yakin informasi berikut ini akurat, namun tidak demikian

terjamin.

--- Cisco

Agar router membuang datagram apa pun yang berisi opsi rute sumber IP

berikan perintah berikut:

tidak ada sumber-rute ip

Ini ialah opsi konfigurasi global.

--- NetBSD

Versi NetBSD sebelum 1.2 tidak menawarkan kemampuan untuk menonaktifkan

perutean sumber. Versi lain dikirimkan dengan routing sumber ENABLED secara default.

Kami tidak tahu cara untuk mencegah NetBSD mendapatkan paket routed source.

Sistem NetBSD, bagaimanapun, sanggup dikonfigurasi untuk mencegah penerusan paket

ketika bertindak sebagai gateway.

# sysctl net.inet.ip.forwarding
# sysctl net.inet.ip.forwsrcrt


Respons akan berupa 0 atau 1, 0 berarti off, dan 1 artinya aktif.

Penerusan paket routed source sanggup dimatikan melalui:

# sysctl -w net.inet.ip.forwsrcrt = 0

Penerusan semua paket secara umum sanggup dimatikan melalui:

# sysctl -w net.inet.ip.forwarding = 0

--- BSD / OS

BSDI telah menciptakan patch availible untuk rshd, rlogind, tcpd dan nfsd. Ini

patch tersedia di:

ftp://ftp.bsdi.com/bsdi/patches/patches-2.1

ATAU melalui server email patch mereka <patches@bsdi.com>

Nomor patchnya

U210-037 (versi normal)

D210-037 (versi domestik untuk situs yang menjalankan versi kerberized)

BSD / OS 2.1 mempunyai perutean sumber yang dinonaktifkan secara default

Versi sebelumnya dikirimkan dengan perutean sumber ENABLED secara default. Sejauh

kita tahu, BSD / OS tidak sanggup dikonfigurasi untuk menjatuhkan paket yang diarahkan sumber yang ditakdirkan

untuk dirinya sendiri, namun sanggup dikonfigurasi untuk mencegah penerusan semacam itu

paket ketika bertindak sebagai gateway.

Untuk memilih apakah penerusan paket routed source diaktifkan,

berikan perintah berikut:

# sysctl net.inet.ip.forwarding

# sysctl net.inet.ip.forwsrcrt

Respons akan berupa 0 atau 1, 0 berarti off, dan 1 artinya aktif.

Penerusan paket routed source sanggup dimatikan melalui:

# sysctl -w net.inet.ip.forwsrcrt = 0

Penerusan semua paket secara umum sanggup dimatikan melalui:

# sysctl -w net.inet.ip.forwarding = 0

--- OpenBSD

dengan routing sumber dimatikan secara default. Untuk memilih apakah sumber

routing diaktifkan, perintah berikut sanggup dikeluarkan:

# sysctl net.inet.ip.surceroute

Respons akan berupa 0 atau 1, 0 yang berarti bahwa perutean sumber dimatikan,

dan 1 artinya aktif. Jika perutean sumber telah diaktifkan, matikan melalui:

# sysctl -w net.inet.ip.sourceroute = 0

Ini akan mencegah OpenBSD meneruskan dan mendapatkan sumber apa pun yang diarahkan

paket-paket.

--- FreeBSD

 dengan routing sumber dimatikan secara default. Untuk memilih apakah sumber

routing diaktifkan, perintah berikut sanggup dikeluarkan:

# sysctl net.inet.ip.surceroute

Respons akan berupa 0 atau 1, 0 yang berarti bahwa perutean sumber dimatikan,

dan 1 artinya aktif. Jika perutean sumber telah diaktifkan, matikan melalui:

# sysctl -w net.inet.ip.sourceroute = 0

--- Linux

Linux secara default mempunyai perutean sumber yang dinonaktifkan di kernel.

--- Solaris 2.x

Kapal dengan routing sumber diaktifkan secara default. Solaris 2.5.1 ialah salah satu dari

beberapa sistem operasi komersial yang mempunyai urutan yang tidak sanggup diprediksi

angka, yang tidak membantu dalam serangan ini.

Kami tahu tidak ada metode untuk mencegah Solaris mendapatkan sumber yang diarahkan

koneksi, bagaimanapun, sistem Solaris bertindak sebagai gateway sanggup dicegah

dari meneruskan paket routed sumber apa pun melalui perintah berikut:

# ndd -set / dev / ip ip_forward_src_routed 0

Anda sanggup mencegah penerusan semua paket melalui:

# ndd -set / dev / ip ip_forwarding 0

Perintah-perintah ini sanggup ditambahkan ke /etc/rc2.d/S69inet untuk diterapkan ketika boot.

--- SunOS 4.x

Kami tahu tidak ada metode untuk mencegah SunOS mendapatkan sumber yang disalurkan

koneksi, namun patch tersedia untuk mencegah sistem SunOS

meneruskan paket routed source.

Patch ini tersedia di:

ftp://ftp.secnet.com/pub/patches/source-routing-patch.tar.gz

Untuk mengkonfigurasi SunOS biar mencegah penerusan semua paket, berikut ini

perintah sanggup dikeluarkan:

# echo "ip_forwarding / w 0" | adb -k -w / vmunix / dev / mem

# echo "ip_forwarding? w 0" | adb -k -w / vmunix / dev / mem

Perintah pertama mematikan paket forwarding di / dev / mem, yang kedua di

/ vmunix.

--- HP-UX

HP-UX sepertinya tidak mempunyai opsi untuk mengkonfigurasi sistem HP-UX ke

mencegah mendapatkan atau meneruskan paket routed source. HP-UX mempunyai IP

penerusan diaktifkan secara default dan harus dimatikan bila bertindak sebagai

firewall. Untuk memilih apakah IP forwarding ketika ini aktif, berikut ini

perintah sanggup dikeluarkan:

# adb / hp-ux

ipforwarding? X <- input pengguna

ipforwarding:

ipforwarding: 1

#

Tanggapan 1 memperlihatkan IP forwarding ON, 0 memperlihatkan off. HP-UX bisa

dikonfigurasi untuk mencegah penerusan paket apa pun melalui yang berikut ini

perintah:

# adb -w /hp-ux /dev/kmem
ipforwarding/W 0
ipforwarding?W 0
^D
#

--- AIX


AIX tidak sanggup dikonfigurasi untuk membuang paket routed source yang ditakdirkan untuk dirinya sendiri,

namun sanggup dikonfigurasi untuk mencegah penerusan paket routed source.

IP forwarding dan forwarding paket routed sumber secara khusus dapat

dimatikan di bawah AIX melalui perintah berikut:

Untuk mematikan penerusan semua paket:

# / usr / sbin / no -o ipforwarding = 0

Untuk mematikan penerusan paket routed source:

# / usr / sbin / no -o nonlocsrcroute = 0

Perhatikan bahwa perintah-perintah ini harus ditambahkan ke /etc/rc.net

Jika mematikan routing sumber tidak dimungkinkan dan Anda masih menggunakannya

layanan yang mengandalkan otentikasi alamat IP, mereka harus dinonaktifkan

segera (in.rshd, in.rlogind). in.rlogind kondusif bila .rhosts dan

/etc/hosts.equiv tidak digunakan.

Atribusi


Terima kasih buat semua Crew LNX# yang selalu kompak Kalian semua tamvan

Terima kasih kepada Niels Provos <provos@physnet.uni-hamburg.de> untuk menyediakan

informasi dan detail dari serangan ini. Anda sanggup melihat web-nya

situs di http://www.physnet.uni-hamburg.de/provos

Terima kasih kepada Theo de Raadt, pengelola OpenBSD untuk meneruskan ini

informasi kepada kami. Informasi lebih lanjut wacana OpenBSD sanggup ditemukan di

http://www.openbsd.org

Terima kasih kepada Keith Bostic <bostic@bsdi.com> untuk diskusi dan cepat

solusi untuk BSD / OS.

Terima kasih kepada Brad Powell <brad.powell@west.sun.com> untuk menawarkan informasi

untuk Solaris 2.x dan SunOS 4.x sistem operasi.

Terima kasih kepada CERT dan AUSCERT untuk rekomendasi dalam saran ini.

Anda sanggup menghubungi penulis penasehat ini di oliver@secnet.com

Thank You.