Skip to content

About

NMAP Scanner Catcher

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

synwatcher

Detektor port scan (nmap -sS, -sT, -sU) untuk Windows, bagian dari honeypot n0z0/scpd.

Setiap kali sebuah IP men-scan port di mesin ini, synwatcher menyimpan pasangan IP → port ke cacheDB. Server SFTP scpd lalu menerima login dengan:

Field Nilai
Username IP penyerang
Password Port terakhir yang di-scan
flowchart LR
    A[Penyerang] -- "SYN / UDP probe ke port X" --> B[synwatcher]
    B -- "Set(IP, X)" --> C[(cacheDB :50051)]
    A -- "login SFTP user=IP pass=X" --> D[scpd :60606]
    D -- "Get(IP)" --> C
Loading

Panduan Scanning Port (Cara Mendapatkan Password Login)

Honeypot ini menggunakan konsep dinamis: port terakhir yang Anda scan otomatis menjadi password Anda, dan alamat IP mesin Anda sendiri menjadi username.

Contoh:
Jika IP Anda adalah 192.168.1.50 dan Anda men-scan port 8080 pada server target,
maka username Anda = 192.168.1.50 dan password Anda = 8080.

Cara 1: Menggunakan Nmap (Standar Pentesting)

1. Instalasi Nmap

  • Windows (PowerShell):
    winget install Insecure.Nmap
    (Atau unduh installer resmi .exe dari nmap.org/download.html).
  • Linux (Debian / Ubuntu / Kali):
    sudo apt update && sudo apt install -y nmap
  • macOS (Homebrew):
    brew install nmap

2. Menjalankan Scanning Port dengan Nmap

  • Scan satu port tertentu (Paling disarankan agar password langsung diketahui):

    nmap -p 8080 <IP_TARGET>

    (Setelah perintah ini selesai, synwatcher langsung mencatat password Anda = 8080).

  • SYN Stealth Scan (cepat, membutuhkan hak Administrator/root):

    sudo nmap -sS -p 8080 <IP_TARGET>
  • Fast Scan range port umum:

    nmap -F <IP_TARGET>

    (Password Anda adalah port tertinggi/terakhir yang disentuh oleh nmap).


Cara 2: Lebih Cepat & Simpel (Tanpa Perlu Install Nmap!)

Jika Anda tidak memiliki Nmap atau tidak ingin menginstal Npcap/Nmap di mesin Anda, Anda bisa menggunakan alat bawaan sistem:

Opsi A: PowerShell (Bawaan Windows 10/11 - Paling Mudah)

Cukup jalankan satu baris perintah bawaan Windows:

Test-NetConnection -ComputerName <IP_TARGET> -Port 8080

Kenapa berhasil? Perintah ini langsung mengirimkan paket TCP SYN ke port target, yang otomatis ditangkap oleh synwatcher dan mengeset password Anda menjadi 8080.

Opsi B: Web Browser (Chrome / Edge / Firefox - Paling Simpel)

Buka browser favorit Anda dan ketik URL IP target beserta port yang Anda inginkan di bilah alamat:

http://<IP_TARGET>:8080/

Meskipun web browser menampilkan pesan This site can't be reached, browser telah berhasil mengirimkan paket TCP SYN ke port 8080, dan synwatcher sudah menguncinya sebagai password Anda!

Opsi C: Curl (Bawaan Windows 10/11 & Linux)

Buka terminal dan jalankan:

curl http://<IP_TARGET>:8080/ --connect-timeout 2

Opsi D: Netcat / nc (Linux / macOS / WSL)

nc -zv <IP_TARGET> 8080

Langkah Login ke Server SFTP (scpd)

Setelah menyentuh port (misalnya port 8080), segera login ke server SFTP honeypot di port 60606:

sftp -P 60606 <IP_ANDA>@<IP_TARGET>

Contoh jika IP mesin Anda adalah 192.168.123.45 dan target berada di 192.168.123.102:

sftp -P 60606 192.168.123.45@192.168.123.102

Saat diminta password, masukkan nomor port yang baru saja Anda sentuh:

192.168.123.45@192.168.123.102's password: 8080

Anda akan berhasil masuk ke sesi SFTP, dan honeypot akan memproses forensik file serta mencatat log CTI!


Untuk pengguna

Kebutuhan

  1. Windows 64-bit
  2. Npcap: saat instalasi, centang Install Npcap in WinPcap API-compatible Mode
  3. cacheDB berjalan di 127.0.0.1:50051
  4. (Opsional) scpd berjalan di port 60606

