Anda di halaman 1dari 202

i

Daftar Isi
APA ITU ETHICAL HACKING? .................................................................................................................. 8
PENETRATION TESTING .......................................................................................................................... 8
MILITER dan SPIONASE .......................................................................................................................... 8
KENAPA HACKER MENGGUNAKAN LINUX?........................................................................................... 8
DOWNLOAD KALI LINUX ........................................................................................................................ 9
STEP – 1 Download Kali Linux ISO Image .......................................................................................... 10
STEP – 2 Cari Lokasi Download file ................................................................................................... 10
STEP – 3 Buka VMWare Player.......................................................................................................... 11
STEP – 4 Create a New Virtual Machine ........................................................................................... 11
STEP – 5 Pilih Sumber Installasi......................................................................................................... 12
STEP – 6 Select a Guest Operating System ....................................................................................... 13
STEP – 7 Berikan Nama mesin virtual ............................................................................................... 14
STEP – 8 Spesifik kapasitas disk ........................................................................................................ 15
STEP – 9 Ready to Create Virtual Machine Dialog Box ..................................................................... 16
STEP – 10 Start Virtual Machine ....................................................................................................... 20
STEP – 11 Pilih Graphical Install dari Boot menu .............................................................................. 20
STEP – 12 Pilih Bahasa....................................................................................................................... 21
STEP – 13 Pilih Lokasi ........................................................................................................................ 21
STEP – 14 Konfigurasi keyboard ........................................................................................................ 22
STEP – 15 Konfigurasikan Jaringan - Masukkan Nama Host ............................................................. 23
STEP – 16 Konfigurasi Jaringan – masukkan domain name .............................................................. 23
STEP – 17 Set User Account dan Password ....................................................................................... 24
STEP – 18 Konfigurasi Jam................................................................................................................. 25
STEP – 19 Partisi Disk ........................................................................................................................ 25
STEP – 20 Pilih Skema Partisi ............................................................................................................ 26
STEP – 21 Ringkasan Partisi Disk ....................................................................................................... 27
STEP – 22 Konfirmasi Partisi Disk ...................................................................................................... 27
STEP – 23 Tunggu Proses Installasi ................................................................................................... 28
STEP – 24 Konfigurasi Paket Manager .............................................................................................. 28
STEP – 25 Memilih Software ............................................................................................................. 29
STEP – 26 Install Grub boot loader ................................................................................................... 29
STEP – 27 Pilih Perangkat untuk install Grub boot loader ................................................................ 30
STEP – 28 Installasi selesai ................................................................................................................ 30
1 ............................................................................................................................................................ 33
MULAI DARI DASAR .............................................................................................................................. 33

2
ISTILAH DAN KONSEP PENDAHULUAN ............................................................................................ 34
Directory Linux ................................................................................................................................. 36
List Perintah Dasar Linux Yang Wajib Diketahui ............................................................................. 37
Mengatur Hak Akses di Linux........................................................................................................... 42
Hak Akses dalam Linux ................................................................................................................. 42
Menggunakan Perintah chmod.................................................................................................... 43
Menggunakan Perintah chown ......................................................................................................... 44
Perintah chattr .................................................................................................................................. 44
2 ............................................................................................................................................................ 45
TEXT MANIPULATION ........................................................................................................................... 45
cat - salah satu perintah linux yang mendasar................................................................................ 46
The Less Command: .......................................................................................................................... 46
The diff Command: ........................................................................................................................... 46
The sort Command: .......................................................................................................................... 47
The head and tail Commands: .......................................................................................................... 48
The grep Command: ......................................................................................................................... 48
3 ............................................................................................................................................................ 50
ANALISA DAN MANAJEMEN JARINGAN ................................................................................................ 50
Menganalisa jaringan dengan ifconfig............................................................................................. 51
Mengecek Perangkat Wireless dengan iwconfig ............................................................................ 52
Merubah informasi jaringan ............................................................................................................ 52
Merubah Alamat IP .......................................................................................................................... 53
Merubah NetMask dan alamat Broadcast ...................................................................................... 53
Spoofing MAC address ..................................................................................................................... 53
Menetapkan Alamat IP Baru dari DHCP Server............................................................................... 54
Manipulasi DNS (Domain Name System) ........................................................................................ 55
Memerika DNS dengan ‘’dig’’ .......................................................................................................... 55
Mengubah Nama DNS Server .......................................................................................................... 56
Memetakan Alamat IP ..................................................................................................................... 57
4 ............................................................................................................................................................ 59
TAMBAH DAN HAPUS SOFTWARE ....................................................................................................... 59
Menggunakan apt untuk menghandle Software ............................................................................ 60
Mencari Package .............................................................................................................................. 60
Menambahkan Software ................................................................................................................. 61
Menghapus Software ....................................................................................................................... 61
Mengupdate paket ........................................................................................................................... 61

3
Mengupgrade paket ......................................................................................................................... 62
Menambahkan Repositori ke sources.list file ................................................................................. 62
Install Software melalui git .............................................................................................................. 64
5 ............................................................................................................................................................ 66
Manajemen Proses Linux ..................................................................................................................... 66
Tipe Proses........................................................................................................................................ 67
Foreground Processes .................................................................................................................. 67
Background Processes .................................................................................................................. 67
Bagaimana Linux Mengidentifikasi Proses? .................................................................................... 67
Parent Processes .......................................................................................................................... 68
Child Processes ............................................................................................................................. 68
Apa itu Daemons? ............................................................................................................................ 68
Macam-Macam Manajemen Proses Linux ...................................................................................... 68
Menampilkan Semua Proses Shell Aktif/Berjalan .......................................................................... 68
1. Perintah “top” .......................................................................................................................... 68
2. Perintah “ps” ............................................................................................................................ 70
Menghentikan Proses Linux ............................................................................................................. 72
Menghentikan Proses Menggunakan Perinah “top” ...................................................................... 73
Menghentikan Semua Proses yang Berjalan Menggunakan Nama Aplikasi .................................. 74
6 ............................................................................................................................................................ 74
Manajemen User Environment Variabel ............................................................................................. 74
Melihat dan Memodifikasi Environment Variables ........................................................................ 75
Melihat Seluruh Environment Variables ......................................................................................... 76
Penyaringan untuk Variabel Tertentu ............................................................................................. 77
Mengubah Nilai Variabel untuk Sesi ............................................................................................... 77
Membuat Perubahan Nilai Variabel Permanen .............................................................................. 77
Mengubah PATH anda ..................................................................................................................... 78
Menambahkan ke Variabel PATH .................................................................................................... 79
Bagaimana Tidak Menambahkan ke Variabel PATH ....................................................................... 80
7 ............................................................................................................................................................ 81
BASH SCRIPTING ................................................................................................................................... 81
Macam-macam Shell ........................................................................................................................ 82
Pemrograman Shell .......................................................................................................................... 83
Kebutuhan Dasar .......................................................................................................................... 83
Simple Bash Script ............................................................................................................................. 84
Pemakaian Variabel ......................................................................................................................... 87

4
Environment Variable ...................................................................................................................... 87
Positional Parameter........................................................................................................................ 88
User Defined Variable ...................................................................................................................... 89
Simple I/O ......................................................................................................................................... 93
Output dengan printf ................................................................................................................... 93
Input dengan read ........................................................................................................................ 94
Output dengan konstanta ANSI ................................................................................................... 96
Menggunakan utulity tput untuk penempatan posisi kursor ............................................. 98
Seleksi dan Perulangan ................................................................................................................ 98
1 test dan operator ..................................................................................................................... 99
2. Seleksi ................................................................................................................................... 100
3. Perulangan............................................................................................................................ 105
Array ............................................................................................................................................... 113
Subrutin atau Fungsi.................................................................................................................... 115
1. Mengirim argumen sebagai parameter ke fungsi ........................................................... 117
2. Cakupan Variabel ................................................................................................................ 118
8 .......................................................................................................................................................... 125
Mengekstrak File dan Mengompersi ................................................................................................. 125
Kompres Direktori Seluruh atau File Tunggal................................................................................ 126
Kompres Beberapa Direktori atau File Sekaligus .......................................................................... 127
Kecualikan Direktori dan File ......................................................................................................... 128
Gunakan Kompresi bzip2 ............................................................................................................... 129
Ekstrak Arsip ................................................................................................................................... 130
9 .......................................................................................................................................................... 131
THE LOGGING SYSTEM ....................................................................................................................... 131
Rsyslog Logging Daemon ................................................................................................................ 132
Rsyslog Configuration File .............................................................................................................. 132
Rsyslog Logging Rules ..................................................................................................................... 133
Secara otomatis Membersihkan Log dengan logrotate ................................................................ 136
Menghapus Bukti ........................................................................................................................... 137
Menonaktifkan Pencatatan ........................................................................................................... 139
10 ........................................................................................................................................................ 140
Menggunakan Layanan ...................................................................................................................... 140
Starting, Stopping, and Restarting Services .................................................................................. 141
Membuat Server Web HTTP dengan Web Apache Server ............................................................ 142
Memulai dengan Apache ............................................................................................................... 142

5
Edit File index.html ........................................................................................................................ 143
Menambahkan Syntax HTML ......................................................................................................... 144
Extra Informasi dari MySQL ........................................................................................................... 145
Memulai MySQL ............................................................................................................................. 145
PostgreSQL dengan Metasploit ..................................................................................................... 146
11 ........................................................................................................................................................ 149
MENJADI AMAN DAN ANONIM ......................................................................................................... 149
Privasi vs. anonimitas..................................................................................................................... 150
1. Gunakan Sinyal ....................................................................................................................... 150
2. Gunakan Tor ........................................................................................................................... 151
3. Jangan mengharapkan anonimitas dari VPN ........................................................................ 152
4. Gunakan layanan tanpa pengetahuan .................................................................................. 152
5. Hati-hati dengan yang Anda posting online .......................................................................... 153
6. Periksa izin aplikasi tersebut.................................................................................................. 154
7. Gunakan pemblokir iklan ....................................................................................................... 154
8. Buang asisten rumah Anda .................................................................................................... 155
12 ........................................................................................................................................................ 156
MEMAHAMI DAN MEMASANG.......................................................................................................... 156
JARINGAN WIRELESS .......................................................................................................................... 156
Jaringan Wi-Fi ................................................................................................................................. 157
Dasar Perintah Wireless ................................................................................................................. 158
Wi-Fi Recon dengan aircrack-ng .................................................................................................... 161
Mendeteksi dan Menghubungkan ke Bluetooth .......................................................................... 165
Bagaimana Bluetooth Bekerja ....................................................................................................... 166
Pemindaian dan Pengintaian Bluetooth........................................................................................ 166
Scanning Perangkat Bluetooth dengan hcitool ............................................................................. 167
Scanning Service dengan sdptool .................................................................................................. 169
Melihat Apakah Perangkat Dapat Dicapai dengan l2ping ............................................................ 170
13 ........................................................................................................................................................ 171
MENGELOLA Kernel LINUX DAN ........................................................................................................ 171
MODUL KERNEL YANG DITANGGUHKAN .......................................................................................... 171
Apa itu Modul Kernel? ................................................................................................................... 172
Memeriksa Versi Kernel ................................................................................................................. 172
Tuning Kernel dengan sysctl .......................................................................................................... 173
Mengelola Modul Kernel ............................................................................................................... 175
Menemukan Informasi Lebih Lanjut dengan modinfo ................................................................. 176

6
Menambah dan Menghapus Modul dengan modprobe............................................................... 177
Memasukkan dan Menghapus Modul Kernel ............................................................................... 178
14 ........................................................................................................................................................ 179
DASAR-DASAR PENYETELAN PYTHON UNTUK HACKER .................................................................... 179
Menambahkan Modul Python ....................................................................................................... 180
Menggunakan pip ....................................................................................................................... 180
Memasang Modul Pihak Ketiga ................................................................................................. 181
Memulai Scripting dengan Python ................................................................................................ 182
Variabel ....................................................................................................................................... 183
Komentar .................................................................................................................................... 185
Fungsi .......................................................................................................................................... 186
Pemrograman Berorientasi Objek (OOP) .................................................................................. 188
Komunikasi Jaringan dengan Python............................................................................................. 190
Membangun Klien TCP ................................................................................................................... 190
Membuat TCP Listener ................................................................................................................... 191
Dictionary, Loops, dan Control Statements .................................................................................. 193
Dictionary ................................................................................................................................... 193
Control Statement ...................................................................................................................... 193
Pernyataan if .............................................................................................................................. 194
if ... else....................................................................................................................................... 194
Loop ............................................................................................................................................ 195
While loop .................................................................................................................................. 195
For loop ....................................................................................................................................... 195
Upgrade skript sebelumnya ........................................................................................................... 196
Exceptions dan Password Crackers ................................................................................................ 197
Referensi ............................................................................................................................................. 201

7
APA ITU ETHICAL HACKING?
Ethical hacker atau juga dikenal dengan istilah white hat hacker adalah pakar IT
security yang secara sistematis berusaha menembus sistem website, aplikasi, atau jaringan
untuk menemukan kerentanan keamanan yang berpotensi dieksploitasi oleh peretas jahat.
Ethical hacking dilakukan seijin pemilik sistem dengan tujuan untuk mengevaluasi keamanan
dan mengidentifikasi kerentanan pada suatu sistem. Jika kerentanan ditemukan, mereka akan
membuat dokumentasi dan memberikan sejumlah saran untuk memperkuat sistem
keamanan perusahaan. (feradhita, 2019)

PENETRATION TESTING
Penetration testing adalah serangkaian proses berisi prosedur dan teknik
mengevaluasi keamanan terhadap sistem komputer atau jaringan dengan melakukan simulasi
penyerangan untuk mengetahui letak celah-celah kerawanan pada sistem agar kemudian
celah tersebut ditutup/diperbaiki. Penetration testing dilakukan sebagai
langkah preventive untuk mengatasi terjadinya peretasan pada suatu sistem. (Mulyadi, 2018)

MILITER dan SPIONASE


Hampir setiap negara di dunia sekarang terlibat dalam spionase cyber dan perang
cyber. Orang hanya perlu memindai berita utama untuk melihat aktivitas siber, dan itu adalah
metode yang dipilih untuk memata-matai dan menyerang militer dan industri sistem.
Peretasan memainkan peran penting dalam kegiatan pengumpulan militer dan
intelijen ini, dan itu hanya akan lebih benar seiring berjalannya waktu. Bayangkan perang
masa depan di mana para peretas dapat mengakses apapun rencana perang musuh dan
merobohkan jaringan listrik, kilang minyak, dan sistem air. Aktivitas ini berlangsung setiap hari
tentunya. hacker dengan demikian menjadi komponen kunci pertahanan negara mereka.

KENAPA HACKER MENGGUNAKAN LINUX?


Linux adalah sistem operasi multiuser sejati, ini lah yang dinamakan kekuatan dalam
kesederhanaan. Memiliki kemampuan grafis yang kuat dan begitu juga alat-alat
pendukungnya, anda juga masih bisa melakukan hal-hal lain hanya
dengan keyboard dan prompt shell. Hanya dengan menggunakan barisan kode, anda bahkan
bisa membuat Linux melakukan hal-hal yang belum pernah anda lakukan sebelumnya.
Jutaan baris kode telah ditulis untuk aplikasi Linux, biasanya dalam cara yang sangat
modular, yang memungkinkan untuk diintegrasikan ke dalam pekerjaan yang sangat
beragam. Misalnya memungkinkan Anda untuk melacak jaringan untuk memantau kinerja
proaktif yang kemungkinan dapat digunakan untuk pembajakan. Kekuatan dan fleksibilitas
dari Linux terasa seperti taman bermain hacker. Mereka menggunakannya, mempelajarinya,

8
dan memahaminya dengan sangat dalam. Itu berarti, bila ada bahaya mengancam
jaringannya, mereka akan menemukan sumber bahayanya.
Namun alasan mendasar hacker menggunakan Linux adalah alasan yang sama dari
jutaan orang yang menggunakan Linux. Kemampuan untuk melihat setiap baris kode Linux
dan patch ketika masalah muncul, menjadikan Linux bisa diamankan bukan hanya oleh
beberapa programmer, tetapi juga oleh setiap penggunanya.
Berikut adalah manfaat Linux yang menarik hati para hacker:
1. Biaya rendah: Anda tidak perlu menghabiskan waktu dan uang untuk mendapatkan
lisensi untuk menggunakan Linux dan banyak perangkat lunak yang dapat diunduh
secara jauh.
2. Stabilitas: Linux tidak perlu reboot berkala untuk mempertahankan kinerjanya. Linux
tidak akan membeku atau memperlambat jika digunakan secara terus-menerus, apa
lagi karena kebocoran memori atau semacamnya.
3. Keramahan jaringan: Linux dikembangkan oleh sekelompok programmer melalui
Internet dan memiliki dukungan keamanan yang kuat untuk fungsi jaringannya.
Sistem client dan server dapat dengan mudah diaatur pada komputer yang
menjalankan Linux. Linux dapat melakukan tugas-tugas seperti backup jaringan lebih
cepat dan lebih andal daripada sistem operasi lainnya.
4. Fleksibilitas: Linux dapat diaplikasikan pada penggunaan kinerja tinggi seperti untuk
server dan embedded system.
5. Kompatibilitas: Linux dapat menjalankan paket perangkat lunak Unix dan dapat
memproses semua format file yang umum.
6. Hard disk penuh: Linux dapat terus bekerja dengan baik bahkan ketika hard
disk hampir penuh. (Fadhli, 2015)

DOWNLOAD KALI LINUX


Sebelum memulai, kamu harus mendownload dan menginstal Kali Linux di komputer.
Ini adalah distribusi Linux yang akan kita gunakan dalam bahasan seluruh buku ini. Linux
pertama kali dikembangkan oleh Linus Torvalds di 1991 sebagai alternatif open source untuk
Unix. Karena ini adalah open source, pengembang sukarela untuk mengkode kernel, utilitas,
dan aplikasi.
Kali Linux dikembangkan oleh Offensive Security sebagai sistem operasi hacking yang
dibangun di atas distribusi Linux yang disebut Debian. Ada banyak distribusi Linux, dan Debian
adalah salah satu yang terbaik. Kamu mungkin paling akrab dengan Ubuntu sebagai distribusi
desktop Linux yang populer. Ubuntu juga dibangun di atas Debian. Distribusi lainnya termasuk
Red Hat, CentOS, Mint, Arch, dan SUSE. Meskipun mereka semua berbagi Linux yang sama
kernel (jantung dari sistem operasi yang mengontrol CPU, RAM, dan sebagainya), masing-
masing memiliki utilitas, aplikasi, dan pilihan grafis sendiri antarmuka (GNOME, KDE, dan
lainnya) untuk tujuan yang berbeda. Hasil dari, masing-masing distribusi Linux ini terlihat dan

9
terasa sedikit berbeda. Kali dirancang untuk penetration testing dan hacking, dan dilengkapi
dengan pelengkap signifikan dari alat peretasan.
Saya sangat menyarankan Anda menggunakan Kali untuk buku ini. Meskipun kamu
dapat menggunakan distribusi lain, Anda mungkin harus mengunduh dan menginstal
berbagai Tools yang akan kita gunakan, yang bisa berarti berjam-jam mengunduh dan
menginstal tools. Selain itu, jika distribusinya tidak dibangun di atas Debian, mungkin ada
perbedaan kecil lainnya. Kamu bisa unduh dan instal Kali dari https://www.kali.org/.
Oke, Baiklah mari kita mulai instalasi kali linux nya menggunakan vmware dan
virtualbox

STEP – 1 Download Kali Linux ISO Image


Untuk menginstall kali linux, pertama kita harus mendownloadnya langsung dari
official https://www.kali.org/downloads/ . pilihlah sesuai tipe bit laptop/komputer kalian.

Jika terkendala dengan file torrent, sangat disarankan untuk terlebih dahulu menginstall
qbittorrent di https://www.qbittorrent.org/download.php.

STEP – 2 Cari Lokasi Download file


Anda dapat menemukan file gambar yang diunduh di folder unduhan, jika Anda belum
mengubah pengaturan default. Nama file akan menjadi kali-linux-2020.2-installer-amd64.iso dan
sekitar 3,6 GB. Jika Anda telah mengunduh melalui torrent, file ISO akan diunduh dalam folder, nama
folder akan menjadi seperti kali-linux-2020.2-installer-amd64.iso.

10
STEP – 3 Buka VMWare Player

STEP – 4 Create a New Virtual Machine


untuk membuat mesin virtual baru, Klik Create a New Virtual Machine atau File ->
Create a New Virtual Machine. Ketika muncul jendela baru Pilih tipikal dan klik next.

11
STEP – 5 Pilih Sumber Installasi
Di kotak dialog ini Anda harus menelusuri file ISO yang diunduh dan klik next. Secara
umum, VMware Workstation mendeteksi OS secara otomatis dan memulai apa yang mereka
sebut sebagai Easy Instalasi. Tetapi dalam kasus Kali Linux ini tidak terjadi dan Anda akan
melihat peringatan (yellow triangle). Abaikan itu dan klik berikutnya untuk melanjutkan.

12
STEP – 6 Select a Guest Operating System
Di kotak dialog ini, kamu akan diminta untuk memilih Sistem Operasi. Pilih sistem
operasi Guest sebagai Linux dan Versi sebagai Debian 9.x 64-bit atau 32 bit tergantung pada
sistem kamu.

13
STEP – 7 Berikan Nama mesin virtual
Di kotak dialog ini, kamu akan diminta untuk memberikan nama mesin virtual. kamu
dapat memberikan nama yang kamu suka. kamu juga dapat mengubah lokasi mesin virtual.
Secara default itu ditempatkan di folder Documents / Virtual Machine. Atau Membiarkannya
sebagai default

14
STEP – 8 Spesifik kapasitas disk
Kotak dialog ini meminta kamu untuk menentukan kapasitas disk. Ini adalah jumlah
maksimum ruang disk yang akan digunakan setelah Mesin Virtual dibuat. kamu dapat
membiarkannya ke default tetapi jika kamu kehabisan ruang disk, kamu dapat menguranginya
hingga 20 GB. Ini umumnya memadai jika kamu tidak berencana untuk menginstal disk besar
menggunakan perangkat lunak seperti Photoshop. Perangkat lunak semacam itu mengurangi
kinerja Mesin Virtual kamu jika Komputer kamu tidak cukup kuat.

Periksa Split Virtual Disk menjadi beberapa file. Ini adalah opsi default. Katakanlah jika
kamu menentukan 60 GB, semua 60 GB tidak akan digunakan atau mengatakan 60 GB tidak
akan diblokir sekaligus. Disk Virtual ini berkembang sesuai dengan penggunaan dengan
ukuran maksimum yang Anda tentukan sebagai kapasitas disk. Pada instalasi baru biasanya
dibutuhkan 10 GB ruang yang akan tumbuh sesuai dengan perangkat lunak yang kamu instal
di VM.

15
STEP – 9 Ready to Create Virtual Machine Dialog Box
Ini adalah kotak dialog terakhir dan apa yang kamu lihat adalah semua opsi yang telah
kamu pilih di kotak dialog sebelumnya.

16
Biasanya saya meningkatkan RAM dan memori sebelum mengklik selesai. Ini
membantu untuk menyelesaikan proses instalasi lebih cepat. Jika Anda memiliki RAM dan
CPU yang cukup pada mesin Windows host Anda, saya sarankan bahkan Anda harus
meningkatkan RAM dan CPU. Untuk meningkatkan RAM, sebelum mengklik Selesai, klik pada
kustomisasi perangkat keras. Tambah memori menggunakan penggeser.

17
18
Untuk menambah CPU, Masukkan jumlah core. Saya biasanya memilih 2. Klik Finish untuk
memulai proses instalasi.

Klik Close dan Selesai untuk memulai proses instalasi

19
STEP – 10 Start Virtual Machine
Sekarang kamu harus mengklik pada play machine virtual untuk memulai proses.

STEP – 11 Pilih Graphical Install dari Boot menu


Di sini Anda akan melihat banyak opsi. Pilih Instalasi Grafis menggunakan tombol
panah bawah dan klik lanjutkan.

20
STEP – 12 Pilih Bahasa
Di kotak dialog ini Anda akan diminta untuk memilih bahasa. Silakan pilih bahasa dan
lanjutkan. Opsi ini mengatur bahasa Anda di sistem Operasi Kali Linux. Default adalah bahasa
Inggris.

STEP – 13 Pilih Lokasi


Di kotak dialog ini Anda akan diminta untuk memilih Lokasi. Silakan pilih lokasi dan
lanjutkan. Opsi ini menetapkan Lokasi Anda di sistem Operasi Kali Linux. nanti, Anda akan
dapat mengatur zona waktu berdasarkan lokasi yang Anda pilih di sini.

21
STEP – 14 Konfigurasi keyboard
Di kotak dialog ini Anda akan diminta untuk memilih tata letak keyboard. Silakan pilih
tata letak Keyboard menggunakan tombol panah dan klik lanjutkan. Opsi ini mengatur
Keyboard Anda di sistem Operasi Kali Linux. Secara default diatur ke Bahasa Inggris Amerika.

Setelah Anda mengklik Continue, Anda akan melihat kemajuan instalasi untuk
beberapa saat kemudian Anda melihat kotak dialog Konfigurasi Jaringan, yang merupakan
langkah berikutnya.

22
STEP – 15 Konfigurasikan Jaringan - Masukkan Nama Host
Di kotak dialog ini Anda akan diminta untuk memasukkan nama host untuk sistem
Anda. Ini menjadi home network anda, kita dapat mengatur apa saja. Masukkan apa saja dan
klik continue.

STEP – 16 Konfigurasi Jaringan – masukkan domain name


Di kotak dialog ini Anda akan diminta untuk memasukkan nama domain untuk sistem
Anda. Ini menjadi jaringan rumah, kita dapat mengatur apa saja seperti example.com

23
STEP – 17 Set User Account dan Password
Di kotak dialog ini Anda akan diminta membuat akun selain dari pengguna root. Harap
perhatikan bahwa ini adalah pengguna selain dari pengguna root. Silakan ketik nama Anda
dan klik Continue. Dan biasanya di tanya 2 kali, masukkan nama serupa agar tidak lupa.

Anda akan diminta mengatur kata sandi pengguna yang Anda buat. Masukkan kata
sandi. Kami akan masuk dengan nama pengguna dan kata sandi ini setelah instalasi selesai.

24
STEP – 18 Konfigurasi Jam
Di kotak dialog ini Anda akan diminta ke zona waktu berdasarkan lokasi yang Anda
pilih sebelumnya. Silakan masukkan zona waktu pilihan Anda dan klik Continue.

Di kotak dialog ini Anda ditanya bagaimana Anda ingin mempartisi disk Anda. Pilih Dipandu -
Gunakan seluruh disk dan klik lanjutkan. Ini adalah opsi default.

STEP – 19 Partisi Disk


Di kotak dialog ini Anda ditanya bagaimana Anda ingin mempartisi disk Anda. Pilih
Gunakan seluruh disk dan klik Continue. Ini adalah opsi default.

25
Dalam kotak dialog ini Anda diminta untuk memilih disk untuk partisi. Pilih sda, disk
VMware Virtual. Seharusnya hanya ada satu opsi. Klik Lanjutkan.

STEP – 20 Pilih Skema Partisi


Dalam kotak dialog ini Anda diminta untuk memilih skema untuk partisi disk. Pilih
default, Semua file dalam satu partisi dan klik Continue.

26
STEP – 21 Ringkasan Partisi Disk
Di kotak dialog ini Anda akan melihat ringkasan partisi disk Anda. Pilih Finish
Partitioning dan Write perubahan ke disk yang harus dipilih secara default. Yang harus Anda
lakukan adalah mengklik Continue.

STEP – 22 Konfirmasi Partisi Disk


Dalam dialog ini Anda diminta untuk mengkonfirmasi Tulis perubahan ke disk. Pilih yes
dan klik Continue.

27
STEP – 23 Tunggu Proses Installasi
Sekarang instalasi sebenarnya dimulai. Tunggu hingga muncul kotak dialog Package
Manager untuk muncul.

STEP – 24 Konfigurasi Paket Manager


Di kotak dialog ini Anda akan bertanya apakah Anda ingin proxy HTTP. Biarkan kosong
dan klik Continue.

28
STEP – 25 Memilih Software
Di layar ini, Anda harus menentukan perangkat lunak apa yang ingin Anda instal. Saya
menerima default dan menerimanya apa adanya. Klik Continue untuk melanjutkan.

STEP – 26 Install Grub boot loader


Di kotak dialog ini Anda akan ditanya apakah Anda ingin menginstal boot loader GRUB.
Pilih Ya dan klik Continue.

29
STEP – 27 Pilih Perangkat untuk install Grub boot loader
Dalam kotak dialog ini Anda akan diminta untuk memilih perangkat boot loader untuk
instalasi GRUB. Pilih / dev / sda dan klik Continue.

STEP – 28 Installasi selesai


Instalasi akan berlanjut dan sekarang Anda akan melihat kotak dialog Instalasi lengkap.
Klik Continue untuk menyelesaikan instalasi dan tunggu VM untuk reboot. Setelah reboot
Anda akan melihat layar boot loader.

Setelah VM dimulai, Anda akan melihat boot loader Grub. Pilih Kali GNU / Linux.

30
Masukkan nama pengguna dan kata sandi Anda

Anda akan masuk ke Kali Desktop 2020.

31
(Jha, 2020)

32
1
MULAI DARI DASAR

Sesuai bahasan kali ini, peretas adalah pelaku. Kami ingin menyentuh dan bermain
sesuatu. Kami juga ingin membuat dan, terkadang, memecahkan banyak hal. Beberapa dari
kita ingin membaca buku-buku panjang teori tentang teknologi informasi sebelum kita bisa
lakukan apa yang paling kita sukai: yaitu “hacking”. Dengan mengingat hal itu, bab ini
dirancang untuk memberi Anda beberapa keterampilan mendasar untuk membuat Anda
terbiasa menggunakan Linux
Dalam bab ini, kami tidak akan membahas satu konsep pun dengan sangat detail—
kami akan membahas cukup untuk memungkinkan Anda bermain dan menjelajah di operasi
sistem Hacking: Linux. Kami akan menyimpan lebih banyak diskusi mendalam untuk bab-bab
selanjutnya.

33
ISTILAH DAN KONSEP PENDAHULUAN
Sebelum kita memulai belajar Dasar-Dasar Linux untuk Hacking, saya ingin
memperkenalkan beberapa istilah yang harus dijelaskan dan beberapa konsep yang akan
dibahas nanti dalam bab ini.
Untuk mengerti filesystem di Linux, kita perlu sedikit mengubah pengertian yang telah
kita anut selama ini terhadap filesystem, khususnya file system di system operasi Windows.
Oleh karena itu, modul ini memerlukan asumsi-asumsi sebagai berikut:
1. Pemahaman terhadap filesystem di Windows ,2. Pemahaman komputer secara umum,
misalnya apa itu direktori, dsbnya.
Dalam modul ini, yang dimaksud dengan filesystem adalah suatu cara
pengorganisasian file dan direktori di dalam suatu media penyimpanan (misalnya harddisk).
1. Direktori / Partisi
Filesytem di dalam Linux sebenarnya ada persamaan dengan Windows, misalnya
kedua OS (Operating System) ini sama-sama mengenai istilah ‘root directory’. Di
dalam Windows tidak terdapat direktori bernama ‘root’, tapi sebenarnya yang
dimaksud dengan root direktori dalam Windows adalah ketika user berada dalam
prompt C:/. Root direktori ini adalah tempat awal dimana nantinya semua direktori
akan bercabang.
2. Linux tidak mengenal ‘Drive C, Drive D’ dll
Disinilah perbedaan cara organisasi file dari Linux. Kita bisa katakan bahwa /etc, /boot,
dll itu adalah ‘partisi’ seperti yang dikenal dalam Windows (walaupun tidak sama
persis. Sebab Windows hanya mengenal 1 partisi utama dan partisi extended.
Sedangkan di dalam Linux kita bisa membuat direktori atau partisi itu sangat banyak).
Jadi /etc, /boot, /home itu bisa dikatakan sebagai partisi, tetapi jangan mengunci
dalam pengertian filesystem Windows. Sebenarnya kita bisa saja membuat direktori
bernama ‘C’ atau ‘D’, tapi hal ini tidak ada gunanya atau hubungannya dengan
organisasi file/direktori dalam Linux. Dalam Linux, file-file dikelompokkan lebih
berdasarkan fungsi, jadi misalnya: semua file konfigurasi akan berada dalam direktori
/etc. Sedangkan Windows menggolongkan file berdasarkan Program, Misalnya
program WinZip, maka boleh dibilang semua file program WinZip akan berada dalam
direktori C:/Program Files/Winzip (kecuali bila diinstall dalam direktori lain).
3. Penamaan File
Sistem penamaan file di dalam Linux lebih fleksibel. Dalam artian, tidak semua file
memerlukan extension seperti halnya di dalam Windows. Jadi tidak akan ditemukan
file berextension ‘exe’ atau ‘com’ di dalam Linux. File-file aplikasi di Linux tidak
memerlukan extension. Extension file dalam Linux hanya berguna untuk menandakan
apa fungsi dari file itu, misalnya extension ‘conf’ untuk file konfigurasi (misalnya:
named.conf), extension ’sh’ untuk file script.

34
Satu lagi yang menarik dari Linux. Device-device seperti floppy disk, harddisk, CDROM,
modem, dll, ditulis dalam bentuk sebuah file. Device? device tersebut dapat dilihat
dalam direktori /dev/ (device).
4. Daftar Direktori Dalam Linux
Seluruh informasi yang tersimpan dalam Linux berada pada sebuah struktur file.
Sistem file yang tersusun dalam direktori-direktori yang menyerupai struktur tree
(seperti pohon dengan akar berada diatas dan cabang dibawah).

/ = root directory
/home = direktori tempat user menaruh filenya. Jadi misalnya user andi akan
memiliki direktori home sbb: /home/andi/
/etc = direktori tempat semua file konfigurasi, baik dari program aplikasi maupun
system Linux
/bin = direktori tempat binary dari program-program yang bisa dijalankan.
/sbin = sama seperti /bin, tapi khususnya untuk program-program yang berkaitan
dengan system.
/tmp = sama seperti direktori direktori temp pada Windows, namun pada Linux
direktori /tmp ini akan dihapus secara periodic
/usr = direktori yang berisi file-file program yang tidak kritis/penting sekali.
/var = direktori tempat menaruh file-file yang berubah-ubah terus, seperti file log, dan
mail.
/boot = direktori tempat menaruh file-file yang berkaitan dengan proses booting dari
Linux
/dev/hda = harddisk IDE pertama Anda
/dev/hda1 = partisi pertama pada harddisk IDE pertama
/dev/hdb2 = partisi kedua pada harddisk IDE kedua
/dev/fd0 = floppy drive pertama
/dev/ttyS1 = serial port yang pertama
/dev/hdc = biasanya CDROM
/dev/sda = device pertama pada SCSI controller

35
Bingung? Ok! gak masalah. orang bijak berkata “bisa karena biasa!”

Directory Linux
Direktori root Linux memiliki beberapa direktori yang merupakan standar direktori pada
banyak distro Linux. Direktori-direktori tersebut antara lain:
bin
Berisi file-file binary standar yang dapat digunakan oleh seluruh user baik user biasa maupun
super user
boot
Berisi file-file yang digunakan untuk booting Linux termasuk kernel image
dev
Berisi file system khusus yang merupakan refleksi device hardware yang dikenali dan
digunakan sistem
etc
Berisi file-file konfigurasi sistem, biasanya hanya boleh diakses oleh super user
home
Berisi direktori-direktori yang merupakan direktori home untuk user biasa dan aplikasi
tertentu
lib
Berisi file-file library yang digunakan untuk mendukung kerja kernel Linux
mnt
Direktori khusus yang disediakan untuk mounting (mengaitkan) device disk storage ke sistem
dalam bentuk direktori
proc
Berisi file system khusus yang menunjukkan data-data kernel setiap saat
root
Direktori home untuk user root (user khusus dengan priviledges hampir tak terbatas)
sbin
Sama seperti direktori bin, tetapi hanya root yang dapat menggunakan binary-binary tersebut
tmp
Berisi file-file sementara yang dibutuhkan sebuah aplikasi yang sedang berjalan
usr
Berisi library, binary, dokumentasi dan file lainnya hasil instalasi user.
var
Berisi file-file log, mailbox dan data-data aplikasi.

36
List Perintah Dasar Linux Yang Wajib Diketahui
• man <perintah> untuk meilhat panduan
Melihat kegunaan dari perintah (melihat buku manual dari sebuah program). Contohnya
seperti | $ man apt | akan menampilkan manual penggunaan dari program apt.
• <perintah> –help untuk panduan ringkas
Hampir sama kegunaannya dengan man, akan tetapi hasil yang dimunculkan lebih ringkas
daripada menggunakan perintah man.
• sudo untuk super user
Menjalankan program sebagai user root atau super user.
• ls untuk melihat direktori
Melihat daftar file & folder yang ada direktori pada saat itu, contohnya | $ ls /var/lib |
digunakan untuk melihat apa saja yang ada pada folder lib.
• cd untuk masuk ke direktori
Masuk ke direktori yang diinginkan, contohnya seperti | $ cd /home/ | untuk menjadikan
folder home sebagai direktori pada saat itu.
• mkdir <nama folder> untuk membuat folder
Membuat folder pada direktori kerja pada saat itu.
• pwd untuk melihat direktori aktif
Melihat direktori kerja yang pada saat itu aktif. Contoh hasilnya “/home/hacking”
• vim untuk membuka text editor
Membuka text editor Vim untuk mengedit teks.
• cp <asal> <tujuan> untuk menyalin file
Menyalin file dan folder, bisa ke folder itu juga atau ke folder yang lain. Seperti | $ cp
/home/test.php /var/www/html | akan memindahkan file test.php ke folder html.
Sedangkan jika menyalin folder harus menggunakan opsi “-r”.
• mv <asal> <tujuan> untuk memindahkan folder
Memindahkan file dan folder, bisa ke folder itu juga atau ke folder yang lain. Seperti | $ cp
/home/test.php /var/www/html | digunakan untuk memindahkan file test.php ke
folder html.
• rm <file> untuk menghapus file

