what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

unspoofing.txt

unspoofing.txt
Posted Sep 17, 2002
Authored by Sean Trifero, Brian Knox | Site innu.org

The Art of Unspoofing - Describes several methods to track down denial of service attacks and includes a patch for Bind v8.3.3 and 4.9.9 which adds logging of external queries regarding domains the nameserver is authoritative for.

tags | paper, denial of service
SHA-256 | d4b82df78914aa7c41cf19cefad111b8b329311ecdc48509f3f748cee2d4f690

unspoofing.txt

Change Mirror Download
The Art of Unspoofing

Introduction

The amount and frequency of denial of service attacks are
escalating. It's becoming harder to track down the source who initiates
them due to trace-evasion techniques. A raw interface to the networking
stack allows anyone to send spoofed packets to a target host, eliminating
the ability of its administrator to determine the origin of the attack.
In today's world of e-commerce and globalization, the attacks and the
inability to determine their source can be devastating. It gives
small companies a bad name, and destroys the good reputations of larger
companies.

The ability to track down the source that uses spoofing techniques
will certainly increase the chance to catch those attacking, and will
force people to think of more intricate ways to attack servers on the
net. This paper describes a few ways to track down these types of
attacks up to the last link in the chain (the attacker himself), or at
least his ISP.


The Resolution Theory

The idea is simple. Usually, when a denial of service attack is
initiated against a target host, it's something like:

# ./attack target.com

In order to send the spoofed packets to target.com, the attackers
nameserver has to resolve its domain name to an IP address, and only
then can it inject the malicious packets. In theory, the nameservers
for target.com will receive packets originating from the true source
host of the attack or their nameserver. If we keep a log of these DNS
queries, we could later cross-reference logs of the attack and the
queries, look for equal or very small differences in the timestamps, and
in most cases we'll have a certain match.

We must also be careful in what we do log; too much data can be
just as useless as not enough. If we just log all external hosts
attempting to resolve an internal host, this should cut down the amount
of possibilities considerably.

How does this help us trace the attacker? Assuming the attacker
uses his ISPs nameservers, we can tell his ISP from our logs, contact
them, and have them do the cross-referencing. In fact, once we have a
source host, we can contact its owners, and have them look at logs and
do the crossreferencing for the respective times of the attack.

In short: The host we have in our logs is either the attacker
himself doing the DNS query, or a nameserver he used to perform the
query. In either case, assuming proper logging is in place, we have the
true source of the attack.


The Connectivity and Routing Request Theory

Many attackers will check connectivity and routing of their
target before or after launching an attack. Most of the time this is
done with traceroute and ping. All we have to do is log incoming UDP
packets on ports 33434 to 33524, and ICMP echo packets. We can later
use this data along with the Bind resolution requests to cross reference
and find the source of the attack.


Little Black Dots

We figured out this simple way of tracing spoofed packets after
looking at code of several of the most popular denial of service
programs. Almost all of the programs contain host resolving code. Here
are a few examples to where gethostbyname() is used to query the
nameservers defined in /etc/resolv.conf to resolve the target host:

