• Tidak ada hasil yang ditemukan

MENGELOLA KERNEL LINUX DAN MODUL KERNEL

Dalam dokumen Dr. Joseph Teguh Santoso, S.Kom, M.Kom (Halaman 155-162)

MENGELOLA KERNEL LINUX DAN MODUL KERNEL

Semua sistem operasi terdiri dari setidaknya dua komponen utama. Yang pertama dan terpenting dari semua ini adalah kernel. Kernel berada di pusat sistem operasi dan mengontrol semua yang dilakukan sistem operasi, termasuk mengelola memori, mengontrol CPU, dan bahkan mengontrol apa yang dilihat pengguna di layar. Elemen kedua dari sistem operasi sering disebut sebagai lahan pengguna dan mencakup hampir semua hal lainnya.

Kernel dirancang untuk menjadi area yang dilindungi atau diistimewakan yang hanya dapat diakses oleh root atau akun istimewa lainnya. Ini untuk alasan yang baik, karena akses ke kernel dapat memberikan akses yang hampir tidak terbatas ke sistem operasi. Akibatnya, sebagian besar sistem operasi menyediakan akses pengguna dan layanan hanya ke lahan pengguna, di mana pengguna dapat mengakses hampir semua yang mereka butuhkan tanpa mengendalikan sistem operasi.

Akses ke kernel memungkinkan pengguna untuk mengubah cara kerja, tampilan, dan nuansa sistem operasi. Ini juga memungkinkan mereka untuk merusak sistem operasi, sehingga tidak dapat bekerja. Terlepas dari risiko ini, dalam beberapa kasus, admin sistem harus sangat hati-hati mengakses kernel untuk alasan operasional dan keamanan.

Dalam bab ini, kita akan mempelajari cara mengubah cara kerja kernel dan menambahkan modul baru ke kernel. Mungkin tidak perlu dikatakan bahwa jika seorang Hacker dapat mengubah kernel target, mereka dapat mengontrol sistem. Selain itu, penyerang mungkin perlu mengubah cara kerja kernel untuk beberapa serangan, seperti serangan man-in-the-middle (MITM), di mana Hacker menempatkan dirinya di antara klien dan server dan dapat menguping komunikasi atau mengubah komunikasi. Pertama, kita akan melihat lebih dekat struktur kernel dan modulnya.

15.1 APA ITU MODUL KERNEL?

Kernel adalah sistem saraf pusat dari sistem operasi Anda, yang mengontrol semua yang dilakukannya, termasuk mengelola interaksi antara komponen perangkat keras dan memulai layanan yang diperlukan. Kernel beroperasi antara aplikasi pengguna yang Anda lihat dan perangkat keras yang menjalankan semuanya, seperti CPU, memori, dan hard drive.

Linux adalah kernel monolitik yang memungkinkan penambahan modul kernel.

Dengan demikian, modul dapat ditambahkan dan dihapus dari kernel. Kernel terkadang perlu diupdate, yang mungkin memerlukan pemasangan driver perangkat baru (seperti kartu video, perangkat Bluetooth, atau perangkat USB), driver sistem file, dan bahkan ekstensi sistem. Driver ini harus disematkan di kernel agar berfungsi sepenuhnya. Di beberapa sistem, untuk menambahkan driver, Anda harus membangun kembali, mengompilasi, dan mem-boot ulang seluruh kernel, tetapi Linux memiliki kemampuan untuk menambahkan beberapa modul ke kernel tanpa melalui seluruh proses tersebut. Modul ini disebut sebagai modul kernel yang dapat dimuat, atau LKM.

LKM memiliki akses ke tingkat kernel terendah sesuai kebutuhan, menjadikannya target yang sangat rentan bagi Hacker. Jenis software jahat tertentu yang dikenal sebagai rootkit menyematkan dirinya ke dalam kernel sistem operasi, sering kali melalui LKM ini. Jika malware menyematkan dirinya di kernel, Hacker dapat mengambil kendali penuh atas sistem operasi.

