From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
Detection stack
- AIDR
- Alert
- ETL
- Query
Summary
A threat actor first gained access through an exposed F5 BIG-IP load balancer, then pivoted to an internal Linux server and later compromised an internal Atlassian Confluence instance by exploiting a known vulnerability. From there, the attacker conducted broad discovery, stole credentials, and launched Kerberos and NTLM relay attacks against Windows domain assets. The operation relied on a mix of open-source tools and custom scripts for scanning, lateral movement, and data exfiltration.
Investigation
Microsoft Defender Security Research traced the intrusion from the compromised BIG-IP appliance to the internal Linux host, where investigators found a custom scanning tool downloaded from a malicious IP address. The analysis also documented use of utilities such as Nmap, gowitness, and Responder during the attack. Researchers further uncovered credential theft from Confluence configuration files, followed by relay attacks targeting the domain controller and other Windows resources.
Mitigation
Organizations should treat internet-facing edge appliances as Tier-0 assets, apply strict patching and lifecycle management for aging or unsupported devices, and limit exposure of management interfaces. Internal web applications should be hardened and updated promptly against known vulnerabilities. Stronger authentication controls, including disabling NTLM where possible and enforcing SMB signing, can help reduce the impact of relay-based attacks.
Response
Defenders should alert on unusual SSH logins from unexpected IP addresses, monitor for unauthorized file transfers and execution of known scanning utilities, and block suspicious ELF binaries. Security teams should also rotate potentially exposed credentials, enforce least privilege for service accounts, and verify the integrity of Confluence and Active Directory configurations.
"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#c2e0ff classDef tool fill:#e6e6e6 classDef credential fill:#ffdd99 %% Step 1 u2013 Exploit Publicu2011Facing Application step1_exploit["<b>Technique</b> – <b>T1190 Exploit Publicu2011Facing Application</b><br/><b>Description</b>: Adversary exploits a vulnerability in an Internetu2011exposed service to gain initial access."] class step1_exploit technique %% Tool u2013 Vulnerable F5 BIGu2011IP tool_f5["<b>Tool</b> – <b>Name</b>: F5 BIGu2011IP load balancer (vulnerable)<br/><b>CVE</b>: CVEu20112025u201153521"] class tool_f5 tool %% Step 2 u2013 Exploitation of Remote Services step2_remote["<b>Technique</b> – <b>T1210 Exploitation of Remote Services</b><br/><b>Description</b>: Use the same vulnerability to execute code on the target system and move laterally."] class step2_remote technique %% Step 3 u2013 SSH Remote Services step3_ssh["<b>Technique</b> – <b>T1021.004 SSH</b><br/><b>Description</b>: Authenticate via SSH with a privileged account to an internal Linux host."] class step3_ssh technique %% Step 4 u2013 Remote Service Session Hijacking step4_hijack["<b>Technique</b> – <b>T1563.001 Remote Service Session Hijacking</b><br/><b>Description</b>: Maintain a live interactive SSH session for command execution."] class step4_hijack technique %% Step 5 u2013 Active Scanning (IP Blocks) step5_ipscan["<b>Technique</b> – <b>T1595.001 Scanning IP Blocks</b><br/><b>Description</b>: Run Nmap scripts to discover active hosts and open ports across internal subnets."] class step5_ipscan technique %% Tool u2013 Nmap tool_nmap["<b>Tool</b> – <b>Name</b>: Nmap<br/><b>Purpose</b>: Network discovery and port scanning"] class tool_nmap tool %% Step 6 u2013 Active Scanning (Vulnerability) step6_vulnscan["<b>Technique</b> – <b>T1595.002 Vulnerability Scanning</b><br/><b>Description</b>: Use custom scanner and gowitness to locate vulnerable internal applications such as Confluence."] class step6_vulnscan technique %% Tool u2013 gowitness tool_gowitness["<b>Tool</b> – <b>Name</b>: gowitness<br/><b>Purpose</b>: Capture screenshots of web services for enumeration"] class tool_gowitness tool %% Step 7 u2013 System Network Configuration Discovery step7_netconfig["<b>Technique</b> – <b>T1016 System Network Configuration Discovery</b><br/><b>Description</b>: Collect network configuration details to map the environment."] class step7_netconfig technique %% Step 8 u2013 File and Directory Discovery step8_filedisc["<b>Technique</b> – <b>T1083 File and Directory Discovery</b><br/><b>Description</b>: Enumerate files on the compromised Linux host and Confluence server (e.g., server.xml, confluence.cfg.xml)."] class step8_filedisc technique %% Step 9 u2013 Unsecured Credentials step9_creds["<b>Technique</b> – <b>T1552 Unsecured Credentials</b><br/><b>Description</b>: Extract service account credentials from configuration files."] class step9_creds technique %% Credential node cred_service["<b>Credential</b> – Harvested service account credentials"] class cred_service credential %% Step 10 u2013 Valid Accounts step10_valid["<b>Technique</b> – <b>T1078 Valid Accounts</b><br/><b>Description</b>: Reu2011use harvested Confluence credentials to authenticate to Active Directory services."] class step10_valid technique %% Step 11 u2013 Lateral Movement via Remote Services step11_lateral["<b>Technique</b> – <b>T1021 Remote Services</b><br/><b>Description</b>: Attempt NTLMu2011based lateral movement using enumeration and file sharing tools."] class step11_lateral technique %% Tools u2013 enum4linux, netexec, smbclient tool_enum4linux["<b>Tool</b> – <b>Name</b>: enum4linux<br/><b>Purpose</b>: Gather Windows enumeration data"] class tool_enum4linux tool tool_netexec["<b>Tool</b> – <b>Name</b>: netexec<br/><b>Purpose</b>: Execute commands over SMB"] class tool_netexec tool tool_smbclient["<b>Tool</b> – <b>Name</b>: smbclient<br/><b>Purpose</b>: Access SMB shares"] class tool_smbclient tool %% Step 12 u2013 Pass the Ticket (Kerberos/NTLM Relay) step12_passticket["<b>Technique</b> – <b>T1550.003 Pass the Ticket</b><br/><b>Description</b>: Perform Kerberos and NTLM relay attacks (e.g., PetitPotam) against domain controllers."] class step12_passticket technique %% Tool u2013 PetitPotam tool_petitpotam["<b>Tool</b> – <b>Name</b>: PetitPotam<br/><b>Purpose</b>: NTLM relay via Microsoft RPC"] class tool_petitpotam tool %% Step 13 u2013 Steal or Forge Kerberos Tickets step13_kerb["<b>Technique</b> – <b>T1558 Steal or Forge Kerberos Tickets</b><br/><b>Description</b>: Obtain privileged Kerberos tickets to further compromise AD."] class step13_kerb technique %% Step 14 u2013 Hijack Execution Flow (File Permissions) step14_perm["<b>Technique</b> – <b>T1574.005 Hijack Execution Flow: Executable Installer File Permissions Weakness</b><br/><b>Description</b>: Add executable permissions to malicious ELF binaries before execution."] class step14_perm technique %% Step 15 u2013 Deploy Web Shell step15_webshell["<b>Technique</b> – <b>T1505.003 Server Software Component: Web Shell</b><br/><b>Description</b>: Deploy a web shell on the Confluence server for persistence."] class step15_webshell technique %% Step 16 u2013 Application Layer Protocols (File Transfer & Web) step16_transfer["<b>Technique</b> – <b>T1071.002 Application Layer Protocol: File Transfer Protocols</b> & <b>T1071.001 Web Protocols</b><br/><b>Description</b>: Transfer tools and payloads via FTP and HTTP."] class step16_transfer technique %% Step 17 u2013 Exfiltration Over Alternative Protocol step17_exfil["<b>Technique</b> – <b>T1048 Exfiltration Over Alternative Protocol</b><br/><b>Description</b>: Exfiltrate data and tooling using nonu2011standard application protocols."] class step17_exfil technique %% Connections step1_exploit –>|exploits| tool_f5 step1_exploit –>|leads_to| step2_remote step2_remote –>|uses| step3_ssh step3_ssh –>|maintains| step4_hijack step4_hijack –>|enables| step5_ipscan step5_ipscan –>|uses| tool_nmap step5_ipscan –>|leads_to| step6_vulnscan step6_vulnscan –>|uses| tool_gowitness step6_vulnscan –>|leads_to| step7_netconfig step7_netconfig –>|leads_to| step8_filedisc step8_filedisc –>|leads_to| step9_creds step9_creds –>|produces| cred_service step9_creds –>|leads_to| step10_valid step10_valid –>|uses| cred_service step10_valid –>|enables| step11_lateral step11_lateral –>|uses| tool_enum4linux step11_lateral –>|uses| tool_netexec step11_lateral –>|uses| tool_smbclient step11_lateral –>|leads_to| step12_passticket step12_passticket –>|uses| tool_petitpotam step12_passticket –>|leads_to| step13_kerb step13_kerb –>|leads_to| step14_perm step14_perm –>|leads_to| step15_webshell step15_webshell –>|enables| step16_transfer step16_transfer –>|enables| step17_exfil %% Class assignments class step1_exploit,step2_remote,step3_ssh,step4_hijack,step5_ipscan,step6_vulnscan,step7_netconfig,step8_filedisc,step9_creds,step10_valid,step11_lateral,step12_passticket,step13_kerb,step14_perm,step15_webshell,step16_transfer,step17_exfil action class tool_f5,tool_nmap,tool_gowitness,tool_enum4linux,tool_netexec,tool_smbclient,tool_petitpotam tool class cred_service credential "
Attack Flow
Detections
Possible C2 Communications Over HTTP To Direct IP With Uncommon Port (via proxy)
View
Possible Base64 Encoded Strings Manipulation (via cmdline)
View
Dangerous Permissions for a Binary/Script/Folder was set (via cmdline)
View
Remote File Upload / Download via Standard Tools (via cmdline)
View
IOCs (HashSha256) to detect: From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
View
IOCs (SourceIP) to detect: From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
View
IOCs (Files) to detect: From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
View
IOCs (URL) to detect: From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
View
IOCs (DestinationIP) to detect: From edge appliance to enterprise compromise: Multi-stage Linux intrusion via F5 and Confluence
View
Multi-Stage Linux Intrusion via F5 BIG-IP and Confluence [Linux Process Creation]
View
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic. Abstract or unrelated examples will lead to misdiagnosis.
-
Attack Narrative & Commands:
-
Stage 1 – Privileged SSH Access from F5 BIG‑IP
- An adversary has obtained credentials for the privileged account
privileged_accounton a F5 BIG‑IP appliance. - Using the appliance’s management SSH service, the attacker opens a session to the target Linux host, injecting the environment variable
HOSTNAME=F5_BIG-IP_deviceto satisfy the rule’sSourceHostNamematch.
- An adversary has obtained credentials for the privileged account
-
Stage 2 – Network Reconnaissance (nmap)
- Within the SSH session, the attacker runs
nmapagainst the internal subnet to map live hosts and services.
- Within the SSH session, the attacker runs
-
Stage 3 – Web‑Service Reconnaissance (gowitness)
- After identifying web servers, the attacker invokes
gowitnessto capture screenshots of HTTP/HTTPS endpoints.
- After identifying web servers, the attacker invokes
-
Evasion Avoidance (Rule‑specific)
- No use of Python’s
ftplib; thus theexclusion_ftpclause does not fire.
- No use of Python’s
-
-
Regression Test Script:
#!/usr/bin/env bash # # Multi‑Stage Intrusion Simulation – triggers the Sigma rule. # Prerequisite: the executing user must have sudo rights to set HOSTNAME for the session. # set -euo pipefail # ------------------------------------------------- # Stage 1 – Simulate privileged SSH login from F5 # ------------------------------------------------- export HOSTNAME="F5_BIG-IP_device" export LOGNAME="privileged_account" export USER="privileged_account" echo "[*] Simulating privileged SSH session from ${HOSTNAME} as ${USER}" # ------------------------------------------------- # Stage 2 – Run nmap (network discovery) # ------------------------------------------------- echo "[*] Running nmap scan on internal subnet 10.0.0.0/24" nmap -sn 10.0.0.0/24 # ------------------------------------------------- # Stage 3 – Run gowitness (web‑service enumeration) # ------------------------------------------------- echo "[*] Executing gowitness against discovered web hosts" # Assume gowitness is installed and in $PATH gowitness file -f /tmp/discovered_web_hosts.txt echo "[+] Simulation complete – expected alert should be generated." -
Cleanup Commands:
#!/usr/bin/env bash # # Cleanup for the multi‑stage intrusion simulation # set -euo pipefail # Remove temporary files created by gowitness rm -f /tmp/discovered_web_hosts.txt # Unset environment variables used for the simulation unset HOSTNAME LOGNAME USER echo "[*] Cleanup complete."