Kamis, 15 Maret 2012

Sebuah serangan spoofing TCP sederhana





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

Penasehat ini memperkenalkan metode alternatif mendapatkan awal
urutan nomor 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 sumber paket routed dapat disuntikkan ke jaringan target dengan palsu alamat sumber.

Penasehat ini mengasumsikan bahwa pembaca sudah memiliki pemahaman tentang bagaimana Serangan TCP nomor urut prediksi diimplementasikan.

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


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

Masalah terjadi ketika daemon jaringan tertentu menerima koneksi
dengan sumber routing diaktifkan, dan lanjutkan untuk menonaktifkan sumber routing pilihan pada sambungan. Koneksi diizinkan untuk melanjutkan, namun rute reverse tidak lagi digunakan. Sebuah serangan contoh dapat diluncurkan terhadap
in.rshd daemon, yang pada kebanyakan sistem akan mengambil pilihan soket melalui getsockopt () dan kemudian mematikan opsi yang berbahaya melalui setsockopt ().

Sebuah serangan contoh berikut.

Sebuah host adalah host yang terpercaya
Host B adalah target host
Host C adalah penyerang

Host C memulai sambungan ke sumber in.rshd diarahkan pada host B, pura-pura
untuk menjadi tuan A.

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

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

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

Host C merespon, masih spoofing host A, mengakui nomor urut.
Sumber pilihan routing tidak diperlukan pada paket ini.

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

Kami sekarang memiliki koneksi yang mapan, yang menerima () panggilan selesai, dan
kontrol sekarang dilewatkan ke in.rshd daemon. Daemon sekarang tidak IP
pilihan memeriksa dan menentukan bahwa kita telah melakukan routed sumber
koneksi. Daemon sekarang mematikan opsi ini, dan setiap paket yang dikirim
setelah itu akan dikirim ke host A yang sesungguhnya, tidak lagi menggunakan sebaliknya
rute yang telah kita ditentukan. Biasanya ini akan aman, namun
menyerang tuan sekarang tahu apa yang nomor urutan berikutnya akan. Pengetahuan
ini nomor urut, 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 sebuah port pada host yang sesungguhnya A diperlukan
jika ammounts besar data yang dikirim, untuk mencegah host yang sesungguhnya A dari
menanggapi dengan suatu RST. Hal ini tidak diperlukan dalam kebanyakan kasus saat melakukan
ini serangan terhadap in.rshd karena sejumlah kecil data yang dikirimkan.

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

Sebagai catatan, kami sangat beruntung bahwa hanya TCP rekan rute sumber dengan
sebuah PCB ketika awal SYN yang diterima. Jika diterima dan mengubah ip
pilihan pada setiap titik saat sambungan berlangsung, serangan lebih eksotis mungkin.
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 * tumpukan berbasis TCP / IP BSD akan
tidak melakukan ini, namun akan menarik untuk memeriksa implementasi lainnya.

Dampak
~~~~~~

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


Solusi
~~~~~~~~~

Solusi ideal untuk masalah ini adalah untuk memiliki layanan yang mengandalkan
Otentikasi berbasis IP sambungan menjatuhkan sepenuhnya ketika awalnya
mendeteksi bahwa sumber pilihan routed 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. Memblokir koneksi sumber manapun diarahkan ke jaringan Anda
2. Memblokir setiap paket dengan alamat internal dari memasuki berbasis jaringan Anda.

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

