Lompat ke konten
dokumentasi.id
Commit 89c41b0
v1
Star3,2 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

3.4

IP, ASN, dan Pemindaian Port

Halaman ini menutup sisi jaringan dari recon: mengubah daftar hostname menjadi alamat IP, memetakan IP ke organisasi dan blok route milik sebuah ASN, lalu memindai port pada host yang benar-benar milik target. Semua perintah di bawah bekerja pada berkas HOSTS.txt dan file.txt yang formatnya didefinisikan di Placeholder dan Konvensi Penulisan One-liner.

Alur dari host ke IP, rentang ASN, dan port terbuka

graph LR
  HOSTS["HOSTS.txt"] --> DIG["dig a HOST +short"]
  DIG --> IP["alamat IP"]
  IP --> RADB["whois -h whois.radb.net IP"]
  RADB --> ORIGIN["baris origin: ASxxxx"]
  ORIGIN --> ROUTE["blok route CIDR"]
  IP --> WHOIS["whois IP"]
  WHOIS --> ORG["CIDR + Organization"]
  FILE["file.txt"] --> GREP["grep -E -o regex IPv4"]
  GREP --> IPLIST["daftar IP"]
  ROUTE --> SCAN["naabu -rate 40000 -verify"]
  IPLIST --> SCAN
  SCAN --> PROBE["httprobe"]
  PROBE --> OPEN["port terbuka yang melayani HTTP"]
  style HOSTS fill:#336791,color:#fff
  style FILE fill:#336791,color:#fff
  style ORIGIN fill:#8b5cf6,color:#fff
  style ROUTE fill:#8b5cf6,color:#fff
  style ORG fill:#8b5cf6,color:#fff
  style IPLIST fill:#8b5cf6,color:#fff
  style DIG fill:#f59e0b,color:#000
  style RADB fill:#f59e0b,color:#000
  style SCAN fill:#f59e0b,color:#000
  style PROBE fill:#2d7d46,color:#fff
  style OPEN fill:#2d7d46,color:#fff
%% fig: Dari host ke IP, ASN, dan port terbuka
%% desc: Daftar hostname diresolusi menjadi IP, IP dipetakan ke origin ASN dan blok route, lalu hasilnya dipakai untuk memindai port sebelum diuji dengan httprobe.
Fig. 1: Dari host ke IP, ASN, dan port terbukaDaftar hostname diresolusi menjadi IP, IP dipetakan ke origin ASN dan blok route, lalu hasilnya dipakai untuk memindai port sebelum diuji dengan httprobe.

Rentang CIDR dan organisasi dari daftar target

Perintah ini melakukan loop atas setiap baris HOSTS.txt, meresolusi hostname lewat dig a $HOST +short, lalu memanggil whois untuk setiap IP yang kembali. Baris whois disaring dengan grep -e "CIDR\|Organization", spasinya dirapatkan oleh tr -s " ", dan paste - - menempelkan dua baris hasil saring menjadi satu baris pasangan CIDR dan organisasi. Sisa duplikat dibuang oleh uniq di akhir loop. README.md:106-112

Keluaran per hostname kira-kira berupa satu hingga beberapa pasangan CIDR dan Organization, yang bisa langsung dipakai untuk mempersempit ruang pemindaian pada tahap berikutnya.

⚠️ dig a hanya meminta record A. Host yang hanya punya record AAAA tidak menghasilkan IP di sini, sehingga rentang CIDR-nya tidak pernah terlihat.

Rentang IP yang dialokasikan untuk sebuah ASN

Satu IP tidak cukup untuk menggambarkan aset jaringan sebuah organisasi, karena satu organisasi biasanya menguasai beberapa blok route sekaligus. Perintah ini mengambil nomor ASN dari whois di server RADB, lalu menanyakan seluruh blok yang berasal dari ASN tersebut. README.md:224-229

  • Tahap pertama, whois -h whois.radb.net IP | grep origin: | awk '{print $NF}' | head -1 mengambil satu nilai origin: pertama, yaitu ASN pemilik IP.
  • Tahap kedua, whois -h whois.radb.net -i origin -T route <ASN> meminta semua objek route milik ASN itu; grep -w "route:" | awk '{print $NF}' menyisakan blok CIDR-nya saja.
  • sort -n mengurutkan hasil secara numerik berdasarkan awalan teks blok, bukan berdasarkan ukuran blok.

Nilai IP pada perintah ini adalah alamat tunggal, bukan berkas. Untuk memasok banyak IP sekaligus, jalankan perintah yang sama di dalam loop atas HOSTS.txt seperti pada pola dig dan whois di bagian sebelumnya.

Ekstraksi IP dari berkas

Bila daftar IP sudah tersebar di dalam berkas teks campuran, grep -E -o dengan regex oktet lengkap mengambil setiap kemunculan IPv4 tanpa peduli konteks barisnya. README.md:231-236

