Snitch – alat `ss`/`netstat` yang lebih ramah
(github.com/karol-broda)- Snitch adalah alat pemeriksa koneksi jaringan yang lebih mudah dibaca manusia dibanding
ssataunetstat, dengan dukungan UI terminal (TUI) dan format tabel bergaya - Menampilkan status koneksi dalam layar interaktif real-time atau format tabel sekali tampil, serta menyediakan berbagai filter seperti TCP/UDP, listening, connected
- Mencakup fitur output JSON·CSV, resolusi DNS/nama layanan, pemantauan dan penghentian proses, serta pembaruan otomatis
- Mendukung berbagai metode instalasi seperti Homebrew, Go, Nix, Arch Linux, Shell Script, Binary, termasuk fitur penghapusan otomatis peringatan Gatekeeper di macOS
- Alat yang berguna bagi developer dan administrator sistem untuk memantau koneksi jaringan secara intuitif dan memanfaatkannya dalam otomasi skrip
Ikhtisar
- Snitch adalah alat untuk menjelajahi koneksi jaringan secara visual, dirancang sebagai pengganti
ssataunetstat - Menampilkan status koneksi melalui antarmuka TUI atau output tabel bergaya
- Berjalan di Linux dan macOS, dan mungkin memerlukan hak root atau izin CAP_NET_ADMIN
Cara instalasi
- Homebrew: dapat diinstal dengan perintah
brew install snitch - Go:
go install github.com/karol-broda/snitch@latest - Nix/NixOS:
nix-env -iA nixpkgs.snitchatau bisa ditambahkan sebagai input flake - Arch Linux (AUR) :
yay -S snitch-binatauparu -S snitch-bin - Shell Script: instalasi dengan perintah
curl -sSL ... | sh, dengan jalur default~/.local/binatau/usr/local/bin- Di macOS, skrip instalasi secara otomatis menghapus atribut quarantine
- Unduh Binary: tersedia di GitHub Releases untuk Linux(.tar.gz, .deb, .rpm, .apk) dan macOS(.tar.gz)
Mulai cepat
- Menjalankan
snitchakan membuka TUI interaktif snitch -lmenampilkan hanya socket listening,snitch lsmenampilkan format tabel lalu keluarsnitch ls -t -emenampilkan hanya sesi TCP yang connected,snitch ls -pmenampilkan output sederhana yang mudah diparse
Perintah utama
snitch/snitch top: menampilkan daftar koneksi yang diperbarui secara real-time- Opsi:
-l(listening),-t(TCP),-e(connected),-i(interval pembaruan) - Key binding: pindah
j/k, beralih TCP·UDPt/u, hentikan prosesK, cari/, keluarq, dll.
- Opsi:
snitch ls: menampilkan tabel sekali saja, dan otomatis memakai pager jika melebihi tinggi terminal- Format output: tabel default,
-o json,-o csv,-p(sederhana),--no-headers(tanpa header)
- Format output: tabel default,
snitch json: output format JSON untuk digunakan dalam skripsnitch watch: streaming frame JSON pada interval tertentusnitch upgrade: cek versi dan pembaruan otomatis
Opsi filter dan resolusi
- Flag umum:
-t(TCP),-u(UDP),-l(listening),-e(connected),-4(IPv4),-6(IPv6) - Resolusi DNS dan nama layanan:
- Mendukung opsi
--resolve-addrs,--resolve-ports,--no-cache - Melakukan lookup DNS paralel dan caching, dan cache bisa dinonaktifkan dengan
--no-cache
- Mendukung opsi
- Pemfilteran detail: tentukan nama proses, port, status, dll. dalam format
key=value- Contoh:
snitch ls proto=tcp state=listen,snitch ls proc=nginx
- Contoh:
Format output
- Output tabel default: menampilkan nama proses, PID, protokol, status, alamat lokal·port
- Output sederhana (-p) : bentuk teks yang mudah diparse
- Output JSON/CSV: dapat digunakan untuk otomasi skrip dan analisis log
Konfigurasi dan variabel lingkungan
- File konfigurasi:
~/.config/snitch/snitch.toml- Mendukung pengaturan
numeric,dns_cache,theme(auto/dark/light/mono)
- Mendukung pengaturan
- Variabel lingkungan:
- Mendukung
SNITCH_THEME,SNITCH_RESOLVE,SNITCH_DNS_CACHE,SNITCH_NO_COLOR,SNITCH_CONFIG, dll.
- Mendukung
Kebutuhan sistem
- Memerlukan lingkungan Linux atau macOS
- Linux: membaca data dari
/proc/net/*, dan untuk informasi proses lengkap memerlukan root atau izinCAP_NET_ADMIN - macOS: menggunakan API sistem, dan memerlukan
sudountuk informasi proses lengkap
1 komentar
Komentar Hacker News
lsofdansssangat tidak nyamanDi output bawaan,
ssmenampilkan hal-hal yang jarang dibutuhkan seperti ukuran antrean kirim/terima, tetapi justru tidak menunjukkan socket itu milik aplikasi yang manaSelain itu, secara bawaan ia mengabaikan listening socket, padahal itulah salah satu kegunaan utama alat seperti ini
Saya paham memilih default yang bagus itu sulit, tapi ini nyaris contoh ketika hampir semua pilihan default-nya salah
Seiring waktu, pengguna dan use case berubah sehingga default juga seharusnya ikut berubah, tetapi pada alat Unix format output sekaligus berfungsi sebagai API, jadi mengubahnya menimbulkan masalah kompatibilitas mundur
Contohnya, alasan
ps auxmemotong nama proses panjang menjadi sekitar 7 karakter juga karena hal ituTulisan terkait: sh and the separation of data and representation
ssataulsof, sepertinya mereka belum begitu memahami masalah kegunaan seperti inifd,ag, danrgbelakangan juga mengalami masalah serupaMenurut saya, kemudahan penggunaan yang intuitif jauh lebih penting daripada kecepatan atau fitur
netstat -utandanss -utantampaknya menampilkan informasi yang hampir samaKarena namanya bertabrakan, mungkin lebih baik memakai nama lain
Situs resmi Little Snitch
Snitch hanyalah alat untuk menampilkan data
ss/netstatdengan lebih nyaman di terminalSaya tidak paham kenapa harus memakai lagi nama yang mirip ketika sudah ada alat bernama serupa di ranah IT yang sama
Tautan demo
Library GUI punya berbagai fitur untuk pengguna seperti penyandang disabilitas netra, sedangkan TUI mungkin kurang dalam hal itu
ssdan memakainya dengan baik. Hanya saja saya tidak ingin melihat angka antrean kirim/terimaLebar layar jadi terlalu besar, sehingga saat dibagi vertikal di laptop hampir tidak muat
Saya tidak berencana memasang Snitch.
sssudah terpasang bawaan di semua server, dan saya tidak butuh TUISnitch mungkin cocok untuk pemakaian pribadi atau workstation, tetapi di server
sstetap jadi bawaanssmemang sudah terpasang secara default jadi tinggal dipakai sajaSnitch lebih cocok untuk workstation atau debugging homelab
Antrean kirim/terima memang belum ditampilkan, tetapi nanti rencananya akan ditambahkan lewat mode compact atau toggle
Mungkin ada fitur yang saya lewatkan di video demo?
ss/netstatdaripada alat pemantauan trafikFitur pemantauan trafik memang direncanakan, tetapi belum diimplementasikan
Menarik juga bahwa Go mengizinkan
module barename. Pada proyek pribadi pun akhirnya orang tetap memakai URL, jadi menurut saya ini bukan pola yang baikTautan commit
@latest, seharusnya sudah berfungsi dengan baikMisalnya, jika malware dirancang untuk menunggu selama periode tertentu atau hanya berkomunikasi dengan C&C saat pengguna sedang melakukan aktivitas jaringan, rasanya akan sulit dideteksi
/procsecara langsungRootkit LD_PRELOAD bisa memanipulasi output fungsi libc untuk menyembunyikan aktivitasnya
sssedikit lebih bisa dipercaya, dan Snitch ditulis dalam Go sehingga tidak memakai libc, jadi ada kemungkinan lebih tahan terhadap rootkit LD_PRELOADNamun, alat seperti ini bukan untuk mendeteksi trafik berbahaya, melainkan untuk debugging lokal
Referensi: decloaker, makalah arXiv, makalah ACM, penjelasan struktur proc
Penyerang yang mahir bagaimanapun bisa beroperasi sambil menyamar sebagai trafik normal
Bahkan alat jaringan untuk menghadapi penyerang sungguhan pun tidak sempurna (kata kunci pencarian: bro vantage point problem)
Saat ini saya memakai jnettop, tetapi saya tidak suka UI-nya