Detect External Proxy in Google Chronicle
Adversaries may use an external proxy to act as an intermediary for network communications to a command and control server to avoid direct connections to their infrastructure. Tools like HTRAN, ZXProxy, and ZXPortMap enable traffic redirection through proxies or port redirection. External connection proxies mask the destination of C2 traffic and are typically implemented with port redirectors. Compromised systems outside the victim environment, cloud-based resources, or VPS infrastructure may be used. Victim systems communicate directly with the external proxy, which then forwards traffic to the actual C2 server.
MITRE ATT&CK
- Tactic
- Command and Control
- Technique
- T1090 Proxy
- Sub-technique
- T1090.002 External Proxy
- Canonical reference
- https://attack.mitre.org/techniques/T1090/002/
YARA-L Detection Query
rule external_proxy_t1090_002 {
meta:
author = "Argus Detection Engineering"
description = "Detects T1090.002 - External Proxy via known proxy tools, SSH dynamic port forwarding, and outbound connections to proxy ports from non-browser processes."
mitre_attack_tactic = "Command and Control"
mitre_attack_technique = "T1090.002"
severity = "HIGH"
confidence = "MEDIUM"
version = "1.0"
created = "2024-01-01"
events:
(
$e.metadata.event_type = "PROCESS_LAUNCH"
and (
re.regex($e.principal.process.file.full_path,
`(?i)(htran|zxproxy|zxportmap|chisel|frpc|frps|proxychains|revsocks|socat|stunnel|privoxy|iodine|dns2tcp|ptunnel|3proxy|ss-local|shadowsocks)`) or
re.regex($e.principal.process.command_line,
`(?i)(socks5://|socks4://|-socks[45]\s|--socks[45]|connect-proxy|htran|zxproxy|chisel|frpc|proxychains)`) or
(
re.regex($e.principal.process.file.full_path, `(?i)(\bssh\.exe$|\bssh$|plink\.exe$)`) and
re.regex($e.principal.process.command_line, `(?i)(-[fnqt]*D\s+\d+|-nNT|-fND|-fnqD)`)
)
)
) or
(
$e.metadata.event_type = "NETWORK_CONNECTION"
and $e.target.port in (1080, 3128, 8080, 8888, 9050, 9051, 4444, 1337, 31337, 8443, 4443)
and not net.ip_in_range_cidr($e.target.ip, "10.0.0.0/8")
and not net.ip_in_range_cidr($e.target.ip, "172.16.0.0/12")
and not net.ip_in_range_cidr($e.target.ip, "192.168.0.0/16")
and not net.ip_in_range_cidr($e.target.ip, "127.0.0.0/8")
and not re.regex($e.principal.process.file.full_path,
`(?i)(chrome\.exe|firefox\.exe|msedge\.exe|iexplore\.exe|opera\.exe|brave\.exe|curl\.exe|wget\.exe)`)
)
condition:
$e
} Chronicle YARA-L 2.0 detection rule for T1090.002 External Proxy. Matches UDM events of type PROCESS_LAUNCH where the process image path or command line references known proxy relay tools (chisel, frp, socat, stunnel, proxychains, etc.) or SSH with dynamic port-forwarding flags. Also matches NETWORK_CONNECTION events to well-known proxy ports from non-browser initiating processes targeting public IP space. Uses net.ip_in_range_cidr for RFC1918 exclusion and re.regex for case-insensitive pattern matching throughout.
Data Sources
Required Tables
False Positives & Tuning
- DevOps pipelines that use frpc or frps for legitimate ingress-controller tunneling to expose development services; these will match the known proxy tool name pattern.
- macOS or Linux administrators using SSH -D for routine bastion-host tunneling patterns; the PROCESS_LAUNCH branch will fire on all such connections regardless of legitimacy.
- Enterprise web filtering solutions that intercept and proxy all HTTP/HTTPS traffic through ports 8080 or 8443; this may produce NETWORK_CONNECTION matches for any process making web requests.
- Docker networking components and CNI plugins that create local SOCKS proxies on high ephemeral ports during container bridge network initialization.
Other platforms for T1090.002
Testing Methodology
Validate this detection against 5 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1SOCKS5 Proxy via SSH Dynamic Port Forwarding
Expected signal: Sysmon for Linux or auditd: Process creation for ssh with command line containing '-D 1080'. Network connection event showing TCP bind on 127.0.0.1:1080. If Sysmon EID 3 is available, outbound TCP connection to the target SSH server on port 2222.
- Test 2TCP Port Forwarding via Chisel Proxy Tool
Expected signal: Sysmon Event ID 1: Process Create for chisel.exe with command line containing 'client' and 'socks'. Sysmon Event ID 3: Network connection from chisel.exe to 127.0.0.1:8080. Sysmon Event ID 11: File creation of chisel.exe in %TEMP%. Security Event ID 4688 (if command line auditing enabled).
- Test 3HTRAN Port Redirector Execution
Expected signal: Sysmon Event ID 1: Process Create for cmd.exe with CommandLine containing 'htran'. If actual HTRAN binary is used in an authorized test environment: direct process creation event with '-listen' argument and IP:port parameters. Security Event ID 4688 with htran.exe image path.
- Test 4FRP (Fast Reverse Proxy) Client Configuration and Execution
Expected signal: Sysmon Event ID 11: File creation of frpc.ini in %TEMP% with content showing server_addr, server_port, and plugin=socks5. Sysmon Event ID 1: PowerShell process creation with command containing 'frpc.ini'. The configuration file content reveals the external C2 relay address (192.0.2.1).
- Test 5SOCKS Proxy via Netcat-style Listener (socat)
Expected signal: Linux auditd/Sysmon for Linux: Process creation for socat with arguments 'TCP4-LISTEN:1080' and 'TCP4:192.0.2.1:4444'. Network socket creation binding to local port 1080. If Sysmon EID 3 available: outbound connection attempt to 192.0.2.1:4444.
References (12)
- https://attack.mitre.org/techniques/T1090/002/
- https://arxiv.org/ftp/arxiv/papers/1408/1408.1136.pdf
- http://blog.trendmicro.com/trendlabs-security-intelligence/in-depth-look-apt-attack-tools-of-the-trade/
- https://www.mandiant.com/resources/blog/apt29-eye-spy-email
- https://github.com/jpillora/chisel
- https://github.com/fatedier/frp
- https://www.varonis.com/blog/what-is-htran
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-277a
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1090.002/T1090.002.md
- https://thedfirreport.com/2022/04/04/stolen-images-campaign-ends-in-conti-ransomware/
- https://learn.microsoft.com/en-us/defender-endpoint/advanced-hunting-devicenetworkevents-table
- https://docs.splunk.com/Documentation/SplunkCloud/latest/SearchReference/CommonStatsFunctions
Unlock Pro Content
Get the full detection package for T1090.002 including response playbook, investigation guide, and atomic red team tests.