new: syn.scan will now perform basic tcp banner grabbing

This commit is contained in:
evilsocket 2019-04-21 15:45:32 +02:00
commit aea68460c8
No known key found for this signature in database
GPG key ID: 1564D7F30393A456
5 changed files with 160 additions and 3 deletions

View file

@ -0,0 +1,41 @@
package syn_scan
import (
"github.com/bettercap/bettercap/network"
"github.com/evilsocket/islazy/async"
)
type bannerGrabberFn func(mod *SynScanner, ip string, port int) string
type grabberJob struct {
Host *network.Endpoint
Port *OpenPort
}
var tcpBannerGrabbers = map[int]bannerGrabberFn{
80: httpGrabber,
8080: httpGrabber,
443: httpGrabber,
8443: httpGrabber,
}
func (mod *SynScanner) bannerGrabber(arg async.Job) {
job := arg.(grabberJob)
if job.Port.Proto != "tcp" {
return
}
ip := job.Host.IpAddress
port := job.Port.Port
fn, found := tcpBannerGrabbers[port]
if !found {
fn = tcpGrabber
}
mod.Debug("grabbing banner for %s:%d", ip, port)
job.Port.Banner = fn(mod, ip, port)
if job.Port.Banner != "" {
mod.Info("found banner for %s:%d -> %s", ip, port, job.Port.Banner)
}
}