Boss of the SOC v1: Threat Hunting with Splunk (80 pts + 245 extra)

Register · Submit Flags · Scoreboard

What You Need for this Project

Purpose

To practice threat hunting, using the Boss of the SOC (BOTS) Dataset.

Connecting to My Splunk Server

Go here: https://splunk.samsclass.info or here: https://splunk2.samsclass.info

Log in as student1 with a password of student1

The Splunk main page opens, as shown below.

At the top left, click "Search & Reporting".

The "Search" page opens, as shown below.


Introduction to Splunk & the BOTS Data

Sampling the Data

In the Search box, type
index="botsv1"
On the right side, click the "Last 24 hours" box and click "All time", outlined in red in the image below.

On the left side, under the Search box, click "No Event Sampling" and click "1: 100"

On the right side, click the green magnifying-glass icon

The search finishes within a few seconds, and finds approximately 9,452 results, as shown below. (The number varies because the sampling is random.)

There are actually 100x as many events, but we are only looking at 1% of them for now.

Viewing Sourcetypes

On the lower left, in the "SELECTED FIELDS" list, click the blue sourcetype link.

A "sourcetype" box pops up, showing the "Top 10 Values" of this field, as shown below.

Notice these items:

sourcetype
 
Sensor
 
XmlWinEventLog:Microsoft-Windows-Sysmon/Operational    "Sysmon", a Windows monitoring tool from Microsoft
stream:smb,stream:ip,stream:tcp,stream:http "Splunk Stream", which monitors live network traffic
suricata The Suricata Intrusion Detection System (IDS)
wineventlog and WinRegistry Windows OS
fgt_traffic and fgt_utm Fortigate firewalls
Note: because the sampling is random, you may see different items near the bottom of this list.

Viewing stream:http Events

In the "sourcetype" box, in the "Top 10 Values" list, near the bottom, if it is visible, click stream:http

Splunk adds

sourcetype="stream:http"
to the search and finds approximately 252 results, as shown below.

If there is no stream:http item in the list, just type it into the query.

Scroll down to examine the most recent event. Splunk has parsed this event into many fields, shown in red, including c_ip, the client IP address, as shown below.

These fields are explained here.

Viewing HTTP Events for imreallynotbatman.com

In the Search box, at the right end, add this text:
imreallynotbatman.com
251 events are found, as shown below. (The sampling is random, so you may not see the exact events shown below.)

Scroll through the first few events found, and note these items, highlighted in the image below.

Take Notes

Tip: take notes of the flags you find as you go.

Several flags require you to use information from a previous challenge.

Level 1: Finding Attack Servers (20 pts + 15 extra)

BOTSv1 1.1: Scanner Name (5 pts)

Find the brand name of the vulnerability scanner, covered by a green box in the image above.

BOTSv1 1.2: Attacker IP (5 pts)

Find the attacker's IP address.

BOTSv1 1.3: Web Server IP (5 pts)

Find the IP address of the web server serving "imreallynotbatman.com".

BOTSv1 1.4: Defacement Filename (10 pts)

Find the name of the file used to deface the web server serving "imreallynotbatman.com".

Hints:

  • It was downloaded by the Web server, so the server's IP is a client address, not a destination address.
  • Remove the filter to see all 9 such events. Examine the uri values.

BOTSv1 1.5: Domain Name (10 pts)

Find the fully qualified domain name (FQDN) used by the staging server hosting the defacement file.

Hints:

  • Examine the 9 events from the previous challenge. Look at the url values.

Splunk References

Search CheatSheet

Search command CheatSheet

Level 2: Identifying Threat Actors (20 pts + 30 extra)

BOTSv1 2.1: Staging Server IP (10 pts)

In Level 1, you found the staging server domain name (used to host the defacement file). Find that server's IP adddress.

Hints:

  • Search for HTTP GET events containing the target FQDN.

