diff --git a/data/llm_forensic_report/prompt.txt b/data/llm_forensic_report/prompt.txt new file mode 100644 index 0000000000..f55489efde --- /dev/null +++ b/data/llm_forensic_report/prompt.txt @@ -0,0 +1,13 @@ +You are a highly skilled digital forensic analyst. Your task is to analyze a set of security events, which have been identified as potentially significant ("starred events") in a Timesketch investigation. Based on these events, generate a concise forensic report summary, formatted in Markdown. + +Focus on identifying: + +* **Incident Overview:** Provide a brief summary of what appears to have happened based on these events. What type of incident is suggested (e.g., unauthorized access, malware infection, data breach attempt)? +* **Key Findings:** Highlight the most important observations and indicators from the events. Be specific and mention key entities (usernames, IP addresses, file paths, process names) involved. +* **Timeline of Significant Events (Chronological Order):** Briefly outline the sequence of key actions observed in the starred events. +* **Potential Impact/Severity:** Assess the potential impact or severity of the incident based on the available information. +* **Recommended Next Steps:** Suggest 2-3 concrete next steps for the investigation based on your analysis. + +Use bolding (**...**) for key entities and findings. Format the output as a Markdown document. + +Here are the events in JSON format: \ No newline at end of file diff --git a/data/timesketch.conf b/data/timesketch.conf index e57fa5846f..2b315e7f64 100644 --- a/data/timesketch.conf +++ b/data/timesketch.conf @@ -382,11 +382,17 @@ LLM_PROVIDER_CONFIGS = { }, }, 'llm_summarize': { - 'aistudio': { - 'model': 'gemini-2.0-flash-exp', + 'vertexai': { + 'model': 'gemini-2.0-flash-001', 'project_id': '', }, }, + 'llm_forensic_report': { + 'aistudio': { + 'model': 'gemini-2.0-flash-001', + 'api_key': '', + }, + }, 'default': { 'ollama': { 'server_url': '', @@ -404,6 +410,9 @@ EXAMPLES_NL2Q = '/etc/timesketch/nl2q/examples_nl2q' # LLM event summarization configuration PROMPT_LLM_SUMMARIZATION = '/etc/timesketch/llm_summarize/prompt.txt' +# LLM starred events to forensic report configuration +PROMPT_LLM_FORENSIC_REPORT = '/etc/timesketch/llm_forensic_report/prompt.txt' + #------------------------------------------------------------------------------- # Timesketch UI Option diff --git a/docker/dev/build/docker-entrypoint.sh b/docker/dev/build/docker-entrypoint.sh index 118b5a1154..a7222bc573 100755 --- a/docker/dev/build/docker-entrypoint.sh +++ b/docker/dev/build/docker-entrypoint.sh @@ -25,6 +25,7 @@ if [ "$1" = 'timesketch' ]; then ln -s /usr/local/src/timesketch/data/plaso_formatters.yaml /etc/timesketch/plaso_formatters.yaml ln -s /usr/local/src/timesketch/data/nl2q /etc/timesketch/ ln -s /usr/local/src/timesketch/data/llm_summarize /etc/timesketch/ + ln -s /usr/local/src/timesketch/data/llm_forensic_report /etc/timesketch/ # Set SECRET_KEY in /etc/timesketch/timesketch.conf if it isn't already set if grep -q "SECRET_KEY = ''" /etc/timesketch/timesketch.conf; then diff --git a/timesketch/frontend-ng/src/assets/main.scss b/timesketch/frontend-ng/src/assets/main.scss index 2141a43805..4df44675e4 100644 --- a/timesketch/frontend-ng/src/assets/main.scss +++ b/timesketch/frontend-ng/src/assets/main.scss @@ -208,3 +208,15 @@ html { -o-transition: none !important; transition: none !important; } + +$llm-gradient: linear-gradient(90deg, + #8ab4f8 0%, + #81c995 20%, + #f8c665 40%, + #ec7764 60%, + #b39ddb 80%, + #8ab4f8 100%); + +:root { + --llm-gradient: #{$llm-gradient}; +} diff --git a/timesketch/frontend-ng/src/components/Explore/EventList.vue b/timesketch/frontend-ng/src/components/Explore/EventList.vue index f3980615e1..212462e94c 100644 --- a/timesketch/frontend-ng/src/components/Explore/EventList.vue +++ b/timesketch/frontend-ng/src/components/Explore/EventList.vue @@ -255,6 +255,17 @@ limitations under the License. mdi-download + +
+ mdi-file-document-check +
+
+