Not-a-Bot (NAB): Improving Service Availability in the Face of Botnet Attacks

Ramakrishna Gummadi, Hari Balakrishnan, Petros Maniatis, Sylvia Ratnasamy
NSDI 2009, Boston, MA, April 2009

A large fraction of email spam, distributed denial-ofservice (DDoS) attacks, and click-fraud on web advertisements are caused by traffic sent from compromised machines that form botnets. This paper posits that by identifying human-generated traffic as such, one can service it with improved reliability or higher priority, mitigating the effects of botnet attacks.

The key challenge is to identify human-generated traffic in the absence of strong unique identities. We develop NAB (“Not-A-Bot”), a system to approximately identify and certify human-generated activity. NAB uses a small trusted software component called an attester, which runs on the client machine with an untrusted OS and applications. The attester tags each request with an attestation if the request is made within a small amount of time of legitimate keyboard or mouse activity. The remote entity serving the request sends the request and attestation to a verifier, which checks the attestation and implements an application-specific policy for attested requests.

Our implementation of the attester is within the Xen hypervisor. By analyzing traces of keyboard and mouse activity from 328 users at Intel, together with adversarial traces of spam, DDoS, and click-fraud activity, we estimate that NAB reduces the amount of spam that currently passes through a tuned spam filter by more than 92%, while not flagging any legitimate email as spam. NAB delivers similar benefits to legitimate requests under DDoS and click-fraud attacks.

[PDF (538KB)]

Bibtex Entry:

@inproceedings{gummadi2009not-a-bot,
   author =       "Ramakrishna Gummadi and Hari Balakrishnan and Petros Maniatis and Sylvia Ratnasamy",
   title =        "{Not-a-Bot (NAB): Improving Service Availability in the Face of Botnet Attacks}",
   booktitle =    {NSDI 2009},
   year =         {2009},
   month =        {April},
   address =      {Boston, MA}
}