You may also upload custom Zeek scripts and manage the ones provided by BluVector. The uploaded files are maintained through the Artifact Storage. See Section: Managing the Artifact Storage for a description of this feature. The following procedure describes how to manage Zeek scripts.
**Procedure: Add, Download, or Remove a Zeek Script**
Follow these steps to add or remove a Zeek script:
1. Navigate to the **“**Collectors Configuration” Screen (see Section: [*Configuring Collection Engines*](/user-manual/docs/system-configuration#configuring-collection-engines)).
2. Select **Scripts Management** in the menu that appears on the left. The “Scripts Management Configuration” Screen appears. (see Figure: *Scripts Management Configuration Screen*).
 *Fig. 70: Scripts Management Configuration Screen*
3. Select **Upload File** to select files from the local machine to upload. Zeek script files must have a `.zeek` extension.
4. Select the file to upload.
5. Select the locations that should have this file enabled.
6. Choose the filetype for the upload:
- **archive** - Allows a group of associated scripts to be uploaded together. Archive files are tar or zip files that are extracted to produce scripts and/or passthrough files, or subdirectories of those files. This allows you to organize your files into subdirectories. The subdirectories are also added to the top-level `__load__.zeek` file, so you must include a `__load__.zeek` file inside the subdirectory even if it contains no script files (in which case it would be empty).
- **zeek script** - Uploads and activates the file by adding the file to the top-level `__load__.zeek`, so that Zeek loads it at start-up.
- **passthrough** - Uploads the file as-is and without any further processing. For example, you could first download the `networks.cfg` file and modify it to match your network, and then upload the changed file using the **passthrough** option. Another situation for choosing this option is if you want to upload input files containing formatted data that scripts read at runtime.
7. Select **Upload**.
8. Select **Restart Zeek** for the changes to take effect.
9. After uploading, the screen displays the current list of uploaded files. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for more information about the displayed columns. An additional column **FILE TYPE** displays the filetype, which can be changed.
10. You can download a file by selecting the **download icon** for that row.
11. To remove a file, select the **trash can icon** on the row containing the file you wish to remove. You will be asked to confirm the deletion.
### Configuring the Suricata Collection Engine
The Suricata intrusion detection system requires frequent updates to its signatures to detect emerging threats. Informing Suricata about key network segments, such as all internal IP addresses, can help reduce false positives. The sections below describe various aspects for configuring the Suricata Collection Engine, including:
- Configuring the networks
- Uploading rules and threshold files
- Leveraging the assisted tuning feature
**Procedure: Configure the Suricata Networks**
Follow these steps to configure the Suricata network settings:
1. Navigate to the “Collectors Configuration” Screen (see Section: [*Configuring Collection Engines*](/user-manual/docs/system-configuration#configuring-collection-engines)).
2. Select **Suricata** in the menu that appears on the left. The “Suricata Configuration” Screen appears. (see Figure: *Suricata Configuration Screen*).
 *Fig. 71: Suricata Configuration Screen*
3. Enter comma-separated CIDR blocks for the following fields: **Home Network**, **External Network**, **HTTP Servers**, **SMTP Servers**, **SQL Servers**, **DNS Servers**, **Telnet Servers**, **AIM Servers**, **DNP3 Servers**, **DNP3 Client**, **Modbus Servers**, **Modbus Client**, **ENIP Servers**, and **ENIP Client**.
- Many Suricata rules are directional, meaning they only hit when the alert occurs in traffic entering a particular network.
- The most commonly used network in directional rules is the **Home Network**, since it identifies IP address space that is internal to the enterprise.
- BluVector supports a maximum of 3,000 CIDR blocks.
- The maximum number of characters for each field is 65,536.
4. Enter custom **IP Group** variables as key-value pairs where the key is the custom variable name and the value is one or more comma-separated CIDR blocks (e.g. “DMZ_NET” as the custom variable with value”10.10.1.0/24,10.20.1.0/24”). If more than one custom variable is needed click the **Add** button to get additional key-value inputs on the form.
5. Enter custom **Port Group** variables as key-value pairs where the key is the custom variable name and the value is one or more comma-separated port numbers. If more than one custom variable is needed click the **Add** button to get additional key-value inputs on the form.
6. Select **Stage Changes**.
Each network environment is different. The Suricata rule set provided by BluVector detects and identifies many possible threats and policy violations. Most users will find that tuning the rule set to their environment significantly reduces unwanted events. Individual rules should be removed from the system only after you are confident that the associated traffic is acceptable.
Suricata rule hits are managed with thresholds. Thresholds can be included in the rule, or they can be global. Global thresholds take precedence over those defined in a rule. There are several types of thresholds, such as rate_filter, suppress, and threshold. For detailed information about each threshold type and how to formulate the various threshold statements, see the [Suricata thresholds documentation](https://suricata.readthedocs.io/en/suricata-3.2.5/configuration/global-thresholds.html).
It is also possible to have a threshold that applies to all rules, which is referred to as a *general threshold*. A general threshold will have a sig_id of 0. Suricata will ignore invalid threshold strings.
When using an ATD Central Manager, you must manage rules for each BluVector Collector separately. You can select individual BluVector Collectors from the drop-down menu at the top of the screen in the blue banner. If you wish to have more centralized Suricata rules management, please contact your BluVector Customer Support engineer and inquire about the BluVector Enhanced Rules Management solution.
You may upload custom rules and threshold.config files for Suricata. Rules are *upserted*, meaning that if a rule already exists (the primary key is the rule’s signature ID), then multiple file uploads will only overwrite the fields that are different. If you are using BluVector-supplied rules, your new rules will merge with any preexisting rules already on the system. If you wish to use only your custom rules, you must disable automated rules updates from the “Suricata Configuration” Screen (see Section: [*Configuring the Suricata Collection Engine*](/user-manual/docs/system-configuration#configuring-the-suricata-collection-engine)).
The uploaded files are maintained through the Artifact Storage. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for a description of this feature.
The procedure below describes how to upload custom rules and threshold files.
**Procedure: Add, Download, or Remove Suricata Rules and Threshold Files**
Follow these steps to upload a Suricata rule or threshold.config file:
1. Navigate to the “Collectors Configuration” Screen (see Section: [*Configuring Collection Engines*](/user-manual/docs/system-configuration#configuring-collection-engines)).
2. Select **Rules & Threshold Management** in the menu that appears on the left. The Suricata “Rules and Threshold Management” Screen appears (see Figure: *Suricata Rules and Threshold Management Screen*).
 *Fig. 72: Suricata Rules and Threshold Management Screen*
3. Select **Upload File** to select files from the local machine to upload.
4. Select the file to upload.
5. Select the locations that should have this file enabled.
6. Choose the filetype for the upload:
- **rule** - a list of Suricata signatures to use for detection
- **threshold** - instructions on how to handle Suricata rule hits that include deduplication, suppression, and thresholding
7. Select **Upload**.
8. Select **Restart Suricata** for the changes to take effect.
9. After uploading, the screen displays the current list of uploaded files. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for more information about the displayed columns. An additional column **FILE TYPE** displays the filetype, which can be changed.
10. You can download a file by selecting the **download icon** for that row.
11. To remove a file, select the **trash can icon** on the row containing the file you wish to remove. You will be asked to confirm the deletion.
The following procedure describes how to leverage assisted tuning for Suricata. For more information about the assisted tuning feature, see Section: [*Understanding Assisted Suricata Tuning*](/user-manual/docs/system-operations/#understanding-assisted-suricata-tuning).
**Procedure: Leverage Suricata Assisted Tuning**
Follow these steps to leverage the assisted tuning feature for Suricata:
1. Navigate to the “Collectors Configuration” Screen (see Section: [*Configuring Collection Engines*](/user-manual/docs/system-configuration#configuring-collection-engines)).
2. Select **Tuning Assistant** in the menu that appears on the left. The Suricata “Tuning Assistant” Screen appears (see Figure: *Suricata Tuning Assistant Screen*).
 *Fig. 73: Suricata Tuning Assistant Screen*
3. Specify the following information in preparation for generating the system recommendations:
- **Tuning Start Date**: Enter the starting date to search for generating recommendations.
- **Tuning Stop Date**: Enter the ending date to search for generating recommendations.
- **Tuning Level**: Drag the slider to represent your risk tolerance. A conservative approach reduces less noise, but it preserves more detection sensitivity. An aggressive approach provides greater noise reduction at the expense of detection sensitivity. If you select **Custom**, you will be able to edit the following fields:
- **Max hits per signature**: Enter the maximum average daily signature hit rate before disabling the signature. The daily average is calculated over the full length of the tuning window.
- **Max hits per (Signature, Source IP) pairs**: Enter the maximum average daily (sid, src_ip) hit rate before tuning out the pair. The daily average is calculated over the full length of the tuning window.
- **Specificity Ratio**: Enter a percentage. (Signature, Source IP) pairs will be favored if they account for at least this percentage of hits. Lower percentages make using (Signature, Source IP) pairs more likely. Values must be between **0** and **1** (inclusive).
- **Max unique source IPs**: Enter the maximum number of unique source IPs to threshold per signature before disabling the entire signature.
4. Select **Get Recommendations** to review the system suggestions for (Signature, Source IP) pairs to suppress or disable in order to reduce noise. You can then accept or reject each individual recommendation. You can also take time to do further investigation before accepting or rejecting a recommendation.
5. Select **Apply Recommendations**.
### Configuring the Speculative Code Execution Engine Collector
The Speculative Code Execution Engine is a collector that uses machine learning technology to extract potentially malicious JavaScript and HTML files out of the network stream and send them through ATD for further analysis. It extracts and decrypts obfuscated shellcode and presents it to the user in plain text. It provides insight into JavaScript variables and their corresponding values, obtained during the JavaScript emulation.
You can enable or disable the Speculative Code Execution Engine, adjust the maximum number of bytes to analyze, and configure an allow list to cut down on unwanted files. This collector is enabled by default. The procedure below describes how to configure the settings.
**Procedure: Configure the Speculative Code Execution Engine Collector**
Follow these steps to configure the Speculative Code Execution Engine settings:
1. Navigate to the “Collectors Configuration” Screen (see Section: [*Configuring Collection Engines*](/user-manual/docs/system-configuration#configuring-collection-engines)).
2. Select **NEMA**. NEMA is the Speculative Code Execution Engine. The “NEMA Configuration” Screen appears (see Figure: *NEMA Configuration Screen*).
 *Fig. 74: NEMA Configuration Screen*
3. To enable the Speculative Code Execution Engine, choose **NEMA Correlator Enabled**. To disable it, clear **NEMA Correlator Enabled**.
4. To change the maximum number of bytes to analyze while looking for files, change the value in the ‘Maximum bytes for NEMA to analyze’ field.
5. You can configure an allow list, which is comma separated list that accepts: ipv4/6 cidr blocks, ipv4/6 addresses, hostnames, and wildcard host names using the **Allow List** field.
6. To save the configuration, select **Stage Changes**.
## Configuring BluVector Sensor Analyzers
As the BluVector Sensor ingests network traffic and reassembles content, files are distributed to embedded analyzers. The analyzers within the BluVector Sensor are:
- ClamAV: An open-source and signature-based antivirus engine
- Extractor: An archive decompressor that resubmits embedded files into the system for analysis
- Geolocation: An enrichment service that provides geolocation information based on IP addresses
- Hector Machine Learning Engine: A model-based static analyzer that uses machine learning techniques to classify files as benign or malicious
- hURI: A high-speed URL analytic that identifies suspicious URLs
- IntelLookup: A high-speed module that correlates BluVector metadata against external intelligence feeds
- IOCHunter: An enrichment engine that identifies potential indicators (such as URLs and email addresses) in file and emails
- NEMA Speculative Code Execution Engine: A machine learning and heuristics-based analyzer that detects suspicious shellcode and JavaScript
- Yara: A rule-based malware identification and classification utility
You can configure the analyzers in the following ways:
- Define flaggable criteria
- Enable or disable analyzers
- Subscribe or unsubscribe analyzers from various filetypes
- Adjust Machine Learning Engine thresholds that classify content as malicious or benign
- Upload ClamAV signatures
- Manage Yara rules
To configure the analyzers, first bring up the “Analyzers Configuration” Screen as follows:
1. Log in to the **ATD GUI**.
2. Select the **sprocket icon** at the top right. The “Analyzers Configuration” Screen appears (see Figure: *Analyzers Configuration Screen*).
See the following sections for more information:
- Section: [*Configuring General Analyzer Settings*](/user-manual/docs/system-configuration#configuring-general-analyzer-settings)
- Section: [*Configuring the ClamAV Analyzer*](/user-manual/docs/system-configuration#configuring-the-clamav-analyzer)
- Section: [*Configuring the Extractor Analyzer*](/user-manual/docs/system-configuration#configuring-the-extractor-analyzer)
- Section: [*Configuring the Geolocation Analyzer*](/user-manual/docs/system-configuration#configuring-the-geolocation-analyzer)
- Section: [*Configuring the Machine Learning Engine Analyzer*](/user-manual/docs/system-configuration#configuring-the-machine-learning-engine-analyzer)
- Section: [*Configuring the hURI Analyzer*](/user-manual/docs/system-configuration#configuring-the-huri-analyzer)
- Section: [*Configuring the IntelLookup Analyzer*](/user-manual/docs/system-configuration#configuring-the-intellookup-analyzer)
- Section: [*Configuring the IOCHunter Analyzer*](/user-manual/docs/system-configuration#configuring-the-iochunter-analyzer)
- Section: [*Configuring the Speculative Code Execution Engine Collector*](/user-manual/docs/system-configuration#configuring-the-speculative-code-execution-engine-collector)
- Section: [*Configuring the Yara Analyzer*](/user-manual/docs/system-configuration#configuring-the-yara-analyzer)
*Fig. 75: Analyzers Configuration Screen*
### Configuring General Analyzer Settings
The analyzers embedded within the BluVector Sensor will flag content as being suspicious according to a set of categories. You can configure which categories to use. When the analyzers flag content, they serve as an important system component because:
- Flagged content is saved to disk and can be downloaded through the ATD GUI.
- Events associated with flagged content automatically receive a status of **Suspicious**.
The default system behavior is to only flag content based on a finding of suspiciousness by an analyzer. You may, however, elect to extend flagging to include content that fails to complete analysis. Failure to complete analysis could be due to either the sample causing an issue (which results in a file warning), or the analysis engine encountering an unexpected error and failing to complete its analysis (which results in an analyzer error). To extend the flagging of suspicious content, follow the steps below.
**Procedure: Extend Flagging of Files that Failed Analysis**
Follow these steps to also flag files that failed analysis:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **General**. The “General Analyzers Configuration” Screen appears (see Figure: *General Analyzers Configuration Screen*).

*Fig. 76: General Analyzers Configuration Screen*
3. To extend flagging to files that failed due to a file warning, choose **Flag file warnings?**
4. To extend flagging to analyzer errors, choose **Flag analyzer errors?**
5. Select **Stage Changes**.
### Configuring the ClamAV Analyzer
ClamAV is an open source signature-based malware detector. When a file is discovered to be malicious, a signature can be written to uniquely identify that piece of malware. When the ClamAV Analyzer inspects a file, it checks the file against hundreds of thousands of known malware signatures. If there is a match, the result of ClamAV’s analysis will contain the signature that was present in the analyzed sample. New and custom ClamAV signatures can be uploaded through the configuration screen to keep the signatures updated. Alternatively, BluVector Sensors with BluVector Portal access will automatically fetch the latest ClamAV signatures. See [Clamav document](http://www.clamav.net/) for more information about ClamAV.
You can enable or disable ClamAV, subscribe to or unsubscribe from a filetype, and update ClamAV with the latest signatures. You can also install additional ClamAV signatures. These procedures are described below. This analyzer is enabled by default.
**Procedure: Configure the ClamAV Analyzer**
Follow these steps to configure the ClamAV settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **ClamAV**. The “ClamAV Configuration” Screen appears (see Figure: *ClamAV Configuration Screen*).
 *Fig. 77: ClamAV Configuration Screen*
3. To enable ClamAv, choose **Enabled**. To disable ClamAV, clear **Enabled**.
4. The **Analyzed File Types** section shows a list of filetypes. To subscribe ClamAV to a filetype, select the appropriate filetype. To unsubscribe ClamAV from a filetype, deselect the filetype.
5. To save the configuration, select **Stage Changes**.
**Procedure: Add, Download, or Remove ClamAV Signatures**
The uploaded files are maintained through the Artifact Storage. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for a description of this feature. Follow these steps to update the ClamAV signatures:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **ClamAV**. The “ClamAV Configuration” Screen appears (see Figure: *ClamAV Configuration Screen*)
3. Select **Signatures Management** from the menu that appears on the left. The **ClamAv “**Signatures Management” Screen appears (see Figure: *ClamAV Signature Management Screen*).
 *Fig. 78: ClamAV Signature Management Screen*
4. Select **Upload File** to select files from the local machine to upload.
5. Select the file to upload.
6. Select the locations that should have this file enabled.
7. Select **Upload**.
8. Select **Restart ClamAV** for the changes to take effect.
9. After uploading, the screen displays the current list of uploaded files. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for more information about the displayed columns.
10. You can download a file by selecting the **download icon** for that row.
11. To remove a file, select the **trash can icon** on the row containing the file you wish to remove. You will be asked to confirm the deletion.
### Configuring the Extractor Analyzer
The Extractor Analyzer decompresses archive files and republishes the embedded artifacts into the system for analysis. It will only republish the filetypes that are subscribed to by other analyzers. For example, if none of the analyzers are subscribed to the Android APKs filetype, the extractor will not republish embedded Android APKs, and those files will not be analyzed by the system. Parent-child relationships are preserved when files are republished, and their analysis results are stored in the same event. The analyzer is also cognizant of recursion (archives with embedded archive files). You can adjust the maximum number of embedded files, maximum embedded files, and the maximum recursion limit.
The Extractor Analyzer can also generate child objects from certain filetypes. Child objects are files of a different type that are embedded in another file, often of a different filetype. For example, it is possible to embed an executable inside a Microsoft Office document. You can configure the analyzer to treat parent objects as archives and to republish embedded child objects for further analysis.
You can enable or disable the Extractor Analyzer, subscribe to or unsubscribe from filetypes, and configure other settings. These procedures are described below. This analyzer is enabled by default.
**Procedure: Configure the Extractor Analyzer**
Follow these steps to configure the Extractor settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **Extractor**. The “Extractor Configuration” Screen appears (see Figure: *Extractor Configuration Screen*).
 *Fig. 79: Extractor Configuration Screen*
3. To enable Extractor, choose **Enabled**. To disable Extractor, clear **Enabled**.
4. The **Analyzed Extraction File Types** section shows a list of filetypes. To subscribe Extractor to a filetype, select the appropriate filetype. To unsubscribe Extractor from a filetype, deselect the filetype.
5. Below the **Analyzed Extraction File Types** section, the **Object Extraction File Types** section shows another list of filetypes. To enable embedded object extraction for a filetype, select the appropriate filetype. To unsubscribe embedded object extraction, deselect the filetype.
6. Below the **Object Extraction File Types** section, there are more settings. To enable or disable passwordcracking for zipped files, select or clear **Crack Password Protected Zip**. This capability attempts to decrypt zipped files for the purpose of extracting content using a small list of commonly used passwords.
7. To limit the amount of content extracted from a given archive, set the **Maximum Embedded Size** (in bytes), **Max Embedded Files**, and **Recursion Limit** by entering the desired values in the appropriate fields.
8. To enable dynamic password recovery for encrypted email attachments, select or clear **Enable Dynamic Password Recovery**. This capability searches for potential passwords in email bodies for encrypted archives sent as email attachments.
9. To constrain the runtime of dynamic password recovery, define a timeout in seconds in **Archive Decryption and Extraction Timeout**.
10. To store email bodies used in the event record, select a condition for **Save Email Bodies** to determine when to save email bodies.
11. To save the configuration, select **Stage Changes**.
### Configuring the Geolocation Analyzer
The Geolocation Analyzer is a service that provides geolocation information based on IP addresses. When this analyzer is enabled, the associated country flags will appear next to the destination and source IP addresses in the **Event Viewer** and in the “Event Details” Screen (see Section: [*Using the Event Viewer*](/user-manual/docs/system-operations#using-the-event-viewer) and Section: [*Using the Event Details Screen*](/user-manual/docs/system-operations#using-the-event-details-screen)). You can also create a dashboard widget to display geolocation metrics (see Section: [*Customizing Dashboard Widgets*](/user-manual/docs/system-operations#customizing-dashboard-widgets)).
You can enable or disable the Geolocation Analyzer. You can change the update schedule for the geolocation data source, as the information about countries may change over time. The followed procedure describes these steps.
**Procedure: Configure the Geolocation Analyzer**
Follow these steps to configure the Geolocation Analyzer settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **Geolocation**. The “Geolocation Configuration” Screen appears (see Figure: *Geolocation Configuration Screen*). A banner shows the last time that the geolocation database was updated.
 *Fig. 80: Geolocation Configuration Screen*
3. To enable geolocation enrichment for events, choose **Enabled**. To disable geolocation enrichment, clear **Enabled**.
4. Enter the ‘Maximum missed updates’. After the system has missed this number of database updates, the information will be considered stale, and geolocation enrichment will no longer appear. The default value of **0** indicates that the database will never be considered stale, and geolocation information will continue to appear indefinitely.
5. Enter the ‘Length between updates’ for the geolocation data. The default number of days is **7**.
6. To save the configuration, select **Stage Changes**.
### Configuring the Machine Learning Engine Analyzer
The Machine Learning Engine makes probabilistic determinations as to whether files are considered benign or malicious. This analyzer is made up of several classifiers, which analyze very specific filetypes. For example, there could be 12 different classifiers covering portable executables alone. The result of analysis by the Machine Learning Engine is a confidence score between zero and 100.
- Scores closer to 100 indicate more malicious characteristics.
- Scores closer to zero indicate more benign characteristics.
Each classifier has an associated threshold. A file with a score above this threshold is flagged as suspicious, otherwise it is declared benign.
The configuration screen will display the recommended decision thresholds for each classifier. You can adjust the thresholds, based on your risk appetite. For example, a nuclear power firm may be inclined to lower the recommended thresholds, in order to not miss a single false negative. For some organizations, this risk reduction may be worth the expense of possibly producing more false positives.
In order to evaluate files, the Machine Learning Engine extracts a wide variety of metadata that is specific to each filetype. From the configuration screen, you can select how much of the human-readable metadata to retrain as part of the event. The following options are available for how much metadata to include for each filetype:
- **Disabled**: No analysis will be performed on this filetype.
- **Analyze - No Metadata**: The Machine Learning Engine will produce only a score.
- **Analyze - Standard Metadata**: The Machine Learning Engine will produce a score and include humanreadable metadata fields of interest to a typical analyst.
- **Analyze - Verbose Metadata**: The Machine Learning Engine will produce a score and include all humanreadable metadata fields. Only the **Standard Metadata** fields will be displayed in the ATD GUI, but all fields will be available in the raw event metadata.
The procedure below describes how to enable or disable the Machine Learning Engine, adjust decision thresholds, and subscribe to or unsubscribe from filetypes. This analyzer is enabled by default.
**Procedure: Configure the Machine Learning Engine Analyzer**
Follow these steps to configure the Machine Learning Engine Analyzer settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **Hector**. Hector is the Machine Learning Engine. The “Hector Configuration” Screen appears (see Figure: *Hector Configuration Screen*).
 *Fig. 81: Hector Configuration Screen*
3. To enable the Machine Learning Engine, choose **Enabled**. To disable the Machine Learning Engine, clear **Enabled**.
4. The **Analysis Levels** section displays various filetypes, along with their analysis levels. To subscribe the Machine Learning Engine to a filetype, select the appropriate analysis level for that filetype. To unsubscribe from a filetype, set its analysis level to **Disabled**.
5. Below the **Analysis Levels** section, you will see a **Models** section. There are sliders for each filetype. Move the sliders to adjust the thresholds for malicious flagging. A higher threshold requires a higher score to be declared malicious, which then reduces the number of flagged events. A higher threshold, however, risks the possibility of increased false negatives (missed malware). The recommended threshold varies for each classifier. Note that a single BluVector filetype may correspond to multiple fine-grained Machine Learning Engine filetypes.
6. To save the configuration, select **Stage Changes**.
For more information in general about configuring analyzers and the overall categories of flagged content, see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers).
### Configuring the hURI Analyzer
The hURI Analyzer uses machine learning techniques to detect potentially malicious URIs. Similar to the Machine Learning Engine, the result of hURI’s analysis is a confidence level between zero and 100.
- Scores closer to 100 indicate more malicious characteristics.
- Scores closer to zero indicate more benign characteristics.
The analyzer uses a single classifier and has a recommended suspicious threshold of 50. A URI with a score above this threshold is flagged, otherwise it is declared benign. The configuration screen will display the recommended decision threshold for the classifier. You can adjust the threshold, based on your risk appetite.
You can enable or disable the hURI Analyzer, set the number of hURI processes, and set the decision threshold. These procedures are described below.
**Procedure: Configure the hURI Analyzer**
Follow these steps to configure the hURI settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **hURI**. The “hURI Configuration” Screen appears (see Figure: *hURI Configuration Screen*).
 *Fig. 82: hURI Configuration Screen*
3. To enable hURI, choose **Enabled**. To disable hURI, clear **Enabled**.
4. Set the threshold for classifying URIs as malicious by moving the **Suspicious Threshold** slider to the desired threshold.
5. To save the configuration, select **Stage Changes**.
### Configuring the IntelLookup Analyzer
The IntelLookup Analyzer is the engine that correlates event and file metadata with threat intelligence sources. If there is an intelligence hit, the result of IntelLookup’s analysis is a dictionary that varies by intelligence provider. If no intelligence providers are configured in the system, there will not be any intelligence hits. You can configure threat intelligence feeds and view intelligence indicator metrics on the configuration screen.
You can enable or disable the IntelLookup Analyzer and subscribe to or unsubscribe from an event type. These procedures are described below.
**Procedure: Configure the IntelLookup Analyzer**
Follow these steps to configure the IntelLookup Analyzer settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **IntelLookup**. The “IntelLookup Configuration” Screen appears (see Figure: *IntelLookup Configuration Screen*).
 *Fig. 83: IntelLookup Configuration Screen*
3. To enable IntelLookup, choose **Enabled**. To disable IntelLookup, clear **Enabled**. This analyzer is enabled by default.
4. The **Analyzed Event Types** section shows a list of event types. IntelLookup can analyze any BluVector event type. To enable lookups on a particular event type, select the appropriate event type. To unsubscribe IntelLookup from an event type, deselect the event type.
5. To save the configuration, select **Stage Changes**.
- **bv_event_intel** refers to intelligence correlation at the event level (such as IP addresses and hostnames)
- **bv_event_file** refers to intelligence correlation at the file level (for example, MD5 and SHA256 hashes)
- **bv_event_user** refers to user-defined events based on custom Zeek scripts
### Configuring the IOCHunter Analyzer
The IOCHunter Analyzer enriches file metadata by extracting potentially interesting indicators from the file binary, such as URLs and email addresses. These indicators can be used to enhance understanding while analyzing an event or as inputs to custom rules.
You can enable or disable the IOCHunter Analyzer and subscribe to or unsubscribe from a filetype. These procedures are described below.
**Procedure: Configure the IOCHunter Analyzer**
Follow these steps to configure the IOCHunter settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **IOCHunter**. The “IOCHunter Configuration” Screen appears (see Figure: *IOCHunter Configuration Screen*).
 *Fig. 84: IOCHunter Configuration Screen*
3. To enable IOCHunter, choose **Enabled**. To disable IOCHunter, clear **Enabled**.
4. The **Analyzed File Types** section shows a list of filetypes. IOCs will only be extracted from the selected filetypes. To subscribe IOCHunter to a filetype, select the appropriate filetype. To unsubscribe IOCHunter from a filetype, deselect the filetype.
5. To save the configuration, select **Stage Changes**.
### Configuring the Yara Analyzer
Yara is a rule-based utility that is primarily used to classify and identify malware samples. The rules consist of textual or binary patterns and hit on content that exhibits the matching criteria. Multiple rules can hit on the same piece of content that is being analyzed. By default, the BluVector Sensor does not ship with any Yara rules. You can add rules using the command-line or the BluVector API. See [Yara Document](https://plusvic.github.io/yara/) for more information about Yara.
You can enable or disable the Yara Analyzer, subscribe to or unsubscribe from a filetype, and set the number of Yara processes. This analyzer is enabled by default. These procedures are described below.
**Procedure: Configure the Yara Analyzer**
Follow these steps to configure the Yara settings:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **Yara**. The “Yara Configuration” Screen appears (see Figure: *Yara Configuration Screen*).
 *Fig. 85: Yara Configuration Screen*
3. To enable Yara, choose **Enabled**. To disable Yara, clear **Enabled**.
4. The **Analyzed File Types** section shows a list of filetypes. To subscribe Yara to a filetype, select the appropriate filetype. To unsubscribe Yara from a filetype, deselect the filetype.
5. To save the configuration, select **Stage Changes**.
You may also upload custom Yara rules and manage those provided by BluVector. The uploaded files are maintained through the Artifact Storage. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for a description of this feature. The following procedure provides more explanation on how to upload Yara rules.
**Procedure: Add, Download, or Remove Yara Rules**
Follow these steps to update the Yara rules:
1. Navigate to the “Analyzers Configuration” Screen (see Section: [*Configuring BluVector Sensor Analyzers*](/user-manual/docs/system-configuration#configuring-bluvector-sensor-analyzers)).
2. Select **Yara**. The “Yara Configuration” Screen appears (see Figure: *Yara Configuration Screen*).
3. Select **Rules Management** in the menu that appears on the left. The “Yara Rules Management” Screen appears (see Figure: *Yara Rules Management Screen*).
 *Fig. 86: Yara Rules Management Screen*
4. Select **Upload File** to select files from the local machine to upload.
5. Select the file to upload.
6. Select the locations that should have this file enabled.
7. Choose the filetype for the upload from the list of options.
8. Select **Upload**.
9. Select **Restart Yara** for the changes to take effect.
10. After uploading, the screen displays the current list of uploaded files. See Section: [*Managing the Artifact Storage*](/user-manual/docs/system-configuration#managing-the-artifact-storage) for more information about the displayed columns. An additional column **FILE TYPE** displays the filetype, which can be changed.
11. You can download a file by selecting the **download icon** for that row.
12. To remove a file, select the **trash can icon** on the row containing the file you wish to remove. You will be asked to confirm the deletion.
## Configuring Threat Intelligence Providers
The BluVector Sensor supports third-party threat intelligence providers. The system has built-in support for several providers. In addition to commercial third-party threat intelligence feeds, BluVector also supports several community standards for sharing cyber threat intelligence. You can configure the providers.
Note that you must license your own access credentials in order to configure an intelligence provider. Each configuration procedure includes a link to the provider’s website.
This section documents the following configuration procedures for the third-party threat intelligence providers that are built into the BluVector Sensor:
- Entering licensed access credentials that are required
- Enabling intelligence providers
- Changing the update frequency of the intelligence data (optional)
- Changing the intelligence signature attributes (optional)
First, navigate to the “Intelligence Configuration” Screen to proceed, as follows:
1. Log in to the **ATD GUI**.
2. Select the **sprocket icon** at the top right.
3. Select **Intelligence**. The “Intelligence Configuration” Screen appears (see Figure: *Intelligence Configuration Screen*)
 *Fig. 87: Intelligence Configuration Screen*
On this screen, you can view metrics information of the threat intelligence indicators that currently exist within the system. You can manage an allowlist to reduce the number of possible false positives, and you can configure the various intelligence providers. See the following sections for more information:
- Section: [*Configuring the Allowlist*](/user-manual/docs/system-configuration#configuring-the-allowlist)
- Section: [*Configuring AlienVault OTX Intelligence Provider*](/user-manual/docs/system-configuration#configuring-alienvault-otx-intelligence-provider)
- Section: [*Configuring a STIX/TAXII Intelligence Provider*](/user-manual/docs/system-configuration#configuring-a-stixtaxii-intelligence-provider)
- Section: [*Configuring a MISP Intelligence Provider*](/user-manual/docs/system-configuration#configuring-a-misp-intelligence-provider)
### Configuring the Allowlist
You may want to mark certain domains, hashes, or IPs (v4 or v6) as safe in order to reduce the number of possible false positives from intelligence reporting. Any BluVector ATD events containing these values will not generate any Intel results. The following procedure describes how to add and remove allowlist entries.
**Procedure: Add Entries to the Allowlist**
Follow these steps to add entries to the allowlist:
1. Navigate to the “Intelligence Configuration” Screen (see Section: [*Configuring Threat Intelligence Providers*](/user-manual/docs/system-configuration#configuring-threat-intelligence-providers)).
2. Select **General**. The “Allowlist Configuration” Screen appears (see Figure: *Allowlist Configuration Screen*).
 *Fig. 88: Allowlist Configuration Screen*
3. The current entries in the allowlist are displayed, organized by Domain, Hash, and IP.
4. To add a new item, select **Add Allowed Item**. You will be asked for more details.
5. In the ‘Item Type’ field, select whether you are entering a safe domain, hash, or IP.
6. In the ‘Allow Item’ field, enter the text or numbers for the entry.
7. Select **Add** to complete the entry.
8. You can immediately enter additional items, or you can close the popup window by selecting the **X** at the top of that window.
**Procedure: Remove an Entry from the Allowlist**
Follow these steps to remove an entry from the allowlist:
1. Navigate to the “Intelligence Configuration” Screen (see Section: [*Configuring Threat Intelligence Providers*](/user-manual/docs/system-configuration#configuring-threat-intelligence-providers)).
2. Select **General**. The “Allowlist Configuration” Screen appears (see Figure: *Allowlist Configuration Screen*).
3. Locate the entry you wish to remove. Select the **trash can icon** for that row.
4. You will be asked to confirm the deletion.
### Configuring AlienVault OTX Intelligence Provider
You can configure a BluVector Sensor to use the free, open source threat intelligence feed provided by AlienVault at [OTX document](https://otx.alienvault.com/). You must register with AlienVault to receive an API key. The following procedure describes how to configure this feed.
**Procedure: Configure AlienVault OTX Intelligence Provider**
Follow these steps to configure the AlienVault OTX settings:
1. Navigate to the “Intelligence Configuration” Screen (see Section: [*Configuring Threat Intelligence Providers*](/user-manual/docs/system-configuration#configuring-threat-intelligence-providers)).
2. Select **Alien Vault OTX**. The “AlienVault OTX Intelligence Configuration” Screen appears (see Figure: *AlienVault OTX Intelligence Configuration Screen*).
 *Fig. 89: AlienVault OTX Intelligence Configuration Screen*
3. To activate the service, select **Provider Enabled**.
4. If you are using a proxy, first configure the proxy in BluVector ATD Host (see Section: [*Configuring System Proxies*](/user-manual/docs/system-configuration#configuring-system-proxies)). Then select **Use Proxy**.
5. Enter a number of days in the ‘Time to Live (days)’ field. After this many days following receipt of the intelligence, the system will no longer use the information.
6. Enter the host information into the ‘Host’ field.
7. Enter your API key received from AlienVault in the ‘API Key’ field.
8. In the ‘Max number of days to look back for signatures’ field, enter the maximum days to search in the past for signatures. Enter **0** to look back for an unlimited time.
9. In the ‘Max number of pages to look back for signatures’ field, enter the maximum pages to search in the past. Enter **0** to look back for an unlimited time.
10. You can select **Test Connectivity** in order to test the connection to the provider and inform you whether it passed or failed.
11. Select **Stage Changes** to apply and save the updated configuration.
### Configuring a STIX/TAXII Intelligence Provider
You can configure a BluVector Sensor to use the STIX/TAXII Intelligence Provider available at [Oasis documentation](https://oasis-open.github.io/cti-documentation/). This service provides custom and community cyber threat intelligence. Structured Threat Information Expression (STIX) is a language and serialization format used to exchange cyber threat intelligence. Trusted Automated Exchange of Intelligence Information (TAXII) is an application layer protocol for communicating cyber threat information in a simple and scalable manner over HTTPS. TAXII enables organizations to share cyber threat intelligence by defining an API that aligns with common sharing models. TAXII is specifically designed to support the exchange of cyber threat intelligence represented in STIX.
The BluVector Sensor supports the integration of multiple STIX/TAXII feeds. Each feed must be configured separately. The following procedure describes how to configure this feed.
**Procedure: Configure STIX/TAXII Intelligence Provider**
Follow these steps to configure the STIX/TAXII settings:
1. Navigate to the “Intelligence Configuration” Screen (see Section: [*Configuring Threat Intelligence Providers*](/user-manual/docs/system-configuration#configuring-threat-intelligence-providers)).
2. Select TAXII. The “TAXII Services Intelligence Configuration” Screen appears (see Figure: *TAXII Configuration Screen*).
 *Fig. 90: TAXII Configuration Screen*
3. Enter a name for this TAXII feed in the ‘Name’ field.
4. To activate the service, select **Provider Enabled**.
5. If you are using a proxy, first configure the proxy in BluVector ATD Host (see Section: [*Configuring System Proxies*](/user-manual/docs/system-configuration#configuring-system-proxies)). Then select **Use Proxy**.
6. Enter a number of days in the ‘Time to Live (days)’ field. After this many days following receipt of the intelligence, the system will no longer use the information.
7. Enter the host information into the ‘Host’ field.
8. Enter the username into the ‘Username’ field.
9. Enter the password into the ‘Password’ field.
10. You can select **Test Connectivity** in order to test the connection to the TAXII server and inform you whether it passed or failed.
11. Select **Stage Changes** to apply and save the updated configuration.
### Configuring a MISP Intelligence Provider
You can configure a BluVector Sensor to use the MISP Intelligence Provider available at the [MISP website](https://www.misp-project.org/). This service is an open source cyber threat intelligence sharing platform. You must acquire access credentials before starting this configuration procedure.
**Procedure: Configure the MISP Intelligence Provider**
Follow these steps to configure the MISP settings:
1. Navigate to the “Intelligence Configuration” Screen (see Section: [*Configuring Threat Intelligence Providers*](/user-manual/docs/system-configuration#configuring-threat-intelligence-providers)).
2. Select **MISP**. The “MISP Intelligence Configuration” Screen appears (see Figure: *MISP Configuration Screen*).
 *Fig. 91: MISP Configuration Screen*
3. Enter a name for the MISP feed in the ‘Name’ field.
4. To activate the service, select **Provider Enabled**.
5. If you are using a proxy, first configure the proxy in BluVector ATD Host (see Section: [*Configuring System Proxies*](/user-manual/docs/system-configuration#configuring-system-proxies)). Then select **Use Proxy**.
6. Enter a number of days in the ‘Time to Live (days)’ field. After this many days following receipt of the intelligence, the system will no longer use the information.
7. Enter the host information into the ‘Host’ field.
8. Enter your API key in the ‘API Key’ field to authenticate with the provider.
9. Configure the number of seconds to search back for attributes (that is, intelligence IoCs) in the ‘Look Back Time (Sec)’ field.
10. In the ‘Record Limit’ field, enter the maximum number of records in the response for records from this intelligence provider.
11. The ‘Verify Certificate’ field controls whether or not to accept a self-signed SSL certificate from the server supplying this intelligence. Enter True to reject a self-signed certificate. Enter False to bypass the validation step.
12. You can select **Test Connectivity** in order to test the connection to the MISP server and inform you whether it passed or failed.
13. Select **Stage Changes** to apply and save the updated configuration.
## Configuring Outputs
A very flexible and transparent framework for sending messages to external devices is natively built into the BluVector Sensor. The messages encompass a subset of event and file metadata, based on user-defined key mappings. Messages can be created in several different formats and transmitted over a variety of different protocols. The most common use case is to route syslog messages to SIEM tools when the BluVector Sensor detects a suspicious event on the network.
First, navigate to the “Outputs Configuration” Screen to proceed, as follows:
1. Log in to the **ATD GUI**.
2. Select the **sprocket icon** at the top right.
3. Select **Outputs**. The “Outputs Configuration” Screen appears (see Figure: *Outputs Configuration Screen*).
 *Fig. 92: Outputs Configuration Screen*
See the following sections for how to configure:
- Section: [*Configuring and Using Key Mappings*](/user-manual/docs/system-configuration#configuring-and-using-key-mappings)
- Section: [*Configuring Event Forwarding*](/user-manual/docs/system-configuration#configuring-event-forwarding)
- Section: [*Configuring Zeek Forwarding*](/user-manual/docs/system-configuration#configuring-zeek-forwarding)
- Section: [*Configuring DataBee Forwarding*](/user-manual/docs/system-configuration#configuring-databee-forwarding)
- Section: [*Configuring a Generic TCP/UDP or Syslog Output*](/user-manual/docs/system-configuration#configuring-a-generic-tcpudp-or-syslog-output)
- Section: [*Configuring an Email Output*](/user-manual/docs/system-configuration#configuring-an-email-output)
- Section: [*Configuring a File Upload Output*](/user-manual/docs/system-configuration#configuring-a-file-upload-output)
- Section: [Configuring a Kafka Output](/user-manual/docs/system-configuration#configuring-a-kafka-output)
### Configuring and Using Key Mappings
It is helpful to develop custom key mappings. It allows you to transform the keys in the BluVector event schema to be consistent with external devices that ingest data from multiple sources. User-defined key maps allow you to send messages to SIEM tools in a particular structure, so that they can be effectively used for event correlation and incident response. Each of the keys in the BluVector event schema can be re-mapped to alternate key names as desired.
To bring up the Key Mappings Outputs Configuration Screen:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Key Mappings**. The “Key Mapping Configuration” Screen appears (see Figure: *Key Mappings Configuration Screen*).
 *Fig. 93: Key Mappings Configuration Screen*
The **default** mapping details appear, along with any other mappings. The mapping details can be expanded or contracted. You can create, modify, and delete key mappings from the “Key Mappings Configuration” Screen. The procedures below describe how to manage the mappings.
**Procedure: Create a Key Map**
Follow these steps to create a new output key map:
1. Navigate to the “Key Mappings Configuration” Screen (see Figure: *Key Mappings Configuration Screen*).
2. Select **Add** **New** at the very bottom of the screen. A new set of mapping details appears. The fields will be prefilled with default values.
3. Enter a new map name for ‘Name’.
4. Modify the existing mapping details by replacing field entries in the list.
5. Delete a row by selecting the **trash can** for the appropriate row.
6. To add a row, click **Add** on the bottom and fill in the fields.
7. When you are finished, select **Stage Changes** or **Cancel**, as appropriate.
**Procedure: View or Edit a Key Map**
Follow these steps to view or edit an existing output key map.
1. Navigate to the “Key Mappings Configuration” Screen (see Figure: *Key Mappings Configuration Screen*).
2. Select **down caret** on the title row for the key map name you wish to view or edit. The details of the mapping appear in a list.
3. Modify the existing mappings by entering new information into the appropriate fields in the list.
4. Delete mappings by selecting the **trash can** for the appropriate row.
5. To add mappings, select **Add** at the bottom of the list and fill in the fields.
6. When you are finished, select **Stage Changes** or **Cancel**, as appropriate.
**Procedure: Deleting a Key Map**
Follow these steps to delete a key map from the BluVector Sensor. Deleted key maps are not archived and cannot be restored.
1. Navigate to the “Key Mappings Configuration” Screen (see Figure: *Key Mappings Configuration Screen*).
2. Select the **down caret** on the title row for the key map name you wish to delete. The details of the mapping appear in a list.
3. Select **Delete** at the bottom of the list.
4. When you are finished, click the **Stage Changes** or **Cancel** button on the bottom, as appropriate.
### Configuring Event Forwarding
Event forwarding sends complete BluVector events over a network to a different host. A BluVector event consists of the event metadata and, optionally, the binary file content associated with the event. Events are sent using the 0MQ distributed messaging bus and are in BSON format. A 0MQ listener must be available to receive the events. Multiple event forwarding outputs may be configured. See [ZeroMQ website](http://www.zeromq.org/) for more information about 0MQ.
You can enable or disable event forwarding, decide whether to include binary file content, and manage other settings. These are described in the following procedure.
**Procedure: Configure Event Forwarding**
Follow these steps to configure the event forwarding settings:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Event Forwarding**. The “Event Forwarding Outputs Configuration” Screen appears (see Figure: *Event Forwarding Outputs Configuration Screen*).
 *Fig. 94: Event Forwarding Outputs Configuration Screen*
3. The event forwarding output details appear. The output details can be expanded or contracted.
4. To create a new event forwarding output, make sure that the title row displays **New Item**. If necessary, select **Add New** at the very bottom of the screen. Then enter the appropriate information, described in the following steps.
5. To enable the output, select **Send Events**. To disable the output, clear **Send Events**.
6. To include the binary file content associated with an event, select **Forward file content**. To not include the binary content, clear **Forward file content**.
7. Enter the desired values in the following fields:
- Enter a name for ‘Output Name’.
- Set a unique identifier key name for this event forwarder by entering the desired string for ‘Unique Identifier Key’. To include a unique identifier with each forwarded event, select **Include Unique Identifier**. The unique identifier string will appear in the event under the key name provided for ‘Unique Identifier Key’.
- Set a target address by entering the hostname or IP address in the ‘Target’ field. The target represents the address of the external device that will be receiving the generated 0MQ messages.
- Enter the port number in the ‘Port’ field.
- To include the fully qualified domain name (FQDN) in the output for events, select **Include fqdn in the output under the sensor_hostname key,** **for JSON, CSV, or LEGACY_CSV formats**.
- Enter the output routing criteria in the ‘Output routing criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
8. To add another event forwarding output, select **Add New** at the very bottom of the screen, then repeat the above steps.
9. You can view the details for a particular event forwarding output by selecting the **down caret** on the title row.
10. To delete an event forwarding output, select **Delete**.
11. To save your new settings, select **Stage Changes**.
### Configuring Zeek Forwarding
Zeek forwarding sends Zeek logs associated with a BluVector event to a Kafka broker. Only Zeek logs that have the same [community id](https://github.com/corelight/community-id-spec) as the BluVector event are sent. This is a small subset of the targeted logs for that event.
**Procedure: Configure Zeek Forwarding**
Follow these steps to configure the Zeek forwarding settings:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Zeek Forwarding** in the menu that appears on the left. The “Zeek Output Configuration” Screen appears (see Figure: *Zeek Forwarding Output Configuration Screen*).
 *Fig. 95: Zeek Forwarding Output Configuration Screen*
3. Select **Integration Enabled** to enable this output.
4. Select **Debug Logging Enabled** to enable more verbose logging output.
5. Enter the desired values in the following fields:
- Enter the desired name for the ‘Integration Name’.
- Enter the output routing criteria in the ‘Integration Routing Criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
Another example entry would be:
`(suricata != None and suricata == exists(true)) or status > "review"`
- In ‘Kafka Broker’, enter a Kafka bootstrap server (also known as a broker) that the client should use for your Kafka cluster. Entries should be in host:port format.
- Enter the topic name for the events in ‘Kafka Topic’.
- In the ‘Security Protocol’ field, select either **PLAINTEXT** or **SSL** as the security protocol to use when communicating.
- Paste the contents of the client certificate into the ‘Client Certificate’ field.
- If you are using SSL, you will need to paste both the client key and client certificate. Enter the client key in the ‘Client Key’ field.
- If your Client Key requires a password, enter the password into the ‘Client Password’ field.
- To bypass verifying the remote certificate when connecting, select **Skip TLS Verification**.
- Paste the contents of the remote certificate into the ‘Remote Certificate’ field.
6. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
7. To add another Zeek Forwarding output, select **Add New** at the very bottom of the screen, and then repeat the above steps.
8. To delete a Zeek Forwarding output, select **Delete** to the right of the output name, and then select **Stage** **Changes**.
### Configuring DataBee Forwarding
DataBee is a companion product to BluVector ATD. You can forward both Zeek network telemetry and detection event data from BluVector ATD to DataBee to automate hunting for threats that may have breached your network. See Section: [*Protecting with BluVector Products*](/user-manual/docs/bv-docs-560-introduction#protecting-with-bluvector-products) for more information about how the products work together.
The procedure below provides more details on how to configure BluVector ATD to forward data to DataBee.
**Procedure: Configure DataBee Event Forwarding**
Follow these steps to configure forwarding of detection events to DataBee:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Databee Event Forwarding** in the menu that appears on the left. The “DataBee Event Forwarding Configuration” Screen appears (see Figure: *DataBee Event Forwarding Configuration Screen*).
 *Fig. 96: DataBee Event Forwarding Configuration Screen*
3. Select **Send Events** to enable DataBee Event Forwarding.
4. Enter a unique ‘Output Name’ that does not conflict with any other BluVector ATD output names.
5. Select whether or not you want to use the configured proxy.
6. Enter the ‘Endpoint URL’ for the target DataBee server. This can be found by logging into DataBee, opening the system configuration, and selecting **HTTP Collector**, then copy the **Endpoint URL** into this field.
7. Enter the ‘API Key’ generated when setting up the BluVector Detection Events data feed in DataBee.
8. Enter the ‘Tenant ID’ for the BluVector Detection Events data feed in DataBee.
9. Enter the ‘Source ID’ for the BluVector Detection Events data feed in DataBee.
10. In the ‘Output Routing Criteria’ field, enter a selector for which events to output. For example, you might enter:
`(suricata != None and suricata == exists(true)) or status >= "suspicious"`
11. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
**Procedure: Configure DataBee Zeek Forwarding**
Follow these steps to configure forwarding of Zeek logs to DataBee:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **DataBee Zeek Forwarding** in the menu that appears on the left. The “DataBee Zeek Forwarding Configuration” Screen appears (see Figure: *DataBee Zeek Forwarding Configuration Screen*).
 *Fig. 97: DataBee Zeek Forwarding Configuration Screen*
3. Select **Send Zeek Logs to AWS S3** to enable DataBee Zeek Forwarding.
4. Select whether or not to use the configured proxy.
5. Enter the ‘AWS S3 Zeek Bucket Path’ for the S3 bucket where the logs will be written.
6. Enter the ‘AWS S3 Region’ where the S3 bucket exists.
7. Enter the ‘Amazon Resource Name (ARN) of IAM Role’ for the IAM Role that can write to the S3 bucket.
8. Enter the ‘AWS S3 Access Key ID’ if applicable.
9. Enter the ‘AWS S3 Secret Access Key’ if applicable.
10. Enter the ‘AWS S3 Session Token’ if applicable.
11. In the **Included Logs** section, select the Zeek logs you wish to forward to DataBee.
12. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
### Configuring a Generic TCP/UDP or Syslog Output
Messages about BluVector alerts and events can be sent in raw TCP or UDP format.
- TCP is a connection-oriented and reliable transport layer protocol.
- UDP is a connection-less and unreliable transport layer protocol.
- Syslog is a standard for message logging, and it is a critical component of conducting event correlation and incident response within Security Operations Centers (SOCs).
The BluVector Sensor has an output utility that permits you to generate and transmit messages based on userdefined routing criteria (for example, if the Machine Learning Engine detects a suspicious executable over SMTP). You can add, modify, or delete a TCP/UDP output. The procedure below provides more details.
**Procedure: Configure a TCP/UDP Output**
Follow these steps to configure a TCP/UDP output:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **TCP/UDP** in the menu that appears on the left. The “TCP/UDP or Syslog Outputs Configuration” Screen appears (see Figure: *TCP/UDP or Syslog Outputs Configuration Screen*).
 *Fig. 98: TCP/UDP or Syslog Outputs Configuration Screen*
3. Select **Send Events** to enable this output to send BluVector detection events.
4. Enter the desired name for the ‘Output Name’.
5. In the ‘Format’ field, select one of the following formats:
- **Common Event Format**
- **Comma Separated Values**
- **JSON**
- **Legacy Comma Separated Values**
- **Syslog forwarded events with a json message field**
6. Select **Send Alerts** to use this output to send health and status alert messages.
7. Enter a hostname or IP address for the ‘Hostname or IP address on which the socket is connected’ field.
8. Enter the port number for ‘Port’.
9. Select **Include Unique Identifier** to include the ‘Output Name’ in the message for events.
10. Enter a unique identifier key string in the ‘Unique Identifier Key’ field. This key will be used in the output to map to the Unique Identifier (applies only to events). It is recommended to enter `channel`.
11. To include the fully qualified domain name (FQDN) in the output for events, select **Include fqdn in the output under the sensor_hostname key, for JSON, CSV, or LEGACY_CSV formats.**
12. Select a choice for the **Key map.** You can define your own to add to this list:
- **default**
- **ath_output**
- **splunkmapping**
13. Enter the output routing criteria in the ‘Output Routing Criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
Another example entry would be:
`status>='suspicious'`
14. Select a protocol for ‘Protocol’. You can choose between **TCP** and **UDP**.
15. Select what type of program is logging the message in the ‘Facility’ field. You can choose from many options.
16. Select a priority for the message in the ‘Priority’ field. You can choose from many options.
17. Select **Send as SysLog** to format the message to be consumed by a syslog service.
18. To encrypt communications using TLS, select **Enable SSL/TLS communication**.
19. Select the version for ‘TLS Version’, which can be either **v1.1** or **v1.2**.
20. You can select **Test Connectivity** in order to test the connection and inform you whether it passed or failed.
21. Apply and save the new settings by selecting **Stage Changes**.
22. To add another TCP/UDP output, select **Add New** at the very bottom of the screen, and then repeat the above steps.
23. To delete a TCP/UDP output, select **Delete**, and then select **Stage Changes**.
### Configuring an Email Output
Messages about BluVector events can be sent as emails. You may elect to send matching system events, health and status alerts, or both. The procedure below provides more details.
**Procedure: Configure an Email Output**
Follow these steps to configure an email output:
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Email** in the menu that appears on the left. The “Email Output Configuration” Screen appears (see Figure: *Email Output Configuration Screen*).
 *Fig. 99: Email Output Configuration Screen*
3. Select **Send Events** to enable this output to send events.
4. Select **Send Alerts** to use this output to send health and status alerts.
5. Enter the desired values in the following fields:
- Enter the desired name for the ‘Output Name’.
- To include the fully qualified domain name (FQDN) in the output for events, select **Include fqdn in the output under the sensor_hostname key, for JSON, CSV, or LEGACY_CSV formats**.
- You may select a **custom** or **default** key map for ‘Key Map’. Messages are structured in the default key map by default.
- Enter the ‘Hostname or IP address of the SMTP server’ to use to send the email.
- Enter the ‘Port that the SMTP gateway listens to’, typically **587**.
- Enter the ‘SMTP User for authentication’ and ‘Password of the SMTP user’ for the account from which to send the email.
- Enter the ‘Email address for origination’, which is used to populate the ‘From’ field of the email.
- To set a list of recipients, enter a comma-separated list of email addresses in the ‘List of email addresses to send to’ field.
- Enter the output routing criteria in the ‘Output Routing Criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
6. You can select **Test Connectivity** in order to test the connection and inform you whether it passed or failed.
7. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
8. To add another email output, select **Add New** at the very bottom of the screen, and then repeat the above steps.
9. To delete an email output, select **Delete**, then click the **Stage Changes**.
### Configuring a File Upload Output
A File Upload output allows the file binary associated with select BluVector events to be sent over the network to another system. No metadata regarding the file is transmitted. If you want to send the file content and metadata, consider an Event Forwarding Output instead. Files are transmitted using the secure file transfer protocol (SFTP). This method requires account login information for a user with SFTP capabilities on the destination machine. It is recommended to create a new user that only has SFTP access on the destination system. Files will be stored using a tree structure associated with the sha256 of the file, starting at the base of the configured directory. If no directory is configured, the user’s configured home directory will be used. For example, a file with the sha256 of: `bacaf76cd3cf101269e4703880398c1363749a314c0db29c1f9afb6879a5babc` would be stored in the following location:
`/home/sftpuser/b/a/c/a/bacaf76cd3cf101269e4703880398c1363749a314c0db29c1 f9afb6879a5babc`
The procedure below describes how to manage file uploads.
**Procedure: Configure a File Upload Output**
Follow these steps to configure a File Upload output:
1. Navigate to the “Outputs Configuration” Screen (see Section: [Configuring Outputs](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **File Upload** in the menu that appears on the left. The “File Upload Output Configuration” Screen appears. (see Figure: *File Upload Output Configuration Screen*).
 *Fig. 100: File Upload Output Configuration Screen*
3. Select **Send Events** to enable this output.
4. Type the desired values in the following fields:
- Enter the desired name for the ‘Output Name’.
- Enter the hostname or IP address in ‘Target’ with the address of the external device that will be receiving the SFTP traffic.
- Enter a port number in the ‘Port’ field.
- To include the fully qualified domain name (FQDN) in the output for events, select **Include fqdn in the output under the sensor_hostname key, for JSON, CSV, or LEGACY_CSV formats**.
- Enter the target directory name in ‘Upload Directory’.
- Enter the username for the remote system in ‘Username’.
- Enter the password for the remote system in ‘Password’.
- Enter the output routing criteria in the ‘Output Routing Criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
5. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
6. To add another File Upload output, select **Add New** at the very bottom of the screen, and then repeat the above steps.
7. To delete a File Upload output, select **Delete** to the right of the output name, and then select **Stage Changes**.
### Configuring a Kafka Output
Kafka is an open-source message broker that builds real-time data pipelines. Messages can be posted to Kafka topics, and subscribers of those topics can read the messages. See the [Kafka website](https://kafka.apache.org/) for more information about Kafka.
You can add, modify, or delete a Kafka output. The procedure below provides more details.
**Procedure: Configure a Kafka Output**
1. Navigate to the “Outputs Configuration” Screen (see Section: [*Configuring Outputs*](/user-manual/docs/system-configuration#configuring-outputs)).
2. Select **Kafka** in the menu that appears on the left. The “Kafka Output Configuration” Screen appears (see Figure: *Kafka Output Configuration Screen*).
 *Fig. 101: Kafka Output Configuration Screen*
3. Select **Send Events** to enable this output.
4. Enter the desired values in the following fields:
- Enter the desired name for the ‘Output Name’.
- To include the Output Name in the output for events, select **Include Unique Identifie**r.
- Enter a value for ‘Keymap’, such as `ath_output`.
- Enter the output routing criteria in the ‘Output Routing Criteria’ field. This criteria is equivalent to the queries that drive the **Event Viewer** (see Section: [*Searching Events with Queries*](/user-manual/docs/system-operations#searching-events-with-queries)). For example, to generate messages on all files flagged by the Machine Learning Engine over the SMTP protocol (note that SMTP messages are translated to the EML format), you would type:
`files.flags=='hector' and meta.app=='eml'`
Another example entry would be:
`(suricata != None and suricata == exists(true)) or status > "review"`
- In ‘Kafka Boot Strap Servers’, enter a list of Kafka bootstrap servers (also known as brokers) that the client should use for your Kafka cluster. Entries should be in host:port format.
- Enter the topic name for the events in ‘Kafka Topic’.
- In the ‘Security Protocol’ field, select either **PLAINTEXT** or **SSL** as the security protocol to use when communicating.
- Paste the contents of the client certificate into the ‘Client Certificate’ field.
- If you are using SSL, you will need to paste both the client key and client certificate. Enter the client key in the ‘Client Key’ field.
- If your Client Key requires a password, enter the password into the ‘Client Password’ field.
- To bypass verifying the remote certificate when connecting, select **Skip TLS Verification**.
- Paste the contents of the remote certificate into the ‘Remote Certificate’ field.
5. Apply and save the new settings by selecting **Stage Changes** at the bottom of the screen.
6. To add another Kafka output, select **Add New** at the very bottom of the screen, and then repeat the above steps.
7. To delete a Kafka output, select **Delete** to the right of the output name, and then select **Stage Changes**.
#### Configuring a Kafka Output for Zeek Logs
You can also send a BluVector Sensor’s Zeek logs to a Kafka message broker. Because Zeek’s Kafka plug-in is highly configurable, you must configure it through a Zeek script. The plug-in is already installed on the BluVector Sensor. To configure it, upload your Zeek script following the instructions in Section: [*Configuring the Zeek Collection Engine*](/user-manual/docs/system-configuration#configuring-the-zeek-collection-engine). Below are a few example templates. Additional templates and details about the plug-in are available on the Zeek Kafka Plugin Github Page at: [Kafka plugin Documentation](https://github.com/apache/metron-bro-plugin-kafka).
**Example 1: Send All Zeek Logs that Match Log Names**
Follow this example to send all Zeek logs to topic names that match the log names, such as **conn**, **http**, and **files**:
- The **topic_name** value must be set to an empty string.
- Any configuration value accepted by librdkafka can be added to the **kafka_conf** configuration table.
- The `metadata.broker.list` should be updated with your Kafka broker host:port pairs
*Listing 1: Example 1: Kafka Zeek Plug-in Template (all logs)*
```plaintext
@load Apache/Kafka
redef Kafka::topic_name = "";
redef Kafka::tag_json = F;
redef Kafka::kafka_conf = table(
["metadata.broker.list"] = "kafka:9092"
);
redef Kafka::send_all_active_logs = T;
```
**Example 2: Send a Subset of Zeek Logs that Match Log Names**
Follow this example to send a subset of Zeek logs to topic names that match the log names.
*Listing 2: Example 2: Kafka Zeek Plug-in Template (subset of logs)*
```plaintext
@load Apache/Kafka
redef Kafka::topic_name = "";
redef Kafka::tag_json = F;
redef Kafka::kafka_conf = table(
["metadata.broker.list"] = "kafka:9092"
);
redef Kafka::send_all_active_logs = F;
redef Kafka::logs_to_send = set(Conn::LOG, SMTP::LOG, Files::LOG);
```
**Example 3: Send HTTPS and DNS Logs to Custom Topic Names**
Follow this example to sending HTTP and DNS logs to custom topic names.
- The **$path** value of Zeek’s Log Writer mechanism defines the topic name.
- Any configuration value accepted by librdkafka can be added to the **$config** configuration table.
- Each log writer accepts a separate configuration table.
*Listing 3: Example 3: Kafka Zeek Plug-in Template (custom topic names)*
```plaintext
@load Apache/Kafka
redef Kafka::topic_name = "";
redef Kafka::tag_json = F;
redef Kafka::kafka_conf = table(
["metadata.broker.list"] = "localhost:9092"
);
event zeek_init() &priority=-10
{
# handles HTTP
local http_filter: Log::Filter = [
$name = "kafka-http",
$writer = Log::WRITER_KAFKAWRITER,
$config = table(
["metadata.broker.list"] = "localhost:9092"
),
$path = "custom-topic-http"
];
Log::add_filter(HTTP::LOG, http_filter);
# handles DNS
local dns_filter: Log::Filter = [
$name = "kafka-dns",
$writer = Log::WRITER_KAFKAWRITER,
$config = table(
["metadata.broker.list"] = "localhost:9092"
),
$path = "custom-topic-dns"
];
Log::add_filter(DNS::LOG, dns_filter);
}
```
If SSL communication with the Kafka message broker is required, users must stage three files on the BluVector ATD Host: The CA root certificate, the Kafka client certificate, and the Kafka client key. These are available from the Kafka broker. Once the files are staged in the ingest container (recommendations are for the CA root certificate to go in: `ingest:/etc/pki/ca-trust;` the client certificate in: `ingest:/etc/pki/tls/ certs;` and the client key in: `ingest:/etc/pki/tls/private`), then add the appropriate values to the `Kafka::kafka_conf` variable defined in the Zeek script. An example is provided below:
*Listing 4: Enabling SSL in Kafka Zeek Plug-in*
```plaintext
redef Kafka::kafka_conf = table(
["ssl.ca.location"] = "/etc/pki/ca-trust/