Note: This section of my Website is no longer maintained.
Date: Wed, 16 Dec 1998 12:00:58 -0000 From: mnemonix <mnemonix@GLOBALNET.CO.UK> Subject: Attacking "protected" machines through MS-Proxy Server 2.0. This advisory is for those using MS Proxy 2.0 with packet filtering and use the same machine to Publish Web pages, or those that don't enable packet filtering. You network is at risk of attack unless you also employ other security measures. In certain and quite common configurations of MS Proxy Server 2.0 it is possible to attack the machines it is there to protect. This can be acheived in a number of ways, more easily if access can be gained to the same IP subnet as the "Dirty" Internet Interface. But first some key facts on Proxy. When MS Proxy is installed on a machine with two interface cards the Admin specifies the IP addresses of the machines on the local / corporate network. This information is stored in a file called the LAT or Local Address Table. Doing this lets Proxy know which interface is the clean client side and which is the dirty Internet side. The IP address of the dirty interface should not be listed in the LAT.=20 IP forwarding should be disabled. Once installed MS - Proxy disables connections to TCP port 80 (assuming this is the port Proxy is listening on) on the dirty interface*. Only the clean interface will accept connections and service requests on port 80 - meaning that only clients on clean side should be able to use the Proxy services. It is possible, however, to make a connection to port 80 on the clean interface from the dirty side. To see this happening set up a host on the same IP subnet as the dirty interface and then set your default gateway to the IP address of the dirty interface on the Proxy - then telnet to port 80 on the IP address of the clean interface. You should be connected. Then issue the request: "GET http://some.protected.machine.on.the.clean.side:port/ HTTP/1.0<enter><enter>" Proxy will then establish a TCP connection to the protected machine on the port you have specified. It is easier to see this if the machine is an Internal Web Server. One would expect with IP forwarding disabled that this should not happen - ie the passsing of IP information from the dirty interface to the clean interface. This is the "hole" but this is not a bug but rather a feature. This happens due to the IP routing algorithm: If a multi-homed computer, not configured as a router, receives a packet on an interface it will check all of its local IP addresses and if a match is found - whether the IP address is bound to another interface card or not - the information is passed across. This should be acheivable also in an attack involving source routing, specifying the IP address of the dirty interface as the last "hop" to the target. Once on the clean side of the Proxy server it is then possible using the Proxy to redirect attacks into the "protected" LAN. What can be done to prevent this? First an foremost enabling packet filtering on the dirty interface card can prevent this. Don't allow inbound traffic on port 80. If, however, you also use the underlying IIS to publish Web pages to the Internet ( that is from the Web Proxy Properties -> Publishing -> Enable Publishing -> Send to local Server) then this is not an option and you are at risk. Secondly, enable access control - this won't stop this from happening but unless the attacker has a USER ID and password there is not much they can do. Thirdly, it seems that flushing the static routing table on the machine (c:\> route -f) also resolves the problem. This issue has been reported to Microsoft and they have confirmed this to be a problem in some of the aforementioned scenarios but not others. I have demonstrated this a number of times now to Diligence's clients in all of the above scenarios. To be on the safe side check if you are susceptible. It is my opinion that one possible programatic solution to this, that MS could produce, would be to have the Proxy server, at the application layer in the OSI model, check the IP address of the requesting machine and if this address is not in the LAT then Proxy should simply discard the request. David Litchfield More information can be found at http://www.infowar.co.uk/mnemonix/ * Proxy does not 100% disable connections to port 80 on the dirty interface. It is still possible to create a TCP virtual connection but nothing useful can be done with it - no information is returned.