🧩 1.
Model OSI (Open Systems Interconnection)
Model OSI adalah kerangka konseptual yang menggambarkan bagaimana data berpindah
dari satu perangkat ke perangkat lain dalam jaringan.
Ada 7 lapisan (layer) dari bawah ke atas:
Layer Nama Fungsi Utama
7 Application Tempat aplikasi berinteraksi (contoh: browser, email client)
6 Presentation Format data, enkripsi, kompresi (contoh: SSL/TLS, ASCII, JPEG)
5 Session Mengatur sesi komunikasi (login, logout, dll)
4 Transport Mengatur pengiriman data antar host (TCP/UDP)
3 Network Menentukan rute (routing) dan alamat IP
2 Data Link Menangani alamat MAC dan frame data
1 Physical Transmisi sinyal fisik (kabel, gelombang, listrik)
🧠 Analogi:Bayangkan kamu mengirim surat lewat pos.
Layer 7–5: kamu menulis surat dan memasukkannya ke amplop.
Layer 4–3: menentukan jalur ke tujuan (alamat rumah, kode pos).
Layer 2–1: surat dikirim lewat kendaraan fisik.
2. TCP/IP (Transmission Control Protocol / Internet Protocol)
Model TCP/IP adalah versi praktis dari OSI yang benar-benar digunakan di dunia nyata.
TCP/IP punya 4 layer utama:
Model TCP/IP Fungsi Contoh Protokol
4. Application Komunikasi antar aplikasi HTTP, FTP, DNS, SMTP
3. Transport Pemecahan & pengiriman paket data TCP, UDP
2. Internet Penentuan alamat dan rute IP, ICMP
1. Network Access Transmisi fisik Ethernet, Wi-Fi
🧭 Hubungan TCP/IP dengan OSI:
OSI layer 7–5 ≈ TCP/IP Application
OSI layer 4 ≈ TCP/IP Transport
OSI layer 3 ≈ TCP/IP Internet
OSI layer 2–1 ≈ TCP/IP Network Access
3. Cara TCP/IP Bekerja (Secara Sederhana)
Misalnya kamu buka situs [Link]
1. Browser kirim permintaan ke DNS untuk tahu IP address [Link].
→ (pakai protokol DNS, di layer Application)
2. DNS server balas: “Alamat IP [Link] adalah [Link].”
3. Browser membuka koneksi TCP ke [Link] di port 443 (HTTPS).
→ (pakai TCP, layer Transport)
4. TCP memecah data jadi paket kecil dan memastikan semua sampai utuh dan urut.
Jika paket hilang, dikirim ulang (inilah kelebihan TCP dibanding UDP).
5. IP menentukan rute paket-paket itu ke tujuan di internet (routing).
6. Server menerima paket, menyusunnya kembali, dan mengirimkan halaman web.
7. Browser menampilkan isi halaman ke kamu 🎉
🔒 4. HTTP dan HTTPS
Aspek HTTP HTTPS
Kepanjangan HyperText Transfer Protocol HyperText Transfer Protocol Secure
Port default 80 443
Keamanan Tidak terenkripsi Terenkripsi dengan SSL/TLS
Transfer data web (HTML, CSS, Transfer data web aman dari
Fungsi
gambar) penyadapan
🔑 HTTPS bekerja dengan sertifikat digital (SSL/TLS) yang memastikan:
1. Identitas server asli (bukan palsu).
2. Data antara browser dan server terenkripsi.
3. Tidak bisa diubah di tengah jalan (integritas data).
🧭 5. DNS (Domain Name System)
DNS adalah “buku telepon internet”.
Fungsi: mengubah nama domain (misal [Link]) menjadi alamat IP (misal
[Link]).
📜 Alur sederhana:
1. Kamu buka [Link]
2. Komputer tanya ke DNS Resolver lokal: “IP [Link] berapa?”
3. Resolver tanya ke Root Server, lalu ke TLD Server (.com), lalu ke Authoritative Server
([Link])
4. DNS server menjawab IP-nya.
5. Komputer menyimpan (cache) hasilnya, supaya akses berikutnya lebih cepat.
Rangkuman Gampang
Konsep Fungsi Utama
Model OSI Konsep teoritis 7 lapisan jaringan
TCP/IP Model praktis 4 lapisan untuk internet
HTTP/HTTPS Protokol komunikasi web
DNS Mengubah nama domain menjadi alamat IP
TCP Menjamin data sampai dengan aman dan urut
IP Menentukan alamat dan jalur pengiriman data
Bagus — saya buat penjelasan lengkap tapi tetap praktis tentang dasar jaringan: TCP/IP,
NAT, port, firewall, plus contoh nyata dan perintah yang bisa dicoba. Saya tulis dalam bahasa
Indonesia, langkah demi langkah dan disertai contoh angka/diagram supaya gampang
dimengerti.
TCP/IP — gambaran umum
TCP/IP adalah sekumpulan protokol yang dipakai internet untuk mengirim data antar
perangkat. Sering digambarkan dalam 4 lapisan utama:Link (Network Interface) — hardware
& protokol lokal (Ethernet, Wi-Fi).Internet — IP (Internet Protocol): alamat & pengiriman
paket antar [Link] — TCP (reliable, connection-oriented) dan UDP (fast,
connectionless).Application — HTTP, DNS, SMTP, dsb.
IP (Internet Protocol)
IPv4: alamat 32-bit, contoh [Link]. Ditulis dalam 4 oktet desimal.
Subnet mask / CIDR menentukan ukuran jaringan, mis. /24 = mask [Link].
Contoh subnetting (harus dihitung langkah demi langkah)
Ambil jaringan [Link]/24:
Panjang prefix = 24 → sisa host bits = 32 − 24 = 8.
Jumlah alamat total = 2^8 = 256.
Alamat network = [Link].
Alamat broadcast = [Link].
Alamat host usable = [Link] sampai [Link].
Jumlah host usable = 256 − 2 = 254.
Contoh /30 (dipakai untuk link point-to-point):
Sisa host bits = 32 − 30 = 2 → total alamat = 2^2 = 4.
Host usable = 4 − 2 = 2 (cukup untuk dua perangkat di kedua ujung link).
Perintah/troubleshooting IP dasar
ping [Link] — cek konektivitas IP.
ipconfig /all (Windows) atau ifconfig / ip addr show (Linux) — lihat alamat IP.
traceroute [Link] (Linux) / tracert [Link] (Windows) — lihat jalur paket.
nslookup [Link] atau dig [Link] — cek DNS.
TCP vs UDP (konsep + contoh)
TCP (Transmission Control Protocol)
Connection-oriented: sebelum data dikirim ada handshake 3 langkah (SYN, SYN-ACK,
ACK).
Menjamin pengiriman berurutan dan retransmisi bila hilang.
Contoh aplikasi: HTTP(S) (port 80/443), SSH (22), SMTP (25).
UDP (User Datagram Protocol)
Connectionless: tidak ada handshake, lebih ringan dan cepat.
Tidak menjamin pengiriman / urutan.
Contoh aplikasi: DNS (biasanya UDP/53), VoIP, streaming video, DHCP (client/server
67/68).
TCP 3-way handshake (step by step)
1. Client → Server: SYN (minta koneksi).
2. Server → Client: SYN-ACK (terima & setuju).
3. Client → Server: ACK (konfirmasi).
Setelah itu data dapat dikirim. Tutup koneksi biasanya lewat FIN/ACK exchange.
Port — apa dan contoh
Port adalah angka (0–65535) yang mengidentifikasi aplikasi pada host.
Dibagi jadi:
o Well-known ports: 0–1023 (HTTP 80, HTTPS 443, SSH 22, DNS 53).
o Registered: 1024–49151 (aplikasi terdaftar).
o Dynamic/Ephemeral: 49152–65535 (dipakai klien saat membuat koneksi
keluar).
Contoh: ketika browser ke [Link] client menggunakan ephemeral port (mis.
55000) dan menghubungi server di port 80. Lalu paket berisi info port sumber/destinasi.
Perintah untuk melihat port yang digunakan:
netstat -tuln (Linux) — list TCP/UDP yang mendengarkan.
ss -tulpn (Linux modern) — lebih detail.
netstat -ano (Windows) — lihat PID + port.
NAT (Network Address Translation)
NAT mengubah alamat IP sumber/destinasi paket saat lewat router, umum pada
rumah/kantor untuk pakai 1 alamat publik.
Tipe NAT utama:
1. Static NAT — satu alamat privat ↔ satu alamat publik (1:1).
2. Dynamic NAT — pool alamat publik, satu-satu sewaktu terpakai.
3. PAT (Port Address Translation) a.k.a NAT Overload — banyak alamat privat
dipetakan ke 1 alamat publik menggunakan nomor port berbeda (paling umum di
rumah).
Contoh PAT (rumah)
Komputer A [Link]:50000 → router NAT → publik [Link]:40001.
Komputer B [Link]:50001 → router NAT → publik [Link]:40002.
Router menyimpan tabel NAT: (private IP:port) ↔ (public IP:port). Saat paket
balasan datang ke [Link]:40001, router tahu untuk meneruskannya ke
[Link]:50000.
Port forwarding (NAT + aturan)
Jika kamu punya server di belakang NAT dan ingin orang luar mengakses (mis. web server di
port 80), router perlu aturan port forwarding:
External [Link]:80 → Internal [Link]:80.
Firewall — konsep & contoh
Firewall memfilter trafik berdasarkan aturan (IP, port, protocol, state). Ada:
Stateless firewall: filter per-paket tanpa konteks.
Stateful firewall: melacak koneksi (mis. mengizinkan paket balasan).
Contoh aturan singkat (iptables — Linux)
Catatan: contoh ini untuk tujuan pembelajaran. Jalankan hanya jika paham konsekuensinya.
Izinkan SSH, HTTP, HTTPS, drop sisanya:
# flush rules (hati-hati)
sudo iptables -F
# default drop incomingsudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# allow loopbacksudo iptables -A INPUT -i lo -j ACCEPT
# allow established/related (balasan koneksi)sudo iptables -A INPUT -m conntrack --ctstate
ESTABLISHED,RELATED -j ACCEPT
# allow SSHsudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
# allow HTTP and HTTPSsudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW
-j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
Penjelasan singkat:
Baris ESTABLISHED,RELATED memungkinkan paket balasan masuk (penting untuk
stateful firewall).
--dport = destination port.
Contoh Windows (power shell / netsh)
Izinkan RDP (3389):
# PowerShell run as admin
New-NetFirewallRule -DisplayName "Allow RDP" -Direction Inbound -Protocol TCP -LocalPort
3389 -Action Allow
Contoh skenario end-to-end (rumah / kantor kecil)
Skenario 1 — Internet di rumah (PAT)
ISP memberikan 1 alamat publik [Link].
Router di rumah pakai NAT/PAT, private network [Link]/24.
Laptop ([Link]) akses YouTube → source port ephemeral, NAT menerjemah →
akses sukses.
Inbound: jika ingin akses kamera IP di [Link]:8080, lakukan port forwarding di
router: [Link]:8080 → [Link]:8080.
Skenario 2 — Server di DMZ kantor
Kantor punya firewall yang memisah jaringan publik (DMZ) dan internal.
Web server di DMZ ([Link]) hanya buka port 80/443 ke publik. Database server di
jaringan internal sama sekali tidak langsung diekspos.
Praktik aman & tips
Jangan buka port yang tidak perlu. Prinsip: least privilege (hanya izinkan apa yang
diperlukan).
Gunakan HTTPS, dan untuk akses remote gunakan VPN+2FA (jangan langsung buka
SSH/RDP ke publik tanpa proteksi).
Monitor log firewall (/var/log/ atau syslog) untuk trafik mencurigakan.
Untuk debugging: tcpdump/wireshark (paket capture) — pakai dengan bijak (data
sensitif).
Ringkasan singkat tiap bagian
TCP/IP = model & protokol dasar Internet (IP untuk alamat; TCP/UDP untuk
transport).
NAT = terjemahkan alamat privat ↔ publik; PAT memungkinkan banyak privat pakai
1 publik.
Port = pintu untuk aplikasi; angka 0–65535; well-known (0–1023).
Firewall = aturan filter jaringan; stateful lebih pintar karena melacak koneksi.
Kalau mau, saya bisa:
Buat latihan subnetting (5 soal dengan pembahasan langkah demi langkah).
Tunjukkan contoh konfigurasi port forwarding di merk router tertentu (mis. TP-Link /
Mikrotik) — kalau mau sebut merk/model router.
Atau buat cheat-sheet perintah (Linux/Windows) untuk troubleshooting jaringan.
Mau lanjut ke latihan atau ada bagian yang ingin diperdalam dulu?
You said:
cara lihat ip yang terkoneksi dalam satu jaringan
ChatGPT said:
Bagus banget pertanyaannya 💡 — ini penting banget buat belajar jaringan!
Kita bahas cara melihat IP yang terkoneksi dalam satu jaringan LAN/Wi-Fi, baik di
Windows, Linux, Android, maupun router langsung. Saya kasih contoh dan perintahnya biar
bisa langsung dicoba.
1. Cara Melihat IP yang Terhubung (Windows)
🔹 Langkah dasar:
1. Buka Command Prompt (CMD).
→ Tekan Win + R, ketik cmd, [Link]:
2. arp -a
Contoh output:
Interface: [Link] --- 0x7
Internet Address Physical Address Type
[Link] 00-1a-2b-3c-4d-5e dynamic
[Link] 80-2a-a8-5d-33-22 dynamic
[Link] 14-cc-20-9a-bf-10 dynamic
➜ Artinya:
o Internet Address = IP di jaringanmu
o Physical Address = MAC address perangkat
o Type = apakah dynamic (DHCP) atau static
⚠️Catatan: arp -a hanya menampilkan perangkat yang baru saja berkomunikasi dengan PC
kamu.
Kalau ingin scan semua IP aktif, lanjut ke cara berikut.
2. Scan Semua IP dalam Jaringan (Windows / Linux)
🔹 Dengan ping sweep (manual)
Misal jaringan kamu [Link]/24
Ketik di CMD:
for /l %i in (1,1,254) do @ping 192.168.1.%i -n 1 -w 200 >nul && echo 192.168.1.%i aktif
Penjelasan:
-n 1 → ping sekali saja
-w 200 → timeout 200 ms
Menampilkan IP yang merespons “aktif”
Hasil contoh:
[Link] aktif
[Link] aktif
[Link] aktif
[Link] aktif
🔹 Dengan nmap (lebih cepat dan detail)
1. Instal nmap.
2. Jalankan di CMD / PowerShell:
3. nmap -sn [Link]/24
Contoh hasil:
Nmap scan report for [Link] (Router)
Nmap scan report for [Link] (Laptop)
Nmap scan report for [Link] (Smartphone)
➜ -sn artinya hanya “ping scan” tanpa port scan, jadi aman.
🐧 3. Di Linux / macOS
Perintah sama, tapi lebih sederhana:
sudo arp -a
Atau gunakan nmap:
sudo nmap -sn [Link]/24
Kalau mau cepat banget:
fping -a -g [Link]/24 2>/dev/null
(fping lebih cepat, tapi harus diinstal dulu.)
📱 4. Di Android / iPhone
Gunakan aplikasi gratis seperti:
Fing – Network Tools (paling populer)
IP Scanner
NetX Network Tools
Langkah:
1. Buka aplikasi → otomatis mendeteksi subnet (mis. [Link]/24).
2. Tap “Scan”.
3. Hasilnya muncul daftar perangkat:
4. [Link] - Router - TP-Link
5. [Link] - Laptop ASUS
6. [Link] - HP Vivo
7. [Link] - Smart TV
🌐 5. Melalui Router Langsung (paling akurat)
1. Masuk ke halaman admin router (biasanya [Link] atau [Link]).
2. Login (username/password default: admin/admin atau sesuai ISP).
3. Cari menu:
o Device List / DHCP Clients / Attached Devices
4. Di sana muncul daftar IP + MAC + nama perangkat.
Contoh:
Device Name IP Address MAC Address Status
Router [Link] 00:1A:2B:3C:4D:5E Online
Device Name IP Address MAC Address Status
Laptop-ASUS [Link] 80:2A:A8:5D:33:22 Online
HP-Vivo [Link] 14:CC:20:9A:BF:10 Online
⚙️Tips Tambahan
Pastikan kamu tahu alamat subnet: cek dengan ipconfig (Windows) atau ip addr
(Linux).
Contoh: jika IP kamu [Link]/24, berarti range yang aktif [Link]–
[Link].
Gunakan nmap atau “Fing” untuk hasil paling lengkap.
Kalau perangkat tidak muncul di daftar, bisa jadi pakai firewall, mode stealth, atau
tidak aktif ICMP reply.
Kalau kamu mau, saya bisa bantu tulis script otomatis (Windows atau Linux) untuk
menampilkan semua IP yang aktif, lengkap dengan nama perangkatnya (hostname dan
vendor MAC).
Apakah kamu ingin versi Windows CMD, PowerShell, atau Linux Bash?
You said:
oke
ChatGPT said:
Sip — aku buatkan langsung 3 versi script/cara otomatis yang bisa kamu jalankan:
PowerShell (Windows, rapi & modern), Batch/CMD (Windows, sederhana), dan Bash
(Linux/macOS). Semua sudah diberi penjelasan singkat + cara menjalankannya. Pilih yang
cocok dan tinggal copy–paste.
1) PowerShell (Windows) — rekomendasi
Script ini memanfaatkan Get-NetNeighbor + Resolve-DnsName untuk menampilkan IP, MAC,
dan hostname (kalau tersedia). Jalankan PowerShell sebagai Administrator.
# simpan sebagai list-devices.ps1 lalu jalankan: powershell -ExecutionPolicy Bypass -File .\
list-devices.ps1
# Ambil daftar neighbour ARP (IPv4)
$neigh = Get-NetNeighbor -AddressFamily IPv4 | Where-Object { $_.State -ne "Unreachable"
}
# Hasil struktur
$results = foreach ($n in $neigh) {
$ip = $[Link]
$mac = $[Link]
# Coba resolve hostname (jika ada), timeout cepat
$hostname = ""
try {
$dns = Resolve-DnsName -Name $ip -ErrorAction Stop -Server [Link]
$hostname = ($[Link] -join ", ")
} catch { $hostname = "" }
[PSCustomObject]@{
IPAddress = $ip
MAC = $mac
Hostname = $hostname
State = $[Link]
# Tampilkan tabel
$results | Sort-Object IPAddress | Format-Table -AutoSize
# (opsional) simpan ke CSV
$results | Export-Csv -Path .\devices_in_lan.csv -NoTypeInformation
Write-Host "Hasil juga disimpan ke devices_in_lan.csv (jika berhasil)."
Penjelasan singkat:
Get-NetNeighbor baca tabel ARP lokal (siapa yang pernah berkomunikasi).
Resolve-DnsName coba dapatkan nama host.
Simpan CSV supaya gampang dibuka di Excel.
2) Batch / CMD (Windows) — ping sweep sederhana
Mudah dijalankan di Command Prompt. Ganti subnet jika perlu (contoh 192.168.1.x).
@echo off
setlocal enabledelayedexpansion
REM Ganti prefix sesuai jaringanmu, mis. 192.168.1
set PREFIX=192.168.1
echo Scanning %PREFIX%.0/24 ... tunggu sebentar
for /L %%i in (1,1,254) do ( ping -n 1 -w 200 %PREFIX%.%%i >nul if !errorlevel! EQU 0 (
echo %PREFIX%.%%i aktif
echo Selesai.
pause
Catatan:
Ini hanya menampilkan IP yang merespon ICMP (ping). Beberapa perangkat memblok
ICMP jadi tidak muncul.
Untuk hasil lebih lengkap gunakan nmap -sn (lihat bagian Linux).
3) Bash (Linux / macOS) — pakai nmap atau arp-scan
Dua opsi: (A) nmap ping scan; (B) arp-scan (lebih akurat untuk LAN).
A) nmap (instal nmap dulu)
# contoh: sudo apt install nmap (Debian/Ubuntu)
sudo nmap -sn [Link]/24
Output akan menampilkan daftar IP aktif dan (kadang) hostname/device type.
B) arp-scan (butuh instal)
# instal di Debian/Ubuntu:
sudo apt update && sudo apt install arp-scan
# jalankan (ganti interface jika perlu, atau biarkan auto)
sudo arp-scan --localnet
arp-scan mengembalikan IP, MAC, dan vendor NIC (membantu identifikasi perangkat).
Contoh output yang mungkin kamu lihat
PowerShell tabel:
IPAddress MAC Hostname State
----------- ---------------- ------------- -------
[Link] 00-1A-2B-3C-4D-5E [Link] Reachable
[Link] 80-2A-A8-5D-33-22 LAPTOP-ASUS Reachable
[Link] 14-CC-20-9A-BF-10 PHONE-VIVO Reachable
nmap:
Nmap scan report for [Link]
Host is up (0.025s latency).
Nmap scan report for [Link]
Host is up (0.010s latency).
arp-scan:
[Link] 00:1a:2b:3c:4d:5e Cisco Systems, Inc
[Link] 80:2a:a8:5d:33:22 ASUSTek COMPUTER INC.
Tips & troubleshooting singkat
Jika hasil sedikit/kurang lengkap:
o Jalankan sebagai Administrator / root.
o Beberapa perangkat memblok ICMP → gunakan nmap -sn atau arp-scan.
o Jika kamu ingin nama perangkat lebih jelas, cek DHCP client list di halaman
admin router (paling akurat).
Ingin hasil disimpan? PowerShell script sudah menyimpan CSV; untuk nmap
tambahkan -oG [Link] atau -oX untuk XML.
Bagus — aku akan memberi teori + contoh yang aman & edukatif untuk tiap buku yang
kamu sebutkan, beserta source code / script yang bisa kamu pakai hanya di lab terisolasi
(VM / mesin milikmu sendiri).
PENTING: semua contoh di bawah dibuat untuk tujuan pembelajaran. Jangan gunakan untuk
menyerang sistem tanpa izin tertulis. Jalankan hanya di lingkungan latihan seperti VM
Kali/Ubuntu + target VM (Metasploitable, OWASP Juice Shop, WebGoat) atau mesin yang
kamu buat sendiri.
Aku susun tiap bagian: ringkasan teori → contoh kode rentan (lab) → cara memperbaiki /
analisis → skrip bantu. Langsung saja.
The Web Application Hacker’s Handbook — konsep + contoh (web vuln)
Teori singkat
Fokus: bagaimana aplikasi web menerima input, memproses, menyimpan, dan
mengeluarkan data. Kerentanan muncul saat validasi/escaping/auth/session salah.
Contoh umum: SQL Injection, XSS, CSRF, insecure direct object references (IDOR).
Prinsip utama: trust nothing, validate & escape everywhere, use least privilege,
enforce auth/ACL, gunakan parameterized queries.
Contoh (aman untuk lab)
1. Contoh rentan SQL (PHP + MySQL) — [Link]
Jalankan hanya di lab.
<?php
// [Link] — contoh yang TIDAK aman (untuk demonstrasi)
// Database: contoh sederhana, gunakan di VM lab
$host = '[Link]';
$db = 'testdb';
$user = 'test';
$pass = 'test';
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
try {
$pdo = new PDO($dsn, $user, $pass);
} catch (Exception $e) {
die("DB error");
// input dari user (GET parameter)
$username = $_GET['username'] ?? 'guest';
// VULNERABLE: query dibangun dengan concatenation langsung
$sql = "SELECT id, username, email FROM users WHERE username = '$username'";
$stmt = $pdo->query($sql);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($rows);
echo "</pre>";
?>
Tujuan lab: lihat bagaimana username dimasukkan langsung ke query → rentan SQLi.
2. Perbaikan: gunakan prepared statement (parameterized)
<?php
// [Link] — perbaikan
// ... (sama up to pdo)
$username = $_GET['username'] ?? 'guest';
// SAFE: prepared statement
$sql = "SELECT id, username, email FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute([':username' => $username]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($rows);
echo "</pre>";
?>
Langkah lab & script bantu
Siapkan DB sederhana: buat tabel users dan beberapa row dummy.
Coba injeksi di [Link] (misal ?username=' OR '1'='1) — lihat hasil (hanya di
VM lab).
Gunakan Burp Suite atau browser devtools untuk melihat request/response.
Checklist mitigasi singkat: prepared statements, input validation, least privilege DB
user, parameterized ORM, limit error output.
Hacking: The Art of Exploitation — konsep teknik + contoh C (low-level)
Teori singkat
Buku ini menjelaskan memory model (stack/heap), pointers, format string, buffer
overflow, dan debugging. Intinya: banyak bug terjadi karena lack of bounds checking
dan salah pengelolaan memori.
Modern systems punya mitigasi: ASLR, DEP/NX, stack canaries. Belajar exploit harus
dimulai di lab dengan mitigasi dimatikan untuk memahami konsep, lalu pelajari
bypass secara etis.
Contoh yang aman untuk belajar (C program rentan — vuln.c)
Tujuan: tunjukkan buffer overflow yang membuat program crash — tanpa
memberikan shellcode/remote exploit.
// vuln.c — contoh sederhana (kompilasi di Linux VM)
// Compile: gcc -fno-stack-protector -z execstack -o vuln vuln.c
#include <stdio.h>
#include <string.h>
void secret() {
printf("Kamu tidak seharusnya memanggil fungsi ini secara langsung.\n");
void echo_input() {
char buf[64];
printf("Masukkan teks: ");
fflush(stdout);
gets(buf); // intentionally unsafe, untuk demonstrasi di lab saja
printf("Kamu memasukkan: %s\n", buf);
int main() {
echo_input();
printf("Program selesai.\n");
return 0;
Catatan: gets() sengaja dipakai agar terjadi overflow. gets sudah usang dan DILARANG di
produksi.
Cara praktik aman
1. Kompilasi di VM dengan opsi yang menonaktifkan mitigasi bila perlu (hanya di VM
test): gcc -fno-stack-protector -z execstack -o vuln vuln.c
2. Jalankan gdb ./vuln, beri input panjang untuk melihat crash, periksa stack layout (info
frame, x/40x $rsp).
3. Tujuan pembelajaran: pahami frame, return address, dan bagaimana overflow
memodifikasi memori — bukan untuk menulis exploit yang memberi akses.
Cara memperbaiki
Jangan gunakan gets. Pakai fgets dengan size limit atau read yang terbatas:
fgets(buf, sizeof(buf), stdin);
Aktifkan protections: stack canaries, NX, ASLR.
Practical Malware Analysis — teori & contoh analisis (RE)
Teori singkat
PMA menjelaskan teknik static & dynamic analysis: mengenali struktur PE, strings,
imports, melakukan debugging (OllyDbg/x64dbg) & decompiling (Ghidra/IDA),
behavioral analysis (procmon), unpacking.
Prinsip: analisis sample di lingkungan terisolasi (VM snapshot), gunakan tooling
read-only, dokumentasikan IOCs.
Contoh aman: analisis program benign + skrip analisis statis (Python)
Buat sample benign (Windows) — sample_behavior.c (contoh cross-platform sederhana)
// sample_behavior.c — program benign untuk analisis
#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#endif
int main() {
FILE *f = fopen("[Link]", "a");
if (f) {
fprintf(f, "Program dijalankan\\n");
fclose(f);
// panggil sleep untuk meniru proses berjalan
#ifdef _WIN32
Sleep(5000);
#else
sleep(5);
#endif
return 0;
Kompilasi jadi exe (di Windows VM) atau binary Linux di lab sendiri. Itu aman dan meniru
perilaku (file creation + sleep).
Skrip Python untuk static analysis sederhana (menggunakan pefile untuk PE)
Gunakan hanya untuk menganalisis file yang kamu buat sendiri atau sample yang legal.
# analyze_pe.py — butuh modul pefile (pip install pefile)
import pefile
import sys
def analyze(path):
pe = [Link](path)
print("=== Basic info ===")
print("EntryPoint:", hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint))
print("ImageBase:", hex(pe.OPTIONAL_HEADER.ImageBase))
print("\n=== Imports ===")
if hasattr(pe, 'DIRECTORY_ENTRY_IMPORT'):
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print([Link]())
for imp in [Link]:
print(" ", [Link])
else:
print("No imports found or packed/obfuscated")
# strings (simple)
print("\n=== Strings (short) ===")
data = open(path, 'rb').read()
import re
for s in [Link](b'[ -~]{4,}', data):
print([Link](errors='ignore'))
if __name__ == "__main__":
if len([Link]) < 2:
print("Usage: python analyze_pe.py [Link]")
[Link](1)
analyze([Link][1])
Tujuan: lihat imports (API yang dipanggil), entry point, dan strings — ini banyak mengungkap
perilaku.
Dynamic analysis (panduan singkat)
1. Jalankan sample di Windows VM snapshot.
2. Monitor dengan Process Monitor (Procmon) dan Process Explorer untuk melihat
file/registry/network yang diakses.
3. Gunakan Wireshark pada jaringan lab untuk memantau traffic (jika sample mencoba
network).
4. Ambil snapshot sebelum/ sesudah, catat perubahan file/registry.
Contoh writeup singkat (struktur)
Sample ID / Source
Environment (OS, tools, snapshot)
Static findings (PE headers, imports, strings) — keluarkan hasil analyze_pe.py.
Dynamic findings (files created, network, registry keys)
Conclusion & mitigation/recommendation
Skrip pendukung umum untuk lab
1. Scanner port simple (Python) — hanya untuk lab milikmu:
# [Link] — very small scanner for lab only
import socket
import sys
def scan(host, ports):
for p in ports:
s = [Link]()
[Link](0.5)
try:
[Link]((host, p))
print(f"{host}:{p} OPEN")
except Exception:
pass
finally:
[Link]()
if __name__ == "__main__":
host = [Link][1] if len([Link])>1 else "[Link]"
ports = [22,80,443,8080,3306]
scan(host, ports)
Jalankan di jaringan & mesin milikmu saja.
2. Simple HTTP request tester (Python requests) — test header/session handling
locally:
# http_test.py
import requests
url = "[Link]
r = [Link](url, params={'q': "test"})
print("Status:", r.status_code)
print([Link])
Penutup — etika & langkah selanjutnya
Semua contoh di atas dimaksudkan untuk belajar konsep & teknik — bukan untuk
menyerang.
Jika mau, aku bisa:
o Buat lab step-by-step (VM + perintah lengkap) untuk tiap contoh di atas.
o Buat template writeup pentest / malware analysis yang bisa kamu pakai di
GitHub.
o Kembangkan contoh exploit yang benar-benar aman (mis. overflow yang
hanya menunjukkan crash) dan tutorial debugging langkah-demi-langkah —
tetap hanya di lab.
Mau aku lanjutkan dengan lab step-by-step untuk salah satu topik (mis. tutorial debugging
C vuln dengan GDB, atau analisis PE menggunakan pefile + Procmon)? Pilih satu, aku buat
instruksi dan file yang bisa kamu copy-paste ke VM.