Annotation of embedaddon/hping2/docs/SPOOFED_SCAN.txt, revision 1.1
1.1 ! misho 1: The following is the original posting to bugtraq
! 2: about spoofed/indirect/idle scan method. See
! 3: the HPING2-HOWTO for more informations.
! 4:
! 5: antirez
! 6:
! 7: ---
! 8:
! 9: Hi,
! 10:
! 11: I have uncovered a new tcp port scan method.
! 12: Instead all others it allows you to scan using spoofed
! 13: packets, so scanned hosts can't see your real address.
! 14: In order to perform this i use three well known tcp/ip
! 15: implementation peculiarities of most OS:
! 16:
! 17: (1) * hosts reply SYN|ACK to SYN if tcp target port is open,
! 18: reply RST|ACK if tcp target port is closed.
! 19:
! 20: (2) * You can know the number of packets that hosts are sending
! 21: using id ip header field. See my previous posting 'about the ip
! 22: header' in this ml.
! 23:
! 24: (3) * hosts reply RST to SYN|ACK, reply nothing to RST.
! 25:
! 26:
! 27: The Players:
! 28:
! 29: host A - evil host, the attacker.
! 30: host B - silent host.
! 31: host C - victim host.
! 32:
! 33: A is your host.
! 34: B is a particular host: It must not send any packets while
! 35: you are scanning C. There are a lot of 'zero traffic' hosts
! 36: in internet, especially in the night :)
! 37: C is the victim, it must be vulnerable to SYN scan.
! 38:
! 39: I've called this scan method 'dumb host scan' in honour of host
! 40: B characteristics.
! 41:
! 42:
! 43: How it works:
! 44:
! 45: Host A monitors number of outgoing packets from B using id iphdr.
! 46: You can do this simply using hping:
! 47:
! 48: #hping B -r
! 49: HPING B (eth0 xxx.yyy.zzz.jjj): no flags are set, 40 data bytes
! 50: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms
! 51: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms
! 52: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms
! 53: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms
! 54: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms
! 55: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms
! 56: -cut-
! 57: ..
! 58: .
! 59:
! 60: As you can see, id increases are always 1. So this host have the
! 61: characteristics that host B should to own.
! 62:
! 63: Now host A sends SYN to port X of C spoofing from B.
! 64: (using hping => 0.67 is very easy, http://www.kyuzz.org/antirez)
! 65: if port X of C is open, host C will send SYN|ACK to B (yes,
! 66: host C don't know that the real sender is A). In this
! 67: case host B replies to SYN|ACK with a RST.
! 68: If we send to host C a few of SYN it will reply to B with a few
! 69: of SYN|ACK, so B will reply to C a few of RST... so
! 70: we'll see that host B is sending packets!
! 71:
! 72: .
! 73: ..
! 74: -cut-
! 75: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms
! 76: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms
! 77: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms
! 78: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms
! 79: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms
! 80: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms
! 81: -cut-
! 82: ..
! 83: .
! 84:
! 85: The port is open!
! 86:
! 87: Instead, if port X of C is closed sending to C a few
! 88: of SYN spoofed from B, it will reply with RST to B, and
! 89: B will not reply (see 3). So we'll see that host B is not sending
! 90: any packet:
! 91:
! 92: .
! 93: ..
! 94: -cut-
! 95: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms
! 96: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms
! 97: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms
! 98: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms
! 99: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms
! 100: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms
! 101: -cut-
! 102: ..
! 103: .
! 104:
! 105: The port is closed.
! 106:
! 107: All this can appear complicated to perform, but using two sessions
! 108: of hping on Linux virtual consoles or under X makes it more simple.
! 109: First session listen host B: hping B -r
! 110: Second session send spoofed SYN: hping C -a B -S
! 111:
! 112: Sorry if my english is not so clear.
! 113: However this posting is not adequate to describe exaustively
! 114: this scan method, so i'll write a paper on this topic, specially
! 115: about how to implement this in a port scanner (i.e. nmap), and
! 116: about players characteristics and OS used.
! 117:
! 118: happy new year,
! 119: antirez
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>