Go Neden Güvenlik Araçlarında Popüler?
Go, güvenlik araçları için adeta yapılmış bir dil. Neden mi?
- Tek binary: Bağımlılık cehennemi yok. Derlenmiş tek dosya her yerde çalışır.
- Statik tip: Hataları derleme aşamasında yakalar.
- Eşzamanlılık: Goroutine ve channel ile binlerce paralel istek kolayca yapılır.
- Hız: C kadar olmasa da Python'dan katbekat hızlı.
- Standart kütüphane: net/http, crypto ve encoding paketleri çok güçlü.
İlk Aracımız: Port Tarayıcı
package main
import (
"fmt"
"net"
"sync"
)
func scan(host string, port int, wg *sync.WaitGroup) {
defer wg.Done()
address := fmt.Sprintf("%s:%d", host, port)
conn, err := net.Dial("tcp", address)
if err == nil {
fmt.Printf("Port %d açık\n", port)
conn.Close()
}
}
func main() {
var wg sync.WaitGroup
host := "127.0.0.1"
for port := 1; port <= 1024; port++ {
wg.Add(1)
go scan(host, port, &wg)
}
wg.Wait()
}Bu küçük örnek, Go'nun eşzamanlılık gücünü gösterir. 1024 port birkaç saniye içinde taranabilir.
Mimari Tavsiyeler
- Pipeline yapısı: Collect → Parse → Enrich → Report adımlarını ayrı paketler yap
- Konfigürasyon: viper veya standart flag paketi
- Logging: yapılandırılmış log için slog
- Test: table-driven test alışkanlığı kazan
Pratik Araç Fikirleri
- IOC toplayıcı: Açık kaynak beslemelerden IOC çek ve normalize et
- Hash lookup: Birden çok servisi paralel sorgula
- Log parser: SIEM için normalize edilmiş çıktı üret
- Banner grabber: Servis parmak izi çıkar
Son Söz
Go, güvenlik araçları için mükemmel bir denge sunar: hız, güvenilirlik ve dağıtım kolaylığı. İlk aracını yaz, sonra mimariyi olgunlaştır.