BOTSv1 2.2: Leetspeak Domain (10 pts)

Use a search engine (outside Splunk) to find other domains on the staging server. Search for that IP address. Find a domain with an name in Leetspeak (like "1337sp33k.com").

Alienvault is useful.

BOTSv1 2.3: Brute Force Attack (15 pts)

Find the IP address performing a brute force attack against "imreallynotbatman.com".

Hints:

  • Find the 15,570 HTTP events using the POST method.
  • Exclude the events from the vulnerability scanner.
  • Examine the form_data of the remaining 441 events.
  • To make a useful table, add this to your query:
    | table _time, form_data

BOTSv1 2.4: Uploaded Executable File Name (15 pts)

Find the name of the executable file the attacker uploaded to the server.

Hints:

  • Find the 15,570 HTTP events using the POST method.
  • Exclude the events from the vulnerability scanner.
  • Search for common Windows executable filename extensions.

Level 3: Using Sysmon and Stream (20 pts + 30 extra)

BOTSv1 3.1: MD5 (10 pts)

In Level 2, you found the name of an executable file the attackers uploaded to the server.

Find that file's MD5 hash.

Hints:

  • Read about Sysmon Event IDs
  • Find events from Sysmon for process creation.
  • Examine cmdline to find the correct event.

BOTSv1 3.2: Brute Force (10 pts)

What was the first brute force password used?

Hints:

  • Start with 1:10 sampling.
  • Find events containing "login".
  • Find top values of "url".
  • Examine the "form_data" values to identify the brute force attack.

BOTSv1 3.3: Correct Password (10 pts)

What was the correct password found in the brute force attack?

Hints:

  • Find the events with the "form_data" values indicating a login attempt.
  • There are two different "http_user_agent" values.

BOTSv1 3.4: Time Interval (10 pts)

How many seconds elapsed between the time the brute force password scan identified the correct password and the compromised login? Round to 2 decimal places.

Hints:

  • HINT: Find the two events with the correct password in the "form_data" field.

BOTSv1 3.5: Number of Passwords (10 pts)

How many unique passwords were attempted in the brute force attack?

Hints:

  • Examine http_user_agent values.

Level 4: Analyzing a Ransomware Attack (20 pts + 160 extra)

BOTSv1 4.1: IP Address (5 pts)

What was the most likely IP address of we8105desk on 24AUG2016?

Hints:

  • Search for we8105desk -- you find 181,012 events.
  • Examine the source field -- there are 10 values.
  • Explore stream sources with protocols used in Active Directory logins.
  • Find events on that day and look at their IP addresses.

BOTSv1 4.2: Signature ID (5 pts)

Amongst the Suricata signatures that detected the Cerber malware, which one alerted the fewest number of times? Submit ONLY the signature ID value as the answer. (No punctuation, just 7 integers.)

Hints:

  • Search for Cerber -- you find 21,596 events.
  • Examine the source field -- there are 4 values.
  • Explore the source type associated with Suricata.

BOTSv1 4.3: FQDN (15 pts)

What fully qualified domain name (FQDN) does the Cerber ransomware attempt to direct the user to at the end of its encryption phase?

Hints:

New process: Aug 2, 2021:

  • Find events with a sourcetype of suricata
  • Restrict the search to events with "alert signature" containing "Onion domain lookup"
  • Restrict the time to within one second of those events
  • Look in the "stream:dns" events, in the "query" field
Old process:
  • Examine the five Suricata alerts about Cerber. View them as "raw text" in time order.
  • Find a time delay and the domain lookup events after it. Note the latest time of those events.
  • Use the "Date time range" option of Search to narrow the time range to just a few seconds before the Suricata alert. Check to make sure you can still find the Suricata alerts. You may have to adjust the time by am hour or two to compensate for time zone differences.
  • Search all events in that small time range. Examine Suricata events. Look at dns-related fields.

BOTSv1 4.4: Suspicious Domain (15 pts)

