Sebuah serangan TCP sederhana spoofing

Selama beberapa tahun nomor urut TCP masa serangan prediksi telah menjadi
ancaman nyata terhadap jaringan yang tidak dilindungi, mengambil keuntungan dari melekat
hubungan kepercayaan hadir dalam banyak instalasi jaringan. Urut TCP
Serangan prediksi jumlah ini paling sering dilaksanakan dengan membuka
seri koneksi ke host target, dan mencoba untuk memprediksi
nomor urut yang akan digunakan berikutnya. Banyak sistem operasi memiliki
Oleh karena itu berusaha untuk memecahkan masalah ini dengan menerapkan metode
menghasilkan urutan angka dalam mode tak terduga. Metode ini tidak
tidak memecahkan masalah.

Penasehat ini memperkenalkan metode alternatif mendapatkan awal
nomor urut dari beberapa layanan terpercaya umum. Serangan yang disajikan di sini
tidak memerlukan penyerang untuk membuka beberapa sambungan, atau banjir pelabuhan
pada host dipercaya untuk menyelesaikan serangan. Satu-satunya persyaratan adalah bahwa
source routed paket dapat disuntikkan ke jaringan target dengan palsu
alamat sumber.

Penasehat ini mengasumsikan bahwa pembaca sudah memiliki pemahaman tentang bagaimana
Urut TCP serangan prediksi jumlah diimplementasikan.

Dampak dari penasihat ini sangat berkurang karena jumlah besar
organisasi yang sumber blok disalurkan paket dan paket dengan alamat
dalam jaringan mereka. Oleh karena itu kami menyajikan informasi sebagai lebih dari
pesan 'kepala' untuk cenderung teknis, dan untuk kembali iterate yang
pengacakan nomor urut TCP bukan merupakan solusi yang efektif
terhadap serangan ini.


Rincian Teknis
~~~~~~~~~~~~~~~~~

Masalah terjadi ketika daemon jaringan tertentu menerima koneksi
dengan source routing diaktifkan, dan lanjutkan untuk menonaktifkan routing sumber
Pilihan pada sambungan. Sambungan dibiarkan terus, namun
rute sebaliknya tidak lagi digunakan. Serangan contoh dapat diluncurkan terhadap
daemon in.rshd, yang pada kebanyakan sistem akan mengambil pilihan socket
melalui getsockopt () dan kemudian mematikan opsi berbahaya melalui setsockopt ().

Serangan contoh berikut.

Host A adalah tuan rumah terpercaya
Host B adalah target host
Host C adalah penyerang

Tuan C memulai source routed koneksi ke in.rshd pada host B, pura-pura
menjadi tuan A.

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

Host B menerima paket SYN awal, menciptakan PCB baru (protokol
control block) dan rekan rute dengan PCB. Host B merespon,
menggunakan rute sebaliknya, mengirimkan kembali SYN / ACK dengan nomor urut.

Host C spoofing Host A Host B in.rshd

Tuan C merespon, masih spoofing host A, mengakui nomor urut.
Pilihan routing tidak diperlukan pada paket ini.

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

Kami sekarang memiliki koneksi didirikan, menerima () panggilan selesai, dan
kontrol sekarang dilewatkan ke in.rshd daemon. Daemon sekarang tidak IP
Pilihan memeriksa dan menentukan bahwa kita telah melakukan sumber dialihkan
koneksi. Daemon sekarang mematikan opsi ini, dan setiap paket yang dikirim
setelah itu akan dikirim ke host nyata, tidak lagi menggunakan sebaliknya
rute yang telah kita ditentukan. Biasanya ini akan aman, namun
menyerang tuan rumah sekarang tahu apa nomor urut berikutnya akan. Pengetahuan
nomor urut ini, kita sekarang dapat mengirim paket palsu tanpa sumber
Pilihan routing diaktifkan, berpura-pura berasal dari Host A, dan kami
perintah akan dieksekusi.

Dalam beberapa kondisi banjir dari port pada host yang sesungguhnya diperlukan
jika ammounts besar data yang akan dikirim, untuk mencegah host yang sesungguhnya A dari
menanggapi dengan RST. Hal ini tidak diperlukan dalam kebanyakan kasus saat melakukan
Serangan ini terhadap in.rshd karena ammount kecil data yang dikirimkan.