37
Menghapus file, bisa juga untuk menghapus folder pada direktori tertentu.
• find <nama file> untuk mencari file
Mencari file dalam direktori hirarki. Contoh penggunaannya | $ find -name hacking.txt |
• history untuk melihat riwayat
Perintah dasar linux ini digunakan untuk melihat riwayat perintah yang sudah pernah
digunakan sebelumnya. Jika ingin mencari perintah tertentu bisa menggunakan $ history |
grep apt untuk mencari nama perintah yang sudah pernah diketikan dan mengandung
potongan kata apt.
• cat untuk melihat isi file
Melihat isi dari sebuah file, bisa juga untuk menggabungkan isi dari dua buah file. Contohnya
| $ cat hacking0.txt hacking1.txt |.
• echo untuk menampilkan baris teks
Perintah ini digunakan untuk menampilkan satu baris teks. Bisa juga untuk menuliskan sebuah
teks kedalam file, contohnya seperti berikut | $ echo “Teks” >> hacking.txt |. Perintah
tersebut akan menuliskan “Teks” ke dalam file “hacking.txt”, jika file tersebut belum ada
maka otomatis akan dibuat.
• grep untuk mencari kata
Menampilkan baris yang mengandung kata yang sama sesuai dengan pattern, contohnya
seperti | $ grep -i source hacking.txt | maka akan memunculkan baris yang mengandung kata
“source” pada “hacking.txt”.
• wc untuk menampilkan baris baru
Menampilkan baris baru, kata, dan bite pada sebuah file.
• sort untuk mengurutkan
Mengurutkan hasil dari pembacaan isi file.
• chmod untuk mengganti hak akses
Mengganti hak akses pada sebuah file. Contohnya jika ingin menggani hak
akses hacking.txt menjadi 644 menggunakan baris perintah | $ chmod 644 hacking.txt |.
• chown mengganti hak milik
Mengganti pemilik dan group dari sebuah file. Contohnya jika ingin mengubah kepemilikan
hacking.txt menjadi “hack” bisa menggunakan perintah | $ chown hack:hack hacking.txt |.
Kata “hack” di depan merujuk pada user sedangkan “hack” di belakang merujuk pada nama
group.
• su untuk mengganti user id

38
Mengganti user ID, contohnya | $ su <nama user> | atau menjadikan user pada saat itu
menjadi super user.
• passwd untuk mengganti password
Perintah ini digunakan untuk mengganti password dari user. Mengetikan | $ sudo passwd |
mengganti password user pada saat itu, sedangkan | $ sudo passwd hacking | digunakan
untuk mengganti password user “hacking”.
• who untuk menampilkan user
Perintah dasar linux ini digunakan untuk menampilkan user pada saat ini dipakai.
• ps untuk menampilkan snapshot
Menampilkan snapshot process yang sedang berjalan.
• kill untuk menghentikan program
Menghentikan program yang berjalan dengan menggunakan signal. Biasanya perintah ini
ditambahkan opsi “-9” pada saat mengeksekusi. Contohnya seperti | $ sudo kill -9 373 |, 373
adalah PID dari proses yang sedang berjalan.
• tar untuk mengumpulkan file
Ini merupakan program pengarsipan atau untuk mengumpulkan beberapa file menjadi satu
file, dengan ekstensi “namafile.tar”. Perintah ini juga menggunakan beberapa opsi, sebagai
contoh, opsi “c” untuk membuat arsip, opsi “v” untuk operasi verbose, sedangkan “f” untuk
menentukan nama file.
• zip untuk mengkompres file
Alat kompresi file menjadi “,zip”, hampir sama penggunaannya dengan tar.
• unzip untuk mengekstrak file
Mengekstrak/membongkar file “.zip”.
• ssh untuk akses jarak jauh
Mengakses komputer/server dari jarak jauh. Contoh perintah yang bisa digunakan seperti | $
ssh <namauser>@<ip> |.
• scp untuk menyalin file
Menyalin file dari host lain yang terhubung dalam satu jaringan. Contohnya | $ scp <file>
<user>@<ip>:<folder tujuan> |
• fdisk untuk menampilkan partisi
Menampilkan list partisi pada perangkat, biasanya menggunakan opsi “-l”, contohnya | $
sudo fdisk -l |
• mount untuk melampirkan file

39
Melampirkan sebuah filesystem kedalam satu folder besar. Sehingga tidak perlu melakukan
akses langsung ke filesystem. Sebagai contoh menggunakan | $ sudo mount /dev/sda2
/mnt |. Perintah ini akan membuat isi partisi /dev/sda2 bisa diakses melalui /mnt.
• umount untuk melakukan unmount
Mengunlock perintah mount, contohnya | $ umount /mnt | digunakan untuk memutuskan
perintah mount pada folder /mnt.
• du untuk menampilkan ukuran file
Menampilkan ukuran file secara rekursif.
• df untuk menampilkan disk space
Menampilkan penggunaan ruang disk pada filesystem.
• quota menampilkan sisa disk space
Menampilkan ruang disk dan batasannya.
• reboot untuk mulai ulang
Menjalankan perintah restart.
• poweroff untuk mematikan
Menjalankan perintah shutdown.
• gedit untuk membuka editor teks
Membuka Text Editor untuk mengedit teks file.
• kate untuk membuka teks editor
Program yang digunakan sebagai file editor pada KDE, beberapa sistem operasi harus
melakukan instalasi terlebih dahulu. Fungsinya hampir sama seperti Gedit.
• bg membuat proses background
Membuat proses foreground untuk berjalan di background.
• fg <id program> membuat proses foreground
Membuat background proses menjadi foreground proses.
• jobs <id program> menampilkan identitas proses
Menampilkan nama dan ID dari background jobs.
• sed untuk melakukan filter teks
Memfilter teks pada sebuah file dan menggantinya dengan teks yang baru. Contoh
penggunaannya sed | ‘s/niaga/hacking/g’ hacking.txt |
• awk untuk memindahkan teks

40
Perintah ini digunakan untuk memindah teks dan memproses bahasa.
• locate untuk mencari file
Digunakan untuk menemukan atau mencari file.
• ifconfig untuk melihat ip
Melihat IP yang sedang terkoneksi dan network device apa saja yang tersedia.
• date untuk menampilkan tanggal
Menampilkan tanggal hari ini.
• nano merubah teks editor
Perintah digunakan sebagai text editor yang tidak perlu membuka jendela baru. Hampir sama
dengan Vi namun lebih praktis.
• top melihat proses secara urut
Melihat semua proses yang sedang berjalan, diurutkan dari proses yang paling besar.
Fungsinya hampir sama seperti system monitor.
• clear membersihkan terminal
Membersihkan jendela terminal. Jadi isi jendela terminal akan kosong, namun jika di scroll
keatas maka perintah yang sebelumnya dijalankan masih bisa terlihat.
• dpkg -i <namapackage>.deb instalasi paket
Berguna untuk melakukan instalasi paket dengan ekstensi “.deb”. Terkadang bisa juga
menggunakan program “gdebi”, tetapi harus install.
• uname melihat versi kernel
Menampilkan versi kernel yang dipakai, tanggal instalasi, dan jenis arsitektur sistem operasi.
• * untuk mencantumkan deskripsi
Ini adalah sebuah tanda yang digunakan untuk mendeskripsikan satu string yang digunakan
untuk memberikan deskripsi singkat dari satu elemen. (Yasin, 2018)

41
Mengatur Hak Akses di Linux
Tidak sedikit pengguna Linux pemula yang mengalami kebingungan karena tidak dapat
mengoperasikan suatu program atau mengakses sebuah file atau direktori dikarenakan oleh
hak akses yang ada pada setiap file dan direktori yang ada pada Linux.
Linux mengenal hak akses yang mengatur setiap user sehingga tiap user hanya dapat
mengakses file-file atau direktori tertentu saja, hal ini digunakan untuk kepentingan
keamanan sistem.
Dua perintah (program) dalam Linux yang digunakan untuk mengatur hak akses tersebut
adalah chmod dan chown. Program chmod digunakan untuk mengubah hak akses suatu file,
sedangkan chown digunakan untuk mengganti pemilik file tersebut.

Hak Akses dalam Linux


Sebelum melangkah lebih jauh mengenai penggunaan perintah diatas, sebelumnya perlu
dijelaskan terlebih dahulu mengenai hak akses di dalam Linux.
Setiap file dan direktori yang ada dalam sistem linux memiliki tiga buah hak akses, satu untuk
user itu sendiri, kemudian untuk user dalam grup yang sama dengan pemilik file dan yang
terakhir untuk user lainnya.
Anda dapat melihat hak akses sebuah file dengan menggunakan perintah ls l, perhatikan
contoh dibawah ini:
-rw-rw-r– 1 postgres postgres 41527 Jul 12 2001 summary.pdf
drwxrwxr-x 2 postgres postgres 4096 Sep 20 2002 Suse
-rw-r–r– 1 root root 4935 Aug 23 2001 T123456.log
-rw-r–r– 1 postgres postgres 13335 Apr 10 17:04 tchart2.java
Karakter pertama menunjukkan jenisnya, jika berisi karakter d, berarti itu adalah direktori
sedangkan jika kosong berarti file. Sembilan karakter berikutnya menunjukkan hak aksesnya,
dengan tiga karakter pertama menunjukkan hak akses untuk user tersebut, tiga karakter
berikutnya menunjukkan hak akses untuk grup nya dan tiga karakter terakhir menunjukkan
hak akses untuk user lain.
Masing-masing arti karakter tersebut dapat dilihat pada tabel berikut:
Karakter Arti Nilai
r (read) Hak akses untuk membaca 4
w (write) Hak akses untuk menulis 2
x (exec) Hak akses untuk menjalankan 1
Dengan mengkombinasikan nilai pada masing-masing hak akses tersebut, akan didapatkan
hak akses masing-masing, perhatikan tabel berikut:

42
Hak Akses Nilai Arti
— 0 Tidak memiliki hak akses (tidak dapat di akses)
r– 4 Dapat dibaca dan ditulis (diedit)
rw- 6 Dapat dibaca dan ditulis (diedit)
rwx 7 Dapat dibaca, ditulis dan dieksekusi (dijalankan)
r-x 5 Dapat dibaca dan dijalankan, tetapi tidak dapat diedit
–x 1 Hanya dapat dijalankan
Berikut contoh penerapannya:
Hak Akses Nilai Arti
-rw——- 600 Pemilik memiliki hak akses baca dan tulis, sedangkan orang lain tidak
memiliki hak akses apapun. Set dengan hak akses ini supaya file anda
tidak dapat dibaca orang lain, biasanya digunakan untuk file-file
dokumen
-rw-r–r– 644 Pemilik memiliki hak akses baca dan tulis sedangkan orang lain hanya
dapat membaca saja. Gunakan hak akses ini jika anda ingin orang lain
dapat membaca file anda
-rw-rw-rw- 666 Dengan hak akses ini, orang lain juga akan dapat membaca dan
merubah file anda
-rwx—— 700 Pemilik dapat membaca, menulis dan menjalankan file ini, hak akses
ini yang biasanya digunakan untuk menjalankan program
-rwxr-xr-x 755 Pemilik memiliki hak akses baca, tulis dan menjalankan file ini,
sedangkan orang lain hanya dapat membaca dan menjalankan file
tersebut
drwx—— 700 Hanya pemilik yang dapat mengakses, membaca dan menulis pada
direktori tersebut. Setiap direktori harus memiliki hak akses x untuk
dapat diakses
drwxr-xr-x 755 Isi direktori ini hanya dapat dirubah oleh pemilik, tetapi orang lain
dapat membaca isi direktori tersebut

Menggunakan Perintah chmod


Untuk menggunakan chmod, perintahnya adalah:
# chmod hakakses namafile
misalnya:

43
# chmod 644 coba.txt

perintah tersebut akan mengubah hak akses file coba.txt menjadi seperti berikut:
-rw-r–r– 1 postgres postgres 41527 Jul 12 2001 coba.txt
Untuk mengganti hak akses sebuah direktori beserta dengan isinya, gunakan parameter R,
dengan parameter tersebut, chmod akan dijalankan secara rekursif, misalnya seluruh file yang
ada pada direktori /home/user/public_html akan dirubah hak aksesnya menjadi 755, maka
perintahnya adalah sebagai berikut:

# chmod R 755 /home/user/public_html

Menggunakan Perintah chown


Perintah chown digunakan untuk mengganti pemilik sebuah file, perintah ini hanya dapat
digunakan oleh user root. Perintah ini hanya dapat digunakan oleh user root. Perintahnya
adalah sebagai berikut:

# chown namauser.namagrup namafile

misalnya:

# chown user.user coba.txt

perintah chown juga dapat digunakan dengan menggunakan parameter R, contohnya adalah
sebagai berikut:

# chown R apache.apache /var/www/html

Perintah chattr
Seringkali secara tidak sengaja kita menghapus atau mengedit sebuah file penting, di dalam
Linux tidak ada fasilitas undelete, jadi file yang telah terhapus tidak dapat dikembalikan lagi.
Perintah (program) chattr digunakan untuk melindungi sebuah file sehingga tidak akan dapat
dihapus ataupun dirubah dengan perintah apapun. Perintah chattr memberikan atribut i pada
file yang dilindungi, perintahnya:

# chattr +i namafile

misal:

# chattr +i penting.txt

setelah perintah tersebut dijalankan, gunakan perintah ls l untuk melihat hasilnya:


jika suatu ketika file ini akan diedit atau dihapus, terlebih dahulu atribut diatas harus dilepas,
untuk melepasnya gunakan perintah berikut:

# chattr i namafile

(ahmadfihris, 2014)

44
2
TEXT MANIPULATION
Ketika Anda bekerja dengan linux, antarmuka pengguna grafis tidak selalu tersedia. Dalam
kebanyakan kasus, Anda hanya akan memiliki akses ke terminal remote machine, di mana
Anda baru saja masuk menggunakan ssh. Dalam bab ini kami mencantumkan perintah linux
dasar untuk manipulasi file / teks yang Anda perlukan. Perintah-perintah ini sangat berguna
untuk bermain-main dengan file dalam suatu sistem. Tidak harus sistem jarak jauh sama
sekali, untuk keperluan eksperimen, Anda bisa membuka terminal secara lokal. Coba saja
setiap perintah dengan file teks apa pun pada sistem operasi berbasis unix.

45
cat - salah satu perintah linux yang mendasar
cat(kucing) Tidak, perintah ini tidak memanggil Kucing. Itu adalah singkatan dari
'concatenate' dan hanya menampilkan konten file (atau beberapa file) ke terminal. perintah
cat membaca file secara berurutan dan menulisnya ke output standar, yang biasanya terminal
jika Anda menjalankannya dari dalam terminal.
Opsi yang berguna untuk cat:
-b mengeluarkan nomor baris yang sesuai mulai dari 1 dan juga, jangan tampilkan
baris kosong.
-n cukup beri nomor pada garis keluaran, jangan abaikan baris yang kosong.
-s dempetkan garis kosong yang berdekatan ke hanya satu entri.
Contoh untuk cat command:
Tampilkan isi file ‘program.c’, dan tampilkan nomor baris

$ cat -n program.c

Tampilkan konten file ‘program.c’ dan ‘program.py’

$ cat program.c program.py

The Less Command:


less adalah perintah lain yang sangat sederhana yang hanya menyangga output di
layar. Biasanya digunakan untuk menampilkan file yang sangat besar di mana menggunakan
perintah cat mungkin membutuhkan waktu lama untuk ditampilkan di layar. Dengan kata lain,
kurang bisa menangani file mulai dari 50MB hingga 500GB. Perintah less menampilkan jumlah
garis N pertama yang dapat masuk ke layar Anda dan kemudian menggunakan tombol enter
atau return Anda dapat menggulir seluruh file sampai Anda akhirnya mencapai akhir file.
Mungkin akan memakan waktu cukup lama jika ada file 500GB.
Contoh dari Less command:

$ less namafile

Tekan q untuk keluar.

The diff Command:


Ini adalah salah satu perintah paling sederhana dalam daftar perintah linux dasar ini.
Perintah diff hanya membandingkan dua sumber teks dan menampilkan perbedaannya. Ini
membandingkan file baris demi baris untuk menemukan perbedaan.

46
Options untuk `diff`:
-i abaikan perbedaan huruf dalam garis.
-w abaikan semua white space.
-y menunjukkan perbedaan berdampingan dalam dua kolom.

Contoh untuk diff:


Menampilkan perbedaan antara file A.txt dan B.txt

$ diff A.txt B.txt

Abaikan semua perbedaan huruf besar-kecil, dan perlihatkan perbedaan berdampingan


dalam dua kolom.

$ diff -I -y A.txt B.txt

The sort Command:


Sort utilitas mengurutkan baris teks atau file biner. Ini dapat digunakan untuk
mengurutkan angka, string atau data biner. Program linux ini dapat menangani sejumlah data
yang dapat Anda lemparkan (tetapi secara realistis). Jika file hanya berisi string, maka akan
diurutkan secara leksikografis. sortir juga dapat digunakan untuk mengidentifikasi kunci
secara unik dalam dataset besar yang berisi kunci duplikat.
Contoh dari perintah sort:
Misalkan, Anda memiliki file yang berisi N baris karyawan dan setiap karyawan hadir
beberapa kali. Anda ingin mengidentifikasi semua id karyawan yang unik dengan cara
diurutkan. Biasanya perintah sortir digunakan untuk tugas semacam ini, kadang-kadang dapat
digabungkan dengan program lain juga.
Sortir dan keluarkan hanya nilai unik (hilangkan duplikat)

$ sort -u karyawan_id.txt

Urutkan catatan unik secara terbalik.

$ sort -u -r karyawan_id.txt

Urutkan semua nama unik yang mengandung ‘H 'dalam file nama karyawan yang diberikan.

$ sort karyawan_nama.txt | grep -i ‘h’ | sort -u

47
Pada perintah di atas, kami hanya memipatkan output dari perintah cat ke grep yang
menyaring nama-nama yang mengandung ‘h’ dan akhirnya melewati output dari grep ke
utilitas sortir.

The head and tail Commands:


Perintah head digunakan untuk menampilkan kepala file, yaitu menampilkan baris N
pertama file. Demikian pula, perintah tail menampilkan baris N terakhir file. tail adalah
perintah linux yang sangat berguna untuk memonitor log waktu nyata. Ini memungkinkan
Anda untuk menambahkan opsi "ikuti" di mana ia menampilkan semua konten baru yang
ditambahkan ke file secara realtime.
Contoh dari head dan tail:
Menampilkan 10 baris pertama pada file.

$ head -n 10 karyawan_nama.txt

Menampilkan 10 baris terakhir pada file.

$ tail -n 10 karywan_nama.txt

Menampilkan 10 baris pertama dari 1000 baris terakhir file log.

$ tail -n 1000 server.log | head -n 10

Melihat update realtime log yang di tambahkan di file.

$ tail -f server.log

Melihat update realtime log yang di tambahkan di file dengan output filter yang berisi string
‘ERROR’ saja.

$ tail -f server.log | grep ‘ERROR’

The grep Command:


Sejauh ini, ini adalah salah satu perintah yang paling berguna dalam sistem berbasis
unix karena sangat cepat. Itu adalah singkatan dari "Global Regular Expression Print", yang
pada dasarnya berarti mencari secara global ekspresi reguler yang disediakan dan mencetak
hasilnya. grep adalah salah satu perintah dasar linux yang dapat digabungkan dengan
program lain untuk membaca input dengan berbagai cara. Perintah grep dapat digunakan
untuk menemukan string atau mencocokkan ekspresi reguler di dalam file atau langsung dari
output standar program lain. Jika Anda menyimpan daftar perintah linux dasar, tambahkan
ini ke 10 teratas Anda.
Frequently used options of `grep` command:
-A n Print n number of lines after the matched line
Usage: grep -A 10 abc file.txt
48
-B n Print n number of lines before the matched line.
Usage: grep -B 10 abc file.txt

-C n Print n lines before as well as after the matched line.


Usage: grep -C 10 abc file.txt

-c Print the count of the matched occurrences of the search string.


Usage: grep -c abc file.txt

-i Ignore case for the search string, match all the upper case, lower case or mixed
occurrences.
Usage: grep -i john names.txt

-r Search recursively inside the files of all the subdirectories.


Usage: grep -r nginx /etc/ , grep -r nginx .
(kumar, 2019)

49
3
ANALISA DAN MANAJEMEN JARINGAN
Memahami jejaring sangat penting untuk setiap calon hacker. Di banyak situasi, Anda
akan meretas sesuatu melalui jaringan, dan peretas yang baik perlu tahu cara terhubung dan
berinteraksi dengan jaringan itu. Untuk Misalnya, Anda mungkin perlu terhubung ke
komputer dengan Internet Anda Alamat protokol (IP) yang disembunyikan dari tampilan, atau
Anda mungkin perlu mengarahkan ulang permintaan Domain Name System (DNS) target ke
sistem Anda; jenis ini tugas relatif sederhana tetapi membutuhkan sedikit pengetahuan
jaringan Linux. Bab ini menunjukkan kepada Anda beberapa alat Linux penting untuk
menganalisis dan mengelola jaringan selama petualangan peretasan jaringan Anda.

50
Menganalisa jaringan dengan ifconfig
Perintah ifconfig adalah salah satu alat paling dasar untuk memeriksa dan berinteraksi
dengan antarmuka jaringan yang aktif. Anda dapat menggunakannya untuk menanyakan
koneksi jaringan aktif dengan hanya memasukkan ifconfig di terminal. Cobalah sendiri,

kali >ifconfig ➊eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f

➋inet addr:192.168.181.131 ➌Bcast:192.168.181.255 ➍Mask:255.255.255.0


--snip—

➎lo Linkencap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0


--snip—

➏wlan0 Link encap:EthernetHWaddr 00:c0:ca:3f:ee:02

Seperti yang Anda lihat, perintah ifconfig menampilkan beberapa informasi yang
berguna tentang antarmuka jaringan yang aktif pada sistem. Di bagian atas output adalah
nama antarmuka pertama yang terdeteksi, eth0 ➊, yang pendek untuk Ethernet0 (Linux mulai
menghitung dari 0 daripada 1). Ini koneksi pertama. Jika ada lebih banyak antarmuka Ethernet
kabel, mereka akan muncul di output menggunakan format yang sama (eth1, eth2, dan
sebagainya di).
Jenis jaringan yang digunakan (Ethernet) didaftar berikutnya, diikuti oleh HWaddr dan
sebuah alamat; ini adalah alamat unik global yang dicap pada setiap alamat sepotong
perangkat keras jaringan — dalam hal ini, kartu antarmuka jaringan (NIC), biasanya disebut
sebagai alamat media access control (MAC).
Baris kedua berisi informasi tentang alamat IP saat ini ditugaskan ke antarmuka
jaringan itu (dalam hal ini, 192.168.181.131 ➋); Bcast ➌, atau alamat broadcast, yang
merupakan alamat yang digunakan untuk mengirim informasi untuk semua IP di subnet; dan
akhirnya mask jaringan (Mask ➍), yang digunakan untuk menentukan bagian mana dari
alamat IP yang terhubung ke Internet jaringan lokal. Anda juga akan menemukan lebih banyak
info teknis di bagian output, tetapi itu berada di luar cakupan bab dasar-dasar jaringan Linux
ini.

Bagian output berikutnya menunjukkan koneksi jaringan lain disebut lo ➎, yang


merupakan kependekan dari alamat loopback dan kadang-kadang disebut localhost. Ini
adalah alamat perangkat lunak khusus yang menghubungkan Anda ke sistem milik anda.
Perangkat lunak dan layanan yang tidak berjalan di sistem Anda tidak dapat
menggunakannya. Anda akan menggunakan lo untuk menguji sesuatu di sistem Anda, seperti
web Anda sendiri server. localhost umumnya diwakili dengan alamat IP 127.0.0.1.

51
Koneksi ketiga adalah antarmuka wlan0 ➏. Ini hanya muncul jika Anda memiliki
antarmuka nirkabel atau adaptor, seperti yang saya lakukan di sini. Perhatikan bahwa ini juga
ditampilkan alamat MAC perangkat itu (HWaddr).
Informasi ini dari ifconfig memungkinkan Anda untuk terhubung ke dan memanipulasi
pengaturan jaringan area lokal Anda (LAN), keterampilan penting untuk peretasan.

Mengecek Perangkat Wireless dengan iwconfig


Jika Anda memiliki adaptor nirkabel, Anda dapat menggunakan perintah iwconfig
untuk mengumpulkan informasi penting pada wireless seperti alamat IP adaptor, alamat
MAC-nya, mode apa yang ada di dalamnya, dan banyak lagi. Informasi yang Anda dapat di
kumpulkan dari perintah ini sangat penting ketika Anda menggunakan tools wireless hacking
seperti aircrack-ng.
Menggunakan terminal, mari kita lihat beberapa perangkat wireless dengan iwconfig

kali >iwconfig wlan0 IEEE 802.11bg ESSID:off/any


Mode:Managed Access Point: Not Associated Tx-Power=20 dBm
--snip—
lo no wireless extensions
eth0 no wireless extensions

Output di sini memberitahu kita bahwa satu-satunya antarmuka jaringan dengan


nirkabel ekstensi adalah wlan0, yang kita harapkan. Baik lo maupun eth0 tidak ekstensi
nirkabel apa pun.
Untuk wlan0, kita belajar apa standar nirkabel 802.11 IEEE dimana perangkat
kitamampu: b dan g, dua standar komunikasi nirkabel awal. kebanyakan perangkat nirkabel
sekarang termasuk n juga (n adalah standar terbaru).
Kita juga belajar dari iwconfig mode ekstensi nirkabel (dalam hal ini case, Mode:
Managed, berbeda dengan mode monitor atau promiscuous). Baik perlu mode promiscuous
untuk memecahkan kata sandi nirkabel.
Selanjutnya, kita dapat melihat bahwa adaptor nirkabel tidak terhubung (Tidak
Terkait) ke titik akses (AP) dan kekuatannya adalah 20 dBm, yang mewakili kekuatan sinyal.
Kami akan menghabiskan lebih banyak waktu dengan ini informasi dalam Bab 12.

Merubah informasi jaringan


Mampu mengubah alamat IP Anda dan informasi jaringan lainnya adalah keterampilan
yang berguna karena itu akan membantu Anda mengakses jaringan lain saat muncul sebagai
perangkat tepercaya di jaringan tersebut. Misalnya, dalam denial-of-service (DoS) attack,
Anda dapat menipu IP Anda sehingga serangan itu muncul berasal dari sumber lain, sehingga

52
membantu Anda menghindari penangkapan IP selama analisis forensik. Ini adalah tugas yang
relatif sederhana di Linux, dan selesai dengan perintah ifconfig.

Merubah Alamat IP
Untuk mengubah alamat IP Anda, masukkan ifconfig diikuti oleh interface yang Anda
ingin tetapkan ulang dan alamat IP baru yang ingin Anda tetapkan untuk interface tersebut.
Misalnya, untuk menetapkan alamat IP 192.168.181.115 ke interface eth0, Anda akan
memasukkan yang berikut:

kali >ifconfig eth0 192.168.181.115


kali >

Ketika Anda melakukan ini dengan benar, Linux hanya akan mengembalikan perintah
dan diam saja. Ini hal yang bagus bukan!
Kemudian, ketika Anda kembali memeriksa koneksi jaringan Anda dengan ifconfig,
Anda harus melihat bahwa alamat IP Anda telah berubah menjadi alamat IP baru Anda baru
saja disetting.

Merubah NetMask dan alamat Broadcast


Anda juga dapat mengubah network mask (netmask) dan Broadcast address Anda
dengan perintah ifconfig. Misalnya, jika Anda ingin menetapkan hal yang sama pada interface
eth0 dengan netmask 255.255.0.0 dan alamat broadcast dari 192.168.1.255, Anda akan
memasukkan perintah berikut ini:

kali >ifconfig eth0 192.168.181.115 netmask 255.255.0.0 broadcast 192.168.1.255

kali >

Sekali lagi, jika Anda telah melakukan semuanya dengan benar, Linux merespons
dengan command prompt baru. Sekarang masukkan ifconfig lagi untuk memverifikasi bahwa
masing-masing parameter telah sesuai diubah.

Spoofing MAC address


Anda juga dapat menggunakan ifconfig untuk mengubah alamat MAC Anda (atau
HWaddr). Itu Alamat MAC secara global unik dan sering digunakan sebagai langkah
pengamanan menjauhkan hacker dari jaringan — atau untuk melacaknya. Mengubah MAC
Anda alamat untuk Spoofing alamat MAC yang berbeda hampir sepele dan dinetralkan
langkah-langkah keamanan tersebut. Dengan demikian, ini adalah teknik yang sangat berguna
untuk membypass kontrol akses jaringan.
Untuk menipu alamat MAC Anda, cukup gunakan perintah ifconfig command down
options untuk menghapus interface (eth0 dalam kasus ini). Lalu masukkan perintah ifconfig
diikuti oleh nama interface (hw untuk perangkat keras, ether untuk Ethernet) dan alamat MAC

53
palsu yang baru. Akhirnya, bawa interface cadangan dengan opsi up untuk perubahan terjadi.
Ini dia sebuah contoh:

kali >ifconfig eth0 down


kali >ifconfig eth0 hw ether 00:11:22:33:44:55
kali >ifconfig eth0 up

Sekarang, ketika Anda memeriksa pengaturan Anda dengan ifconfig, Anda akan
melihatnya HWaddr telah berubah menjadi alamat IP palsu Anda yang baru!

Menetapkan Alamat IP Baru dari DHCP Server


Linux memiliki server Dynamic Host Configuration Protocol (DHCP) , dimana DHCP itu
menjalankan daemon — proses yang berjalan di latar belakang — disebut dhcpd, atau
daemon dhcp. Server DHCP memberikan alamat IP ke semua sistem pada subnet dan
menyimpan file log yang alamat IP-nya dialokasikan mesin pada satu waktu. Ini membuatnya
menjadi sumber yang bagus untuk forensik analis untuk melacak hacker setelah serangan
terjadi. Karena itu, berguna untuk memahami cara kerja server DHCP.
Biasanya, untuk terhubung ke internet dari LAN, Anda harus memiliki IP yang
ditetapkan DHCP. Karena itu, setelah menetapkan alamat IP statis, Anda harus kembali dan
dapatkan alamat IP baru yang ditetapkan DHCP. Untuk melakukan ini, Anda bisa selalu reboot
sistem Anda, tetapi saya akan menunjukkan cara membuat DHCP baru tanpa harus
mematikan sistem Anda dan merestartnya.
Untuk meminta alamat IP dari DHCP, cukup hubungi server DHCP dengan perintah
dhclient diikuti oleh antarmuka yang Anda inginkan alamatnya ditugaskan. Distribusi Linux
yang berbeda menggunakan klien DHCP yang berbeda, tetapi Kali dibangun di atas Debian,
yang menggunakan dhclient. Karena itu, Anda dapat menetapkan alamat baru seperti ini:

Kali >dhclient eth0

Perintah dhclient mengirimkan permintaan DHCPDISCOVER dari jaringan antarmuka


yang ditentukan (di sini, eth0). Kemudian menerima tawaran (DHCPOFFER) dari Server DHCP
(192.168.181.131 dalam kasus ini) dan mengonfirmasi IP tugas ke server DHCP dengan
permintaan dhcp.

kali >ifconfig
eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f
inet addr:192.168.181.131 Bcast:192.168.181.131 Mask:255.255.255.0

Tergantung pada konfigurasi server DHCP, alamat IP ditugaskan dalam setiap kasus
mungkin berbeda.

54
Sekarang ketika Anda memasukkan ifconfig, Anda akan melihat bahwa server DHCP
telah menetapkan alamat IP baru, alamat broadcast baru, dan netmask baru ke interface
jaringan Anda eth0.

Manipulasi DNS (Domain Name System)


Peretas dapat menemukan harta karun informasi tentang target di Domainnya Sistem
Nama (DNS). DNS adalah komponen penting dari internet, dan meskipun dirancang untuk
menerjemahkan nama domain ke alamat IP, seorang hacker dapat menggunakannya untuk
mengumpulkan informasi tentang target.

Memerika DNS dengan ‘’dig’’


DNS adalah layanan yang menerjemahkan nama domain seperti hackers-arise.com ke
alamat IP yang sesuai; dengan cara itu, sistem Anda tahu cara mencapainya. Tanpa DNS, kita
semua harus mengingat ribuan alamat IP tersebut.
Salah satu perintah yang paling berguna untuk calon hacker adalah dig, menawarkan
cara untuk mengumpulkan informasi DNS tentang domain target. informasi DNS yang
disimpan dapat menjadi bagian penting dari pengintaian awal sebelum attacking. Informasi
ini dapat mencakup alamat IP dari server nama target (server yang menerjemahkan nama
target menjadi Alamat IP), server email target, subdomain dan Alamat IP yang berpotensi.
Misalnya, masukkan dig hackers-arise.com dan tambahkan opsi ns (kependekan dari
nama server).

kali >dig hackers-arise.com ns


--snip—
;; QUESTION SECTION:
;hackers-arise.com. IN NS
;; ANSWER SECTION:
hackers-arise.com. 5 IN NS ns7.wixdns.net.
hackers-arise.com. 5 IN NS ns6.wixdns.net.
;; ADDITIONAL SECTION:
ns6.wixdns.net. 5 IN A 216.239.32.100
--snip--

Perhatikan juga dalam BAGIAN TAMBAHAN bahwa permintaan dig ini


mengungkapkan IP alamat (216.239.32.100) dari server DNS yang melayani hackers-
arise.com.

55
Anda juga dapat menggunakan perintah dig untuk mendapatkan informasi di server
email terhubung ke domain dengan menambahkan opsi mx (mx adalah singkatan dari mail
server pertukaran). Informasi ini sangat penting untuk serangan pada sistem email

kali >dig hackers-arise.com mx


--snip—
;; QUESTION SECTION:
;hackers-arise.com. IN MX
;; AUTHORITY SECTION:
hackers-arise.com. 5 IN SOA ns6.wixdns.net. support.wix.com 2016052216 10800 3600 604 800 3600
--snip--

Server DNS Linux yang paling umum adalah Berkeley Internet Name Domain (BIND).
Dalam beberapa kasus, pengguna Linux akan menyebut DNS sebagai BIND, tetapi jangan
bingung: DNS dan BIND keduanya memetakan masing-masing domain nama ke alamat IP

Mengubah Nama DNS Server


Dalam beberapa kasus, Anda mungkin ingin menggunakan server DNS lain. Untuk
melakukannya, Anda akan edit file plaintext bernama /etc/resolv.conf pada sistem. Buka file
itu di a editor teks — saya menggunakan Leafpad. Kemudian, pada baris perintah Anda,
masukkan nama persis editor Anda diikuti oleh lokasi file dan nama file. Sebagai contoh

kali >leafpad /etc/resolv.conf

akan membuka file resolv.conf di direktori / etc di editor teks yang saya tentukan,
Leafpad. File tersebut akan terlihat seperti

Seperti yang Anda lihat pada baris 3, nama server saya disetel ke server DNS lokal di
192.168.181.2. Itu berfungsi dengan baik, tetapi jika saya ingin menambah atau mengganti
DNS itu server dengan, katakanlah, server DNS publik Google di 8.8.8.8, saya akan
menambahkan baris berikut dalam file /etc/resolv.conf untuk menentukan nameserver:

nameserver 8.8.8.8

56
Maka saya hanya perlu menyimpan file. Namun, Anda juga bisa mencapainya hasil
yang sama secara eksklusif dari baris perintah dengan memasukkan berikut:

kali >echo "nameserver 8.8.8.8"> /etc/resolv.conf

Jika Anda membuka file /etc/resolv.conf sekarang, Anda akan melihat bahwa itu
menunjuk DNS meminta ke server DNS Google daripada DNS lokal server anda. Sistem Anda
sekarang akan pergi ke server DNS publik Google untuk menyelesaikan nama domain ke
alamat IP. Ini bisa berarti mengambil nama domain sedikit lebih lama untuk diselesaikan
(mungkin milidetik). Karena itu, untuk mempertahankan mempercepat tetapi tetap
menggunakan opsi menggunakan server publik, Anda mungkin ingin simpan server DNS lokal
dalam file resolv.conf dan ikuti dengan server DNS publik. Sistem operasi menanyakan setiap
server DNS yang terdaftar dalam urutan muncul di /etc/resolv.conf, jadi sistem hanya akan
merujuk server DNS publik jika nama domain tidak dapat ditemukan di lokal Server DNS.

Memetakan Alamat IP
File khusus pada sistem Anda yang disebut file host juga menjalankan domain
terjemahan nama-alamat IP. File hosts terletak di / etc / hosts, dan baik seperti halnya dengan
DNS, Anda dapat menggunakannya untuk menentukan alamat IP-domain Anda sendiri untuk
pemetaan nama. Dengan kata lain, Anda dapat menentukan alamat IP Anda browser masuk
ke saat Anda memasukkan www.microsoft.com (atau domain lainnya) ke dalam browser,
daripada membiarkan server DNS memutuskan. Sebagai seorang hacker, ini dapat berguna
untuk membajak koneksi TCP pada jaringan area lokal Anda untuk mengarahkan lalu lintas ke
server web jahat dengan alat seperti dnsspoof.
Dari baris perintah, ketikkan perintah berikut (Anda bisa gantikan editor teks pilihan
Anda untuk leafpad):