Instalasi & Upgrade Otomatis

Windows (PowerShell)

Buka PowerShell dan jalankan perintah satu baris berikut untuk memasang versi terbaru dan otomatis mendaftarkannya ke PATH pengguna:

irm https://raw.githubusercontent.com/n0z0/synwatcher/main/install.ps1 | iex

(Skrip ini juga bisa dijalankan kapan saja untuk upgrade ke versi terbaru).

Linux (Bash)

Jalankan perintah berikut di terminal:

curl -fsSL https://raw.githubusercontent.com/n0z0/synwatcher/main/install.sh | bash

(Binary otomatis dipasang ke /usr/local/bin atau ~/.local/bin dan siap dipanggil langsung).


Unduh Manual (Binary Langsung atau Bundel)

Tersedia di halaman Releases:

  • Binary Langsung (siap pakai tanpa ekstrak):
    • Windows: synwatcher_windows_amd64.exe
    • Linux: synwatcher_linux_amd64
  • Bundel Arsip (berisi dokumen + script):
    • Windows: synwatcher_vX.Y.Z_windows_amd64.zip
    • Linux: synwatcher_vX.Y.Z_linux_amd64.tar.gz

Integritas semua file dapat diverifikasi dengan checksums.txt.

Menjalankan

  1. Cari GUID interface jaringan yang ingin dipantau:

    Get-NetAdapter | Select Name, InterfaceDescription, InterfaceGuid, ifIndex, Status

    (atau jalankan .\getnet.ps1)

  2. Jalankan synwatcher (PowerShell Administrator), ganti {GUID} dengan InterfaceGuid di atas:

    .\synwatcher.exe -iface "\Device\NPF_{A91E7D86-E24B-4761-94EF-DE993C6116BD}"

    Tanpa -iface, synwatcher memilih interface pertama yang punya alamat IP. Pilihan otomatis ini belum tentu interface yang benar.

  3. Periksa log saat start. IP mesin ini harus muncul:

    [*] Local IPs on \Device\NPF_{...}: [192.168.1.10 fe80::... 127.0.0.1 ::1]
    

    Kalau hanya 127.0.0.1 dan ::1 yang muncul, interface-nya salah dan scan tidak akan terdeteksi.

Opsi command line

Flag Default Keterangan
-iface (auto) Nama device Npcap \Device\NPF_{GUID}
-sftpport 60606 Port SFTP honeypot (scpd) yang diabaikan dari penulisan knock password
-classrootport 8443 Port WebRTC decoy (ClassRoot) yang diabaikan dari penulisan knock password
-lemesport 50505 Port Honeybeacon HTTP decoy (lemes) yang diabaikan dari penulisan knock password
-cachedbport 50051 Port gRPC bus (cacheDB) yang diabaikan dari penulisan knock password
-ignoreports (kosong) Daftar port tambahan yang diabaikan (dipisahkan koma, contoh: 8080,9000)
-logfile synwatcher_cti.jsonl File output log CTI (format JSONL, kosongkan untuk mematikan)
-sensor (hostname) Identifier sensor node honeypot
-bpf (lihat bawah) Filter BPF untuk paket yang ditangkap
-snaplen 96 Jumlah byte yang diambil per paket
-promisc true Mode promiscuous
-timeout BlockForever Timeout pembacaan pcap
-version Tampilkan versi lalu keluar

Data Log untuk Cyber Threat Intelligence (CTI SOC-Grade)

Secara default, setiap aktivitas reconnaissance otomatis dicatat ke file synwatcher_cti.jsonl dalam format JSON Lines yang siap di-ingest ke SIEM, Elastic, Wazuh, atau MISP/OpenCTI.

