Searching in Assemblyline¶
Assemblyline provides robust search capabilities within its user interface, allowing users to search for anything stored in its indices. By using the search widget, users can submit queries following the Lucene query syntax, which are then handled by the search engine. The fields available for searching are determined by several Object Data Models (ODMs) captured via Elasticsearch indices.
Understanding Indices¶
Elasticsearch indices enable Assemblyline to deduplicate most of the results in the system, which significantly enhances its scalability. Searching through indexed fields is also remarkably fast.
Assemblyline has six primary indices:
-
Alert: Allows users to perform detailed searches on alerts to quickly identify and prioritize security incidents, taking into account various attributes such as threat indicators, classification, and timestamps.
-
File: Allows users to search for specific files within a submission, identify duplicates, and gather context about a file's properties such as its classification, entropy, and observed hash values.
-
Result: Allows users to search for specific service results, enabling the examination of the analysis performed by various services, including detailed scores, sections, and response data.
-
Retrohunt: Allows users to search retrospective threat hunt results from Yara rules applied to previously submitted samples. This facilitates the identification and analysis of new threats based on updated threat intelligence.
-
Signature: Allows users to search for service-specific signatures (e.g., YARA rules) and any relevant metadata, including source, statistics, classification, and status.
-
Submission: Allows users to manage and track submissions, viewing the files involved, analysis errors, maximum scores, and the lifecycle status of the submission, which provides a holistic view of the analysis process.
You can view all indices and their indexed fields from the Help > Search Help
menu in your Assemblyline installation.
Using the Search Interface¶
Search Bar¶
The search bar, located at the top of the user interface, lets you perform searches across all indices.
Search Page¶
Additionally, you can perform searches using the generic Search page.
Search Results¶
Search results will be displayed across the different indices. The results are categorized by:
- SUBMISSION
- FILE
- RESULT
- SIGNATURE
- ALERT
- RETROHUNT
You must limit your search criteria to a single index. Searching across multiple indices simultaneously (i.e., JOIN queries) is not supported.
This limitation can be mitigated by using the Assemblyline Client to perform queries on one index and then refine or enrich your search by querying another index.
Search Examples¶
Basic Searches¶
To familiarize yourself with the indices, use the "Find related results" option from the tags dropdown menu, accessible by right-clicking any tag found throughout Assemblyline.
For example, clicking it on the av.virus_name
tag (HEUR/Macro.Downloader.MRAA.Gen
) will generate the following query:
result.sections.tags.av.virus_name:"HEUR/Macro.Downloader.MRAA.Gen"
Advanced Searches¶
Harness the full power of the Lucene query syntax for more complex searches. Here are a few examples:
# Find every result where the ViperMonkey service extracted the IP 10.10.10.10
result.sections.tags.network.static.ip:"10.10.10.10" AND response.service_name:ViperMonkey
# Find all submissions with a score greater than or equal to 2000 in the last two days
max_score:[2000 TO *] AND times.submitted:[now-2d TO now]
# Find all anti-virus results with Emotet in the signature name
result.sections.tags.av.virus_name:*Emotet*
Help > Search Help
for comprehensive syntax.
Search queries can also be used with the Assemblyline Client to automate complex tradecraft as new files are processed by the system.
Autofill Feature¶
Given the wide range of searchable fields per index, the "autofill" feature can assist in constructing queries. To use autofill, navigate to an index-specific search page, such as "Result" (/search/result
), and start typing. Autofill will suggest available fields:
For instance, if you wish to query all submissions marked as TLP:CLEAR
and containing a service that scored greater than 500, you should search within the Result
index: