skip to content

The Unproxyable Estate

Browsers obey a proxy setting and most other software does not, so a forward proxy covers only the egress that can be taught about it. The residue is the control's real coverage.

on this pageshow

explore

questions

4

How does software learn an egress proxy exists, and why is the exception for an agent that cannot be told one useful to an implant?

level: juniorimportance: must knowfreq 65%

answer

  1. the client has to opt in
  2. system setting, PAC via WPAD, environment variables
  3. compiled-in destination reads none of them
  4. firewall rules match hosts, not processes
  5. no proxy log for the exempted device

basics

~20 s

Software learns a proxy from an operating-system setting, a PAC file located by WPAD, or proxy environment variables. An agent with a hard-coded destination reads none of them, so you write a direct-egress exception every process on that host inherits.

solid answer

~50 s

Three conventions cover almost everything. An OS-level proxy setting that the platform HTTP stack reads; a proxy auto-config (PAC) file whose location is configured or discovered through WPAD; and the `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` environment variables that most command-line runtimes and language HTTP libraries honour. All three are opt-in - the client has to go looking. A vendor diagnostic agent that opens a socket straight to a compiled-in hostname or address consults none of them, and no policy push changes that. On a factory floor this is ordinary rather than exotic: machine-tool, instrument and licensing agents ship that way. What results is a per-device direct-egress rule named after the vendor that nobody dares remove. That rule is the real finding: firewalls match hosts and addresses, not processes, so anything running on that host - including an implant - inherits it, and traffic using it produces no proxy record at all.

go deeper

for a junior

Be ready to name the three ways a client can be told about a proxy and to say in one sentence that each requires the client to cooperate. Knowing that some software simply ignores all of them is the point of the question.

for a middle

Explain why environment variables and PAC files are conventions rather than enforcement, and why a firewall exception granted for one program is in practice granted to the whole machine.

for a senior

Show that you write the exception as an artefact with an owner, a date and a stated business dependency, and that you plan for the monitoring you lose the moment a device stops appearing in proxy logs.

for a principal

Be able to argue what an estate-wide standing-exception list costs over years - the review burden, the vendor negotiation to get destinations narrowed, and the point at which buying software that can be proxied is cheaper than carrying the hole.

## What "proxy-aware" actually means An egress proxy only sees traffic that was *sent to it*. Nothing about a proxy is imposed on a client by the client's own stack: the application decides to open its connection to the proxy's address instead of the destination's, and asks the proxy to reach the destination on its behalf. That decision is made from configuration the application chose to read. If it reads no configuration, it dials the destination directly, and the proxy never learns the session existed. ## The three conventions, and where each one leaks **The operating-system proxy setting.** Platforms expose a system-wide proxy that the platform's own HTTP client honours. Browsers and anything built on the platform stack pick it up. Software that ships its own HTTP implementation, or that speaks a non-HTTP protocol, does not. **A PAC file, located by configuration or by WPAD.** A proxy auto-config file is a small script the client fetches and evaluates per destination, returning "go direct" or "use this proxy". WPAD is the discovery convention that lets a client find that file without being told where it is. Both are entirely voluntary on the client's side - and a client that will fetch and run a script it discovered on the network is itself a thing an attacker likes, which is one reason discovery is often disabled in favour of an explicit URL. **Environment variables.** `HTTP_PROXY`, `HTTPS_PROXY` and `NO_PROXY` (with their lower-case spellings) are honoured by a large amount of command-line tooling and by many language HTTP libraries. They are a *convention*, not a rule: each library decides whether to read them, which spelling wins, and how `NO_PROXY` matching works. They are also set per process, so a variable exported in an interactive shell does not reach a service started by the init system. ## Why a vendor agent honours none of them The unproxyable estate is not badly written software so much as software written for a different assumption. A machine-tool vendor's diagnostic agent, an instrument's telemetry uploader, a licence-server check-in client: these are built to reach one endpoint the vendor controls, often with the destination compiled in, sometimes as a bare address rather than a name, frequently over a proprietary protocol on a well-known port, and occasionally with the vendor's certificate pinned so that anything sitting in the middle is refused by design. There is no setting to change because the vendor never modelled a customer who inspects egress. The honest test in an interview is: can you *state* the failure rather than wish it away? "We push proxy settings by policy" is a good answer for laptops and a wrong answer for the plant floor. ## The exception, and why it is the interesting part When a device cannot be taught the proxy and cannot be intercepted, the outcome is always the same artefact: a named rule in the rule base permitting that source to reach that destination directly. It is written on enforcement day, under time pressure, by someone who needs the line running. Three properties make it worth talking about: 1. **It is keyed on the host, not on the program.** A packet filter matches addresses, ports and protocols. It cannot distinguish the vendor agent's socket from any other socket on the same machine. An implant that lands on that host is inside a permission somebody already granted. 2. **It removes the record, not just the control.** For every other host you have a proxy log with the requested host name, the verdict and the volume. For this one you have flow records - source, destination, ports, protocol, byte and packet counts, timestamps - and no payload at all. You can show that bytes moved; you cannot show what they were. 3. **It outlives its reason.** It is named after a vendor, its author has moved on, and the business function it protects is undocumented. Nobody removes it because nobody can prove what stops working, which is exactly why the rule should be written down with an owner, a date and a stated business dependency at the moment it is created. ## What an adversary does with it An implant does not need to defeat egress filtering if one host in the estate is exempt from it. Choosing the machine whose direct-egress rule is written into the rule base for vendor reasons costs the adversary nothing and buys a path that generates no proxy entry, sits in a rule an operator is scared to touch, and blends with traffic the business genuinely depends on. That is the whole reason this leaf exists: the exception is a control decision with a standing price, not a paperwork detail. ## Answering it well Name the three mechanisms, say plainly that all three are opt-in, give a concrete class of software that reads none of them, and finish on the consequence: the exception is scoped to a host, so it belongs to every process on that host, and the traffic that uses it is invisible in the one log you would otherwise reach for.

  • An agent claims to support HTTPS_PROXY but still goes direct. What are the usual reasons?
    A NO_PROXY entry matching the destination; the variable exported in a shell but absent from the environment the service actually starts with; the runtime reading a different spelling or its own configuration source instead; or the agent using a protocol that is not HTTP, which the variable never covered in the first place. Check what the process sees, not what the operator set.
  • Why is a per-device direct-egress rule more dangerous than a destination everyone is allowed to reach?
    A shared destination allowance is narrow in one dimension and applies to traffic you still observe through the proxy. The per-device rule is the opposite: it is broad on the host axis, since every process there inherits it, and it removes the device from proxy logging entirely. You lose the control and the record for that machine at once.
  • What records do you still have for a host that bypasses the proxy?
    Flow records - the five-tuple, byte and packet counts and timestamps - and, if the agent connects by name and the handshake is visible at the gateway, the server name in the TLS ClientHello. Both establish that a session happened between two endpoints and roughly how much moved. Neither carries payload, a URL, or an account.

A proxy is a mail room, not a border. Staff who were told to drop letters there do; a contractor who brought his own courier walks straight past, and the gate pass you print for him works for anyone wearing his badge.

saying these in an interview costs you the question

  • Claims a policy or device-management push can force any application through a proxy
  • Assumes every HTTP client honours HTTPS_PROXY
  • Treats WPAD discovery as authoritative rather than voluntary
  • Says the exception is safe because the vendor destination is trusted
  • Believes the bypassed host still shows up in proxy logs

context

open as a page

Transparent redirection sends an unproxyable agent's 443 traffic to the proxy - what breaks, and what does an implant on that host still get?

level: middleimportance: should knowfreq 50%

basics

~20 s

Redirection helps only where the client tolerates interception. Pinned certificates, client-certificate authentication and non-HTTP traffic on 443 fail outright; QUIC on UDP/443 is untouched. Each failure ends in the per-device exemption an implant can use.

open as a page

A machine-tool vendor's agent needs direct egress - how do you write that exception so an implant on the same host cannot live in it?

level: seniorimportance: should knowfreq 44%

basics

~20 s

Narrow it on every axis the filter offers - one source address, the vendor's actual destinations, one port and protocol, a schedule if the agent has one - then build the watch on flow records and handshake names, since no proxy log exists.

open as a page

Forcing egress through the proxy on a 24/6 line gives you one window - how do you sequence it, and what justifies refusing a 03:00 revert that hands an implant the direct path out again?

level: seniorimportance: nice to knowfreq 32%

basics

~20 s

Do not spend the window discovering what breaks. Run the policy in log-only mode first, build the destination inventory from records the gateway already produces, enforce in rings, and agree revert criteria in writing beforehand.

open as a page