Windows ‘BadTunnel’ Attack Hijacks Network Traffic
A researcher in China has discovered a design flaw in Microsoft Windows that affects all versions of the operating system—including Windows 10—and lets an attacker hijack a victim organization’s network traffic.
Microsoft this week issued a patch for the so-called “BadTunnel” bug found by Yang Yu, director of Xuanwu Lab of Tencent in Beijing. Yu will detail and demonstrate his findings on the Windows flaw in August at Black Hat USA in Las Vegas in his presentation BadTunnel: How Do I Get Big Brother Power?
“This vulnerability has a massive security impact – probably the widest impact in the history of Windows,” Yu said an an interview with Dark Reading conducted via email. “It not only can be exploited through many different channels, but also exists in all Windows versions released during the past 20 years. It can be exploited silently with a near perfect success rate.”
BadTunnel isn’t a typical coding-error flaw: it’s a combination of issues that together allow for an exploit. “This vulnerability is caused by a series of seemingly implementations, which includes a transport layer protocol, an application layer protocol, a few specific usage of application protocol by the operating system, and several protocol implementations used by firewalls and NAT devices,” Yu explains.
It can be exploited via all versions of Microsoft Office, Edge, Internet Explorer, and via several third-party apps on Windows, he says. Unlike most attacks, it doesn’t even require malware, although an attacker could deploy malware as well, he says. That makes it even more difficult to detect when a BadTunnel attack is under way, he notes. An attacker could also execute the attack via IIS and Apache Web servers, as well as via a thumb drive.
Yu says BadTunnel is basically a technique for NetBIOS-spoofing across networks: the attacker can get access to network traffic without being on the victim’s network, and also bypass firewall and Network Address Translation (NAT) devices.
It basically works like this: the attacker gets a victim to visit a rigged web page via IE or Edge, or to open a rigged Office document (or install a malicious flash drive). The attacker’s site appears as either a file server or a local print server, and hijacks the victim’s network traffic – HTTP, Windows Updates, and even Certificated Revocation List updates via Microsoft’s CryptoAPI.
BadTunnel exploits a series of security weaknesses, including how Windows resolves network names and accepts responses; how IE and Edge browsers support webpages with embedded content; how Windows handles network paths via an IP address; how NetBIOS Name Service NB and NBSTAT queries handle transactions; and how Windows handles queries on the same UDP port (137) — all of which when lumped together make the network vulnerable to a BadTunnel attack.
Here’s an attack scenario, as explained in Yu’s technical paper:
1. Alice and Bob can be located anywhere on their network, and have firewall and NAT devices in-between, as long as Bob’s 137/UDP port is reachable by Alice.
2. Bob closes 139 and 445 port, but listens on 137/UDP port.
3. Alice is convinced to access a file URI or UNC path that points to Bob, and another hostname based URI such as “http://WPAD/x.jpg” or “http://FileServer/x.jpg”. Alice will send a NBNS NBSTAT query to Bob, and also send a NBNS NB query to the LAN broadcast address.
4. If Bob blocks access to 139 and 445 port using a firewall, Alice will send a NBNS NBSTAT query after approximately 22 seconds. If Bob instead closed 139 and 445 port by disabling Server Windows service or NetBIOS over TCP/IP protocol, Alice do not need to wait for connection to time out before send the query.
5. When Bob received NBNS NBSTAT query sent by Alice, Bob forge a NBNS NB response by predicting the transaction id, and send to Alice. If a heartbeat packet is sent every few second, most firewall and NAT devices will keep the 137/UDP<->137/UDP tunnel open.
6. Alice will now add the resolved address sent by Bob to the NBT cache. The default TTL for NBT cache entry is 600 seconds.
Bob then hijacks Alice’s network traffic by posing as a Web Proxy Auto-Discovery Protocol (WPAD) or Intra-Site Automatic Tunnel Addressing Protocol (ISATAP) server. WPAD hijacking is nothing new, Yu notes: HD Moore & Valsmith presented research on this in 2007 at Black Hat USA, and the Flame worm employed a similar attack method.