kali >leafpad /etc/hosts

Anda sekarang akan melihat file host Anda, yang akan terlihat seperti

Secara default, file host hanya berisi pemetaan untuk hosting lokal Anda di 127.0.0.1,
dan nama host sistem Anda (dalam hal ini, Kali, di 127.0.1.1). Tetapi Anda dapat
menambahkan alamat IP apa pun yang dipetakan ke domain apa pun yang Anda sukai.

57
Sebagai contoh bagaimana ini dapat digunakan, Anda bisa memetakan
www.bankofamerica.com ke situs web lokal Anda, di 192.168.181.131.

127.0.0.1 localhost
127.0.1.1 kali
192.168.181.131 bankofamerica.com
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Pastikan Anda menekan TAB antara alamat IP dan domain, *ingat bukan spasi.
Ketika Anda semakin terlibat dalam upaya peretasan dan pelajari alat seperti dnsspoof
dan Ettercap, Anda akan dapat menggunakan file host untuk mengarahkan setiap lalu lintas
di LAN Anda yang mengunjungi www.bankofamerica.com ke web server anda di
192.168.181.131. (OccupyTheWeb, 2019)
Cukup mudah, bukan?

58
4
TAMBAH DAN HAPUS SOFTWARE

Salah satu tugas paling mendasar di Linux — atau sistem operasi apa pun—
menambah dan menghapus perangkat lunak. Anda sering harus menginstal perangkat lunak,
itu tidak support dengan distribusi Anda atau menghapus perangkat lunak yang tidak
diinginkan yang memakan ruang hard drive
Beberapa perangkat lunak memerlukan perangkat lunak lain untuk dijalankan, dan
Anda terkadang temukan bahwa Anda dapat mengunduh semua yang Anda butuhkan
sekaligus dalam suatu perangkat paket software, yang merupakan sekelompok file —
biasanya libraries dan depedensi lainnya — yang Anda perlukan agar perangkat lunak dapat
berjalan dengan sukses. Ketika Anda menginstal paket, semua file di dalamnya diinstal
bersama, bersama dengan skrip untuk membuat dan memuat perangkat lunak lebih
sederhana.
Dalam bab ini, kami menggunakan tiga metode utama untuk menambahkan
perangkat lunak baru: manajer paket apt, manajer instalasi berbasis GUI, dan git.

59
Menggunakan apt untuk menghandle Software
Dalam distribusi Linux berbasis Debian, yang mencakup Kali dan Ubuntu, the manajer
perangkat lunak default adalah Advanced Packaging Tool, atau apt, yang perintah utama
adalah apt-get. Dalam bentuknya yang paling sederhana dan paling umum, Anda dapat
menggunakan apt-get untuk mengunduh dan menginstal paket perangkat lunak baru, tetapi
Anda juga dapat memperbarui dan meningkatkan perangkat lunak dengannya.

Mencari Package
Sebelum mengunduh paket perangkat lunak, Anda dapat memeriksa apakah paket
yang Anda butuhkan tersedia dari repositori Anda, yang merupakan tempat di mana sistem
operasi Anda menyimpan informasi. Alat apt memiliki pencarian fungsi yang dapat memeriksa
apakah paket tersebut tersedia. Sintaksnya adalah:

apt-cache search keyword

Perhatikan bahwa kami menggunakan perintah apt-cache untuk mencari cache apt,
atau letak penyimpanan nama paket. Jadi, jika Anda mencari sistem deteksi intrusi Snort,
misalnya, Anda akan memasukkan perintah ditampilkan di bawah ini:

kali >apt-cache search snort


fwsnort - Snort-to-iptables rule translator
ippl - IP protocols logger
--snip—
snort - flexible Network Intrusion Detection System
snort-common - flexible Network Intrusion Detection System - common files
--snip--

60
Seperti yang Anda lihat, banyak file memiliki kata kunci Snort di dalamnya, tetapi di
dekat bagian tengah output, kita melihat snort – flexible Network Intrusion Detection System.
Itu yang kita cari!

Menambahkan Software
Untuk menginstal perangkat lunak dari standar sistem operasi Anda repositori di
terminal, gunakan perintah apt-get, diikuti oleh instal kata kunci dan kemudian nama paket
yang ingin Anda instal. Sintaksnya terlihat seperti ini:

apt-get install packagename

Menghapus Software
Ketika ingin menghapus sebuah software, gunakan kembali apt-get dengan opsi
remove, sintaksnya terlihat seperti ini:

apt-get remove packagename

Namun jika kalian ingin menghapus total bisa menggunakan perintah berikut

apt-get purge packagename

Cukup masukkan Y saat diminta untuk melanjutkan pembersihan perangkat lunak


paket dan file konfigurasi.

Mengupdate paket
Repositori perangkat lunak akan diperbarui secara berkala dengan perangkat lunak
baru atau versi baru dari perangkat lunak yang ada. Pembaruan ini tidak menjangkau Anda
secara otomatis, jadi Anda harus meminta mereka untuk menerapkannya pembaruan ke
sistem Anda sendiri. Memperbarui tidak sama dengan memutakhirkan: memperbarui hanya
memperbarui daftar paket yang tersedia untuk diunduh repositori, sedangkan peningkatan
akan meningkatkan paket ke versi yang terbaru dalam repositori.
Anda dapat memperbarui sistem individual Anda dengan memasukkan apt-get
perintah diikuti oleh kata kunci update. Ini akan mencari melalui semua paket pada sistem
Anda dan periksa apakah pembaruan tersedia. Jika begitu, pembaruan diunduh.

kali >apt-get update


Get:1 http://mirrors.ocf.berkeley.edu/kali kali-rolling InRelease [30.5kb]
Get:2 http://mirrors.ocf.berkeley.edu/kali kali-rolling/main amd64 Packages [14.9MB]
Get:3 http://mirrors.ocf.berkeley.edu/kali kali-rolling non-free amd64 Packages [163kb]

61
Get:4 http://mirrors.ocf.berkeley.edu/kali kali-rolling/contrib amd64 Packages [107 kB]
Fetched 15.2 MB in 1min 4s (236 kB/s) Reading package lists... Done

Mengupgrade paket
Untuk memutakhirkan paket yang ada di sistem Anda, gunakan apt-get upgrade.
Karena memutakhirkan paket Anda dapat membuat perubahan pada perangkat lunak Anda,
Anda harus masuk sebagai root atau menggunakan perintah sudo sebelum memasukkan
peningkatan apt-get. Perintah ini akan memutakhirkan setiap paket di sistem Anda, artinya
hanya yang disimpan dalam repositori. Memutakhirkan bisa 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]

Anda akan melihat dalam output bahwa sistem Anda memperkirakan jumlah ruang
hard drive yang diperlukan untuk paket perangkat lunak. Silakan masukkan Y jika Anda ingin
melanjutkan dan memiliki ruang hard drive yang cukup untuk mengupgrade

Menambahkan Repositori ke sources.list file


Server yang memegang perangkat lunak untuk distribusi Linux tertentu dikenal
sebagai repositori. Hampir setiap distribusi memiliki sendiri repositori perangkat lunak —
dikembangkan dan dikonfigurasikan untuk distribusi itu —Bahwa mungkin tidak bekerja
dengan baik, atau sama sekali, dengan distribusi lain. Meskipun repositori ini sering berisi
perangkat lunak yang sama atau serupa, mereka tidak identik, dan mereka terkadang
memiliki versi berbeda dari perangkat lunak yang sama atau perangkat lunak yang sama sekali
berbeda.

62
Anda tentu saja akan menggunakan repositori Kali, yang memiliki besar jumlah
perangkat lunak keamanan dan peretasan. Tetapi karena Kali berspesialisasi dalam keamanan
dan peretasan, tidak termasuk beberapa perangkat lunak dan alat khusus dan bahkan
beberapa perangkat lunak run-of-the-mill. Layak menambahkan cadangan atau dua repositori
yang dapat dicari sistem Anda jika itu tidak terjadi temukan perangkat lunak tertentu di
repositori Kali.
Repositori di sistem Anda akan mencari perangkat lunak yang disimpan di file
sources.list, dan Anda dapat mengubah file ini untuk menentukan dari repositori mana Anda
ingin mengunduh perangkat lunak. Saya sering menambahkan repositori Ubuntu setelahnya
repositori Kali di file sources.list saya, ketika saya meminta mengunduh paket perangkat lunak
baru, sistem saya akan pertama kali melihat Kali repositori, dan jika paket perangkat lunak
tidak ada di sana, ia akan mencari di Repositori Ubuntu.
Anda dapat menemukan file sources.list di /etc/apt/sources.list dan membukanya
dengan editor teks apa pun. Saya akan menggunakan Leafpad lagi. Untuk membuka file
sources.list, masukkan perintah berikut ini ke terminal Anda, atau bisa juga ganti leafpad
dengan nama editor Anda:

kali >leafpad /etc/apt/sources.list

Banyak distribusi Linux membagi repositori ke dalam kategori terpisah. Sebagai contoh,
Ubuntu membagi kategori repositori sebagai berikut:
1. Main Berisi perangkat lunak sumber terbuka yang didukung
2. Universe Berisi perangkat lunak open source yang dikelola komunitas
3. Multiverse Berisi perangkat lunak yang di batasi oleh hak cipta tahu masalah hukum
lainnya
4. Restricted Berisi driver perangkat eksklusif
5. Backports Berisi paket dari rilis selanjutnya
Saya tidak merekomendasikan menggunakan testing, eksperimental, atau unstable repositori
di sources.list Anda karena mereka dapat bermasalah pada perangkat lunak sistem Anda.
Perangkat lunak yang belum diuji sepenuhnya dapat merusak sistem Anda.

63
Ketika Anda meminta untuk mengunduh paket perangkat lunak baru, sistem akan
terlihat secara berurutan melalui repositori Anda yang terdaftar di sources.list dan berhenti
ketika ia menemukan paket yang diinginkan. Periksa dulu apakah repositori tersebut
kompatibel untuk sistem Anda. Kali, seperti Ubuntu, dibangun di atas Debian, jadi ini
repositori bekerja sangat baik dengan masing-masing sistem ini
Untuk menambahkan repositori, cukup edit file sources.list dengan menambahkan
nama repositori ke daftar dan kemudian simpan file tersebut. Katakan, misalnya, Anda mau
untuk menginstal Oracle Java 8 di Kali. Tidak ada paket apt untuk Oracle Java 8 tersedia
sebagai bagian dari sumber Kali default, tetapi pencarian cepat online menunjukkan bahwa
orang baik di WebUpd8 telah membuatnya. Jika Anda menambahkan repositori ke sumber,
Anda kemudian dapat menginstal Oracle Java 8 dengan perintah aptget 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

Install Software melalui git


Terkadang perangkat lunak yang Anda inginkan tidak tersedia di salah satu repositori
—Terutama jika itu baru — tetapi mungkin tersedia di github (https://www.github.com/),
situs yang memungkinkan pengembang untuk membagikannya perangkat lunak dengan
orang lain untuk mengunduh, menggunakan, dan memberikan umpan balik. Untuk Misalnya,
jika Anda ingin bluediving, peretasan Bluetooth dan pentesting suite, dan tidak dapat
menemukannya di repositori Kali, Anda dapat mencari github perangkat lunak dengan
memasukkan bluediving ke dalam bilah pencarian. Jika ada pada github, Anda akan melihat
repositori untuk itu di hasil pencarian.
Setelah Anda menemukan perangkat lunak di github, Anda dapat menginstalnya dari
terminal dengan memasukkan perintah git clone diikuti oleh URL github-nya. Misalnya,
bluediving terletak di https://www.github.com/balle/bluediving.git. Untuk mengkloningnya
ke sistem Anda, masukkan perintah berikut:

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.

64
Perintah git clone menyalin semua data dan file dari lokasi itu ke sistem Anda. Anda
dapat memeriksa untuk melihat bahwa mereka telah berhasil diunduh dengan menggunakan
perintah daftar panjang ls –l pada target direktori, seperti:

kali >ls -l

Jika Anda berhasil mengkloning bluediving ke sistem Anda, Anda akan melihatoutput
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-filenya.

65
5
Manajemen Proses Linux

Saat kita menjalankan perangkat komputer, pasti ada beberapa program yang berjalan.
Program-program ini biasanya disebut dengan proses. Misalnya saja ketika Anda membuka
aplikasi browser Opera atau Chrome, maka akan ada 2 proses yang berjalan untuk
menjalankan masing-masing aplikasi ini.
Pada bab ini kita akan membahas mengenai bagaimana cara manajemen proses Linux.
Fungsinya adalah untuk melihat, menjalankan, atau menghentikan apa saja proses-proses
yang sedang berjalan ketika kita mengoperasikan perangkat komputer.
Jadi dengan mengetahui bagaimana cara manajemen proses Linux, maka Anda dapat
mengatur program mana saja yang sebaiknya berjalan dan menghentikan yang tidak
seharusnya. Pengelolaan ini dapat berfungsi untuk meringankan kerja perangkat.
“Suatu proses dapat diartikan sebagai suatu program yang sedang berjalan atau dieksekusi.
Biasanya terdiri dari instruksi program, pembacaan data dari file, atau input dari
pengguna sistem”.

66
Tipe Proses
Ada beberapa tipe proses yang berjalan, khususnya di sistem operasi, yaitu foreground dan
background.

Foreground Processes
Foreground process adalah proses yang berjalan melalui inisiasi dan dapat dikontrol
melalui terminal session. Proses ini terkadang juga disebut dengan nama interactive
processes. Pengertian lain, proses ini berjalan setelah dijalankan oleh user. Sehingga tidak
dapat berjalan secara otomatis.

Background Processes
Kebalikan dari foreground process, proses ini tidak dikenali pada terminal session.
Sehingga membuat proses ini tidak mengharapkan input apapun dari user.

Bagaimana Linux Mengidentifikasi Proses?


Linux merupakan sistem operasi yang Multi-User System, ini memungkinkan tidak hanya satu
user saja berjalan pada waktu yang sama. Agar kernel dapat membedakan setiap instance,
maka perlu dibedakan masing-masing proses secara unik.
Cara membedakannya menggunakan Process ID (PID) dan untuk parent processes
menggunakan Parent ID (PPID). Jadi ada dua kategori proses yang berjalan pada sistem
operasi Linux, yaitu:

67
Parent Processes
Proses yang membuat proses lain pada saat run-time.
Child Processes
Proses yang dibuat oleh proses lain pada saat run-time.

Apa itu Daemons?


Daemons adalah tipe background processes yang berjalan bersamaan dengan sistem operasi
(startup) dan tetap berjalan sebagai service; tidak pernah berhenti. Daemons berjalan sebagai
sistem itu sendiri sebagai service. Bagaimanapun, proses ini dapat mengontrol user
menggunakan proses init.
Jadi daemons ini adalah proses-proses yang dibuat dengan tujuan tidak dapat diganggu oleh
user. Selama sistem operasi berjalan, maka proses ini harus juga tetap berjalan.

Macam-Macam Manajemen Proses Linux


Ada banyak sekali perintah yang dapat digunakan untuk melakukan manajemen proses Linux.
Namun di antara proses-proses itu ada dua proses yang paling banyak digunakan, yaitu “ps”
dan “top”. Kedua perintah ini biasanya digunakan oleh pengguna Linux khususnya System
Administrator untuk melihat proses yang banyak menggunakan sumber daya (resource).

Menampilkan Semua Proses Shell Aktif/Berjalan


Perintah ini dapat Anda gunakan untuk menampilkan semua proses yang saat ini sedang
berjalan.

1. Perintah “top”
“top” adalah aplikasi di Linux yang dijalankan melalui Terminal di Linux. Aplikasi ini digunakan
untuk memanajemen proses Linux tanpa menggunakan GUI. Saat dieksekusi, aplikasi ini akan
menampilkan daftar semua proses yang sedang berjalan dan setiap detik akan diperbaharui.
Proses yang ditampilkan pada perintah “top” adalah yang paling besar menggunakan sumber
daya.
Tampilan perintah “top” dapat Anda lihat pada gambar di bawah ini:

68
Keyboard
Fungsi
Shortcut

“h” atau “?” Menampilkan jendela bantuan.

“f” Menghapus atau menambahkan field di layout.

Menampilkan atau menghilangkan tampilan informasi beban rata-rata dan


“l”
informasi uptime.

“m” Menampilkan atau menghilangkan tampilan informasi memori.

“P” Mengurutkan proses berdasarkan penggunaan CPU.

“q” Menutup aplikasi atau jendela pada session saat itu.

Digunakan untuk memperbaharui tampilan atau me-refresh tampilan


“space”
dengan data terbaru tanpa menunggu waktu refresh.

Aplikasi ini didesain tidak perlu menggunakan mouse, mungkin tujuannya memang digunakan
untuk server. Sehingga semua fungsi dilakukan menggunakan keyboard. Berikut ini beberapa
keyboard shortcut yang dapat Anda gunakan untuk navigasi:
Saat menjalankan perintah “top”, Anda dapat menggunakan beberapa opsi tampilan yang
ingin ditampilkan. Opsi-opsi tersebut beberapa dapat Anda lihat pada tabel di bawah.

-h atau Help atau Version: Digunakan untuk menampilkan user manual penggunaan
-v “top” dan menampilkan versi yang terinstal.

Threads-mode operation: Digunakan untuk menampilkan thread secara


-H
terpisah.

69
-s Secure-mode operation: Menjalankan “top” dengan mode secure.

-u User-filter-mode: Digunakan untuk menampilkan proses pada user tertentu


atau -U saja.

Masih banyak opsi lainnya yang dapat Anda gunakan sesuai dengan kebutuhan informasi yang
ingin didapatkan. Lengkapnya, Anda dapat menggunakan perintah “man top” untuk tampilan
dokumentasi dan user manual dari aplikasi yang digunakan.

2. Perintah “ps”
“ps” adalah aplikasi di Linux yang digunakan untuk menampilkan aktif proses yang berjalan
pada sistem. Aplikasi ini dapat Anda gunakan untuk melakukan manajemen proses Linux.
Tampilan hasilnya seperti di bawah ini.

Ada beberapa opsi yang dapat Anda gunakan ketika menggunakan “ps” sebagai aplikasi
monitoring proses.

-e Digunakan untuk menampilkan semua proses.

-C Digunakan untuk menyaring proses berdasarkan nama/perintah.

-f Digunakan untuk menampilkan semua informasi proses secara lengkap.

-r Digunakan untuk menampilkan proses yang sedang berjalan.

Digunakan untuk menampilkan proses pada user tertentu saja. Biasanya diikuti
-u
dengan menggunakan nama user yang ingin dilihat prosesnya.

70
-o Digunakan untuk menampilkan proses yang menggunakan kata kunci tertentu saja.

–pid Digunakan untuk menampilkan informasi proses berdasarkan Process ID (PID).

– Digunakan untuk menampilkan informasi proses berdasarkan Parent Process ID


ppid (PPID).

Anda dapat menggunakan beberapa opsi sekaligus. Jadi mengkombinasikan antara satu opsi
dengan opsi yang lainnya. Misalnya ketika ingin menampilkan proses dari user “kali”. Jadi
perintah yang digunakan seperti di bawah ini:

$ ps -f -u root

Jika perintah di atas dieksekusi, maka hasil yang akan muncul seperti gambar di bawah ini.
Atau, jika ingin mengurutkan informasi berdasarkan penggunaan CPU terbesar dapat Anda
lakukan dengan menggunakan perintah.

$ ps aux –sort=-pcpu,+pmem

Hasilnya menjadi seperti ini.

71
Anda juga dapat menyaring kolom mana saja yang ingin ditampilkan menggunakan perintah
di bawah ini.

$ ps -e -o pid,uname,pcpu,pmem,comm

Hasil yang ditampilkan seperti gambar di bawah ini

Sedangkan jika ingin melihat informasi proses secara keseluruhan biasanya menggunakan
perintah “ps -aux”.
Informasi lengkap terkait dengan kegunaan dan fungsi “ps” dapat Anda lihat menggunakan
perintah “man ps”.

Menghentikan Proses Linux


Agar dapat melakukan manajemen proses Linux, tentu saja harus dapat menghentikan proses
yang sedang berjalan.

72
Pada kasus tertentu, Anda dapat menghentikan proses secara paksa. Misalnya saja ketika
sebuah proses menggunakan sumber daya terlalu tinggi. Biasanya hal ini membuat kinerja
perangkat menjadi lambat atau bahkan dapat menyebabkan ‘hang’.
Biasanya untuk mencegah dan mengatasi ini dilakukan penanganan atau mematikan proses
yang tidak terlalu dibutuhkan. Salah satu caranya adalah dengan menggunakan perintah
“kill”. Perintah ini digunakan untuk mengirimkan sinyal ke proses untuk menghentikan
aktivitasnya.
Contohnya seperti di bawah ini.

Pada gambar di atas kita menggunakan perintah “$ kill -9 7684”. Angka -9 pada perintah di
atas menunjukkan sinyal untuk menghentikan prosesnya. Kemudian 7684 adalah PID yang
dipunya oleh aplikasi Gedit. Sehingga jika perintah di atas dieksekusi, hasilnya adalah aplikasi
Gedit akan berhenti/ditutup.

Menghentikan Proses Menggunakan Perinah “top”


Selain menggunakan kill, Anda juga dapat menggunakan perintah “top” untuk menampilkan
informasi proses yang berjalan. Pada jendela top, Anda cukup menekan tombol “k” untuk
menampilkan opsi kill. Kemudian masukkan PID aplikasi yang ingin dihentikan.

73
Menghentikan Semua Proses yang Berjalan Menggunakan Nama
Aplikasi
Anda dapat menghentikan semua proses yang sedang berjalan melalui nama aplikasinya,
menggunakan dua perintah di bawah ini. Sebagai contoh, aplikasi yang ingin dihentikan
adalah Firefox.

$ pkill firefox

Atau

$ killall firefox

(yasin, 2019)\

6
Manajemen User Environment Variabel

Untuk mendapatkan hasil maksimal dari sistem peretasan Linux Anda, Anda harus
melakukannya memahami environtment variable dan mahir mengelola kinerjanya yang
optimal, kenyamanan, dan bahkan sembunyi-sembunyi. Di antara area bahwa pendatang
baru Linux merasa bermasalah, bagaimanapun, mengelola pengguna env variable mungkin
yang paling sulit dikuasai. Secara teknis, ada dua jenis variabel: shell dan env. Environment
variable adalah variabel seluruh sistem yang dibangun ke dalam sistem dan antarmuka Anda
yang mengontrol cara sistem Anda terlihat, bertindak, dan "terasa" bagi pengguna, dan
mereka diwarisi oleh shell atau proses. Variabel Shell, pada sisi lain, biasanya terdaftar dalam
huruf kecil dan hanya berlaku di shell mereka diatur. Untuk menghindari penjelasan yang
berlebihan, saya hanya membahas sebagian keterampilan dasar dan berguna untuk env
variable dan shell dalam bab ini dan jangan terlalu mendalami perbedaan di antara mereka

74
Variabel hanyalah string dalam pasangan kunci-nilai. Umumnya masing-masing pasangan
akan terlihat seperti KEY = value. Dalam kasus di mana ada beberapa nilai, mereka akan
melakukannya terlihat seperti KEY = value1: value2. Seperti kebanyakan hal di Linux, jika ada
spasi dalam nilai, itu perlu terkandung dalam tanda kutip. Di Kali Linux, environment Anda
adalah bash shell Anda. Setiap pengguna, termasuk root, memiliki sebuah set variabel
environment default yang menentukan bagaimana sistem terlihat, bertindak, dan terasa.
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 jejak Anda jika perlu.

Melihat dan Memodifikasi Environment Variables


Anda dapat melihat semua variabel environment default Anda 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

75
--snip--

USER=root

--snip--

PATH=/usr/local/sbin :usr/local/bin:/usr/sbin:/sbin/bin

--snip--

HOME=/root

--snip--

Environment variable selalu huruf besar, seperti di HOME, PATH, SHELL, dan begitu
seterusnya. Ini hanya variabel env default yang muncul di sistem anda. Seorang pengguna
juga dapat membuat variabel mereka sendiri, dan seperti yang Anda mau lihat, kita perlu
perintah yang berbeda untuk memasukkan yang ada di output.

Melihat Seluruh Environment Variables


Untuk melihat semua variabel env, termasuk variabel shell, lokal variabel, dan fungsi
shell seperti variabel yang ditentukan pengguna dan alias command, gunakan perintah set.
Perintah ini akan mencantumkan semua variabel env unik untuk sistem Anda, yang dalam
banyak kasus akan memberi Anda hasil selama Anda tidak akan bisa melihat semuanya dalam
satu layar. Anda dapat meminta untuk melihat setiap variabel, baris demi baris, di lebih
banyak mode yang dapat diakses menggunakan set dan piping ke perintah yang lebih, 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, dan kemudian
berhenti. Ketika Anda menekan ENTER, terminal maju ke baris berikutnya, membawa Anda
ke variabel berikutnya, sehingga Anda dapat menggulirnya dengan menekan atau memegang
ENTER. Seperti yang Anda ingat dari Bab 2, kapan pun Anda menggunakannya semakin
banyak keluaran, Anda dapat memasukkan q untuk keluar (atau keluar) dan kembali ke
prompt perintah.

76
Penyaringan untuk Variabel Tertentu
Meskipun menggunakan set dengan more memberikan hasil lebih mudah dikelola
daripada melihat melalui sejumlah besar nama variabel yang Anda dapatkan dengan set
sendiri, itu bisa masih agak membosankan jika Anda mencari variabel tertentu. Sebagai
gantinya, Anda dapat menggunakan perintah pemfilteran grep untuk menemukan variabel
yang Anda minati.
Mari kita gunakan variabel HISTSIZE sebagai contoh. Variabel ini berisi jumlah
maksimum perintah yang akan disimpan oleh file histori Anda. Perintah-perintah ini adalah
perintah yang pernah Anda ketik sebelumnya command prompt di sesi ini dan dapat dipanggil
kembali dengan tombol panah bawah. Perhatikan bahwa HISTSIZE tidak menyimpan perintah
sendiri, hanya jumlah mereka yang bisa disimpan.
Pip 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 display
nilainya. Nilai default dari variabel ini mungkin diatur ke 1000 pada sistem. Ini menunjukkan
bahwa terminal akan menyimpan 1.000 terakhir perintah secara default.

Mengubah Nilai Variabel untuk Sesi


Sekarang mari kita lihat cara mengubah nilai variabel. Seperti dicatat, HISTSIZE
variabel berisi nilai jumlah perintah untuk menyimpan di file riwayat. 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. Kalau begitu,
Anda bisa atur variabel HISTSIZE ke 0 sehingga sistem tidak akan menyimpan riwayat
sebelumnya. Karena variabel ini memiliki nilai tunggal, untuk mengubahnya, Anda berikan
nilai baru dengan cara yang familier seperti ditunjukkan pada

kali >HISTSIZE=0

Sekarang, ketika Anda mencoba menggunakan tombol panah atas dan bawah untuk
memanggil kembali perintah, tidak ada yang terjadi karena sistem tidak lagi menyimpannya.
Ini tersembunyi, meskipun bisa merepotkan.

Membuat Perubahan Nilai Variabel Permanen


Saat Anda mengubah variabel env, perubahan itu hanya terjadi di environment khusus
itu; dalam hal ini, environment itu adalah bash sesi shell. Ini berarti bahwa ketika Anda
menutup terminal, ada perubahan Anda dibuat hilang, dengan nilai-nilai yang diatur kembali
ke default. Jika Anda menghendaki buat perubahan permanen, Anda harus menggunakan
perintah ekspor. Ini perintah akan mengekspor nilai baru dari environment Anda saat ini

77
(perintah bash shell) ke seluruh sistem, membuatnya tersedia di setiap environment sampai
Anda mengubah dan mengekspornya lagi.
Variabel adalah string, jadi jika Anda berjalan di sisi yang berhati-hati, itu tidak buruk
ide untuk menyimpan konten variabel ke file teks sebelum Anda memodifikasinya. Misalnya,
karena kami akan mengubah variabel PS1, yang mengontrol informasi yang Anda tampilkan
di prompt, pertama jalankan yang berikut perintah untuk menyimpan nilai yang ada ke file
teks di pengguna saat ini direktori home:

kali >echo $HISTSIZE> ~/valueofHISTSIZE.txt

Dengan cara ini, Anda selalu dapat membatalkan perubahan. Jika Anda ingin menjadi
adil lebih hati-hati dan membuat file teks dengan semua pengaturan saat ini, Anda bisa
simpan output dari set perintah ke file teks dengan perintah seperti ini satu:

kali >set> ~/valueofALLon01012017.txt

Setelah Anda mengubah variabel, seperti yang kita lakukan sebelumnya, Anda dapat
membuat perubahan permanen dengan memasukkan ekspor dan kemudian nama variabel
yang Anda ubah, seperti yang ditunjukkan di sini:

kali >export HISTSIZE

Sekarang variabel HISTSIZE masih akan ditetapkan ke 0 ketika Anda meninggalkan


environment ini dan masuk ke environment lain. Jika Anda ingin mengatur ulang Variabel
HISTSIZE hingga 1.000, cukup masukkan ini:

kali >HISTSIZE=1000

kali >export HISTSIZE

Cuplikan kode ini akan menetapkan nilai variabel HISTSIZE Anda menjadi 1.000 dan
ekspor ke semua environment Anda.

Mengubah PATH anda


Salah satu variabel terpenting di environment Anda adalah PATH variabel, 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 PATH variabel, itu akan mengembalikan perintah kesalahan tidak
ditemukan, bahkan jika perintah itu memang ada di direktori yang tidak ada di PATH Anda.
Anda dapat mengetahui direktori mana yang disimpan dalam variabel PATH Anda
menggunakan echo pada isinya, seperti:

kali >echo $PATH

78
/usr/local/sbin:usr/local/bin:/usr/sbin:/sbin/bin

Ini adalah direktori tempat terminal Anda akan mencari perintah. Ketika Anda
memasukkan ls, misalnya, sistem tahu untuk melihatnya masing-masing direktori ini untuk
perintah ls, dan ketika ditemukan ls, the sistem menjalankannya.
Setiap direktori dipisahkan oleh 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 di
PATH variabel anda: jika Anda mengunduh dan menginstal alat baru — katakanlah
newhackingtool — ke direktori / root / newhackingtool, Anda hanya bisa menggunakan
perintah dari alat itu ketika Anda berada di direktori itu karena itu direktori tidak dalam
variabel PATH. Setiap kali Anda ingin menggunakannya alat, pertama-tama Anda harus
menavigasi ke / root / newhackingtool, yang sedikit merepotkan jika Anda ingin sering
menggunakan alat.
Untuk dapat menggunakan alat baru ini dari direktori mana pun, Anda perlu
menambahkan direktori yang memegang alat ini ke variabel PATH Anda.
Untuk menambahkan alat ransel baru ke variabel PATH Anda, masukkan yang berikut
ini:

kali >PATH=$PATH:/root/newhackingtool

Ini menetapkan variabel PATH asli ditambah / root / newhackingtool direktori ke


variabel PATH baru, jadi variabel itu berisi semua yang di lakukan sebelumnya, ditambah
direktori alat baru.
Jika Anda memeriksa konten variabel PATH lagi, 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 tool baru dari mana saja di sistem Anda,
daripada harus menavigasi ke direktori. Bash shell akan mencari di semua direktori yang
terdaftar untuk alat baru Anda!
CATATAN:

Menambahkan ke PATH bisa menjadi teknik yang berguna untuk direktori yang sering Anda
gunakan, tetapi jadilah

79
hati-hati untuk tidak menambahkan terlalu banyak direktori ke variabel PATH Anda. Karena
sistem harus mencari melalui setiap dan setiap direktori di PATH untuk menemukan
perintah, menambahkan banyak direktori dapat memperlambat terminal Anda dan
peretasan Anda.

Bagaimana Tidak Menambahkan ke Variabel PATH


Satu kesalahan yang biasa dilakukan oleh pengguna Linux baru adalah menetapkan
kesalahan baru direktori, seperti / root / newhackingtool, langsung ke variabel PATH dalam
hal ini cara:

kali >PATH=/root/newhackingtool

kali >echo $PATH

/root/newhackingtool

Jika Anda menggunakan perintah ini, variabel PATH Anda hanya akan berisi / root /
newhackingtool direktori dan tidak lagi berisi binari sistem direktori seperti / bin, / sbin, dan
lainnya yang memegang perintah kritis. Saat Anda pergi untuk menggunakan perintah sistem
apa pun, Anda akan menerima perintah kesalahan tidak ditemukan, seperti yang ditunjukkan
berikutnya, kecuali Anda pertama kali menavigasi ke direktori binari sistem ketika Anda
menjalankan perintah:

kali >cd

bash: cd: command not found

Ingat bahwa Anda ingin menambahkan variabel PATH, bukan menggantinya. Jika Anda
ragu, simpan konten variabel di suatu tempat sebelumnya Anda memodifikasinya.

80
7
BASH SCRIPTING
Apa itu shell ? shell adalah program (penterjemah perintah) yang menjembatani user
dengan sistem operasi dalam hal ini kernel (inti sistem operasi), umumnya shell menyediakan
prompt sebagai user interface, tempat dimana user mengetikkan perintah-perintah yang
diinginkan baik berupa perintah internal shell (internal command), ataupun perintah eksekusi
suatu file progam (eksternal command), selain itu shell memungkinkan user menyusun
sekumpulan perintah pada sebuah atau beberapa file untuk dieksekusi sebagai program.

81
Macam-macam Shell
Tidak seperti sistem operasi lain yang hanya menyediakan satu atau 2 shell, sistem
operasi dari keluarga unix misalnya linux sampai saat ini dilengkapi oleh banyak shell dengan
kumpulan perintah yang sangat banyak, sehingga memungkinkan pemakai memilih shell
mana yang paling baik untuk membantu menyelesaikan pekerjaannya, atau dapat pula
berpindah-pindah dari shell yang satu ke shell yang lain dengan mudah, beberapa shell yang
ada di linux antara lain:
• Bourne shell(sh),
• C shell(csh),
• Korn shell(ksh),

82
• Bourne again shell(bash),
• dsb.
Masing - masing shell mempunyai kelebihan dan kekurangan yang mungkin lebih didasarkan
pada kebutuhan pemakai yang makin hari makin meningkat, untuk dokumentasi ini shell yang
digunakan adalah bash shell dari GNU, yang merupakan pengembangan dari Bourne shell dan
mengambil beberapa feature (keistimewaan) dari C shell serta Korn shell, Bash shell
merupakan shell yang cukup banyak digunakan pemakai linux karena kemudahan serta
banyaknya fasilitas perintah yang disediakan.versi bash shell yang saya gunakan adalah
5.0.16(1)-release

Kali > echo $BASH_VERSION

5.0.16(1)-release

Mungkin saat anda membaca dokumentasi ini versi terbaru dari bash sudah dirilis dengan
penambahan feature yang lain.

Pemrograman Shell
Yaitu menyusun atau mengelompokkan beberapa perintah shell (internal atupun
eksternal command) menjadi kumpulan perintah yang melakukan tugas tertentu sesuai tujuan
penyusunnya. Kelebihan shell di linux dibanding sistem operasi lain adalah bahwa shell di
linux memungkinkan kita untuk menyusun serangkaian perintah seperti halnya bahasa
pemrograman (interpreter language), melakukan proses I/O, menyeleksi kondisi, looping,
membuat fungsi, dsb. adalah proses - proses yang umumnya dilakukan oleh suatu bahasa
pemrograman, jadi dengan shell di linux kita dapat membuat program seperti halnya bahasa
pemrograman, untuk pemrograman shell pemakai unix atau linux menyebutnya sebagai script
shell.

Kebutuhan Dasar
Sebelum mempelajari pemrograman Bash shell di linux sebaiknya anda telah mengetahui dan
menggunakan perintah - perintah dasar shell baik itu internal command yang telah disediakan
shell maupun eksternal command atau utility, seperti
• cd, pwd, times, alias, umask, exit, logout, fg, bg, ls, mkdir,
rmdir, mv, cp, rm, clear, ...
• utilitas seperti cat, cut, paste, chmod, lpr,...
• redirection (cara mengirim output ke file atau menerima input dari file), menggunakan
operator redirect >, >>, <, <<, contohnya:
ls > data
hasil ls dikirim ke file data, jika file belum ada akan dibuat tetapi jika sudah ada isinya akan
ditimpa.

83
ls >> data
hampir sama, bedanya jika file sudah ada maka isinya akan ditambah di akhir file.
cat < data
file data dijadikan input oleh perintah cat
• pipa (output suatu perintah menjadi input perintah lain), operatornya: | , contoh:
ls -l | sort -s
ouput perintah ls -l (long) menjadi input perintah sort -s (urutkan secara descending),
mending pake ls -l -r saja
ls -l | sort -s | more
cat <data | sort > databaru
• Wildcard dengan karakter *, ?, [ ], contohnya:
ls i*
tampilkan semua file yang dimulai dengan i
ls i?i
tampilkan file yang dimulai dengan i, kemudian sembarang karakter tunggal, dan diakhiri
dengan i
ls [ab]*
tampilkan file yang dimulai dengan salah satu karakter a atau b

Simple Bash Script


Langkah awal sebaiknya periksa dulu shell aktif anda, gunakan perintah ps (report
process status)

[fajar@linux$]ps
PID TTY TIME CMD
219 tty1 00:00:00 bash
301 tty1 00:00:00 ps

bash adalah shell aktif di system saya, jika disystem anda berbeda
misalnya csh atau ksh ubahlah dengan perintah change shell

[fajar@linux$]chsh
Password:
New shell [/bin/csh]:/bin/bash
Shell changed

atau dengan mengetikkan bash

[fajar@linux$]bash

84
sekarang coba anda ketikkan perintah dibawah ini pada prompt shell
echo "Script shell pertamaku di linux"

[fajar@linux$]echo "Script shell pertamaku di linux"


Script shell pertamaku di linux

string yang diapit tanda kutip ganda (double quoted) akan ditampilkan pada layar
anda, echo adalah statement (perintah) built-in bash yang berfungsi menampilkan
informasi ke standard output yang defaultnya adalah layar. jika diinginkan mengulangi
proses tersebut, anda akan mengetikkan kembali perintah tadi, tapi dengan fasilitas
history cukup menggunakan tombol panah kita sudah dapat mengulangi perintah
tersebut, bagaimana jika berupa kumpulan perintah yang cukup banyak, tentunya
dengan fasilitas hirtory kita akan kerepotan juga mengulangi perintah yang diinginkan
apalagi jika selang beberapa waktu mungkin perintah-perintah tadi sudah tertimpa
oleh perintah lain karena history mempunyai kapasitas penyimpanan yang ditentukan.
untuk itulah sebaiknya perintah-perintah tsb disimpan ke sebuah file yang dapat kita
panggil kapanpun diinginkan.
coba ikuti langkah - langkah berikut:
1. Masuk ke editor anda, apakah memakai vi,pico,emacs,dsb...
2. ketikkan perintah berikut

3. #!/bin/bash
4. echo "Hello, apa khabar"

5. simpan dengan nama file tes


6. ubah permission file tes menggunakan chmod

7. [fajar@linux$]chmod 755 tes

8. jalankan

9. [fajar@linux$]./tes

kapan saja anda mau mengeksekusinya tinggal memanggil file tes tersebut, jika
diinginkan mengeset direktory kerja anda sehingga terdaftar pada search path
ketikkan perintah berikut

PATH=$PATH:.

setelah itu script diatas dapat dijalankan dengan cara

[fajar@linux$]tes
Hello, apa khabar

85
tanda #! pada /bin/bash dalam script tes adalah perintah yang diterjemahkan ke
kernel linux untuk mengeksekusi path yang disertakan dalam hal ini
program bash pada direktory /bin, sebenarnya tanpa mengikutkan baris tersebut
anda tetap dapat mengeksekusi script bash, dengan catatan bash adalah shell aktif.
atau dengan mengetikkan bash pada prompt shell.

[fajar@linux$]bash tes

tentunya cara ini kurang efisien, menyertakan path program bash diawal script
kemudian merubah permission file sehingga dapat anda execusi merupakan cara
yang paling efisien.
Sekarang coba kita membuat script shell yang menampilkan informasi berikut:
1. Waktu system
2. Info tentang anda
3. jumlah pemakai yang sedang login di system
contoh scriptnya:

#!/bin/bash
#myinfo

#membersihkan tampilan layar


clear

#menampilkan informasi
echo -n "Waktu system :"; date
echo -n "Anda :"; whoami
echo -n "Banyak pemakai :"; who | wc -l

sebelum dijalankan jangan lupa untuk merubah permission file myinfo sehingga
dapat dieksekusi oleh anda

[fajar@linux$]chmod 755 myinfo


[fajar@linux$]./myinfo
Waktu system : Sat Nov 25 22:57:15 BORT 2001
Anda : fajar
Banyak pemakai : 2

tentunya layout diatas akan disesuaikan dengan system yang anda gunakan
statement echo dengan opsi -n akan membuat posisi kursor untuk tidak berpindah ke
baris baru karena secara default statement echo akan mengakhiri proses pencetakan

86
ke standar output dengan karakter baris baru (newline), anda boleh mencoba tanpa
menggunakan opsi -n, dan lihat perbedaannya. opsi lain yang dapat digunakan
adalah -e (enable), memungkinkan penggunaan backslash karakter atau karakter
sekuen seperti pada bahasa C atau perl, misalkan :

echo -e "\abunyikan bell"

jika dijalankan akan mengeluarkan bunyi bell, informasi opsi pada


statement echo dan backslash karakter selengkapnya dapat dilihat via man di
prompt shell.

[fajar@linux$]man echo

Pemakaian Variabel
Secara sederhana variabel adalah pengenal (identifier) berupa satuan dasar
penyimpanan yang isi atau nilainya sewaktu-waktu dapat berubah baik oleh eksekusi
program (runtime program) ataupun proses lain yang dilakukan sistem operasi. dalam
dokumentasi ini saya membagi variabel menjadi 3 kategori:
1. Environment Variable
2. Positional Parameter
3. User Defined Variable
Environment Variable
atau variabel lingkungan yang digunakan khusus oleh shell atau system linux kita
untuk proses kerja system seperti variabel PS1, PS2, HOME, PATH, USER,
SHELL,dsb...jika digunakan akan berdampak pada system, misalkan
variabel PS1 yang digunakan untuk mengeset prompt shell pertama yaitu prompt
tempat anda mengetikkan perintah - perintah shell (defaultnya "\s-\v\$"), PS2 untuk
prompt pelengkap perintah, prompt ini akan ditampilkan jika perintah yang
dimasukkan dianggap belum lengkap oleh shell (defaultnya ">"). anda dapat
mengeset PS1 dan PS2 seperti berikut.
simpan dahulu isi PS1 asli system anda, sehingga nanti dapat dengan mudah
dikembalikan

[fajar@linux$]PS1LAMA=$PS1

sekarang masukkan string yang diinginkan pada variabel PS1

[fajar@linux$]PS1="Hi ini Promptku!"


Hi ini Promptku!PS2="Lengkapi dong ? "

maka prompt pertama dan kedua akan berubah, untuk mengembalikan PS1 anda ke
prompt semula ketikkan perintah

87
[fajar@linux$]PS1=$PS1LAMA

Jika anda ingin mengkonfigurasi prompt shell, bash telah menyediakan beberapa
backslash karakter diantaranya adalah:

\a ASCII bell character (07)

\d date dengan format "Weekday Month Date" (misalnya "Tue May 26")

\e ASCII escape character (033)

\H hostname (namahost)

\n newline (karakter baru)

\w Direktory aktif

\t time dalam 24 jam dengan format HH:MM:SS

dll man bash:-)