Contoh kode untuk proses benar paket routed sumber yang 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;
        jika (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 adalah dalam kasus di mana TCP wrappers sedang digunakan. Jika
pengguna mengandalkan TCP wrappers, memperbaiki di atas harus dimasukkan ke dalam
fix_options.c. Masalah adalah bahwa TCP wrappers sendiri tidak menutup
sambungan, namun menghilangkan pilihan melalui setsockopt (). Dalam hal 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 drop koneksi sumber routed akan
mudah-mudahan diberikan dalam rilis berikutnya dari TCP wrappers. Pilihan lainnya
adalah untuk tidakmenandai KILL_IP_OPTIONS, yang tampaknya tidak terdefinisi secara default.
Ini melewati IP pilihan dan memungkinkan daemon dipanggil untuk menangani mereka
yang sesuai.


Menonaktifkan Sumber Routing
~~~~~~~~~~~~~~~~~~~~~~~~

Kami percaya bahwa informasi berikut harus akurat, namun tidak
dijamin.

--- Cisco

Untuk memiliki router membuang datagram mengandung pilihan sumber rute IP
mengeluarkan perintah berikut:

no ip source-route

Ini adalah pilihan konfigurasi global.


--- NetBSD

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

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

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

Respons akan berupa 0 atau 1, 0 berarti mati, dan 1 makna itu aktif.

Forwarding paket routed sumber 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 untuk availible rshd, rlogind, tcpd dan nfsd. Ini
patch adalah availible di:

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

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

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


BSD / OS 2.1 telah source routing dinonaktifkan secara default

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

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

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

Respons akan berupa 0 atau 1, 0 berarti mati, dan 1 makna itu aktif.

Forwarding paket routed sumber 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 sumber dimatikan secara default. Untuk menentukan apakah sumber
routing diaktifkan, perintah berikut dapat diterbitkan:

# Sysctl net.inet.ip.sourceroute

Respons akan berupa 0 atau 1, 0 berarti bahwa routing tidak aktif,
dan 1 makna itu aktif. Jika source routing telah diaktifkan, matikan melalui:

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

Hal ini akan mencegah OpenBSD dari forwarding dan menerima semua sumber routed
paket.


--- FreeBSD

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

# Sysctl net.inet.ip.sourceroute

Respons akan berupa 0 atau 1, 0 berarti bahwa routing tidak aktif,
dan 1 makna itu aktif. Jika source routing telah diaktifkan, matikan melalui:

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


--- Linux

Linux secara default memiliki routing dinonaktifkan di kernel.


--- Solaris 2.x

Kapal dengan sumber 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.

Kita tahu tidak ada metode untuk mencegah Solaris dari sumber menerima routed
koneksi, bagaimanapun, sistem Solaris bertindak sebagai gateway dapat dicegah
dari forwarding paket sumber manapun routed 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 untuk berlaku saat bootup.


--- SunOS 4.x

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

Patch ini 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 dalam
/ Vmunix.


--- HP-UX

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

# Adb / hp-ux
ipforwarding X <-? user input
ipforwarding:
ipforwarding: 1
#

Sebuah respon dari 1 menunjukkan IP forwarding adalah ON, 0 menunjukkan off. HP-UX dapat
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 paket-paket routed sumber ditakdirkan untuk dirinya sendiri,
Namun dapat dikonfigurasi untuk mencegah penyampaian paket sumber dialihkan.
IP forwarding dan forwarding paket routed sumber khusus dapat
AIX mematikan bawah melalui perintah berikut:

Untuk mematikan penyampaian semua paket:

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

Untuk menonaktifkan penerusan paket routed sumber:

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

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



Jika mematikan source 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 <provos@physnet.uni-hamburg.de> 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

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

Berkat Brad Powell <brad.powell@west.sun.com> untuk memberikan informasi
untuk Solaris 2.x dan SunOS 4.x sistem operasi.

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

Anda dapat menghubungi penulis ini penasehat 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 + + nJWhFczX2Fo97HqdtFmx0Y5IyMgU gnXCQF2zLxaucKLG3SXPIg
qRgK/j8KyJRdVliM1IkX8rf3Bn + ha3xn0yrWlTZMF9nL7iVPBsmgyMOuXwZ7ZB8 =
= Xq4f
----- END PGP PUBLIC KEY BLOCK -----

Hak Cipta
~~~~~~~~~~~~~~~~
Isi dari penasehat adalah Hak Cipta (C) 1997 Secure Networks Inc,
dan dapat didistribusikan secara bebas dengan ketentuan bahwa biaya tidak dibebankan untuk
distribusi, dan bahwa kredit yang tepat diberikan.

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

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

 Anda dapat berlangganan ke daftar mailing keamanan penasehat kami dengan mengirimkan email ke
 majordomo@secnet.com dengan baris "berlangganan sni-nasihat"