Annotation of embedaddon/hping2/docs/HPING2-HOWTO.txt, revision 1.1

1.1     ! misho       1: N.B.: this HOWTO is not completed and in some points very silly. I leave this
        !             2:       here only because maybe it's better that nothing.
        !             3: 
        !             4: HPING2 HOWTO
        !             5: 
        !             6: Changes Log
        !             7: -----------
        !             8: Aug 7 1999             vi HPING2-HOWTO.txt
        !             9: Aug 8 1999             __0000, __0001, __0002, __0003
        !            10: Aug 10 1999            __0004
        !            11: 
        !            12: Index
        !            13: -----
        !            14: [search __XXXX in order to jump to point you want]
        !            15: 
        !            16:        __0000: Copyright notice
        !            17:        __0001: What is hping?
        !            18:         __0002: What i need to know about TCP/IP in order to use hping?
        !            19:        __0003: First step with hping
        !            20:        __0004: IP id and how to scan TCP ports using spoofing.
        !            21:        __0005: How to test firewall rules. (TODO)
        !            22:        __0006: How to trasfer files accross firewall. (TODO)
        !            23: 
        !            24:        __000A: hping usage example (TODO)
        !            25: 
        !            26: __0000: Copyright notice, License, and all that stuff
        !            27: 
        !            28:   Copyright (C) Salvatore Sanfilippo, 1999.
        !            29: 
        !            30:   Permission is granted to make and distribute copies of this manual
        !            31:   provided the copyright notice and this permission notice are preserved
        !            32:   on all copies.
        !            33: 
        !            34:   Permission is granted to copy and distribute modified versions of this
        !            35:   manual under the conditions for verbatim copying, provided that the
        !            36:   derived work is distributed under the terms of a permission notice
        !            37:   identical to this one. Translations fall under the catagory of
        !            38:   ``modified versions.''
        !            39: 
        !            40:   Warranty: None.
        !            41: 
        !            42:   Recommendations: Commercial redistribution is allowed and encouraged;
        !            43:   however, it is strongly recommended that the redistributor contact the
        !            44:   author before the redistribution, in the interest of keeping things
        !            45:   up-to-date (you could send me a copy of the thing you're making while
        !            46:   you're at it). Translators are also advised to contact the author
        !            47:   before translating. The printed version looks nicer. Recycle.
        !            48: 
        !            49: __0001: What is hping?
        !            50: 
        !            51:   Hping is a software to do TCP/IP stack auditing, to uncover firewall
        !            52:   policy, to scan TCP port in a lot of different modes, to transfer
        !            53:   files accross a firewall and many other stuff. Using hping you are
        !            54:   able to do even a lot of not security-regarding stuff. For example you
        !            55:   can test networks performance, check if a host is up, check if TOS
        !            56:   is handled et cetera.
        !            57: 
        !            58: __0002: What i need to know about TCP/IP in order to use hping?
        !            59: 
        !            60:   If you know TCP/IP you will find hping very usefull, otherwise
        !            61:   you can use hping only to do well known tests. See __000A for 
        !            62:   some example.
        !            63: 
        !            64: __0003: First step with hping
        !            65: 
        !            66:   The simplest usage of hping is the following:
        !            67: 
        !            68:        #hping host
        !            69: 
        !            70:   This command sends a TCP null-flags packet to port 0 of target
        !            71:   host every second and show the host replies. For example:
        !            72: 
        !            73: # hping www.debian.org
        !            74: ppp0 default routing interface selected (according to /proc)
        !            75: HPING www.debian.org (ppp0 209.81.8.242): NO FLAGS are set, 40 headers + 0 data bytes
        !            76: 40 bytes from 209.81.8.242: flags=RA seq=0 ttl=243 id=63667 win=0 time=369.4 ms
        !            77: 40 bytes from 209.81.8.242: flags=RA seq=1 ttl=243 id=63719 win=0 time=420.0 ms
        !            78: 40 bytes from 209.81.8.242: flags=RA seq=2 ttl=243 id=63763 win=0 time=350.0 ms
        !            79: [Ctrl+C]
        !            80: --- www.debian.org hping statistic ---
        !            81: 3 packets tramitted, 3 packets received, 0% packet loss
        !            82: 
        !            83:   As you can see host replies with a TCP packet with RST and ACK flags
        !            84:   set. So you are able to perform a 'TCP ping', usefull when ICMPs are
        !            85:   filtered. By default port 0 are used because it's very strange that
        !            86:   is in LISTEN state. If we send a TCP null-flags to a port in
        !            87:   LISTEN state a lot of TCP/IP stack will not send any reply. So we are
        !            88:   able to know if a port is in LISTEN state. For example:
        !            89: 
        !            90: # hping www.debian.org -p 80
        !            91: ppp0 default routing interface selected (according to /proc)
        !            92: HPING www.debian.org (ppp0 209.81.8.242): NO FLAGS are set, 40 headers + 0 data bytes
        !            93: [Ctrl+C]
        !            94: --- www.debian.org hping statistic ---
        !            95: 5 packets trasmitted, 0 packets received, 100% packet loss
        !            96: 
        !            97:   Since port 80 of www.debian.org is in LISTEN mode we got
        !            98:   no response.
        !            99: 
        !           100:   But What's happen if we try to hping a firewalled port? This depends
        !           101:   on firewall policy/implementation. Usually we get an ICMP or
        !           102:   nothing. For example:
        !           103: 
        !           104: # hping www.yahoo.com -p 79
        !           105: ppp0 default routing interface selected (according to /proc)
        !           106: HPING www.yahoo.com (ppp0 204.71.200.67): NO FLAGS are set, 40 headers + 0 data bytes
        !           107: ICMP Packet filtered from 206.132.254.41  (pos1-0-2488M.hr8.SNV.globalcenter.net)
        !           108: 
        !           109: --- www.yahoo.com hping statistic ---
        !           110: 14 packets tramitted, 0 packets received, 100% packet loss
        !           111: 
        !           112:   yahoo firewall doesn't allow connection to port 79, so reply with
        !           113:   an ICMP Packet filtered (ICMP unreachable code 13). However
        !           114:   there are a lot of firewall that simply drop the packet. For example:
        !           115: 
        !           116: # hping www.microsoft.com -p 79
        !           117: ppp0 default routing interface selected (according to /proc)
        !           118: HPING www.microsoft.com (ppp0 207.46.130.150): NO FLAGS are set, 40 headers + 0 data bytes
        !           119: 
        !           120: --- www.microsoft.com hping statistic ---
        !           121: 4 packets tramitted, 0 packets received, 100% packet loss
        !           122: 
        !           123:   No reply from microsoft. Is the port firewalled or in LISTEN mode?
        !           124:   To uncover this is very simply. Just we try to set ACK flag instead
        !           125:   to send a TCP null-flag packet. If the host respond maybe this port
        !           126:   is in LISTEN mode (but it's possible that there is a rules that
        !           127:   deny null-flag TCP packet but allow ACK).
        !           128: 
        !           129: # hping www.microsoft.com -A -p 79
        !           130: ppp0 default routing interface selected (according to /proc)
        !           131: HPING www.microsoft.com (ppp0 207.46.130.149): A set, 40 headers + 0 data bytes
        !           132: 
        !           133: --- www.microsoft.com hping statistic ---
        !           134: 3 packets tramitted, 0 packets received, 100% packet loss
        !           135: 
        !           136:   No response again, So this port seems to be filtered. Anyway
        !           137:   it's possible that microsoft is using an 'intelligent' firewall
        !           138:   that know that in order to connect first I must send a SYN.
        !           139: 
        !           140: # hping www.microsoft.com -S -p 79
        !           141: ppp0 default routing interface selected (according to /proc)
        !           142: HPING www.microsoft.com (ppp0 207.46.130.149): S set, 40 headers + 0 data bytes
        !           143: 
        !           144: --- www.microsoft.com hping statistic ---
        !           145: 3 packets tramitted, 0 packets received, 100% packet loss
        !           146: 
        !           147:   Ok.. seems that port 79 of microsoft is really filtered.
        !           148:   Just for clearness we send some ACK to port 80 of www.debian.org:
        !           149: 
        !           150: # hping www.debian.org -p 80 -A
        !           151: ppp0 default routing interface selected (according to /proc)
        !           152: HPING www.debian.org (ppp0 209.81.8.242): A set, 40 headers + 0 data bytes
        !           153: 40 bytes from 209.81.8.242: flags=R seq=0 ttl=243 id=5590 win=0 time=379.5 ms
        !           154: 40 bytes from 209.81.8.242: flags=R seq=1 ttl=243 id=5638 win=0 time=370.0 ms
        !           155: 40 bytes from 209.81.8.242: flags=R seq=2 ttl=243 id=5667 win=0 time=360.0 ms
        !           156: 
        !           157: --- www.debian.org hping statistic ---
        !           158: 3 packets tramitted, 3 packets received, 0% packet loss
        !           159: 
        !           160:   We can see replies even if port 80 is in LISTEN mode because
        !           161:   a port in LISTEN mode may not replay only to NULL, FIN, Xmas, Ymas
        !           162:   flags TCP packet. ACK and RST are two important TCP flags that
        !           163:   allow to do ACL tests and to guess ip->id without to produce any log
        !           164:   (usually).
        !           165: 
        !           166: __0004: IP id and how to scan TCP ports using spoofing.
        !           167: 
        !           168:   Every IP packet is identified by a 16 bit id. Thanks to this id
        !           169:   IP stacks are able to handle fragmentation. A lot of OSs handle
        !           170:   ip->id travially: just increment by 1 this id for each packet sent.
        !           171:   Using this id you are able at least to estimate hosts traffic and to
        !           172:   scan with spoofed packets. OpenBSD >= 2.5 and many others implement
        !           173:   a random not repetitive id so you aren't able to joke with ip->id.
        !           174:   Win* ip->id has different byte ordering, so you must specify
        !           175:   --winid or -W option if you are using hping2 against Win*.
        !           176: 
        !           177:   N.B.: You are able to scan spoofed hosts with safe/random ip->id
        !           178:         because in order to spoof your packets you need a third
        !           179:        part host with incremental id rule but you don't need that
        !           180:        target of your scanning has an incremental id.
        !           181: 
        !           182:   How to estimate host traffic using ip->id? It's really simple:
        !           183: 
        !           184: # hping www.yahoo.com -p 80 -A
        !           185: ppp0 default routing interface selected (according to /proc)
        !           186: HPING www.yahoo.com (ppp0 204.71.200.74): A set, 40 headers + 0 data bytes
        !           187: 40 bytes from 204.71.200.74: flags=R seq=0 ttl=53 id=29607 win=0 rtt=329.4 ms
        !           188: 40 bytes from 204.71.200.74: flags=R seq=1 ttl=53 id=31549 win=0 rtt=390.0 ms
        !           189: 40 bytes from 204.71.200.74: flags=R seq=2 ttl=53 id=33432 win=0 rtt=390.0 ms
        !           190: 40 bytes from 204.71.200.74: flags=R seq=3 ttl=53 id=35368 win=0 rtt=380.0 ms
        !           191: 40 bytes from 204.71.200.74: flags=R seq=4 ttl=53 id=37335 win=0 rtt=390.0 ms
        !           192: 40 bytes from 204.71.200.74: flags=R seq=5 ttl=53 id=39157 win=0 rtt=380.0 ms
        !           193: 40 bytes from 204.71.200.74: flags=R seq=6 ttl=53 id=41118 win=0 rtt=370.0 ms
        !           194: 40 bytes from 204.71.200.74: flags=R seq=7 ttl=53 id=43330 win=0 rtt=390.0 ms
        !           195: 
        !           196: --- www.yahoo.com hping statistic ---
        !           197: 8 packets tramitted, 8 packets received, 0% packet loss
        !           198: round-trip min/avg/max = 329.4/377.4/390.0 ms
        !           199: 
        !           200:   As you can se id field increase. Packet with sequence 0 has id=29607,
        !           201:   sequence 1 has id=31549, so www.yahoo.com host sent 31549-29607 = 1942
        !           202:   packets in circa one second. Using -r|--relid option hping output
        !           203:   id field as difference between last and current received packet id.
        !           204: 
        !           205: # hping www.yahoo.com -P 80 -A -r
        !           206: ppp0 default routing interface selected (according to /proc)
        !           207: HPING www.yahoo.com (ppp0 204.71.200.68): A set, 40 headers + 0 data bytes
        !           208: 40 bytes from 204.71.200.68: flags=R seq=0 ttl=53 id=65179 win=0 rtt=327.1 ms
        !           209: 40 bytes from 204.71.200.68: flags=R seq=1 ttl=53 id=+1936 win=0 rtt=360.0 ms
        !           210: 40 bytes from 204.71.200.68: flags=R seq=2 ttl=53 id=+1880 win=0 rtt=340.0 ms
        !           211: 40 bytes from 204.71.200.68: flags=R seq=3 ttl=53 id=+1993 win=0 rtt=330.0 ms
        !           212: 40 bytes from 204.71.200.68: flags=R seq=4 ttl=53 id=+1871 win=0 rtt=350.0 ms
        !           213: 40 bytes from 204.71.200.68: flags=R seq=5 ttl=53 id=+1932 win=0 rtt=340.0 ms
        !           214: 40 bytes from 204.71.200.68: flags=R seq=6 ttl=53 id=+1776 win=0 rtt=330.0 ms
        !           215: 40 bytes from 204.71.200.68: flags=R seq=7 ttl=53 id=+1749 win=0 rtt=320.0 ms
        !           216: 40 bytes from 204.71.200.68: flags=R seq=8 ttl=53 id=+1888 win=0 rtt=340.0 ms
        !           217: 40 bytes from 204.71.200.68: flags=R seq=9 ttl=53 id=+1907 win=0 rtt=330.0 ms
        !           218: 
        !           219: --- www.yahoo.com hping statistic ---
        !           220: 10 packets tramitted, 10 packets received, 0% packet loss
        !           221: round-trip min/avg/max = 320.0/336.7/360.0 ms
        !           222: 
        !           223:   Obviously checking the id every 1/2 second instead of 1 second, increment
        !           224:   will be half.
        !           225: 
        !           226: # hping www.yahoo.com -P 80 -A -r -i u 500000
        !           227: ppp0 default routing interface selected (according to /proc)
        !           228: HPING www.yahoo.com (ppp0 204.71.200.68): A set, 40 headers + 0 data bytes
        !           229: 40 bytes from 204.71.200.68: flags=R seq=0 ttl=53 id=35713 win=0 rtt=327.0 ms
        !           230: 40 bytes from 204.71.200.68: flags=R seq=1 ttl=53 id=+806 win=0 rtt=310.0 ms
        !           231: 40 bytes from 204.71.200.68: flags=R seq=2 ttl=53 id=+992 win=0 rtt=320.0 ms
        !           232: 40 bytes from 204.71.200.68: flags=R seq=3 ttl=53 id=+936 win=0 rtt=330.0 ms
        !           233: 40 bytes from 204.71.200.68: flags=R seq=4 ttl=53 id=+987 win=0 rtt=310.0 ms
        !           234: 40 bytes from 204.71.200.68: flags=R seq=5 ttl=53 id=+952 win=0 rtt=320.0 ms
        !           235: 40 bytes from 204.71.200.68: flags=R seq=6 ttl=53 id=+918 win=0 rtt=330.0 ms
        !           236: 40 bytes from 204.71.200.68: flags=R seq=7 ttl=53 id=+809 win=0 rtt=320.0 ms
        !           237: 40 bytes from 204.71.200.68: flags=R seq=8 ttl=53 id=+881 win=0 rtt=320.0 ms
        !           238: 
        !           239: --- www.yahoo.com hping statistic ---
        !           240: 9 packets tramitted, 9 packets received, 0% packet loss
        !           241: round-trip min/avg/max = 310.0/320.8/330.0 ms
        !           242: 
        !           243:   N.B. Warning, using ip->id you are able only to guess *the number
        !           244:        of packets sent/time*. You can't always compare different hosts.
        !           245:        ip->id refers to all host interfaces and for example if an host
        !           246:        use NAT or redirect TCP connections to another host (for example
        !           247:        a firewall used to hide a web server) ip->id increment may
        !           248:        result fakely increased.
        !           249: 
        !           250:   hpinging windows box without using --winid option you will see as
        !           251:   increments are 256 multiple because different id byteordering. This
        !           252:   can be really usefull for OS fingerprinting:
        !           253: 
        !           254: #hping win95 -r
        !           255: HPING win95 (eth0 192.168.4.41): NO FLAGS are set, 40 headers + 0 data bytes
        !           256: 46 bytes from 192.168.4.41: flags=RA seq=0 ttl=128 id=47371 win=0 rtt=0.5 ms
        !           257: 46 bytes from 192.168.4.41: flags=RA seq=1 ttl=128 id=+256 win=0 rtt=0.5 ms
        !           258: 46 bytes from 192.168.4.41: flags=RA seq=2 ttl=128 id=+256 win=0 rtt=0.6 ms
        !           259: 46 bytes from 192.168.4.41: flags=RA seq=3 ttl=128 id=+256 win=0 rtt=0.5 ms
        !           260: 
        !           261: --- win95 hping statistic ---
        !           262: 4 packets tramitted, 4 packets received, 0% packet loss
        !           263: round-trip min/avg/max = 0.5/0.5/0.6 ms
        !           264: 
        !           265:   Windows systems are "marked", so in order to discovery if an host is
        !           266:   a Windows host you need to send just some packet.
        !           267: 
        !           268: How to perform spoofed SYN scan using incremental id? The following
        !           269: is the original message to bugtraq about spoofed/indirect/idle scan method,
        !           270: bottom i'll try to explain details and how this is possible even with UDP
        !           271: with some restriction.
        !           272: 
        !           273: ---- bugtraq posting about spoofed scanning ----
        !           274: 
        !           275:   Hi,
        !           276: 
        !           277:         I have uncovered a new tcp port scan method.
        !           278:         Instead all others it allows you to scan using spoofed
        !           279:         packets, so scanned hosts can't see your real address.
        !           280:         In order to perform this i use three well known tcp/ip
        !           281:         implementation peculiarities of most OS:
        !           282: 
        !           283:           (1) * hosts reply SYN|ACK to SYN if tcp target port is open,
        !           284:             reply RST|ACK if tcp target port is closed.
        !           285: 
        !           286:           (2) * You can know the number of packets that hosts are sending
        !           287:             using id ip header field. See my previous posting 'about the ip
        !           288:             header' in this ml.
        !           289: 
        !           290:           (3) * hosts reply RST to SYN|ACK, reply nothing to RST.
        !           291: 
        !           292: 
        !           293:         The Players:
        !           294: 
        !           295:           host A - evil host, the attacker.
        !           296:           host B - silent host.
        !           297:           host C - victim host.
        !           298: 
        !           299:         A is your host.
        !           300:         B is a particular host: It must not send any packets while
        !           301:           you are scanning C. There are a lot of 'zero traffic' hosts
        !           302:           in internet, especially in the night :)
        !           303:         C is the victim, it must be vulnerable to SYN scan.
        !           304: 
        !           305:         I've called this scan method 'dumb host scan' in honour of host
        !           306:         B characteristics.
        !           307: 
        !           308: 
        !           309:         How it works:
        !           310: 
        !           311:         Host A monitors number of outgoing packets from B using id iphdr.
        !           312:         You can do this simply using hping:
        !           313: 
        !           314: #hping B -r
        !           315: HPING B (eth0 xxx.yyy.zzz.jjj): no flags are set, 40 data bytes
        !           316: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms
        !           317: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms
        !           318: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms
        !           319: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms
        !           320: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms
        !           321: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms
        !           322: -cut-
        !           323: ..
        !           324: .
        !           325: 
        !           326:         As you can see, id increases are always 1. So this host have the
        !           327:         characteristics that host B should to own.
        !           328: 
        !           329:         Now host A sends SYN to port X of C spoofing from B.
        !           330:         (using hping => 0.67 is very easy, http://www.kyuzz.org/antirez)
        !           331:         if port X of C is open, host C will send SYN|ACK to B (yes,
        !           332:         host C don't know that the real sender is A). In this
        !           333:         case host B replies to SYN|ACK with a RST.
        !           334:         If we send to host C a few of SYN it will reply to B with a few
        !           335:         of SYN|ACK, so B will reply to C a few of RST... so
        !           336:         we'll see that host B is sending packets!
        !           337: 
        !           338: .
        !           339: ..
        !           340: -cut-
        !           341: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms
        !           342: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms
        !           343: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms
        !           344: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms
        !           345: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms
        !           346: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms
        !           347: -cut-
        !           348: ..
        !           349: .
        !           350: 
        !           351:         The port is open!
        !           352: 
        !           353:         Instead, if port X of C is closed sending to C a few
        !           354:         of SYN spoofed from B, it will reply with RST to B, and
        !           355:         B will not reply (see 3). So we'll see that host B is not sending
        !           356:         any packet:
        !           357: 
        !           358: .
        !           359: ..
        !           360: -cut-
        !           361: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms
        !           362: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms
        !           363: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms
        !           364: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms
        !           365: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms
        !           366: 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms
        !           367: -cut-
        !           368: ..
        !           369: .
        !           370: 
        !           371:         The port is closed.
        !           372: 
        !           373:         All this can appear complicated to perform, but using two sessions
        !           374:         of hping on Linux virtual consoles or under X makes it more simple.
        !           375:         First session listen host B: hping B -r
        !           376:         Second session send spoofed SYN: hping C -a B -S
        !           377: 
        !           378:         Sorry if my english is not so clear.
        !           379:         However this posting is not adequate to describe exaustively
        !           380:         this scan method, so i'll write a paper on this topic, specially
        !           381:         about how to implement this in a port scanner (i.e. nmap), and
        !           382:         about players characteristics and OS used.
        !           383: 
        !           384: happy new year,
        !           385: antirez
        !           386: 
        !           387: ---- EOF ----
        !           388: 
        !           389:   As you can see spoofed scanning is travial to perform, especially
        !           390:   unsing hping2 you are able to specify micro seconds interval (-i uX)
        !           391:   so you don't need that B host is a totally idle host. You may read
        !           392:   id increment once every second sending 10 SYN every second. If you
        !           393:   send an adequate SYNnumber/second expected id increment is so big
        !           394:   that you are able to see if port is open or closed even if B host
        !           395:   is sending other packets. Example:
        !           396: 
        !           397: # hping awake.host.org -p 80 -A -r
        !           398: ppp0 default routing interface selected (according to /proc)
        !           399: HPING server.alicom.com (ppp0 111.222.333.44): A set, 40 headers + 0 data bytes
        !           400: 40 bytes from 111.222.333.44: flags=R seq=0 ttl=249 id=47323 win=0 rtt=239.7 ms
        !           401: 40 bytes from 111.222.333.44: flags=R seq=1 ttl=249 id=+6 win=0 rtt=630.0 ms
        !           402: 40 bytes from 111.222.333.44: flags=R seq=2 ttl=249 id=+6 win=0 rtt=280.0 ms
        !           403: 40 bytes from 111.222.333.44: flags=R seq=3 ttl=249 id=+8 win=0 rtt=340.0 ms
        !           404: 40 bytes from 111.222.333.44: flags=R seq=4 ttl=249 id=+5 win=0 rtt=440.0 ms
        !           405: 40 bytes from 111.222.333.44: flags=R seq=5 ttl=249 id=+5 win=0 rtt=410.0 ms
        !           406: 40 bytes from 111.222.333.44: flags=R seq=6 ttl=249 id=+8 win=0 rtt=1509.9 ms
        !           407: 40 bytes from 111.222.333.44: flags=R seq=7 ttl=249 id=+4 win=0 rtt=1460.0 ms
        !           408: 40 bytes from 111.222.333.44: flags=R seq=8 ttl=249 id=+7 win=0 rtt=770.0 ms
        !           409: 40 bytes from 111.222.333.44: flags=R seq=9 ttl=249 id=+5 win=0 rtt=230.0 ms
        !           410: ...
        !           411: 
        !           412:   as you can see this host isn't in idle, it sends ~ 6 packets every second.
        !           413:   Now scan www.yahoo.com's port 80 to see if it's open:
        !           414: 
        !           415: root.1# hping -a server.alicom.com -S -p 80 -i u10000 www.yahoo.com
        !           416: ppp0 default routing interface selected (according to /proc)
        !           417: HPING www.yahoo.com (ppp0 204.71.200.74): S set, 40 headers + 0 data bytes
        !           418: 
        !           419: [wait some second and press CTRL+C]
        !           420: 
        !           421: --- www.yahoo.com hping statistic ---
        !           422: 130 packets tramitted, 0 packets received, 100% packet loss
        !           423: round-trip min/avg/max = 0.0/0.0/0.0 ms
        !           424: 
        !           425:   Looking output of 'hping awake.host.org -p 80 -A -r' it's
        !           426:   simple to understand that www.yahoo.com's port 80 is open:
        !           427: 
        !           428: 40 bytes from 111.222.333.44: flags=R seq=59 ttl=249 id=+16 win=0 rtt=380.0 ms
        !           429: 40 bytes from 111.222.333.44: flags=R seq=60 ttl=249 id=+75 win=0 rtt=850.0 ms
        !           430: 40 bytes from 111.222.333.44: flags=R seq=61 ttl=249 id=+12 win=0 rtt=1050.0 ms
        !           431: 40 bytes from 111.222.333.44: flags=R seq=62 ttl=249 id=+1 win=0 rtt=450.0 ms
        !           432: 40 bytes from 111.222.333.44: flags=R seq=63 ttl=249 id=+27 win=0 rtt=230.0 ms
        !           433: 40 bytes from 111.222.333.44: flags=R seq=64 ttl=249 id=+11 win=0 rtt=850.0 ms
        !           434: 
        !           435:   note that 16+75+12+27+11+1-6 = 136 and that we sent 130 packets. So it's
        !           436:   very realistic that increments are produced by our packtes.
        !           437: 
        !           438:   Tips: Using an idle host to perform spoofed scanning it's usefull to
        !           439:        output only replies that show an increment != 1. Try
        !           440:        `hping host -r | grep -v "id=+1"'

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>