contoh pemakaiannya:

[fajar@linux$]PS1="[\t][\u@\h:\w]\$"

agar prompt shell hasil konfigurasi anda dapat tetap berlaku (permanen) sisipkan
pada file .bashrc atau .profile

Positional Parameter
atau parameter posisi yaitu variabel yang digunakan shell untuk menampung argumen
yang diberikan terhadap shell baik berupa argumen waktu sebuah file dijalankan atau
argumen yang dikirim ke subrutin. variabel yang dimaksud adalah 1,2,3,dst..lebih
jelasnya lihat contoh script berikut :

#!/bin/bash
#argumen1

echo $1 adalah salah satu $2 populer di $3

Hasilnya

[fajar@linux$]./argumen1 bash shell linux


bash adalah salah satu shell populer di linux

88
ada 3 argumen yang disertakan pada script argumen1 yaitu bash, shell,
linux, masing2 argumen akan disimpan pada variabel 1,2,3 sesuai posisinya.
variabel spesial lain yang dapat digunakan diperlihatkan pada script berikut:

#!/bin/bash
#argumen2

clear
echo "Nama script anda : $0";
echo "Banyak argumen : $#";
echo "Argumennya adalah: $*";

Hasilnya:

[fajar@linux$]./argumen 1 2 3 empat
Nama script anda : ./argumen
Banyak argumen : 4
Argumennya adalah : 1 2 3 empat

User Defined Variable


atau variabel yang didefinisikan sendiri oleh pembuat script sesuai dengan
kebutuhannya, beberapa hal yang perlu diperhatikan dalam mendefenisikan variabel
adalah:
• dimulai dengan huruf atau underscore
• hindari pemakaian spesial karakter seperti *,$,#,dll...
• bash bersifat case sensitive, maksudnya membedakan huruf besar dan kecil, a berbeda
dengan A, nama berbeda dengan Nama,NaMa,dsb..
untuk mengeset nilai variabel gunakan operator assignment (pemberi nilai)"=",
contohnya :

myos="linux" #double-quoted
nama='pinguin' #single-quoted
hasil=`ls -l`; #back-quoted
angka=12

kalau anda perhatikan ada 3 tanda kutip yang kita gunakan untuk memberikan nilai
string ke suatu variabel, adapun perbedaannya adalah:

89
• dengan kutip ganda (double-quoted), bash mengizinkan kita untuk menyisipkan variabel di
dalamnya. contohnya:

• #!/bin/bash

• nama="pinguin"
• kata="Hi $nama, apa khabarmu" #menyisipkan variabel nama
• echo $kata;

Hasilnya:

Hi pinguin, apa khabarmu

• dengan kutip tunggal (single-quoted), akan ditampilkan apa adanya. contohnya:

• #!/bin/bash

• nama="pinguin"
• kata='Hi $nama, apa khabarmu' #menyisipkan variabel nama
• echo $kata;

Hasilnya:

Hi $nama, apa khabarmu

• dengan kutip terbalik (double-quoted), bash menerjemahkan sebagai perintah yang akan
dieksekusi, contohnya:

• #!/bin/bash

• hapus=`clear`;
• isi=`ls -l`; #hasil dari perintah ls -l disimpan di variabel
isi

• #hapus layar
• echo $hapus

• #ls -l

90
• echo $isi;

Hasilnya: silahkan dicoba sendiri


Untuk lebih jelasnya lihat contoh berikut:

#!/bin/bash
#varuse

nama="fajar"
OS='linux'
distro="macam-macam, bisa slackware,redhat,mandrake,debian,suse,dll"
pc=1
hasil=`ls -l $0`

clear
echo -e "Hi $nama,\npake $OS\nDistribusi, $distro\nkomputernya, $pc
buah"
echo "Hasil ls -l $0 adalah =$hasil"

Hasilnya:

[fajar@linux$]./varuse
Hi fajar,
pake linux Distribusi, macam-macam, bisa
slackware,redhat,mandrake,debian,suse,dll
komputernya, 1 buah
Hasil ls -l ./varuse adalah -rwxr-xr-x 1 fajar users 299 Nov 21
06:24 ./varuse

untuk operasi matematika ada 3 cara yang dapat anda gunakan, dengan statement
builtin let atau expr atau perintah subtitusi seperti contoh berikut:

#!/bin/bash
#mat1

a=10

91
b=5
#memakai let
let jumlah=$a+$b
let kurang=$a-$b
let kali=$a*$b

#memakai expr
bagi=`expr $a / $b`

#memakai perintah subtitusi $((ekspresi))


modul =$(($a%$b)) #sisa pembagian

echo "$a+$b=$jumlah"
echo "$a-$b=$kurang"
echo "$a*$b=$kali"
echo "$a/$b=$bagi"
echo "$a%$b=$mod"

Hasilnya:

[fajar@linux$]./mat1
10+5=15
10-5=5
10*5=50
10/5=2
10%5=0

fungsi expr begitu berdaya guna baik untuk operasi matematika ataupun string
contohnya:

[fajar@linux$]mystr="linux"
[fajar@linux$]expr length $mystr
5

92
Mungkin anda bertanya - tanya, apakah bisa variabel yang akan digunakan
dideklarasikan secara eksplisit dengan tipe data tertentu?, mungkin seperti C atau
pascal, untuk hal ini oleh Bash disediakan statement declare dengan opsi -i hanya
untuk data integer (bilangan bulat). Contohnya:

#!/bin/bash

declare -i angka
angka=100;
echo $angka;

apabila variabel yang dideklarasikan menggunakan declare -i ternyata anda beri


nilai string (karakter), maka Bash akan mengubahnya ke nilai 0, tetapi jika anda tidak
menggunakannya maka dianggap sebagai string.

Simple I/O
I/O merupakan hal yang mendasar dari kerja komputer karena kapasitas inilah yang
membuat komputer begitu berdayaguna. I/O yang dimaksud adalah device yang
menangani masukan dan keluaran, baik itu berupa keyboard, floppy, layar
monitor,dsb. sebenarnya kita telah menggunakan proses I/O ini pada contoh -contoh
diatas seperti statement echo yang menampilkan teks atau informasi ke layar, atau
operasi redirect ke ke file. selain echo, bash menyediakan perintah
builtin printf untuk mengalihkan keluaran ke output standard, baik ke layar ataupun
ke file dengan format tertentu, mirip statement printf kepunyaan
bahasa C atau perl. berikut contohnya:

Output dengan printf

#!/bin/bash
#pr1

url="pemula.linux.or.id";
angka=32;

printf "Hi, Pake printf ala C\n\t\a di bash\n";


printf "My url %s\n %d decimal = %o octal\n" $url $angka $angka;
printf "%d decimal dalam float = %.2f\n" $angka $angka

Hasilnya:

93
[fajar@linux$]./pr1
Hi, Pake printf ala C
di bash
My url pemula.linux.or.id
32 decimal = 40 octal
32 decimal dalam float = 32.00

untuk menggunakan format kontrol sertakan simbol %, bash akan mensubtitusikan


format tsb dengan isi variabel yang berada di posisi kanan sesuai dengan urutannya
jika lebih dari satu variabel, \n \t \a adalah karakter sekuen
lepas newline,tab, dan bell,

Format control keterangan

%d untuk format data integer

%o octal

%f float atau decimal

%x Hexadecimal

pada script diatas %.2f akan mencetak 2 angka dibelakang koma, defaultnya 6
angka, informasi lebih lanjut dapat dilihat via man printf

Input dengan read


Setelah echo dan printf untuk proses output telah anda ketahui, sekarang kita
menggunakan statement read yang cukup ampuh untuk membaca atau menerima
masukan dari input standar
syntax :

read -opsi [nama_variabel...]

berikut contoh scriptnya:

#!/bin/bash
#rd1

echo -n "Nama anda :"


read nama;

94
echo "Hi $nama, apa khabarmu";
echo "Pesan dan kesan :";
read
echo "kata $nama, $REPLY";

Hasilnya:

[fajar@linux$]./rd1
Nama anda : pinguin
Hi pinguin, apa khabarmu
Pesan & kesan :
pake linux pasti asyk - asyk aja
kata pinguin, pake linux pasti asyk - asyk aja

jika nama_variabel tidak disertakan, maka data yang diinput akan disimpan di
variabel REPLY contoh lain read menggunakan opsi
-t(TIMEOUT), -p (PROMPT), -s(SILENT), -n (NCHAR) dan -d(DELIM)

#!/bin/bash

read -p "User Name : " user


echo -e "Password 10 karakter,\njika dalam 6 second tidak dimasukkan
pengisian password diakhiri"
read -s -n 10 -t 6 pass
echo "kesan anda selama pake linux, _underscore=>selesai"
read -d _ kesan

echo "User = $user"


echo "Password = $pass"
echo "Kesan selama pake linux = $kesan"

Hasilnya: silahkan dicoba sendiri :-)

Opsi Keterangan

95
-p memungkinkan kita membuat prompt sebagai informasi pengisian

-s
membuat input yang dimasukkan tidak di echo ke layar (seperti layaknya password di
linux)

-n menentukan banyak karakter yang diinput

-d menentukan karakter pembatas masukan

informasi secara lengkap lihat man bash

Output dengan konstanta ANSI


1. Pengaturan Warna
Untuk pewarnaan tampilan dilayar anda dapat menggunakan konstanta ANSI (salah
satu badan nasional amerika yang mengurus standarisasi).
syntaxnya:

\033[warnam

Dimana:
m menandakan setting color

contohnya:

[fajar@linux$]echo -e "\033[31m HELLO\033[0m"


HELLO

konstanta 31m adalah warna merah dan 0m untuk mengembalikan ke warna normal
(none), tentunya konstanta warna ansi ini dapat dimasukkan ke variabel PS1 untuk
mengatur tampilan prompt shell anda, contohnya:

[fajar@linux$]PS1="\033[34m"
[fajar@linux$]

berikut daftar warna yang dapat anda gunakan:

foreground
None 0m
Black 0;30 Dark Gray 1;30
Red 0;31 Light Red 1;31
Green 0;32 Light Green 1;32
Brown 0;33 Yellow 1;33

96
Blue 0;34 Light Blue 1;34
Purple 0;35 Light Purple 1;35
Cyan 0;36 Light Cyan 1;36
Light Gray 0;37 White 1;37
background
dimulai dengan 40 untuk BLACK,41 RED,dst
lain-lain
4 underscore,5 blink, 7 inverse

tentunya untuk mendapatkan tampilan yang menarik anda dapat menggabungkannya


antara foreground dan background

[fajar@linux$]echo -e "\033[31;1;33m Bash and ansi color\033[0m"

Bash and ansi color

2 Pengaturan posisi kursor


sedangkan untuk penempatan posisi kursor, dapat digunakan salah satu cara
dibawah.
• Menentukan posisi baris dan kolom kursor:

• \033[baris;kolomH

• Pindahkan kursor keatas N baris:

• \033[NA

• Pindahkan kursor kebawah N baris:

• \033[NB

• Pindahkan kursor kedepan N kolom:

• \033[NC

• Pindahkan kursor kebelakang N kolom:

• \033[ND

Contohnya:

#!/bin/bash

97
SETMYCOLOR="\033[42;1;37m"
GOTOYX="\033[6;35H"
clear
echo -e "\033[3;20H INI DIBARIS 3, KOLOM 20"
echo -e "\033[44;1;33;5m\033[5;35H HELLO\033[0m";
echo -e "$SETMYCOLOR$GOTOYX ANDA LIHAT INI\033[0m"

Hasilnya: Silahkan dicoba sendiri

Menggunakan utulity tput untuk penempatan posisi


kursor
kita dapat pula mengatur penempatan posisi kursor di layar dengan memanfaatkan
utility tput,
syntaxnya:

tput cup baris kolom

contohnya:

#!/bin/bash

clear
tput cup 5 10
echo "HELLO"
tput cup 6 10
echo "PAKE TPUT"

jika dijalankan anda akan mendapatkan string HELLO di koordinat baris 5 kolom 10,
dan string PAKE TPUT dibaris 6 kolom 10. informasi selengkapnya
tentang tput gunakan man tput, atau info tput

Seleksi dan Perulangan


Bagian ini merupakan ciri yang paling khas dari suatu bahasa pemrograman dimana
kita dapat mengeksekusi suatu pernyataan dengan kondisi terntentu dan mengulang
beberapa pernyataan dengan kode script yang cukup singkat.

98
1 test dan operator
test adalah utility sh shell yang berguna untuk memeriksa informasi tentang suatu file
dan berguna untuk melakukan perbandingan suatu nilai baik string ataupun numerik
syntaxnya: test ekspresi
proses kerja test yaitu dengan mengembalikan sebuah informasi status yang dapat
bernilai 0 (benar) atau 1 (salah) dimana nilai status ini dapat dibaca pada variabel
spesial $?.

[fajar@linux$]test 5 -gt 3
[fajar@linux$]echo $?
0

pernyataan 5 -gt (lebih besar dari) 3 yang dievaluasi test menghasilkan 0 pada
variabel status $? itu artinya pernyataan tersebut benar tetapi coba anda evaluasi
dengan expresi berikut

[fajar@linux$]test 3 -lt 1
[fajar@linux$]echo $?
1

status bernilai 1, berarti pernyataan salah.


anda lihat simbol -gt dan -lt, itulah yang disebut sebagai operator, secara
sederhana operator adalah karakter khusus (spesial) yang melakukan operasi
terhadap sejumlah operand, misalkan 2+3, "+" adalah operator sedangkan 2 dan 3
adalah operandnya, pada contoh test tadi yang bertindak sebagai oparatornya
adalah -lt dan -gt, sedangkan bilangan disebelah kiri dan kanannya adalah
operand. cukup banyak operator yang disediakan bash antara lain:

1.1. Operator untuk integer


Operator Keterangan

bil1 -eq bil2 Mengembalikan Benar jika bil1 sama dengan bil2

bil1 -ne bil2 -||- Benar jika bil1 tidak sama dengan bil2

bil1 -lt bil2 -||- Benar jika bil1 lebih kecil dari bil2

bil1 -le bil2 -||- Benar jika bil1 lebih kecil atau sama dengan bil2

bil1 -gt bil2 -||- Benar jika bil1 lebih besar dari bil2

bil1 -ge bil2 -||- Benar jika bil1 lebih besar atau sama dengan bil2

99
1.2. Operasi string
Operator Keterangan

-z STRING Mengembalikan Benar jika panjang STRING adalah zero

STRING1 == STRING2 -||- Benar jika STRING1 sama dengan STRING2

1.3 Operator file


Operator Keterangan

-f FILE Mengembalikan Benar jika FILE ada dan merupakan file biasa

-d FILE -||- Benar jika FILE ada dan meruapakan direktory

1.4 Operator logika


ekspr1 -o ekspr2 Benar jika jika salah satu ekspresi benar (or,||)

ekspr1 -a ekspr2 Benar jika ekspresi1 dan ekspresi2 benar (and,&&)

! ekspresi Mengembalikan Benar jika ekspresi tidak benar (not!)

untuk informasi lebih lengkap man bash atau info bash di prompt shell anda.

2. Seleksi
2.1 if
Statement builtin if berfungsi untuk melakukan seleksi berdasarkan suatu kondisi
tertentu
syntax:

if test-command1;
then
perintah1;
elif test-command2;
then
perintah2;
else
alternatif_perintah;
fi

100
contoh script if1:

#!/bin/bash
#if1

clear;
if [ $# -lt 1 ];
then
echo "Usage : $0 [arg1 arg2 ...]"
exit 1;
fi

echo "Nama script anda : $0";


echo "Banyak argumen : $#";
echo "Argumennya adalah: $*";

Hasilnya:

[fajar@linux$]./if1

Usage : ./if1 [arg1 arg2 ...]

statement dalam blok if...fi akan dieksekusi apabila kondisi if terpenuhi, dalam
hal ini jika script if1 dijalankan tanpa argumen. kita tinggal membaca apakah
variabel $# lebih kecil (less than) dari 1, jika ya maka eksekusi perintah di dalam
blok if ..fi tsb. perintah exit 1 akan mengakhiri jalannya script, angka 1 pada exit
adalah status yang menandakan terdapat kesalahan, status 0 berarti sukses, anda
dapat melihat isi variabel $? yang menyimpan nilai status exit, tetapi jika anda
memasukkan satu atau lebih argumen maka blok if...fi tidak akan dieksekusi,
statement diluar blok if..filah yang akan dieksekusi.
contoh script if2:

#!/bin/bash

kunci="bash";
read -s -p "Password anda : " pass

101
if [ $pass==$kunci ]; then
echo "Sukses, anda layak dapat linux"
else
echo "Wah sorry, gagal nih";
fi

Hasilnya

[fajar@linux$]./if2
Password anda : bash
Sukses, anda layak dapat linux
[fajar@linux$]./if2
Password anda : Bash
Wah sorry, gagal nih

klausa else akan dieksekusi jika if tidak terpenuhi, sebaliknya jika if terpenuhi
maka else tidak akan dieksekusi
contoh script if3: penyeleksian dengan kondisi majemuk

#!/bin/bash

clear
echo "MENU HARI INI";
echo "-------------";
echo "1. Bakso ";
echo "2. Gado-Gado ";
echo "3. Exit ";
read -p "Pilihan anda [1-3] :" pil;

if [ $pil -eq 1 ];
then
echo "Banyak mangkuk =";
read jum

102
let bayar=jum*1500;
elif [ $angka -eq 2 ];
then
echo "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $angka -eq 3 ];
then
exit 0
else
echo "Sorry, tidak tersedia"
exit 1
fi

echo "Harga bayar = Rp. $bayar"


echo "THX"

Hasilnya:

[fajar@linux$]./if3
MENU HARI INI
-------------
1. Bakso
2. Gado-Gado
3. Exit
Pilihan anda :2

Banyak porsi = 2

Harga bayar = Rp. 4000


THX

103
2.2. statement builtin case
seperti halnya if statement case digunakan untuk menyeleksi kondisi majemuk,
dibanding if, pemakaian case terasa lebih efisien
syntax:

case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]...


esac

contoh script cs1

#!/bin/bash

clear
echo -n "Masukkan nama binatang :";
read binatang;

case $binatang in
pinguin | ayam | burung ) echo "$binatang berkaki 2"
break
;;
onta | kuda | anjing ) echo "$binatang berkaki 4"
break
;;
*) echo "$binatang blom didaftarkan"
break
;;
esac

Hasilnya:

[fajar@linux$]./cs1
Masukkan nama binatang : pinguin
pinguin berkaki 2

104
3. Perulangan
3.1. statement for
syntax:
for NAME [in WORDS ...]; do perintah; done
contoh script for1
#!/bin/bash

for angka in 1 2 3 4 5;
do
echo "angka=$angka";
done

Hasilnya:

[fajar@linux$]./for1
angka=1
angka=2
angka=3
angka=4
angka=5

contoh script for2 berikut akan membaca argumen yang disertakan waktu script
dijalankan

#!/bin/bash

for var
do
echo $var
done

Hasilnya:

[fajar@linux$]./for2 satu 2 tiga

105
satu
2
tiga

atau variasi seperti berikut

#!/bin/bash

for var in `cat /etc/passwd`


do
echo $var
done

Hasilnya: hasil dari perintah cat terhadap file /etc/passwd disimpan ke var dan
ditampilkan menggunakan echo $var ke layar, mendingan gunakan cat
/etc/passwd saja biar efisien.

3.2. statement while


selama kondisi bernilai benar atau zero perintah dalam blok while akan diulang terus
syntax:

while KONDISI; do perintah; done;

contoh script wh1 mencetak bilangan ganjil antara 1-10

#!/bin/bash

i=1;
while [ $i -le 10 ];
do
echo "$i,";
let i=$i+2;
done

Hasilnya:

[fajar@linux$]./wh1

106
1,3,5,7,9,

kondisi tidak terpenuhi pada saat nilai i=11 (9+2), sehingga perintah dalam
blokwhile tidak dieksekusi lagi
contoh script wh2 akan menghitung banyak bilangan genap dan ganjil yang ada.

#!/bin/bash

i=0;
bil_genap=0;
bil_ganjil=0;

echo -n "Batas loop :";


read batas

if [ -z $batas ] || [ $batas -lt 0 ]; then


echo "Ops, tidak boleh kosong atau Batas loop harus >= 0";
exit 0;
fi

while [ $i -le $batas ];


do
echo -n "$i,";
if [ `expr $i % 2` -eq 0 ]; then
let bil_genap=$bil_genap+1;
else
let bil_ganjil=$bil_ganjil+1;
fi
let i=$i+1; #counter untuk mencapai batas
done

echo

107
echo "banyak bilangan genap = $bil_genap";
echo "banyak bilangan ganjil = $bil_ganjil";

Hasilnya:

[fajar@linux$]./wh2
Batas loop : 10
0,1,2,3,4,5,6,7,8,9,10,
banyak bilangan genap = 6
banyak bilangan ganjil = 5

untuk mengetahui apakah nilai i berupa bilangan genap kita cukup menggunakan
operasi matematika % (mod), jika nilai i dibagi 2 menghasilkan sisa 0 berarti i adalah
bilangan genap (semua bilangan genap yang dibagi dengan 2 mempunyai sisa 0)
maka pencacah (bil_genap) dinaikkan 1, selain itu i bilangan ganjil yang dicatat
oleh pencacah bil_ganjilproses ini dilakukan terus selama nilai i lebih kecil atau
samadengan nilai batas yang dimasukkan. script juga akan memeriksa dahulu
nilai batas yang dimasukkan apabila kosong atau lebih kecil dari 0 maka proses
segera berakhir.tentunya dengan statement while kita sudah dapat membuat
perulangan pada script kedai diatas agar dapat digunakan terus-menerus selama
operator masih ingin melakukan proses perhitungan. lihat contoh berikut:

#!/bin/bash
#kedai

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear
echo "MENU HARI INI";
echo "-------------";
echo "1. Bakso ";
echo "2. Gado-Gado ";
echo "3. Exit ";
read -p "Pilihan anda [1-3] :" pil;

108
if [ $pil -eq 1 ];
then
echo -n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
elif [ $pil -eq 2 ];
then
echo -n "Banyak porsi =";
read jum
let bayar=jum*2000;
elif [ $pil -eq 3 ];
then
exit 0
else
echo "Sorry, tidak tersedia"
exit 1
fi

echo "Harga bayar = Rp. $bayar"


echo "THX"
echo
echo -n "Hitung lagi (y/t) :";
read lagi;

#untuk validasi input


while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ]
&& [ $lagi != 'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;

109
done

done

proses pemilihan menu dan perhitungan biaya akan diulang terus selama anda
memasukkan y/Y dan t/T untuk berhenti. dalam script terdapat validasi input
menggunakan while, sehingga hanya y/Y/t/T saja yang dapat diterima soalnya
saya belum mendapatkan fungsi yang lebih efisien

3.3. statement until


jika while akan mengulang selama kondisi benar, lain halnya dengan
statement until yang akan mengulang selama kondisi salah.
berikut contoh script ut menggunakan until

#!/bin/bash

i=1;
until [ $i -gt 10 ];
do
echo $i;
let i=$i+1
done

Hasilnya:

[fajar@linux$]./ut
1,2,3,4,5,6,7,8,9,10,

perhatikan kodisi until yang salah [ $i -gt 10], dimana nilai awal i=1 dan akan
berhenti apabila nilai i = 11 (bernilai benar) 11 -gt 10.

3.4. statement select


select berguna untuk pembuatan layout berbentuk menu pilihan, anda lihat contoh
script pembuatan menu diatas kita hanya melakukannya dengan echo secara satu
persatu, dengan select akan terlihat lebih efisien.
syntax:

select varname in (&ltitem list>); do perintah; done

110
sewaktu dijalankan bash akan menampilkan daftar menu yang diambil dari item list,
serta akan menampilkan prompt yang menunggu masukan dari keyboard, masukan
tersebut oleh bash disimpan di variabel builtin REPLY, apabila daftar item list tidak
dituliskan maka bash akan mengambil item list dari parameter posisi sewaktu script
dijalankan. lebih jelasnya lihat contoh berikut:

#!/bin/bash
#menu1

clear
select menu
do
echo "Anda memilih $REPLY yaitu $menu"
done

Hasilnya:

layout:
[fajar@linux$]./menu1 Slackware Redhat Mandrake
1) Slackware
2) Redhat
3) Mandrake
#? 1
Anda memilih 1 yaitu Slackware

karena item list tidak disertakan dalam script, maka sewaktu script dijalankan kita
menyertakan item list sebagai parameter posisi, coba gunakan
statement select pada program kedai diatas.

#!/bin/bash
#kedai

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ];
do
clear

111
select menu in "Bakso" "Gado-Gado" "Exit";
case $REPLY in
1) echo -n "Banyak mangkuk =";
read jum
let bayar=jum*1500;
;;
2) echo -n "Banyak porsi =";
read jum
let bayar=jum*2000;
;;
3) exit 0
;;
*) echo "Sorry, tidak tersedia"
;;
esac
do

echo "Harga bayar = Rp. $bayar"


echo "THX"
echo
echo -n "Hitung lagi (y/t) :";
read lagi;

#untuk validasi input


while [ $lagi != 'y' ] && [ $lagi != 'Y' ] && [ $lagi != 't' ]
&& [ $lagi != 'T' ];
do
echo "Ops, isi lagi dengan (y/Y/t/Y)";
echo -n "Hitung lagi (y/t) :";
read lagi;
done

112
done

Array
adalah kumpulan variabel dengan tipe sejenis, dimana array ini merupakan feature
Bash yang cukup indah :-) dan salah satu hal yang cukup penting dalam bahasa
pemrograman, anda bisa membayangkan array ini sebagai tumpukan buku - buku
dimeja belajar. lebih jelasnya sebaiknya lihat dulu contoh script berikut:

#!/bin/bash
#array1

buah=(Melon,Apel,Durian);
echo ${buah[*]};

Hasilnya:

[fajar@linux$]./array1.
Melon,Apel,Durian

anda lihat bahwa membuat tipe array di Bash begitu mudah, secara otomatis array
buah diciptakan dan string Melon menempati index pertama dari array buah, perlu
diketahui bahwa array di Bash dimulai dari index 0, jadi array buah mempunyai
struktur seperti berikut:

buah[0] berisi Melon


buah[1] berisi Apel
buah[2] berisi Durian

0,1,2 adalah index array, berarti ada 3 elemen pada array buah, untuk menampilkan
isi semua elemen array gunakan perintah subtitusi seperti pada contoh diatas, dengan
index berisi "*" atau "@". dengan adanya index array tentunya kita dapat mengisi array
perindexnya dan menampilkan isi array sesuai dengan index yang diinginkan. anda
lihat contoh berikut:

#!/bin/bash
#array2

bulan[0]=31
bulan[1]=28

113
bulan[2]=31
bulan[3]=30
bulan[4]=31
bulan[5]=30
bulan[6]=31
bulan[7]=31
bulan[8]=30
bulan[9]=31
bulan[10]=30
bulan[11]=31
echo "Banyak hari dalam bulan November adalah ${bulan[10]} hari"

Hasilnya:

[fajar@linux$]./array2
Banyak hari dalam bulan November adalah 30 hari

sebenarnya kita dapat mendeklarasikan array secara eksplisit menggunakan


statement declare
contohnya:

declare -a myarray

mendeklarasikan variabel myarray sebagai array dengan opsi -a, kemudian anda
sudah dapat memberinya nilai baik untuk semua elemen atau hanya elemen tertentu
saja dengan perulangan yang telah kita pelajari pengisian elemen array dapat lebih
dipermudah, lihat contoh:

#!/bin/bash
#array3

#deklarasikan variabel array


declare -a angka

#clear
i=0;

114
while [ $i -le 4 ];
do
let isi=$i*2;
angka[$i]=$isi;
let i=$i+1;
done

#tampilkan semua elemen array


#dengan indexnya berisi "*" atau "@"
echo ${angka[*]};

#destroy array angka (memory yang dipakai dibebaskan kembali)


unset angka

Hasilnya:

[fajar@linux$]./array3
0 2 4 6 8

Subrutin atau Fungsi


merupakan bagian script atau program yang berisi kumpulan beberapa statement
yang melaksanakan tugas tertentu. dengan subrutin kode script kita tentunya lebih
sederhana dan terstruktur, karena sekali fungsi telah dibuat dan berhasil maka akan
dapat digunakan kapan saja kita inginkan. beberapa hal mengenai fungsi ini adalah:
• Memungkinkan kita menyusun kode script ke dalam bentuk modul-modul kecil yang lebih
efisien dengan tugasnya masing-masing.
• Mencegah penulisan kode yang berulang - ulang.
untuk membuat subrutin shell telah menyediakan keyword function seperti pada
bahasa C, akan tetapi ini bersifat optional (artinya boleh digunakan boleh tidak).
syntax:

function nama_fungsi() { perintah; }

nama_fungsi adalah pengenal (identifier) yang aturan penamaannya sama seperti


pemberian nama variabel, setelah fungsi dideklarasikan atau dibuat anda dapat

115
memaggilnya dengan menyebutkan nama fungsinya. lebih jelasnya lihat contoh script
fungsi1 berikut:

#!/bin/bash

function say_hello() {
echo "Hello, apa kbabar"
}

#panggil fungsi
say_hello;

#panggil sekali lagi


say_hello;

Hasilnya:

[fajar@linux$]./fungsi1
Hello, apa khabar

Hello, apa khabar

jika keyword function disertakan maka kita boleh tidak menggunakan tanda
kurung (), tetapi jika keyword function tidak disertakan maka tanda kurung harus
digunakan, lihat contoh berikut:

#!/bin/bash

function say_hello{
echo "Hello,apa khabar"
}

balas(){

116
echo "Baik-baik saja";
echo "Bagaimana dengan anda ?";
}

#panggil fungsi say_hello


say_hello;

#panggil fungsi balas


balas;

Hasilnya:

[fajar@linux$]./fungsi2
Hello, apa khabar
Baik-baik saja
Bagaimana dengan anda ?

1. Mengirim argumen sebagai parameter ke fungsi


tentunya suatu fungsi lebih berdaya guna apabila dapat menerima argumen yang
dikirim oleh pemanggilnya dan memproses argumen tsb didalam fungsinya, fungsi
yang kita buat pada bash shell tentunya dapat melakukan hal tsb, apabila pada
pemanggilan fungsi kita menyertakan argumen untuk diproses fungsi tsb, maka bash
akan menyimpan argumen - argumen tsb pada parameter posisi 1,2,3,dst..., nah
dengan memanfaatkan parameter posisi tsb tentunya kita dapat mengambil nilai yang
dikirim. lebih jelasnya anda lihat contoh berikut:

#!/bin/bash

function hello{
if [ -z $1 ]; then
echo "Hello, apa khabar anda"
else
echo "Hello $1, apa khabar";
fi

117
}

#masukkan nama anda disini


echo -n "Nama anda :";
read nama

#panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetak
hello $nama;

Hasilnya:

[fajar@linux$]./fungsi3
Nama anda : pinguin
Hello pinguin, apa khabar

lihat fungsi hello, sebelum mencetak pesan kita melakukan pemeriksaan


dengan if terhadap parameter posisi $1 apabila kosong maka pesan "Hello, apa
khabar anda" yang akan ditampilkan, tetapi jika ada string yang kita input maka string
tersebut akan dicetak di dalam blok else pada fungsi. argumen pertama diteruskan
ke variabel 1, argumen kedua pada variabel 2, dst.. jika argumen yang dikirim lebih
dari satu.