Data log telah memenuhi standar Advanced Cyber Threat Intelligence (SOC-Grade) mencakup:

  • TCP SYN Fingerprint & Hash: syn_fingerprint (Ver:TTL:WS:Flags:OptionsOrder) dan syn_hash (MD5 hash 32-karakter unik) berfungsi sebagai IOC permanen mirip JA3/HASSH untuk melacak tools dan signature penyerang meskipun IP berubah.
  • Identifikasi Sasaran & Niat Ancaman: target_service (SSH, HTTP, SMB/RPC, RDP, MySQL, Redis, dll.) dan intent_category (LATERAL_MOVEMENT_PROBE, REMOTE_DESKTOP_EXPLOITATION_PROBE, DATABASE_DISCOVERY, WEB_RECONNAISSANCE).
  • Dynamic Risk Scoring & Severity: risk_score (skor 0 – 100 terkalibrasi otomatis) dan severity (INFO, LOW, MEDIUM, HIGH, CRITICAL).
  • Scan Velocity & Profiling Timing: scan_velocity mendeteksi ritme serangan (BURST_AUTOMATED_SCAN [<200ms], STEADY_PACE_SCAN [200ms–2s], SLOW_AND_LOW_STEALTH [evasive probe >2s], atau INITIAL_PROBE).
  • Passive OS Fingerprinting: estimated_os (Linux/Android/macOS, Windows, Network Appliance) serta estimated_hops berdasarkan initial TTL dan TCP stack.
  • Scanner Tool Footprinting: scanner_tool (mendeteksi Nmap Stealth SYN Scan, Masscan, ZMap, atau Standard OS Socket / PowerShell / Browser).
  • Identitas & Perilaku: Timestamp ISO 8601 UTC, Sensor ID, Event Type, scan_behavior (SINGLE_PORT_KNOCK vs PORT_SWEEP_SCAN), dan scan_hit_count.
  • Source & Target: IP, Port, status is_private.
  • IP & TCP Layer Forensics: TTL, IP ID, IP Length, Protocol, Window Size, Sequence number, Flags, dan TCP Options (MSS, WScale, SACKPerm, TS, NOP).
  • MITRE ATT&CK Mapping: Tactic Reconnaissance, Technique Network Service Discovery (T1046) atau Active Scanning: Port Scanning (T1595.002).
  • Arsitektur Asinkron Go Routine: Pembacaan paket dan penyimpanan knock password berjalan di jalur cepat mikrodetik, sedangkan pengayaan CTI, kalkulasi fingerprint hash, logging JSONL, dan sinkronisasi metadata CacheDB didelegasikan secara mandiri ke Go Routine (go func) non-blocking sehingga tidak pernah terjadi packet drop saat dihantam ribuan probe nmap per detik.
  • Inter-Service CacheDB Threat Intel: Selain menyimpan password SFTP, synwatcher otomatis menginjeksi metadata pelaku (actor:syn_hash:<IP>, actor:risk:<IP>, actor:severity:<IP>, actor:target_service:<IP>, actor:intent:<IP>, actor:velocity:<IP>, actor:os:<IP>, actor:scanner:<IP>, actor:scan_hits:<IP>) ke CacheDB secara instan.

Contoh satu baris log SOC-Grade:

{
  "timestamp": "2026-10-08T01:40:15.123456789Z",
  "sensor_id": "honeypot-node-1",
  "event_type": "TCP_SYN_SCAN",
  "scan_behavior": "PORT_SWEEP_SCAN",
  "scan_hit_count": 8,
  "scan_velocity": "BURST_AUTOMATED_SCAN",
  "estimated_os": "Linux / Android / macOS",
  "estimated_hops": 0,
  "scanner_tool": "Nmap (Stealth SYN Scan)",
  "syn_fingerprint": "4:64:1024:SYN:MSS,SACKPerm,TS,NOP,WScale",
  "syn_hash": "a8f5c389e63470123efb69201a0912cb",
  "target_service": "RDP",
  "intent_category": "REMOTE_DESKTOP_EXPLOITATION_PROBE",
  "risk_score": 90,
  "severity": "CRITICAL",
  "source": {"ip": "192.168.1.150", "port": 54321, "is_private": true},
  "target": {"ip": "192.168.1.10", "port": 3389, "is_private": true},
  "ip_layer": {"version": 4, "ttl": 64, "id": 41235, "protocol": "TCP", "length": 60},
  "tcp_layer": {
    "seq": 298123712,
    "ack": 0,
    "window_size": 1024,
    "flags": ["SYN"],
    "options": ["MSS", "SACKPerm", "TS", "NOP", "WScale"]
  },
  "mitre_attack": {
    "tactic": "Reconnaissance",
    "technique": "Active Scanning: Scanning IP Blocks / Ports",
    "technique_id": "T1595.002"
  }
}

Apa yang terdeteksi

Jenis Sumber yang diterima Disimpan ke cacheDB
TCP SYN (-sS, -sT) IP mana saja (LAN & internet) ✅
UDP (-sU) Hanya IP privat (10/8, 172.16/12, 192.168/16, link-local) ✅
ICMP Port Unreachable – ❌ hanya log