Perlu dicatat bahwa nomor urut diperoleh sebelum menerima ()
telah kembali dan bahwa ini tidak dapat dicegah tanpa mematikan sumber
routing dalam kernel.

Sebagai catatan, kami sangat beruntung bahwa hanya TCP rekan rute sumber dengan
PCB ketika SYN awal diterima. Jika diterima dan mengubah ip
Pilihan pada setiap saat selama sambungan, serangan lebih eksotis dapat dibuat.
Ini dapat mencakup koneksi pembajakan di internet tanpa bermain
seorang pria di tengah serangan dan mampu melewati pilihan IP memeriksa
dipaksakan oleh daemon menggunakan getsockopt (). Untungnya * BSD berbasis TCP / IP tumpukan akan
tidak melakukan hal ini, namun akan menarik untuk memeriksa implementasi lainnya.

Dampak
~~~~~~

Dampak dari serangan ini mirip dengan urutan TCP yang lebih kompleks
Jumlah serangan prediksi, namun melibatkan langkah-langkah yang lebih sedikit, dan tidak memerlukan
kita untuk 'menebak' nomor urutan. Hal ini memungkinkan penyerang untuk mengeksekusi
perintah sewenang-wenang sebagai root, tergantung pada konfigurasi dari target
sistem. Hal ini diperlukan bahwa kepercayaan adalah hadir di sini, sebagai contoh, penggunaan
dari .rhosts atau file hosts.equiv.


Solusi
~~~~~~~~~

Solusi ideal untuk masalah ini adalah dengan memiliki layanan yang mengandalkan
Otentikasi berbasis IP menjatuhkan koneksi sepenuhnya ketika awalnya
mendeteksi sumber yang diarahkan pilihan yang hadir. Administrator jaringan
dan pengguna dapat mengambil tindakan pencegahan untuk mencegah pengguna di luar jaringan mereka
dari mengambil keuntungan dari masalah ini. Solusi yang mudah-mudahan sudah
baik dilaksanakan atau sedang dilaksanakan.

1. Blok sumber koneksi diarahkan ke jaringan Anda
2. Blok setiap paket berdasarkan alamat internal dari memasuki jaringan Anda.

Administrator jaringan harus menyadari bahwa serangan ini dapat dengan mudah
diluncurkan dari belakang router filtering dan firewall. Layanan Internet
penyedia dan perusahaan harus memastikan bahwa pengguna internal tidak dapat memulai
serangan dijelaskan. Tindakan pencegahan yang disarankan di atas harus dilaksanakan
untuk melindungi jaringan internal.