2. Cakupan Variabel
secara default variabel - variabel yang digunakan dalam script adalah variabel bersifat
global, maksud global adalah bahwa variabel tsb dikenal dan dapat diakses oleh
semua fungsi dalam script, tetapi bash menyediakan keyword local yang berfungsi
membatasi cakupan (scope) suatu variabel agar dikenal hanya oleh fungsi yang
mendeklarasikannya.coba lihat contoh berikut:

#!/bin/bash

proses(){
echo "Isi variabel a=$a";
}

a=2;
proses();

118
proses $a

Hasilnya:

Isi variabel a=2


Isi variabel a=2

coba anda tambahkan local a pada fungsi proses menjadi

proses(){
local a;
echo -e "a didalam fungsi, a=$a";
}

a=10;
proses()

echo "a diluar fungsi, a=$a"


proses $a

Hasilnya:

a didalam fungsi, a=
a diluar fungsi, a=10
a didalam fungsi a=

nah jelas perbedaannya jika mendeklarasikan variabel memakai


keyword local menyebabkan variabel tersebut hanya berlaku pada fungsi yang
mendekalarasikannya. pada contoh dalam fungsi proses variabel a dideklarasikan
sebagai variabel local dan tidak diberi nilai.
Diakhir dokumentasi ini saya menyertakan contoh script sederhana untuk melakukan
entry data-data KPLI (Kelompok Pencinta Linux Indonesia) dan menyimpannya ke
sebuah file. perintah-perintah shell dan beberapa utility yang digunakan adalah:
• apa yang telah anda pelajari diatas
• utility test, touch
• operator redirection ">>" untuk menambah data

119
• sleep, grep (global regular expression parser), cut, cat, | (pipa), sort dan more
• tput untuk menempatkan cursor pada koordinat tertentu (baris kolom)
sebagai latihan silahkan mengembangkan sendiri script dibawah ini:

#!/bin/bash
#------------------------------------------------------------------
#(C) Moh.fajar Makassar 2001, contoh script buat para linuxer
#file ini adalah public domain, silahkan mendistribusikan kembali
#atau mengubahnya asalkan anda mengikuti aturan - aturan dari GPL
#

menu(){
clear
tput cup 2 8;
echo "SIMPLE DATABASE KPLI"
tput cup 3 11;
echo "1. Entry Data"
tput cup 4 11;
echo "2. Cari Data"
tput cup 5 11;
echo "3. Cetak Data"
tput cup 6 11;
echo "4. Exit"
tput cup 7 9;
read -p "Pilihan anda [1-4] :" pil;
while [ -z $pil ] || [ $pil -lt 1 ] || [ $pil -gt 4 ];
do
tput cup 7 9
read -p "Pilihan anda [1-4] :" pil;
done

120
}

entry()
{

tput cup 9 27
echo "Enrty data"
tput cup 11 27
echo -n "Nama KPLI :";
read nama;

while [ -z $nama ] || grep $nama $data -q -i;


do
tput cup 13 27
echo "Ops Tidak boleh kosong atau $nama sudah ada";
sleep 3
clear
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
done

tput cup 12 27
echo -n "Kota :";
read kota;
tput cup 13 27
echo -n "Alamat :";
read alamat;
tput cup 14 27

121
echo -n "Email :";
read email;
tput cup 16 27
echo "Rekam data ke file"
if !(echo $nama:$kota:$alamat:$email>>$data); then
echo "Ops, gagal merekam ke file"
exit 1;
fi
sleep 3;
}

cari(){
tput cup 9 27
echo "Cari data per record"
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
while [ -z $nama ];
do
tput cup 13 27
echo "Ops, nama tidak boleh kosong"
sleep 3;
tput cup 11 27
echo -n "Nama KPLI :";
read nama;
done

if found=`grep $nama $data -n -i`; then


tput cup 12 27

122
echo -n "Kota :";
echo "$found" | cut -d: -f3
tput cup 13 27
echo -n "Alamat :";
echo "$found" | cut -d: -f4
tput cup 14 27
echo -n "Mail :";
echo "$found" | cut -d: -f5
tput cup 16 27
echo -n "Record ke- $found" | cut -d: -f1
else
tput cup 13 27
echo "Ops, data tidak ditemukan";
fi

cetak()
{
tput cup 12 27
echo "Tampilkan Data"
tput cup 13 27
echo -n "1->Ascendig, 2->Descending :"
read mode
clear;
if [ -z $mode ] || [ $mode -eq 1 ]; then
cat $data | sort | more -d
elif [ $mode -eq 2 ]; then
cat $data | sort -r | more -d
else

123
cat $data | sort | more -d
fi
}

#block utama

data="mydata"

if !(test -e $data); then


if !(touch $data); then
echo "gagal buat file database"
exit 1
fi
fi

lagi='y'
while [ $lagi == 'y' ] || [ $lagi == 'Y' ]
do
menu;
case $pil in
1) entry
;;
2) cari;
;;
3) cetak
;;
4) clear;
exit 0;
;;

124
*)
echo "$pil, tidak ada dalam pilihan"
;;
esac

tput cup 18 27
echo -n "Ke Menu (y/t): ";
read lagi;
done

clear

tentunya kemampuan script ini dapat kita tambahkan dengan mudah sehingga
mendekati program database sesungguhnya, utility seperti tr, paste, egrep, lpr,
dll.. cukup baik dan membantu untuk digunakan. (fajar, 2012)

8
Mengekstrak File dan Mengompersi
Perintah tar pada Linux sering digunakan untuk membuat file arsip .tar.gz atau .tgz, juga
disebut "tarballs." Perintah ini memiliki banyak opsi, tetapi Anda hanya perlu mengingat
beberapa huruf untuk membuat arsip dengan cepat dengan tar . Perintah tar dapat
mengekstraksi arsip yang dihasilkan juga.
Perintah tar GNU yang disertakan dengan distribusi Linux memiliki kompresi terintegrasi. Ini
dapat membuat arsip .tar dan kemudian mengompresnya dengan kompresi gzip atau bzip2
dalam satu perintah. Itu sebabnya file yang dihasilkan adalah file .tar.gz atau file .tar.bz2.

125
Kompres Direktori Seluruh atau File Tunggal
Gunakan perintah berikut untuk mengompresi seluruh direktori atau satu file di Linux. Ini juga
akan memampatkan setiap direktori lain di dalam direktori yang Anda tentukan-dengan kata
lain, ia bekerja secara rekursif.

tar -czvf name-of-archive.tar.gz / path / to / direktori-atau-file

Inilah yang sebenarnya berarti switch:


• -c: Carsip ulang.
• -z: Kompres arsip dengan gzaku p.
• -v: Menampilkan kemajuan di terminal saat membuat arsip, juga dikenal sebagai
“verbose ”mode. V selalu opsional dalam perintah ini, tetapi sangat membantu.
• -f: Memungkinkan Anda untuk menentukan filename arsip.

126
Katakanlah Anda memiliki direktori bernama "barang" di direktori saat ini dan Anda ingin
menyimpannya ke file bernama archive.tar.gz. Anda akan menjalankan perintah berikut:

tar -czvf archive.tar.gz

Atau, katakanlah ada direktori di / usr / local / sesuatu di sistem saat ini dan Anda ingin
mengompresnya ke file bernama archive.tar.gz. Anda akan menjalankan perintah berikut:

tar -czvf archive.tar.gz / usr / local / sesuatu

Kompres Beberapa Direktori atau File Sekaligus


Sementara tar sering digunakan untuk mengkompres satu direktori, Anda juga dapat
menggunakannya untuk mengompres beberapa direktori, beberapa file individual, atau
keduanya. Cukup sediakan daftar file atau direktori, bukan satu pun. Sebagai contoh, misalkan
Anda ingin meng-compress direktori / home / ubuntu / Downloads, direktori / usr / local /
stuff, dan file /home/ubuntu/Documents/notes.txt. Anda baru saja menjalankan perintah
berikut:

tar -czvf archive.tar.gz / home / ubuntu / Unduh / usr / local / stuff


/home/ubuntu/Documents/notes.txt

Cukup cantumkan sebanyak mungkin direktori atau file yang ingin Anda cadangkan.

127
Kecualikan Direktori dan File
Dalam beberapa kasus, Anda mungkin ingin memadatkan seluruh direktori, tetapi tidak
menyertakan file dan direktori tertentu. Anda dapat melakukannya dengan menambahkan --
mengecualikan beralih untuk setiap direktori atau file yang ingin Anda kecualikan.
Sebagai contoh, katakanlah Anda ingin meng-compress / home / ubuntu, tetapi Anda tidak
ingin meng-compress direktori / home / ubuntu / Downloads dan /home/ubuntu/.cache.
Inilah cara Anda melakukannya:

tar -czvf archive.tar.gz / home / ubuntu --exclude = / home / ubuntu / Downloads --exclude =
/ home / ubuntu / .cache

Itu --mengecualikan switch sangat kuat. Tidak mengambil nama direktori dan file-itu benar-
benar menerima pola. Ada banyak lagi yang bisa Anda lakukan dengan itu. Misalnya, Anda
dapat mengarsipkan seluruh direktori dan mengecualikan semua file .mp4 dengan perintah
berikut:

tar -czvf archive.tar.gz / home / ubuntu --exclude = * .mp4

128
Gunakan Kompresi bzip2
Sementara kompresi gzip paling sering digunakan untuk membuat file .tar.gz atau .tgz, tar
juga mendukung kompresi bzip2. Ini memungkinkan Anda untuk membuat file yang
dikompresi bzip2, sering kali bernama file .tar.bz2, .tar.bz, atau .tbz. Untuk melakukannya,
gantikan saja -z untuk gzip di perintah di sini dengan -j untuk bzip2.
Gzip lebih cepat, tetapi umumnya kompres sedikit, sehingga Anda mendapatkan file yang
agak lebih besar. Bzip2 lebih lambat, tetapi kompres lebih sedikit, jadi Anda mendapatkan file
yang lebih kecil. Gzip juga lebih umum, dengan beberapa sistem Linux yang dilucuti termasuk
dukungan gzip secara default, tetapi tidak mendukung bzip2. Secara umum, meskipun, gzip
dan bzip2 praktis sama dan keduanya akan bekerja sama.
Misalnya, daripada contoh pertama yang kami sediakan untuk mengompresi direktori barang,
Anda akan menjalankan perintah berikut:

tar -cjvf archive.tar.bz2

129
Ekstrak Arsip
Setelah Anda memiliki arsip, Anda dapat mengekstraknya dengan perintah tar. Perintah
berikut akan mengekstrak isi archive.tar.gz ke direktori saat ini.

tar -xzvf archive.tar.gz

Ini sama dengan perintah pembuatan arsip yang kami gunakan di atas, kecuali -x beralih
menggantikan -c beralih. Ini menentukan Anda ingin extraktat arsip alih-alih membuatnya.
Anda mungkin ingin mengekstrak isi arsip ke direktori tertentu. Anda dapat melakukannya
dengan menambahkan -C beralih ke akhir perintah. Sebagai contoh, perintah berikut akan
mengekstrak isi file archive.tar.gz ke direktori / tmp.

tar -xzvf archive.tar.gz -C / tmp

Jika file adalah file terkompresi bzip2, ganti "z" dalam perintah di atas dengan "j".

Ini adalah penggunaan paling sederhana dari perintah tar. Perintah tersebut mencakup
sejumlah besar opsi tambahan, jadi kami tidak dapat mendaftar semuanya di sini. Untuk
informasi lebih lanjut. jalankan info tar perintah di shell untuk melihat halaman informasi
rinci perintah tar. tekan q kunci untuk keluar dari halaman informasi setelah Anda selesai.
Anda juga dapat membaca manual online tar.
Jika Anda menggunakan desktop Linux grafis, Anda juga bisa menggunakan utilitas file-
kompresi atau file manager yang disertakan dengan desktop Anda untuk membuat atau
mengekstrak file tar. Di Windows, Anda dapat mengekstraksi dan membuat arsip tar dengan
utilitas 7-Zip gratis. (haris, 2018)

130
9
THE LOGGING SYSTEM
Untuk setiap pengguna Linux, sangat penting untuk memiliki pengetahuan dalam
penggunaan log file. File log menyimpan informasi tentang peristiwa yang terjadi ketika
sistem operasi dan aplikasi dijalankan, termasuk segala kesalahan dan peringatan keamanan.
Sistem Anda akan mencatat informasi secara otomatis berdasarkan serangkaian aturan yang
akan saya tunjukkan kepada Anda cara mengkonfigurasi dalam bab ini.
Sebagai seorang peretas, file log dapat menjadi jejak aktivitas dan target identitas
anda. Tapi itu juga bisa menjadi jejak bagi aktivitas Anda sendiri pada orang sistem lain.
Seorang hacker perlu mengetahui informasi apa yang mereka dapat peroleh, serta apa yang
bisa dikumpulkan tentang tindakan mereka sendiri dan metode untuk menyembunyikan bukti
itu
Di sisi lain, siapa pun yang mengamankan sistem Linux perlu tahu caranya untuk
mengelola fungsi logging untuk menentukan apakah suatu sistem telah diserang dan
kemudian menguraikan apa yang sebenarnya terjadi dan siapa yang melakukannya.
Bab ini menunjukkan cara untuk memeriksa dan mengkonfigurasi file log juga sebagai
cara menghapus bukti aktivitas Anda dan bahkan menonaktifkan pencatatan sama sekali.
Pertama, kita akan melihat daemon yang melakukan pencatatan.

131
Rsyslog Logging Daemon
Linux menggunakan daemon yang disebut syslogd untuk secara otomatis mencatat
peristiwa di log komputer anda. Beberapa variasi syslog, termasuk rsyslog dan syslog-ng,
adalah digunakan pada distribusi Linux yang berbeda, dan meskipun beroperasi sangat mirip,
ada beberapa perbedaan kecil. Sejak Kali Linux dibangun Debian, dan Debian datang dengan
rsyslog secara default, kami fokus pada utilitas itu dalam bab ini. Jika Anda ingin menggunakan
distribusi lain, ada baiknya melakukan sedikit penelitian tentang sistem logging mereka.
Mari kita lihat rsyslog di sistem Anda. Kami akan mencari semua file terkait dengan
rsyslog. Pertama, buka terminal di Kali dan masukkan yang berikut ini:
kali >locate rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d
/etc/default/rsyslog
/etc/init.d/rsyslog
/etc/logcheck/ignore.d.server/rsyslog
/etc/logrotate.d/rsyslog
/etc/rc0.d/K04rsyslog
--snip--

Seperti yang Anda lihat, banyak file berisi kata kunci rsyslog — sebagian yang lebih
bermanfaat daripada yang lain. Yang ingin kita periksa adalah file konfigurasi rsyslog.conf.

Rsyslog Configuration File


Seperti hampir setiap aplikasi di Linux, rsyslog dikelola dan dikonfigurasi oleh file
konfigurasi plaintext yang terletak, seperti umumnya terjadi di Linux, di direktori / etc. Dalam
kasus rsyslog, file konfigurasi terletak di /etc/rsyslog.conf. Buka file itu dengan editor teks apa
pun, dan kami akan menjelajah apa yang ada di dalam
kali >leafpad /etc/rsyslog.conf
/etc/rsyslog.conf Configuration file for rsyslog.
# For more information see
# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html

132
#################
#### MODULES ####
#################
module(load="imuxsock") # provides support for local system logging
module(load="imklog") # provides kernel logging support
#module(load="immark") # provides --MARK-- message capability
# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")
# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
###########################
#### GLOBAL DIRECTIVES ####
###########################

Seperti yang Anda lihat, file rsyslog.conf sudah didokumentasikan dengan baik banyak
komentar menjelaskan penggunaannya. Banyak dari informasi ini tidak akan berguna bagi
Anda saat ini, tetapi jika Anda menavigasi ke bawah garis 50, Anda akan menemukan bagian
Aturan. Di sinilah Anda dapat mengatur aturan apa sistem Linux Anda akan secara otomatis
login untuk Anda.

Rsyslog Logging Rules


Aturan rsyslog menentukan jenis informasi apa yang dicatat, apa program mencatat
pesannya, dan tempat log itu disimpan. Sebagai hacker, ini memungkinkan Anda untuk
mencari tahu apa yang sedang login dan di mana log mereka ditulis sehingga Anda dapat
menghapus atau mengaburkannya. Gulir ke baris 50 dan Anda harus melihat sesuatu seperti
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog

133
#cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
1pr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err

Setiap baris adalah aturan logging terpisah yang mengatakan pesan apa yang dicatat dan
tempat mereka masuk. Format dasar untuk aturan ini adalah sebagai berikut:

facility.priority action

Kata kunci fasilitas merujuk program, seperti mail, kernel, atau lpr, yang pesannya
sedang dicatat. Menentukan kata kunci prioritas jenis pesan apa yang akan dicatat untuk
program itu. Kata kunci tindakan, pada paling kanan, referensi lokasi di mana log akan dikirim.
Mari lihat di setiap bagian lebih dekat, dimulai dengan kata kunci fasilitas, yang merujuk pada
perangkat lunak apa pun yang menghasilkan log, apakah itu kernel, sistem surat, atau
pengguna.
Berikut ini adalah daftar kode yang valid yang dapat digunakan di tempat kata kunci
fasilitas dalam aturan file konfigurasi Anda:
auth/authpriv Security/authorization messages
cron Clock daemons
daemon Other daemons
kern Kernel messages
lpr Printing system
mail Mail system
user Generic user-level messages
Wildcard asterisk (*) sebagai pengganti kata merujuk ke semua fasilitas. Kamu dapat memilih
lebih dari satu fasilitas dengan mendaftarkannya dipisahkan dengan koma.

134
Prioritas memberitahu sistem jenis pesan yang akan dicatat. Kode adalah terdaftar
dari prioritas terendah, mulai dari debug, ke prioritas tertinggi, berakhir pada panic. Jika
prioritasnya adalah *, pesan dari semua prioritas dicatat. Kapan kamu tentukan prioritas,
pesan dari prioritas itu dan yang lebih tinggi dicatat. Untuk Misalnya, jika Anda menentukan
kode peringatan prioritas, sistem akan masuk pesan yang diklasifikasikan sebagai peringatan
dan prioritas yang lebih tinggi, tetapi tidak akan mencatat pesan ditandai sebagai krit atau
prioritas lebih rendah dari peringatan.
Berikut daftar lengkap kode yang valid untuk prioritas:

• debug
• info
• notice
• warning
• warn
• error
• err
• crit
• alert
• emerg
• panic
Kode warning, warn, error, err, emerg, dan panic semuanya usang dan tidak boleh digunakan.
action biasanya nama file dan lokasi di mana log seharusnya dikirim. Perhatikan bahwa
secara umum, file log dikirim ke direktori / var / log dengan nama file yang menggambarkan
fasilitas yang menghasilkannya, seperti auth. Ini berarti, misalnya, bahwa log yang dihasilkan
oleh fasilitas auth akan dikirim ke /var/log.auth.log.
Mari kita lihat beberapa contoh aturan log:

mail.* /var/log/mail

Contoh ini akan mencatat peristiwa mail dari semua (*) prioritas ke / var / log / mail.

kern.crit /var/log/kernel

Contoh ini akan mencatat kejadian kernel dengan prioritas kritis (krit) atau lebih tinggi
ke / var / log / kernel.

*.emerg *

Contoh terakhir ini akan mencatat semua peristiwa prioritas darurat (emergensi)
semua pengguna yang masuk log. Dengan aturan ini, hacker dapat menentukan di mana file
log berada, ubah prioritas, atau bahkan nonaktifkan logging khusus aturan.

135
Secara otomatis Membersihkan Log dengan logrotate
File log membutuhkan ruang, jadi jika Anda tidak menghapusnya secara berkala,
mereka akan melakukannya di seluruh hard drive Anda. Di sisi lain, jika Anda menghapus file
log Anda terlalu sering, Anda tidak akan memiliki log untuk menyelidiki di beberapa titik waktu
di masa depan. Anda dapat menggunakan logrotate untuk menentukan keseimbangan antara
persyaratan yang berlawanan ini dengan memutar log Anda.
Rotasi log adalah proses pengarsipan file log secara teratur dengan memindahkan
mereka ke beberapa lokasi lain, meninggalkan Anda dengan file log baru. Bahwa Lokasi yang
diarsipkan akan dibersihkan setelah jangka waktu tertentu.
Sistem Anda sudah memutar file log menggunakan pekerjaan cron yang
mempekerjakan utilitas logrotate. Anda dapat mengkonfigurasi utilitas logrotate untuk
memilih keteraturan rotasi log Anda dengan file teks /etc/logrotate.conf. Ayo buka dengan
editor teks dan lihat:

kali >leafpad /etc/logrotate.conf

# see "man logrotate" for details


# rotate log files weekly

➊ weekly
# keep 4 weeks worth of backlogs

➋ rotate 4

➌ # create new (empty) log files after rotating old ones


create

➍ # uncomment this if you want your log files compressed


#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}

136
Pertama, Anda dapat mengatur satuan waktu angka rotate Anda merujuk ke ➊. Itu default di
sini adalah mingguan, artinya angka apa pun setelah kata kunci rotasi selalu mengacu pada
minggu.
Lebih jauh ke bawah, Anda dapat melihat pengaturan seberapa sering memutar log—
pengaturan default adalah untuk memutar log setiap empat minggu ➋. Default ini konfigurasi
akan berfungsi untuk kebanyakan orang, tetapi jika Anda ingin menyimpan log Anda lebih
lama untuk keperluan investigasi atau lebih pendek untuk membersihkannya lebih cepat, ini
adalah pengaturan yang harus Anda ubah. Misalnya, jika Anda memeriksa file log Anda setiap
minggu dan ingin menghemat ruang penyimpanan, Anda dapat mengubah pengaturan ini
untuk memutar 1. Jika Anda memiliki banyak penyimpanan untuk log dan ingin menyimpan
sebuah catatan semi permanen untuk analisis forensik nanti, Anda bisa mengubahnya
mengatur untuk memutar 26 untuk menyimpan log Anda selama enam bulan atau memutar
52 untuk menyimpan mereka selama satu tahun.

Secara default, file log kosong baru dibuat ketika yang lama diputar keluar ➌. Seperti
komentar di file konfigurasi menyarankan, Anda juga bisa pilih untuk mengompres file log
yang diputar ➍.
Pada akhir setiap periode rotasi, file log diganti nama dan didorong ke ujung rantai log
saat file log baru dibuat, mengganti file log saat ini. Sebagai contoh, /var/log.auth akan
menjadi /var/log.auth.1, lalu /var/log.auth.2, dan seterusnya. Jika Anda memutar setiap log
empat minggu dan simpan empat set cadangan, Anda akan memiliki /var/log.auth.4, tetapi
tidak ada /var/log.auth.5, artinya /var/log.auth.4 akan dihapus daripada sedang didorong ke
/var/log/auth.5. Anda dapat melihat ini dengan menggunakan locate command untuk
menemukan file /var/log/auth.log dengan wildcard, seperti yang ditunjukkan di sini:

kali >locate /var/log/auth.log.*

/var/log/auth.log.1

/var/log/auth.log.2

/var/log/auth.log.3

/var/log/auth.log.4

Untuk detail lebih lanjut tentang banyak cara untuk menyesuaikan dan menggunakan
logrotate utilitas, lihat halaman man logrotate. Ini adalah sumber yang bagus untuk dipelajari
tentang fungsi yang dapat Anda gunakan dan variabel yang dapat Anda ubah sesuaikan
bagaimana log Anda ditangani. Setelah Anda menjadi lebih akrab dengan Linux, Anda akan
mendapatkan perasaan yang lebih baik tentang seberapa sering Anda perlu login dan opsi apa
yang Anda sukai, jadi ada baiknya meninjau kembali file logrotate.conf.

Menghapus Bukti
Pertama, Anda ingin menghapus semua log aktivitas Anda. Anda bisa saja buka file log
dan hapus log apa saja yang merinci aktivitas Anda, baris demi baris, menggunakan teknik

137
penghapusan file yang Anda pelajari di Bab 2. Namun, ini bisa memakan waktu dan
meninggalkan celah waktu dalam log file, yang akan terlihat mencurigakan. Selain itu, file yang
dihapus biasanya bisa pulih oleh penyelidik forensik yang terampil.
Solusi yang lebih baik dan lebih aman adalah merobek file log. Dengan sistem
penghapusan file yang lain, penyelidik yang terampil masih dapat memulihkan menghapus
file, tetapi anggaplah ada cara untuk menghapus file dan menimpa beberapa kali,
membuatnya lebih sulit untuk pulih. Beruntung bagi kita, Linux memiliki perintah bawaan,
nama rusak, hanya untuk tujuan ini.
Untuk memahami cara kerja shred command, lihat cepat di layar bantuan dengan
memasukkan perintah berikut:

kali >shred --help

Usage: shred [OPTION]...FILE...

Overwrite the specified FILE(s) repeatedly in order to make it harder

for even very expensive hardware probing to recover data

--snip--

Seperti yang dapat Anda lihat dari output penuh pada layar Anda, shred command memiliki
banyak pilihan. Dalam bentuknya yang paling dasar, sintaksinya sederhana:

shred <FILE>

Dengan sendirinya, shred akan menghapus file dan menimpa beberapa kali — secara
default, shred menimpa empat kali. Secara umum, semakin banyak file ditimpa, semakin sulit
untuk pulih, tetapi perlu diingat bahwa masing-masing menimpa membutuhkan waktu, jadi
untuk file yang sangat besar, shredding(merobek) dapat memakan waktu.
Dua opsi yang berguna untuk dimasukkan adalah opsi -f, yang mengubah izin pada file
untuk memungkinkan menimpa jika perubahan izin diperlukan, dan opsi –n, yang
memungkinkan Anda memilih berapa kali menimpa file. Sebagai contoh, kami akan mencacah
file log /var/log/auth.log 10 kali menggunakan perintah berikut:

kali >shred -f -n 10 /var/log/auth.log.*

Kami membutuhkan opsi –f untuk memberi kami izin untuk merobek file auth, dan
kami ikuti opsi –n dengan jumlah yang diinginkan untuk menimpa. Setelah path file yang ingin
kita hancurkan, kita sertakan tanda bintang wildcard begitu kami merobek-robek bukan
hanya file auth.log, tetapi juga semua log yang telah dibuat dengan logrotate, seperti
auth.log.1, auth.log.2, dan sebagainya.
Sekarang coba buka file log:

kali >leafpad /var/log/auth.log.1

138
Setelah Anda merobek-robek file, Anda akan melihat bahwa isinya omong kosong
tidak dapat dipahami, seperti yang ditunjukkan pada

Sekarang jika insinyur keamanan atau penyelidik forensik memeriksa log file, mereka
akan menemukan apa-apa untuk digunakan karena tidak ada yang dapat dipulihkan!

Menonaktifkan Pencatatan
Opsi lain untuk menutupi trek Anda adalah menonaktifkan log. Ketika seorang hacker
mengambil kendali suatu sistem, mereka dapat segera menonaktifkannya logging untuk
mencegah sistem melacak kegiatan mereka. Ini, tentu saja, membutuhkan hak akses root.
Untuk menonaktifkan semua pencatatan, peretas cukup menghentikan rsyslog
dasmon. Menghentikan layanan apa pun di Linux menggunakan sintaks yang sama, yang
ditunjukkan di sini

service servicename start|stop|restart

Jadi, untuk menghentikan daemon logging, Anda bisa memasukkan yang berikut ini
perintah:

kali >service rsyslog stop

Sekarang Linux akan berhenti membuat file log apa pun sampai layanannya restart,
memungkinkan Anda untuk beroperasi tanpa meninggalkan bukti apa pun di file log!

139
10
Menggunakan Layanan
Dalam terminologi Linux, service adalah aplikasi yang berjalan di Internet background
menunggu Anda untuk menggunakannya. Sistem Linux Anda memiliki lusinan service yang
sudah diinstal sebelumnya. Dari jumlah tersebut, yang paling terkenal di mana-mana adalah
Apache Web Server, yang digunakan untuk membuat, mengelola, dan menggunakan server
web, tetapi ada banyak lagi. Untuk keperluan bab ini pada service, saya telah memilih hanya
empat yang sangat penting untuk para peretas yaitu: Apache Web Server, OpenSSH, MySQL,
dan PostgreSQL.
Dalam bab ini, Anda akan belajar cara menyiapkan server web dengan Apache, mata-
matai secara fisik dengan OpenSSH, akses data dengan MySQL, dan simpan hacking informasi
dengan PostgreSQL

140
Starting, Stopping, and Restarting Services
Sebelum kita mulai bekerja dengan empat service penting ini, mari kita mulai
memeriksa cara start, stop, dan restart service di Linux.
Beberapa layanan dapat dihentikan dan dimulai melalui GUI di Kali Linux, sama seperti
yang Anda lakukan pada sistem operasi seperti Windows atau Mac. Namun, beberapa layanan
memerlukan penggunaan baris perintah, yang akan kami lakukan Lihat ke sini. Berikut adalah
sintaks dasar untuk mengelola service

service servicename start|stop|restart

Untuk memulai service apache2 (server web atau layanan HTTP), Anda ketikkan
perintah:

kali >service apache2 start

Untuk menghentikan service, ketikkan:

kali >service apache2 stop

Biasanya, ketika Anda membuat perubahan konfigurasi ke suatu aplikasi atau service
dengan mengubah file konfigurasi plaintext, Anda perlu me-restart service untuk mengambil
konfigurasi baru. Dengan demikian, Anda ketikkan perintah berikut:

kali >service apache2 restart

Sekarang Anda memahami cara start, stop, dan restart service dari baris perintah,
mari kita beralih ke empat layanan Linux paling critical untuk hacker.

141
Membuat Server Web HTTP dengan Web Apache Server
Apache Web Server mungkin adalah layanan yang paling umum digunakan Sistem
Linux. Apache ditemukan di lebih dari 60 persen web dunia server, jadi setiap admin Linux
yang menghargai diri sendiri harus terbiasa dengannya. Sebagai seorang peretas yang ingin
meretas situs web, sangat penting untuk memahami bagian dalam cara kerja Apache, situs
web, dan database backend situs ini. Anda juga dapat menggunakan Apache untuk
mengatur server web Anda sendiri, dari mana Anda dapat menayangkan malware melalui
cross-site scripting (XSS) kepada siapa saja yang mengunjungi situs Anda, atau Anda dapat
mengkloning situs web dan mengarahkan lalu lintas ke situs Anda melalui penyalahgunaan
Sistem Nama Domain (DNS). Dalam salah satu dari kasus ini, sebuah pengetahuan dasar
tentang Apache diperlukan.

Memulai dengan Apache


Jika Anda menjalankan Kali di sistem Anda, Apache sudah diinstal. Banyak distro Linux
lainnya yang menginstalnya secara default juga. Jika tidak menginstal Apache, Anda dapat
mengunduh dan menginstalnya dari Internet repositori dengan memasukkan perintah yang
berikut ini:

kali >apt-get install apache2

Apache Web Server sering dikaitkan dengan database MySQL (yang akan kita lihat di
bagian selanjutnya) dan kedua layanan ini sangat sering dipasangkan dengan bahasa scripting
seperti Perl atau PHP untuk dikembangkan aplikasi web. Kombinasi ini dari Linux, Apache,
MySQL, dan PHP atau Perl membentuk platform yang kuat dan tangguh untuk pengembangan
dan penyebaran aplikasi berbasis web, yang dikenal secara kolektif sebagai LAMP. Ini adalah
alat yang paling banyak digunakan untuk mengembangkan situs web di Internet Dunia Linux
— dan mereka sangat populer di dunia Microsoft juga, di mana mereka umumnya disebut
sebagai WAMP, dengan W berdiri untuk Windows. Namun ada juga Xammp yang paling
populer di windows.
Langkah pertama, tentu saja, adalah memulai daemon Apache kita. Di Kali, buka
Applications ▸ Services ▸ HTTPD dan klik mulai Apache. Kamu bisa lakukan hal yang sama dari
baris perintah dengan memasukkan yang berikut ini:

kali >services apache2 start

Sekarang Apache sedang berjalan, seharusnya bisa melayani default-nya halaman


web. Masukkan http://localhost/ di browser web favorit Anda untuk membuka halaman
web, yang seharusnya terlihat seperti

142
Seperti yang Anda lihat, Apache menampilkan "It works" sebagai halaman web
standarnya. Sekarang Anda tahu Server Web Apache Anda berfungsi, mari sesuaikan Itu!

Edit File index.html


Halaman web default Apache adalah di /var/www/html/index.html. Anda bisa
mengedit file index.html untuk menyajikan informasi apa pun yang Anda inginkan, jadi mari
buat milik kita sendiri. Untuk ini, Anda dapat menggunakan editor teks apa pun sesuka Anda;
Saya akan menggunakan Leafpad. Buka /var/www/html/index.html dan Anda akan melihat
sesuatu seperti

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtm11/DTD/xhtm11-transiti
<html xmlns="http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" I>

➊ <title>Apache2 Debian Default Page: It works</title>


