Extortion Worms: Internet Worms that Discourage Disinfection

Tim Freeman <tim@fungible.com>
2/12/2002
Copyright 2002 Tim Freeman.

When thinking about clever proposed schemes for infecting the Internet with a worm in 20 minutes or 30 seconds, I started wondering what would happen next. People (I'll call them "white hats") would hurriedly figure out what software made them vulnerable, and then they'd arrange to become invulnerable to further infections and to eradicate the worm from their machines. Ideally the makers of the worm (I'll call them "black hats") would like to discourage white hats from doing this. Since the worm at this point would control a significant portion of the computational resources of the Internet, it would seem to be within reach for the worm to use its installed base to provide impressive discouragement for disinfection. This paper discusses how this might be accomplished, and how the game might play out.

Disinfection might be accomplished by turning off the infected machine and reformatting the disks. Therefore the instance of the worm on a given machine is not able to guard against that machine being disinfected. However, it is likely that all sites will not be disinfected simultaneously, so the instances of the worm can keep track of each other and surviving instances can carry out distributed denial of service (DDOS) attacks to punish disinfection. If the owners of the host respond to this by allowing the host to be re-infected, the worm should stop the DDOS attack reasonably promptly.

Requirements for Discouragement

For DDOS attacks to discourage people from disinfecting their machines, the following must be true:

Verifying that Buddies are Still Operational

There is a potential interesting arms race between the worm, which wants to discover when a buddy is down or disinfected so it can start the DDOS attack, and the owners of the buddy's host, which want to spoof the worm's detection procedures and avoid the DDOS attack.

For example, if the worm simply sends a query over the Internet to its buddy asking "Are you infected and up?" and simply believes a "yes" response it receives, then white hats will arrange for disinfected hosts to falsely give a "yes" responses to avoid being the victim of the DDOS attack that results from giving any other response. Since all of the bits of the worm are visible to the white hats, many variations on this scheme fail to be different in any fundamental way; they just increase the number of bits the white hats have to disassemble to generate the spoofed response.

If the masters of the worm are able to write code fast enough, then the worm can have some recently-received code from its masters and the query the worm gives to its buddy could be "run this piece of code and tell me the result", and the correct result must be given for an instance of the worm to decide that the buddy is healthy. I'll call the code that is distributed for this purpose "query code". It will probably be cryptographically signed, since the masters of the worm don't want third parties taking it over. Some mechanism for distributing upgrades to the worm will be required anyway, since a long-lived worm will need to be upgradable by its masters.

The white hats are unlikely to allow their disinfected host to simply run a piece of arbitrary code that is given to it. However, the white hats may arrange for the code to be run on a virtual machine. Countermeasures for this would include distributing query code that examines its environment to determine whether it looks like the real world in various ways. It could also do performance tests and report the results back to the worm instance that is testing it; the performance of a virtual machine may be inferior to the performance of the real machine. Care would have to be taken to do a performance test that is well-behaved, though.

In addition to ensuring that the buddy is running the worm's code, the worm has to ensure that the buddy has adequate network resources to infect other machines and to participate in DDOS attacks. This can be done by simply demanding that the buddy carry out these tasks and then observing whether they were indeed carried out. If the targeted machine is in reality already infected, then the targeted machine might be trusted to accurately report whether the buddy carried out the intended task. Since the white hats can be sued, they will not want to write code to participate in DDOS attacks and propagate the worm in order to spoof the worm's buddy verification.

Countermeasures

Responsible Internet Service Providers

Ideally, an Internet Service Provider (ISP) would promptly shut down the Internet connection of a machine that was found to be controlled by a worm. The DDOS attack that would follow disconnecting an infected host would harm the ISP as well as the owner of the individual host, so some ISP's may simply choose not to be responsible. A possible next step is for people to configure their routers to drop packets from known irresponsible ISP's.

Responsible behavior from ISP's is the best chance to shut down this worm, so we shall assume that adequate incentives can be applied to make them be responsible and look at the details of how they could detect the worm to shut it down.

Detecting infected systems by observing the incoming successful infection attempt

Using packet sniffing, an ISP is likely to be able to observe an incoming initial infection attempt. However, it is not obvious that the ISP would immediately be able to tell whether that attempt succeeded. An ideally designed worm would change the infected system so it no longer shows signs of being infectable, so the ISP may not be able to probe the system after the infection to determine whether the system is infected or infectable.

Detecting infected systems by observing buddy verification traffic

The buddy verifications could be encrypted in some ordinary protocol such as SSH, thus making it impossible for the ISP to distinguish buddy verification from normal SSH traffic. It also does not have to be high in volume.

Detecting infected systems by observing outgoing infection attempts

Eventually the worm does have to attempt to reproduce after the initial infection. That attempt to reproduce will be exploiting a bug in an existing service, so it cannot be as stealthy as the buddy verification traffic and it is likely to be recognizable by a packet sniffer. On the other hand, at initial deployment the worm will have infected the majority of the hosts available to it, so a fairly low volume of outgoing infection attempts ought to be sufficient to keep up with the task of infecting newly installed susceptible hosts. This low volume may decrease the obviousness of the infection attempts.

Detecting DDOS attempts

Typical DDOS approaches use forged IP addresses. Most forged IP addresses will be dropped by properly configured routers, but there are many misconfigured routers presently deployed. This phenomenon would help our hypothetical worm mount its DDOS attacks, but the details are no different from presently existing DDOS schemes, so I won't cover them here.

If the worm has enough resources at its disposal, it can mount DDOS attacks directly without doing tricks involving forged IP addresses. An infected host could receive instructions from a buddy saying to do some DDOS work, it could then send a moderate quantity of ordinary-looking traffic to the victim, then it could hand the task off to a different buddy. If the traffic is not sustained or obviously manipulative, it is not clear that the ISP would be able to recognize it as DDOS traffic. If there are enough machines playing this role, the DDOS could still be effective.

However, system administrators for the victim machine will probably be able to identify DDOS traffic. Assuming enough routers are configured to prevent IP spoofing, it will be easy to identify the ISP's controlling the DDOS'ing machines. Unfortunately there may be many such machines, each with a low volume of traffic, and the set of machines may be constantly shifting. Thus shutting down a few of them is not likely to significantly improve the situation for the victim site.

Clients are not Servers, and Servers are not Clients

If we were able to label each host on the Internet as either a "Client" or a "Server", and we arrange firewalls to require that Servers cannot initiate connections and Clients cannot receive connections, then it would more difficult for worms to propagate. Successful propagation would require a worm to use both a client-side exploit and a server-side exploit. If all of the routers know that Clients cannot receive connections, and there's a simple way to recognize the IP address of a Client, one can imagine revised Internet protocols that would make it impossible to mount a DDOS attack against a Client. If the worm needs vulnerable Client's to propagate, and there is no DDOS threat hanging over Clients who become invulnerable, then perhaps you could eradicate the worm by first disinfecting the Clients and then disinfecting the Servers.

Unfortunately, some protocols, such as the Domain Naming System and any peer-to-peer protocol, require many machines to act as both client and server.

Simultaneous Disinfection

One could try to organize a grand project to disinfect most of the Internet at the same time, and then hope that the remaining pool of infected machines would then be too small to carry out enough DDOS attacks to coerce people into allowing themselves to be reinfected. This might work, depending on the details.

Economic Independency From The Internet

If businesses weren't economically dependent on a functioning Internet, then possible DDOS attacks might not matter so much and people could just ignore them and disinfect their machines. This seems unlikely.

Social Factors

If a typical person who has an infected machine thinks "my web server is still working fine, so why do I care?", then disinfection will be slow, the extortion from the worm will be effective, and the worm is well-poised to remain installed for a long time. If the typical person thinks "I must regain control of my machine at any cost!", then the worm's capacity to mount DDOS attacks will quickly become saturated and it is likely to be defeated relatively soon.

What Next for the Worm?

After the worm has a large, stable, installed base, and has a reputation for being well-behaved provided that it is not uninstalled, it could attempt to use extortion to increase its market share further. Owners of hosts that are not vulnerable to accidental infection from the worm could be presented with an email demanding that an instance of the worm be installed, or a DDOS will follow. The worm would have to automatically locate these hosts and automatically send the extortion demands, since any personal involvement by the black hats could easily lead to their capture. To minimize the size of the initial payload, code implementing this would most naturally be deployed via the buddy network after the initial infection.

Conclusion

As discussed in prior work, in the presence of well-situated vulnerable hosts and adequate planning, a worm could conceivably infect most vulnerable hosts in the Internet in 30 seconds. In this paper I propose that once such a worm becomes widely installed, it could use explicit extortion to discourage the owners of its hosts from removing it.

Disclaimer

I'm publishing this idea so people can see my ideas for countermeasures and devise other countermeasures. If my goal were to make use of the ideas, I would keep them secret.