Semua paket hanya diproses jika tujuannya IP mesin ini. Paket berikut diabaikan:

  • trafik keluar dari mesin ini sendiri dan loopback
  • port layanan decoy internal dan honeypot ekosistem aktif agar tidak menimpa password knock:
    • SFTP honeypot scpd (60606 atau -sftpport)
    • WebRTC meeting room decoy ClassRoot (8443 atau -classrootport)
    • Honeybeacon HTTP decoy lemes (50505 atau -lemesport)
    • In-memory threat bus cacheDB (50051 atau -cachedbport)
    • Port kustom lainnya via -ignoreports
  • UDP port 53, 443, 123, 161, 1900, 5353 (DNS, QUIC, NTP, SNMP, SSDP, mDNS)

Catatan: UDP dari internet sengaja tidak dideteksi. Balasan UDP dari aplikasi biasa (Zoom, game, VPN) tidak bisa dibedakan dari scan, dan akan mengisi cacheDB dengan data palsu.

Troubleshooting

Gejala Penyebab / solusi
Tidak menemukan interface Npcap Npcap belum terinstal, atau terminal tidak dijalankan sebagai Administrator
OpenLive gagal GUID di -iface salah. Cek lagi dengan Get-NetAdapter
Failed to connect cacheDB belum berjalan di 127.0.0.1:50051
Scan tidak terdeteksi Cek log Local IPs, dan pastikan firewall tidak memblok paket sebelum Npcap

Untuk developer

Kebutuhan

  • Go sesuai versi di go.mod
  • Npcap (untuk menjalankan, tidak diperlukan untuk compile)
  • Tidak perlu cgo/gcc. Di Windows, gopacket memuat wpcap.dll saat runtime

Build & jalankan

go build -o synwatcher.exe .
.\synwatcher.exe -iface "\Device\NPF_{GUID}"

Build lokal menampilkan versi dev. Untuk mengisi versi secara manual:

go build -trimpath -ldflags "-s -w -X main.version=v0.0.0-local" -o synwatcher.exe .

Sebelum commit:

go vet ./...
gofmt -l .   # di Windows bisa muncul karena CRLF; Git otomatis mengubahnya ke LF

Struktur kode

File Isi
main.go Entry point: pilih interface, buka pcap, konek cacheDB, loop paket
config.go Flag CLI, filter BPF, alamat cacheDB, port SFTP yang diabaikan
cti.go Modul CTI Logger (format JSON Lines, passive OS fingerprinting, MITRE ATT&CK)
paket.go handlePacket: logika deteksi TCP / UDP / ICMP
localip.go Daftar rentang IP privat (isLocalIP)
helper.go Kumpulkan IP lokal milik interface
report.go Tabel jumlah hit per IP di console

Konfigurasi yang masih hard-coded

Ada di config.go:

  • cacheDB = "127.0.0.1:50051": alamat cacheDB
  • sftpPort: default 60606 (dapat diubah lewat flag -sftpport)

Untuk mendeteksi UDP dari rentang lain (misalnya CGNAT 100.64.0.0/10), tambahkan CIDR-nya ke cidrs di localip.go.

Keterbatasan

  • Hanya Windows amd64. gopacket v1.1.19 tidak mendukung windows/arm64. Build Linux membutuhkan cgo + libpcap-dev.
  • cacheDB menyimpan satu nilai per IP, jadi hanya port terakhir yang tersimpan.

Release

Release dibuat otomatis oleh GitHub Actions. Workflow ini menjalankan go vet, compile synwatcher.exe, lalu meng-upload zip dan checksums.txt ke halaman Releases.

Otomatis: push ke main

Setiap push ke main langsung merilis versi patch berikutnya (contoh v0.1.3 → v0.1.4). Pengecualiannya:

  • push yang hanya mengubah *.md atau LICENSE tidak memicu release
  • tambahkan [skip ci] di pesan commit untuk melewati release

Naik versi minor/major: lewat tombol

GitHub → tab Actions → Release → Run workflow → pilih minor / major.

Versi tertentu: push tag manual

git tag v1.0.0
git push origin v1.0.0

Kalau langkah release gagal dengan error permission, buka Settings → Actions → General → Workflow permissions dan pilih Read and write permissions.

Lisensi

GNU AGPL v3

About

NMAP Scanner Catcher

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

⌂ 换网址