RotoRouter 1.0 - Traceroute log & fake

From: #include (humbleat_private)
Date: Tue Aug 11 1998 - 17:48:09 PDT

  • Next message: Aaron Schwartzbard: "Re: A way to prevent buffer overflow exploits? (was: "Any user can"

      This message is in MIME format.  The first part should be readable text,
      while the remaining parts are likely unreadable without MIME-aware tools.
      Send mail to mimeat_private for more info.
    
    --0-124077869-902877552=:3840
    Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
    Content-ID: <Pine.BSF.4.02.9808112046021.4159at_private>
    
    -----BEGIN PGP SIGNED MESSAGE-----
    
    Preface
    -------
      Arhghghghghghg... Is there a portable way to read raw udp? This version
      does only linux (I believe) as nothing else seems to wanna read incoming
      traceroutes from a raw socket. This is presented only as a proof of
      concept, and you should be aware that everything which follows sucks like
      a fat intern in the oval office. I will do my best to include something
      semi-workable in another release. To get future versions see the Contact
      information at the bottom. Maybe I'll add latency faking next. =)
    
    
    Program
    -------
      RotoRouter v1.0 (pronounced row-toe row-ter) by Richard Thomas (Humble).
      A program for logging and faking the standard unix udp-based traceroute.
    
    
    Purpose
    -------
      The other day I noticed something interesting. When someone is about to do
      a DoS, it is common place for them to traceroute to the target, launch the
      attack, and traceroute again to see the effect and get a hard-on, secure
      in the belief that their traceroute will never be noticed. They commonly
      trace from their home machines (99% of packet warriors have 28.8k modems
      and bandwidth envy, right :P), or if nothing else from the hacked machine
      they are attacking with. This gives an invaluable opportunity to log the
      real ips of the attacker.
    
      During the process of researching traceroute, I noticed something else.
      Traceroutes can be faked. The generic unix traceroute operates like this:
    
       - Send a UDP packet to the final destination, port P, ttl T
       - Receive the ICMP Time Exceeded msg generated when ttl expires
       - Print the source of the Time Exceed msg and how long it took to receive
       - Increment P, increment T after X number of probes
    
      Where P defaults to 33434 (32767+666, aka how to count by powers of two in
      hell), T starts at 1, and X defaults to 3. Simple right? Well the
      interesting part happens on the final hop, which looks something like this:
    
       - Send a UDP packet to the final destination, port P, ttl T
       - Receive the ICMP Dest Unreachable (Port Unreachable)
       - Print the source of the Dest Unreachable msg and time it
       - End traceroute.
    
      The final hop (the target of the traceroute) makes some interesting
      assumptions. We assume that the port we are probing to is not listening,
      and the destination will automatically generate a dest unreachable msg.
      But what happens if there IS something listening? No dest unreachable msg
      is generated, and the traceroute never ends (well it times out after 30
      hops by default, or when the user gets bored and hits ctrl-c). If there IS
      something listening, it now knows the source of the traceroute, and how
      many hops it is from the source. Log it.
    
      Since we are listening on those ports and preventing the kernel from
      generating a dest unreachable, their traceroute will now timeout. BUT,
      what if we send back spoofed Time Exceeded and Dest Unreachable ICMPs?
      Guess what, it shows up on their traceroute. You now have complete control
      of where their traceroute goes (from 1 hop above you until they hit 30
      hops). What can you do with this? Applications are left as an exercise for
      the reader. But some suggestions:
    
       - Lead them to your neighborhood oc48 where they promptly piss themselves
       - Lead those stupid smurf kiddies away from your vulnerable routers
       - Lie to customers about your bandwidth (be like sy.net!)
       - Scare your bgp loving friends with odd routes, watch their heads explode
       - Make the final hop reverse to "this.traceroute.has.been.logged.com"
    
      "But wait," you say, "I'm one of the good guys, and I think someone is
      pulling my chain. What can I do?" Well, the fake responses are generated
      by making assumptions about the traceroute assumptions, so just change
      some defaults. For example, the -n option can be used to change the
      default base port.
    
    
    Downsides
    ---------
      Welp like any good program there are always downsides. I'll just save
      people the trouble of pointing them out to me like I didn't know already
      by listing them all myself.
    
      #1: You need to be root to run this (or be able to open raw sockets)
      #2: This uses a hefty number of file descriptors. By default 90 (thats 3
          probes * 30 hops) are used to listen on likely ports and prevent your
          kernel from sending the dest unreachable. If this is a problem, muck
          with your kernel and up the fds. Or if you're bored you can change
          the max sockets and base port to lessen your port coverage (ex: if there
          are are 5 internal hops that everyone must go through to reach your
          machine, and you are sure the people you want to lie to will be coming
          from outside your network, you can save 15 fd's by adding 5*3 to the
          baseport and subtracting 5*3 from the max sockets in config.h).
      #3: This could be done MUCH better as a kernel mod. Very true, however this
          program was (originally) designed to be portable, and I'm not going to
          make kernel mods for everyone's unix flavor of choice.
      #4: This doesn't log/fake Windoze tracert.exe traceroutes. Tracert.exe uses
          ICMP Echo requests instead of udp directed at certain ports. If you're
          bored you can make a variant of this program to work w/tracert.exe, but
          it won't be made by me unless someone is paying. =)
      #5: "<insert what's broken here> is goofed." Ohh well, I didn't have the
          time or full range of systems I would have liked to test this more
          fully. The only claim I make is that it works when I traceroute from
          Linux, FreeBSD, Solaris, and even a cisco, to my home Linux machine.
      #6: I deliberatly make no attempts to prevent log-filling floods in this
          version, didn't have time, didn't care, will fix it later. =)
      #7: This code is VERY sloppy. This was a kinda hurried release and I didn't
          have time to nitpick my stuff... Don't use this as an example of a good
          program. =)
    
       That's it, take it or leave it, it's the best you're gonna get considering
       I could be doing other things that actually help pay bills. =)
    
    
    Platforms
    ---------
      I have fully tested this on Linux (libc5 and libc6), and it compiles
      without errors or warnings on FreeBSD, OpenBSD, and Solaris. If you can
      donate an account on another OS for future projects (especially root
      accounts <g>) let me know <humbleat_private>.
    
    
    How to use
    ----------
      Edit config.h, compile:
    
      Linux: gcc -O2 -o rr rr.c
      BSD: gcc -O2 -o rr rr.c
      Solaris: cc -o rr rr.c -lnsl -lsocket
    
      By default everything goes to stdout, so you'll most likely want to
      redirect that to a log file and background it. Something like:
        rr 10.0.0.1 10.0.0.2 10.0.0.3 > logfile &
    
      If you do not pass any params we will just log without affecting the
      traceroute (or using the boatload of fd's), otherwise the first arg is the
      first fake hop, etc. I recommend you use dotted quad ips or else have a
      quick/cached name server.
    
    
    Thanks to
    ---------
      Thanks to MayTrickZ for his assistance in nearly every area of this
      project (translation: mad props), Dianora for listening to me ramble 'til
      I figured things out myself, Moogle for next to nothing (but likes to be
      greeted so who am I to deprive him), habit for the spell check, panasync
      for letting me whore bitchx.com, and Temp for not NOT A DAMN THING. =)
    
      And a special thanks to Dianora for the eggdrop song.
    
    You Wish
    --------
      A big giant YOU WISH to Ted Hickman (meek) from sy.net, who tried to steal
      an earlier version of my work and claim it as his own (despite not being
      able to code his way out of a paper bag), after I told him I would not let
      him use this program to lie to customers about their bandwidth.
    
      And an extra FUCK YOU for trying to steal hardware I co-located, and for
      not paying me a dime for the work I did for him. Wow you can rob a 19 year
      old kid with $5 to his name, you must feel big.
    
      <meek> all i need is to publish it to bugtraq
      <meek> and it's worthless to you
      <humble> publish what to bugtraq?
      <meek> the source
      <meek> the source you left on humble.sy.net
      <meek> my post will be first
    
    
    Contact
    -------
      IRC:   humble (EFnet)
      EMAIL: humbleat_private
      WWW:   http://www.bitchx.com/~humble/
      FTP:   ftp.bitchx.com/pub/misc/humble/
    
    -----BEGIN PGP SIGNATURE-----
    Version: PGP 5.0
    
    iQA/AwUBNdDPQqZC7z/N4STPEQIT1QCg41G/UyEPnhN03c0zV4vIjsFTUu0AnjUn
    7potsm3coCr6NE50xAJA+C8s
    =mRpf
    -----END PGP SIGNATURE-----
    
    --
    Richard Thomas <humbleat_private> humble@EFnet
    pgpk -a hkp://keys.pgp.com/humbleat_private  PGP key ID: 0xCDE124CF
    PGP key fingerprint: 3268 5FDE 715D 1E7F 2D9D  BAC1 A642 EF3F CDE1 24CF
    
    --0-124077869-902877552=:3840
    Content-Type: APPLICATION/octet-stream; name="rr-1.0.tgz"
    Content-Transfer-Encoding: BASE64
    Content-ID: <Pine.BSF.4.02.9808112048090.4159at_private>
    Content-Description: RotoRouter 1.0
    Content-Disposition: attachment; filename="rr-1.0.tgz"
    
    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
    pS51qUtd6lKXutTl/y2/ARFvx/oAUAAA
    --0-124077869-902877552=:3840--
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 14:12:05 PDT