Documentation ¶
Index ¶
- Variables
- type DNSRequestType
- type DNSRequestTypeHolder
- func (holder DNSRequestTypeHolder) JSONSchemaType() *jsonschema.Type
- func (holder *DNSRequestTypeHolder) MarshalJSON() ([]byte, error)
- func (holder DNSRequestTypeHolder) MarshalYAML() (interface{}, error)
- func (holder DNSRequestTypeHolder) String() string
- func (holder *DNSRequestTypeHolder) UnmarshalJSON(data []byte) error
- func (holder *DNSRequestTypeHolder) UnmarshalYAML(unmarshal func(interface{}) error) error
- type Request
- func (request *Request) CanCluster(other *Request) bool
- func (request *Request) Compile(options *protocols.ExecutorOptions) error
- func (request *Request) ExecuteWithResults(input *contextargs.Context, metadata, previous output.InternalEvent, ...) error
- func (request *Request) Extract(data map[string]interface{}, extractor *extractors.Extractor) map[string]struct{}
- func (request *Request) GetCompiledOperators() []*operators.Operators
- func (request *Request) GetID() string
- func (request *Request) Make(host string, vars map[string]interface{}) (*dns.Msg, error)
- func (request *Request) MakeResultEvent(wrapped *output.InternalWrappedEvent) []*output.ResultEvent
- func (request *Request) MakeResultEventItem(wrapped *output.InternalWrappedEvent) *output.ResultEvent
- func (request *Request) Match(data map[string]interface{}, matcher *matchers.Matcher) (bool, []string)
- func (r *Request) Options() *protocols.ExecutorOptions
- func (request *Request) Requests() int
- func (request *Request) Type() templateTypes.ProtocolType
Constants ¶
This section is empty.
Variables ¶
var DNSRequestTypeMapping = map[DNSRequestType]string{ A: "A", NS: "NS", DS: "DS", CNAME: "CNAME", SOA: "SOA", PTR: "PTR", MX: "MX", TXT: "TXT", AAAA: "AAAA", CAA: "CAA", TLSA: "TLSA", ANY: "ANY", }
DNSRequestTypeMapping is a table for conversion of method from string.
var RequestPartDefinitions = map[string]string{
"template-id": "ID of the template executed",
"template-info": "Info Block of the template executed",
"template-path": "Path of the template executed",
"host": "Host is the input to the template",
"matched": "Matched is the input which was matched upon",
"request": "Request contains the DNS request in text format",
"type": "Type is the type of request made",
"rcode": "Rcode field returned for the DNS request",
"question": "Question contains the DNS question field",
"extra": "Extra contains the DNS response extra field",
"answer": "Answer contains the DNS response answer field",
"ns": "NS contains the DNS response NS field",
"raw,body,all": "Raw contains the raw DNS response (default)",
"trace": "Trace contains trace data for DNS request if enabled",
}
RequestPartDefinitions contains a mapping of request part definitions and their description. Multiple definitions are separated by commas. Definitions not having a name (generated on runtime) are prefixed & suffixed by <>.
Functions ¶
This section is empty.
Types ¶
type DNSRequestType ¶
type DNSRequestType int
DNSRequestType is the type of the method specified
const ( // name:A A DNSRequestType = iota + 1 // name:NS NS // name:DS DS // name:CNAME CNAME // name:SOA SOA // name:PTR PTR // name:MX MX // name:TXT TXT // name:AAAA AAAA // name:CAA CAA // name:TLSA TLSA // name:ANY ANY )
name:DNSRequestType
func GetSupportedDNSRequestTypes ¶
func GetSupportedDNSRequestTypes() []DNSRequestType
GetSupportedDNSRequestTypes returns list of supported types
func (DNSRequestType) String ¶
func (t DNSRequestType) String() string
type DNSRequestTypeHolder ¶
type DNSRequestTypeHolder struct {
DNSRequestType DNSRequestType `mapping:"true"`
}
DNSRequestTypeHolder is used to hold internal type of the DNS type
func (DNSRequestTypeHolder) JSONSchemaType ¶
func (holder DNSRequestTypeHolder) JSONSchemaType() *jsonschema.Type
func (*DNSRequestTypeHolder) MarshalJSON ¶
func (holder *DNSRequestTypeHolder) MarshalJSON() ([]byte, error)
func (DNSRequestTypeHolder) MarshalYAML ¶
func (holder DNSRequestTypeHolder) MarshalYAML() (interface{}, error)
func (DNSRequestTypeHolder) String ¶
func (holder DNSRequestTypeHolder) String() string
func (*DNSRequestTypeHolder) UnmarshalJSON ¶
func (holder *DNSRequestTypeHolder) UnmarshalJSON(data []byte) error
func (*DNSRequestTypeHolder) UnmarshalYAML ¶
func (holder *DNSRequestTypeHolder) UnmarshalYAML(unmarshal func(interface{}) error) error
type Request ¶
type Request struct { // Operators for the current request go here. operators.Operators `yaml:",inline"` // ID is the optional id of the request ID string `` /* 133-byte string literal not displayed */ // description: | // Name is the Hostname to make DNS request for. // // Generally, it is set to {{FQDN}} which is the domain we get from input. // examples: // - value: "\"{{FQDN}}\"" Name string `` /* 152-byte string literal not displayed */ // description: | // RequestType is the type of DNS request to make. RequestType DNSRequestTypeHolder `` /* 221-byte string literal not displayed */ // description: | // Class is the class of the DNS request. // // Usually it's enough to just leave it as INET. // values: // - "inet" // - "csnet" // - "chaos" // - "hesiod" // - "none" // - "any" Class string `` /* 198-byte string literal not displayed */ // description: | // Retries is the number of retries for the DNS request // examples: // - name: Use a retry of 3 to 5 generally // value: 5 Retries int `` /* 157-byte string literal not displayed */ // description: | // Trace performs a trace operation for the target. Trace bool `` /* 141-byte string literal not displayed */ // description: | // TraceMaxRecursion is the number of max recursion allowed for trace operations // examples: // - name: Use a retry of 100 to 150 generally // value: 100 TraceMaxRecursion int `` /* 188-byte string literal not displayed */ // description: | // Attack is the type of payload combinations to perform. // // Batteringram is inserts the same payload into all defined payload positions at once, pitchfork combines multiple payload sets and clusterbomb generates // permutations and combinations for all payloads. AttackType generators.AttackTypeHolder `` /* 216-byte string literal not displayed */ // description: | // Payloads contains any payloads for the current request. // // Payloads support both key-values combinations where a list // of payloads is provided, or optionally a single file can also // be provided as payload which will be read on run-time. Payloads map[string]interface{} `` /* 170-byte string literal not displayed */ CompiledOperators *operators.Operators `yaml:"-"` // description: | // Recursion determines if resolver should recurse all records to get fresh results. Recursion *bool `` /* 185-byte string literal not displayed */ // Resolvers to use for the dns requests Resolvers []string `` /* 138-byte string literal not displayed */ // contains filtered or unexported fields }
Request contains a DNS protocol request to be made from a template
func (*Request) CanCluster ¶
CanCluster returns true if the request can be clustered.
This used by the clustering engine to decide whether two requests are similar enough to be considered one and can be checked by just adding the matcher/extractors for the request and the correct IDs.
func (*Request) Compile ¶
func (request *Request) Compile(options *protocols.ExecutorOptions) error
Compile compiles the protocol request for further execution.
func (*Request) ExecuteWithResults ¶
func (request *Request) ExecuteWithResults(input *contextargs.Context, metadata, previous output.InternalEvent, callback protocols.OutputEventCallback) error
ExecuteWithResults executes the protocol requests and returns results instead of writing them.
func (*Request) Extract ¶
func (request *Request) Extract(data map[string]interface{}, extractor *extractors.Extractor) map[string]struct{}
Extract performs extracting operation for an extractor on model and returns true or false.
func (*Request) GetCompiledOperators ¶
func (*Request) MakeResultEvent ¶
func (request *Request) MakeResultEvent(wrapped *output.InternalWrappedEvent) []*output.ResultEvent
MakeResultEvent creates a result event from internal wrapped event
func (*Request) MakeResultEventItem ¶
func (request *Request) MakeResultEventItem(wrapped *output.InternalWrappedEvent) *output.ResultEvent
func (*Request) Match ¶
func (request *Request) Match(data map[string]interface{}, matcher *matchers.Matcher) (bool, []string)
Match matches a generic data response against a given matcher
func (*Request) Options ¶
func (r *Request) Options() *protocols.ExecutorOptions
Options returns executer options for http request
func (*Request) Type ¶
func (request *Request) Type() templateTypes.ProtocolType
Type returns the type of the protocol request