hunt

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2023 License: BSD-2-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TCPPortStateUnknown = TCPPortState("")       // timeout, unreachable, etc.
	TCPPortStateClosed  = TCPPortState("closed") // connection explicitly refused
	TCPPortStateOpen    = TCPPortState("open")   // connection successfully established
)
View Source
const (
	SrvUnknown      = Service("") // special service when unknown
	SrvCPanel       = Service("cpanel")
	SrvCUPS         = Service("cups")
	SrvDNS          = Service("dns")
	SrvDocker       = Service("docker")
	SrvFTP          = Service("ftp")
	SrvIMAP         = Service("imap")
	SrvKerberos     = Service("kerberos")
	SrvHTTP         = Service("http")
	SrvMySQL        = Service("mysql")
	SrvNFS          = Service("nfs")
	SrvNTP          = Service("ntp")
	SrvPOP3         = Service("pop3")
	SrvSFTP         = Service("sftp")
	SrvSSH          = Service("ssh")
	SrvSMTP         = Service("smtp")
	SrvSquid        = Service("squid")
	SrvSyslog       = Service("syslog")
	SrvTelnet       = Service("telnet")
	SrvNodeExporter = Service("node-exporter")
	SrvVNC          = Service("vnc")
)

Common networked services

View Source
const (
	LogSuccess = LogType("SUCCESS")
	LogError   = LogType("ERROR")
	LogWarning = LogType("WARNING")
	LogDebug   = LogType("DEBUG")
)
View Source
const MaxPortNumber = 1 << 16
View Source
const MinPortNumber = 1

Variables

View Source
var CommonTCPPorts = [MaxPortNumber][]Service{
	21:   {SrvFTP},
	22:   {SrvSSH},
	23:   {SrvTelnet},
	25:   {SrvSMTP},
	53:   {SrvDNS},
	80:   {SrvHTTP},
	88:   {SrvKerberos},
	110:  {SrvPOP3},
	115:  {SrvSFTP},
	143:  {SrvIMAP},
	443:  {SrvHTTP},
	465:  {SrvSMTP},
	514:  {SrvSyslog},
	631:  {SrvCUPS},
	993:  {SrvIMAP},
	995:  {SrvPOP3},
	2082: {SrvCPanel},
	2083: {SrvCPanel},
	2086: {SrvCPanel},
	2087: {SrvCPanel},
	2095: {SrvCPanel},
	2096: {SrvCPanel},
	2375: {SrvDocker},
	2376: {SrvDocker},
	2377: {SrvDocker},
	3306: {SrvMySQL},
	5009: {SrvVNC},
	9100: {SrvNodeExporter},

	8080: {SrvHTTP},
	8081: {SrvHTTP},
	4200: {SrvHTTP},
	1111: {SrvHTTP},
	2222: {SrvHTTP},
	3333: {SrvHTTP},
	4444: {SrvHTTP},
	5555: {SrvHTTP},
	6666: {SrvHTTP},
	7777: {SrvHTTP},
	8888: {SrvHTTP},
	9999: {SrvHTTP},
}

Based on: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

View Source
var SampleUserAgents = []string{
	"Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36",
	"Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",
	"Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; RM-1152) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15254",
	"Mozilla/5.0 (Linux; Android 7.0; Pixel C Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36",
	"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246",
	"Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36",
	"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9",
	"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36",
	"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1",
	"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)",
	"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)",
	"Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)",
}

Functions

func AllPorts

func AllPorts() []int

func CollectTCPAddrInfo

func CollectTCPAddrInfo(info *TCPAddrInfo, connTimeout time.Duration, finders ...TCPAddrScanner) error

The error is returned from net.Dial (but not on ECONNREFUSED cause this means the port is refused) the returned error can be a timeout or host unreachable error.

func CommonPorts

func CommonPorts() []int

func PortsBetween

func PortsBetween(from, to int) []int

Note: range includes "from" and "to".

func RandomUserAgent

func RandomUserAgent() string

func ScanDomain

func ScanDomain(info *DomainInfo, scanners ...DomainScanner)

func ScanIPAddress

func ScanIPAddress(info *IPAddrInfo, scanners ...IPAddrScanner)

func ScanWebsite

func ScanWebsite(info *WebsiteInfo, finders ...WebsiteScanner)

func TCPAddresses

func TCPAddresses(ipAddr net.IP, ports []int) []*net.TCPAddr

Types

type DomainInfo

type DomainInfo struct {
	Name          string
	IPAddresses   []net.IP
	NameServers   []*net.NS
	MailServers   []*net.MX
	TextRecords   []string
	CanonicalName string
	WHOIS         []byte
}

type DomainScanner

type DomainScanner func(info *DomainInfo)

func LookupCanonicalName

func LookupCanonicalName(log Logger) DomainScanner

func LookupIPAddresses

func LookupIPAddresses(log Logger) DomainScanner

Can be called without finders for simple DNS lookup.

func LookupMailServers

func LookupMailServers(log Logger) DomainScanner

func LookupNameServers

func LookupNameServers(log Logger) DomainScanner

func LookupTextRecords

func LookupTextRecords(log Logger) DomainScanner

func LookupWHOIS

func LookupWHOIS(log Logger, timeout time.Duration) DomainScanner

type IPAddrInfo

type IPAddrInfo struct {
	Addr    net.IP
	Domains []string // reverse lookup
	TCP     [MaxPortNumber]*TCPAddrInfo
}

type IPAddrScanner

type IPAddrScanner func(info *IPAddrInfo)

func ScanIPAddrDomains

func ScanIPAddrDomains(log Logger) IPAddrScanner

func ScanIPAddrTCPPorts

func ScanIPAddrTCPPorts(log Logger, ports []int, connTimeout time.Duration, finders ...TCPAddrScanner) IPAddrScanner

type LogType

type LogType string

type Logger

type Logger func(typ LogType, msg string)

func LogAllToFile

func LogAllToFile(fpath string) Logger

func LogTo

func LogTo(loggers ...Logger) Logger

func LogToTTY

func LogToTTY(w io.Writer, typs ...LogType) Logger

func NoLog

func NoLog() Logger

type Service

type Service string

Service represents a networked application running on a server.

type TCPAddrInfo

type TCPAddrInfo struct {
	Addr             *net.TCPAddr
	State            TCPPortState
	Banner           []byte
	ConfirmedService Service
}

func (*TCPAddrInfo) String

func (info *TCPAddrInfo) String() string

type TCPAddrScanner

type TCPAddrScanner func(info *TCPAddrInfo, conn net.Conn)

func DetectHTTP

func DetectHTTP(httpHost string, ua string) TCPAddrScanner

Sends a HTTP request to a remote server and reports whether the server successfully replied in HTTP.

func FindTCPBanner

func FindTCPBanner() TCPAddrScanner

type TCPPortState

type TCPPortState string

func (TCPPortState) String

func (s TCPPortState) String() string

type WebsiteInfo

type WebsiteInfo struct {
	Host      string // domain name (optionally including subdomain)
	RobotsTXT []byte
	Pages     []string
}

type WebsiteScanner

type WebsiteScanner func(info *WebsiteInfo)

func ScanWebsitePages

func ScanWebsitePages(log Logger, ua string, paths []string) WebsiteScanner

func ScanWebsiteRobotsTXT

func ScanWebsiteRobotsTXT(log Logger, ua string) WebsiteScanner

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL