Rabu, 05 Juli 2023
hacking 2
Juli 05, 2023
hacking 2
artinya hanya yang disimpan di repositori (lihat Daftar 4.6). Upgrade dapat memakan waktu,
jadi Anda mungkin tidak dapat menggunakan sistem Anda untuk sementara waktu.
kali >apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
The following packages were automatically installed and no longer required:
--snip --
The following packages will be upgraded:
--snip --
1101 upgraded, 0 newly installed, 0 to remove and 318 not upgraded.
Need to get 827 MB of archives.
After this operation, 408 MB disk space will be freed.
Do you want to continue? [Y/n]
Daftar 4.6 Mengupgrade semua paket kedaluwarsa dengan apt-get upgrade
Anda harus melihat dalam keluaran bahwa sistem Anda memperkirakan jumlah
ruang hard drive yang diperlukan untuk paket software. Lanjutkan dan masukkan Y jika Anda
ingin melanjutkan dan memiliki cukup ruang hard drive untuk upgrade.
4.2 MENAMBAHKAN REPOSITORI KE FILE SOURCES.LIST ANDA
Server yang menyimpan software untuk distribusi Linux tertentu dikenal sebagai
repositori. Hampir setiap distribusi memiliki repositori softwarenya sendiri—dikembangkan
dan dikonfigurasi untuk distribusi tersebut—yang mungkin tidak berfungsi dengan baik, atau
sama sekali tidak, dengan distribusi lain. Meskipun repositori ini sering kali berisi software
yang sama atau serupa, mereka tidak identik, dan terkadang memiliki versi yang berbeda
dari software yang sama atau software yang sama sekali berbeda.
Anda tentu saja akan menggunakan repositori Kali yang memiliki software keamanan
dan peretasan dalam jumlah besar. Namun karena Kali mengkhususkan diri dalam keamanan
dan peretasan, Kali tidak menyertakan beberapa software dan alat khusus dan bahkan
beberapa software standar. Sebaiknya tambahkan satu atau dua repositori cadangan yang
dapat ditelusuri oleh sistem Anda jika tidak menemukan software tertentu di repositori Kali.
Repositori yang akan ditelusuri sistem Anda untuk software disimpan di file
sources.list, dan Anda dapat mengubah file ini untuk menentukan dari repositori mana Anda
ingin mengunduh software. Saya sering menambahkan repositori Ubuntu setelah repositori
Kali di file sources.list saya; dengan begitu, ketika saya meminta untuk mengunduh paket
software baru, sistem saya pertama-tama akan melihat ke dalam repositori Kali di sana, dan
jika tidak ada software itu akan terlihat di repositori Ubuntu.
Anda dapat menemukan file sources.list di /etc/apt/sources.list dan membukanya de
ngan editor teks apa pun. Saya akan lagi menggunakan Leafpad. Untuk membuka file
sources.list, masukkan kode berikut ke terminal Anda, ganti leafpad dengan nama editor
Anda:
kali >leafpad /etc/apt/sources.list
Setelah memasukkan perintah ini, Anda akan melihat jendela seperti pada Gambar 41,
dengan daftar repositori default Kali.
Gambar 4.1 Repositori default Kali di sources.list
Banyak distribusi Linux membagi repositori ke dalam kategori terpisah. Misalnya,
Ubuntu membagi kategori repositorinya sebagai berikut:
main Berisi software open source yang didukung
universe Berisi software open source yang dikelola komunitas
multiverse Berisi software yang dibatasi oleh hak cipta atau masalah hukum lainnya
restriscted Berisi driver perangkat berpemilik
backports Berisi paket dari rilis kemudian
Saya tidak merekomendasikan menggunakan repositori testing, eksperimental, atau
tidak stabil di sources.list Anda karena mereka dapat mengunduh software bermasalah ke
sistem Anda. Software yang tidak diuji sepenuhnya dapat merusak sistem Anda.
Saat Anda meminta untuk mengunduh paket software baru, sistem akan melihat
secara berurutan melalui repositori Anda yang tercantum di sources.list dan berhenti ketika
menemukan paket yang diinginkan. Periksa terlebih dahulu apakah repositori tersebut
kompatibel dengan sistem Anda. Kali, seperti Ubuntu, dibangun di atas Debian, jadi
repositori ini bekerja cukup baik dengan masing-masing sistem ini.
Untuk menambahkan repositori, cukup edit file sources.list dengan menambahkan
nama repositori ke daftar, lalu simpan file tersebut. Misalnya, Anda ingin menginstal Oracle
Java 8 di Kali. Tidak ada paket yang tepat untuk Oracle Java 8 yang tersedia sebagai bagian
dari sumber Kali default, tetapi penelusuran cepat online menunjukkan bahwa orang-orang
baik di WebUpd8 telah membuatnya. Jika Anda menambahkan repositori mereka ke sumber,
Anda kemudian dapat menginstal Oracle Java 8 dengan perintah apt-get install oracle-java8-
installer. Pada saat penulisan, Anda perlu menambahkan lokasi repositori berikut ke
sources.list untuk menambahkan repositori yang diperlukan:
deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
4.3 MENGGUNAKAN INSTALLER BERBASIS GUI
Versi Kali yang lebih baru tidak lagi menyertakan alat penginstalan software berbasis
GUI, tetapi Anda selalu dapat menginstalnya dengan perintah apt-get. Dua alat penginstalan
berbasis GUI yang paling umum adalah Synaptic dan Gdebi. Mari instal Synaptic dan gunakan
untuk menginstal paket Snort kami:
kali >apt-get install synaptic
Reading package lists... Done
Building dependency tree
Reading state information... Done
--snip --
Processing triggers for menu (2.1.47)...
kali >
Setelah menginstal Synaptic, Anda dapat memulainya dari Settings ▸ Synaptic Package
Manager, yang akan membuka jendela seperti di Gambar 4.2.
Gambar 4.2 Mengunduh Snort dari Pengelola Paket Synaptic
4.4 MENGINSTAL SOFTWARE DENGAN GIT
Terkadang software yang Anda inginkan tidak tersedia di repositori mana pun,
terutama jika masih baru, tetapi mungkin tersedia di github (https://www.github.com/),
situs yang memungkinkan pengembang berbagi software mereka dengan orang lain untuk
mendownload, menggunakan, dan memberikan masukan. Misalnya, jika Anda ingin
melakukan bluediving, rangkaian peretasan dan pentesting Bluetooth, dan tidak dapat
menemukannya di repositori Kali, Anda dapat menelusuri github untuk software dengan
memasukkan bluediving ke dalam bilah penelusuran. Jika ada di github, Anda harus melihat
repositorinya di hasil penelusuran.
Setelah Anda menemukan software di github, Anda dapat menginstalnya dari
terminal dengan memasukkan perintah git clone diikuti dengan URL github-nya. Misalnya,
bluediving terletak di https://www.github.com/balle/bluediving.git. Untuk mengkloningnya
ke dalam sistem Anda, masukkan perintah yang ditampilkan di Daftar 4.7.
kali >git clone https://www.github.com/balle/bluediving.git
Cloning into 'bluediving'...
remote: Counting objects: 131, Done.
remote: Total 131 (delta 0), reused 0 (delta 0), pack-reused 131
Receiving objects: 100% (131/131), 900.81 KiB | 646.00 KiB/s, Done.
Resolving deltas: 100% (9/9), Done.
Checking connectivity... Done.
Daftar 4.7 Kloning bluediving dengan git clone
Perintah git clone menyalin semua data dan file dari lokasi tersebut ke sistem Anda.
Anda dapat memeriksa untuk melihat apkah sudah terdownload atau belum menggunakan
perintah daftar panjang ls –l pada direktori target, seperti seperti:
kali >ls -l
Jika Anda telah berhasil mengkloning bluediving ke sistem Anda, Anda akan melihat output
berikut:
total 80
drwxr-xr-x 7 root root 4096 Jan 10 22:19 bluediving
drwxr-xr-x 2 root root 4096 Dec 5 11:17 Desktop
drwxr-xr-x 2 root root 4096 Dec 5 11:17 Documents
drwxr-xr-x 2 root root 4096 Dec 5 11:17 Downloads
drwxr-xr-x 2 root root 4096 Dec 5 11:17 Music
--snip --
Seperti yang Anda lihat, bluediving telah berhasil dikloning ke sistem, dan direktori baru
bernama bluediving telah dibuat untuk file-nya.
4.5 RINGKASAN
Dalam bab ini, Anda telah mempelajari beberapa dari banyak cara untuk mengunduh
dan menginstal software baru di sistem Linux Anda. Pengelola paket software (seperti apt),
penginstal berbasis GUI, dan git clone adalah metode yang paling umum dan penting untuk
diketahui oleh seorang Hacker yang bercita-cita tinggi. Anda akan segera menemukan diri
Anda menjadi akrab dengan masing-masing dari mereka.
BAB 5
MENGONTROL FILE DAN IZIN DIREKTORI
Tidak semua pengguna dari satu sistem operasi harus memiliki tingkat akses yang
sama ke file dan direktori. Seperti sistem operasi profesional atau tingkat perusahaan, Linux
memiliki metode untuk mengamankan akses file dan direktori. Sistem keamanan ini
memungkinkan administrator sistem — pengguna root — atau pemilik file untuk melindungi
file mereka dari akses atau gangguan yang tidak diinginkan dengan memberikan izin kepada
pengguna tertentu untuk membaca, menulis, atau mengeksekusi file. Untuk setiap file dan
direktori, kita dapat menentukan status izin untuk pemilik file, untuk grup pengguna tertentu,
dan untuk semua pengguna lainnya. Ini adalah kebutuhan dalam sistem operasi
multipengguna, tingkat perusahaan. Alternatifnya akan sangat kacau.
Dalam bab ini, saya akan menunjukkan kepada Anda cara memeriksa dan mengubah
izin pada file dan direktori untuk pengguna tertentu, cara mengatur izin file dan direktori
default, dan cara mengatur izin khusus. Terakhir, Anda akan melihat bagaimana pemahaman
Hacker tentang izin dapat membantu mereka mengeksploitasi sistem.
5.1 PERBEDAAN JENIS USER
Seperti yang Anda ketahui, di Linux, pengguna root sangat kuat. Pengguna root pada
dasarnya dapat melakukan apa saja pada sistem. Pengguna lain di sistem memiliki
kemampuan dan izin yang lebih terbatas dan hampir tidak pernah memiliki akses yang
dimiliki pengguna root.
Pengguna lain ini biasanya dikumpulkan ke dalam grup yang umumnya memiliki
fungsi yang sama. Dalam entitas komersial, kelompok-kelompok ini mungkin keuangan,
teknik, penjualan, dan sebagainya. Di lingkungan TI, grup ini mungkin termasuk pengembang,
administrator jaringan, dan administrator database. Idenya adalah untuk menempatkan
orang-orang dengan kebutuhan yang sama ke dalam grup yang diberikan izin yang relevan;
kemudian setiap anggota grup mewarisi izin grup. Ini terutama untuk kemudahan mengelola
izin dan, dengan demikian, keamanan. Pengguna root adalah bagian dari grup root secara
default. Setiap pengguna baru di sistem harus ditambahkan ke grup untuk mewarisi izin grup
itu.
5.2 MEMBERI IZIN
Setiap dan setiap file dan direktori harus memiliki tingkat izin tertentu untuk identitas
berbeda yang menggunakannya. Tiga tingkat izin tersebut adalah sebagai berikut:
R Izin untuk membaca. Ini memberi izin hanya untuk membuka dan melihat file.
W Izin untuk menulis. Ini memungkinkan pengguna untuk melihat dan mengedit file.
X Izin untuk mengeksekusi. Ini memungkinkan pengguna untuk menjalankan file (tetapi
tidak harus melihat atau mengeditnya).
Dengan cara ini, pengguna root dapat memberikan tingkat izin kepada pengguna
tergantung pada apa yang mereka butuhkan untuk file tersebut. Saat file dibuat, biasanya
pengguna yang membuatnya adalah pemilik file, dan grup pemiliknya adalah grup pengguna
saat ini. Pemilik file dapat memberikan berbagai hak akses ke file tersebut. Mari lihat cara
mengubah izin untuk meneruskan kepemilikan ke pengguna individu dan ke grup.
Memberikan Kepemilikan kepada Pengguna Perorangan
Untuk memindahkan kepemilikan file ke pengguna lain sehingga mereka memiliki
kemampuan untuk mengontrol izin, kami dapat menggunakan perintah chown (atau
mengubah pemilik):
Kali > chown ➊Bob ➋/tmp/bobsfile .
Di sini, kami memberikan perintah, nama pengguna yang kami berikan kepemilikannya, lalu
lokasi dan nama file yang relevan. Perintah ini memberikan akun pengguna untuk
Bob ➊ kepemilikan bobsfile ➋.
Memberikan Kepemilikan (Owner) ke Grup
Untuk mentransfer kepemilikan file dari satu grup ke grup lain, kita dapat
menggunakan perintah chgrp (atau mengubah grup). Hacker sering kali lebih cenderung
bekerja sendiri daripada dalam kelompok, tetapi tidak jarang terjadi beberapa Hacker atau
pentester bekerja bersama dalam suatu proyek, dan dalam hal ini, menggunakan kelompok
diperlukan. Misalnya, Anda mungkin memiliki sekelompok pentester dan sekelompok
anggota tim keamanan yang mengerjakan proyek yang sama. Pentester dalam contoh ini
adalah grup root, artinya mereka memiliki semua izin dan akses. Grup root memerlukan
akses ke hacking toolan, sedangkan petugas keamanan hanya memerlukan akses ke alat
pertahanan seperti sistem deteksi intrusi/intrusion detection system (IDS). Misalnya, grup
root mengunduh dan menginstal program bernama newIDS; grup root perlu mengubah
kepemilikan grup keamanan sehingga grup keamanan dapat menggunakannya sesuka hati.
Untuk melakukannya, grup root cukup memasukkan perintah berikut:
kali >chgrp ➊security ➋newIDS
Perintah ini melewati grup security ➊ kepemilikan newIDS ➋. Sekarang Anda perlu
mengetahui cara memeriksa apakah alokasi ini berhasil. Anda akan melakukannya dengan
memeriksa izin file.
5.3 MEMERIKSA IZIN
Bila Anda ingin mengetahui izin apa yang diberikan kepada pengguna apa untuk file
atau direktori, gunakan perintah ls dengan sakelar –l (panjang) untuk menampilkan isi
direktori dalam format daftar panjang ini. Di Daftar 5.1, saya menggunakan perintah ls –l
pada file/usr/share/hashcat (salah satu alat Hacker kata sandi favorit saya) untuk melihat
apa yang dapat kita pelajari tentang file di sana.
kali >ls –l /usr/share/hashcat
total 32952
➊ ➋ ➌ ➍ ➎ ➏ ➐
drwxr-xr-x 5 root root 4096 Dec 5 10:47 charsets
-rw-r--r-- 1 root root 33685504 June 28 2018 hashcat.hcs
tat
-rw-r--r-- 1 root root 33685504 June 28 2018 hashcat.hct
une drwxr -xr-x 2 root root 4096 Dec 5 10:47 masks
drwxr -xr-x 2 root root 4096 Dec 5 10:47 OpenCL
drwxr -xr-x 3 root root 4096 Dec 5 10:47 rules
Daftar 5.1 Memeriksa izin file dengan perintah daftar panjang
Di setiap baris, kami mendapatkan informasi tentang:
➊ Jenis file
➋ Izin pada file untuk pemilik, grup, dan pengguna masing-masing
➌ Jumlah tautan (Topik ini berada di luar cakupan buku) file
➍ Pemilik file
➎ Ukuran file dalam byte
➏ Saat file dibuat atau terakhir diubah
➐ Nama file
Untuk saat ini, mari kita fokus pada rangkaian huruf dan garis yang tampaknya tidak
dapat dipahami di tepi kiri setiap baris. Mereka memberi tahu kami apakah suatu item
adalah file atau direktori dan izin apa, jika ada, yang ada di dalamnya.
Karakter pertama memberi tahu Anda jenis file, di mana d adalah singkatan dari
direktori dan tanda hubung (–) menunjukkan file. Ini adalah dua jenis file yang paling umum.
Bagian berikutnya menentukan izin pada file. Ada tiga set yang terdiri dari tiga karakter, yang
terdiri dari beberapa kombinasi baca (r), tulis (w), dan jalankan (x), dalam urutan itu.
Kumpulan pertama mewakili izin pemilik; kedua, izin grup; dan terakhir, izin semua
pengguna lain.
Terlepas dari kumpulan tiga huruf yang Anda lihat, jika Anda melihat huruf pertama,
pengguna atau grup pengguna tersebut memiliki izin untuk membuka dan membaca file atau
direktori tersebut. W sebagai huruf tengah berarti mereka dapat menulis ke (memodifikasi)
file atau direktori, dan tanda x di akhir berarti mereka dapat mengeksekusi (atau
menjalankan) file atau direktori. Jika ada r, w, atau x yang diganti dengan tanda hubung (-),
maka izin masing-masing belum diberikan. Perhatikan bahwa pengguna hanya dapat
memiliki izin untuk mengeksekusi hanya biner atau skrip.
Mari gunakan output baris ketiga di Daftar 5.1 sebagai contoh:
-rw-r--r-- 1 root root 33685504 June 28 2018 hashcat.hcstat
File tersebut disebut, seperti yang kita ketahui dari ujung kanan baris, hashcat.hcstat.
Setelah innisial (yang menunjukkan itu adalah file), izin rw- memberi tahu kami bahwa
pemilik telah membaca dan menulis izin tetapi tidak menjalankan izin.
Kumpulan izin berikutnya (r--) mewakili izin grup dan menunjukkan bahwa grup
tersebut telah membaca izin tetapi tidak menulis atau menjalankan izin. Dan, akhirnya, kami
melihat bahwa pengguna lainnya juga hanya memiliki izin baca (r-).
Izin ini tidak disetel secara langsung. Sebagai pengguna root atau pemilik file, Anda
dapat mengubahnya. Selanjutnya, kami akan melakukannya hanya itu.
5.4 MENGUBAH IZIN
Kita dapat menggunakan perintah Linux chmod (atau mengubah mode) untuk
mengubah izin. Hanya pengguna root atau pemilik file yang dapat mengubah izin.
Di bagian ini, kami menggunakan chmod untuk mengubah izin pada hashcat.hcstat
menggunakan dua metode berbeda. Pertama, kami menggunakan representasi numerik dari
izin, dan kemudian kami menggunakan representasi simbolik.
Mengubah Izin dengan Notasi Desimal
Kita dapat menggunakan pintasan untuk merujuk ke izin dengan menggunakan satu
angka untuk mewakili satu set izin rwx. Seperti semua hal yang mendasari sistem operasi,
izin direpresentasikan dalam biner, jadi sakelar ON dan OFF masing-masing diwakili oleh 1
dan 0, masing-masing. Anda dapat menganggap izin rwx sebagai tiga sakelar ON/OFF, jadi
ketika semua izin diberikan, ini sama dengan 111 dalam biner.
Himpunan biner seperti ini kemudian dengan mudah direpresentasikan sebagai satu
digit dengan mengubahnya menjadi oktal, sistem angka delapan digit yang dimulai dengan 0
dan diakhiri dengan 7. Satu digit oktal mewakili satu set bilangan biner dengan satu digit.
Tabel 5.1 berisi semua kemungkinan kombinasi izin dan perwakilan oktal dan binernya.
Tabel 5.1 Representasi Oktal dan Biner dari Izin
Dengan menggunakan informasi ini, mari kita lihat beberapa contoh. Pertama, jika
kami hanya ingin menetapkan izin read only, kami dapat melihat Tabel 5.1 dan menemukan
nilai untuk membaca:
r w x
4 --
Selanjutnya, jika kita ingin menyetel izin ke wx, kita dapat menggunakan metodologi yang
sama dan mencari apa yang menyetel w dan apa yang menyetel x :
r w x
- 2 1
Perhatikan pada Tabel 5.1 bahwa representasi oktal untuk -wx adalah 3, yang tidak
secara kebetulan merupakan nilai yang sama yang kita peroleh saat kita menambahkan dua
nilai untuk menyetel w dan x satu per satu: 2 + 1 = 3.
Terakhir, saat ketiga izin aktif, tampilan seperti ini:
r w x
4 2 1
Dan 4 + 2 + 1 = 7. Di sini, kita melihat bahwa di Linux, ketika semua tombol izin aktif,
mereka ditunjukkan dengan ekuivalen oktal 7.
Jadi, jika kami ingin mewakili semua izin untuk pemilik, grup, dan semua pengguna,
kami dapat menulisnya sebagai berikut:
7 7 7
Sekarang, lihat Tabel 5.1, dari tabel tersebut kita dapat melihat bahwa pernyataan ini
memberi semua izin pemilik, semua izin grup, hanya izin baca dan semua orang (lainnya).
Sekarang kita dapat melihat apakah izin tersebut telah berubah dengan menjalankan ls -l
pada direktori dan melihat baris hashcat.hcstat. Arahkan ke direktori dan jalankan perintah
itu sekarang:
kali >ls –l
total 32952
drwxr-xr-x 5 root root 4096 Dec 5 10:47 charsets
➊ -rwxrwxr-- 1 root root 33685504 June 28 2018 hashcat.hcstat
-rw-r--r-- 1 root root 33685504 June 28 2018 hashcat.hctune
drwxr -xr-x 2 root root 4096 Dec 5 10:47 masks
drwxr -xr-x 2 root root 4096 Dec 5 10:47 OpenCL
drwxr -xr-x 3 root root 4096 Dec 5 10:47 rules
Anda harus melihat -rwxrwxr-- di sisi kiri baris hashcat.hcstat ➊. Ini mengonfirmasi bahwa
panggilan chmod berhasil mengubah izin pada file untuk memberi pemilik dan grup
kemampuan untuk mengeksekusi file.
Mengubah Izin dengan UGO Meskipun metode numerik mungkin merupakan metode
yang paling umum untuk mengubah izin di Linux, beberapa orang menganggap metode
simbolik chmod lebih intuitif—kedua metode bekerja sama dengan baik, jadi temukan yang
cocok untuk Anda. Metode simbolik sering disebut sebagai sintaks UGO, yang merupakan
singkatan dari pengguna (atau pemilik), grup, dan lainnya.
Sintaks UGO sangat sederhana. Masukkan perintah chmod, lalu pengguna yang
izinnya ingin Anda ubah, dengan memberikan u untuk user / pengguna, g untuk grup, atau o
untuk orang lain, diikuti oleh salah satu dari tiga operator:
- Menghapus izin
+ Menambahkan izin
= Menetapkan izin
Setelah operator, sertakan izin yang ingin Anda tambahkan atau hapus (rwx) dan, terakhir,
nama file untuk menerapkannya. Jadi, jika Anda ingin menghapus izin menulis dari pengguna
yang memiliki file hashcat.hcstat, Anda dapat memasukkan yang berikut ini:
kali >chmod u-w hashcat.hcstat
Perintah ini mengatakan untuk menghapus (-) izin tulis (w) dari hashchat.hashchat untuk
pengguna (u). Sekarang ketika Anda memeriksa izin dengan ls –l lagi, Anda akan melihat
bahwa file hashcat.hcstat tidak lagi memiliki izin tulis untuk pengguna:
kali >ls -l
total 32952
drwxr-xr-x 5 root root 4096 Dec 5 10:47 charsets
-r-xr-xr-- 1 root root 33685504 June 28 2018 hashcat.hcstat
-rw-r--r-- 1 root root 33685504 June 28 2018 hashcat.hctune
drwxr -xr-x 2 root root 4096 Dec 5 10:47 masks
drwxr -xr-x 2 root root 4096 Dec 5 10:47 OpenCL
drwxr -xr-x 3 root root 4096 Dec 5 10:47 rules
Anda juga dapat mengubah beberapa izin hanya dengan satu perintah. Jika Anda ingin
memberikan izin kepada pengguna dan pengguna lain (tidak termasuk grup), Anda dapat
memasukkan yang berikut ini:
chmod u+x, o+x hashcat.hcstat
Perintah ini memberi tahu Linux untuk menambahkan izin eksekusi untuk pengguna serta
izin eksekusi untuk orang lain untuk file hashcat.hcstat.
Memberikan Izin Root Execute pada Alat Baru
Sebagai Hacker, sering kali Anda akan perlu mengunduh hacking toolan baru, tetapi
Linux secara otomatis memberikan semua file dan direktori izin default masing-masing untuk
666 dan 777. Ini berarti bahwa, secara default, Anda tidak akan dapat mengeksekusi file
segera setelah mengunduhnya. Jika Anda mencoba, Anda biasanya akan mendapatkan pesan
yang mengatakan sesuatu seperti "Izin ditolak". Untuk kasus ini, Anda perlu memberi diri
Anda sendiri root dan menjalankan izin menggunakan chmod untuk mengeksekusi file.
Misalnya, misalkan kami mengunduh alat Hacker baru yang disebut newHackertool
dan menempatkannya ke dalam direktori pengguna root (/).
kali >ls -l
total 80
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Desktop
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Documents
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Downloads
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Music
-rw-r--r-- 1 root root 1072 Dec 5 11.17 newHackertool➊
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Pictures
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Public
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Templates
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Videos
Kita dapat melihat newHackertool di ➊, bersama dengan konten direktori root
lainnya. Kami dapat melihat bahwa alat Hacker baru kami tidak memiliki izin untuk
mengeksekusi siapa pun. Ini membuatnya tidak mungkin digunakan. Akan tampak aneh
bahwa secara default, Linux tidak akan membiarkan Anda mengeksekusi file yang Anda
unduh, tetapi secara keseluruhan setelan ini membuat sistem Anda lebih aman.
Kami dapat memberikan izin kepada diri kami sendiri untuk menjalankan
newHackertool dengan memasukkan yang berikut ini:
kali >chmod 766 newHackertool
Sekarang, ketika kami melakukan long listing di direktori, kami dapat melihat bahwa alat
Hacker baru kami memiliki izin untuk menjalankan untuk pemiliknya:
kali >chmod 766 newHackertool
kali >ls -l
total 80
--snip
-drwxr-xr-x 7 root root 4096 Dec 5 11.17 Music
-rwxrw-rw- 1 root root 1072 Dec 5 11.17 newHackertool
drwxr-xr-x 7 root root 4096 Dec 5 11.17 Pictures
--snip--
Seperti yang Anda pahami sekarang, ini memberi kami semua izin sebagai pemilik, termasuk
mengeksekusi, dan memberi grup dan semua orang hanya izin baca dan tulis (4 + 2 = 6).
5.5 MENYETEL IZIN DEFAULT DENGAN MASK
Seperti yang telah Anda lihat, Linux secara otomatis memberikan izin dasar—
biasanya 666 untuk file dan 777 untuk direktori. Anda dapat mengubah izin default yang
dialokasikan ke file dan direktori yang dibuat oleh setiap pengguna dengan metode umask.
Metode umask menunjukkan izin yang ingin Anda hapus dari izin dasar pada file atau
direktori untuk membuatnya lebih aman.
Umask adalah angka tiga digit desimal yang sesuai dengan tiga digit izin, tetapi
nomor umask dikurangi dari nomor izin untuk memberikan status izin baru. Ini berarti bahwa
ketika file atau direktori baru dibuat, izinnya disetel ke nilai default dikurangi nilai di umask,
seperti yang ditunjukkan pada Gambar 5.1.
Gambar 5.1 Bagaimana nilai umask dari 022 memengaruhi izin pada file dan direktori baru
Misalnya, jika umask disetel ke 022, file baru dengan izin default asli 666 sekarang
akan memiliki izin 644, artinya pemilik memiliki izin baca dan tulis, dan izin grup dan hanya
semua pengguna lainnya. Di Kali, seperti kebanyakan sistem Debian, umask sudah
dikonfigurasikan ke 022, artinya default Kali adalah 644 untuk file dan 755 untuk direktori.
Nilai umask tidak universal untuk semua pengguna di sistem. Setiap pengguna dapat
menetapkan nilai umask default pribadi untuk file dan direktori di file profil pribadi mereka.
Untuk melihat nilai saat ini saat masuk sebagai pengguna, cukup masukkan perintah umask
dan catat apa yang dikembalikan. Untuk mengubah nilai umask untuk pengguna, edit file
/home/username/.profile dan, misalnya, tambahkan umask 007 untuk menyetelnya sehingga
hanya pengguna dan anggota grup pengguna yang memiliki izin.
5.6 IZIN KHUSUS
Selain tiga izin tujuan umum, rwx, Linux memiliki tiga izin khusus yang sedikit lebih
rumit. Izin khusus ini adalah set ID pengguna (atau SUID), set ID grup (atau SGID), dan bit
lengket. Saya akan membahas masing-masing secara bergantian dalam tiga bagian
berikutnya.
Memberikan Izin Root Sementara dengan SUID
Seperti yang harus Anda ketahui sekarang, pengguna dapat mengeksekusi file hanya
jika mereka memiliki izin untuk mengeksekusi file tertentu. Jika pengguna hanya memiliki
izin membaca dan/atau menulis, mereka tidak dapat mengeksekusi. Ini mungkin tampak
mudah, tetapi ada pengecualian untuk aturan ini.
Anda mungkin pernah mengalami kasus di mana file memerlukan izin dari pengguna
root selama eksekusi untuk semua pengguna, bahkan mereka yang bukan root. Misalnya, file
yang memungkinkan pengguna untuk mengubah kata sandi mereka memerlukan akses ke
file /etc/shadow—file yang menyimpan kata sandi pengguna di Linux—yang memerlukan
hak istimewa pengguna root agar dapat dijalankan. Dalam kasus seperti itu, untuk
sementara Anda dapat memberikan hak istimewa kepada pemilik untuk mengeksekusi file
dengan menyetel bit SUID pada program.
Pada dasarnya, bit SUID mengatakan bahwa setiap pengguna dapat mengeksekusi
file dengan izin dari pemiliknya tetapi izin ini tidak melampaui penggunaan file itu. Menyetel
SUID pada file bukanlah sesuatu yang biasa dilakukan pengguna, tetapi jika Anda ingin
melakukannya, Anda akan menggunakan perintah chmod, seperti pada nama file chmod
4644
Memberikan Izin Grup Pengguna Root SGID
SGID juga memberi izin yang ditinggikan sementara, tetapi itu memberi izin grup
pemilik file, bukan pemilik file. Ini berarti bahwa, dengan set bit SGID, seseorang tanpa izin
mengeksekusi dapat mengeksekusi file jika pemiliknya termasuk dalam grup yang memiliki
izin untuk mengeksekusi file tersebut.
Bit SGID bekerja sedikit berbeda saat diterapkan ke direktori: saat bit disetel pada
direktori, kepemilikan file baru yang dibuat di direktori tersebut akan masuk ke grup
pembuat direktori, bukan grup pembuat file. Ini sangat berguna saat direktori dibagikan oleh
beberapa pengguna. Semua pengguna dalam grup tersebut dapat menjalankan file, bukan
hanya satu pengguna.
Bit SGID direpresentasikan sebagai 2 sebelum izin biasa, jadi file baru dengan izin
yang dihasilkan 644 akan direpresentasikan sebagai 2644 saat bit SGID disetel. Sekali lagi,
Anda akan menggunakan perintah chmod untuk ini—misalnya, chmod 2644 nama file .
Bit Sticky Outmode
Bit Sticky adalah bit izin yang dapat Anda setel pada direktori untuk memungkinkan
pengguna menghapus atau mengganti nama file di dalam direktori tersebut. Namun, bagian
yang sulit adalah legasi sistem Unix lama, dan sistem modern (seperti Linux)
mengabaikannya. Oleh karena itu, saya tidak akan membahasnya lebih lanjut di sini, tetapi
Anda harus terbiasa dengan istilah tersebut karena Anda mungkin mendengarnya di dunia
Linux.
Izin Khusus, Peningkatan Hak Istimewa, dan Hacker
Sebagai seorang Hacker, izin khusus ini dapat digunakan untuk mengeksploitasi
sistem Linux melalui peningkatan hak istimewa, di mana pengguna biasa mendapatkan hak
istimewa root atau sysadmin dan izin terkait. Dengan hak istimewa root, Anda dapat
melakukan apa saja di sistem.
Salah satu cara untuk melakukannya adalah dengan mengeksploitasi bit SUID.
Administrator sistem atau pengembang software mungkin menyetel bit SUID pada program
untuk mengizinkan program tersebut mengakses file dengan hak istimewa root. Misalnya,
skrip yang perlu mengubah sandi sering kali memiliki bit SUID yang disetel. Anda, Hacker,
dapat menggunakan izin tersebut untuk mendapatkan hak istimewa root sementara dan
melakukan sesuatu yang berbahaya, seperti mendapatkan akses ke sandi di /etc/shadow.
Mari cari file dengan bit SUID yang disetel di sistem Kali kami untuk mencobanya.
Kembali di Bab 1, saya memperkenalkan Anda ke perintah menemukan. Kami akan
menggunakan kekuatannya untuk menemukan file dengan set bit SUID.
Seperti yang Anda ingat, perintah find sangat kuat, tetapi sintaksnya sedikit lebih
rumit daripada beberapa perintah lokasi lainnya, seperti temukan dan yang mana. Luangkan
waktu sejenak untuk meninjau sintaks temukan di Bab 1, jika perlu.
Dalam hal ini, kami ingin menemukan file di mana saja di sistem file, untuk pengguna
root atau sysadmin lain dengan izin 4000. Untuk melakukannya, kami dapat menggunakan
perintah find berikut:
kali >find / -user root -perm -4000
Dengan perintah ini, kami meminta Kali untuk mulai melihat bagian atas sistem file dengan
sintaks /. Kemudian, akan terlihat di mana-mana di bawah/untuk file yang dimiliki oleh root,
ditentukan dengan user root, dan yang memiliki izin SUID yang ditetapkan (-perm -4000 ).
Saat kami menjalankan perintah ini, kami mendapatkan output yang ditampilkan di
Daftar 5.2.
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/pkexec
/usr/bin/sudo
/usr/bin/passwd
/usr/bin/kismet_capture
--snip--
Daftar 5.2 Menemukan file dengan set bit SUID
Outputnya menunjukkan banyak file yang memiliki bit SUID yang disetel. Mari
menavigasi ke direktori /usr/bin, tempat banyak berkas ini berada, lalu jalankan daftar
panjang di direktori tersebut dan gulir ke bawah ke file sudo, seperti yang ditunjukkan di
Daftar 5.3.
kali >cd /usr/bin
kali >ls -l
--snip--
-rwxr-xr-x 1 root root 176272 Jul 18 2018 stunnel4
-rwxr-xr-x 1 root root 26696 Mar 17 2018 sucrack
➊ -rwsr-xr-x 1 root root 140944 Jul 5 2018 sudo
--snip--
Daftar 5.3 Mengidentifikasi file dengan set bit SUID
Perhatikan bahwa pada ➊, set izin pertama—untuk pemilik—memiliki s sebagai
pengganti x. Ini adalah cara Linux menyatakan bahwa bit SUID telah disetel. Ini berarti
bahwa siapa pun yang menjalankan file sudo memiliki hak istimewa pengguna root, yang
dapat menjadi masalah keamanan bagi sysadmin dan potensi vektor serangan untuk Hacker.
Misalnya, beberapa aplikasi perlu mengakses file/etc/shadow agar berhasil menyelesaikan
tugasnya. Jika penyerang dapat mengendalikan aplikasi tersebut, mereka dapat
menggunakan akses aplikasi tersebut ke sandi di sistem Linux.
Linux memiliki sistem keamanan yang dikembangkan dengan baik yang melindungi
file dan direktori dari akses yang tidak sah. Hacker yang bercita-cita tinggi perlu memiliki
pemahaman dasar tentang sistem ini tidak hanya untuk melindungi file mereka tetapi juga
untuk menjalankan alat dan file baru. Dalam beberapa kasus, Hacker dapat mengeksploitasi
izin SUID dan SGID untuk meningkatkan hak istimewa dari pengguna biasa menjadi
pengguna root
5.7 RINGKASAN
Penggunaan izin oleh Linux untuk melindungi file dan direktori pengguna atau grup
dari pengguna lain dalam sistem dapat digunakan untuk tujuan ofensif dan defensif. Anda
sekarang harus tahu cara mengelola izin ini dan cara memanfaatkan titik lemah dalam sistem
keamanan ini, khususnya bit SUID dan SGID.
BAB 6
MANAJEMEN PROSES
Pada suatu waktu, sistem Linux memiliki ratusan, bahkan kadang-kadang ribuan
proses yang berjalan secara bersamaan. Sebuah proses hanyalah sebuah program yang
berjalan dan menggunakan sumber daya. Ini mencakup terminal, server web, setiap
command/ perintah yang berjalan, database, interface GUI, dan banyak lagi lainnya.
Administrator Linux yang baik—dan khususnya Hacker—harus memahami cara mengelola
proses mereka untuk mengoptimalkan sistem mereka. Misalnya, setelah seorang Hacker
mengambil kendali atas sistem target, mereka mungkin ingin menemukan dan
menghentikan proses tertentu, seperti aplikasi antivirus atau firewall. Untuk melakukannya,
Hacker harus terlebih dahulu mengetahui cara menemukan prosesnya. Hacker mungkin juga
ingin menetapkan skrip pemindaian agar berjalan secara berkala untuk menemukan sistem
yang rentan, jadi kami juga akan melihat cara menjadwalkan skrip tersebut.
Dalam bab ini, Anda akan belajar untuk mengelola proses tersebut. Pertama, Anda
akan belajar untuk melihat dan menemukan proses dan cara menemukan proses mana yang
menggunakan sumber daya paling banyak. Kemudian, Anda akan belajar mengelola proses
dengan menjalankannya di latar belakang, memprioritaskannya, dan membunuhnya jika
perlu (tidak ada darah yang terlibat). Terakhir, Anda akan belajar menjadwalkan proses agar
berjalan pada hari dan tanggal tertentu dan pada waktu tertentu.
6.1 MELIHAT PROSES
Dalam kebanyakan kasus, langkah pertama dalam mengelola proses adalah melihat
proses apa yang berjalan di sistem Anda. Alat utama untuk melihat proses—dan salah satu
teman terbaik administrator Linux adalah perintah ps. Jalankan di baris perintah Anda untuk
melihat proses apa yang aktif:
kali >ps
PID TTY TIME CMD
39659 pts/0 00:00:01 bash
39665 pts/0 00:00:00 ps
Kernel Linux, inti dalam dari sistem operasi yang mengontrol hampir semua hal, menetapkan
proses ID (PID) unik untuk setiap proses secara berurutan, saat proses dibuat. Saat bekerja
dengan proses-proses ini di Linux, Anda sering kali perlu menentukan PID-nya, jadi jauh lebih
penting untuk mencatat PID proses daripada nama prosesnya.
Sendirian, perintah ps tidak benar-benar memberi Anda banyak informasi.
Menjalankan perintah ps tanpa opsi apa pun mencantumkan proses yang dimulai (dikatakan
akan dipanggil) oleh pengguna yang saat ini masuk (dalam kasus kami, root) dan proses apa
yang berjalan di terminal itu. Di sini, ini hanya mengatakan bahwa shell bash terbuka dan
berjalan dan bahwa kami menjalankan perintah ps. Kami menginginkan dan membutuhkan
jauh lebih banyak informasi daripada itu, khususnya tentang proses yang dijalankan oleh
pengguna lain dan oleh sistem di latar belakang. Tanpa informasi ini, kami hanya tahu sedikit
tentang apa yang sebenarnya terjadi di sistem kami.
Menjalankan perintah ps dengan opsi aux akan menampilkan semua proses yang
berjalan di sistem untuk semua pengguna, seperti yang ditunjukkan di Daftar 61. Perhatikan
bahwa Anda tidak memberi awalan pada opsi ini dengan tanda hubung (-) dan semuanya dalam huruf kecil; karena Linux peka huruf besar-kecil, menggunakan opsi huruf besar akan
memberi Anda hasil yang sangat berbeda.
kali >ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Root 1 0.0 0.4 202540 6396 ? Ss Apr24 0:46 /sbin/init
Root 2 0.0 0.0 0 0 ? S Apr24 0: [kthreadd]
Root 3 0.0 0.0 0 0 ? S Apr24 0:26 [ksoftirqd/0]
--snip--
root 39706 0.0 0.2 36096 3204 pts/0 R+ 15:05 0:00 ps aux
Daftar 6.1 Menggunakan opsi aux untuk melihat proses untuk semua pengguna
Seperti yang Anda lihat, perintah ini sekarang mencantumkan begitu banyak proses,
kemungkinannya berjalan di bagian bawah layar Anda. Proses pertama adalah init,
tercantum di kolom akhir, dan proses terakhir adalah perintah yang kami jalankan untuk
ditampilkan, ps aux. Banyak detail (PID, %CPU, TIME, COMMAND, dan lainnya) mungkin
berbeda di sistem Anda tetapi harus memiliki format yang sama. Untuk tujuan kami, berikut
adalah kolom paling penting dalam keluaran ini:
USER Pengguna yang memanggil proses tersebut
PID ID proses
%CPU Persentase CPU yang digunakan oleh proses ini
%MEM Persentase memori yang digunakan oleh proses ini
COMMAND Nama perintah yang memulai proses
Secara umum, untuk melakukan tindakan apa pun pada suatu proses, kita harus
menentukan PID-nya. Mari lihat cara menggunakan pengidentifikasi ini untuk keuntungan
kita.
Pemfilteran berdasarkan Nama Proses
Saat kami menanyakan tentang atau melakukan tindakan pada proses, kami biasanya
tidak ingin semua proses ditampilkan di layar. Ini hanya masalah terlalu banyak informasi.
Paling sering, kami ingin menemukan informasi tentang satu proses. Untuk melakukannya,
kita dapat menggunakan grep perintah pemfilteran, yang telah saya perkenalkan di Bab 1.
Untuk menunjukkannya, kami akan menggunakan kerangka eksploitasi Metasploit,
kerangka eksploitasi yang paling banyak digunakan dan hampir semua teman baik Hacker.
Ini sudah terinstal di sistem Kali Anda, jadi mulai Metasploit dengan yang berikut:
kali >msfconsole
Setelah kerangka eksploitasi dimulai, mari kita lihat apakah kita dapat menemukannya dalam
daftar proses. Untuk melakukannya, gunakan perintah ps aux lalu pipekan (|) untuk
mengambil mencari string msfconsole, seperti dalam Daftar 6.2.
kali >ps aux | grep msfconsole
root 39756 0.0 0.0 4304 716 pts/2 Ss+ 15:13 0:00 sh -c service
postgresql start && msfdb init & msfconsole
root 39759 35.1 15.2 4304 227888 pts/2 Sl+ 15:13 1:36 ruby/usr/bin/msfconsole
root 39892 0.0 0.0 4304 940 pts/2 S+ 15:18 0:00 grep msfconsole
Daftar 6.2 Memfilter pencarian ps untuk menemukan proses tertentu
Dari keluaran yang difilter dalam daftar ini, Anda akan melihat semua proses yang
cocok dengan istilah msfconsole. Database PostgreSQL, yang merupakan database yang
digunakan Metasploit, ditampilkan terlebih dahulu, kemudian program msfconsole itu
sendiri dari /usr/bin/msfconsole. Terakhir, Anda akan melihat perintah grep yang Anda
gunakan untuk mencari msfconsole. Perhatikan bahwa output tidak menyertakan daftar
tajuk kolom dari ps. Karena kata kunci, msfconsole, tidak di tajuk, kata kunci tidak
ditampilkan. Meski begitu, hasilnya tetap ditampilkan dalam format yang sama.
Dari ini, Anda dapat mempelajari beberapa informasi penting. Jika, misalnya, Anda
perlu mengetahui berapa banyak sumber daya yang digunakan Metasploit, Anda dapat
melihat kolom ketiga (kolom CPU), untuk melihat bahwa itu menggunakan 35,1 persen dari
CPU Anda, dan lihat kolom keempat untuk melihat itu. persen dari memori sistem Anda.
Itu cukup sedikit.
Menemukan Proses Paling Serakah dengan top
Saat Anda memasukkan perintah ps, proses akan ditampilkan sesuai urutan
dimulainya, dan karena kernel memberikan PID sesuai urutan dimulainya, yang Anda lihat
adalah nomor PID proses yang diurutkan.
Dalam banyak kasus, kami ingin mengetahui proses mana yang menggunakan
sumber daya paling banyak. Di sinilah perintah top berguna karena menampilkan proses
yang diurutkan berdasarkan sumber daya yang digunakan, dimulai dengan yang terbesar.
Tidak seperti perintah ps, yang memberi kita gambaran singkat tentang proses, bagian atas
menyegarkan daftar secara dinamis—secara default, setiap 10 detik. Anda dapat menonton
dan memantau proses yang membutuhkan sumber daya tersebut, seperti ditunjukkan dalam
Daftar 6.3.
kali >top
top - 15:31:17 up 2 days, ^;50, 4 users, load average: 0.00, 0.04, 0.09
Tasks: 176 total, 1 running, 175 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 0.7 sy, ).) ni, 97.4 id, 0.0 wa, 0.0 hi 0.0 si 0.0
KiB Mem : 1491220 total, 64848 free, 488272 used, 938100 buff/cache
KiB Swap : 1046524 total, 1044356 free, 2168 used. 784476 avail MEM
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
39759 root 20 0 893180 247232 11488 S 0.7 16.6 1:47.88 ruby
39859 root 20 0 27308 16796 14272 S 0.3 1.2 1:47.88 postgres
39933 root 20 0 293936 61500 29108 S 0.7 4.1 1:47.88 Xorg
--snip--
Daftar 6.3 Menemukan proses paling rakus dengan top
Administrator sistem sering kali terus berjalan di terminal untuk memantau
penggunaan sumber daya proses. Sebagai seorang Hacker, Anda mungkin ingin melakukan
hal yang sama, terutama jika Anda memiliki banyak tugas yang berjalan di sistem Anda.
Saat Anda berjalan terbaik, tekan H atau ? key akan menampilkan daftar perintah interaktif,
dan menekan Q akan keluar dari top.
6.2 MENGELOLA PROSES
Hacker sering kali perlu melakukan multiproses, dan sistem operasi seperti Kali
sangat ideal untuk ini. Hacker mungkin menjalankan pemindai port saat menjalankan
pemindai kerentanan dan eksploitasi secara bersamaan.
Ini mengharuskan Hacker mengelola proses ini secara efisien untuk menggunakan
sumber daya sistem dan menyelesaikan tugas dengan sebaik-baiknya. Di bagian ini, saya
akan menunjukkan cara mengelola beberapa proses.
Mengubah Prioritas Proses dengan nice
Anda mungkin tidak sering mendengar kata nice digunakan dalam konteks Hacker,
tetapi di sini Anda akan mendengarnya. Perintah nice digunakan untuk memengaruhi
prioritas suatu proses ke kernel. Seperti yang Anda lihat saat kami menjalankan perintah ps,
banyak proses yang dijalankan pada sistem sekaligus, dan semuanya bersaing
memperebutkan sumber daya yang tersedia. Kernel akan memiliki keputusan akhir atas
prioritas suatu proses, tetapi Anda dapat menggunakan nice untuk menyarankan bahwa
suatu proses harus ditingkatkan dalam prioritas.
Gagasan di balik penggunaan istilah bagus adalah bahwa, ketika Anda
menggunakannya, Anda menentukan seberapa “baik” Anda bagi pengguna lain: jika proses
Anda menggunakan sebagian besar sumber daya sistem, Anda tidak terlalu baik.
Nilai untuk nice berkisar dari –20 hingga +19, dengan nol sebagai nilai default (lihat
Gambar 6.1). Nilai bagus yang tinggi diterjemahkan ke dalam prioritas rendah, dan nilai
bagus yang rendah diterjemahkan menjadi prioritas tinggi (bila Anda tidak terlalu baik
kepada pengguna dan proses lain). Saat sebuah proses dimulai, proses tersebut mewarisi
nilai bagus dari proses induknya. Pemilik proses dapat menurunkan prioritas proses tetapi
tidak dapat meningkatkan prioritasnya. Tentu saja, pengguna super atau pengguna root
dapat secara sewenang-wenang menyetel nilai bagus ke apa pun yang mereka inginkan.
Gambar 6.1 Nilai prioritas kebaikan
Saat memulai suatu proses, Anda dapat menyetel tingkat prioritas dengan perintah
Nice dan kemudian mengubah prioritas setelah proses mulai berjalan dengan perintah
renice. Sintaks untuk kedua perintah ini sedikit berbeda dan dapat membingungkan.
Perintah nice mengharuskan Anda menaikkan nilai Nice, sedangkan perintah renice
menginginkan nilai mutlak untuk kebaikan. Mari kita lihat contoh untuk menunjukkan hal ini.
Menyetel Prioritas Saat Memulai Proses
Untuk tujuan demonstrasi, mari kita asumsikan kita memiliki proses bernama
slowprocess yang terletak di/bin/slowprocess. Jika kami ingin mempercepat penyelesaiannya,
kami dapat memulai prosesnya dengan perintah Nice:
kali >nice -n -10 /bin/slowprocess
Perintah ini akan meningkatkan nilai bagus sebesar -10, meningkatkan prioritasnya,
dan mengalokasikan lebih banyak sumber daya. Di sisi lain, jika kita ingin bersikap baik
kepada sesama pengguna dan proses serta memberikan prioritas yang lebih rendah pada
proses, kita dapat meningkatkan nilai bagusnya secara positif sebesar 10
kali >nice -n 10 /bin/slowprocess
Cobalah ini pada proses yang sedang Anda jalankan lalu jalankan ps untuk melihat
perubahannya, jika sama sekali.
Mengubah Prioritas Proses yang Berjalan dengan renice
Perintah renice mengambil nilai absolut antara –20 dan 19 dan menetapkan prioritas
ke tingkat tertentu, daripada naik atau turun dari tingkat di mana ia dimulai. Selain itu,
renice memerlukan PID dari proses yang Anda targetkan daripada namanya. Jadi, jika
slowprocess menggunakan sumber daya dalam jumlah yang berlebihan pada sistem Anda
dan Anda ingin memberikannya prioritas yang lebih rendah atau prioritas yang lebih rendah
kepada kami lebih banyak sumber daya, Anda dapat mengurangi slowprocess (yang memiliki
PID 6996) dan memberikan nilai nice yang jauh lebih tinggi, seperti:
kali >renice 20 6996
Seperti halnya nice, hanya pengguna root yang dapat menurunkan suatu proses ke
nilai negatif untuk memberikan prioritas yang lebih tinggi, tetapi setiap pengguna dapat
menjadi nice dan mengurangi prioritas dengan renice.
Anda juga dapat menggunakan utilitas teratas untuk mengubah nilai nice. Saat
utilitas teratas sedang berjalan, cukup tekan tombol R lalu masukkan PID dan nilai nice.
Daftar 6.4 menunjukkan utilitas terbaik yang sedang berjalan. Saat saya menekan tombol R
dan menyediakan PID dan nilai bagus, saya mendapatkan output berikut:
Daftar 6.4 Mengubah nilai nice saat bagian top sedang digunakan
Saat saya menekan tombol R, saya diminta untuk PID ➊ dengan teks renice PID [nilai]
menjadi nilai. Outputnya kemudian harus berubah untuk mencerminkan prioritas baru.
Membunuh Proses
Terkadang, sebuah proses akan menghabiskan terlalu banyak system resources,
menunjukkan perilaku yang tidak biasa, atau, paling buruk, membeku. Sebuah proses yang
menunjukkan jenis perilaku ini sering disebut sebagai proses zombie. Bagi Anda, mungkin
gejala yang paling bermasalah adalah pemborosan sumber daya yang digunakan oleh
zombie yang dapat dialokasikan dengan lebih baik ke proses yang bermanfaat. Saat Anda
mengidentifikasi proses bermasalah, Anda mungkin ingin menghentikannya dengan perintah
kill. Ada banyak cara berbeda untuk mematikan program, dan masing-masing memiliki
nomor pembunuhannya sendiri.
Perintah kill memiliki 64 sinyal pembunuhan yang berbeda, dan masing-masing
melakukan sesuatu yang sedikit berbeda. Di sini, kami berfokus pada beberapa yang
mungkin sangat berguna bagi Anda. Sintaks untuk perintah kill adalah kill-signal PID, di mana
sakelar sinyal bersifat opsional. Jika Anda tidak menyediakan bendera sinyal, defaultnya ke
SIGTERM. Tabel 6.1 mencantumkan sinyal pembunuhan umum.
Dengan menggunakan perintah top, Anda dapat mengidentifikasi proses mana yang
menggunakan terlalu banyak sumber daya; seringkali proses tersebut akan sah, tetapi
mungkin ada proses berbahaya yang mengambil sumber daya yang ingin Anda bunuh. Jika
Anda hanya ingin memulai ulang proses dengan sinyal HUP, masukkan opsi -1 dengan kill ,
seperti:
kali >kill -1 6996
Dalam kasus proses zombie atau proses yang berbahaya, Anda mungkin ingin
mengirim sinyal kill -9, sinyal pembunuh absolut ke proses tersebut. Hal ini memastikan
bahwa proses dihentikan.
kali >kill -9 6996
Jika Anda tidak mengetahui PID suatu proses, Anda dapat menggunakan perintah
killall untuk mematikan proses tersebut. Perintah ini menggunakan nama proses, bukan PID,
sebagai argumen.
Misalnya, Anda dapat menghentikan zombie process hipotetis seperti ini:
kali >killall -9 zombieprocess
Terakhir, Anda juga dapat mengakhiri proses di perintah top. Cukup tekan tombol K
lalu masukkan PID dari proses yang melanggar.
Menjalankan Proses di Latar Belakang
Di Linux, apakah Anda bekerja dari baris perintah atau GUI, Anda bekerja di dalam
shell. Semua perintah yang dijalankan dijalankan dari dalam shell itu, meskipun dijalankan
dari antarmuka grafis. Saat Anda menjalankan suatu perintah, shell akan menunggu hingga
perintah selesai sebelum menawarkan prompt perintah lain. Terkadang, Anda mungkin ingin
suatu proses berjalan di latar belakang, daripada harus menunggu sampai selesai di terminal
tersebut. Misalnya, katakanlah kami ingin mengerjakan skrip di editor teks dan telah
memanggil editor teks kami (leafpad) dengan memasukkan yang berikut ini:
kali >leafpad newscript
Dalam hal ini, shell bash akan membuka editor teks leafpad untuk membuat skrip
baru. Saat kami bekerja di editor teks, terminal digunakan untuk menjalankan editor teks.
Jika kita kembali ke terminal, kita akan melihat bahwa itu menjalankan editor teks kita dan
bahwa kita tidak memiliki perintah baru untuk mengizinkan kita memasukkan lebih banyak
perintah.
Kita tentu saja dapat membuka terminal lain untuk menjalankan lebih banyak
perintah, tetapi opsi yang lebih baik untuk menghemat sumber daya dan menyaring real
estat adalah dengan memulai editor teks yang berjalan di latar belakang. Menjalankan
proses di latar belakang berarti proses akan terus berjalan tanpa memerlukan terminal.
Dengan cara ini, terminal dibebaskan untuk tugas lainnya. Untuk memulai editor teks di latar
belakang, cukup tambahkan ampersand (&) di akhir perintah seperti:
kali >leafpad newscript &
Sekarang, ketika editor teks terbuka, terminal mengembalikan prompt perintah baru
sehingga kita dapat memasukkan perintah lain di sistem kita sambil juga mengedit skrip baru
kita. Ini efektif untuk setiap proses yang mungkin berjalan dalam jangka waktu yang
signifikan saat Anda ingin menggunakan terminal. Sebagai Hacker, Anda akan menemukan
ini berguna untuk menjalankan beberapa terminal dengan banyak tugas, untuk menghemat
sumber daya dan ruang layar.
Memindahkan Proses ke Latar Depan
Jika Anda ingin memindahkan proses yang berjalan di latar belakang ke latar depan,
Anda dapat menggunakan perintah fg (latar depan). Perintah fg memerlukan PID dari proses
yang ingin Anda kembalikan ke latar depan, seperti yang ditunjukkan berikutnya.
kali >fg 1234
Jika Anda tidak mengetahui PID, Anda dapat menggunakan perintah ps untuk
menemukannya.
6.3 PENJADWALAN PROSES
Baik administrator sistem Linux maupun Hacker sering kali perlu menjadwalkan
proses agar berjalan pada waktu tertentu dalam sehari. Administrator sistem mungkin ingin
menjadwalkan pencadangan sistem untuk dijalankan setiap Sabtu malam pada pukul 02.00,
misalnya. Hacker mungkin ingin menetapkan skrip untuk dijalankan guna melakukan
pengintaian secara teratur, menemukan port atau kerentanan yang terbuka.
Di Linux, Anda dapat mencapai ini setidaknya dengan dua cara: dengan at dan crond
at command adalah daemon—proses latar belakang—berguna untuk menjadwalkan suatu
tugas agar dijalankan sekali di beberapa titik di masa mendatang. Crond lebih cocok untuk
penjadwalan tugas yang terjadi setiap hari, minggu, atau bulan, dan kami akan membahas ini
secara mendetail di Bab 16. Tabel 6.2 berisi format waktu at yang paling umum.
Tabel 6.2 Format Waktu Diterima oleh di Perintah
Kami menggunakan daemon at untuk menjadwalkan eksekusi suatu perintah atau
serangkaian perintah di masa mendatang. Sintaksnya hanyalah perintah yang diikuti dengan
waktu untuk menjalankan proses. Argumen waktu dapat diberikan dalam berbagai format.
Saat Anda masuk ke daemon at dengan waktu yang ditentukan, at masuk ke mode
interaktif dan Anda akan disambut dengan perintah at>. Di sinilah Anda memasukkan
perintah yang ingin Anda jalankan pada waktu yang ditentukan:
kali >at 7:20am
at >/root/myscanningscript
Cuplikan kode ini akan menjadwalkan skrip pemindaian saya untuk dijalankan hari ini pada
pukul 07:20.
6.4 RINGKASAN
Mengelola proses di Linux adalah keterampilan utama bagi setiap pengguna dan
Hacker Linux. Anda harus dapat melihat, menemukan, menghentikan, memprioritaskan, dan
menjadwalkan proses untuk mengelola instans Linux Anda secara optimal. Hacker sering kali
perlu menemukan proses pada target yang ingin mereka bunuh, seperti software antivirus
atau firewall. Mereka juga perlu mengelola beberapa proses dalam sebuah serangan dan
memprioritaskannya.
BAB 7
MENGELOLA VARIABEL LINGKUNGAN USER
Untuk mendapatkan hasil maksimal dari sistem peretasan Linux, Anda perlu
memahami variabel lingkungan dan mahir mengelolanya untuk kinerja, kenyamanan, dan
bahkan siluman yang optimal. Namun, di antara area yang dianggap bermasalah oleh
pendatang baru Linux, mengelola variabel lingkungan pengguna mungkin merupakan hal
yang paling sulit untuk dikuasai. Secara teknis, ada dua jenis variabel: shell dan environment.
Variabel lingkungan adalah variabel di seluruh sistem yang dibangun ke dalam sistem dan
antarmuka Anda yang mengontrol cara sistem Anda terlihat, bertindak, dan "terasa" kepada
pengguna, dan mereka diwarisi oleh shell atau proses anak mana pun. Variabel shell, di sisi
lain, biasanya tercantum dalam huruf kecil dan hanya valid di shell tempat mereka
ditempatkan. Untuk menghindari penjelasan yang berlebihan, saya hanya membahas
beberapa variabel yang paling dasar dan berguna dan keterampilan untuk lingkungan dan ini.
'jangan terlalu terlalu dalam perbedaan antara mereka.
Variabel hanya berupa string dalam pasangan nilai kunci. Umumnya, setiap pasangan
akan terlihat seperti KEY=value. Jika ada beberapa nilai, nilai tersebut akan terlihat seperti
KEY=value1:value2. Seperti kebanyakan hal di Linux, jika ada spasi di dalam nilai, nilai
tersebut harus diberi tanda kutip. Di Kali Linux, lingkungan Anda adalah bash shell Anda.
Setiap pengguna, termasuk root, memiliki serangkaian variabel lingkungan default yang
menentukan bagaimana tampilan, tindakan, dan perasaan sistem. Anda dapat mengubah
nilai untuk variabel-variabel ini untuk membuat sistem Anda bekerja lebih efisien,
menyesuaikan lingkungan kerja Anda untuk memenuhi kebutuhan pribadi Anda, dan
berpotensi menutupi trek Anda jika perlu.
7.1 MELIHAT DAN MENGUBAH VARIABEL LINGKUNGAN
Anda dapat melihat semua variabel lingkungan default dengan memasukkan env ke
terminal Anda dari direktori mana pun, seperti:
kali >env
XDG_VTNR=7
SSHAGENT_PID=922
XDG_SESSION_ID=2
XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/root
GLADE_PIXMAP_PATH=:echo TERM=xterm SHELL=/bin/bash
--snip--
USER=root
--snip—
PATH=/usr/local/sbin :usr/local/bin:/usr/sbin:/sbin/bin
--snip--
HOME=/root
--snip--
Variabel lingkungan selalu huruf besar, seperti pada HOME, PATH, SHELL, dan seterusnya. Ini
hanya variabel lingkungan default yang ada di sistem Anda. Seorang pengguna juga dapat
membuat variabel mereka sendiri, dan seperti yang akan Anda lihat, kami memerlukan
perintah yang berbeda untuk memasukkan variabel tersebut ke dalam output.Melihat Semua Variabel Lingkungan
Untuk melihat semua variabel lingkungan, termasuk variabel shell, variabel lokal, dan
fungsi shell seperti variabel yang ditentukan pengguna dan alias perintah, gunakan perintah
set. Perintah ini akan mencantumkan semua variabel lingkungan yang unik untuk sistem
Anda, yang dalam kebanyakan kasus akan memberi Anda keluaran selama Anda tidak dapat
melihat semuanya pada satu layar. Anda dapat meminta untuk melihat setiap variabel, baris
demi baris, dengan cara yang lebih mudah diakses menggunakan set dan menyalurkannya ke
perintah more, sebagai berikut:
kali >set | more
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdlist:complete_fullquote:expand_aliases:extglob.....
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
--snip--
Sekarang daftar variabel akan mengisi satu layar, baris demi baris, lalu berhenti. Saat Anda
menekan ENTER, terminal akan maju ke baris berikutnya, membawa Anda ke variabel
berikutnya, sehingga Anda dapat menggulir dengan menekan atau menahan ENTER. Seperti
yang mungkin Anda ingat dari Bab 2, setiap kali Anda menggunakan perintah more untuk
output, Anda dapat memasukkan q untuk keluar (atau keluar) dan kembali ke command
prompt.
Pemfilteran untuk Variabel Tertentu
Meskipun menggunakan set dengan more memberikan hasil yang lebih mudah
dikelola daripada melihat melalui potongan besar nama variabel yang Anda dapatkan
dengan set saja, itu masih bisa agak membosankan jika Anda mencari variabel tertentu.
Sebagai gantinya, Anda dapat menggunakan grep perintah pemfilteran untuk menemukan
variabel minat Anda.
Mari gunakan variabel HISTSIZE sebagai contoh. Variabel ini berisi jumlah maksimum
perintah yang akan disimpan oleh file riwayat perintah Anda. Perintah-perintah ini adalah
perintah yang pernah Anda ketikkan sebelumnya di command prompt di sesi ini dan dapat
dipanggil kembali dengan tombol atas dan bawah. Perhatikan bahwa HISTSIZE tidak
menyimpan perintah itu sendiri, hanya jumlah perintah yang dapat disimpan. Pipa output set
Anda dengan grep untuk menemukan variabel HISTSIZE, seperti:
kali >set | grep HISTSIZE HISTSIZE=1000
Seperti yang Anda lihat, perintah ini menemukan variabel HISTSIZE dan menampilkan
nilainya. Nilai default dari variabel ini mungkin disetel ke 1000 di sistem Anda. Hal ini
menunjukkan bahwa terminal akan menyimpan 1.000 perintah terakhir Anda secara default.
Mengubah Nilai Variabel untuk Sesi
Sekarang mari lihat cara mengubah nilai variabel. Seperti yang disebutkan, variabel
HISTSIZE berisi nilai jumlah perintah yang akan disimpan dalam file histori. Terkadang, Anda
tidak ingin sistem Anda menyimpan perintah sebelumnya—mungkin karena Anda tidak ingin
meninggalkan bukti aktivitas Anda di sistem Anda sendiri atau sistem target. Dalam hal ini,
Anda dapat menyetel variabel HISTSIZE ke 0 sehingga sistem tidak akan menyimpan perintah
Anda sebelumnya. Karena variabel ini memiliki nilai tunggal, untuk mengubahnya, Anda
menetapkannya nilai baru dengan cara yang biasa diperlihatkan di Daftar 7.1.
kali >HISTSIZE=0
Daftar 7.1 Mengubah nilai HISTSIZE
Sekarang, ketika Anda mencoba menggunakan tombol atas dan bawah untuk
memanggil perintah Anda, tidak ada yang terjadi karena sistem tidak lagi menyimpannya.
Ini diam-diam, meski bisa tidak nyaman.
Membuat Perubahan Nilai Variabel Permanen
Saat Anda mengubah variabel lingkungan, perubahan itu hanya terjadi di lingkungan
tertentu; dalam hal ini, lingkungan tersebut adalah sesi bash shell. Ini berarti bahwa saat
Anda menutup terminal, setiap perubahan yang Anda buat akan hilang dengan nilai yang
disetel kembali ke defaultnya. Jika Anda ingin membuat perubahan permanen, Anda harus
menggunakan perintah export. Perintah ini akan mengekspor nilai baru dari lingkungan Anda
saat ini (bash shell) ke seluruh sistem, membuatnya tersedia di setiap lingkungan sampai
Anda mengubah dan mengekspornya lagi.
Variabel adalah string, jadi jika Anda menjalankannya dengan hati-hati, bukanlah ide
yang buruk untuk menyimpan konten variabel ke file teks sebelum Anda memodifikasinya.
Misalnya, karena kita akan mengubah variabel PS1, yang mengontrol informasi yang Anda
tampilkan di prompt, pertama-tama jalankan perintah berikut untuk menyimpan nilai yang
ada ke file teks di direktori beranda pengguna saat ini:
kali >echo $HISTSIZE> ~/valueofHISTSIZE.txt
Dengan cara ini, Anda selalu dapat mengurungkan perubahan Anda. Jika Anda ingin lebih
berhati-hati dan membuat file teks dengan semua setelan saat ini, Anda dapat menyimpan
output dari perintah set ke file teks dengan perintah seperti ini:
kali >set> ~/valueofALLon01012017.txt
Setelah Anda mengubah sebuah variabel, seperti yang kami lakukan di Daftar 71, Anda dapat
membuat perubahan tersebut permanen dengan memasukkan ekspor, lalu nama variabel
yang Anda ubah, seperti yang ditunjukkan di sini:
kali >export HISTSIZE
Sekarang variabel HISTSIZE akan tetap disetel ke 0 saat Anda meninggalkan
lingkungan ini dan memasuki lingkungan lain. Jika Anda ingin menyetel ulang variabel
HISTSIZE ke 1.000, cukup masukkan ini:
kali >HISTSIZE=1000 kali >export HISTSIZE
Cuplikan kode ini akan menetapkan nilai variabel HISTSIZE Anda menjadi 1.000 dan
mengekspornya ke semua lingkungan Anda.
7.2 MENGUBAH PROMPT SHELL ANDA
Permintaan shell Anda, variabel lingkungan lain, memberi Anda informasi yang
berguna seperti pengguna yang Anda operasikan dan direktori tempat Anda bekerja saat ini.
Permintaan shell default di Kali menggunakan format berikut:
username@hostname:current_directory
Jika Anda bekerja sebagai pengguna root, ini diterjemahkan ke perintah default berikut:
root@kali:current_directory
Anda dapat mengubah nama di prompt shell default dengan menyetel nilai untuk variabel
PS1. Variabel PS1 memiliki serangkaian placeholder untuk informasi yang ingin Anda
tampilkan di prompt, termasuk yang berikut:
\u Nama pengguna saat ini
\h Nama host
\W Nama dasar dari direktori kerja saat ini
Ini sangat berguna jika Anda kebetulan memiliki shell di beberapa sistem atau login sebagai
beberapa akun. Dengan menyetel nilai \u dan \h berbeda untuk kerang atau akun yang
berbeda, Anda dapat mengetahui secara sekilas siapa Anda dan apa sistem Anda saat ini.
Mari bersenang-senang dan ubah prompt di terminal Anda. Misalnya, Anda dapat
memasukkan yang berikut:
kali >PS1="World's Best Hacker: #"
World's Best Hacker: #
Sekarang, setiap kali Anda menggunakan terminal ini, Anda akan diingatkan bahwa
Anda adalah “Hacker Terbaik Dunia”. Namun, setiap terminal berikutnya yang Anda buka
akan tetap memiliki prompt perintah default, karena variabel PS1 hanya menyimpan nilai
untuk sesi terminal Anda. Ingat, sampai Anda mengekspor variabel, itu hanya baik untuk sesi
tersebut. Jika Anda sangat menyukai prompt perintah baru ini dan ingin melihatnya di setiap
terminal, Anda perlu mengekspornya, seperti:
kali >export PS1
Ini akan membuat perubahan permanen di semua sesi.
Bagaimana jika sedikit lebih menyenangkan? Katakanlah Anda benar-benar ingin
terminal Anda terlihat seperti prompt cmd Windows. Dalam hal ini, Anda dapat mengubah
nama prompt menjadi C: dan mempertahankan \w agar prompt menampilkan direktori
Anda saat ini, seperti yang ditunjukkan di Daftar 7.2.
kali >export PS1='C:\w> ' C:/tmp>
Daftar 7.2 Mengubah prompt dan menampilkan direktori saat ini
Menampilkan prompt Anda direktori Anda saat ini pada umumnya dapat berguna,
terutama bagi pemula, jadi ini adalah sesuatu yang perlu dipertimbangkan saat Anda
mengubah variabel PS1 Anda.
7.3 MENGUBAH PATH ANDA
Salah satu variabel terpenting di lingkungan Anda adalah variabel PATH Anda, yang
mengontrol di mana pada sistem Anda, shell Anda akan mencari perintah yang Anda
masukkan, seperti cd, ls, dan echo. Sebagian besar perintah berada di subdirektori sbin atau
bin, seperti /usr/local/sbin atau usr/local/bin. Jika bash shell tidak menemukan perintah di
salah satu direktori di variabel PATH Anda, itu akan mengembalikan perintah kesalahan tidak
ditemukan, bahkan jika perintah itu ada di direktori yang tidak ada di PATH Anda.
Anda dapat mengetahui direktori mana yang disimpan dalam variabel PATH Anda
dengan menggunakan echo pada kontennya, seperti:
kali >echo $PATH
/usr/local/sbin:usr/local/bin:/usr/sbin:/sbin/bin
Ini adalah direktori tempat terminal Anda akan mencari perintah lainnya. Saat Anda
memasukkan ls, misalnya, sistem tahu untuk mencari di setiap direktori ini untuk mencari
perintah ls, dan ketika menemukan ls, sistem akan menjalankannya.
Setiap direktori dipisahkan dengan tanda titik dua (:), dan jangan lupa untuk
menambahkan simbol konten $ ke PATH
Menambahkan ke Variabel PATH
Anda mungkin dapat melihat mengapa penting untuk mengetahui apa yang ada
dalam variabel PATH Anda: jika Anda mengunduh dan memasang alat baru—misalnya alat
Hacker baru—ke dalam direktori /root/newhackingtool, Anda hanya dapat menggunakan
alat itu saat Anda berada di direktori tersebut karena direktori tersebut tidak berada dalam
variabel PATH. Setiap kali ingin menggunakan alat tersebut, Anda harus terlebih dahulu
open/root/newhackingtool, yang agak merepotkan jika Anda ingin sering menggunakan alat
tersebut.
Agar dapat menggunakan alat baru ini dari direktori mana pun, Anda perlu
menambahkan direktori yang menyimpan alat ini ke variabel PATH Anda. Untuk
menambahkan hacking toolan baru ke variabel PATH Anda, masukkan yang berikut ini:
kali >PATH=$PATH:/root/newhackingtool
Ini menetapkan variabel PATH asli plus direktori/root/newhackingtool ke variabel
PATH baru, sehingga variabel berisi semua yang dilakukan sebelumnya, plus direktori alat
baru. Jika Anda memeriksa kembali isi variabel PATH, Anda akan melihat bahwa direktori ini
telah ditambahkan ke akhir PATH, seperti yang ditunjukkan di sini:
kali >echo $PATH
/usr/local/sbin:usr/local/bin:/usr/sbin:/sbin/bin:/root/newhackingtool
Sekarang Anda dapat menjalankan aplikasi hacking toolan baru dari mana saja di
sistem Anda daripada harus menavigasi ke direktorinya. Bash shell akan terlihat di semua
direktori yang tercantum untuk alat baru Anda!
Cacatan
Menambahkan ke PATH dapat menjadi teknik yang berguna untuk direktori yang
sering Anda gunakan, tetapi berhati-hatilah untuk tidak menambahkan terlalu banyak
direktori ke variabel PATH Anda. Karena sistem harus menelusuri setiap dan setiap direktori
di PATH untuk menemukan perintah, menambahkan banyak direktori dapat memperlambat
terminal dan peretasan Anda.
Bagaimana Tidak Menambahkan ke Variabel PATH
Salah satu kesalahan yang biasa dilakukan oleh pengguna baru Linux adalah
menetapkan direktori baru, seperti /root/newhackingtool, langsung ke variabel PATH
dengan cara ini:
kali >PATH=/root/newhackingtool
kali >echo $PATH
/root/newhackingtool
Jika Anda menggunakan perintah ini, variabel PATH Anda hanya akan berisi
direktori/root/newhackingtool dan tidak lagi berisi direktori biner sistem seperti/bin,/sbin,
dan lainnya yang memegang perintah penting. Saat Anda kemudian pergi untuk
menggunakan salah satu perintah sistem, Anda akan menerima perintah kesalahan tidak
ditemukan, seperti yang ditunjukkan berikutnya, kecuali jika Anda pertama kali menavigasi
ke direktori biner sistem saat Anda menjalankan perintah:
kali >cd bash: cd: command not found
Ingatlah bahwa Anda ingin menambahkan ke variabel PATH, bukan menggantinya. Jika Anda
ragu, simpan konten variabel di suatu tempat sebelum Anda mengubahnya.
7.4 MENCIPTAKAN VARIABEL USER-DEFINE
Anda dapat membuat variabel kustom Anda sendiri yang ditentukan pengguna di
Linux dengan hanya menetapkan nilai ke variabel baru yang Anda beri nama. Ini mungkin
berguna saat Anda melakukan skrip shell yang lebih canggih atau mendapati Anda sering
menggunakan perintah panjang yang membuat Anda bosan mengetik berulang-ulang.
Sintaksnya sangat mudah: masukkan nama variabel Anda, diikuti dengan simbol
penetapan (=), lalu nilai yang akan dimasukkan ke dalam variabel, seperti yang ditunjukkan
di sini:
kali >MYNEWVARIABLE="Hacking is the most valuable skill set in the 21stcentury
Ini menetapkan string ke variabel MYNEWVARIABLE. Untuk melihat nilai dalam
variabel tersebut, gunakan perintah gema dan simbol konten $ dengan nama variabel
seperti yang kita lakukan sebelumnya:
kali >echo $MYNEWVARIABLE
Hacking is the most valuable skill set in the 21st century
Sama seperti variabel lingkungan sistem kami, variabel yang ditentukan pengguna harus
diekspor untuk bertahan ke sesi baru.
Jika Anda ingin menghapus variabel baru ini, atau variabel apa pun, gunakan perintah
yang tidak disetel. Namun, selalu pikirkan sebelum menghapus variabel sistem karena sistem
Anda mungkin akan beroperasi jauh berbeda sesudahnya.
kali >unset MYNEWVARIABLE
kali >echo $MYNEWVARIABLE
kali >
Seperti yang Anda lihat, saat Anda memasukkan MYNEWVARIABLE yang tidak disetel, Anda
menghapus variabel beserta nilainya. Jika Anda menggunakan gema pada variabel yang
sama, Linux sekarang akan menampilkan baris kosong.
7.5 RINGKASAN
Anda mungkin menemukan variabel lingkungan asing, tetapi bernilai untuk
mengetahuinya. Mereka mengontrol bagaimana lingkungan kerja Anda di Linux tampak,
bertindak, dan terasa. Anda dapat mengelola variabel-variabel ini untuk menyesuaikan
lingkungan Anda dengan kebutuhan Anda dengan mengubahnya, mengekspornya, dan
bahkan membuatnya sendiri. Dalam beberapa kasus, mereka mungkin berguna untuk
menutupi jejak Anda sebagai Hacker.
BAB 8
SKRIP BASH
Hacker yang menghargai diri sendiri harus mampu menulis skrip. Dalam hal ini,
administrator Linux yang menghargai diri sendiri harus dapat membuat skrip. Hacker sering
kali perlu mengotomatiskan perintah, terkadang dari beberapa alat, dan ini paling efisien
dilakukan melalui program singkat yang mereka tulis sendiri.
Dalam bab ini, kami membuat beberapa skrip bash shell sederhana untuk memulai.
Anda dengan scripting. Kami akan menambahkan kemampuan dan fitur seiring kemajuan,
yang pada akhirnya membuat skrip yang mampu menemukan potensi target serangan pada
berbagai alamat IP.
Untuk menjadi seorang Hacker elit, Anda juga memerlukan kemampuan untuk
membuat skrip di salah satu bahasa skrip yang banyak digunakan, seperti Ruby (eksploitasi
Metasploit ditulis di Ruby), Python (banyak hacking toolan adalah Perskrip, Python) bahasa
skrip manipulasi teks terbaik). Saya memberikan pengantar singkat tentang skrip Python di
Bab 17.
8.1 CRASH COURSE DI BASH
Shell adalah antarmuka antara pengguna dan sistem operasi yang memungkinkan
Anda untuk memanipulasi file dan menjalankan perintah, utilitas, program, dan banyak lagi.
Keuntungan dari shell adalah Anda melakukan tugas-tugas ini segera dari komputer dan
tidak melalui abstraksi seperti GUI yang memungkinkan Anda untuk menyesuaikan tugas
Anda dengan kebutuhan Anda. Sejumlah shell yang berbeda tersedia untuk Linux, termasuk
shell Korn, shell Z, shell C, dan shell Bourneagain, yang lebih dikenal sebagai bash.
Karena bash shell tersedia di hampir semua distribusi Linux dan UNIX (termasuk
macOS dan Kali), kami akan menggunakan shell bash secara eksklusif. Shell bash dapat
menjalankan perintah sistem, utilitas, atau aplikasi apa pun yang dapat dijalankan oleh baris
perintah biasa Anda, tetapi juga menyertakan beberapa perintah bawaannya sendiri. Tabel
81 nanti di bab ini memberi Anda referensi ke beberapa perintah berguna yang berada di
dalam shell bash.
Di bab sebelumnya, Anda menggunakan perintah cd , pwd , set, dan umask. Di bagian
ini, Anda akan menggunakan dua perintah lagi: perintah echo yang pertama kali digunakan
di Bab 7 yang menampilkan pesan ke layar dan perintah read yang membaca data dan
menyimpannya di tempat lain. Hanya dengan mempelajari kedua perintah ini saja, Anda
dapat membuat alat yang sederhana namun kuat.
Anda akan memerlukan editor teks untuk membuat skrip shell. Anda dapat
menggunakan editor teks Linux mana saja yang paling Anda sukai, termasuk vi, vim, emacs,
gedit, kate, dan sebagainya. Saya akan menggunakan Leafpad dalam tutorial ini, seperti yang
saya lakukan di bab sebelumnya. Menggunakan editor yang berbeda seharusnya tidak
membedakan skrip atau fungsionalitasnya.
8.2 SKRIP PERTAMA ANDA: “HALO, HACKERS-BANGKIT!”
Untuk skrip pertama Anda, kami akan memulai dengan program sederhana yang
mengembalikan pesan ke layar yang mengatakan "Halo, Hacker Bangkit!" Buka editor teks
Anda, dan ayo.
Untuk memulai, Anda perlu memberi tahu sistem operasi Anda juru bahasa mana
yang ingin Anda gunakan untuk skrip. Untuk melakukan ini, masukkan shebang, yang
merupakan kombinasi dari tanda pagar dan tanda seru, seperti:
#!
Anda kemudian mengikuti shebang (#!) dengan/bin/bash untuk menunjukkan bahwa Anda
ingin sistem operasi menggunakan penerjemah bash shell. Seperti yang akan Anda lihat di
bab-bab selanjutnya, Anda juga dapat menggunakan shebang untuk menggunakan juru
bahasa lain, seperti Perl atau Python. Di sini, Anda ingin menggunakan penerjemah bash, jadi
masukkan yang berikut:
#! /bin/bash
Selanjutnya, masukkan perintah echo, yang memberi tahu sistem untuk mengulangi (atau
menggema) kembali ke monitor Anda apa pun yang mengikuti perintah tersebut.
Dalam hal ini, kami ingin sistem bergema kembali kepada kami "Halo, HackerBangun!", seperti yang dilakukan di Daftar 8.1. Perhatikan bahwa teks atau pesan yang ingin
kita ulangi harus dalam tanda kutip ganda.
#! /bin/bash
# This is my first bash script. Wish me luck.
echo "Halo, Hackers-Bangkit!"
Daftar 8.1 Anda “Halo, Hacker-Bangkit!” naskah
Di sini, Anda juga melihat baris yang diawali dengan tanda hash (#). Ini adalah
komentar, yang merupakan catatan yang Anda tinggalkan untuk diri sendiri atau orang lain
yang membaca kode untuk menjelaskan apa yang Anda lakukan dalam skrip. Pemrogram
menggunakan komentar dalam setiap bahasa pengkodean. Komentar ini tidak dibaca atau
dilaksanakan oleh penerjemah, sehingga Anda tidak perlu khawatir akan mengacaukan kode
Anda. Mereka hanya terlihat oleh manusia. Shell bash tahu bahwa sebuah baris adalah
komentar jika dimulai dengan karakter #.
Sekarang, simpan file ini sebagai HelloHackerBangkit tanpa ekstensi dan keluar dari
editor teks Anda.
Menyetel Izin Eksekusi
Secara default, skrip bash yang baru dibuat tidak dapat dijalankan bahkan oleh Anda,
pemiliknya. Mari kita lihat izin pada file baru kita di baris perintah dengan menggunakan cd
untuk pindah ke direktori lalu memasukkan ls -l. Ini seharusnya terlihat seperti ini:
kali >ls -l
--snip --
-rw-r--r-- 1 root root 42 Oct 22 14:32 HelloHackersBangkit
--snip -
Seperti yang Anda lihat, file baru kami memiliki izin rw-r--r--(644). Seperti yang Anda
pelajari di Bab 5, ini berarti pemilik file ini hanya memiliki izin membaca (r) dan menulis (w),
tetapi tidak menjalankan (x) izin. Grup dan semua pengguna lainnya hanya memiliki izin baca.
Kami perlu memberi diri kami izin untuk menjalankan skrip ini. Kami mengubah izin dengan
perintah chmod, seperti yang Anda lihat di Bab 5. Untuk memberi pemilik, grup, dan semua
orang lain untuk menjalankan izin, masukkan yang berikut ini:
kali >chmod 755 HelloHackersBangkit
Sekarang saat kami melakukan daftar panjang pada file, seperti jadi, kami dapat melihat
bahwa kami memiliki izin eksekusi:
kali >ls -l
--snip--
-rwx r-x r-x 1 root root 42 Oct 22 14:32 HelloHackersBangkit
--snip--
Skrip sekarang siap dijalankan!
Menjalankan HelloHackersBangkit Untuk menjalankan skrip sederhana kami, masukkan kode
berikut:
kali >./HelloHackersBangkit
./ sebelum nama file memberi tahu sistem bahwa kami ingin menjalankan skrip ini di file
HelloHackersBangkit dari direktori saat ini. Ini juga memberi tahu sistem bahwa jika ada file
lain di direktori lain bernama HaloHackersBangkit, abaikan saja dan jalankan
HaloHackersBangkit hanya di direktori saat ini. Sepertinya tidak mungkin ada file lain dengan
nama ini di sistem Anda, tetapi praktik yang baik adalah menggunakan ./ saat menjalankan
file, karena ini melokalkan eksekusi file ke direktori saat ini dan banyak direktori yang akan
memiliki nama duplikat mempersiapkan.
Saat kami menekan ENTER, skrip kami yang sangat sederhana akan mengembalikan
pesan kami ke monitor:
Helo, Hacker Bangkit!
Dan sekarang sukses! Anda sudah menyelesaikan skrip shell pertama Anda!
Menambahkan Fungsi dengan Variabel dan User Input
Jadi, sekarang kita memiliki skrip sederhana. Semua yang dilakukannya hanyalah
menambahkan pesan echo kembali ke output standar. Jika kami ingin membuat skrip yang
lebih lanjutan, kami mungkin perlu menambahkan beberapa variabel.
Variabel adalah area penyimpanan yang dapat menyimpan sesuatu dalam memori.
“Sesuatu” itu mungkin beberapa huruf atau kata (string) atau angka. Ini dikenal sebagai
variabel karena nilai yang ada di dalamnya dapat diubah; ini adalah fitur yang sangat
berguna untuk menambahkan fungsionalitas ke skrip.
Dalam skrip berikutnya, kami akan menambahkan fungsionalitas untuk meminta
nama pengguna, menempatkan apa pun yang mereka masukkan ke dalam variabel, lalu
meminta pengguna untuk bab yang mereka gunakan dalam buku ini, dan memasukkan
variabel itu ke keyboard. Setelah itu, kami akan menggemakan pesan selamat datang yang
menyertakan nama mereka dan bab kembali ke pengguna.
Buka file baru di editor teks Anda dan masukkan skrip yang ditampilkan di Daftar 8.2.
➊ #! /bin/bash
➋ # Ini adalah skrip bash kedua Anda. Dalam hal ini, Anda meminta /
# pengguna untuk input, menempatkan input dalam variabel, dan /
# menampilkan konten variabel dalam string.
➌ echo "Siapakah Namamu?
➍ echo " Bab apa yang Anda ikuti di Dasar-dasar Linux untuk Hacker?"
read chapter
➎ echo "Selamat Datang" $name "di Bab" $chapter "Dasar Linux untuk Hacker!"
Kami membuka dengan #! /bin/bash untuk memberi tahu sistem bahwa kami ingin
menggunakan juru bahasa bash untuk skrip ini ➊. Kami kemudian menambahkan komentar
yang menjelaskan skrip dan fungsinya ➋. Setelah itu, kami meminta nama pengguna dan
meminta juru bahasa untuk membaca masukan dan menempatkannya ke dalam variabel
yang kami sebut nama ➌. Kemudian, kami meminta pengguna untuk memasuki bab yang
sedang mereka kerjakan di buku ini, dan kami kembali membaca input keyboard ke dalam
variabel, kali ini disebut bab ➍.
Di baris terakhir, kami membuat baris keluaran yang menyambut pembaca dengan
nama mereka ke bab mereka berada pada ➎. Kami menggunakan perintah gema dan
memberikan teks yang ingin kami tampilkan di layar dalam tanda kutip ganda. Kemudian,
untuk mengisi nama dan nomor bab yang dimasukkan pengguna, kami menambahkan
variabel yang seharusnya muncul di pesan. Seperti disebutkan dalam Bab 7, untuk
menggunakan nilai yang terkandung dalam variabel, Anda harus mendahului nama variabel
dengan simbol $.
Simpan file ini sebagai WelcomeScript.sh. Ekstensi .sh adalah konvensi untuk file
skrip. Anda mungkin telah memperhatikan bahwa kami tidak menyertakan ekstensi
sebelumnya; itu tidak benar-benar diperlukan, dan jika Anda membiarkan ekstensi tidak aktif,
file akan disimpan sebagai file skrip shell secara default.
Sekarang, mari jalankan skrip ini. Jangan lupa untuk memberi diri Anda izin
menjalankan dengan chmod terlebih dahulu; jika tidak, sistem operasi akan memarahi Anda
dengan pesan deny message.
kali >./WelcomeScript.sh
Sipa namamu?
OccupytheWeb
Bab apa yang Anda ikuti di Dasar-dasar Linux untuk Hacker?
8
Welcome OccupytheWeb untuk Bab 8 Dasar Linux untuk Hackers!
Seperti yang Anda lihat, skrip Anda mengambil input dari pengguna,
menempatkannya ke dalam variabel, dan kemudian menggunakan input tersebut untuk
memberi salam kepada pengguna.
Ini adalah skrip yang sederhana, tetapi ini mengajari Anda cara menggunakan
variabel dan mengambil input dari keyboard. Keduanya adalah konsep penting dalam
pembuatan skrip yang perlu Anda gunakan dalam skrip yang lebih kompleks di masa
mendatang.
8.3 SKRIP HACKER PERTAMA ANDA: PINDAI PORT TERBUKA
Sekarang setelah Anda memiliki beberapa keterampilan skrip dasar, mari beralih ke
skrip yang sedikit lebih canggih yang memiliki aplikasi dunia nyata untuk meretas. Kami akan
menggunakan contoh dari dunia peretasan topi hitam. Black Hat Hacker (Hacker topi hitsm)
adalah mereka yang memiliki niat jahat, seperti mencuri nomor kartu kredit atau merusak
situs web. White hat Hacker (Hacker topi pputih) adalah mereka yang memiliki niat baik,
seperti membantu pengembang software atau administrator sistem membuat sistem
mereka lebih aman. Hacker topi abu-abu adalah mereka yang cenderung bergerak di antara
dua ekstrem ini.
Sebelum melanjutkan, Anda perlu membiasakan diri dengan alat sederhana namun
penting bernama nmap yang diinstal di Kali secara default. Anda mungkin pernah
mendengar namanya; nmap digunakan untuk menyelidiki suatu sistem untuk melihat
apakah sistem itu terhubung ke jaringan dan mencari tahu port apa yang terbuka.
Dari port terbuka yang ditemukan, Anda dapat menduga layanan apa yang berjalan pada
sistem target. Ini adalah keterampilan yang sangat penting bagi Hacker atau administrator
sistem mana pun.
Dalam bentuk yang paling sederhana, sintaks untuk menjalankan pemindaian nmap
terlihat seperti ini:
nmap <type of scan><target IP><optionally, target port>
Tidak terlalu sulit. Pemindaian nmap yang paling sederhana dan paling andal adalah
pemindaian koneksi TCP, yang ditandai dengan sakelar -sT di nmap. Jadi, jika Anda ingin
memindai alamat IP 192.168.181.1 dengan pemindaian TCP, Anda harus memasukkan kode
berikut:
nmap -sT 192.168.181.1
Untuk melangkah lebih jauh, jika Anda ingin melakukan pemindaian TCP alamat
192.168.181.1, mencari untuk melihat apakah port 3306 (port default untuk MySQL) terbuka,
Anda dapat memasukkan ini:
nmap -sT 192.168.181.1 -p 3306
Di sini, -p menunjukkan port yang ingin Anda pindai. Silakan dan coba itu sekarang di
sistem Kali Anda.
➊ #! /bin/bash
➋ # This script is designed to find hosts with MySQL installed
nmap ➌-sT 192.168.181.0/24 ➍-p 3306 ➎>/dev/null ➏-oG MySQLscan
➐ cat MySQLscan | grep open > MySQLscan2 ➑
cat MySQLscan2
Daftar 8.3 Skrip pemindai yang disederhanakan
Kita mulai dengan shebang dan juru bahasa untuk menggunakan. Mari ikuti ini
dengan komentar untuk menjelaskan apa yang dilakukan skrip .
Tugas Kami Pada saat artikel ini dibuat, ada masa hukuman bagi Hacker di penjara
federal AS dengan nama Max Butler, juga dikenal sebagai Max Vision di seluruh dunia Hacker.
Max adalah sejenis Hacker topi abu-abu. Pada siang hari, dia adalah seorang profesional
keamanan TI di Lembah Silikon, dan pada malam hari, dia mencuri dan menjual nomor kartu
kredit di pasar gelap. Pada suatu waktu, dia menjalankan pasar gelap kartu kredit terbesar di
dunia, CardersMarket. Sekarang, Max sedang menjalani hukuman penjara 13 tahun sambil
pada saat yang sama membantu Tim Tanggap Darurat Komputer (CERT) di Pittsburgh dengan
membela dari Hacker.
Beberapa tahun sebelum Max ditangkap, ia menyadari bahwa sistem Titik Penjualan
(POS) Aloha yang digunakan oleh banyak restoran kecil memiliki pintu belakang dukungan
teknis yang terpasang di dalamnya. Dalam hal ini, pintu belakang memungkinkan dukungan
teknis untuk membantu klien mereka. Dukungan teknis Aloha dapat mengakses sistem
pengguna akhir melalui port 5505 untuk memberikan bantuan saat pengguna meminta
bantuan. Max menyadari bahwa jika dia menemukan sistem yang terhubung ke internet
dengan sistem Aloha POS, dia dapat mengakses sistem dengan hak istimewa sysadmin
melalui port 5505. Max dapat masuk ke banyak sistem ini dan mencuri
puluhan ribuan nomor kartu kredit.
Akhirnya, Max ingin menemukan setiap sistem yang memiliki port 5505 terbuka
sehingga dia bisa beralih dari mencuri ribuan nomor kartu kredit menjadi mencuri jutaan.
Max memutuskan untuk menulis skrip yang akan memindai jutaan alamat IP mencari sistem
dengan port 5505 terbuka. Tentu saja, sebagian besar sistem tidak memiliki port 5505 yang
terbuka, jadi jika ada, kemungkinan mereka menjalankan POS Aloha yang terkutuk. Dia
dapat menjalankan skrip ini saat bekerja di siang hari, lalu pada malam hari meretas ke
dalam sistem yang diidentifikasi memiliki port 5505 terbuka.
Tugas kami adalah menulis skrip yang hampir sama dengan skrip Max, tetapi
daripada memindai port 5505 seperti yang dilakukan Max, skrip kami akan memindai sistem
yang terhubung ke database online MySQL yang ada di mana-mana. MySQL adalah database
open source yang digunakan di balik jutaan situs web; kami akan bekerja dengan MySQL di
Bab 12. Secara default, MySQL menggunakan port 3306. Database adalah “Golden Fleece”
yang hampir selalu dicari oleh setiap Hacker. berisi nomor kartu kredit dan informasi
pengenal pribadi (PII) yang sangat berharga di pasar gelap.
Scanner Simpel
Sebelum kita menulis skrip untuk memindai IP publik di internet, mari kita lakukan
tugas yang jauh lebih kecil. Daripada memindai dunia, mari kita menulis skrip untuk
memindai port 3306 di jaringan area lokal untuk melihat apakah skrip kita benar-benar
berfungsi. Jika ya, kami dapat mengeditnya dengan mudah untuk melakukan tugas yang jauh
lebih besar.
Di editor teks Anda, masukkan skrip yang ditampilkan di Daftar 8.3.
➊ #! /bin/bash
➋ # This script is designed to find hosts with MySQL installed nmap ➌-sT 192.168.181.0/24
➍-p 3306 ➎>/dev/null ➏-oG MySQLscan
➐ cat MySQLscan | grep open > MySQLscan2 ➑
cat MySQLscan2
Daftar 8.3 Skrip scanner yang disederhanakan
Kita mulai dengan shebang dan penerjemah untuk menggunakan ➊. Mari ikuti ini
dengan komentar untuk menjelaskan apa yang dilakukan skrip ➋. Sekarang, mari gunakan
perintah nmap untuk meminta pemindaian TCP pada LAN kita, mencari port 3306.
(Perhatikan bahwa alamat IP Anda mungkin berbeda; di terminal Anda, gunakan perintah
ifconfig di Linux atau perintah ipconfig di Windows untuk menentukan alamat IP Anda.) Agar
tetap tersembunyi, kami juga akan mengirimkan nmap standar yang biasanya muncul di
layar keluaran ke tempat khusus di Linux, tempat itu menghilang ➎. Kami melakukan ini di mesin lokal, jadi itu tidak terlalu penting, tetapi jika Anda menggunakan skrip dari jarak jauh,
Anda ingin menyembunyikan output nmap. Kami kemudian mengirimkan output scan ke file
bernama MySQLscan dalam format grepable ➏, artinya format yang dapat dikerjakan oleh
grep.
Baris berikutnya menampilkan file MySQLscan tempat kami menyimpan output, lalu
menyalurkan output tersebut ke grep untuk memfilter baris yang menyertakan kata kunci
buka. Kemudian kami memasukkan baris tersebut ke dalam file bernama MySQLscan2 ➑.
Terakhir, Anda menampilkan isi file MySQLscan2. File akhir ini hanya boleh
menyertakan baris output dari nmap dengan host yang memiliki port 3306 terbuka. Simpan
file ini sebagai MySQLscanner.sh dan berikan izin eksekusi sendiri dengan chmod 755 .
Jalankan skripnya, seperti begitu:
kali >./MySQLscanner.sh
host: 192.168.181.69 () Ports: 3306/open/tcp//mysql///
Seperti yang dapat kita lihat, skrip ini mampu mengidentifikasi satu-satunya alamat IP
di LAN saya dengan menjalankan MySQL. Hasil Anda mungkin berbeda, tergantung pada
apakah ada port yang menjalankan instalasi MySQL di jaringan lokal Anda, tentu saja.
Meningkatkan Pemindai MySQL
Sekarang kami ingin menyesuaikan skrip ini agar dapat diterapkan ke lebih dari
sekadar jaringan lokal Anda sendiri. Skrip ini akan jauh lebih mudah digunakan jika dapat
meminta pengguna untuk rentang alamat IP yang ingin mereka pindai dan port yang akan
dicari, lalu menggunakan masukan tersebut. Ingat, Anda telah mempelajari cara meminta
pengguna dan memasukkan input keyboard mereka ke dalam variabel di “Menambahkan
Fungsi dengan Variabel dan User Input”.
Mari kita lihat bagaimana Anda dapat menggunakan variabel untuk membuat skrip
ini lebih fleksibel dan efisien.
Menambahkan Perintah dan Variabel ke Skrip Hacker Kita
Di editor teks Anda, masukkan skrip yang ditampilkan di Daftar 8.4.
#! /bin/bash
➊ echo "Enter the starting IP address : "
➋ read FirstIP
➌ echo "Enter the last octet of the last IP address : " read LastOctetIP
➍ echo "Enter the port number you want to scan for : " read port
➎ nmap -sT $FirstIP-$LastOctetIP -p $port >/dev/null -oG MySQLscan
➏ cat MySQLscan | grep open > MySQLscan2
➐ cat MySQLscan2
Daftar 8.4 Pemindai port MySQL lanjutan Anda
Hal pertama yang perlu kita lakukan adalah mengganti subnet yang ditentukan
dengan rentang alamat IP. Kita akan membuat variabel yang disebut FirstIP dan variabel
kedua bernama LastOctetIP untuk membuat rentang serta variabel bernama port untuk
nomor port (oktet terakhir adalah kelompok angka terakhir setelah periode IP ketiga Alamat
IP 192.168.1.101, oktet terakhir adalah 101)
Catatan
Nama variabel tidak relevan, tetapi praktik terbaik adalah menggunakan nama variabel
yang membantu Anda mengingat apa yang dimiliki variabel.
Untuk mendapatkan nilai untuk variabel FirstIP, echo "Enter the starting IP address:"
ke layar, menanyakan pengguna alamat IP pertama yang ingin dipindai ➊. Setelah melihat
perintah ini di layar, pengguna akan memasukkan alamat IP pertama, jadi kami perlu
menangkap masukan tersebut dari pengguna.
Kita juga perlu meminta pengguna untuk nilai ini.Kita dapat melakukannya dengan
menggunakan perintah echo yang kita gunakan di Daftar 8.1.
Kita dapat melakukan ini dengan perintah baca diikuti dengan nama variabel yang
ingin kita simpan inputnya di ➋. Perintah ini akan menempatkan alamat IP yang dimasukkan
oleh pengguna ke dalam variabel FirstIP. Kemudian kita dapat menggunakan nilai tersebut
di FirstIP di seluruh skrip kami.
Kami akan melakukan hal yang sama untuk variabel LastOctetIP ➌ dan port ➍
dengan meminta pengguna untuk memasukkan informasi dan kemudian menggunakan
perintah read untuk menangkapnya.
Selanjutnya, kita perlu mengedit perintah nmap di skrip kita untuk menggunakan
variabel yang baru saja kita buat dan isi. Untuk menggunakan nilai yang disimpan dalam
variabel, kita cukup mengawali nama variabel dengan $, seperti di $port, misalnya. Jadi, di ,
kami memindai berbagai alamat IP, dimulai dengan IP input pengguna pertama hingga IP
input pengguna kedua, dan mencari input port tertentu oleh pengguna. Kami telah
menggunakan variabel sebagai pengganti subnet untuk memindai dan port untuk
menentukan apa yang akan dipindai.
Simbol pengalihan > memberitahukan output nmap standar, yang biasanya
ditampilkan ke layar, untuk menjadi /dev/null (/dev/null hanyalah tempat untuk
mengirimkan output sehingga menghilang). Kemudian, kami mengirimkan output dalam
format yang dapat diterima ke file yang kami beri nama MySQLscan.
Baris berikutnya tetap sama seperti pada pemindai sederhana kami: baris ini
menampilkan konten file MySQLscan, menyalurkannya ke grep, yang difilter untuk baris yang
menyertakan kata kunci open, dan kemudian mengirim file SQL baru ke MySQLscan2 ➏ .
Terakhir, kami menampilkan konten file MySQLscan2 ➐.
Jika semuanya berfungsi seperti yang diharapkan, skrip ini akan memindai alamat IP
dari alamat input pertama ke alamat input terakhir, mencari port input dan kemudian
melaporkan kembali hanya dengan alamat IP yang memiliki port yang ditentukan.
Simpan file skrip Anda sebagai MySQLscannerAdvanced, jangan lupa untuk memberi izin
eksekusi sendiri.
Jika semuanya berfungsi seperti yang diharapkan, skrip ini akan memindai alamat IP
dari alamat input pertama ke alamat input terakhir, mencari port input dan kemudian
melaporkan kembali hanya dengan alamat IP yang memiliki port yang ditentukan.
Simpan file skrip Anda sebagai MySQLscannerAdvanced, ingat untuk memberi izin untuk
Anda sendiri untuk menjalankan.
Contoh Jalankan
Sekarang kita dapat menjalankan skrip pemindai sederhana dengan variabel yang
menentukan rentang alamat IP dan port yang akan dipindai tanpa harus mengedit skrip
setiap kali ingin menjalankan pemindaian:
kali >./MySQLscannerAdvanced.sh
Enter the starting IP address :
192.168.181.0
Enter the last IP address :
192.168.181.255
Enter the port number you want to scan for :
3306 Host: 192.168.181.254 ()Ports:3306/open/tcp//mysql//
Skrip tersebut meminta pengguna untuk memberikan alamat IP pertama, alamat IP
terakhir, dan kemudian port yang akan dipindai. Setelah mengumpulkan informasi ini, skrip
melakukan pemindaian nmap dan menghasilkan laporan semua alamat IP dalam rentang
yang memiliki port yang ditentukan terbuka. Seperti yang Anda lihat, bahkan skrip yang
paling sederhana pun dapat membuat alat yang hebat. Anda akan mempelajari lebih banyak
lagi tentang skrip di Bab 17.
8.4 PERINTAH UMUM BASH BUILT-IN
Seperti yang dijanjikan, Tabel 81 memberi Anda daftar beberapa perintah berguna yang ada
di dalam bash.
Tabel 8.1 Perintah Bash Builtin
8.5 RINGKASAN
Pembuatan skrip adalah keterampilan penting untuk setiap Hacker atau
administrator sistem. Ini memungkinkan Anda untuk mengotomatiskan tugas yang biasanya
memakan waktu berjam-jam, dan setelah skrip disimpan, skrip dapat digunakan berulang
kali. Skrip bash adalah bentuk skrip paling dasar, dan Anda akan melanjutkan ke skrip Python
dengan lebih banyak kemampuan di Bab 17.
BAB 9
KOMPRESI DAN PENGARSIPAN
Hacker sering kali perlu mengunduh dan menginstal software baru, serta mengirim
dan mengunduh banyak skrip dan file besar. Tugas ini menjadi lebih mudah jika file-file ini
dikompresi dan digabungkan menjadi satu file. Jika Anda berasal dari dunia Windows, Anda
mungkin akan mengenali konsep ini dari format .zip, yang menggabungkan dan
mengompresi file untuk membuatnya lebih kecil untuk ditransfer melalui internet atau
media yang dapat dilepas. Ada banyak cara untuk melakukan ini di Linux, dan kita akan
melihat beberapa alat paling umum untuk melakukannya di bab ini. Kami juga melihat
perintah dd, yang memungkinkan Anda untuk menyalin seluruh drive, termasuk file yang
dihapus pada drive tersebut.
9.1 APA ITU KOMPRESI?
Subjek kompresi yang menarik dapat mengisi seluruh buku dengan sendirinya, tetapi
untuk buku ini kita hanya memerlukan pemahaman dasar tentang prosesnya. Kompresi,
sesuai dengan namanya, membuat data menjadi lebih kecil, sehingga membutuhkan
kapasitas penyimpanan yang lebih sedikit dan membuat data lebih mudah untuk dikirim.
Untuk tujuan Anda sebagai Hacker pemula, cukup untuk mengkategorikan kompresi sebagai
lossy atau lossless.
Kompresi lossy sangat efektif dalam mengurangi ukuran file, tetapi integritas
informasinya hilang. Dengan kata lain, file setelah dikompresi tidak persis sama dengan
aslinya. Jenis kompresi ini sangat cocok untuk file grafik, video, dan audio, di mana
perbedaan kecil pada file hampir tidak terlihat—.mp3, .mp4, .png, dan .jpg semuanya adalah
algoritma kompresi lossy. Jika piksel dalam file .png atau satu catatan dalam file .mp3 diubah,
mata atau telinga Anda kemungkinan tidak akan melihat perbedaannya—meskipun, tentu
saja, para pecinta musik akan mengatakan bahwa mereka pasti dapat membedakannya.
mp3 dan file .flac yang tidak terkompresi. Kekuatan kompresi lossy adalah efisiensi dan
efektivitasnya. Rasio kompresi sangat tinggi, artinya file yang dihasilkan secara signifikan
lebih kecil dari aslinya.
Namun, kompresi lossy tidak dapat diterima saat Anda mengirim file atau software
dan integritas data sangat penting. Misalnya, jika Anda mengirim skrip atau dokumen,
integritas file asli harus dipertahankan saat didekompresi. Bab ini berfokus pada jenis
kompresi lossless ini, yang tersedia dari sejumlah utilitas dan algoritme. Sayangnya, kompresi
lossless tidak seefisien kompresi lossy, seperti yang Anda bayangkan, tetapi bagi Hacker,
integritas seringkali jauh lebih penting daripada rasio kompresi.
9.2 TARRING FILES BERSAMA
Biasanya, hal pertama yang Anda lakukan saat mengompresi file adalah
menggabungkannya menjadi arsip. Dalam kebanyakan kasus, saat mengarsipkan file, Anda
akan menggunakan perintah tar. Tar adalah singkatan dari tape archieve, referensi ke masa
prasejarah komputasi ketika sistem menggunakan tape untuk menyimpan data. Perintah tar
membuat satu file dari banyak file, yang kemudian disebut sebagai arsip, file tar, atau tarball.
Misalnya, Anda memiliki tiga file skrip seperti yang kita gunakan di Bab 8, bernama
Hackerbangkit1, Hackerbangkit2, dan Hackerbangkit3. Jika Anda menavigasi ke direktori
yang menyimpannya dan melakukan daftar panjang, Anda dapat dengan jelas melihat file
dan detail yang Anda harapkan, termasuk ukuran file, seperti yang ditunjukkan di sini:
kali >ls -l
-rwxr-xr-x 1 root root 22311 Nov 27 2018 13:00 Hackersbangkit1.sh
-rwxr-xr-x 1 root root 8791 Nov 27 2018 13:00 Hackersbangkit2.sh
-rwxr-xr-x 1 root root 3992 Nov 27 2018 13:00 Hackersbangkit3.sh
Misalnya, Anda ingin mengirim ketiga file ini ke Hacker lain yang bekerja sama dengan Anda
dalam sebuah proyek. Anda dapat menggabungkannya dan membuat satu file arsip
menggunakan perintah di Daftar 9.1.
kali >tar –cvf HackersBangkit.tar Hackersbangkit1 Hackersbangkit2 Hackersbangkit3
Hackersbangkit1
Hackersbangkit2
Hackersbangkit3
Daftar 9.1 Membuat tarbal dari tiga file
Mari kita uraikan perintah ini untuk lebih memahaminya. Perintah pengarsipan
adalah tar, dan kami menggunakannya di sini dengan tiga opsi. Opsi c berarti membuat, v
(yang merupakan singkatan dari verbose dan bersifat opsional) mencantumkan file yang
ditangani tar, dan f artinya menulis ke file berikut. Opsi terakhir ini juga akan berfungsi untuk
membaca dari file. Kemudian, kami memberi arsip baru nama file yang ingin Anda buat dari
tiga skrip: HackersBangkit.tar.
Secara keseluruhan, perintah ini akan mengambil ketiga file dan membuat satu file,
HackersBangkit.tar dari mereka. Saat Anda melakukan daftar panjang direktori lainnya, Anda
akan melihat bahwa direktori tersebut juga berisi file .tar baru, seperti yang ditunjukkan
berikut ini:
kali >ls -l
--snip--
-rw-r--r-- 1 root root 40960 Nov 27 2018 13:32 HackersBangkit.tar
--snip--
kali >
Perhatikan ukuran tarbal di sini: 40.960 byte. Saat ketiga file diarsipkan, tar
menggunakan overhead yang signifikan untuk melakukan operasi ini: sedangkan jumlah
ketiga file sebelum pengarsipan adalah 35.094 byte, setelah pengarsipan tarball telah
berkembang menjadi 40.960 byte. Dengan kata lain, proses pengarsipan telah
menambahkan lebih dari 5.000 byte. Meskipun overhead ini bisa signifikan dengan file kecil,
menjadi kurang dan kurang signifikan dengan file yang lebih besar dan lebih besar.
Kami dapat menampilkan file-file tersebut dari tarball tanpa mengekstraknya dengan
menggunakan perintah tar dengan sakelar daftar konten seperti yang ditunjukkan berikut ini:
kali >tar -tvf HackersBangkit.tar
-rwxr-xr-x 1 root root 22311 Nov 27 2018 13:00 Hackersbangkit1.sh
-rwxr-xr-x 1 root root 8791 Nov 27 2018 13:00 Hackersbangkit2.sh
-rwxr-xr-x 1 root root 3992 Nov 27 2018 13:00 Hackersbangkit3.sh
Di sini, kami melihat tiga file asli dan ukuran aslinya. Anda kemudian dapat mengekstrak file
tersebut dari tarball menggunakan perintah tar dengan sakelar -x (extract), seperti yang
ditunjukkan berikut ini:
kali >tar -xvf HackersBangkit.tar
Hackersbangkit1.sh
Hackersbangkit2.sh
Hackersbangkit3.sh
Karena Anda masih menggunakan tombol–v, perintah ini akan menunjukkan file mana yang
sedang diekstraksi di output. Jika Anda ingin mengekstrak file dan melakukannya secara
“diam-diam”, artinya tanpa menampilkan output apa pun, Anda cukup menghapus tombol -v
(verbose), seperti yang ditunjukkan di sini:
ckali >tar -xf HackersBangkit.tar
File telah diekstraksi ke dalam direktori saat ini; Anda dapat melakukan daftar panjang pada
direktori untuk memeriksa ulang. Perhatikan bahwa secara default, jika file yang diekstrak
sudah ada, tar akan menghapus file yang ada dan menggantinya dengan file yang diekstrak.
9.3 KOMPRESI FILE
Sekarang kami memiliki satu file yang diarsipkan, tetapi file tersebut lebih besar
daripada jumlah file aslinya. Bagaimana jika Anda ingin mengompres file tersebut untuk
kemudahan transportasi? Linux memiliki beberapa perintah yang mampu membuat file
terkompresi. Kami akan memeriksa ini:
gzip, yang menggunakan ekstensi .tar.gz atau .tgz
bzip2, yang menggunakan ekstensi .tar.bz2
kompres, yang menggunakan ekstensi .tar.z
Ini semua mampu mengompresi file kami, tetapi mereka menggunakan algoritma kompresi
yang berbeda dan memiliki rasio kompresi yang berbeda. Oleh karena itu, kita akan melihat
masing-masing dan kemampuannya.
Secara umum, kompres adalah yang tercepat, tetapi file yang dihasilkan lebih besar;
bzip2 adalah yang paling lambat, tetapi file yang dihasilkan adalah yang terkecil;