Contoh kode untuk benar memproses sumber paket dialihkan disajikan di sini
sebagai contoh. Harap beritahu kami jika ada masalah 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;
        lain
                ipproto = IPPROTO_IP;
        if (! getsockopt (0, ipproto, IP_OPTIONS, (char *) optbuf, & optsize) &&
            optsize! = 0) {
                untuk (i = 0; i                         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 yang penting adalah dalam kasus di mana pembungkus TCP yang digunakan. Jika
pengguna mengandalkan pembungkus TCP, memperbaiki di atas harus dimasukkan ke dalam
fix_options.c. Masalahnya adalah bahwa pembungkus TCP itu sendiri tidak menutup
sambungan, namun menghilangkan pilihan melalui setsockopt (). Pada kasus ini
ketika kontrol akan diteruskan ke in.rshd, itu tidak akan pernah melihat opsi ini,
dan koneksi akan tetap terbuka (bahkan jika in.rshd memiliki patch di atas
dimasukkan). Sebuah opsi untuk benar-benar menjatuhkan source routed koneksi akan
mudah-mudahan diberikan dalam rilis berikutnya dari pembungkus TCP. Pilihan lainnya
adalah undefine KILL_IP_OPTIONS, yang tampaknya akan terdefinisikan secara default.
Ini melewati pilihan IP dan memungkinkan disebut daemon untuk menangani mereka
sesuai.


Menonaktifkan Source Routing
~~~~~~~~~~~~~~~~~~~~~~~~

Kami percaya informasi berikut harus akurat, namun tidak
dijamin.

--- Cisco

Untuk memiliki router membuang datagram yang berisi opsi sumber rute IP
mengeluarkan perintah berikut:

ada sumber ip-rute

Ini adalah pilihan konfigurasi global.


--- NetBSD

Versi NetBSD sebelum sampai 1,2 tidak memberikan kemampuan untuk menonaktifkan
sumber routing. Versi lain kapal dengan ENABLED routing secara default.
Kami tidak tahu cara untuk mencegah NetBSD dari sumber menerima routed paket.
Sistem NetBSD, bagaimanapun, dapat dikonfigurasi untuk mencegah penyampaian paket
ketika bertindak sebagai gateway.

Untuk menentukan apakah penyampaian source routed paket diaktifkan,
mengeluarkan perintah berikut:

# Sysctl net.inet.ip.forwarding
# Sysctl net.inet.ip.forwsrcrt

Tanggapan akan baik 0 atau 1, 0 berarti off, dan 1 berarti aktif.

Penyampaian source routed paket dapat dimatikan melalui:

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

Forwarding dari semua paket pada umumnya dapat dimatikan melalui:

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


--- BSD / OS

BSDI telah membuat patch availible untuk rshd, login service, tcpd dan nfsd. Ini
patch availible di:

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

OR melalui server email patch mereka

Jumlah patch
U210-037 (versi normal)
D210-037 (versi domestik untuk situs yang menjalankan versi Kerberized)


BSD / OS 2.1 memiliki sumber routing dinonaktifkan secara default

Versi sebelumnya kapal dengan ENABLED routing secara default. Sejauh
kita tahu, BSD / OS tidak dapat dikonfigurasi untuk drop source routed paket ditakdirkan
untuk dirinya sendiri, namun dapat dikonfigurasi untuk mencegah penyampaian seperti
paket ketika bertindak sebagai gateway.

Untuk menentukan apakah penyampaian source routed paket diaktifkan,
mengeluarkan perintah berikut:

# Sysctl net.inet.ip.forwarding
# Sysctl net.inet.ip.forwsrcrt

Tanggapan akan baik 0 atau 1, 0 berarti off, dan 1 berarti aktif.

Penyampaian source routed paket dapat dimatikan melalui:

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

Forwarding dari semua paket pada umumnya dapat dimatikan melalui:

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


--- OpenBSD

Kapal dengan routing dimatikan secara default. Untuk menentukan apakah sumber
routing diaktifkan, perintah berikut dapat diterbitkan:

# Sysctl net.inet.ip.sourceroute

Tanggapan akan baik 0 atau 1, 0 berarti bahwa routing tidak aktif,
dan 1 berarti aktif. Jika routing telah dihidupkan, matikan melalui:

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

Ini akan mencegah OpenBSD dari forwarding dan menerima pekerjaan sumber manapun dialihkan
paket.


--- FreeBSD

Kapal dengan routing dimatikan secara default. Untuk menentukan apakah sumber
routing diaktifkan, perintah berikut dapat diterbitkan:

# Sysctl net.inet.ip.sourceroute

Tanggapan akan baik 0 atau 1, 0 berarti bahwa routing tidak aktif,
dan 1 berarti aktif. Jika routing telah dihidupkan, matikan melalui:

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


--- Linux

Linux secara default memiliki sumber routing dinonaktifkan di kernel.


--- Solaris 2.x

Kapal dengan routing diaktifkan secara default. Solaris 2.5.1 adalah salah satu
beberapa sistem operasi komersial yang memang memiliki urutan yang tak terduga
angka, yang tidak membantu dalam serangan ini.

Kami tahu tidak ada metode untuk mencegah Solaris dari sumber menerima routed
koneksi, bagaimanapun, sistem Solaris bertindak sebagai gateway dapat dicegah
dari forwarding sumber dialihkan paket melalui perintah berikut:

# NDD -set / dev / ip ip_forward_src_routed 0

Anda dapat mencegah penyampaian semua paket melalui:

# NDD -set / dev / ip ip_forwarding 0

Perintah-perintah ini dapat ditambahkan ke /etc/rc2.d/S69inet berlaku di bootup.


--- SunOS 4.x

Kami tahu tidak ada metode untuk mencegah SunOS dari sumber menerima routed
koneksi, namun patch adalah availible untuk mencegah sistem SunOS dari
forwarding source routed paket.

Patch ini adalah availible di:

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

Untuk mengkonfigurasi SunOS untuk mencegah penyampaian semua paket, berikut
perintah dapat diterbitkan:

# 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 packet forwarding di / dev / mem, yang kedua di
/ Vmunix.


--- HP-UX

HP-UX tampaknya tidak memiliki pilihan untuk mengkonfigurasi sistem HP-UX untuk
mencegah menerima atau penyampaian source routed paket. HP-UX memiliki IP
forwarding diaktifkan secara default dan harus dimatikan jika bertindak sebagai
firewall. Untuk menentukan apakah IP forwarding saat ini sedang, berikut
perintah dapat diterbitkan:

# Adb / hp-ux
ipforwarding X ipforwarding:
ipforwarding: 1
#

Respon dari 1 menunjukkan IP forwarding adalah ON, 0 menunjukkan off. HP-UX bisa
dikonfigurasi untuk mencegah penyampaian paket apapun melalui berikut
perintah:

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

--- AIX

AIX tidak dapat dikonfigurasi untuk membuang source routed paket ditakdirkan untuk dirinya sendiri,
Namun dapat dikonfigurasi untuk mencegah penyampaian source routed paket.
IP forwarding dan penyampaian source routed paket khusus dapat
dimatikan bawah AIX melalui perintah berikut:

Untuk mematikan penerusan dari semua paket:

# / Usr / sbin / tidak -o ipforwarding = 0

Untuk mematikan penyampaian source routed paket:

# / Usr / sbin / tidak -o nonlocsrcroute = 0

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



Jika mematikan routing tidak mungkin dan anda masih menggunakan
layanan yang mengandalkan otentikasi alamat IP, mereka harus dinonaktifkan
segera (in.rshd, in.rlogind). in.rlogind aman jika .rhosts dan
/etc/hosts.equiv tidak digunakan.


Atribusi
~~~~~~~~~~~~

Berkat Niels Provos untuk menyediakan
informasi dan rincian serangan ini. Anda dapat melihat web-nya
Situs di http://www.physnet.uni-hamburg.de/provos

Berkat Theo de Raadt, sang maintainer dari OpenBSD untuk meneruskan ini
informasi kepada kami. Informasi lebih lanjut tentang OpenBSD dapat ditemukan di
http://www.openbsd.org

Berkat Keith Bostic untuk diskusi dan cepat
solusi untuk BSD / OS.

Berkat Brad Powell untuk memberikan informasi
untuk Solaris 2.x dan SunOS 4.x sistem operasi.

Terima kasih kepada CERT dan AusCERT untuk rekomendasi dalam penasehat ini.

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



----- BEGIN PGP PUBLIC KEY BLOCK -----
Versi: 2.6.3ia

mQCNAzJATn0AAAEEAJeGbZyoCw14fCoAMeBRKiZ3L6JMbd9f4BtwdtYTwD42 / Uz1
A / 4UiRJzRLGhARpt1J06NVQEKXQDbejxGIGzAGTcyqUCKH6yNAncqoep3 + PKIQJd
Kd23buvbk7yUgyVlqQHDDsW0zMKdlSO7rYByT6zsW0Rv5JmHJh / bLKAOe7p9AAUR
tCVPbGl2ZXIgRnJpZWRyaWNocyA8b2xpdmVyQHNlY25ldC5jb20 + iQCVAwUQMkBO
fR / bLKAOe7p9AQEBOAQAkTXiBzf4a31cYYDFmiLWgXq0amQ2lsamdrQohIMEDXe8
45SoGwBzXHVh + gnXCQF2zLxaucKLG3SXPIg + nJWhFczX2Fo97HqdtFmx0Y5IyMgU
qRgK / j8KyJRdVliM1IkX8rf3Bn + ha3xn0yrWlTZMF9nL7iVPBsmgyMOuXwZ7ZB8 =
= Xq4f
----- END PGP PUBLIC KEY BLOCK -----

Pemberitahuan Hak Cipta
~~~~~~~~~~~~~~~~
Isi penasehat ini Copyright (C) 1997 Aman Networks Inc,
dan dapat didistribusikan secara bebas asalkan tidak ada biaya yang dikenakan untuk
distribusi, dan bahwa kredit layak diberikan.

 Anda dapat menemukan Jaringan Aman kertas di ftp://ftp.secnet.com/pub/papers
 dan nasihat di ftp://ftp.secnet.com/advisories

 Anda dapat menelusuri situs web di http://www.secnet.com


wassalam
Previous
Next Post »