What was the first suspicious domain visited by we8105desk on 24AUG2016?

Hints:

  • Find the Suricata events on that day. There are 86,579 of them.
  • Examine the src_ip field. Restrict your query to the desired value.
  • Examine the event_type field. Restrict your query to events that load Web pages. There are 38 of them.
  • Examine the hostnames visited. There are ten of them. Investigate them with Google and find the one that's known to be malicious.

BOTSv1 4.5: VB Script (15 pts)

During the initial Cerber infection a VB script is run. The entire script from this execution, pre-pended by the name of the launching .exe, can be found in a field in Splunk. What is name of the first function defined in the VB script?

Hints:

  • Search for events with both a filename extension for VB script and an .exe extension. There are 16 of them.
  • Examine the body field. Find the malicious one.

BOTSv1 4.6: Field Length (15 pts)

During the initial Cerber infection a VB script is run. The entire script from this execution, pre-pended by the name of the launching .exe, can be found in a field in Splunk. What is the length in characters of the value of this field?

Hint:

  • Find the length of the Splunk field, not the length of the script itself. This may be helpful.
  • There are three events with fields that match this description. Use the longest length of those three fields. The longer ones contain the same script, but ampersands are HTML-encoded which makes the field longer.

BOTSv1 4.7: USB key (15 pts)

What is the name of the USB key inserted by Bob Smith?

Hints:

  • Find events with SourceType of WinRegistry
  • Search for "FriendlyName", as shown here.

BOTSv1 4.8: Server Name (5 pts)

Bob Smith's workstation (we8105desk) was connected to a file server during the ransomware outbreak. What is the domain name of the file server?

Hints:

  • Examine SMB stream data for Bob's workstation during the outbreak
  • Find events with a "path" by adding path="*" to the query
  • The server name resembles Bob's workstation name.

BOTSv1 4.9: IP Address (15 pts)

Bob Smith's workstation (we8105desk) was connected to a file server during the ransomware outbreak. What is the IP address of the file server?

Hints:

  • Search for the server's name. Examine the source of those events. Look for source types that record raw network data and would therefore include IP addresses.

BOTSv1 4.10: PDFs (20 pts)

How many distinct PDFs did the ransomware encrypt on the remote file server?

Hints:

  • Search for .pdf
  • Restrict your search for the "unknown" app
  • Find all unique filenames. Remove filenames outside the time range of the attack.

BOTSv1 4.11: Process ID (15 pts)

The VBscript found above launches 121214.tmp. What is the ParentProcessId of this initial launch?

Hints:

  • Search for 121214.tmp -- you find 190 events.
  • Examine the EventDescription field and focus on the one most closely related to the question.
  • Examine the CommandLine field.

BOTSv1 4.12: Text Files (15 pts)

The Cerber ransomware encrypts files located in Bob Smith's Windows profile. How many .txt files does it encrypt?

Hints:

  • Find all events including.txt and find the path to Bob's Windows profile.
  • Add Bob's Windows profile path to the search. To search for a backslash, enter two backslashes.
  • Examine the file paths and remove the ones outside Bob's profile.

BOTSv1 4.13: File Name (15 pts)

The malware downloads a file that contains the Cerber ransomware cryptor code. What is the name of that file?

Hints:

  • Search for HTTP downloads from the suspicious domain you found in flag BOTSv1 4.4 above.
  • The filename has a surprising extension. Research that filename outside Splunk to verify that it's related to Cerber.

BOTSv1 4.14: Obfuscation (10 pts)

Now that you know the name of the ransomware's encryptor file, what obfuscation technique does it likely use?

Hints:

  • Research the file using online resources, outside Splunk, to find this.

BoTS2

Boss of the SOC 2 (650 pts)

AI Agents

ML 190: Personal AI Infrastructure (PAI) (20 pts)
ML 200: Claude Code Agent on Ubuntu (20 pts)

