Dasar Linux Untuk Hacking
Dasar Linux Untuk Hacking
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)
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)
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
Jika terkendala dengan file torrent, sangat disarankan untuk terlebih dahulu menginstall
qbittorrent di https://www.qbittorrent.org/download.php.
10
STEP – 3 Buka VMWare Player
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.
19
STEP – 10 Start Virtual Machine
Sekarang kamu harus mengklik pada play machine virtual untuk memulai proses.
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.
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.
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.
25
Dalam kotak dialog ini Anda diminta untuk memilih disk untuk partisi. Pilih sda, disk
VMware Virtual. Seharusnya hanya ada satu opsi. Klik Lanjutkan.
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.
27
STEP – 23 Tunggu Proses Installasi
Sekarang instalasi sebenarnya dimulai. Tunggu hingga muncul kotak dialog Package
Manager untuk muncul.
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.
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.
Setelah VM dimulai, Anda akan melihat boot loader Grub. Pilih Kali GNU / Linux.
30
Masukkan nama pengguna dan kata sandi Anda
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.
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
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:
misalnya:
perintah chown juga dapat digunakan dengan menggunakan parameter R, contohnya adalah
sebagai berikut:
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
# 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
$ less namafile
46
Options untuk `diff`:
-i abaikan perbedaan huruf dalam garis.
-w abaikan semua white space.
-y menunjukkan perbedaan berdampingan dalam dua kolom.
$ sort -u karyawan_id.txt
$ sort -u -r karyawan_id.txt
Urutkan semua nama unik yang mengandung ‘H 'dalam file nama karyawan yang diberikan.
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.
$ head -n 10 karyawan_nama.txt
$ tail -n 10 karywan_nama.txt
$ tail -f server.log
Melihat update realtime log yang di tambahkan di file dengan output filter yang berisi string
‘ERROR’ saja.
-i Ignore case for the search string, match all the upper case, lower case or mixed
occurrences.
Usage: grep -i john names.txt
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,
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.
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.
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:
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.
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.
53
palsu yang baru. Akhirnya, bawa interface cadangan dengan opsi up untuk perubahan terjadi.
Ini dia sebuah contoh:
Sekarang, ketika Anda memeriksa pengaturan Anda dengan ifconfig, Anda akan
melihatnya HWaddr telah berubah menjadi alamat IP palsu Anda yang baru!
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.
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
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
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:
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):
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:
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:
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:
Menghapus Software
Ketika ingin menghapus sebuah software, gunakan kembali apt-get dengan opsi
remove, sintaksnya terlihat seperti ini:
Namun jika kalian ingin menghapus total bisa menggunakan perintah berikut
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.
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.
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
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:
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:
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
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.
67
Parent Processes
Proses yang membuat proses lain pada saat run-time.
Child Processes
Proses yang dibuat oleh proses lain pada saat run-time.
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
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.
69
-s Secure-mode operation: Menjalankan “top” dengan mode secure.
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.
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.
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
71
Anda juga dapat menyaring kolom mana saja yang ingin ditampilkan menggunakan perintah
di bawah ini.
$ ps -e -o pid,uname,pcpu,pmem,comm
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”.
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.
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.
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.
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:
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.
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.
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:
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:
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 >HISTSIZE=1000
Cuplikan kode ini akan menetapkan nilai variabel HISTSIZE Anda menjadi 1.000 dan
ekspor ke semua environment Anda.
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.
kali >PATH=$PATH:/root/newhackingtool
/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.
kali >PATH=/root/newhackingtool
/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
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
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
[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
[fajar@linux$]bash
84
sekarang coba anda ketikkan perintah dibawah ini pada prompt shell
echo "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"
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:.
[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
#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
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 :
[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
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:
\d date dengan format "Weekday Month Date" (misalnya "Tue May 26")
\H hostname (namahost)
\w Direktory aktif
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
Hasilnya
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
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:
• #!/bin/bash
•
• nama="pinguin"
• kata='Hi $nama, apa khabarmu' #menyisipkan variabel nama
• echo $kata;
Hasilnya:
• 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;
#!/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`
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;
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:
#!/bin/bash
#pr1
url="pemula.linux.or.id";
angka=32;
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
%o octal
%x Hexadecimal
pada script diatas %.2f akan mencetak 2 angka dibelakang koma, defaultnya 6
angka, informasi lebih lanjut dapat dilihat via man printf
#!/bin/bash
#rd1
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
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)
\033[warnam
Dimana:
m menandakan setting color
contohnya:
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$]
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
• \033[baris;kolomH
• \033[NA
• \033[NB
• \033[NC
• \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"
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
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
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
-f FILE Mengembalikan Benar jika FILE ada dan merupakan file biasa
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
Hasilnya:
[fajar@linux$]./if1
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
Hasilnya:
[fajar@linux$]./if3
MENU HARI INI
-------------
1. Bakso
2. Gado-Gado
3. Exit
Pilihan anda :2
Banyak porsi = 2
103
2.2. statement builtin case
seperti halnya if statement case digunakan untuk menyeleksi kondisi majemuk,
dibanding if, pemakaian case terasa lebih efisien
syntax:
#!/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:
105
satu
2
tiga
#!/bin/bash
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.
#!/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
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
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
#!/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.
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
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:
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
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
#clear
i=0;
114
while [ $i -le 4 ];
do
let isi=$i*2;
angka[$i]=$isi;
let i=$i+1;
done
Hasilnya:
[fajar@linux$]./array3
0 2 4 6 8
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;
Hasilnya:
[fajar@linux$]./fungsi1
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 ?";
}
Hasilnya:
[fajar@linux$]./fungsi2
Hello, apa khabar
Baik-baik saja
Bagaimana dengan anda ?
#!/bin/bash
function hello{
if [ -z $1 ]; then
echo "Hello, apa khabar anda"
else
echo "Hello $1, apa khabar";
fi
117
}
#panggil fungsi dan kirim isi variabel nama ke fungsi untuk dicetak
hello $nama;
Hasilnya:
[fajar@linux$]./fungsi3
Nama anda : pinguin
Hello pinguin, apa khabar
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:
proses(){
local a;
echo -e "a didalam fungsi, a=$a";
}
a=10;
proses()
Hasilnya:
a didalam fungsi, a=
a diluar fungsi, a=10
a didalam fungsi a=
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;
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
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"
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.
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:
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:
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:
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:
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.
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.
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.
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.
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:
➊ weekly
# keep 4 weeks worth of backlogs
➋ rotate 4
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:
/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:
--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:
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:
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
Jadi, untuk menghentikan daemon logging, Anda bisa memasukkan yang berikut ini
perintah:
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
Untuk memulai service apache2 (server web atau layanan HTTP), Anda ketikkan
perintah:
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:
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.
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:
142
Seperti yang Anda lihat, Apache menampilkan "It works" sebagai halaman web
standarnya. Sekarang Anda tahu Server Web Apache Anda berfungsi, mari sesuaikan Itu!
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.
<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:
145
mysql >
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 >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:
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:
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:
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:
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:
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.
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.
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.
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.
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.
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.
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
--snip--
lo Linkencap:Local Loopback
--snip--
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:
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.)
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:
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:
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:
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
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?
(DigazumXyz, 2019)
165
memberi Anda beberapa pengetahuan dasar yang akan membantu Anda memindai dan
terhubung ke perangkat Bluetooth dalam persiapan untuk meretasnya.
• 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.
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:
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:
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.
Usage:
Options:
Commands
168
scan Scan for 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.
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:
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.
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:
Di sini Anda dapat melihat bahwa file / proc / version mengembalikan informasi yang sama.
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 -
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:
174
############################################### ############ 3
# Fungsi sebelumnya ditemukan di netbase
#
# Batalkan komentar dua baris berikutnya untuk mengaktifkan perlindungan Spoof (jalur
terbalik)
➊ # 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.
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.
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.
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:
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:
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:
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/.
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:
Sekarang, untuk mengunduh modul dari PyPI, Anda cukup memasukkan ini:
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:
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:
Ini akan menginstal semua paket yang belum dikemas yang belum diinstal.
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> cd python-nmap-.03.4 /
Akhirnya, dalam direktori itu, instal modul baru dengan memasukkan berikut:
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.
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 .
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.
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)
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
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.
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.
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.
#! /usr/bin/python3
➊ import socket
➋ s = socket.socket()
➌ s.connect(("192.168.1.101", 22))
➍ answer = s.recv(1024)
➎ print (answer)
s.close
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.
#! /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)
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
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:
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:
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
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:
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]
➌ Ports = Port[i]
print ('This Is the Banner for the Port')
print (Ports)
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
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
➍ try:
with open(Passwordlist, 'r') as pw:
for word in pw:
➏ try:
ftp = ftplib.FTP(server)
ftp.login(user, 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--
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].
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].
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].
OccupyTheWeb, 2019. analyzing and managing networks. Dalam: Linux Basics For Hacker. san
fancisco: no starch press, p. chapter 3.
201
yasin, 2019. manjemen proses linux. [Online]
Available at: https://www.niagahoster.co.id/blog/manajemen-proses-linux/
[Diakses 8 juli 2020].
202