<style type="text/css" media="screen">
*{
margin: Opx Opx Opx Opx;
padding: Opx Opx Opx Opx;
}
body, html {

143
padding: 3px 3px 3px 3px;
background-color: #D8DBE2;
font-family: Verdana, sans-serif;
font-size: 11pt;
text-align: center;
}
div.main_page {
position: relative;
display: table;

Perhatikan di sini bahwa halaman web default memiliki teks yang persis sama
ditampilkan ketika kami membuka browser kami ke localhost, tetapi dalam HTML format ➊.
Yang perlu kita lakukan adalah mengedit atau mengganti file ini untuk memiliki web server
dan menampilkan informasi yang kita inginkan.

Menambahkan Syntax HTML


Sekarang kita memiliki server web yang sudah berjalan dan file index.html yang
terbuka, kami dapat menambahkan teks apa pun yang kami inginkan untuk server web
sajikan. Kita akan membuat beberapa blok HTML sederhana.
Mari kita buat halaman ini. Dalam file baru di editor teks Anda, masukkan kode
ditunjukkan dalam

<html>
<body>
<h1>Saya hacker </h1>
<p> ujicoba server </p>
<p> semangat indonesia</p>
</body>
</html>

Setelah Anda memasukkan teks persis seperti yang muncul di atas, simpan file ini
sebagai /var/www/html/index.html dan tutup editor teks Anda. editor teks anda kemudian
akan meminta Anda bahwa file tersebut sudah ada. Tidak apa-apa. Cukup timpa file
/var/www/html/index.html yang ada.

144
Extra Informasi dari MySQL
MySQL adalah database yang paling banyak digunakan di belakang web berbasis
database aplikasi. Di era modern kita teknologi Web 2.0, di mana hampir setiap situs web
digerakkan oleh basis data, ini berarti MySQL menyimpan datanya sebagian besar web.
Database adalah "bulu emas" untuk peretas. Mereka mengandung informasi critical
tentang pengguna serta informasi rahasia seperti kredit nomor kartu. Untuk alasan ini,
peretas paling sering menargetkan basis data.
Seperti Linux, MySQL adalah open source dan lisensi publik umum (GPL), dan Anda
akan menemukannya terinstal di hampir setiap distribusi Linux.
Menjadi bebas, open source, dan kuat, MySQL telah menjadi database pilihan untuk
banyak aplikasi web, termasuk situs web populer seperti WordPress, Facebook, LinkedIn,
Twitter, Kayak, Walmart.com, Wikipedia, dan YouTube.
Sistem manajemen konten populer lainnya (CMS) seperti Joomla, Drupal, dan Ruby on
Rails semua menggunakan MySQL juga. Anda mendapatkan idenya. Jika kamu ingin
mengembangkan atau menyerang database backend aplikasi web, Anda harus tahu tentang
MySQL. Ayo Mari kita mulai.

Memulai MySQL
Untungnya, Kali telah menginstal MySQL (jika Anda menggunakan distribusi yang lain,
Anda dapat mengunduh dan menginstal MySQL dari perangkat lunak repositori atau langsung
dari https://www.mysql.com/downloads/).
Untuk memulai service MySQL, ketikkan perintah berikut:

kali >service mysql start

Selanjutnya, anda perlu memasukkan autentikasi, jangan khawatir secara default


username nya adalah root dan password nya kosong, berikut contohnya:

kali >mysql -u root -p


Enter password:
Welcome to MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.6.30-1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement

145
mysql >

PostgreSQL dengan Metasploit


PostgreSQL, atau hanya Postgres, adalah database relasional open source lainnya
sering digunakan dalam aplikasi internet yang sangat besar karena kemampuannya skala
dengan mudah dan menangani beban kerja yang berat. Ini pertama kali dirilis pada Juli 1996
dan dikelola oleh sekelompok besar pengembang yang dikenal sebagai Grup Pengembangan
Global PostgreSQL.
PostgreSQL juga diinstal secara default di Kali, tetapi jika Anda menggunakan distribusi
Linux lain, kemungkinan akan berada di repositori Anda dan Anda bisa instal dengan
memasukkan perintah berikut:

kali >apt-get postgres install

Sebagai seorang peretas, Anda akan menemukan PostgreSQL sangat penting karena
itu adalah database default dari pengujian penetrasi dan kerangka kerja peretasan,
Metasploit. Metasploit menggunakan PostgreSQL untuk menyimpannya modul, serta hasil
pemindaian dan eksploitasi, untuk kemudahan penggunaan dalam sebuah tes penetrasi atau
hack. Untuk alasan itu, kita akan menggunakan PostgreSQL di sini dalam konteks Metasploit.
Seperti hampir semua service di Linux, kita dapat memulai PostgreSQL dengan
memasuki service application start, seperti:

kali >service postgresql start

Dengan PostgreSQL aktif dan berjalan, mari mulai Metasploit:

kali >msfconsole

Perhatikan bahwa ketika Metasploit telah selesai memulai, Anda akan melihat sebuah
msf> prompt.
Mengajari Anda cara menggunakan Metasploit untuk peretasan dan eksploitasi
merupakan tujuan di luar cakupan buku ini, tetapi di sini kita akan mengatur database tempat
Metasploit akan menyimpan informasinya.
Dengan Metasploit berjalan, kita dapat mengatur PostgreSQL dengan mengikuti
perintah sehingga ia menyimpan data dari aktivitas Metasploit apa pun di sistem anda:

msf >msfdb init


[*] exec :msfdb init
Creating database use 'msf'
Enter password for new role
Enter it again:

146
Creating databases 'msf' and 'msf_test'
Creating configuration file /usr/share/metasploit-framework/config/database.yml
Creating initial database schema

Selanjutnya, kita perlu masuk ke Postgres sebagai root. Di sini, kita mendahului
command with su, perintah "switch user", untuk mendapatkan hak akses root:

msf >su postgres


[*] su postgres
postgres@kali:/root$

Ketika Anda masuk ke Postgres, Anda akan melihat bahwa promptnya sudah diubah
menjadi postgres@ kali:/root$, mewakili aplikasi, the nama host, dan pengguna
Pada langkah selanjutnya, kita perlu membuat pengguna dan kata sandi, seperti:

postgres@kali:/root$ createuser msf_user -P


Enter Password for new role:
Enter it again:

Kami membuat nama pengguna msf_user menggunakan opsi –P dengan pengguna


create perintah. Kemudian masukkan kata sandi yang Anda inginkan dua kali. Selanjutnya,
Anda perlu buat database dan berikan izin untuk msf_user. Beri nama database
hackers_arise_db, seperti yang ditunjukkan di sini:

postgres@kali:/root$ createdb --owner=msf_user hackers_arise_db


postgres@kali:/root$ exit

Ketika Anda keluar dari Postgres dengan perintah keluar, terminal akan melakukannya
kembali ke prompt msf>
Selanjutnya, kita harus menghubungkan konsol Metasploit Anda, msfconsole, ke
Database PostgreSQL dengan mendefinisikan yang berikut:

• The user
• The password
• The host
• The database name
Dalam kasus kami, kami dapat menghubungkan msfconsole ke database kami dengan
perintah berikut:

msf >db_connect msf_user:password@127.0.0.1/hackers_arise_db

147
Anda tentu saja harus memberikan kata sandi yang Anda gunakan sebelumnya.
Alamat IP adalah dari sistem lokal Anda (localhost), sehingga Anda dapat menggunakannya
127.0.0.1 kecuali Anda membuat basis data ini pada sistem jarak jauh.
Terakhir, kita dapat memeriksa status dari database PostgreSQL yang akan dibuat
yakin itu terhubung:

msf >db_status [*] postgresql connected to msf

Seperti yang Anda lihat, Metasploit merespons bahwa database PostgreSQL telah
terhubung dan siap digunakan. Sekarang ketika kita melakukan pemindaian sistem atau
menjalankan exploit dengan Metasploit, hasilnya akan disimpan di PostgreSQL basis data
kami. Selain itu, Metasploit sekarang menyimpan modul-modulnya di Postgres database
kami, membuat pencarian untuk modul yang tepat lebih mudah dan lebih cepat!

148
11
MENJADI AMAN DAN ANONIM
Anonimitas dan privasi bukan tentang menutup pintu ketika Anda pergi ke kamar mandi.
Untuk individu, mereka mungkin paham tentang otonomi pribadi, kebebasan politik atau
hanya melindungi diri Anda di dunia digital.

Untuk perusahaan, privasi karyawan mengurangi risiko serangan social engineering, bahkan
blackmail. Semakin banyak penyerang dapat belajar tentang orang-orang kunci dalam suatu
organisasi, semakin ditargetkan dan efektif mereka dapat melakukan serangan mereka.
Mendidik karyawan tentang cara melindungi privasi mereka, karenanya, harus menjadi
bagian inti dari program kesadaran keamanan apa pun.

Anda dapat mengambil langkah spesifik dan konkret untuk melindungi privasi Anda atau
karyawan organisasi Anda, tetapi mereka membutuhkan energi, waktu dan beberapa
pengetahuan teknis.

149
Privasi vs. anonimitas
Alam semesta percaya pada enkripsi, orang bijak yang pernah berpendapat, karena secara
astronomis lebih mudah untuk dienkripsi daripada diuraikan secara kasar. Akan tetapi, alam
semesta tampaknya tidak percaya pada anonimitas, karena ia membutuhkan kerja keras
untuk tetap anonim.

Kami menggunakan privasi dan anonimitas secara bergantian, dan ini tidak benar. Pesan
terenkripsi dapat melindungi privasi Anda - karena (semoga) tidak ada orang lain yang bisa
membacanya selain Anda dan penerima Anda - tetapi enkripsi tidak melindungi metadata,
dan dengan demikian anonimitas Anda. Kepada siapa Anda berbicara, kapan, berapa lama,
berapa banyak pesan, ukuran lampiran, jenis komunikasi (pesan teks? Email? Panggilan
suara? Memo suara? Panggilan video?), Semua informasi ini tidak dienkripsi dan mudah
dienkripsi. ditemukan oleh peretas canggih dengan alat pengintai massal, yang sebagian besar
hari ini.

Pikiran terakhir sebelum kita menggali ke dalam alat teknis spesifik: "Online" sekarang
menjadi kata yang tidak berarti. Meatspace dan cyberspace telah bergabung. Kami dulu
tinggal di "dunia nyata" dan "online." Sekarang kita hidup online, dan hal-hal seperti
geotracking ponsel, pengenalan wajah di ruang fisik publik, dan sebagainya berarti tidak ada
jumlah "anonimitas online" yang akan membantu Anda jika ruang meatspace Anda juga tidak
anonim, yang hampir mustahil saat ini.

Berikut adalah beberapa langkah untuk menjadi sepenuhnya, mutlak, tetapi tidak benar-
benar, hanya sedikit anonim.

1. Gunakan Sinyal
Anda mungkin pernah mendengar mantra, "Gunakan Sinyal, gunakan Tor," dan meskipun
kombo pukulan satu-dua ini merupakan awal yang baik, itu tidak akan menjatuhkan lawan
Anda. Signal adalah aplikasi perpesanan terenkripsi terbaik yang memungkinkan Anda
mengirim pesan teks dan memo suara serta panggilan suara dan panggilan audio. Terlihat dan
terasa sama seperti aplikasi perpesanan lainnya tetapi di bawah kap menggunakan enkripsi
yang, sepengetahuan kami, bahkan Badan Keamanan Nasional pun tidak dapat dengan paksa.

Bagaimana dengan metadata? Setiap musuh tingkat jaringan dapat mengatakan bahwa Anda
menggunakan Sinyal, sebagai permulaan, dan jika musuh Anda adalah AS atau Lima Mata,

150
maka mereka memiliki akses pengawasan massal ke semua lalu lintas Sinyal dan tahu siapa
yang berbicara dengan siapa, kapan dan bagaimana panjang.

Enkripsi email
PGP, sekali kriptografi tepi berdarah untuk massa, telah ketinggalan zaman. Tidak ada
perangkat lunak keamanan yang efektif jika tidak dapat digunakan oleh audiens targetnya,
dan PGP sangat rewel untuk digunakan sehingga sangat mudah untuk menembak diri Anda
sendiri di kaki dengannya. Jika Anda seorang pengembang perangkat lunak, menggunakan
PGP untuk menandatangani kode Anda adalah suatu keharusan. Untuk komunikasi
terenkripsi yang aman, pribadi, ujung-ke-ujung, kecuali Anda memiliki negara atau tiga negara
besar dalam model ancaman Anda, dan Anda mahir secara teknis, Anda tidak boleh
menggunakan PGP. Gunakan Sinyal sebagai gantinya.

Pembuat Signal sangat menyadari keterbatasan teknis ini dan sedang meneliti cara untuk
mendorong batas-batas dari apa yang mungkin. Komunikasi yang resisten terhadap metadata
adalah masalah penelitian teknis yang tidak terpecahkan.

Intinya: Sinyal adalah aplikasi perpesanan yang paling aman dan mudah digunakan yang
tersedia saat ini, dan menawarkan sedikit lebih banyak anonimitas daripada aplikasi lainnya.
Namun, jangan mengandalkan itu untuk anonimitas yang kuat. Bahkan, dipertanyakan
apakah ada yang memberikan anonimitas kuat hari ini, yang membawa kita ke ...

2. Gunakan Tor
Tor adalah proyek perangkat lunak tahan metadata terbesar, paling kuat, dan paling efektif,
dan Proyek Tor melakukan pekerjaan besar di ruang angkasa, tetapi keterbatasan teknis
tentang seberapa banyak anonimitas yang dapat dicapai Tor telah terbukti bagi para peneliti
selama beberapa waktu. Tidak ada perbaikan atau penggantian yang jelas tampak besar di
cakrawala.

Router Bawang, lebih dikenal sebagai Tor (yang bukan akronim; ejaan huruf awal adalah
shibboleth untuk mengidentifikasi orang luar) dioptimalkan untuk penelusuran web latensi
rendah, hanya mendukung TCP (bukan UDP, torrenteers maaf), dan tidak akan berfungsi
ketika mengakses banyak situs web yang lebih besar, karena mereka memblokir akses melalui
Tor.

Tor tidak menawarkan jaminan, anonimitas lengkap, bahkan untuk browsing web, tetapi itu
adalah hal terbaik yang kami miliki saat ini. Seperti banyak hal dalam kehidupan (dan

151
internet), Tor adalah penggunaan ganda. Jurnalis teknologi yang sama yang digunakan untuk
meneliti cerita secara anonim juga digunakan oleh penjahat untuk melakukan hal-hal buruk.
Ketika Anda mendengar orang-orang menjelek-jelekkan "Web Gelap" yang menyeramkan
dan menyarankan "seseorang harus melakukan sesuatu," ingatkan mereka bahwa hanya
karena perampok bank mengendarai mobil di jalan raya, tidak berarti kami mengusulkan
pelarangan mobil atau jalan raya.

Tor Browser harus menjadi pilihan utama Anda untuk penggunaan seluler. Browser Brave juga
menawarkan opsi Tor. Ada aplikasi Tor Browser resmi untuk perangkat Android dan
OnionBrowser menawarkan aplikasi yang didukung oleh Tor Project untuk iOS.

3. Jangan mengharapkan anonimitas dari VPN


VPN bukan anonim. Secara harfiah tidak ada yang anonim tentang penggunaan VPN. Tidak
ada anonimitas di sini. Apakah kami menyebutkan VPN tidak menawarkan anonimitas? Hanya
ingin memastikan kami jelas tentang hal ini.

Karena semua orang mengharapkan VPN pada daftar alat anonimitas, kita akan menolak ide
itu. Yang dilakukan VPN hanyalah memindahkan kepercayaan dari ISP Anda atau, jika Anda
bepergian, coffeeshop lokal atau jaringan WiFi hotel atau bandara ke server orang lain. Ada
banyak alasan keamanan yang sah mengapa menggunakan VPN adalah ide bagus, tetapi
anonimitas tidak ada dalam daftar itu. Di mana saja. Bahkan di bagian bawah.

Tidak seperti Tor, yang memantulkan lalu lintas Anda melalui tiga simpul Tor yang tersebar di
internet, membuatnya sangat sulit, tetapi bukan tidak mungkin, bagi lawan untuk melihat apa
yang Anda lakukan, VPN hanya memindahkan lalu lintas Anda dari ISP Anda (di rumah) atau
coffee shop WiFi (di jalan) ke server VPN. Itu berarti penyedia VPN dapat melihat semua lalu
lintas Anda. Itu berarti bahwa musuh yang mendapatkan kendali atas server VPN, dengan
meretasnya atau dengan melayani penyedia VPN dengan perintah pengadilan, juga dapat
melihat semua lalu lintas Anda.

VPN sangat bagus. Gunakan itu. Yang bagus jauh lebih bisa dipercaya daripada jaringan WiFi
coffeeshop lokal Anda yang cerdik, tetapi mereka menawarkan nol anonimitas.

4. Gunakan layanan tanpa pengetahuan


Google dapat membaca setiap email yang Anda kirim dan terima. Office 365 memindai semua
yang Anda tulis. DropBox membuka dan memeriksa semua yang Anda unggah. Ketiga
perusahaan - di antara banyak lainnya - adalah penyedia PRISM, sesuai dengan dokumen

152
Snowden, yang berarti mereka bekerja sama dengan program pengawasan massal. Jika
Google bisa melihatnya, begitu juga orang-orang di Washington. Anda tidak memiliki privasi
pada salah satu layanan ini.

Tentu saja, Anda bisa mengenkripsi semuanya sebelum menggunakan Gmail atau sebelum
uploading foto liburan Anda ke DropBox. Jika Anda peduli dengan privasi, dan dapat
mengetahui cara menggunakan PGP, Anda mungkin harus melakukannya. Di sisi lain, Anda
juga dapat memilih untuk menggunakan penyedia layanan yang mengiklankan penyimpanan
file tanpa pengetahuan.

Meskipun Anda tidak pernah dapat sepenuhnya percaya bahwa penyedia layanan tidak
menggunakan backdoor, DropBox-alternative SpiderOak, yang berbasis di AS, mengiklankan
penyimpanan file tanpa pengetahuan. Protonmail, yang berbasis di Swiss, mengiklankan
email tanpa pengetahuan dan mengklaim bahwa secara matematis mustahil bagi mereka
untuk menyerahkan email Anda kepada pihak ketiga.

Kami tidak mendukung salah satu penyedia ini, dan Anda harus melakukan pekerjaan rumah
Anda sebelum mempercayakan sesuatu yang penting bagi mereka. Namun, bidang
penyimpanan file tanpa pengetahuan adalah tanda yang menggembirakan, dan layak untuk
diperhatikan.

5. Hati-hati dengan yang Anda posting online


Privasi adalah tentang otonomi, gagasan bahwa Anda memilih untuk membagikan apa yang
ingin Anda bagikan dan merahasiakan apa yang ingin Anda jaga tetap pribadi. Jika ada sesuatu
yang terjadi dalam hidup Anda yang Anda tidak ingin seluruh dunia tahu, kemudian
mempostingnya di media sosial - untuk dilihat seluruh dunia - mungkin, ergo, bukan ide
terbaik.

Ada perbedaan generasi yang mencolok pada topik ini. Generasi yang lebih tua merasa ngeri
dengan gagasan untuk menayangkan cucian kotor mereka di depan umum, sementara
generasi yang tumbuh dengan ponsel yang dilas ke telapak tangan mereka berpikir bahwa
berbagi berlebihan adalah hal yang normal. Ada waktu dan tempat untuk semuanya.
Pembagian yang disengaja dari hal-hal yang Anda ingin dunia lihat jelas memiliki nilai.

Pertimbangkan juga bahwa berbagi perincian khusus tentang hidup Anda mungkin tidak
terlihat sensitif sendiri tetapi diambil secara agregat dengan banyak perincian pribadi lainnya

153
dapat membangun gambaran yang mungkin Anda ragu untuk dimasukkan ke internet yang
tidak bersahabat.

Penerbitan di media sosial saat ini lebih permanen daripada memahat hieroglif di atas batu.
Ambil satu langkah mundur dan pertimbangkan keseluruhan gambar dari apa yang Anda
bagikan.

6. Periksa izin aplikasi tersebut


Aplikasi seluler, baik untuk iOS maupun Android, cenderung meminta izin jauh lebih banyak
daripada yang sebenarnya dibutuhkan dan sering ketahuan mengekstrak detail pribadi dari
ponsel pengguna dan mengirimkan detail itu kembali ke pembuat aplikasi dengan cara yang
sangat tidak pantas.

Apakah aplikasi acak itu benar-benar membutuhkan akses ke mikrofon Anda? (Untuk apa?
Apakah akan merekam semua yang Anda katakan?) Bagaimana dengan lokasi Anda? (Kenapa?
Apakah ini akan melacak lokasi Anda?) Buku alamat Anda? (Apakah aplikasi itu benar-benar
perlu tahu siapa semua temanmu? Untuk apa?)

Baik Android maupun iOS tidak membuatnya mudah untuk melakukannya, tetapi gali
pengaturan Anda dan matikan izin yang tidak dibutuhkan dengan prasangka ekstrem.

7. Gunakan pemblokir iklan


Di masa lalu dahulu kala, iklan adalah siaran satu-ke-banyak. Iklan hari ini tidak memiliki
hubungan dengan iklan kakek Anda. Sekarang jaringan periklanan satu-ke-satu mengawasi
Anda untuk menargetkan iklan dengan lebih baik.

Melacak setiap langkah Anda secara online dan, semakin, di meatspace, adalah model bisnis
bongkahan besar Lembah Silikon. Google dan Facebook adalah dua pemain terbesar di ruang
ini, dan mereka melacak Anda di seluruh web dan masuk ke meatspace, bahkan jika Anda
tidak memiliki akun dengan salah satunya (meskipun sebagian besar dari kita memiliki), dan
bahkan jika Anda tidak t login.

Memasang pemblokir iklan bukanlah obat ajaib, tetapi pedang kertas-mache lebih baik
daripada tidak sama sekali ketika gerombolan musuh menyerang. Brave Browser memblokir
iklan dan pelacak secara default. AdBlock memiliki reputasi yang baik, dan ekstensi lainnya

154
perlu ditelusuri, seperti ekstensi Badger Privasi dari Electronic Frontier Foundation. Anda juga
dapat memasukkan permintaan DNS jaringan iklan di tingkat router lokal Anda.

8. Buang asisten rumah Anda


Jika Anda menghargai privasi dan anonimitas Anda, karena cinta anjing-anjing itu
melemparkan asisten rumah Anda (Amazon Echo, Google Home, dll.) Dan snitch-in-a-box
Anda (Amazon Ring) ke tempat sampah. Pengintai digital yang selalu aktif ini beracun bagi
privasi dan anonimitas, dan tidak ada cara yang berarti untuk menjadikannya kurang invasif
privasi.

Penempatan "asisten" semacam itu membuat masalah tindakan kolektif menjadi jelas: Tidak
masalah jika Anda memilih untuk tidak membeli dan menginstal salah satu perangkat ini. Jika
semua tetangga Anda memilikinya dan menggunakannya, maka privasi Anda akan
terpanggang. Jika semua orang di lingkungan Anda memiliki Dering yang merekam semua
yang terjadi, maka gerakan Anda di ruang meats juga akan direkam dan dilacak.

Kiat-kiat teknis yang kami berikan di sini menawarkan sedikit lebih dari sekadar bantuan band
pada luka yang menganga. Gunakan mereka, tetapi jangan berada di bawah ilusi bahwa
mereka akan berbuat banyak untuk melindungi privasi Anda. (Porup, 2020)

155
12
MEMAHAMI DAN MEMASANG
JARINGAN WIRELESS

Kemampuan untuk memindai dan terhubung ke perangkat jaringan lain dari Anda
sistem sangat penting untuk menjadi peretas yang sukses, dan dengan nirkabel teknologi
seperti Wi-Fi (IEEE 802.1) dan Bluetooth menjadi standar, menemukan dan mengendalikan
koneksi Wi-Fi dan Bluetooth adalah kunci. Jika seseorang dapat meretas koneksi nirkabel,
mereka dapat masuk ke perangkat dan akses ke informasi rahasia. Langkah pertama, tentu
saja, adalah untuk mempelajari cara menemukan perangkat ini.
Dalam Bab 3, kita telah melihat beberapa perintah jaringan dasar di Linux, termasuk
beberapa dasar-dasar jaringan nirkabel, dengan sebuah janji lebih banyak di bahas dalam
jaringan nirkabel akan datang di Bab 12. Sebagai janji, di sini kita akan memeriksa dua nirkabel
yang paling umum teknologi di Linux: Wi-Fi dan Bluetooth

156
Jaringan Wi-Fi
Kami akan mulai dengan Wi-Fi. Di bagian ini, saya akan menunjukkan cara
menemukan, memeriksa, dan terhubung ke titik akses Wi-Fi. Sebelum melakukannya, mari
kita habiskan sedikit waktu membahas beberapa persyaratan dan teknologi Wi-Fi dasar untuk
membantu Anda lebih memahami keluaran dari banyak kueri yang akan kami buat Bab ini:
AP (access point) Ini adalah perangkat yang terhubung oleh pengguna nirkabel untuk
akses internet.
ESSID (extended service set identifier) Ini sama dengan SSID, yang telah kita bahas
pada Bab 3, tetapi dapat digunakan untuk banyak AP di LAN nirkabel.
BSSID (basic service set identifier) Ini adalah pengidentifikasi unik dari setiap AP, dan
itu sama dengan alamat MAC perangkat.
SSID (service set identifier) Ini adalah nama jaringan.
Channels Wi-Fi dapat beroperasi di salah satu dari 14 saluran (1–14). Di Amerika
Serikat, Wi-Fi terbatas pada saluran 1–11.
Power Semakin dekat Anda dengan Wi-Fi AP, semakin besar kekuatannya, dan
semakin mudah koneksi terputus.
Security Ini adalah protokol keamanan yang digunakan pada Wi-Fi AP yang sedang
dibaca. Ada tiga protokol keamanan utama untuk WiFi. Dokumen asli, Wired
Equivalent Privacy (WEP), cacat parah dan mudah retak. Penggantinya, Wi-Fi
Protected Access (WPA), sedikit lebih aman. Akhirnya, WPA2-PSK, yang jauh lebih
aman dan menggunakan kunci preshared (PSK) yang dibagikan oleh semua pengguna,
sekarang digunakan oleh hampir semua AP Wi-Fi (kecuali perusahaan Wi-Fi).
Modes Wi-Fi dapat beroperasi dalam salah satu dari tiga mode: dikelola, master, atau
monitor. Anda akan belajar apa arti mode ini di bagian berikut.
Wireless range Di Amerika Serikat, Wi-Fi AP harus secara hukum menyiarkan sinyalnya
pada batas atas 0,5 watt. Pada kekuatan ini, ia memiliki kisaran normal sekitar 300
kaki (100 meter). Antena dengan gain tinggi dapat memperpanjang rentang ini hingga
20 mil.
Frequency Wi-Fi dirancang untuk beroperasi pada 2.4GHz dan 5GHz. AP Wi-Fi modern
dan kartu jaringan nirkabel sering menggunakan keduanya.

157
Dasar Perintah Wireless
Dalam Bab 3, Anda diperkenalkan dengan jaringan Linux dasar perintah ifconfig, yang
mencantumkan setiap antarmuka jaringan yang diaktifkan pada Anda sistem bersama dengan
beberapa statistik dasar, termasuk (yang paling penting) Alamat IP dari setiap antarmuka.
Mari kita lihat lagi hasil Anda menjalankan ifconfig dan fokus pada koneksi nirkabel saat ini.

kali >ifconfig

eth0Linkencap:EthernetHWaddr 00:0c:29:ba:82:0f

inet addr:192:168.181.131 Bcast:192.168.181.255 Mask:255.255.255.0

--snip--

lo Linkencap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

--snip--

➊ wlan0 Link encap:EthernetHWaddr 00:c0:ca:3f:ee:02

Antarmuka Wi-Fi di sini ditampilkan sebagai wlan0 ➊. Di Kali Linux, Wi-Fi antarmuka
biasanya ditunjuk sebagai wlanX, dengan X mewakili jumlah antarmuka itu. Dengan kata lain,
adaptor Wi-Fi pertama di komputer Anda Sistem akan diberi label wlan0, wlan1 kedua, dan
seterusnya.
Jika Anda hanya ingin melihat antarmuka Wi-Fi dan statistiknya, Linux memiliki
perintah khusus yang mirip dengan ifconfig tetapi didedikasikan untuk wireless. Perintah itu
adalah iwconfig. Saat Anda memasukkannya, hanya wireless antarmuka anda dan data
kuncinya ditampilkan:

kali >iwconfig
lo no wireless extensions
wlan0 IEEE 802.11bg ESSID:off/any
Mode:Managed Access Point:Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
eth0 no wireless extensions

Di sini, kita hanya melihat antarmuka nirkabel, juga dikenal sebagai kartu jaringan, dan
data kunci tentang mereka, termasuk standar nirkabel yang digunakan, apakah ESSID mati,
dan modenya. Mode ini memiliki tiga pengaturan: managed, yang artinya siap untuk
bergabung atau telah bergabung dengan AP; master, yang berarti siap bertindak sebagaimana
sudah AP; dan monitor, yang kita akan membahas sedikit nanti dalam bab ini. Kita juga bisa

158
melihat apakah ada klien telah dikaitkan dengan itu dan apa daya pancarnya, antara lain
sesuatu. Anda dapat mengetahui dari contoh ini bahwa wlan0 berada dalam mode yang
diperlukan untuk terhubung ke jaringan Wi-Fi tetapi belum terhubung ke apa pun. Kami akan
kunjungi kembali perintah ini lagi setelah antarmuka nirkabel terhubung ke sebuah Jaringan
Wi-Fi.
Jika Anda tidak yakin Wi-Fi AP mana yang ingin Anda hubungkan, Anda bisa lihat
semua titik akses nirkabel yang dapat dijangkau kartu jaringan Anda menggunakan perintah
iwlist. Sintaks untuk iwlist adalah sebagai berikut:

iwlist interface action

Anda dapat melakukan banyak tindakan dengan iwlist. Untuk tujuan kami, kami akan
gunakan tindakan pemindaian untuk melihat semua AP Wi-Fi di daerah sekitar. (Perhatikan
bahwa dengan sebuah antena standar, jangkauan Anda akan 300-500 kaki, tetapi ini bisa
diperpanjang dengan antena gain tinggi yang murah.)

kali >iwlist wlan0 scan


wlan0 Scan completed:
Cell 01 - Address:88:AD:43:75:B3:82
Channel:1
Frequency:2.412GHz (Channel 1)
Quality=70/70 Signal level =-38 dBm
Encryption key:off
ESSID:"Hackers-Arise"
--snip--

Output dari perintah ini harus mencakup semua AP Wi-Fi di dalamnya rentang
antarmuka nirkabel Anda, bersama dengan data kunci tentang setiap AP, seperti sebagai
alamat MAC dari AP, saluran dan frekuensi operasinya aktif, kualitasnya, level sinyalnya,
apakah kunci enkripsi diaktifkan, dan ESSID-nya.
Anda akan memerlukan alamat MAC target AP (BSSID), MAC alamat klien (kartu
jaringan nirkabel lain), dan saluran tersebut AP beroperasi untuk melakukan segala jenis
peretasan, jadi ini informasi berharga.
Perintah lain yang sangat berguna dalam mengelola Wi-Fi koneksi anda adalah nmcli
(atau antarmuka baris perintah manajer jaringan). Itu Linux daemon yang menyediakan
antarmuka tingkat tinggi untuk jaringan antarmuka (termasuk yang wireless) dikenal sebagai
manajer jaringan. Secara umum, pengguna Linux terbiasa dengan daemon ini dari grafisnya
antarmuka pengguna (GUI), tetapi juga dapat digunakan dari baris perintah.

159
Perintah nmcli dapat digunakan untuk melihat AP Wi-Fi di dekat Anda dan data kunci
mereka, seperti yang kita lakukan dengan iwlist, tetapi perintah ini memberi kita sedikit
informasi lebih lanjut. Kami menggunakannya dalam format nmcli dev networktype, di mana
dev kependekan dari device(perangkat) dan jenisnya (dalam hal ini) adalah wifi, seperti:

kali >nmcli dev wifi


* SSID MODE CHAN RATE SIGNAL BARS SECURITY
Hackers-Arise Infra 1 54 Mbits/s 100 WPA1 WPA2
Xfinitywifi Infra 1 54 Mbits/s 75 WPA2
TPTV1 Infra 11 54 Mbits/s 44 WPA1 WPA2
--snip--

Selain menampilkan Wi-Fi AP dalam jangkauan dan data kunci tentang mereka,
termasuk SSID, mode, saluran, laju transfer, kekuatan sinyal, dan protokol keamanan yang
diaktifkan pada perangkat, nmcli dapat digunakan terhubung ke AP. Sintaks untuk terhubung
ke AP adalah sebagai berikut:

nmcli dev wifi connect AP-SSID password APpassword

Jadi, berdasarkan hasil dari perintah pertama kami, kami tahu ada AP dengan SSID of
Hacker-Arise. Kita juga tahu itu memiliki WPA1 WPA2 keamanan (ini berarti bahwa AP mampu
menggunakan WPA1 yang lebih lama dan WPA2 yang lebih baru), yang berarti kami harus
memberikan kata sandi untuk terhubung ke jaringan. Untungnya, karena ini adalah AP kami,
kami tahu kata sandi adalah 12345678, sehingga kami dapat memasukkan yang berikut:

kali >nmcli dev wifi connect Hackers-Arise password 12345678


Device 'wlan0' successfully activated with '394a5bf4-8af4-36f8-49beda6cb530'.

Coba ini di jaringan yang Anda tahu, dan kemudian ketika Anda berhasil terhubung ke
AP nirkabel itu, jalankan iwconfig lagi untuk melihat apa yang telah berubah. Ini output saya
dari koneksi ke Hacker-Arise:

kali >iwconfig
lo no wireless extensions
wlan0 IEEE 802.11bg ESSID:"Hackers-Arise"
Mode:Managed Frequency:2.452GHz Access Point:00:25:9C:97:4F:48
Bit Rate=12 Mbs Tx-Power=20 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off

160
Link Quality=64/70 Signal level=-46 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive reties:0 Invalid misc:13 Missed beacon:0
eth0 no wireless extensions

Perhatikan bahwa sekarang iwconfig telah mengindikasikan bahwa ESSID adalah


"Hacker-Arise" dan bahwa AP beroperasi pada frekuensi 2,452GHz. Dalam Wi-Fi jaringan,
dimungkinkan untuk beberapa AP untuk semua menjadi bagian dari jaringan yang sama, jadi
mungkin ada banyak AP yang membentuk jaringan hacker-arise. Itu Alamat MAC 00: 25: 9C:
97: 4F: 48 adalah, seperti yang Anda duga, MAC dari AP saya terhubung. Jenis keamanan apa
yang digunakan jaringan Wi-Fi, apakah itu berjalan pada 2.4GHz atau 5GHz, apa ESSID-nya,
dan apa alamat MAC AP adalah semua informasi penting yang ada diperlukan untuk hacking
Wi-Fi. Sekarang Anda sudah tahu perintah dasar, mari kita melakukan peretasan.

Wi-Fi Recon dengan aircrack-ng


Ketika Wi-Fi pertama kali dikembangkan pada akhir 1990-an, Wired Equivalent Privacy
dibuat untuk memberikan kerahasiaan komunikasi nirkabel. WEP, seperti yang diketahui,
terbukti sangat rentan dan mudah untuk di bobol.

Sebagai gantinya, sebagian besar titik akses nirkabel sekarang menggunakan Wi-Fi
Protected Access II dengan kunci yang dibagikan sebelumnya untuk keamanan nirkabel, yang
dikenal sebagai WPA2-PSK. WPA2 menggunakan algoritma enkripsi yang lebih kuat, AES, yang
sangat sulit untuk dipecahkan — tetapi bukan tidak mungkin

Kelemahan dalam sistem WPA2-PSK adalah bahwa kata sandi terenkripsi dibagi dalam
apa yang dikenal sebagai jabat tangan 4 arah (handshake). Ketika klien mengotentikasi ke titik
akses (AP), klien dan AP pergi melalui proses 4 langkah untuk mengotentikasi pengguna ke
AP. Jika kami dapat mengambil kata sandi saat itu, kami kemudian dapat mencoba
memecahkannya.

Oke untuk memulai membobol password wifi dengan Keamanan WPA2-PSK lalu
pastinya juga dengan algoritma enkripsi yang lebih kuat, disini kita langsung saja mulai ke
tutorial cara Crack password Wifi tersebut dengan Keamanan WPA2-PSK, disini kita
menggunakan Aircrack-ng? Aircrack-ng adalah paket perangkat lunak jaringan yang terdiri
dari detektor, packet sniffer, WEP dan WPA / WPA2-PSK cracker dan alat analisis untuk 802.11
LAN nirkabel.

Langkah Pertama Yang kita Mulai ialah memasuki Monitor mode. Hal ini
memungkinkan kita untuk melihat semua lalu lintas nirkabel (Wifi) yang melewati kita atau
disekitar kita, ketikkan saja perintah di terminal airmon-ng start
wlan0 keterangan wlan0 ialah nama interface adapter wifi kalian

161
Langkah Kedua ialah Menangkap paket traffic akses point (Wi-FI) sekitar
kalian, Perintah ini mengambil semua lalu lintas yang adaptor nirkabel Anda dapat melihat
dan menampilkan informasi penting tentang itu, termasuk BSSID (alamat MAC AP), daya,
jumlah bingkai suar, jumlah bingkai data, saluran, kecepatan, enkripsi (jika apa saja), dan
akhirnya, ESSID (yang sebagian besar dari kita sebut sebagai SSID). Mari kita lakukan ini
dengan mengetik airodump-ng wlan0mon keterangan wlan0mon ialah adapter wifi yang
sudah mode monitor

Langkah Ketiga sekarang buka tab baru diterminal, Fokus pada Satu target AP yang
kita lakukan nantinya ialah menangkap paket dan traffic dari AP Tersebut, Disini Saya Sudah
mendapat Target yaitu AP dengan ESSID Hotspot Bekasi Jaya, perintah yang dimasukkan
ialah airodump-ng -c 6 --bssid 40:45:DA:06:C1:D9 --write bekasijaya
wlan0mon keterangan 40:45:DA:06:C1:D9 ialah BSSID dari Target AP, 6 ialah channel
AP, bekasijaya adalah file yang ingin anda tulis nantinya untuk paket capture file

162
Langkah Keempat buka tab baru terminal, Untuk mendapatkan kata sandi yang
dienkripsi, kita harus meminta klien untuk melakukan otentikasi terhadap AP. Jika sudah
diautentikasi, kita dapat membatalkan otentikasi (kick off) dan sistem mereka akan secara
otomatis mengautentikasi ulang, di mana kita dapat mengambil kata sandi terenkripsi mereka
dalam proses. masukkan perintah aireplay-ng --deauth 50 -a 40:45:DA:06:C1:D9
wlan0mon keterangan 50 ialah jumlah angka de-authenticate frames yang ingin anda
kirim, 40:45:DA:06:C1:D9 BSSID Target AP

Langkah Kelima, disaat kita sedang melakukan deauthentication frames pada target
ap disini kita sekaligus menunggu penangkapan paket handshake (jabat tangan), jadi kita
memantulkan pengguna dari AP mereka sendiri, dan sekarang ketika mereka mengautentikasi
ulang, airodump-ng akan berusaha mengambil kata sandi mereka dalam jabat tangan 4-arah
yang baru. Mari kita kembali ke terminal airodump-ng kami dan memeriksa untuk melihat
apakah kita sudah berhasil atau tidak. Jika Sudah Berhasil Maka Akan Ada tulisan di pojok
kanan WPA handshake dari Target AP

163
Saatnya Cracking Password Target AP Tersebut, sebelumnya untuk mengcrack
password tersebut kita membutuhkan file hasil capture tadi biasanya tersimpan di
direktori saat kalian menjalankan perintah airodump-ng

Mulai Crack!! langkah pertama sebelum crack ialah kita membutuhkan wordlist
banyak tools pembuat wordlist generator seperti crunch, cewl, cupp dan masih banyak lagi,,
oke saatnya crack masukkan perintah aircrack-ng bekasijaya-01.cap -w
/home/galangxyz/wordlistbekasi.txt keterangan bekasijaya-01.cap ialah adalah nama file
yang kita tulis dalam perintah airodump-ng lau /home/galangxyz/wordlistbekasi.txt ialah
path wordlist yang saya buat, prosesnya bisa relatif lambat dan membosankan. Tergantung
pada panjang daftar kata sandi kalian, Anda bisa menunggu beberapa menit hingga beberapa
hari, Jika sudah menemukan Kata sandi yang cocok maka akan muncul KEY FOUND! disitu
tertera password wifi Hotspot Bekasi Jaya ialah bekasijayasiap

164
Sebelum kita Menguji Passwordnya apakah benar apa tidak alangkah baiknya kita stop
terlebih dahulu dari monitor mode masukkan perintah airmon-ng stop wlan0mon

Pengujian Sambungkan saja Ke wifi Hotspot Bekasi Jaya lalu massukan password yang
sudah ditemukan tadi yaitu bekasijayasiap lalu connect, apakah terhubung?

Yap benar sekali disini sudah berhasil

(DigazumXyz, 2019)

Mendeteksi dan Menghubungkan ke Bluetooth


Saat ini, hampir setiap gadget, perangkat seluler, dan sistem memiliki Bluetooth
bawaan, termasuk komputer, telepon pintar, iPod, tablet, speaker, game controller,
keyboard, dan banyak perangkat lainnya. Mampu meretas Bluetooth dapat menyebabkan
kompromi informasi apa pun pada perangkat, kontrol perangkat, dan kemampuan untuk
mengirim info yang tidak diinginkan ke dan dari perangkat, antara lain.
Untuk mengeksploitasi teknologi, kita perlu memahami cara kerjanya. Sebuah
pemahaman mendalam tentang Bluetooth berada di luar cakupan buku ini, tapi saya akan

165
memberi Anda beberapa pengetahuan dasar yang akan membantu Anda memindai dan
terhubung ke perangkat Bluetooth dalam persiapan untuk meretasnya.

Bagaimana Bluetooth Bekerja


Bluetooth adalah protokol universal untuk daya rendah, medan dekat komunikasi
yang beroperasi pada 2.4–2.485GHz menggunakan spread spectrum, frekuensi hopping pada
1.600 hop per detik (frekuensi hopping ini adalah sebuah langkah keamanan). Ini
dikembangkan pada tahun 1994 oleh Ericsson Corp of Sweden dan dinamai setelah raja
Denmark abad ke-10 Harald Bluetooth (catatan bahwa Swedia dan Denmark adalah satu
negara di abad ke-10).
Spesifikasi Bluetooth memiliki kisaran minimum 10 meter, tetapi tidak ada batasan
yang dapat diterapkan oleh pabrikan kelas atas perangkat mereka. Banyak perangkat memiliki
rentang 100 meter. Dengan antena khusus, jangkauan itu dapat diperpanjang lebih jauh.
Menghubungkan dua perangkat Bluetooth disebut sebagai pairing. setidaknya
sebanyak dua perangkat Bluetooth dapat terhubung satu sama lain, tetapi mereka bisa di
pasangkan hanya jika mereka dalam mode yang dapat ditemukan. Perangkat Bluetooth di
Mode yang dapat ditemukan mentransmisikan informasi berikut:

• Name
• Class
• List of services
• Technical information

Ketika kedua perangkat berpasangan, mereka bertukar kunci rahasia atau tautan. Setiap
menyimpan kunci tautan ini sehingga dapat mengidentifikasi perangkat sebelumnya
Setiap perangkat memiliki pengidentifikasi 48-bit yang unik (alamat seperti MAC) dan
biasanya nama yang diberikan pabrik. Ini akan menjadi bagian data yang berguna ketika kita
ingin mengidentifikasi dan mengakses perangkat.

Pemindaian dan Pengintaian Bluetooth


Linux memiliki implementasi stack protokol Bluetooth yang disebut BlueZ yang akan
kita gunakan untuk memindai sinyal Bluetooth. Kebanyakan Linux distribusi, termasuk Kali
Linux, sudah diinstal secara default. Jika milikmu tidak, Anda biasanya dapat menemukannya
di repositori menggunakan perintah yang berikut ini:

kali >apt-get install bluez

BlueZ memiliki sejumlah alat sederhana yang dapat kita gunakan untuk mengelola dan
memindai Perangkat Bluetooth, termasuk yang berikut ini:

166
hciconfig Alat ini beroperasi sangat mirip dengan ifconfig di Linux, tetapi untuk
Perangkat Bluetooth.
hcitool Alat penyelidikan ini dapat memberi kita nama perangkat, ID perangkat, kelas
perangkat, dan informasi jam perangkat, yang memungkinkan perangkat untuk
bekerja secara serempak.
hcidump Alat ini memungkinkan kita mengendus komunikasi Bluetooth, artinya kita
dapat menangkap data yang dikirim melalui sinyal Bluetooth.
Langkah pemindaian dan pengintaian pertama dengan Bluetooth adalah untuk
memeriksa apakah adaptor Bluetooth pada sistem yang kami gunakan dikenali dan diaktifkan
sehingga kami dapat menggunakannya untuk memindai perangkat lain. Kita bisa melakukan
ini dengan alat BlueZ bawaan hciconfig, seperti yang ditunjukkan pada

kali >hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 10:AE:60:58:F1:37 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN INQUIRY
RX bytes:131433 acl:45 sco:0 events:10519 errors:0
TX bytes:42881 acl:45 sco:0 commands:5081 errors:0

Seperti yang Anda lihat, adaptor Bluetooth saya dikenali dengan MAC alamat 10: AE:
60: 58: F1: 37. Adaptor ini bernama hci0. Itu langkah selanjutnya adalah memeriksa apakah
koneksi sudah diaktifkan, yang juga bisa kita lakukan dengan hciconfig dengan memberikan
nama dan perintah ke atas:

kali >hciconfig hci0 up

Jika perintah berhasil dijalankan, kita seharusnya tidak melihat keluaran.

Scanning Perangkat Bluetooth dengan hcitool


Sekarang kita tahu adaptor kita sudah habis, kita dapat menggunakan alat lain di
Internet BlueZ suite disebut hcitool, yang digunakan untuk memindai Bluetooth lainnya
perangkat dalam jangkauan.
Mari pertama-tama gunakan fungsi pemindaian alat ini untuk mencari Bluetooth
perangkat yang mengirimkan beacons, yang berarti mereka ada di mode penemuan, dengan
perintah pindai sederhana ditunjukkan pada

167
kali >hcitool scan
Scanning...
72:6E:46:65:72:66 ANDROID BT
22:C5:96:08:5D:32 SCH-I535

Seperti yang Anda lihat, pada sistem saya, hcitool menemukan dua perangkat,
ANDROID BT dan SCH-I535. Milik Anda kemungkinan akan memberi Anda output yang
berbeda tergantung pada perangkat apa yang Anda miliki. Untuk tujuan pengujian, coba
menempatkan ponsel Anda atau perangkat Bluetooth lainnya dalam mode
penemuan(discover) dan lihat jika diambil dalam pemindaian(scan).
Sekarang, mari kita kumpulkan lebih banyak informasi tentang perangkat yang
terdeteksi fungsi permintaan inq:

kali >hcitool inq


Inquiring...
24:C6:96:08:5D:33 clock offset:0x4e8b class:0x5a020c
76:6F:46:65:72:67 clock offset:0x21c0 class:0x5a020c

Ini memberi kita alamat MAC perangkat, jam set, dan kelas perangkat. Kelas
menunjukkan jenis perangkat Bluetooth Anda ditemukan, dan Anda dapat mencari kode serta
melihat jenis perangkatnya pergi ke situs Bluetooth SIG di https://www.bluetooth.com/en-
us/specifications/assigned-numbers/service-discovery.

Alat hcitool adalah antarmuka baris perintah yang kuat ke Bluetooth tumpukan yang
dapat melakukan banyak hal. *perintah dibawah* memperlihatkan halaman bantuan dengan
beberapa perintah yang dapat Anda gunakan. Lihatlah halaman bantuan diri Anda untuk
melihat daftar lengkap.

kali >hcitool --help

hcitool - HCI Tool ver 4.99

Usage:

hcitool [options] <command> [command parameters]

Options:

--help Display help

-i dev HCI device

Commands

dev Display local devices

inq Inquire remote devices

168
scan Scan for remote devices

name Get name from remote devices

--snip--

Banyak alat peretas Bluetooth yang akan Anda lihat di sini cukup gunakan ini perintah
dalam skrip, dan Anda dapat dengan mudah membuat alat Anda sendiri dengan
menggunakan perintah-perintah ini di bash atau skrip Python Anda sendiri - kita akan lihat
scripting di Bab terakhir.

Scanning Service dengan sdptool


Service Discovery Protocol (SDP) adalah protokol Bluetooth untuk pencarian untuk layanan
Bluetooth (Bluetooth adalah paket layanan), dan, sangat membantu, BlueZ menyediakan alat
sdptool untuk menelusuri perangkat untuk menyediakan layanannya. Penting juga untuk
dicatat bahwa perangkat tidak harus seperti itu dalam mode penemuan(discover) untuk
dipindai. Sintaksnya adalah sebagai berikut:

sdptool browse MACaddress

Contohnya masukkan MAC address perangkat yang telah di pindai:

kali >sdptool browse 76:6E:46:63:72:66


Browsing 76:6E:46:63:72:66...
Service RecHandle: 0x10002
Service Class ID List:
""(0x1800)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 31
"ATT" (0x0007)
uint16: 0x1
uint16: 0x5
--snip--

Di sini, kita dapat melihat bahwa alat sdptool dapat menarik informasi semua layanan
yang dapat digunakan perangkat ini. Secara khusus, kita melihat perangkat ini mendukung
Protokol ATT, yang merupakan Atribut Energi Rendah Protokol. Ini dapat memberi kita lebih
banyak petunjuk tentang apa perangkat itu dan kemungkinan jalan potensial untuk
berinteraksi dengannya lebih jauh.

169
Melihat Apakah Perangkat Dapat Dicapai dengan l2ping
Setelah kami mengumpulkan alamat MAC dari semua perangkat terdekat, kami bisa
mengirim ping ke perangkat ini, apakah mereka dalam mode penemuan atau tidak, untuk
melihat apakah mereka dalam jangkauan. Ini memberi tahu kami apakah itu benar aktif dan
dalam jangkauan. Untuk mengirim ping, kami menggunakan perintah l2ping dengan sintaks
berikut:

l2ping MACaddress

Contohnya:

kali >l2ping 76:6E:46:63:72:66 -c 4


Ping: 76:6E:46:63:72:66 from 10:AE:60:58:F1:37 (data size 44)...
44 bytes 76:6E:46:63:72:66 id 0 time 37.57ms
44 bytes 76:6E:46:63:72:66 id 1 time 27.23ms
44 bytes 76:6E:46:63:72:66 id 2 time 27.59ms
--snip--

Output ini menunjukkan bahwa perangkat dengan alamat MAC 76: 6E: 46: 63: 72: 66
berada dalam jangkauan dan dapat dijangkau. Ini bermanfaat untuk pengetahuan, karena kita
harus tahu apakah suatu perangkat dapat dijangkau sebelumnya kami bahkan
mempertimbangkan untuk meretasnya.

170
13
MENGELOLA Kernel LINUX DAN
MODUL KERNEL YANG DITANGGUHKAN
Semua sistem operasi terdiri dari setidaknya dua komponen utama. yang pertama dan
paling penting dari ini adalah kernel. Kernel berada di tengah dari sistem operasi dan
mengendalikan semua sistem operasi, termasuk mengelola memori, mengendalikan CPU, dan
bahkan mengendalikan apa yang dilihat pengguna di layar. Elemen kedua dari sistem operasi
sering disebut sebagai user land dan mencakup hampir yang lainnya.
Kernel dirancang untuk menjadi area terlindungi atau istimewa yang bisa hanya dapat
diakses oleh root atau akun istimewa lainnya. alasannya, karena akses ke kernel dapat
memberikan akses yang hampir tidak terkekang ke sistem operasi. Akibatnya, sebagian besar
sistem operasi menyediakan pengguna dan layanan akses hanya ke user land, di mana
pengguna dapat mengakses hampir apa pun yang mereka butuhkan tanpa mengendalikan
sistem operasi.
Akses ke kernel memungkinkan pengguna untuk mengubah cara operasi sistem
bekerja, terlihat, dan terasa. Ini juga memungkinkan mereka untuk mengcrash sistem operasi
tersebut, membuatnya tidak bisa dijalankan. Meskipun ada risiko ini, dalam beberapa kasus,
sistem admin harus hati-hati mengakses kernel untuk operasional dan alasan keamanan.
Dalam bab ini, kita akan memeriksa cara mengubah, cara kerja kernel dan tambahkan
modul baru ke kernel. Mungkin tidak usah dikatakan begitu jika seorang hacker dapat
mengubah kernel target, mereka dapat mengontrol sistem. Lebih lanjut, seorang penyerang
mungkin perlu mengubah cara kerja kernel untuk beberapa serangan, seperti serangan man-
in-the middle (MITM), di mana hacker menempatkan diri mereka di antara klien dan server
dan dapat menguping pada atau mengubah komunikasi. Pertama, kita akan melihat lebih
dekat pada kernel struktur dan modulnya.

171
Apa itu Modul Kernel?
Kernel adalah sistem saraf pusat dari sistem operasi Anda, mengendalikan semua yang
dilakukannya, termasuk mengelola interaksi di antaranya komponen perangkat keras dan
memulai layanan yang diperlukan. Kernel beroperasi antara aplikasi pengguna yang Anda
lihat dan perangkat keras itu menjalankan semuanya, seperti CPU, memori, dan hard drive.
Linux adalah kernel monolitik yang memungkinkan penambahan kernel
modul. Dengan demikian, modul dapat ditambahkan dan dihapus dari kernel. Kernel kadang-
kadang perlu diperbarui, yang mungkin memerlukan instalasi driver perangkat baru (seperti
kartu video, perangkat Bluetooth, atau USB perangkat), driver sistem file, dan bahkan ekstensi
sistem. Driver ini harus tertanam dalam kernel agar berfungsi penuh. Dalam beberapa sistem,
untuk menambahkan driver, Anda harus membangun kembali, mengkompilasi, dan me-
reboot keseluruhan kernel, tetapi Linux memiliki kemampuan untuk menambahkan beberapa
modul ke kernel tanpa melalui seluruh proses itu. Modul-modul ini disebut sebagai modul
kernel yang dapat dimuat, atau LKM.
LKM memiliki akses ke level terendah dari kernel berdasarkan kebutuhan, menjadikan
mereka target yang sangat rentan bagi peretas. Jenis malware tertentu yang dikenal
sebagai rootkit menanamkan dirinya ke dalam kernel sistem operasi, seringkali melalui LKM
ini. Jika malware menanamkan dirinya sendiri di dalam kernel, hacker dapat mengambil
kendali penuh atas operasi sistem.
Jika seorang hacker dapat meminta admin Linux untuk memuat modul baru ke kernel,
hacker tidak hanya bisa mendapatkan kendali atas sistem target tetapi, karena mereka
beroperasi pada level kernel sistem operasi, bisa mengontrol apa yang dilaporkan sistem
target dalam hal proses, port, layanan, ruang hard drive, dan hampir semua hal lain yang
dapat Anda pikirkan.
Jadi, jika seorang peretas berhasil menggoda admin Linux untuk menginstal sebuah
video atau driver perangkat lain yang memiliki rootkit tertanam di dalamnya, peretas dapat
mengambil kendali total atas sistem dan kernel. Ini adalah beberapa cara rootkit yang paling
berbahaya memanfaatkan Linux dan operasi lainnya sistem.
Memahami LKM adalah kunci mutlak untuk menjadi Linux admin yang efektif dan
menjadi peretas yang sangat efektif dan tersembunyi. Mari kita lihat bagaimana kernel dapat
dikelola untuk yang baik dan buruk.

Memeriksa Versi Kernel


Langkah pertama untuk memahami kernel adalah memeriksa kernel Anda sistem
sedang berjalan. Setidaknya ada dua cara untuk melakukan ini. Pertama, kita bisa Masukkan
perintah berikut:

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

172
Kernel merespons dengan memberi tahu kami distribusi yang sedang dijalankan oleh
OS kami Linux Kali, kernel build adalah 4.6.4, dan arsitektur yang dibangunnya adalah
arsitektur x86_64. Ini juga memberitahu kita bahwa ia memiliki multiprosesor simetris (SMP)
kapabilitas (artinya dapat berjalan pada mesin dengan banyak core atau pemroses) dan
dibangun di atas Debian 4.6.4 pada 21 Juli 2016. Keluaran anda mungkin berbeda, tergantung
pada kernel mana yang digunakan di build dan CPU di sistem Anda. Informasi ini dapat
diminta ketika Anda menginstal atau memuat driver kernel, jadi sangat berguna untuk
memahami caranya untuk mendapatkannya.
Satu cara lain untuk mendapatkan informasi ini, serta beberapa lainnya bermanfaat
dan berisi informasi, adalah dengan menggunakan perintah cat pada file / proc / version,
seperti:

kali> cat / proc / versi


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

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

Tuning Kernel dengan sysctl


Dengan perintah yang tepat, Anda dapat menyetel kernel Anda, artinya Anda bisa
mengubah alokasi memori, mengaktifkan fitur jaringan, dan bahkan hardening kernel
terhadap serangan luar.
Kernel Linux modern menggunakan perintah sysctl untuk menyetel opsi kernel.
Semua perubahan yang Anda lakukan dengan sysctl tetap berlaku hanya sampai Anda reboot
sistem. Untuk membuat perubahan permanen, Anda harus mengedit file konfigurasi
untuk sysctl langsung di /etc/sysctl.conf.
peringatan: Anda harus berhati-hati saat menggunakan sysctl karena tanpa
pengetahuan dan pengalaman yang tepat, Anda dapat dengan mudah membuatnya sistem
tidak dapat di-boot dan tidak dapat digunakan. Pastikan Anda sudah mempertimbangkan apa
Anda lakukan dengan hati-hati sebelum melakukan perubahan permanen. Mari kita lihat
isi sysctl sekarang. Sekarang, kamu harus kenali opsi yang kami berikan dengan perintah yang
ditunjukkan di sini:

kali> sysctl -a | kurang


dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
- snip -

173
Dalam output, Anda akan melihat ratusan baris parameter yang Administrator Linux
dapat mengedit untuk mengoptimalkan kernel. Ada beberapa baris di sini yang bermanfaat
bagi Anda sebagai peretas. Sebagai contoh bagaimana Anda mungkin gunakan sysctl, kita
akan melihat mengaktifkan pengiriman paket.
Dalam serangan man-in-the middle (MITM), peretas menempatkan diri antara
komunikasi host untuk mencegat informasi. kemudian lalu lintas itu melewati sistem peretas,
sehingga mereka dapat melihat dan mungkin mengubah komunikasinya. Salah satu cara
untuk mencapai perutean ini adalah dengan mengaktifkan penerusan paket. Jika Anda gulir
ke bawah beberapa halaman dalam output atau filter untuk "ipv4" (sysctl -a | kurang | grep
ipv4), Anda akan melihat yang berikut:

net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
- snip -

Baris net.ipv4.ip_forward = 0 adalah parameter kernel yang memungkinkan kernel


untuk meneruskan paket yang diterimanya. Dengan kata lain, paket itu menerima,
mengirimkan kembali. Pengaturan standar adalah 0, yang artinya penerusan paket
dinonaktifkan. Untuk mengaktifkan penerusan IP, ubah 0 ke 1 dengan memasukkan berikut:

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

Ingat bahwa perubahan sysctl terjadi pada saat runtime tetapi hilang ketika sistem di-
reboot. Untuk membuat perubahan permanen pada sysctl, Anda perlu mengedit file
konfigurasi /etc/sysctl.conf. Mari kita ubah caranya kernel menangani penerusan IP untuk
serangan MITM dan membuat perubahan ini permanen.
Untuk mengaktifkan penerusan IP, buka file /etc/sysctl.conf di editor teks apa pun dan
batalkan komentar pada baris untuk ip_forward . Buka /etc/sycstl.conf dengan teks editor
apa pun dan lihat:

# / etc / sysctl.conf - File konfigurasi untuk pengaturan variabel sistem


# Lihat /etc/sysctl.d/ untuk variabel sistem tambahan.
# Lihat sysctl.conf (5) untuk informasi.
#
# kernel.domainname = example.com
# Batalkan komentar berikut untuk menghentikan pesan tingkat rendah di konsol.
# kernel.printk = 3 4 1 3

174
############################################### ############ 3
# Fungsi sebelumnya ditemukan di netbase
#
# Batalkan komentar dua baris berikutnya untuk mengaktifkan perlindungan Spoof (jalur
terbalik)

# Aktifkan Verifikasi Alamat Sumber di semua antarmuka


# cegah beberapa serangan spoofing.
# net.ipv4.conf.default.rp_filter = 1
# net.ipv4.conf.all.rp_filter = 1
# Batalkan komentar pada baris berikutnya untuk mengaktifkan cookie SYN TCP / IP
#
# Catatan: Ini juga dapat memengaruhi sesi IPv6 TCP
# net.ipv4.tcp_syncookies = 1
Lihat http://lwn.net/Articles/277146/
Batalkan komentar pada baris berikutnya untuk mengaktifkan penerusan paket untuk IPv4

➊ # net.ipv4.ip_forward = 1

Baris yang relevan ada di ➊; hapus saja komentar ( # ) di sini untuk mengaktifkan
Penerusan IP.
Dari perspektif sistem operasi – hardening, Anda bisa menggunakan ini file untuk
menonaktifkan permintaan gema ICMP dengan menambahkan baris
net.ipv4.icmp_echo_ignore_all = 1 untuk membuatnya lebih sulit — tetapi bukan tidak
mungkin —Untuk peretas menemukan sistem Anda. Setelah menambahkan baris, Anda harus
melakukannya jalankan perintah sysctl -p.

Mengelola Modul Kernel


Linux memiliki setidaknya dua cara untuk mengelola modul kernel. Cara yang lebih tua
adalah menggunakan sekelompok perintah dibangun sekitar insmod suite- insmod stand
untuk memasukkan modul dan dimaksudkan untuk menangani modul. Cara kedua,
menggunakan perintah modprobe , kami akan menggunakan sedikit nanti dalam bab ini. Di
sini, kami menggunakan perintah lsmod dari suite insmod untuk mendaftar yang diinstal
modul di kernel:

kali> lsmod
Modul

175
Ukuran Digunakan oleh
nfnetlink_queue
20480 0
nfnetlink_log
201480 0
nfnetlink
16384 2 nfnetlink_log, nfnetlink_queue
bluetooth
516096 0
rfkill
0
2 bluetooth
- snip -

Seperti yang Anda lihat, perintah lsmod mencantumkan semua modul kernel juga
sebagai informasi tentang ukurannya dan modul apa yang dapat menggunakannya. Begitu,
misalnya, modul nfnetlink — protokol berbasis pesan untuk berkomunikasi antara kernel dan
ruang pengguna — adalah 16.384byte dan digunakan
oleh modul nfnetlink_log dan modul nf_netlink_queue.
Dari suite insmod, kita dapat memuat atau memasukkan modul dengan insmod dan
lepaskan modul dengan rmmod, yang merupakan singkatan dari remove module. Ini perintah
tidak sempurna dan mungkin tidak memperhitungkan modul akun dependensi, sehingga
menggunakannya dapat membuat kernel Anda tidak stabil atau tidak dapat digunakan.
Akibatnya, distribusi Linux modern kini telah menambahkan modprobe perintah, yang secara
otomatis memuat dependensi dan melakukan pemuatan dan menghapus modul kernel
kurang berisiko. Kami akan membahas modprobe sebentar lagi. Pertama, mari kita lihat
bagaimana cara mendapatkan informasi lebih lanjut tentang modul kami.

Menemukan Informasi Lebih Lanjut dengan modinfo


Untuk mempelajari lebih lanjut tentang modul kernel apa saja, kita dapat
menggunakan modinfo perintah. Sintaks untuk perintah ini sangat mudah: modinfo diikuti
dengan nama modul yang ingin Anda pelajari. Untuk misalnya, jika Anda ingin mengambil
informasi dasar pada bluetooth modul kernel yang Anda lihat ketika Anda
menjalankan perintah lsmod sebelumnya, Anda dapat memasukkan perintah yang berikut
ini:

kali> modinfo bluetooth


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

176
alias: net-pf-31
lisensi: GPL
versi: 2.21
deskripsi: Bluetooth Core ver 2.21
penulis: Marcel Holtman <marcel@holtmann.org>
srcversion: FCFDE98577FEA911A3DAFA9
tergantung: rfkill, crc16
Intree: Y
vermagic: 4.6.0-kali1-amd64 SMP mod_unload modifikasi
parm: disable_esco: Nonaktifkan penciptaan koneksi eSCO (bool)
parm: disable_ertm: Nonaktifkan mode transmisi yang ditingkatkan (bool)

Seperti yang Anda lihat, perintah modinfo mengungkapkan informasi penting tentang
modul kernel ini yang diperlukan untuk menggunakan Bluetooth di sistem komputer
Anda. Perhatikan bahwa di antara banyak hal lain, ia mencantumkan modul
dependensi: rfkill dan crc16. Dependensi adalah modul yang harus dipasang
untuk modul bluetooth agar berfungsi dengan baik.
Biasanya, ini adalah informasi yang berguna ketika memecahkan masalah mengapa
sebuah perangkat perangkat keras tertentu tidak berfungsi. Selain mencatat hal-hal seperti
dependensi, Anda dapat memperoleh informasi tentang versi modul dan versi kernel
dikembangkan untuk modul dan kemudian pastikan mereka cocok dengan versi yang Anda
jalankan.

Menambah dan Menghapus Modul dengan modprobe


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

kali> modprobe -a < module module >

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


dengan nama modul:

kali> modprobe -r < module to be remove >

Keuntungan utama menggunakan modprobe daripada insmod adalah modprobe itu


memahami dependensi, opsi, dan instalasi dan penghapusan prosedur dan
memperhitungkan semua ini sebelum membuat perubahan. Dengan demikian, lebih mudah
dan lebih aman untuk menambahkan dan menghapus modul kernel modprobe.

177
Memasukkan dan Menghapus Modul Kernel
Mari kita coba masukkan dan lepaskan modul tes untuk membantu Anda
membiasakan diri diri Anda dengan proses ini. Bayangkan Anda baru saja menginstal video
card yang baru dan Anda perlu menginstal driver untuk itu. Ingat, driver untuk perangkat
biasanya dipasang langsung ke kernel untuk memberikannya akses yang diperlukan untuk
berfungsi dengan baik. Ini juga membuat driver mudah bagi peretas jahat untuk menginstal
rootkit atau perangkat lain yang mendengarkan.
Mari kita asumsikan untuk tujuan demonstrasi (jangan coba masukkan perintah ini)
yang ingin kita tambahkan driver video baru bernama HackersAriseNewVideo. Anda dapat
menambahkannya ke kernel Anda dengan memasukkan berikut:

kali> modprobe -a HackersAriseNewVideo

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

kali> dmesg | video grep

Jika ada pesan kernel dengan kata "video" di dalamnya, mereka akan ditampilkan di
sini. Jika tidak ada yang muncul, tidak ada pesan mengandung kata kunci itu.
Kemudian, untuk menghapus modul yang sama ini, Anda dapat memasukkan perintah
yang sama tetapi dengan -r (hapus) switch:

kali> modprobe -r HackersAriseNewVideo

Ingat, modul kernel yang dapat dimuat adalah kenyamanan untuk Linux pengguna / admin,
tetapi mereka juga merupakan kelemahan keamanan utama dan satu itu peretas profesional
harus terbiasa. Seperti yang saya katakan sebelumnya, LKM bisa menjadi kendaraan yang
sempurna untuk mendapatkan rootkit Anda ke dalam kernel dan melampiaskannya
malapetaka!

178
14
DASAR-DASAR PENYETELAN PYTHON
UNTUK HACKER
Keterampilan scripting dasar sangat penting untuk menjadi master hacker. Tanpa
telah mengembangkan beberapa keterampilan dasar scripting, seorang hacker pemula yang
cukup menggunakan alat yang dibuat oleh orang lain akan dikutuk ke ranah sebagai
seorang script kiddies. Ini berarti Anda akan dibatasi untuk menggunakan alat dikembangkan
oleh orang lain, yang mengurangi kemungkinan kesuksesan Anda dan meningkatkan
kemungkinan Anda terdeteksi oleh perangkat lunak antivirus (AV), sistem deteksi intrusi (IDS),
dan penegakan hukum. Dengan beberapa keterampilan scripting, Anda dapat meningkatkan
diri Anda ke eselon atas master hacker!
Dalam bab ini, kita mulai melihat bahasa scripting yang paling banyak digunakan oleh
hacker: yaitu Python. Banyak sebagian besar alat hacking populer ditulis dalam Python,
termasuk sqlmap, scapy, Social-Engineer Toolkit (SET), w3af, dan banyak lagi.
Python memiliki beberapa fitur penting yang membuatnya sangat baik cocok untuk
peretasan, tetapi mungkin yang paling penting, ia memiliki banyak variasi libraries — modul
kode prebuilt yang dapat diimpor secara eksternal dan digunakan kembali — yang
menyediakan beberapa fungsionalitas yang kuat. setidaknya Python memiliki lebih dari itu
1.000 modul built in, dan banyak lagi tersedia dalam berbagai repositori lainnya.
Membangun tools hacking juga dimungkinkan dalam bahasa lain, seperti bash, Perl,
dan Ruby, tetapi modul Python membuat alat-alat ini banyak dibangun lebih mudah.

179
Menambahkan Modul Python
Ketika Anda menginstal Python, Anda juga menginstal libraries standar dan modul
yang menyediakan berbagai kemampuan, termasuk built-in tipe data, exception handling,
modul numerik dan matematika, penanganan file, layanan kriptografi, penanganan data
internet, dan interaksi dengan protokol internet (IP).
Terlepas dari semua kekuatan yang ditawarkan oleh libraries dan modul standar ini,
Anda mungkin perlu atau ingin modul pihak ketiga tambahan. Pihak ketiga modul yang
tersedia untuk Python sangat luas dan mungkin alasannya kebanyakan peretas lebih suka
Python untuk scripting. Anda dapat menemukan yang komprehensif daftar modul pihak
ketiga di PyPI (Indeks Paket Python, ditunjukkan pada Gambar di bawah )
di http://www.pypi.org/.

Gambar Indeks Paket Python

Menggunakan pip
Python memiliki manajer paket khusus untuk menginstal dan mengelola Paket python
dikenal sebagai pip (Pip Install Packages). Sejak kita bekerja dengan Python 3 di sini, Anda
perlu mengunduh pip untuk Python 3 dan instal paket. Anda dapat mengunduh dan
menginstal pip dari Kali repositori dengan memasukkan yang berikut ini:

kali> apt-get install python3-pip

Sekarang, untuk mengunduh modul dari PyPI, Anda cukup memasukkan ini:

kali> pip3 instal < nama paket >

Ketika Anda mengunduh paket-paket ini, mereka secara otomatis ditempatkan ke /


usr / local // lib / <python versi> / dist-paket direktori. Jadi, misalnya, jika Anda telah
menggunakan pip untuk menginstal implementasi Python dari SNMP Protokol untuk Python

180
3,6, Kamu akan Temukan Itu Di /usr/local/lib/python3.6/pysnmp. Jika Anda tidak yakin di
mana paket telah ditempatkan pada sistem Anda (terkadang distribusi yang berbeda untuk
penggunaan Linux direktori berbeda), Anda dapat memasukkan pip3 diikuti oleh show dan
paket nama, seperti yang ditunjukkan di sini:

kali >pip3 show pysnmp


Name: pysnmp
Version: 4.4.4
Summary: SNMP library for Python
Home-page: https://github.com/etingof/pysnmp
Author: Ilya Etingof <etingof@gmail.com>
Author-email: etingof@gmail.com
License: BSD
Location: usr/local/lib/python3.6/dist-packages
Requires: ptsmi, pyansl, pycryptodomex

Anda dapat melihat ini memberi Anda banyak informasi tentang paket, termasuk
direktori yang menyimpannya.
Sebagai alternatif untuk menggunakan pip, Anda dapat mengunduh paket secara
langsung dari situs (pastikan yang diunduh ke direktori yang tepat), buka paketnya dan
kemudian jalankan berikut:

kali >python setup.py install

Ini akan menginstal semua paket yang belum dikemas yang belum diinstal.

Memasang Modul Pihak Ketiga


Untuk menginstal modul pihak ketiga yang dibuat oleh anggota komunitas Python
lainnya (tidak seperti paket Python yang dirilis secara resmi), Anda bisa cukup
gunakan wget untuk mengunduhnya dari mana pun ia disimpan online, buka kompresi
modul, dan kemudian jalankan python setup.py install command.
Sebagai contoh, mari kita unduh dan instal modul Python untuk port-scanning tool,
nmap, dari online repositori di https://xael.org .
Pertama, kita perlu mengunduh modul dari xael.org :

kali >wget http://xael.org/norman/python/python-nmap/python-nmap-0.3.4.tar.gz


--2014-12-28 17:48:32-- http://xael.org/norman/python/python-nmap/python-
nmap0.3.4.tar.gz
Resolving xael.org (xael.org)...194.36.166.10

181
Connecting to xael.org (xael.org)|194.36.166.10|:80...connected.
--snip--
2018-21-28 17.48:34 (113 KB/s) - 'python-nmap-0.3.4.tar.gz' saved
[40307/40307]

Di sini, Anda dapat melihat kami menggunakan perintah wget dan URL lengkap untuk
paket. Setelah paket diunduh, Anda harus membuka kompresnya dengan tar:

kali> tar -xzf python-nmap-0.3.4.tar.gz

Kemudian ubah direktori ke direktori yang baru dibuat:

kali> cd python-nmap-.03.4 /

Akhirnya, dalam direktori itu, instal modul baru dengan memasukkan berikut:

kali >~/python-nmap-0.3.4 >python setup.py install


running install
running build
running build_py
creating build
--snip--
running install_egg_info
writing /usr/local/lib/python2.7/dist-packages/python_nmap-0.3.4.egg.info

Modul-modul lain yang tak terhitung banyaknya dapat diperoleh dengan cara ini
juga. Sekali Anda telah menginstal modul nmap ini, Anda dapat menggunakannya dalam skrip
Python Anda dengan mengimpor modul. Lebih lanjut tentang ini nanti. Sekarang mari kita
mulai beberapa skrip.

Memulai Scripting dengan Python


Sekarang Anda tahu cara menginstal modul dengan Python, saya ingin membahas
beberapa konsep dasar dan terminologi Python, kemudian dasar sintaksis. Setelah itu, Anda
akan menulis beberapa skrip yang akan berguna bagi peretas di manapun dan saya berharap
akan menunjukkan kekuatan Python tersebut.
Seperti halnya bash atau bahasa skrip lainnya, kita dapat membuat Skrip python
menggunakan editor teks apa pun. Untuk bab ini, untuk menjaga semuanya sederhana, saya
menyarankan Anda untuk menggunakan editor teks sederhana seperti Leafpad, tapi itu
berguna untuk mengetahui bahwa sejumlah integrated development environments, atau IDE,
tersedia untuk digunakan dengan Python. IDE seperti editor teks kemampuan lain bawaan,
seperti kode warna, debugging, dan kemampuan kompilasi. Kali memiliki IDE PyCrust bawaan,

182
tetapi ada masih banyak lagi IDE yang tersedia untuk diunduh, yang mana yang terbaik bisa
diperdebatkan PyCharm JetBrain. Ini adalah IDE yang sangat baik dengan banyak peningkatan
yang membuat belajar Python lebih mudah dan lebih cepat. Ada yang profesional versi untuk
pembelian dan edisi komunitas yang gratis. Kamu dapat menemukan mereka
di https://www.jetbrains.com/pycharm/.
Setelah Anda menyelesaikan bab ini, jika Anda ingin terus belajar Python, PyCharm
adalah alat yang luar biasa yang akan membantu Anda pengembangan. Untuk saat ini, kami
akan menggunakan editor teks dasar seperti Leafpad untuk hal-hal sederhana.
Perhatikan bahwa mempelajari bahasa pemrograman membutuhkan waktu dan
banyak kerja keras. nasehati diri Anda sendiri — usahakan untuk menguasai masing-masing
skrip kecil yang saya berikan sebelum melanjutkan.

FORMATTING DI PYTHON

Satu perbedaan antara Python dan beberapa bahasa scripting lainnya adalah
formatnya sangat penting dalam Python. Penerjemah Python menggunakan
format untuk menentukan bagaimana kode dikelompokkan. Keterangan format
kurang penting daripada sederhana konsisten, terutama dengan tingkat
indentasi Anda. Jika Anda memiliki grup jalur kode yang Anda mulai dengan
indentasi ganda, misalnya, Anda harus konsisten dengan indentasi ganda di
seluruh blok secara berurutan agar Python mengenali bahwa baris kode ini
adalah milik bersama. Ini berbeda dari scripting dalam bahasa pemrograman
lain, di mana pemformatan adalah opsional dan yang terbaik berlatih, tetapi
tidak diharuskan. Anda akan melihat ini saat Anda melewati dan berlatih; itu
sesuatu untuk selalu diingat!

Variabel
Sekarang, ke beberapa konsep yang lebih praktis dengan
Python. Sebuah variabel adalah salah satu tipe data paling dasar dalam pemrograman, dan
Anda temui sebelumnya dengan skrip bash. Secara sederhana, variabel adalah nama
dikaitkan dengan nilai tertentu sehingga setiap kali Anda menggunakan nama itu dalam
program Anda, itu akan memanggil nilai yang terkait.
Cara kerjanya adalah bahwa nama variabel menunjuk ke data yang disimpan dalam
sebuah lokasi memori, yang dapat berisi segala jenis nilai, seperti integer, bilangan real, string,
angka floating-point, Boolean (benar atau salah pernyataan), list, atau dictionary. Kami akan
membahas secara singkat semua ini dalam hal ini bab.
Untuk menjadi terbiasa dengan dasar-dasar, mari kita buat skrip sederhana, yang
ditampilkan di Leafpad dan simpan sebagai hackcoba.py .

#! / usr / bin / python3


name = "NamaKamu"
print ("hello "+name+”happy hacking”)

Program Python pertama Anda

183
Baris pertama hanya memberitahu sistem Anda bahwa Anda ingin menggunakan
Penerjemah python untuk menjalankan program ini, daripada bahasa lainnya. Baris kedua
mendefinisikan variabel bernama nama dan memberikan nilai padanya (dalam kasus
ini, "NamaKamu"). Anda harus mengubah nilai ini ke nama Anda sendiri. Nilai variabel ini
adalah dalam format data karakter string, artinya konten terlampir dalam tanda kutip dan
diperlakukan seperti teks. Kamu dapat memasukkan angka dalam string juga, dan mereka
akan diperlakukan seperti teks, dalam hal itu Anda tidak akan dapat menggunakannya dalam
perhitungan numerik.
Baris ketiga membuat pernyataan print( ) yang menyatukan Salam dengan nilai
dalam variabel nama , diikuti oleh teks happy hacking Pernyataan print () akan menampilkan
apa pun yang Anda berikan padanya di dalam tanda kurung di layar Anda.

Sekarang, sebelum Anda dapat menjalankan skrip ini, Anda harus memberikan diri
Anda sendiri izin untuk menjalankannya. Kami membutuhkan perintah chmod untuk
melakukan itu.

kali> chmod 755 hackcoba.py

Seperti yang Anda lakukan di bab sebelumnya dengan skrip bash, untuk mengeksekusi
skrip Anda, awali nama skrip dengan tanda titik dan garis miring. Anda saat ini direktori tidak
dalam variabel $ PATH untuk alasan keamanan, jadi kita perlu awali nama skrip
dengan./ untuk memberi tahu sistem agar melihat pada saat ini direktori untuk nama file dan
jalankan.
Untuk menjalankan skrip khusus ini, masukkan yang berikut ini:

kali> ./hackcoba.py

Dalam Python, setiap tipe variabel diperlakukan seperti kelas. Kelas adalah sejenis
template untuk membuat objek. Dalam skrip berikut, saya pun berusaha menunjukkan
beberapa jenis variabel. Variabel bisa tahan lebih dari sekadar string. Di bawah menunjukkan
beberapa variabel yang mengandung tipe data yang berbeda.

#! /usr/bin/python3
HackersAriseStringVariable = "Hackers-Arise Is the Best Place to Learn
Hacking"
HackersAriseIntegerVariable = 12
HackersAriseFloatingPointVariable = 3.1415
HackersAriseList = [1,2,3,4,5,6]
HackersAriseDictionary = {'name' : 'OccupyTheWeb', 'value' : 27)
print (HackersAriseStringVariable)

184
print (HackersAriseIntegerVariable)
print (HackersAriseFloatingPointVariable)

Serangkaian struktur data yang terkait dengan variabel


Ini menciptakan lima variabel yang berisi tipe data berbeda: string, diperlakukan
sebagai teks; bilangan bulat, yang merupakan tipe angka tanpa desimal itu dapat digunakan
dalam operasi numerik; float, yang merupakan tipe angka dengan desimal yang juga dapat
digunakan dalam operasi numerik; daftar, yaitu a serangkaian nilai yang disimpan
bersama; dan kamus, yang merupakan unordered set data di mana setiap nilai dipasangkan
dengan kunci, yang berarti setiap nilai dalam kamus memiliki kunci pengidentifikasi yang
unik. Ini berguna saat Anda ingin merujuk atau mengubah nilai dengan merujuk ke nama
kunci. Untuk Misalnya, Anda memiliki dictionary bernama fruit_color yang dikonfigurasi
seperti berikut: fruit_color = {'apple': 'red', 'grape': 'green', orange: 'orange'}
Jika nanti dalam skrip Anda, Anda ingin mendapatkan fruit_color dari anggur, Anda
cukup sebut dengan kuncinya: print (fruit_color ['grape'])
Anda juga bisa mengubah nilai untuk kunci tertentu; misalnya, di sini kita ubah warna
apel: fruit_color ['apple']: 'green'
Kami akan membahas list dan dictionary secara lebih rinci nanti.
Buat skrip ini di editor teks apa pun, simpan sebagai secondpythonscript.py, dan
kemudian beri diri Anda izin untuk mengeksekusinya, seperti:

kali> chmod 755 secondpythonscript.py

Ketika kami menjalankan skrip ini, ia mencetak nilai-nilai variabel string, the variabel
integer, dan variabel angka floating-point, seperti:

kali >./secondpythonscript.py
Hackers-Arise Is the Best Place to Learn Hacking
12
3.1415

CATATAN

Dalam Python, tidak perlu mendeklarasikan variabel sebelum memberikan nilai


itu, seperti dalam beberapa bahasa pemrograman lain.

Komentar
Seperti bahasa pemrograman dan scripting lainnya, Python memiliki kemampuan
untuk menambahkan komentar. Komentar hanyalah bagian dari kode Anda —Kata, kalimat,
dan bahkan paragraf — yang menjelaskan apa kode itu dimaksudkan untuk dilakukan. Python
akan mengenali komentar dalam kode Anda dan mengabaikannya mereka. Meskipun
komentar tidak diperlukan, mereka sangat membantu ketika Anda kembali ke kode Anda dua

185
tahun kemudian dan tidak ingat apa yang harus dilakukan. Pemrogram sering menggunakan
komentar untuk menjelaskan apa a blok kode tertentu melakukan atau untuk menjelaskan
logika di balik pemilihan a metode pengkodean tertentu.
Komentar diabaikan oleh penerjemah. Ini berarti garis apa saja ditunjuk sebagai
komentar dilewati oleh penerjemah, yang sederhana terus sampai menemukan garis kode
yang sah. Python menggunakan # simbol untuk menunjuk awal komentar baris tunggal. Jika
Anda ingin menulis komentar multiline, Anda dapat menggunakan tiga tanda kutip ganda ( ""
" ) di awal dan akhir bagian komentar.
Seperti yang dapat Anda lihat di skrip berikut, saya telah menambahkan multiline
pendek komentar untuk skrip hacker-arise_greetings.py kami yang sederhana.

#! /usr/bin/python3
"""
This is my first Python script with comments. Comments are used to help explain
code to
ourselves and fellow programmers. In this case, this simple script creates a
greeting for
the user.
"""
name = "OccupyTheWeb"
print ("Greetings to "+name+" from Hackers-Arise. The Best Place to Learn
Hacking!")

Saat kami menjalankan skrip lagi, tidak ada yang berubah dibandingkan dengan terakhir kali
dieksekusi, seperti yang Anda lihat di sini:

kali >./hackers-arise_greetings.py
Greetings to OccupyTheWeb from Hackers-Arise. The Best Place to Learn Hacking!

sekarang sudah beberapa info tentang skrip kami ketika kami kembali ke kode di lain waktu.

Fungsi
Fungsi dalam Python adalah bit kode yang melakukan tindakan tertentu. print
() pernyataan yang Anda gunakan sebelumnya, misalnya, adalah fungsi yang ditampilkan nilai
apa pun yang Anda berikan padanya. Python memiliki sejumlah fungsi bawaan Anda dapat
langsung mengimpor dan menggunakan. Sebagian besar dari mereka tersedia di blog Anda
instalasi default Python di Kali Linux, meskipun banyak lagi yang tersedia dari perpustakaan
yang dapat diunduh. Mari kita lihat beberapa saja ribuan fungsi yang tersedia untuk Anda:

186
keluar () keluar dari suatu program. float () mengembalikan argumennya sebagai angka titik-
mengambang. Sebagai contoh, float (1) akan mengembalikan 1.0 . help () menampilkan
bantuan pada objek yang ditentukan oleh argumennya. int () mengembalikan bagian integer
dari argumennya (terpotong). len () mengembalikan jumlah elemen dalam daftar atau kamus.
maks () mengembalikan nilai maksimum dari argumennya (daftar). open () membuka file
dalam mode yang ditentukan oleh argumennya. range () mengembalikan daftar bilangan
bulat antara dua nilai yang ditentukan oleh argumen. sorted () mengambil daftar sebagai
argumen dan mengembalikannya dengan elemen-elemennya di memesan. type
() mengembalikan tipe argumennya (misalnya, int, file, metode, fungsi).
Anda juga dapat membuat fungsi Anda sendiri untuk melakukan tugas-tugas
khusus. Sejak ada begitu banyak yang sudah dibangun ke dalam bahasa, itu selalu layaknya
memeriksa apakah suatu fungsi sudah ada sebelum melalui upaya membangunnya
sendiri. Ada banyak cara untuk melakukan pemeriksaan ini. Satu adalah untuk melihat
dokumentasi Python resmi yang tersedia di https://docs.python.org. Pilih versi yang Anda
kerjakan dan kemudian pilih Referensi Perpustakaan.
List
Banyak bahasa pemrograman menggunakan array sebagai cara untuk menyimpan
banyak benda yang terpisah. Sebuah Array adalah daftar nilai-nilai yang dapat diambil,
dihapus, diganti, atau bekerja dengan berbagai cara dengan merujuk nilai tertentu dalam
array dengan posisinya di daftar, yang dikenal sebagai indeksnya. Itu penting untuk
perhatikan bahwa Python, seperti banyak lingkungan pemrograman lainnya, dimulai
menghitung indeks pada 0, jadi elemen pertama dalam daftar adalah indeks 0, yang kedua
adalah indeks 1, yang ketiga adalah indeks 2, dan seterusnya. Jadi, misalnya, jika kita mau
mengakses nilai ketiga dalam array, kita bisa melakukannya dengan array [2] . Di Python, ada
beberapa implementasi array, tetapi mungkin yang paling banyak implementasi umum
dikenal sebagai list.
list dalam Python dapat diubah , yang berarti bahwa list dapat menyediakan elemen
yang berurutan ketika Anda menjalankan semua itu .Ini berguna karena cukup sering ketika
kita menggunakan list, kita melihat melalui mereka untuk menemukan nilai tertentu, untuk
mencetak nilai satu per satu satu, atau untuk mengambil nilai dari satu daftar dan
memasukkannya ke daftar lain.
Jadi, mari kita bayangkan kita perlu menampilkan elemen keempat dalam daftar kita
HackersAriseList di script sebelumnya. Kita dapat mengakses elemen itu dan mencetaknya
dengan memanggil nama list, HackersAriseList, diikuti oleh indeks elemen yang ingin kita
akses terlampir dalam tanda kurung. Untuk menguji ini, tambahkan baris berikut ke bagian
bawah Anda skrip secondpythonscript.py untuk mencetak elemen pada indeks 3 in
HackersAriseList:

- snip -
print (HackersAriseStringVariable)

187
print (HackersAriseIntegerVariable)
print (HackersAriseFloatingPointVariable)
print (HackersAriseList [3])

Ketika kita menjalankan skrip ini lagi, kita dapat melihat pernyataan cetak yang baru
mencetak 4 di samping output lainnya:

kali> ./secondpythonscript.py
Hackers-Arise Is the Best Place to Learn Hacking

12
3.1415
4

Modul
Sebuah modul hanyalah sebuah bagian dari kode disimpan ke dalam file terpisah
sehingga Anda dapat gunakan sebanyak yang Anda butuhkan dalam program Anda tanpa
harus mengetik semuanya keluar lagi. Jika Anda ingin menggunakan modul atau kode apa pun
dari modul, Anda perlu mengimpornya. Seperti dibahas sebelumnya, menggunakan standar
dan pihak ketiga modul adalah salah satu fitur utama yang membuat Python begitu kuat
untuk peretas. Jika kami ingin menggunakan modul nmap yang kami pasang sebelumnya,
kami akan menambahkan baris berikut ke skrip kami: import nmap
Nanti di bab ini, kita akan menggunakan dua modul yang sangat berguna: socket dan
ftplib.

Pemrograman Berorientasi Objek (OOP)


Sebelum kita mempelajari Python lebih dalam, mungkin ada baiknya kita mengambil
beberapa menit untuk membahas konsep pemrograman berorientasi objek (OOP). Python,
seperti kebanyakan bahasa pemrograman saat ini (C ++, Java, dan Ruby, to beri nama)
mematuhi model OOP.
Gambar dibawah menunjukkan konsep dasar di balik OOP: bahasa alat utama adalah objek ,
yang memiliki properti dalam bentuk atribut dan menyatakan, serta metode yang merupakan
tindakan yang dilakukan oleh atau pada objek.

188
Ilustrasi pemrograman berorientasi objek
Gagasan di balik bahasa pemrograman berbasis OOP adalah menciptakan benda-
benda yang bertindak seperti benda-benda di dunia nyata. Misalnya, mobil adalah objek yang
memiliki sifat, seperti roda, warna, ukuran, dan jenis mesin; itu juga memiliki metode, yang
merupakan tindakan yang diambil mobil, seperti mempercepat dan mengunci pintu. Dari
perspektif alami bahasa manusia, objek adalah kata benda, properti adalah kata sifat, dan
sebuah Metode umumnya kata kerja.
Objek adalah anggota class, yang pada dasarnya adalah templat untuk membuat objek
dengan variabel awal bersama, properti, dan metode. Untuk Misalnya, kita memiliki kelas
yang disebut mobil; mobil kami (BMW) akan menjadi anggota kelas mobil. Kelas ini juga
termasuk yang lain benda / mobil, seperti Mercedes dan Audi, seperti yang ditunjukkan pada
Gambar di bawah.

Kelas dan objek OOP


Kelas mungkin juga memiliki subclass. Kelas mobil kami memiliki subkelas BMW, dan
objek dari subclass itu mungkin model 320i.
Setiap objek akan memiliki properti (make, model, tahun, dan warna) dan metode
(mulai, mengemudi, dan parkir), seperti yang ditunjukkan pada gambar di bawah.

Properti dan metode OOP

189
Dalam bahasa OOP, objek mewarisi karakteristik kelas mereka, jadi BMW 320i akan
mewarisi metode start, drive, dan park mobil kelas.
Konsep OOP ini sangat penting untuk memahami bagaimana Python dan bahasa OOP
lain berfungsi, seperti yang akan Anda lihat dalam skrip berikut ini bagian.

Komunikasi Jaringan dengan Python


Sebelum kita beralih ke lebih banyak konsep Python, mari kita gunakan apa yang Anda
miliki belajar sejauh ini untuk menulis beberapa skrip peretasan yang harus dilakukan dengan
jaringan koneksi.

Membangun Klien TCP


Kami akan membuat koneksi jaringan di Python menggunakan modul soket. Saya
sudah sudah disebutkan bahwa Python dilengkapi dengan pustaka modul untuk banyak
tugas. Dalam hal ini, kita akan memerlukan modul soket untuk membuat a Koneksi TCP. Mari
kita lihat dalam aksi. Lihatlah skrip di bawah bernama HackersAriseSSHBannerGrab.py (saya
tahu, itu nama yang panjang, tapi tahan dengan saya disini). Sebuah spanduk adalah apa
aplikasi hadiah ketika seseorang atau sesuatu menghubungkannya. Ini seperti aplikasi yang
mengirim salam mengumumkan apa itu. Peretas menggunakan teknik yang dikenal
sebagai spanduk meraih untuk mencari informasi penting tentang aplikasi atau layanan apa
sedang berjalan di port.

#! /usr/bin/python3

➊ import socket

➋ s = socket.socket()

➌ s.connect(("192.168.1.101", 22))

➍ answer = s.recv(1024)

➎ print (answer)
s.close

Pertama, kami mengimpor modul soket ➊ sehingga kami dapat menggunakan


fungsinya dan alat. Di sini, kita akan menggunakan alat jaringan dari soket modul untuk
menjaga antarmuka koneksi melalui jaringan untuk kita. Soket menyediakan cara bagi dua
simpul komputer untuk berkomunikasi satu sama lain. Biasanya, satu adalah server dan satu
adalah klien.
Kemudian kita membuat variabel baru, s, dan mengaitkannya dengan kelas socket
dari modul soket ➋. Dengan cara ini, kita tidak perlu referensi lengkap socket.socket () sintaks
setiap kali kita ingin menggunakan kelas socket — kita bisa cukup gunakan nama variabel s.

Kami kemudian menggunakan metode connect () dari modul socket ➌ untuk


membuat a koneksi jaringan ke IP dan port tertentu. Ingat metode itu adalah fungsi yang

190
tersedia untuk objek tertentu. Sintaksnya adalah
objek. metode (misalnya, socket.connect). Dalam hal ini, saya terhubung ke Alamat IP
192.168.1.101, yang merupakan alamat IP sebuah mesin di jaringan saya, dan port 22, yang
merupakan port SSH default. Anda dapat menguji ini pada contoh lain dari Linux atau
Kali. Sebagian besar memiliki port 22 terbuka secara default.
Setelah Anda membuat koneksi, ada beberapa hal yang Anda bisa melakukan. Di sini,
kami menggunakan metode terima recv untuk membaca 1024byte data dari soket ➍ dan
menyimpannya dalam variabel bernama answer; 1024byte ini akan berisi informasi
banner. Lalu kami cetak isinya variabel ke layar dengan fungsi print () ➎ untuk melihat data
apa yang dimiliki telah melewati soket itu, memungkinkan kita untuk memata-matai itu! Di
baris terakhir, kami menutup koneksi. Simpan skrip ini
sebagai HackersAriseSSHBannerGrab.py dan kemudian ubah izin
menggunakan perintah chmod sehingga Anda bisa menjalankannya.
Mari kita jalankan skrip ini untuk terhubung ke sistem Linux lain (Anda mungkin bisa
gunakan sistem Ubuntu atau bahkan sistem Kali lainnya) pada port 22. Jika SSH adalah
berjalan di port itu, kita harus bisa membaca banner menjadi jawaban kita variabel dan cetak
ke layar, seperti yang ditunjukkan di sini:

kali> ./HackersAriseSSHBannerGrab.py
SSH-2.0-OpenSSH_7.3p1 Debian-1

Kami baru saja membuat skrip Python perebutan banner sederhana! Kita dapat
gunakan skrip ini untuk mengetahui aplikasi, versi, dan sistem operasi apa sedang berjalan di
alamat IP dan port tersebut. Ini memberi kami informasi penting untuk kebutuhan hacker
sebelum menyerang suatu sistem. Ini pada dasarnya adanya situs web Shodan.io lakukan
untuk hampir setiap alamat IP di planet ini, dan itu katalog dan indeks informasi ini untuk kita
cari.

Membuat TCP Listener


Kami baru saja membuat klien TCP yang dapat membuat koneksi ke yang lain Alamat
dan port TCP / IP dan kemudian memata-matai informasi yang sedang ditularkan. Soket itu
juga dapat digunakan untuk membuat pendengar TCP, untuk dengarkan koneksi dari orang
luar ke server Anda. Ayo coba lakukan itu lebih lanjut.
Dalam skrip Python ditunjukkan dibawah, Anda akan membuat soket menyala setiap
port sistem Anda yang, ketika seseorang terhubung ke soket itu, mengumpulkan informasi
penting tentang sistem konektor. Masukkan skrip dan simpan sebagai tcp_server.py. Pastikan
untuk memberi diri Anda menjalankan izin dengan chmod.

#! /usr/bin/python3
import socket

➊ TCP_IP = "192.168.181.190"

191
TCP_PORT = 6996
BUFFER_SIZE = 100

➋ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

➌ s.bind((TCP_IP, TCP_PORT))

➍ s.listen (1)

➎ conn, addr = s.accept()


print ('Connection address: ', addr )
while 1:
data=conn.recv(BUFFER_SIZE)
if not data:break
print ("Received data: ", data)
conn.send(data) #echo
conn.close

Kami menyatakan bahwa kami ingin skrip dijalankan dengan interpreter Python dan
kemudian mengimpor modul soket seperti sebelumnya, sehingga kita dapat
menggunakannya kemampuan. Kami kemudian mendefinisikan variabel untuk menyimpan
informasi untuk Alamat TCP / IP, port untuk listener, dan ukuran buffer dari data kami ingin
menangkap dari sistem penghubung ➊. Kami mendefinisikan soket ➋ dan mengikat soket ke
alamat IP dan port ➌ menggunakan variabel yang baru saja kita buat. Kami memberi tahu
soket untuk mendengarkan menggunakan metode listen () dari perpustakaan socket ➍.
Kami kemudian menangkap alamat IP dan port dari sistem penghubung
menggunakan metode penerimaan pustaka soket, dan kami mencetak informasi itu ke layar
sehingga pengguna dapat melihatnya ➎. Perhatikan while 1: sintaks di sini; baik diskusikan
hal ini lebih lanjut di bab ini, tetapi untuk sekarang ketahuilah bahwa ini digunakan untuk
menjalankan kode indentasi yang datang setelah itu tanpa batas, artinya Python terus
memeriksa data sampai program dihentikan.
Akhirnya, kami menempatkan informasi dari sistem penghubung ke sebuah buffer,
cetak, lalu tutup koneksi.
Sekarang, buka komputer lain di jaringan Anda dan gunakan browser untuk terhubung
ke port 6996 yang ditunjuk dalam skrip kami. Jalankan tcp_server.py skrip, dan Anda harus
dapat menghubungkan dan mengumpulkan informasi kunci tentang sistem itu, termasuk
alamat IP dan port penghubung sistem, seperti yang ditunjukkan di sini:

kali >./tcp_server.py
Connection Address: ('192.168.181.190', 45368)

192
Received data: Get /HTTP/1.1
Host:192.168.181.190:6996
User -Agent:Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gec
--snip---

Ini adalah informasi penting bagi seorang hacker untuk dikumpulkan sebelum
memutuskan eksploitasi. Eksploitasi (atau peretasan) sangat spesifik untuk sistem operasi,
aplikasi, dan bahkan bahasa yang digunakan, sehingga peretas perlu tahu informasi sebanyak
mungkin tentang target sebelum melanjutkan. Ini tindakan mengumpulkan informasi
sebelum peretasan sering disebut sebagai pengintaian. Anda baru saja mengembangkan alat
yang akan mengumpulkan kunci informasi pengintaian pada target potensial, sangat mirip
dengan alat hacker populer p0F!

Dictionary, Loops, dan Control Statements


Mari kita terus memperluas pemahaman Anda tentang Python dan kemudian gunakan semua
yang telah Anda pelajari sejauh ini untuk membuat cracker kata sandi untuk FTP server.

Dictionary
Dictionary menyimpan informasi sebagai pasangan yang tidak teratur, di mana setiap
pasangan berisi kunci dan nilai terkait. Kita dapat menggunakan dictionary untuk menyimpan
sebuah daftar item dan beri label masing-masing item sehingga kita dapat menggunakan dan
merujuk item itu secara individual. Kami mungkin menggunakan dictionary untuk
menyimpan, misalnya, ID pengguna dan nama terkaitnya, atau untuk menyimpan kerentanan
yang diketahui terkait dengan host tertentu. Kamus dalam Python bertindak seperti array
asosiatif di bahasa lainnya.
Seperti list, dictonary dapat diubah, artinya kita menggunakan struktur kontrol
seperti untuk pernyataan untuk pergi melalui seluruh dictonary, menugaskan masing-masing
elemen kamus ke variabel hingga kita sampai pada akhir kamus.
Antara lain, Anda mungkin menggunakan struktur ini dalam membangun sebuah
password cracker yang berulang melalui setiap kata sandi yang disimpan dalam sebuah
dictionary sampai satu bekerja atau sampai cracker sampai pada akhir kamus.
Sintaks untuk membuat dictionary adalah sebagai berikut:
dict = { key1 : value1 , key2 : value2 , key3 : value3 ...}
Perhatikan bahwa untuk dictionary, Anda menggunakan kurung keriting dan item
yang terpisah dengan koma. Anda dapat memasukkan sebanyak mungkin pasangan nilai
kunci.

Control Statement
Control Statement memungkinkan kode Anda untuk mengambil keputusan
berdasarkan beberapa hal kondisi. Ada beberapa cara dalam Python untuk mengontrol aliran
naskah.

193
Mari kita lihat beberapa struktur ini dengan Python.

Pernyataan if
if struktur dalam Python, seperti dalam banyak bahasa pemrograman lain termasuk
bash, digunakan untuk memeriksa apakah suatu kondisi benar atau tidak dan jalankan
serangkaian kode yang berbeda untuk setiap skenario. Sintaksnya terlihat seperti ini:

jika ekspresi kondisional


jalankan kode ini jika ekspresi itu benar

pernyataan if berisi kondisi yang mungkin seperti jika variabel <10, misalnya. Jika
kondisi terpenuhi, ekspresi mengevaluasi ke true, dan kemudian kode yang mengikuti, yang
dikenal sebagai blok kontrol, adalah dieksekusi. Jika pernyataan bernilai false, maka
pernyataan dalam blok kontrol dilewati dan tidak dieksekusi.
Dalam Python, blok kontrol harus diindentasi. Lekukan ini mengidentifikasi blok
kontrol ke interpreter. Pernyataan selanjutnya yaitu tidak indentasi berada di luar blok
kontrol dan karenanya bukan bagian dari if pernyataan, dan ini adalah bagaimana Python
tahu ke mana harus melewatkan jika kondisinya tidak terpenuhi.

if ... else
Struktur if ... else dalam Python terlihat seperti ini:

jika ekspresi kondisional


*** # jalankan kode ini ketika kondisinya terpenuhi
lain
*** # jalankan kode ini ketika kondisinya tidak terpenuhi

Seperti sebelumnya, interpreter pertama memeriksa kondisi di if ekspresi. Jika


bernilai true, penerjemah mengeksekusi pernyataan di blok kontrol. Jika pernyataan
kondisional bernilai false, maka blok kontrol mengikuti pernyataan lain dijalankan sebagai
gantinya.
Misalnya, di sini kami memiliki cuplikan kode yang memeriksa nilai sebuah identitas
pengguna; jika 0 (pengguna root di Linux selalu UID 0), maka kami cetak pesan "Anda adalah
pengguna root." Lain, jika ada nilai lain, kami mencetak pesan "Anda BUKAN pengguna root."

if userid == 0
print ("Anda adalah pengguna root")
else
print ("Anda BUKAN pengguna root")

194
Loop
Loop adalah struktur lain yang sangat berguna dalam Python. Loop memungkinkan
programmer untuk mengulangi blok kode beberapa kali, tergantung pada nilainya atau suatu
kondisi. Dua yang paling banyak digunakan adalah while dan for.

While loop
While loop mengevaluasi ekspresi Boolean (ekspresi yang dapat hanya mengevaluasi benar
atau salah) dan melanjutkan eksekusi sementara ekspresi dievaluasi menjadi true. Misalnya,
kita dapat membuat cuplikan kode yang mencetak setiap angka dari 1 hingga 10 dan
kemudian keluar dari loop, seperti:

count = 1
while (count <= 10):
print (count)
count += 1

Blok kontrol indentasi kemudian berjalan selama kondisinya benar.

For loop
For loop dapat menetapkan nilai dari list, string, dictionary, atau lainnya struktur
iterable ke variabel indeks setiap kali melalui loop, memungkinkan kita untuk menggunakan
setiap item dalam struktur satu demi satu. Untuk contoh, kita dapat
menggunakan loop for untuk mencoba kata sandi sampai kita menemukan yang cocok,
seperti:

for password in passwords:


attempt = connect (username, password)
if attempt == "230"
print ("Password found: " + password)
sys.exit (0)

Dalam cuplikan kode ini, kami membuat pernyataan for yang berlanjut melalui sebuah
list kata sandi yang kami sediakan dan upaya untuk terhubung dengan sebuah nama
pengguna dan kata sandi. Jika upaya koneksi menerima kode 230, yang merupakan kode
untuk koneksi yang berhasil, program mencetak "Password Found: " dan kemudian kata
sandi. Itu kemudian keluar. Jika tidak mendapatkan 230, itu akan lanjutkan melalui masing-
masing kata sandi yang tersisa sampai menerima 230 atau sampai menghabiskan list kata
sandi.

195
Upgrade skript sebelumnya
Sekarang dengan latar belakang sedikit lebih dalam struktur Looping Python dan
conditional statement, mari kita kembali ke skrip banner-grabbing dan menambahkan
beberapa baris code.
Kami akan menambahkan daftar port yang ingin kami ambil bannernya daripada
hanya mendengarkan pada satu port, dan kemudian loop melalui list menggunakan for
statemend. Dengan cara ini, kita dapat mencari dan mengambil spanduk untuk banyak port
dan menampilkannya ke layar.
Pertama, mari kita buat list dan masukkan port tambahan di dalamnya. Buka
HackersAriseSSHBannerGrab.py, dan kami akan bekerja dari sana. dibawah
menunjukkan kode lengkap. Perhatikan bahwa garis abu-abu tetap sama; garis hitam adalah
yang perlu Anda ubah atau tambahkan. Kami akan mencoba meraih spanduk untuk port 21
(ftp), 22 (ssh), 25 (smtp), dan 3306 (mysql).

#! /usr/bin/python3
import socket

➊ Ports = [21,22,25,3306]

➋ for i in range (0,4):


s = socket.socket()

➌ Ports = Port[i]
print ('This Is the Banner for the Port')
print (Ports)

➍ s.connect (("192.168.1.101", Port))


answer = s.recv (1024)
print (answer)
s.close ()

Kami membuat list yang disebut Ports ➊ dan masing-masing menambahkan empat
elemen mewakili port. Lalu kami membuat pernyataan for yang diulangi list itu empat kali,
karena ia memiliki empat item ➋.
Ingatlah bahwa ketika Anda menggunakan for for, kode terkait loop harus
diindentasikan di bawah pernyataan for.
Kita perlu mengubah program untuk mencerminkan penggunaan variabel dari daftar
pada setiap iterasi melalui. Untuk melakukannya, kami membuat variabel bernama Port dan

196
tetapkan ke nilai dari daftar di setiap iterasi ➌. Lalu kita gunakan variabel itu dalam koneksi
kita ➍.
Ketika interpreter datang ke statement itu, itu akan berusaha untuk terhubung ke port
mana saja yang ditugaskan ke variabel di alamat IP.
Sekarang, jika Anda menjalankan skrip ini pada sistem dengan semua port terdaftar
terbuka dan diaktifkan, Anda akan melihat sesuatu seperti.

kali >./HackersArisePortBannerGrab.py
This is the Banner for the Port
21
220 (vsFTPd 2.3.4)
This Is the Banner for the Port
22
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
This Is the Banner for the Port
25
220 metasploitable.localdomain ESMTP Postfix (Ubuntu)
This Is the Banner for the Port
3306
5.0.51a-3ubuntu5

Output untuk grabber banner port


Perhatikan bahwa skrip telah menemukan port 21 terbuka dengan vsFTPd 2.3.4
berjalan di atasnya, port 22 terbuka dengan OpenSSH 4.7 berjalan di atasnya, port 25 dengan
Postfix, dan port 3306 dengan MySQL 5.0.51a.
Kami baru saja berhasil membangun alat pengumpul banner multiport Python untuk
melakukan pengintaian pada sistem target. Alat itu memberi tahu kita layanan mana yang
berjalan pada port dan versi layanan itu! Ini adalah informasi kunci yang dibutuhkan seorang
hacker sebelum melanjutkan serangan.

Exceptions dan Password Crackers


Kode apa pun yang Anda tulis akan berisiko error atau exceptions. Di istilah
pemrograman, exceptions adalah segala sesuatu yang mengganggu normal aliran kode Anda
— biasanya kesalahan yang disebabkan oleh kode atau input yang salah. Untuk menangani
kemungkinan kesalahan, kami menggunakan exception handling, yang hanya kode yang

197
menangani masalah tertentu, menyajikan pesan kesalahan, atau bahkan menggunakan
pengecualian untuk pengambilan keputusan. Dengan Python, kita harus mencoba / kecuali
struktur untuk menangani error atau exception ini.
Sebuah try blok mencoba untuk mengeksekusi beberapa kode, dan jika kesalahan
terjadi, pernyataan except menangani error itu. Dalam beberapa kasus, kita dapat
menggunakan try / except struktur untuk pengambilan keputusan, mirip dengan if ...
else. Misalnya, kita bisa gunakan try / except dalam cracker kata sandi untuk mencoba kata
sandi dan, jika ada kesalahan terjadi karena kata sandi tidak cocok, pindah ke kata sandi
berikutnya dengan yang pernyataan except. Mari kita coba sekarang.
Masukkan kode dibawah dan simpan sebagai ftpcracker.py. Script ini meminta
pengguna untuk server FTP nomor dan nama pengguna akun FTP mana saja yang ingin
mereka crack. Kemudian membaca dalam file teks eksternal yang berisi daftar kata sandi yang
mungkin dan mencoba masing-masing dalam upaya untuk masuk ke akun FTP. script
melakukan ini sampai berhasil atau kehabisan kata sandi.

#! /usr/bin/python3
import ftplib

➊ server = input(FTP Server: ")

➋ user = input("username: ")

➌ Passwordlist = input ("Path to Password List > ")

➍ try:
with open(Passwordlist, 'r') as pw:
for word in pw:

➎ word = word.strip ('\r').strip('\n')

➏ try:
ftp = ftplib.FTP(server)
ftp.login(user, word)

➐ print (Success! The password is ' + word)

➑ except:
print('still trying...')
except:
print ('Wordlist error')

Kita akan menggunakan alat dari modul ftplib untuk protokol FTP, jadi pertama kita
impor itu. Selanjutnya, kita membuat variabel bernama server dan variabel lain

198
bernama user, yang akan menyimpan beberapa perintah untuk pengguna memasukkan. Skrip
Anda akan meminta user untuk memasukkan alamat IP FTP server ➊ dan nama user untuk
akun ➋ yang coba didobrak pengguna.

Kemudian kami meminta pengguna untuk jalur ke daftar kata sandi ➌. Kamu dapat
menemukan banyak daftar kata sandi di Kali Linux dengan memasukkan temukan daftar
kata dalam sebuah terminal.
Kami kemudian memulai blok kode coba yang akan menggunakan daftar kata sandi
disediakan oleh pengguna untuk mencoba memecahkan kata sandi untuk nama pengguna
disediakan oleh pengguna.

Perhatikan bahwa kami menggunakan fungsi Python baru yang disebut strip () ➎. Ini
fungsi menghapus karakter pertama dan terakhir dari suatu string (dalam hal ini, the Daftar
Kata Sandi). Ini diperlukan jika kata sandi dalam daftar ini sebelumnya spasi putih atau
koma. Fungsi strip () menghilangkan ini dan membiarkannya serangkaian karakter kata sandi
potensial. Jika kita tidak menghapusnya whitespace, kita mungkin mendapatkan false
negative.

Kemudian, kami menggunakan blok try ➏ kedua. Di sini, kami menggunakan modul
ftplib untuk pertama-tama sambungkan ke server menggunakan alamat IP yang diberikan
pengguna dan kemudian coba kata sandi berikutnya dari daftar kata sandi pada akun itu.
Jika kombinasi nama pengguna dan kata sandi menghasilkan kesalahan, blok keluar
dan menuju ke except clause ➑, di mana ia mencetak masih mencoba dan kemudian kembali
ke atas for clausa dan mengambil kata sandi berikutnya dari daftar kata sandi untuk mencoba.

Jika kombinasi berhasil, kata sandi yang berhasil dicetak ke layar ➐. Baris terakhir
mengambil situasi lain yang mungkin jika tidak menghasilkan kesalahan. Contohnya adalah
jika input pengguna sesuatu yang tidak bisa diproses oleh program, seperti jalur buruk ke
daftar kata atau daftar kata yang hilang.
Sekarang, mari kita jalankan skrip ini terhadap server FTP di 192.168.1.101 dan lihat
apakah kita dapat memecahkan kata sandi pengguna root. Saya menggunakan sebuah daftar
kata sandi bernama bigpasswordlist.txt di direktori kerja saya. Kamu boleh perlu memberikan
seluruh jalur ke daftar kata sandi mana pun yang Anda gunakan jika Itu Adalah tidak di
direktori kerja anda (untuk contoh, /usr/share/bigpasswordlist.txt).

kali >./ftpcracker.py
FTP Server: 192.168.1.101
username: root
Path to PasswordList >bigpasswordlist.txt
still trying...
still trying...

199
still trying...
--snip--

Success! The password is toor


Seperti yang Anda lihat, ftpcracker.py berhasil menemukan kata sandi untuk
root pengguna dan menyajikannya di layar.

200
Referensi
ahmadfihris, 2014. Pengertian Partisi Root, Home, dll. [Online]
Available at: https://pinguinunix.wordpress.com/2014/03/14/pengertian-partisi-root-home-user-
binary-library-dan-lainnya-pada-linux/
[Diakses 27 juni 2020].

DigazumXyz, 2019. Cracking WPA2-PSK Password Wi-FI dengan Aircrack-ng. [Online]


Available at: https://digazumxyz.blogspot.com/2019/06/cracking-wpa2-psk-password-wi-fi-
dengan.html
[Diakses 4 agustus 2020].

Fadhli, 2015. merahputih. [Online]


Available at: https://merahputih.com/post/read/kenapa-hacker-nyaman-menggunakan-linux
[Diakses 26 juni 2020].

fajar, 2012. pengantar pemrograman bash shell di linux. [Online]


Available at: https://pemula.linux.or.id/programming/bash-shell.html
[Diakses 17 juli 2020].

feradhita, 2019. LogiqueBlog. [Online]


Available at: https://www.logique.co.id/blog/2019/11/20/apa-itu-ethical-hacker/
[Diakses 26 Juni 2020].

haris, 2018. Bagaimana Cara Kompres dan Ekstrak File di Command Linux. [Online]
Available at: https://www.hostingpangeran.co.id/blog/cara-compress-dan-ekstrak/
[Diakses 17 juli 2020].

Jha, S., 2020. SHAILESHJHA.com. [Online]


Available at: https://www.shaileshjha.com/how-to-install-kali-linux-in-vmware-player-vmware-
tools/
[Diakses 27 juni 2020].

kumar, h., 2019. Basic Linux Commands For Text Manipulation. [Online]
Available at: https://www.terminalbytes.com/basic-linux-commands-text-manipulation/
[Diakses 1 juli 2020].

Mulyadi, 2018. kompasiana. [Online]


Available at: https://www.kompasiana.com/moengil/5a4ae2655e13736b135dd7e3/bagaimana-
melakukan-penetration-testing
[Diakses 26 juni 2020].

OccupyTheWeb, 2019. analyzing and managing networks. Dalam: Linux Basics For Hacker. san
fancisco: no starch press, p. chapter 3.

Porup, J., 2020. 8 steps to being completely anonymous online. [Online]


Available at: https://www.csoonline.com/article/2975193/9-steps-completely-anonymous-
online.html
[Diakses 3 agustus 2020].

Yasin, 2018. perintah dasar linux. [Online]


Available at: https://www.niagahoster.co.id/blog/perintah-dasar-linux/
[Diakses 27 juni 2020].

201
yasin, 2019. manjemen proses linux. [Online]
Available at: https://www.niagahoster.co.id/blog/manajemen-proses-linux/
[Diakses 8 juli 2020].

202

Anda mungkin juga menyukai