smurf.c: if ((he = gethostbyname(argv[1])) == NULL) {

bonk.c: res = gethostbyname (host_name);

land.c: if ((hoste = gethostbyname (land_host)) != NULL)

pepsi.c: hp = gethostbyname(cp);

Even though this method is pretty effective, it might be a little
difficult to grep through the querying hosts on busy servers. There
could be hundreds of requests in just a few seconds, hence making it
difficult to decide which host is associated with the attacker.

To bypass, or at least avoid, this obstacle, we could take
advantage of the TTL field in the IP header. As you know, on every hop a
packet passes, its TTL is decreased by one. Most denial of service
programs use an initial TTL of 255, which is also the default value of
the TTL field for outgoing packets on many IP stack implementations. Now
let's say we have received spoofed packets with TTL of 248, and 10
resolution requests at the same time the attack started. We could
traceroute to each of the hosts that queried us, and count hops. It's
very likely that there will be at least one host that is located 7 hops
from us (255 - 248), and is related to the attack. Either way (IE: even
if we get more than one host that is 7 hops away) this technique
narrows down our search for the attacker.

This method is, as denial of service programs are becoming more
sophisticated over time, becoming less accurate -- for example, in a
case of a random TTL for each spoofed packet.


A Quick Note on Unspoofing and Nameserver Caching

ISC's BIND nameserver, like all nameservers, will cache data.
Caching is required for recursion, and is a great help in both DNS
performance and bandwidth savings. Unfortunately, this can potentially
break unspoofing, as the perpetrator of the denial of service attack may
be using a nameserver that has a cached record. For example, if the
attacker was using Earthlink, and wanted to attack www.cnn.com, it
would be unlikely that Earthlinks nameservers would query CNN's
nameservers as CNN is a popular site that many people visit. While you
cannot disable caching as it is needed for recursion, you can limit it
with the following options (Bind 9 only): max-cache-ttl (Bind 9.X) and
max-cache-size (Bind 9.2 and up). Please consult the Bind Administrators
manual for the proper usage of these options.


Who Needs It?

Implementing this idea could be very useful in some places, but
also pretty useless in others.


* ISPs -- ISPs who'd like to keep out of lawsuits against them and their
clients after a malicious user performed a denial of service attack.
Also, ISPs with little bandwidth who would like to make sure the
available bandwidth is put to good use, and not abused.


* Public DNS providers -- Today there are many public DNS services
providers. If malicious users would use their servers to initiate a
denial of service attack, they might be in danger of being shut down. It
could be for the best that they will know about the attackers as well.


* Companies -- Many companies today have their own nameservers for their
websites. They could use this technique to be able to track down attacks,
if any, that are performed on their networks and servers.


* Home users (1) -- Most, or pretty much all, of the home users don't
need to implement this technique. It's highly unlikely that their
computers will be used to resolve a target host.

1. It's important to say that many different variations of UNIX
(including Linux, several BSD distributions, and others) come with a
nameserver that is working out-of-the-box. In these cases, a malicious
attacker could use the nameserver of an innocent victim as a bouncing
point for his DNS query -- making it contact the targets nameservers
itself, thus avoiding of being logged. If that's the case, the home user
might want to either shut down the DNS server or implement this method.


Proof of Concept

To implement this idea we've created patches for the most popular
freely available DNS server software -- ISC Bind. Diffs, installation
instructions, etc., are available at http://www.innu.org/~sean/patches/.
Versions exist for 8.3.3 and 4.9.9 as of the writing of this article.

--
Sean Trifero
sean@innu.org
http://www.innu.org/~sean

Brian Knox
brian@innu.org
http://www.innu.org/~brian
Login or Register to add favorites

File Archive:

August 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Aug 1st
    15 Files
  • 2
    Aug 2nd
    22 Files
  • 3
    Aug 3rd
    0 Files
  • 4
    Aug 4th
    0 Files
  • 5
    Aug 5th
    15 Files
  • 6
    Aug 6th
    11 Files
  • 7
    Aug 7th
    43 Files
  • 8
    Aug 8th
    42 Files
  • 9
    Aug 9th
    36 Files
  • 10
    Aug 10th
    0 Files
  • 11
    Aug 11th
    0 Files
  • 12
    Aug 12th
    0 Files
  • 13
    Aug 13th
    0 Files
  • 14
    Aug 14th
    0 Files
  • 15
    Aug 15th
    0 Files
  • 16
    Aug 16th
    0 Files
  • 17
    Aug 17th
    0 Files
  • 18
    Aug 18th
    0 Files
  • 19
    Aug 19th
    0 Files
  • 20
    Aug 20th
    0 Files
  • 21
    Aug 21st
    0 Files
  • 22
    Aug 22nd
    0 Files
  • 23
    Aug 23rd
    0 Files
  • 24
    Aug 24th
    0 Files
  • 25
    Aug 25th
    0 Files
  • 26
    Aug 26th
    0 Files
  • 27
    Aug 27th
    0 Files
  • 28
    Aug 28th
    0 Files
  • 29
    Aug 29th
    0 Files
  • 30
    Aug 30th
    0 Files
  • 31
    Aug 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close