Rabu, 05 Juli 2023

hacking 2

 ini akan meningkatkan versi setiap paket di sistem Anda yang tepat tahu, 
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, Hacker￾Bangun!", 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? 
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;