2017-10-04 15:20:17 +00:00
|
|
|
package modules
|
2017-08-01 23:13:28 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
log "github.com/sirupsen/logrus"
|
2017-08-16 16:09:20 +00:00
|
|
|
"github.com/zmap/zgrab2"
|
2017-08-01 23:13:28 +00:00
|
|
|
)
|
2017-07-20 21:09:13 +00:00
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
type TLSFlags struct {
|
|
|
|
zgrab2.BaseFlags
|
2017-08-01 23:13:28 +00:00
|
|
|
Heartbleed bool `long:"heartbleed" description:"Check if server is vulnerable to Heartbleed"`
|
|
|
|
Version int `long:"version" description:"Max TLS version to use"`
|
2017-07-20 21:09:13 +00:00
|
|
|
Verbose bool `long:"verbose" description:"Add extra TLS information to JSON output (client hello, client KEX, key material, etc)" json:"verbose"`
|
|
|
|
SessionTicket bool `long:"session-ticket" description:"Send support for TLS Session Tickets and output ticket if presented" json:"session"`
|
|
|
|
ExtendedMasterSecret bool `long:"extended-master-secret" description:"Offer RFC 7627 Extended Master Secret extension" json:"extended"`
|
|
|
|
ExtendedRandom bool `long:"extended-random" description:"Send TLS Extended Random Extension" json:"extran"`
|
|
|
|
NoSNI bool `long:"no-sni" description:"Do not send domain name in TLS Handshake regardless of whether known" json:"sni"`
|
|
|
|
SCTExt bool `long:"sct" description:"Request Signed Certificate Timestamps during TLS Handshake" json:"sct"`
|
|
|
|
HTTP HTTPOptions `json:"http"`
|
|
|
|
}
|
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
type TLSModule struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
type TLSScanner struct {
|
2017-09-29 22:59:37 +00:00
|
|
|
config *TLSFlags
|
2017-09-26 18:02:27 +00:00
|
|
|
}
|
|
|
|
|
2017-08-01 23:13:28 +00:00
|
|
|
func init() {
|
2017-08-10 19:10:34 +00:00
|
|
|
var tlsModule TLSModule
|
2017-09-26 18:02:27 +00:00
|
|
|
_, err := zgrab2.AddCommand("tls", "TLS Banner Grab", "Grab banner over TLS", 443, &tlsModule)
|
2017-08-01 23:13:28 +00:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2017-07-20 21:09:13 +00:00
|
|
|
}
|
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
func (m *TLSModule) NewFlags() interface{} {
|
|
|
|
return new(TLSFlags)
|
|
|
|
}
|
|
|
|
|
2017-09-29 22:59:37 +00:00
|
|
|
func (m *TLSModule) NewScanner() zgrab2.Scanner {
|
2017-09-26 18:02:27 +00:00
|
|
|
return new(TLSScanner)
|
2017-08-25 16:04:16 +00:00
|
|
|
}
|
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
func (f *TLSFlags) Validate(args []string) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (f *TLSFlags) Help() string {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
|
2017-09-29 22:59:37 +00:00
|
|
|
func (s *TLSScanner) Init(flags zgrab2.ScanFlags) error {
|
|
|
|
f, _ := flags.(*TLSFlags)
|
|
|
|
s.config = f
|
2017-09-26 18:02:27 +00:00
|
|
|
return nil
|
|
|
|
}
|
2017-08-07 21:51:15 +00:00
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
func (s *TLSScanner) GetName() string {
|
2017-10-04 02:47:58 +00:00
|
|
|
return s.config.Name
|
2017-08-07 21:51:15 +00:00
|
|
|
}
|
|
|
|
|
2017-09-26 18:02:27 +00:00
|
|
|
func (s *TLSScanner) InitPerSender(senderID int) error {
|
2017-08-01 23:13:28 +00:00
|
|
|
return nil
|
2017-07-21 16:48:53 +00:00
|
|
|
}
|
|
|
|
|
2017-10-14 23:58:08 +00:00
|
|
|
func (s *TLSScanner) Scan(t zgrab2.ScanTarget) (interface{}, error) {
|
2017-09-26 18:02:27 +00:00
|
|
|
return s, nil
|
2017-07-20 21:09:13 +00:00
|
|
|
}
|