Jika seorang Hacker dapat membuat admin Linux memuat modul baru ke kernel, Hacker tidak hanya dapat memperoleh kendali atas sistem target tetapi, karena mereka beroperasi pada tingkat kernel sistem operasi apa yang dapat dikendalikan adalah melaporkan dalam hal proses, port, layanan, ruang hard drive, dan hampir semua hal lain yang dapat Anda pikirkan.

Jadi, jika seorang Hacker berhasil menggoda admin Linux untuk menginstal video atau driver perangkat lain yang memiliki rootkit tertanam di dalamnya, Hacker dapat mengambil kendali total atas sistem dan kernel. Ini adalah cara beberapa rootkit yang paling berbahaya memanfaatkan Linux dan sistem operasi lainnya.

Memahami LKM benar-benar merupakan kunci untuk menjadi admin Linux yang efektif dan menjadi Hacker yang sangat efektif dan tersembunyi. Mari kita lihat bagaimana kernel dapat dikelola untuk kebaikan dan keburukan.

15.2 MEMERIKSA VERSI KERNEL

Langkah pertama untuk memahami kernel adalah memeriksa kernel apa yang dijalankan oleh sistem Anda. Setidaknya ada dua cara untuk melakukannya. Pertama, kita dapat memasukkan yang berikut:

kali >uname -a

Linux Kali 4.6.0-kalil-amd64 #1 SMP Debian 4.6.4-lkalil (2016-07-21) x86_64

Kernel merespons dengan memberi tahu kami bahwa distribusi OS yang kami jalankan adalah Linux Kali, versi kernel adalah 4.6.4, dan arsitektur yang digunakan adalah arsitektur x86_64. Ini juga memberi tahu kami bahwa ia memiliki kemampuan symmetric multiprocessing (SMP) (artinya dapat berjalan pada mesin dengan banyak inti atau prosesor) dan dibangun di Debian 4.6.4 pada 21 Juli 2016. Output Anda mungkin berbeda, tergantung pada kernel yang digunakan. digunakan di build Anda dan CPU di sistem Anda. Informasi ini mungkin diperlukan saat Anda menginstal atau memuat driver kernel, jadi sangat berguna untuk memahami cara mendapatkannya.

Salah satu cara lain untuk mendapatkan informasi ini, serta beberapa informasi berguna lainnya adalah dengan menggunakan perintah cat pada file/proc/version, seperti:

kali >cat /proc/version

Linux version 4.6.0-kalil-amd64 (devel@kali.org) (gcc version 5.4.0 20160909 (Debian 5.4.0-6) ) #1 SMP Debian 4.6.4-lkalil (2016-07-21)

Di sini Anda dapat melihat bahwa file/proc/version mengembalikan informasi yang sama.

15.3 TUNING KERNEL DENGAN SYSCTL

Dengan perintah yang tepat, Anda dapat menyetel kernel, artinya Anda dapat mengubah alokasi memori, mengaktifkan fitur jaringan, dan bahkan memperkuat kernel dari serangan luar.

Kernel Linux modern menggunakan perintah sysctl untuk menyetel opsi kernel.

Semua perubahan yang Anda buat dengan sysctl tetap berlaku hanya sampai Anda mem-boot ulang sistem. Untuk membuat perubahan permanen, Anda harus mengedit file konfigurasi untuk sysctl secara langsung di /etc/sysctl.conf.

Peringatan: Anda harus berhati-hati saat menggunakan sysctl karena tanpa pengetahuan dan pengalaman yang tepat, Anda dapat dengan mudah membuat sistem Anda tidak dapat di-boot dan tidak dapat digunakan. Pastikan Anda telah

mempertimbangkan apa yang Anda lakukan dengan cermat sebelum membuat perubahan permanen apa pun.

Mari kita me lihat isi dari sysctl sekarang. Saat ini, Anda harusnya mengenali opsi yang kami berikan dengan perintah yang ditampilkan di sini:

kali >sysctl -a | less dev.cdrom.autoclose = 1 dev.cdrom.autoeject = 0 dev.cdrom.check_media = 0 dev.cdrom.debug = 0 --snip -

Pada output, Anda akan melihat ratusan baris parameter yang dapat diedit oleh administrator Linux untuk mengoptimalkan kernel. Ada beberapa baris di sini yang berguna bagi Anda sebagai Hacker. Sebagai contoh tentang bagaimana Anda dapat menggunakan sysctl, kita akan melihat mengaktifkan penerusan paket.

Dalam serangan maninthe middle (MITM), Hacker menempatkan dirinya di antara host yang berkomunikasi untuk mencegat informasi. Lalu lintas melewati sistem Hacker, sehingga mereka dapat melihat dan mungkin mengubah komunikasi. Salah satu cara untuk mencapai perutean ini adalah dengan mengaktifkan penerusan paket.

Jika Anda menggulir ke bawah beberapa halaman di output atau filter untuk “ipv4”

(sysctl -a | less | grep ipv4 ), Anda akan melihat hal berikut:

net.ipv4.ip_dynaddr = 0 net.ipv4.ip_early_demux = 0

net.ipv4.ip_forward = 0 net.ipv4.ip_forward_use_pmtu = 0 --sniP--

The line net.ipv4.ip_forward =

0 adalah parameter kernel yang memungkinkan kernel meneruskan paket yang diterimanya.

Dengan kata lain, paket yang diterimanya, dikirim kembali. Setelan defaultnya adalah 0, yang berarti bahwa penerusan paket dinonaktifkan.

Untuk mengaktifkan penerusan IP, ubah 0 menjadi 1 dengan memasukkan yang berikut ini:

kali >sysctl -w net.ipv4.ip_forward=1

Ingatlah bahwa perubahan sysctl terjadi pada waktu proses tetapi hilang saat sistem di-boot ulang. Untuk membuat perubahan permanen pada sysctl, Anda perlu mengedit file konfigurasi /etc/sysctl.conf. Mari ubah cara kernel menangani penerusan IP untuk serangan MITM dan membuat perubahan ini permanen.

Untuk mengaktifkan penerusan IP, buka file /etc/sysctl.conf di editor teks mana pun dan batalkan komentar pada baris untuk ip_forward.

Buka /etc/sycstl.conf dengan editor teks apa saja dan lihatlah:

#/etc/sysctl.conf - Configuration file for setting system variables

# See /etc/sysctl.d/ for additional system variables.

# See sysctl.conf (5) for information.

#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console.

#kernel.printk = 3 4 1 3

##############################################################3

# Functions previously found in netbase

#

# Uncomment the next two lines to enable Spoof protection (reverse-path

# Turn on Source Address Verification in all interfaces to

# prevent some spoofing attacks.

# net.ipv4.conf.default.rp_filter=1

# net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies

#

# Note: This may impact IPv6 TCP sessions too

#net.ipv4.tcp_syncookies=1

See http://lwn.net/Articles/277146/

# Batalkan komentar pada baris berikutnya untuk mengaktifkan penerusan paket untuk IPv4

➊ #net.ipv4.ip_forward=1

Baris yang relevan ada di ➊ ; cukup hapus komentar (#) di sini untuk mengaktifkan penerusan IP.

Dari perspektif pengerasan sistem operasi, Anda dapat menggunakan file ini untuk menonaktifkan permintaan gema ICMP dengan menambahkan baris net.ipv4.icmp_echo_ignore_all=1 untuk membuatnya lebih sulit—tetapi bukannya tidak mungkin—bagi Hacker untuk menemukan sistem Anda. Setelah menambahkan baris, Anda harus menjalankan command sysctl -p .

15.4 MENGELOLA MODUL KERNEL

Linux memiliki setidaknya dua cara untuk mengelola modul kernel. Cara lama adalah menggunakan sekelompok perintah yang dibuat di sekitar suite insmod—insmod adalah singkatan dari insert module dan dimaksudkan untuk menangani modul. Cara kedua, menggunakan perintah modprobe, kita akan menerapkannya nanti di bab ini. Di sini, kami menggunakan perintah lsmod dari suite insmod untuk membuat daftar modul yang diinstal di kernel:

kali >lsmod

Module Size Used by nfnetlink_queue 20480 0 nfnetlink_log 201480 0

nfnetlink 16384 2 nfnetlink_log, nfnetlink_queue bluetooth 516096 0

rfkill 0 2 bluetooth --snip--

Seperti yang Anda lihat, perintah lsmod mencantumkan semua modul kernel serta informasi tentang ukurannya dan modul lain yang mungkin menggunakannya. Jadi, misalnya, modul nfnetlink—protokol berbasis pesan untuk berkomunikasi antara kernel dan ruang

pengguna—berukuran 16.384 byte dan digunakan oleh modul nfnetlink_log dan modul nf_netlink_queue.

Dari insmod suite, kita dapat memuat atau menyisipkan modul dengan insmod dan menghapus modul dengan rmmod, yang merupakan singkatan dari remove module.

Perintah-perintah ini tidak sempurna dan mungkin tidak memperhitungkan dependensi modul, sehingga menggunakannya dapat membuat kernel Anda tidak stabil atau tidak dapat digunakan. Akibatnya, distribusi modern dari Linux kini telah menambahkan perintah modprobe, yang secara otomatis memuat dependensi dan membuat pemuatan dan penghapusan modul kernel menjadi tidak terlalu berisiko. Kami akan membahas modprobe sebentar lagi. Pertama, mari lihat cara mendapatkan informasi selengkapnya tentang modul kami.

Menemukan Informasi Lebih Lanjut dengan modinfo

Untuk mempelajari lebih lanjut tentang salah satu modul kernel, kita dapat menggunakan perintah modinfo. Sintaks untuk perintah ini sangat sederhana: modinfo diikuti dengan nama modul yang ingin Anda pelajari. Misalnya, jika Anda ingin mengambil informasi dasar tentang modul kernel bluetooth yang Anda lihat saat menjalankan perintah lsmod sebelumnya, Anda dapat memasukkan perintah berikut:

kali >modinfo bluetooth

filename: /lib/modules/4.6.0-kali-amd64/kernel/net/bluetooth/bluetooth.ko alias: net-pf-31

license: GPL version: 2.21

description:Bluetooth Core ver 2.21

author: Marcel Holtman <marcel@holtmann.org>

srcversion: FCFDE98577FEA911A3DAFA9 depends: rfkill, crc16

intree: Y

vermagic: 4.6.0-kali1-amd64 SMP mod_unload modversions parm: disable_esco: Disable eSCO connection creation (bool) parm: disable_ertm: Disable enhanced retransmission mode (bool)

Seperti yang Anda lihat, perintah modinfo mengungkapkan informasi penting tentang modul kernel ini yang diperlukan untuk menggunakan Bluetooth di sistem Anda. Perhatikan bahwa di antara banyak hal lainnya, ini mencantumkan dependensi modul: rfkill dan crc16.

Dependensi adalah modul yang harus diinstal agar modul bluetooth berfungsi dengan benar.

Biasanya, ini adalah informasi yang berguna saat memecahkan masalah mengapa perangkat keras tertentu tidak berfungsi. Selain mencatat hal-hal seperti dependensi, Anda juga bisa mendapatkan informasi tentang versi modul dan versi kernel yang dikembangkan untuk modul tersebut dan kemudian memastikan mereka cocok dengan versi yang Anda jalankan.

Menambah dan Menghapus Modul dengan modprobe

Sebagian besar distribusi Linux yang lebih baru, termasuk Kali Linux, menyertakan perintah modprobe untuk manajemen LKM. Untuk menambahkan modul ke kernel Anda, Anda akan menggunakan perintah modprobe dengan saklar -a (add), seperti:

kali >modprobe -a <module name

Untuk menghapus modul, gunakan sakelar -r (hapus) dengan modprobe diikuti dengan nama modul:

kali >modprobe -r <module to be removed >

Keuntungan utama menggunakan modprobe daripada insmod adalah modprobe memahami dependensi, opsi, dan prosedur penginstalan dan penghapusan serta mempertimbangkan semua ini sebelum melakukan perubahan. Dengan demikian, lebih mudah dan lebih aman untuk menambahkan dan menghapus modul kernel dengan modprobe.

Inserting dan Deleting Modul Kernel

Mari kita coba menyisipkan dan menghapus modul pengujian untuk membantu Anda membiasakan diri dengan proses ini. Bayangkan Anda baru saja memasang kartu video baru dan Anda perlu memasang driver untuk kartu video tersebut. Ingat, driver untuk perangkat biasanya dipasang langsung ke dalam kernel untuk memberi mereka akses yang diperlukan agar berfungsi dengan benar. Hal ini juga membuat driver menjadi lahan subur bagi Hacker jahat untuk memasang rootkit atau perangkat pendengar lainnya.

Mari kita asumsikan untuk tujuan demonstrasi (tidak benar-benar menjalankan perintah ini) bahwa kita ingin menambahkan driver video baru bernama HackersBangkitNewVideo. Anda dapat menambahkannya ke kernel Anda dengan memasukkan yang berikut:

kali >modprobe -a HackersBangkitNewVideo

Untuk menguji apakah modul baru dimuat dengan benar, Anda dapat menjalankan perintah dmesg yang mencetak buffer pesan dari kernel, lalu memfilter untuk "video" dan mencari peringatan apa pun yang akan menunjukkan masalah.

kali >dmesg | grep video

Jika ada pesan kernel dengan kata "video" di dalamnya, pesan tersebut akan ditampilkan di sini. Jika tidak ada yang muncul, berarti tidak ada pesan yang berisi kata kunci tersebut.

Kemudian, untuk menghapus modul yang sama ini, Anda dapat memasukkan perintah yang sama tetapi dengan tombol -r (hapus):

kali >modprobe -r HackersBangkitNewVideo

Ingat, modul kernel yang dapat dimuat adalah kemudahan bagi pengguna/admin Linux, tetapi juga merupakan kelemahan keamanan utama dan yang harus diketahui oleh Hacker profesional. Seperti yang saya katakan sebelumnya, LKM dapat menjadi kendaraan yang sempurna untuk memasukkan rootkit Anda ke dalam kernel dan mendatangkan malapetaka!

15.5 RINGKASAN

Kernel sangat penting untuk keseluruhan operasi sistem operasi, dan dengan demikian, ini adalah kawasan yang dilindungi. Apa pun yang secara tidak sengaja ditambahkan ke kernel dapat mengganggu sistem operasi dan bahkan mengendalikannya.

LKM memungkinkan administrator sistem untuk menambahkan modul langsung ke dalam kernel tanpa harus membangun kembali seluruh kernel setiap kali mereka ingin menambahkan modul.

Jika seorang Hacker dapat meyakinkan admin sistem untuk menambahkan LKM yang berbahaya, Hacker dapat mengambil kendali penuh atas sistem, sering kali tanpa diketahui oleh admin sistem.

15.6 LATIHAN

Sebelum Anda melanjutkan ke Bab 16, cobalah keterampilan yang Anda pelajari dari bab ini dengan menyelesaikan latihan berikut:

1. Cek versi kernel Anda.

2. Daftar modul pada kernel Anda.

3. Setting enable pada forward IP dengan perintah sysctl.

4. Edit file /etc/sysct.conf Anda untuk mengaktifkan (enable) forwarding IP. Sekarang, nonaktifkan (disable) forward IP.

5. Piilih satu kernel modul dan pelajari lebih lanjut tentang penggunaan modinfo.

Dalam dokumen Dr. Joseph Teguh Santoso, S.Kom, M.Kom (Halaman 155-162)