Documentation ¶
Index ¶
- Constants
- type Click
- type Client
- func (c *Client) Close()
- func (c *Client) GetData(serviceName, serviceOperation string, opts map[string]interface{}) ([]string, error)
- func (c *Client) GetSiemAll(opts map[string]interface{}) ([]*Click, []*Message, error)
- func (c *Client) GetSiemBlockedClicks(opts map[string]interface{}) ([]*Click, error)
- func (c *Client) GetSiemBlockedMessages(opts map[string]interface{}) ([]*Message, error)
- func (c *Client) GetSiemDeliveredMessages(opts map[string]interface{}) ([]*Message, error)
- func (c *Client) GetSiemIssues(opts map[string]interface{}) ([]*Click, []*Message, error)
- func (c *Client) GetSiemPermittedClicks(opts map[string]interface{}) ([]*Click, error)
- func (c *Client) Info()
- func (c *Client) SetHost(s string) error
- func (c *Client) SetPort(p int) error
- func (c *Client) SetPrincipalSecret(s string) error
- func (c *Client) SetProtocol(s string) error
- func (c *Client) SetServicePrincipal(s string) error
- func (c *Client) SetValidateServerCertificate() error
- type Message
- type MessagePart
- type SiemResponse
- type Threat
Constants ¶
const ReceiverDataLimit int64 = 1e6
ReceiverDataLimit is the limit of data in bytes the client will read from a server.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Click ¶
type Click struct { Category string `json:"category,omitempty"` // Blocked clicks Blocked bool `json:"blocked,omitempty"` // Permitted clicks Permitted bool `json:"permitted,omitempty"` // The unique id of the click. ID string `json:"id,omitempty"` // The ID of the message within PPS. It can be used to identify the message in PPS and // is guaranteed to be unique. GUID string `json:"GUID,omitempty"` // An identifier for the campaign of which the threat is a member, if available // at the time of the query. Threats can be linked to campaigns even after these events are retrieved. CampaignID string `json:"campaignID,omitempty"` // The threat category of the malicious URL, e.g. Malware, Phish, Spam. Classification string `json:"classification,omitempty"` // The external IP address of the user who clicked on the link. If the user is behind a firewall // performing network address translation, the IP address of the firewall will be shown. ClickIPAddress string `json:"clickIP,omitempty"` // The time the user clicked on the URL. ClickTimestamp time.Time `json:"clickTime,omitempty"` // The email address of the recipient. RecipientEmailAddresses string `json:"recipient,omitempty"` // The email address of the sender. The user-part is hashed. The domain-part is cleartext. SenderEmailddress string `json:"sender,omitempty"` // The IP address of the sender. SenderIPAddress string `json:"senderIP,omitempty"` // The unique identifier associated with this threat. It can be used to query the forensics. // and campaign endpoints. ThreatID string `json:"threatID,omitempty"` // Proofpoint identified the URL as a threat at this time. ThreatTimestamp time.Time `json:"threatTime,omitempty"` // A link to the entry on the TAP Dashboard for the particular threat. ThreatURL string `json:"threatURL,omitempty"` // The current state of the threat, e.g. active, falsepositive, cleared. ThreatStatus string `json:"threatStatus,omitempty"` // The malicious URL which was clicked URL string `json:"url,omitempty"` // The User-Agent header from the clicker's HTTP request UserAgent string `json:"userAgent,omitempty"` }
Click is a click to malicious URL.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is an instance of Proofpoint API client.
func (*Client) GetData ¶
func (c *Client) GetData(serviceName, serviceOperation string, opts map[string]interface{}) ([]string, error)
GetData returns data by providing service name and operation, as well as other options.
func (*Client) GetSiemAll ¶
GetSiemAll fetches events for all clicks and messages relating to known threats within the specified time period.
func (*Client) GetSiemBlockedClicks ¶
GetSiemBlockedClicks fetches events for clicks to malicious URLs blocked in the specified time period.
func (*Client) GetSiemBlockedMessages ¶
GetSiemBlockedMessages fetches events for messages blocked in the specified time period which contained a known threat.
func (*Client) GetSiemDeliveredMessages ¶
GetSiemDeliveredMessages fetches events for messages delivered in the specified time period which contained a known threat.
func (*Client) GetSiemIssues ¶
GetSiemIssues fetches events for clicks to malicious URLs permitted and messages delivered containing a known attachment threat within the specified time period.
func (*Client) GetSiemPermittedClicks ¶
GetSiemPermittedClicks fetches events for clicks to malicious URLs permitted in the specified time period.
func (*Client) Info ¶
func (c *Client) Info()
Info sends information about Client to the configured logger.
func (*Client) SetPrincipalSecret ¶
SetPrincipalSecret sets API Principal Secret.
func (*Client) SetProtocol ¶
SetProtocol sets the protocol for the API calls.
func (*Client) SetServicePrincipal ¶
SetServicePrincipal sets API Service Principal.
func (*Client) SetValidateServerCertificate ¶
SetValidateServerCertificate instructs the client to enforce the validation of certificates and check certificate errors.
type Message ¶
type Message struct { Category string `json:"category,omitempty"` // Blocked messages Blocked bool `json:"blocked,omitempty"` // Delivered messages Delivered bool `json:"delivered,omitempty"` // The unique id of the message. ID string `json:"id,omitempty"` // A list of email addresses contained within the CC: header, excluding friendly names. CarbonCopyHeaderAddresses []string `json:"ccAddresses,omitempty"` // The name of the PPS cluster which processed the message. ClusterName string `json:"cluster,omitempty"` // The rewrite status of the message. If value is 'true', all instances of URL // threats within the message were successfully rewritten. If the value is 'false', // at least one instance of the a threat URL was not rewritten. If the value is 'na', // the message did not contain any URL-based threats. CompletelyRewritten bool `json:"completelyRewritten,omitempty"` // The email address contained in the From: header, excluding friendly name. FromHeaderAddresses []string `json:"fromAddress,omitempty"` // The ID of the message within PPS. It can be used to identify the message in PPS and is guaranteed to be unique. GUID string `json:"GUID,omitempty"` // The full content of the From: header, including any friendly name. FromHeader string `json:"headerFrom,omitempty"` // If present, the full content of the Reply-To: header, including any friendly names. ReplyToHeader string `json:"headerReplyTo,omitempty"` // The impostor score of the message. Higher scores indicate higher certainty. ImpostorScore float64 `json:"impostorScore,omitempty"` // The malware score of the message. Higher scores indicate higher certainty. MalwareScore float64 `json:"malwareScore,omitempty"` // Message-ID extracted from the headers of the email message. It can be used to look // up the associated message in PPS and is not unique. MessageID string `json:"messageID,omitempty"` // A collection of MessagePart objects. MessageParts []*MessagePart `json:"messageParts,omitempty"` // The size in bytes of the message, including headers and attachments. MessageSize float64 `json:"messageSize,omitempty"` // When the message was delivered to the user or quarantined by PPS MessageTimestamp time.Time `json:"messageTime,omitempty"` // The list of PPS modules which processed the message. ModulesRun []string `json:"modulesRun,omitempty"` // The phish score of the message. Higher scores indicate higher certainty. PhishScore float64 `json:"phishScore,omitempty"` // The policy routes that the message matched during processing by PPS. PolicyRoutes []string `json:"policyRoutes,omitempty"` // The queue ID of the message within PPS. It can be used to identify // the message in PPS and is not unique. QID string `json:"QID,omitempty"` // The name of the folder which contains the quarantined message. // This appears only for messagesBlocked. QuarantineFolder string `json:"quarantineFolder,omitempty"` // The name of the rule which quarantined the message. // This appears only for messagesBlocked events. QuarantineRule string `json:"quarantineRule,omitempty"` // An array containing the email addresses of the SMTP (envelope) recipients RecipientEmailAddress []string `json:"recipient,omitempty"` // The email address contained in the Reply-To: header, excluding friendly name. ReplyToHeaderAddress []string `json:"replyToAddress,omitempty"` // The email address of the SMTP (envelope) sender. The user-part is hashed. The domain-part is cleartext. SenderEmailAddress string `json:"sender,omitempty"` // The IP address of the sender. SenderIPAddress string `json:"senderIP,omitempty"` // The spam score of the message. Higher scores indicate higher certainty. SpamScore float64 `json:"spamScore,omitempty"` // The subject line of the message, if available. Subject string `json:"subject,omitempty"` // An array of structures which contain details about detected threats within the message. // There may be more than one threat per message. Threats []*Threat `json:"threatsInfoMap,omitempty"` // A list of email addresses contained within the To: header, excluding friendly names. ToHeaderAddresses []string `json:"toAddresses,omitempty"` // The content of the X-Mailer: header, if present. XmailerHeader string `json:"xmailer,omitempty"` }
Message is a message with threats.
type MessagePart ¶
type MessagePart struct { // The true, detected Content-Type of the messagePart. This may differ from the oContentType value. ContentType string `json:"contentType,omitempty"` // If the value is "inline," the messagePart is a message body. If the value is // "attached," the messagePart is an attachment. Disposition string `json:"disposition,omitempty"` // The filename of the messagePart. FileName string `json:"filename,omitempty"` // The MD5 hash of the messagePart contents. MD5 string `json:"md5,omitempty"` // The declared Content-Type of the messagePart. DeclaredContentType string `json:"oContentType,omitempty"` // The verdict returned by the sandbox during the scanning process. // "unsupported": the messagePart is not supported by Attachment Defense // and was not scanned. // "clean": the sandbox returned a clean verdict. // "threat": the sandbox returned a malicious verdict. // "prefilter": the messagePart contained no active content, and was therefore // not sent to the sandboxing service. // "uploaded": the message was uploaded by PPS to the sandboxing service, but // did not yet have a verdict at the time the message was processed. // "inprogress": the attachment had been uploaded and was awaiting scanning // at the time the message was processed. // "uploaddisabled": the attachment was eligible for scanning, but was not // uploaded because of PPS policy. SandboxStatus string `json:"sandboxStatus,omitempty"` // The SHA256 hash of the messagePart contents. SHA256 string `json:"sha256,omitempty"` }
MessagePart is a part of the message related to the click to a malicious URL.
type SiemResponse ¶
type SiemResponse struct { QueryEndTime string `json:"queryEndTime,omitempty"` BlockedClicks []*Click `json:"clicksBlocked,omitempty"` PermittedClicks []*Click `json:"clicksPermitted,omitempty"` DeliveredMessages []*Message `json:"messagesDelivered,omitempty"` BlockedMessages []*Message `json:"messagesBlocked,omitempty"` }
SiemResponse is the response from TAP SIEM API Endpoint.
type Threat ¶
type Threat struct { // An identifier for the campaign of which the threat is a member, if available // at the time of the query. Threats can be linked to campaigns even after // these events are retrieved. CampaignID string `json:"campaignID,omitempty"` // The category of threat found in the message: Malware, Phish, Spam, // Impostor (for BEC/Message Text threats). Classification string `json:"classification,omitempty"` // The artifact which was condemned by Proofpoint. The malicious URL, hash of // the attachment threat, or email address of the impostor sender. Name string `json:"threat,omitempty"` // The unique identifier associated with this threat. It can be used to query // the forensics and campaign endpoints. ID string `json:"threatID,omitempty"` // The current state of the threat: active, falsepositive, cleared. ThreatStatus string `json:"threatStatus,omitempty"` // Proofpoint assigned the threatStatus at this time. Timestamp time.Time `json:"threatTime,omitempty"` // Whether the threat was an attachment, URL, or message type. Type string `json:"threatType,omitempty"` // A link to the entry about the threat on the TAP Dashboard URL string `json:"threatUrl,omitempty"` }
Threat contain details about detected threats within the message.