Sabtu, 13 Februari 2010

Serangan Spoofing TCP sederhana

Selama beberapa tahun terakhir TCP nomor urut prediksi serangan 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 yang paling umum telah dilaksanakan dengan membuka
serangkaian hubungan ke host target, dan mencoba untuk memprediksi
nomor urut yang akan digunakan berikutnya. Banyak sistem operasi memiliki
Oleh karena itu mencoba untuk memecahkan masalah ini dengan menerapkan metode
menghasilkan urutan angka dalam mode tak terduga. Metode ini
tidak memecahkan masalah.

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

Penasihat ini mengasumsikan bahwa pembaca sudah memiliki pemahaman tentang bagaimana
TCP nomor urut prediksi serangan dilaksanakan.

Dampak dari penasihat ini sangat berkurang akibat banyaknya
organisasi yang source routed blok paket dan paket dengan alamat
dalam jaringan mereka. Oleh karena itu kita menyajikan informasi yang lebih banyak
sebuah 'kepala up' pesan untuk cenderung teknis, dan untuk kembali iterate yang
pengacakan dari TCP nomor urut bukan merupakan solusi efektif
terhadap serangan ini.


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

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

Contoh serangan berikut.

Host A adalah tuan rumah 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 rumah A.

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

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

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

Host C menjawab, 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 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
sambungan. Sekarang daemon 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 tetapkan. Biasanya ini akan aman, namun
menyerang host kini tahu apa yang selanjutnya akan menjadi nomor urut. Mengetahui
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 sebuah port pada host yang sesungguhnya diperlukan A
jika ammounts besar data yang akan dikirim, untuk mencegah host yang sesungguhnya A dari
menanggapi dengan suatu RST. Hal ini tidak diperlukan dalam kebanyakan kasus saat melakukan
serangan terhadap in.rshd karena sejumlah kecil data yang ditransmisikan.

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

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

Dampak
~~~~~~

Dampak dari serangan ini mirip dengan TCP yang lebih kompleks urutan
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, penggunaan
of. rhosts atau file hosts.equiv.


Solusi
~~~~~~~~~

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

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

Contoh kode untuk proses benar source routed packets 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) (
                for (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 TCP wrappers sedang digunakan. Jika
pengguna mengandalkan TCP wrappers, memperbaiki di atas harus dimasukkan ke dalam
fix_options.c. Masalahnya adalah bahwa TCP wrappers sendiri tidak menutup
sambungan, namun menghilangkan pilihan melalui setsockopt (). Dalam kasus ini
ketika kontrol akan diteruskan ke in.rshd, itu tidak akan pernah melihat opsi apa-apa sekarang,
dan koneksi akan tetap terbuka (bahkan jika in.rshd memiliki patch di atas
dimasukkan). Pilihan untuk benar-benar drop source routed koneksi akan
mudah-mudahan diberikan dalam rilis berikutnya dari TCP wrappers. Pilihan lain
adalah undefine KILL_IP_OPTIONS, yang tampaknya akan terdefinisikan secara default.
Ini melewati IP pilihan dan memungkinkan daemon yang dipanggil untuk menangani mereka
sesuai.


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

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

--- Cisco

Untuk memiliki router membuang apapun yang mengandung datagram IP source route option
mengeluarkan perintah berikut:

no ip source-route

Ini adalah opsi konfigurasi global.


--- NetBSD

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

Untuk menentukan apakah penyampaian source routed paket ini 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 artinya aktif.

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

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

ATAU melalui server email mereka patch

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


BSD / OS routing 2,1 telah dinonaktifkan secara default

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

Untuk menentukan apakah penyampaian source routed paket ini 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 artinya aktif.

Forwarding sumber paket routed 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

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

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

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


--- FreeBSD

Kapal dengan routing 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 routing telah dihidupkan, matikan melalui:

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


--- Linux

Linux secara default memiliki 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 Namun, sistem Solaris bertindak sebagai gateway dapat dicegah
dari sumber manapun forwarding paket 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 tersebut akan diterapkan pada bootup.


--- SunOS 4.x

Kami tahu tidak ada metode untuk mencegah SunOS dari sumber menerima routed
sambungan, tetapi patch adalah SunOS availible untuk mencegah sistem dari
forwarding source routed packets.

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 HP-UX sebuah sistem
mencegah menerima atau penyampaian sumber paket routed. HP-UX telah IP
forwarding diaktifkan secara default dan harus dinonaktifkan 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
#

Tanggapan dari 1 menunjukkan IP forwarding is 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 source routed packets.
IP forwarding dan penyampaian source routed paket khusus dapat
AIX mematikan bawah melalui perintah berikut:

Untuk menonaktifkan penyampaian semua paket:

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

Untuk menonaktifkan penyampaian source routed packets:

# / 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
jasa yang bergantung pada alamat IP otentikasi, mereka harus dinonaktifkan
segera (in.rshd, in.rlogind). in.rlogind aman jika. rhosts dan
/ etc / hosts.equiv tidak digunakan.


Attributions
~~~~~~~~~~~~

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

Terima kasih kepada 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 untuk diskusi dan cepat
solusi untuk BSD / OS.

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

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

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



----- BEGIN PGP PUBLIC KEY BLOCK -----
Version: 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 -----

0 komentar:

Posting Komentar