Zeek

IR 350: Zeek Interactive Tutorial  15 + 44 extra
IR 351: Installing and Using Zeek  25 extra

Windows and Linux Machines

IR 100: Windows and Linux Machines20

Velociraptor

IR 371: Velociraptor Server on Linux  20 + 5 extra
IR 372: Investigating a PUP with Velociraptor  25 + 15 extra
IR 373: Investigating a Bot with Velociraptor  50 extra
IR 374: Investigating a Two-Stage RAT with Velociraptor  35 extra
IR 370: Installing Velociraptor on Windows  30 extra

Networking

H 410: Nmap and Rustscan  40 extra
H 420: Wireshark  110 extra
H 430: Scapy  20 extra

Machine Learning

Understanding Prompts

ML 130: Prompt Injection (25 pts + 40)

Awareness: Demonstrating Capabilities

ML 100: Machine Learning with TensorFlow (20 pts + 45)
ML 101: Computer Vision (10 pts)
ML 102: Breaking a CAPTCHA (10 pts)
ML 103: Deblurring Images (10 pts + 30)

Technical: Inner Components

ML 104: Analyzing Input Data (20 pts)
ML 105: Classification (15 pts + 10)
ML 112: Support Vector Machines (40 pts)
ML 113: Decision Trees (15 pts)
ML 114: Ensemble Learning and Random Forests (15 pts)
ML 115: Dimensionality Reduction (20 pts)
ML 116: k-Means Clustering (30 pts)

Attacks

ML 106: Data Poisoning (10 pts)
ML 107: Evasion Attack with SecML (15 pts + 25)
ML 108: Evasion Attack on MNIST dataset (20 pts + 20)
ML 109: Poisoning Labels with SecML (20 pts + 10)
ML 110: Poisoning by Gradients (15 pts + 15)
ML 111: Poisoning the MNIST dataset (20 pts + 20)

Defenses

ML 140: Deep Neural Rejection (45 pts)
ML 132: Llama Guard (10 pts)

Basics

H 101-107: Binary Games  20 + 30 extra
LJ: Linux Journey  83 extra
W 101: Linux command line  20 + 15 extra

Advanced (Optional)

B: Bandit Challenges  99 extra
U-Cen and U-Cyb: PowerShell  75 extra

Command Injection

ED 102: Command Injection  20 + 40 extra
ED 103: SQLI Challenges  30 + 155 extra
ED 104: CMD Injection  15 + 25 extra

Advanced Command Injection

ED 105: Server Side Template Injection (SSTI)  35 extra

Docker and Kubernetes

H 150: Introduction to Docker  20 extra
H 140: Hello Kubernetes  20 extra

Passwords & Cryptography

H 520: Hashcat  20 + 40 extra
H 530: Blockchains  15 extra
H 540: RDP and Old Passwords  30 extra
H 510: Reset Windows Password with an Install Disk  15 extra

Python Basics

VP 1: Python Basics at TryHackMe  42
VP 10: Python 3 Setup  10
VP 20: Arithmetic in Python  10 + 45 extra
VP 21: ASCII and Bytes in Python  10 + 25 extra
VP 22: Lists and Dictionaries  15 + 10 extra
VP 100: Strings  50 extra
VP 110: Bytes and Files  25 extra

Networking with Python

VP 200: Port Scanning  10 + 25 extra
VP 210: HTTP  70 extra

Cryptography with Python

VP 300: Password Hashes  25 + 60 extra
VP 301: Caesar Cipher  52 extra

Story Problems

VP 50: Number Pair (30 extra)
VP 51: Sequential Numbers (30 extra)
VP 52: Checksum (30 extra)
VP 53: Parsing (30 extra)
VP 54: Paper (30 extra)
VP 55: Fuel (30 extra)

Scores from SJSU Cloudathon Summer 26

Updated 6-1-26 4:49 pm