Regex tersebut menyusun satu oktet dari tiga alternatif, yaitu 25[0-5], 2[0-4][0-9], dan [01]?[0-9][0-9]?, lalu mengulanginya empat kali dengan titik sebagai pemisah. Opsi -o mencetak hanya bagian yang cocok, sehingga satu baris panjang bisa menghasilkan beberapa IP. Pola ini tidak memvalidasi nomor port atau suffix CIDR yang menempel pada IP.

Arah sebaliknya, dari daftar IP kembali ke hostname, ditangani oleh python3 hosthunter.py HOSTS.txt > OUT.txt yang membaca berkas berisi IP. README.md:386-391 Pembahasan reverse lookup itu ada di Enumerasi Subdomain dan Deteksi Takeover.

Pemindaian port tanpa host di belakang CloudFlare

Memindai port pada hostname yang dilayani CloudFlare hanya akan mengenai edge milik CloudFlare, bukan server aslinya. Pipeline ini menyaring host semacam itu sebelum pemindaian dimulai. README.md:238-243

graph LR
  SUB["subfinder -silent -d HOST"] --> RES["filter-resolved"]
  RES --> CF["cf-check"]
  CF -->|lolos| SORT["sort -u"]
  CF -->|di belakang CloudFlare| DROP["dibuang dari daftar"]
  SORT --> NAABU["naabu -rate 40000 -silent -verify"]
  NAABU --> HT["httprobe"]
  style SUB fill:#f59e0b,color:#000
  style CF fill:#f59e0b,color:#000
  style NAABU fill:#f59e0b,color:#000
  style SORT fill:#8b5cf6,color:#fff
  style HT fill:#2d7d46,color:#fff
  style DROP fill:#dc2626,color:#fff
%% fig: Penyaringan host sebelum pemindaian port
%% desc: Subdomain yang sudah diresolusi dibuang bila berada di belakang CloudFlare, sisanya diurutkan lalu dipindai dengan naabu dan diuji dengan httprobe.
Fig. 2: Penyaringan host sebelum pemindaian portSubdomain yang sudah diresolusi dibuang bila berada di belakang CloudFlare, sisanya diurutkan lalu dipindai dengan naabu dan diuji dengan httprobe.

filter-resolved hanya meloloskan subdomain yang benar-benar punya IP, cf-check membuang yang mengarah ke CloudFlare, dan naabu memindai port dengan -rate 40000, -silent, serta -verify untuk memastikan port benar-benar terbuka. Tahap terakhir, httprobe, menyisakan port yang melayani protokol HTTP saja. Host yang sudah lolos penyaringan di sini bisa langsung masuk ke tahap Pemetaan URL, Berkas JavaScript, dan Endpoint.

⚠️ -rate 40000 adalah nilai yang sangat agresif. Jangan jalankan pipeline ini di luar cakupan program bug bounty yang mengizinkan pemindaian aktif, dan turunkan nilainya bila target punya aturan pembatasan laju.

Mengubah keluaran nmap menjadi target untuk HTTPX

Bila pemindaian port dilakukan dengan nmap, hasilnya bisa langsung disambungkan ke httpx tanpa menyalin manual. Perintah nmap -v0 HOST -oX /dev/stdout menuliskan laporan XML ke stdout, jc --xml -p mengubah XML itu menjadi JSON, dan jq -r membentuk string IP:port dari .nmaprun.host, .address["@addr"], serta setiap .ports.port[]["@portid"]. README.md:400-405

Ekspresi jq tersebut mengambil alamat host sekali, lalu mengulang setiap port yang tercatat. httpx --silent di ujung pipeline menerima aliran IP:port itu dan melaporkan mana yang benar-benar merespons sebagai layanan HTTP.

Ringkasan perintah per tahap

TahapMasukanKeluaranPerintah kunci
CIDR dan organisasiHOSTS.txtpasangan CIDR dan Organization per IPdig a +short, whois, paste - -
Blok route milik ASNsatu alamat IPdaftar blok CIDR dari origin:whois -i origin -T route, sort -n
Ekstraksi IPfile.txtsetiap kemunculan IPv4grep -E -o
Pemindaian porthostname tervalidasiport terbuka yang melayani HTTPfilter-resolved, cf-check, naabu -rate 40000 -verify, httprobe
Parser nmaphost untuk nmapaliran IP:port untuk httpxnmap -oX, jc --xml -p, jq -r, httpx --silent

Baris tabel di atas bertumpu pada README.md:106-112, README.md:224-229, README.md:231-236, README.md:238-243, dan README.md:400-405. Setelah port terbuka dan host yang bukan CloudFlare terkumpul, langkah berikutnya adalah menyusun pipeline penuh seperti yang dijelaskan di Alur Pipeline dan Toolchain.