![[Klaus
Müller]](../../common/images/KlausMueller.png) 
 
    original in de Klaus Müller
de to en Hubert Kaißer
en to nl Guus Snijders
![[Illustration]](../../common/images/illustration292.jpg) 
 
    
 --------------------------------                        
 |       Internet               |
 --------------------------------        
                 |
                 |
         ----------------------------------
         |             Firewall           |
         ----------------------------------
                         |
                  -------------
                 |   Sensor   |  
                  -------------
                         |
                 -----------------
                 |      LAN      |
                 -----------------
         
    Dit diagram geeft een mogelijke oplossing en geeft alleen aan dat de
    sensors zich niet tussen DMZ en firewall bevinden. Voor het geval de
    uitdrukking DMZ je niet bekend is: het staat voor DeMilitarized Zone
    (gedemilitariseerde zone) en is een gebied dat aan alle kanten 
    beveiligd is, maar wel van buitenaf bereikbaar. 
 --------------------------------
 |           Internet           |
 --------------------------------        
                 |                                                                       
   ----------------------------                  
   |          Sensor          |          
   ----------------------------          
                 |                               
   ----------------------------
   |        Firewall          |
   ----------------------------  
                 |
         -----------------
         |      LAN      |
         -----------------
    Sensors worden vaak buiten de externe firewall geplaatst zoals
    weergegeven in het diagram. De reden hiervoor is dat de sensor het
    volledige verkeer van het Internet kan ontvangen en analyseren. Als je
    de sensor hier plaatst is het niet zeker dat werkelijk alle aanvallen
    worden gefilterd en gedetecteerd, zoals bijvoorbeeld TCP aanvallen. In
    dit geval zou je kunnen proberen de aanval te detecteren met
    zogenoemde signatures (meer hierover in het gedeelte over signatures).
    Desalniettemin wordt door veel experts aan deze opzet de voorkeur
    gegeven omdat er de mogelijkheid is om de aanvallen (op de firewall) te 
    loggen en te analyseren, zo kan de admin zien of hij de firewall
    configuratie zou moeten wijzigen.
    
-------------------
|   Application   |
-------------------
          |
-------------------
|        IDS      |
-------------------
          |
-------------------
|        User     |
------------------- 
    
 -------------------------                       
 |      Internet          |
 -------------------------
         |
 -------------------------
 |     ext. Firewall      |
 -------------------------
         |
 -------------------------
 |     Honeypot           |              <---- in DMZ
 -------------------------
         |
 -------------------------
 |     int. Firewall      |
 -------------------------
    
 ....
 Host (192.168.0.0) seems to be a subnet broadcast address (returned 1
 extra pings).
 Skipping host. Interesting ports on playground.yuma.net 192.168.0.1):
 Port           State           Protocol                Service
 22             open            tcp             ssh
 111            open            tcp             sunrpc
 635            open            tcp             unknown
 1024           open            tcp             unknown
 2049           open            tcp             nfs
 TCP Sequence Prediction: Class = random positive increments
                             Difficulty=3916950 (Good luck!)
 Remote operating system guess: 
        Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2
 Interesting ports on vectra.yuma.net (192.168.0.5):
 Port           State           Protocol                Service
 13             open            tcp             daytime
 21             open            tcp             ftp
 22             open            tcp             ssh
 23             open            tcp             telnet
 37             open            tcp             time
 79             open            tcp             finger
 111            open            tcp             sunrpc
 113            open            tcp             auth
 513            open            tcp             login
 514            open            tcp             shell
 TCP Sequence Prediction: Class = random positive increments
                             Difficulty = 17719 (Worthy challenge)
 Remote operating system guess: OpenBSD 2.2. - 2.3
 Nmap run completed -- 256 IP addresses (2 hosts up) scanned in 6 seconds
    Meestal kun je het volgende achterhalen:
    [Socma]$ nmap -sT localhost Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ ) Interesting ports on Diablo (127.0.0.1): (The 1552 ports scanned but not shown below are in state: closed) Port State Service 21/tcp open ftp 23/tcp open telnet 80/tcp open http 111/tcp open sunrpc 113/tcp open auth 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
 02:10:15.804704 Diablo > Diablo: icmp: echo request
                         4500 001c 2db8 0000 3501 5a27 7f00 0001
                         7f00 0001 0800 fc95 fb69 0000
 02:10:15.814704 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 0496 fb69 0000
 02:10:15.814704 Diablo.58725 > Diablo.http: . ack 110306597 win 3072
                         4500 0028 d223 0000 2a06 c0aa 7f00 0001
                         7f00 0001 e565 0050 ad48 0003 0693 2525
                         5010 0c00 e718 0000
 02:10:15.814704 Diablo.http > Diablo.58725: R 110306597:110306597(0) 
         win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 e565 0693 2525 0000 0000
                         5004 0000 a070 0000
 02:10:16.114704 Diablo.1727 > Diablo.821: S 196002918:196002918(0) 
 win 32767 <mss 16396,sackOK,timestamp 213509[|tcp]> (DF)
                         4500 003c 8663 4000 4006 b656 7f00 0001
                         7f00 0001 06bf 0335 0bae c466 0000 0000
                         a002 7fff 739c 0000 0204 400c 0402 080a
                         0003 4205
 02:10:16.114704 Diablo.821 > Diablo.1727: R 0:0(0) ack 196002919 
        win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0335 06bf 0000 0000 0bae c467
                         5014 0000 d7c4 0000
 02:10:16.114704 Diablo.1728 > Diablo.440: S 195504823:195504823(0) 
 win 32767 <mss 16396,sackOK,timestamp 213509[|tcp]> (DF)
                         4500 003c 68b2 4000 4006 d407 7f00 0001
                         7f00 0001 06c0 01b8 0ba7 2ab7 0000 0000
                         a002 7fff 0ecf 0000 0204 400c 0402 080a
                         0003 4205
    [Socma]$ nmap -sU localhost Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ ) Interesting ports on Diablo (127.0.0.1): (The 1459 ports scanned but not shown below are in state: closed) Port State Service 111/udp open sunrpc Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds
10:41:55.954397 Diablo > Diablo: icmp: echo request
                         4500 001c cc8f 0000 2801 c84f 7f00 0001
                         7f00 0001 0800 8471 738e 0000
10:41:55.954397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 8c71 738e 0000
10:41:55.964397 Diablo.63793 > Diablo.http: . ack 994287972 win 2048
                         4500 0028 79e3 0000 2506 1deb 7f00 0001
                         7f00 0001 f931 0050 06d8 0003 3b43 a164
                         5010 0800 cccd 0000
10:41:55.964397 Diablo.http > Diablo.63793: R 994287972:994287972(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 f931 3b43 a164 0000 0000
                         5004 0000 dbb4 0000
10:41:56.274397 Diablo.63773 > Diablo.15: udp 0
                         4500 001c 8a0b 0000 3011 02c4 7f00 0001
                         7f00 0001 f91d 000f 0008 08af
10:41:56.274397 Diablo > Diablo: icmp: Diablo udp port 15 
     unreachable (DF) [tos 0xc0] 
                         45c0 0038 0000 4000 ff01 7d02 7f00 0001
                         7f00 0001 0303 fb18 0000 0000 4500 001c
                         8a0b 0000 3011 02c4 7f00 0001 7f00 0001
                         f91d 000f
10:41:56.274397 Diablo.63773 > Diablo.1459: udp 0
                         4500 001c 6c2f 0000 3011 20a0 7f00 0001
                         7f00 0001 f91d 05b3 0008 030b
10:41:56.274397 Diablo > Diablo: icmp: Diablo udp port 1459 
     unreachable (DF) [tos 0xc0] 
                         45c0 0038 0100 4000 ff01 7c02 7f00 0001
                         7f00 0001 0303 fb18 0000 0000 4500 001c
                         6c2f 0000 3011 20a0 7f00 0001 7f00 0001
                         f91d 05b3
    Een andere variant van een UDP scan (UDPrecvfrom() en write() scan)
    bestaat uit het twee maal scannen van iedere poort. Deze methode
    gebruikt ICMP met "Port Unreachable", maar alleen root ontvangt dit
    bericht. Als je een gesloten poort twee keer scant, krijg je, na de
    tweede scan, "Error 13 : Try Again"... 
 [Socma]$ nmap -sA localhost
Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ )
All 1558 scanned ports on Diablo (127.0.0.1) are: UNfiltered
Nmap run completed -- 1 IP address (1 host up) scanned in 6 seconds
 The tcpdump trace:
10:45:51.864397 Diablo > Diablo: icmp: echo request
                         4500 001c 1617 0000 3901 6dc8 7f00 0001
                         7f00 0001 0800 113d e6c2 0000
10:45:51.864397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 193d e6c2 0000
10:45:51.864397 Diablo.53119 > Diablo.http: . ack 2682022466 win 3072
                         4500 0028 0dda 0000 3206 7cf4 7f00 0001
                         7f00 0001 cf7f 0050 0650 0003 9fdc 6a42
                         5010 0c00 c590 0000
10:45:51.864397 Diablo.http > Diablo.53119: R 2682022466:2682022466(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 cf7f 9fdc 6a42 0000 0000
                         5004 0000 d7ef 0000
10:45:52.164397 Diablo.53099 > Diablo.14: . ack 2457451592 win 3072
                         4500 0028 218d 0000 3206 6941 7f00 0001
                         7f00 0001 cf6b 000e 5938 4710 9279 bc48
                         5010 0c00 e74d 0000
10:45:52.164397 Diablo.14 > Diablo.53099: R 2457451592:2457451592(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 000e cf6b 9279 bc48 0000 0000
                         5004 0000 93a2 0000
10:45:52.164397 Diablo.53099 > Diablo.imap3: . ack 2457451592 win 3072
                         4500 0028 a075 0000 3206 ea58 7f00 0001
                         7f00 0001 cf6b 00dc 5938 4710 9279 bc48
                         5010 0c00 e67f 0000
    ------------------ SYN ------------- | Host A | ---------------------------- > | Host B | ------------------ ------------- ------------------ ACK/SYN ------------- | Host A | <----------------------------| Host B | ------------------ ------------- ------------------ ACK ------------- | Host A | ---------------------------- > | Host B | ------------------ -------------
------------------ SYN ------------- | Host A | ---------------------------- > | Host B | ------------------ ------------- ------------------ ACK/SYN ------------- | Host A | <----------------------------| Host B | ------------------ -------------Dit diagram lijkt op de three-way-handshake maar met een basis verschil: het weergegeven diagram heeft geen verbinding tussen A en B, Host B zou dus denken dat de verbinding bestaat, alleen bestaat de verbinding niet tot Host A een verdere ACK stuurt naar B (dit wordt ook wel een "half-open" poort genoemd...). De hierboven weergegeven SYN scan impliceert dat de poort van de doel host open is (vanwege de ACK/SYN), als deze gesloten zou zijn, zou je een RST/ACK terug krijgen.
 [Socma]$ nmap -sS localhost
Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ )
Interesting ports on Diablo (127.0.0.1):
(The 1552 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
80/tcp     open        http                    
111/tcp    open        sunrpc                  
113/tcp    open        auth                    
6000/tcp   open        X11                     
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
Tcpdump trace:
10:47:41.674397 Diablo > Diablo: icmp: echo request
                         4500 001c 8f08 0000 3501 f8d6 7f00 0001
                         7f00 0001 0800 99a9 5e56 0000
10:47:41.674397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 a1a9 5e56 0000
10:47:41.674397 Diablo.58038 > Diablo.http: . ack 1561498752 win 3072
                         4500 0028 afe5 0000 3206 dae8 7f00 0001
                         7f00 0001 e2b6 0050 82b0 0003 5d12 9480
                         5010 0c00 4e85 0000
10:47:41.674397 Diablo.http > Diablo.58038: R 1561498752:1561498752(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 e2b6 5d12 9480 0000 0000
                         5004 0000 dd44 0000
10:47:41.984397 Diablo.58018 > Diablo.1488: S 2803535203:2803535203(0) 
     win 3072
                         4500 0028 a4f5 0000 3206 e5d8 7f00 0001
                         7f00 0001 e2a2 05d0 a71a 8d63 0000 0000
                         5002 0c00 88ef 0000
10:47:41.984397 Diablo.1488 > Diablo.58018: R 0:0(0) ack 2803535204 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 05d0 e2a2 0000 0000 a71a 8d64
                         5014 0000 94dc 0000
    Nu, andere scans doen ook mee: FIN scanning, NULL scanning en XMAS
    scanning. FIN scanning stuurt alleen een FIN bericht naar de "doel
    host", al bestaat er geen verbinding tussen hun. Op een gesloten poort
    wordt een RST terug gestuurd, verder gebeurt er niets. 
 [Socma]$ nmap -sF localhost
Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ )
Interesting ports on Diablo (127.0.0.1):
(The 1552 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
80/tcp     open        http                    
111/tcp    open        sunrpc                  
113/tcp    open        auth                    
6000/tcp   open        X11                     
Nmap run completed -- 1 IP address (1 host up) scanned in 6 seconds
Tcpdump trace:
10:48:28.704397 Diablo > Diablo: icmp: echo request
                         4500 001c b29d 0000 3401 d641 7f00 0001
                         7f00 0001 0800 a1a7 5658 0000
10:48:28.704397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 a9a7 5658 0000
10:48:28.704397 Diablo.52201 > Diablo.http: . ack 2873378189 win 4096
                         4500 0028 cbeb 0000 2b06 c5e2 7f00 0001
                         7f00 0001 cbe9 0050 9020 0003 ab44 458d
                         5010 1000 54a3 0000
10:48:28.704397 Diablo.http > Diablo.52201: R 2873378189:2873378189(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 cbe9 ab44 458d 0000 0000
                         5004 0000 f4d2 0000
10:48:29.004397 Diablo.52181 > Diablo.233: F 0:0(0) win 4096
                         4500 0028 10c6 0000 2b06 8108 7f00 0001
                         7f00 0001 cbd5 00e9 0000 0000 0000 0000
                         5001 1000 d522 0000
10:48:29.004397 Diablo.233 > Diablo.52181: R 0:0(0) ack 1 win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 00e9 cbd5 0000 0000 0000 0001
                         5014 0000 e50e 0000
    NULL en XMAS scans zijn vooral interessant (vooral met een practische
    implementatie van protocol anomalie detectie). 
    De naam XMAS (kerstboom) komt van het feit dat alle vlaggen zijn
    gezet: SYN, ACK, FIN, URG, PUSH. Net als met FIN scanning komt er een
    RST terug als de poort gesloten is. 
 [Socma]$ nmap -sX localhost
Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ )
Interesting ports on Diablo (127.0.0.1):
(The 1552 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
80/tcp     open        http                    
111/tcp    open        sunrpc                  
113/tcp    open        auth                    
6000/tcp   open        X11                     
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Tcpdump trace:
10:44:24.004397 Diablo > Diablo: icmp: echo request
                         4500 001c ffcc 0000 2a01 9312 7f00 0001
                         7f00 0001 0800 103d e7c2 0000
10:44:24.004397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 183d e7c2 0000
10:44:24.004397 Diablo.36398 > Diablo.http: . ack 718216305 win 2048
                         4500 0028 2e28 0000 2906 65a6 7f00 0001
                         7f00 0001 8e2e 0050 9220 0003 2acf 1c71
                         5010 0800 41f0 0000
10:44:24.004397 Diablo.http > Diablo.36398: R 718216305:718216305(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 8e2e 2acf 1c71 0000 0000
                         5004 0000 dc1f 0000
10:44:24.304397 Diablo.36378 > Diablo.1996: FP 0:0(0) win 2048 urg 0
                         4500 0028 7651 0000 2906 1d7d 7f00 0001
                         7f00 0001 8e1a 07cc 0000 0000 0000 0000
                         5029 0800 13d3 0000
10:44:24.304397 Diablo.1996 > Diablo.36378: R 0:0(0) ack 1 win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 07cc 8e1a 0000 0000 0000 0001
                         5014 0000 1be7 0000
    De andere mogelijkheid, genaamd NULL scan, betekend dat er geen vlag
    gezet is, als de poort gesloten is, wordt er geantwoord met een RST.
    
 [Socma]$ nmap -sN localhost
Starting nmap V. 2.54BETA36 ( www.insecure.org/nmap/ )
Interesting ports on Diablo (127.0.0.1):
(The 1552 ports scanned but not shown below are in state: closed)
Port       State       Service
21/tcp     open        ftp                     
23/tcp     open        telnet                  
80/tcp     open        http                    
111/tcp    open        sunrpc                  
113/tcp    open        auth                    
6000/tcp   open        X11                     
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Tcpdump trace:
10:43:37.594397 Diablo > Diablo: icmp: echo request
                         4500 001c 2ecf 0000 2c01 6210 7f00 0001
                         7f00 0001 0800 8f87 6878 0000
10:43:37.594397 Diablo > Diablo: icmp: echo reply (DF)
                         4500 001c 0000 4000 ff01 7dde 7f00 0001
                         7f00 0001 0000 9787 6878 0000
10:43:37.604397 Diablo.34607 > Diablo.http: . ack 1932747046 win 4096
                         4500 0028 ee0f 0000 3706 97be 7f00 0001
                         7f00 0001 872f 0050 5b20 0003 7333 6126
                         5010 1000 ead5 0000
10:43:37.604397 Diablo.http > Diablo.34607: R 1932747046:1932747046(0) 
     win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0050 872f 7333 6126 0000 0000
                         5004 0000 5605 0000
10:43:37.904397 Diablo.34587 > Diablo.408: . win 4096
                         4500 0028 e3bb 0000 3706 a212 7f00 0001
                         7f00 0001 871b 0198 0000 0000 0000 0000
                         5000 1000 192f 0000
10:43:37.904397 Diablo.408 > Diablo.34587: R 0:0(0) ack 0 win 0 (DF)
                         4500 0028 0000 4000 ff06 7dcd 7f00 0001
                         7f00 0001 0198 871b 0000 0000 0000 0000
                         5014 0000 291b 0000
    Je hoeft de three-way-handshake niet te voltooien, dus stealth
    scanning (zoals genoemd) is minder verdacht dan TCP scanning. IDS'en
    zouden deze afwijkingen in alle gevallen (XMAS en NULL) moeten
    detecteren... 
    "The Identification Protocol (a.k.a.,
    "ident", a.k.a., "the Ident Protocol") provides a means to
    determine the identity of a user of a particular TCP
    connection. Given a TCP port number pair, it returns a
    character string which identifies the owner of that connection
    on the server's system." 
    
    
    (NL: het Identification Protocol (ook bekend als "ident") biedt een 
    mogelijkheid de identiteit van een gebruiker op een bepaalde TCP 
    connectie te achterhalen. Met behulp van een TCP poort nummer paar, 
    retourneerd het een karakter string die de eigenaar van die connectie 
    naar het server systeem weergeeft.)
    
    Reverse Ident Scanning gebruikt identd om te vragen naar de eigenaar
    van een draaiend proces. Deze techniek wordt vooral gebruikt om
    daemons te vinden die draaien als root, om vervolgens precies deze
    daemons aan te vallen.
---------- -------------- ---------- | YOU | <------------> | Dumb Host | <---------->| TARGET | ---------- -------------- ----------Hier zou Dump Host ("Domme Host") zo min mogelijk verkeer moeten hebben. De reden hiervoor zal later duidelijk worden. Waarom wordt Dump Host gebruikt, waarom hebben we er een nodig? Ok, deze vraag leidt tot de eigenlijke aanval en met dit ook de uitleg waarom een dump host nodig is. Om uit te vinden of een poort van "TARGET" open of gesloten is, moet je het IP ID veld van Dump Host bekijken. Hiervoor wordt een pakket (echo request) gestuurd naar Dump Host, en met het antwoord hierop kun je het ID veld lezen, resp. de waarde van het ID veld. Vervolgens stuur je TARGET een pakket waar het bron adres die van Dump Host is. Het antwoord van TARGET wordt dan ontvangen door onze Dump Host. Als hij een SYN/ACK ontvangt van TARGET, betekend dat dat de poort open is. Als dump host een RST/ACK krijgt van TARGET, sturen we Dump Host een andere ping. Als de poort van target open was en een RST terug stuurde, zal het IP ID veld van Dump Host worden verhoogd, met de poort gesloten gebeurt er niets. Door de nieuwe IP ID waarde van Dump Host uit te lezen, kunnen we achterhalen of een poort van TARGET open of gesloten was. Hopelijk is het nu duidelijk waarom we een dump host nodig hebben, dus een host met weinig verkeer. Als er teveel verkeer plaatsvindt op de host, wordt het lastiger om aan te geven welke poorten open staan (op TARGET), de waarschijnlijkheid van het fout hebben is veel hoger bij meer verkeer.
--------------------------------------------------- | Type | Code | Checksum | --------------------------------------------------- | Representer | Sequence | --------------------------------------------------- | Originate Timestamp | --------------------------------------------------- | Receive Stamp | --------------------------------------------------- | Transmit Timestamp | ---------------------------------------------------Voordat ik begin met het gebruik van een Time Stamp Request voor een aanvaller, vertel ik je de basics van de time stamp. Voor ons zijn alleen de laatste drie "velden" van belang. Hier de sectie uit de RFC:
The Originate Timestamp is the time the sender last touched the message before sending it, the Receive Timestamp is the time the echoer first touched it on receipt, and the Transmit Timestamp is the time the echoer last touched the message on sending it."
(NL: De Originate Timestamp is de laatste keer dat de zender het bericht 'raakte' voor deze te versturen, de Receive Timestamp is de tijd dat echoer het voor het eerst 'raakte' bij ontvangen, en de Transmit Timestamp is de tijd dat de echoer het bericht voor het laatst 'raakte' alvorens deze te versturen.)
 11:38:37.898253 Diablo > Diablo: icmp: time stamp query id 53763 seq 64548
 (ttl 254, id 13170, len 40)
                 4500 0028 3372 0000 fe01 8b60 7f00 0001
                 7f00 0001 0d00 61fb d203 fc24 0211 c0ca
                 0000 0000 0000 0000
 11:38:37.898253 Diablo > Diablo: icmp: time stamp reply id 53763 seq 64548 :
 org 0x211c0ca recv 0x211c0ca xmit 0x211c0ca (DF) (ttl 255, id 0, len 40)
                 4500 0028 0000 4000 ff01 7dd2 7f00 0001
                 7f00 0001 0e00 db43 d203 fc24 0211 c0ca
                 0211 c0ca 0211 c0ca
    ICMP Information Request / Reply (RFC 792): 
    
    "This message may
    be sent with the source network in the IP header source and
    destination address fields zero (which means "this" network).
    The replying IP module should send the reply with the addresses
    fully specified. This message is a way for a host to find out
    the number of the network it is on. " 
    
    
    (NL: Dit bericht kan verstuurd worden met het bron netwerk in de
    IP header bron en een doel adres van alleen nullen (wat "dit" 
    netwerk betekend). De antwoordende IP module zou het antwoord 
    moeten sturen met de adressen volledig gespecificeerd. Dit 
    bericht is een manier voor een host om te achterhalen op welk 
    netwerk deze zich bevindt. 
    
    Dus, een Information Request (Informatie Aanvraag, type 15) heeft als
    doel om het netwerk nummer van de verzendende host te achterhalen.
    The address of the source in an information request message will be the destination of the information reply message. To form an information reply message, the source and destination addresses are simply reversed,..." (NL: Het adres van de bron in een information request bericht zal het doel zijn van de information reply. Om een antwoord te formuleren, worden eenvoudig de bron en het doel omgewisseld...)
------------------------------------------------------------------ | Type | Code | Checksum | ------------------------------------------------------------------ | Pointer | Sequence | ------------------------------------------------------------------Het lijkt er op dat je alleen een information request binnen het netwerk kunt sturen (zie hierboven), maar dit hoeft niet zo te zijn. Sommige besturingssystemen antwoorden ook op een information request waarbij het doel IP zich niet in hetzelfde netwerk bevindt. In een dergelijke information reply ontvangen we het IP van de host (en niet het netwerk nummer).
11:42:35.608253 Diablo > Diablo: icmp: information request (ttl 255,
 id 13170, len 28)
                         4500 001c 3372 0000 ff01 8a6c 7f00 0001
                         7f00 0001 0f00 1afc d603 0000
11:42:36.608253 Diablo > Diablo: icmp: information request (ttl 255,
 id 13170, len 28)
                         4500 001c 3372 0000 ff01 8a6c 7f00 0001
                         7f00 0001 0f00 19fc d603 0100
    ICMP Address Mask Request / Reply (RFC 950): 
    
    The Address Mask Request (type 17) has been described in another RFC, 
    for more information look at RFC950 and not in RFC792. The meaning and 
    use of an Address Mask Request is to get the subnetmask of a connected 
    network.
    If a gateway receives such a request it should send back relevant
    information to the respective node (Address Mask Reply - type 18)
    
    
    (NL: Het Address Mask Request (type 17) is beschreven in een andere 
    RFC, voor meer informatie, zie RFC792. Het doel en het gebruik van van
    een Adress Mask Request is om het subnetmasker van een verbonden
    netwerk te achterhalen. Als een gateway een dergelijk verzoek krijgt,
    zou deze relevante informatie terug moeten sturen (Address Mask Reply
    - type 18).
    
------------------------------------------------------------ | Type | Code | Checksum | ------------------------------------------------------------ | Flag | Sequence | ------------------------------------------------------------ | Address Mask | ------------------------------------------------------------Hiermee kun je niet alleen achterhalen welke hosts zich in het netwerk bevinden (welke online zijn) maar ook krijg je meer te weten over de netwerk configuratie met meer tests...
 11:45:26.678253 Diablo > Diablo: icmp: address mask request (ttl 254, id
  13170, len 32)
                4500 0020 3372 0000 fe01 8b68 7f00 0001
                7f00 0001 1100 edd7 dc03 2524 0000 0000
    Ik hoop dat deze sectie je heeft laten zien dat er meerdere
    mogelijkheden zijn om informatie over een netwerk te krijgen, en dat
    dat niet alleen de "normale" pings hoeven te zijn... In de
    respectievelijke RFCs komen vaak dergelijke hints voor die je zou
    moeten overwegen als werkelijk de verschillende typen requests wil
    ondersteunen... Ontwikkelaars van ("echte") IDS'en zouden ook
    dergelijke onderwerpen moeten overwegen. Als ze ondersteund moeten
    worden, moet je ook overwegen dat het werkt (lees de RFCs). Maar zelfs
    dit is niet het einde, zoals je kunt lezen in de volgende sectie...
    If the gateway or host processing a datagram finds a problem with the header parameters such that it cannot complete processing the datagram it must discard the datagram. One potential source of such a problem is with incorrect arguments in an option. The gateway or host may also notify the source host via the parameter problem message. This message is only sent if the error caused the datagram to be discarded."
(NL: Als de gateway of de host een datagram verwerkt en een fout ontdekt in de header parameters zodat deze het verwerken van het datagram niet kan voltooien, dient deze het datagram te droppen. Een potentiële bron van een dergelijk probleem is met incorrecte argumenten in een optie. De gateway of host kan ook de bron host op de hoogte stellen via een parameter probleem bericht. Dit bericht wordt alleen verstuurd als de fout er voor zorgde dat het datagram werd afgedankt.
A host SHOULD generate Parameter Problem messages. An incoming Parameter Problem message MUST be passed to the transport layer, and it MAY be reported to the user. (NL: Een host ZOU Parameter Problem berichten moeten genereren. Een inkomend Parameter Problem bericht MOET doorgegeven aan de transport laag en MAG gerapporteerd worden aan de gebruiker.) DISCUSSION: The ICMP Parameter Problem message is sent to the source host for any problem not specifically covered by another ICMP message. Receipt of a Parameter Problem message generally indicates some local or remote implementation error. "
(NL: Het ICMP Parameter Problem bericht wordt verstuurd naar de bron host voor ieder probleem waar geen ander ICMP bericht voor bestaat. De ontvanger van een Parameter Problem zal meestal een lokale of remote implementatie fout geven.)Al met al, dit biedt erg goede mogelijkheden om hosts te detecteren in een netwerk (om genoemde redenen).
4.3.3.5 Parameter Problem A router MUST generate a Parameter Problem message for any error not specifically covered by another ICMP message. The IP header field or IP option including the byte indicated by the pointer field MUST be included unchanged in the IP header returned with this ICMP message. Section [4.3.2] defines an exception to this requirement. "
NL: Een router MOET een Parameter Parameter Problem bericht genereren, voor iedere fout die niet specifiek wordt gedekt door andere ICMP berichten. Het IP header veld of IP optie, inclusief de byte die door het pointer veld wordt aangegeven MOET onveranderd in het IP header veld worden geretourneerd met dit ICMP bericht. Sectie [4.3.2] definiëert een uitzondering op deze verplichting.Niettemin, verschillende routers interpreteren deze sectie (en ook andere) verschillend, waardoor het niet duidelijk is dat een Parameter Problem wordt gegenereerd.
The ICMP Destination Unreachable message is sent by a router in response to a packet which it cannot forward because the destination (or next hop) is unreachable or a service is unavailable. Examples of such cases include a message addressed to a host which is not there and therefore does not respond to ARP requests, and messages addressed to network prefixes for which the router has no valid route.
(NL: Het ICMP Destination Unreachable bericht wordt verstuurd door een router in antwoord op een pakket dat hij niet kan doorsturen omdat de bestemming (of volgende hop) niet bereikbaar is, of een service niet beschikbaar. Voorbeelden van zulke gevallen bevatten een bericht naar een host welke er niet is en daardoor niet reageerd op ARP vragen, en berichten die zijn geadresseerd aan netwerk prefixes waarvoor de router niet over een geldige route beschikt.)
 A router MUST be able to generate ICMP Destination Unreachable
 messages and SHOULD choose a response code that most closely matches
 the reason the message is being generated.
 
 (NL: Een router MOET in staat zijn om ICMP Destination Unreachable
 berichten te genereren en ZOU een antwoord code moeten kiezen die het
 dichtst bij de reden aansluit waarom het bericht wordt gegenereerd.)
 0 = Network Unreachable - generated by a router if a forwarding path
      (route) to the destination network is not available;
      (NL: Netwerk onbereikbaar - wordt gegenereerd door een router als 
      opgegeven pad (route) naar het doel netwerk niet beschikbaar is)
 1 = Host Unreachable - generated by a router if a forwarding path
      (route) to the destination host on a directly connected network
      is not available (does not respond to ARP);
     (NL: Host niet bereikbaar - gegenereerd door een router als het
      opgegeven pad naar de doelhost zich niet op een direct verbonden 
      netwerk bevindt (reageert niet op ARP)
 2 = Protocol Unreachable - generated if the transport protocol
      designated in a datagram is not supported in the transport layer
      of the final destination;
     (NL: Protocol niet bereikbaar - gegenereerd als het transport 
      protocol aangeduid in het datagram niet ondersteund wordt door de
      transportlaag van de uiteindelijke bestemming)
 3 = Port Unreachable - generated if the designated transport protocol
      (e.g., UDP) is unable to demultiplex the datagram in the
      transport layer of the final destination but has no protocol
      mechanism to inform the sender;
     
     (NL: Poort Onbereikbaar - gegenereerd als het gebruikte transport
      protocol (bijv. UDP) niet in staat is om het datagram in de 
      transport laag van het doel uit te pakken maar niet over een 
      mechanisme beschikt om de zender te informeren.)
 4 = Fragmentation Needed and DF Set - generated if a router needs to
      fragment a datagram but cannot since the DF flag is set;
     (NL:Fragmentatie Nodig en DF Set - gegenereerd als een router een
      datagram moet fragmenteren maar dit niet kan omdat de DF flag 
      gezet is.)
 5 = Source Route Failed - generated if a router cannot forward a
      packet to the next hop in a source route option;
     (NL:Bron Route Faalde - gegenereerd als een router een pakket 
      niet kan doorsturen naar de volgende hop in een bron route optie.)
 6 = Destination Network Unknown - This code SHOULD NOT be generated
      since it would imply on the part of the router that the
      destination network does not exist (net unreachable code 0
      SHOULD be used in place of code 6);
     (NL:Doel Netwerk Onbekend - Deze code ZOU NIET gegenereerd worden
      daar het impliceert dat, voor wat de router betreft, het doel-
      netwerk niet bestaat. (net unreachable code 0 ZOU gebruikt moeten
      worden in plaats van code 6.)
 7 = Destination Host Unknown - generated only when a router can
      determine (from link layer advice) that the destination host
      does not exist;
     (NL: Doel Host Onbekend - alleen gegenereerd als een router kan
      bepalen (van link laag advies) dat de doel host niet bestaat.)
 11 = Network Unreachable For Type Of Service - generated by a router
       if a forwarding path (route) to the destination network with the
       requested or default TOS is not available;
      (NL: Netwerk Onbereikbaar Voor Type Of Service - gegenereerd door
       een router als een doorstuur pad (pad) naar het doel netwerk met
       de gevraagde of default TOS niet beschikbaar is.)
 12 = Host Unreachable For Type Of Service - generated if a router
       cannot forward a packet because its route(s) to the destination
       do not match either the TOS requested in the datagram or the
       default TOS (0).         "
      (NL: Host onbereibaar voor Type Of Service - gegenereerd als een
       router een pakket niet kan doorsturen omdat zijn route(s) naar
       de doel host niet overeenkomen met ofwel de TOS gevraagd in het
       datagram of de default TOS (0).)
    Als we nu, bijvoorbeeld, een pakket proberen te sturen naar een poort
    welke een protocol gebruikt dat niet bestaat, zou er in feite een
    notificatie moeten komen over een Destination Unreachable met code
    waarde 2 (Protocol Unreachable). Verder, met dit voorbeeld zou je
    eerst moeten weten welke protocollen er worden "toegestaan". Dit kun
    je uitvinden door te kijken in /etc/protocols. Na de installatie van
    een van mijn hosts zag de /etc/protocols er als volgt uit:
 -------------- /etc/protocols ----------------
# /etc/protocols:
# $Id: protocols,v 1.2 2001/01/29 17:29:30 notting Exp $
#
# Internet (IP) protocols
#
#       from: @(#)protocols     5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
#
# See also http://www.isi.edu/in-notes/iana/assignments/protocol-numbers
ip      0       IP              # internet protocol, pseudo protocol number
#hopopt 0       HOPOPT          # hop-by-hop options for ipv6
icmp    1       ICMP            # internet control message protocol
igmp    2       IGMP            # internet group management protocol
ggp     3       GGP             # gateway-gateway protocol
ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
st      5       ST              # ST datagram mode
tcp     6       TCP             # transmission control protocol
cbt     7       CBT             # CBT, Tony Ballardie 
egp     8       EGP             # exterior gateway protocol
igp     9       IGP             # any private interior gateway 
                                # (Cisco: for IGRP)
bbn-rcc 10      BBN-RCC-MON     # BBN RCC Monitoring
nvp     11      NVP-II          # Network Voice Protocol
pup     12      PUP             # PARC universal packet protocol
argus   13      ARGUS           # ARGUS
emcon   14      EMCON           # EMCON
xnet    15      XNET            # Cross Net Debugger
chaos   16      CHAOS           # Chaos
udp     17      UDP             # user datagram protocol
mux     18      MUX             # Multiplexing protocol
dcn     19      DCN-MEAS        # DCN Measurement Subsystems
hmp     20      HMP             # host monitoring protocol
prm     21      PRM             # packet radio measurement protocol
xns-idp 22      XNS-IDP         # Xerox NS IDP
trunk-1 23      TRUNK-1         # Trunk-1
trunk-2 24      TRUNK-2         # Trunk-2
leaf-1  25      LEAF-1          # Leaf-1
leaf-2  26      LEAF-2          # Leaf-2
rdp     27      RDP             # "reliable datagram" protocol
irtp    28      IRTP            # Internet Reliable Transaction Protocol
iso-tp4 29      ISO-TP4         # ISO Transport Protocol Class 4
netblt  30      NETBLT          # Bulk Data Transfer Protocol
mfe-nsp 31      MFE-NSP         # MFE Network Services Protocol
merit-inp       32    MERIT-INP       # MERIT Internodal Protocol
sep     33      SEP             # Sequential Exchange Protocol
3pc     34      3PC             # Third Party Connect Protocol
idpr    35      IDPR            # Inter-Domain Policy Routing Protocol
xtp     36      XTP             # Xpress Tranfer Protocol
ddp     37      DDP             # Datagram Delivery Protocol
idpr-cmtp       38    IDPR-CMTP       # IDPR Control Message Transport Proto
tp++    39      TP++            # TP++ Transport Protocol
il      40      IL              # IL Transport Protocol
ipv6    41      IPv6            # IPv6
sdrp    42      SDRP            # Source Demand Routing Protocol
ipv6-route      43    IPv6-Route      # Routing Header for IPv6
ipv6-frag       44    IPv6-Frag       # Fragment Header for IPv6
idrp    45      IDRP            # Inter-Domain Routing Protocol
rsvp    46      RSVP            # Resource ReSerVation Protocol
gre     47      GRE             # Generic Routing Encapsulation
mhrp    48      MHRP            # Mobile Host Routing Protocol
bna     49      BNA             # BNA
ipv6-crypt      50    IPv6-Crypt      # Encryption Header for IPv6
ipv6-auth       51    IPv6-Auth       # Authentication Header for IPv6
i-nlsp  52      I-NLSP          # Integrated Net Layer Security TUBA
swipe   53      SWIPE           # IP with Encryption
narp    54      NARP            # NBMA Address Resolution Protocol
mobile  55      MOBILE          # IP Mobility
tlsp    56      TLSP            # Transport Layer Security Protocol
skip    57      SKIP            # SKIP
ipv6-icmp       58    IPv6-ICMP       # ICMP for IPv6
ipv6-nonxt      59    IPv6-NoNxt      # No Next Header for IPv6
ipv6-opts       60    IPv6-Opts       # Destination Options for IPv6
#       61                      # any host internal protocol
cftp    62      CFTP            # CFTP
#       63                      # any local network
sat-expak       64      SAT-EXPAK       # SATNET and Backroom EXPAK
kryptolan       65      KRYPTOLAN       # Kryptolan
rvd     66      RVD             # MIT Remote Virtual Disk Protocol
ippc    67      IPPC            # Internet Pluribus Packet Core
#       68                      # any distributed file system
sat-mon 69      SAT-MON         # SATNET Monitoring
visa    70      VISA            # VISA Protocol
ipcv    71      IPCV            # Internet Packet Core Utility
cpnx    72      CPNX            # Computer Protocol Network Executive
cphb    73      CPHB            # Computer Protocol Heart Beat
wsn     74      WSN             # Wang Span Network
pvp     75      PVP             # Packet Video Protocol
br-sat-mon      76      BR-SAT-MON      # Backroom SATNET Monitoring
sun-nd  77      SUN-ND          # SUN ND PROTOCOL-Temporary
wb-mon  78      WB-MON          # WIDEBAND Monitoring
wb-expak        79      WB-EXPAK        # WIDEBAND EXPAK
iso-ip  80      ISO-IP          # ISO Internet Protocol
vmtp    81      VMTP            # Versatile Message Transport
secure-vmtp     82      SECURE-VMTP     # SECURE-VMTP
vines   83      VINES           # VINES
ttp     84      TTP             # TTP
nsfnet-igp      85      NSFNET-IGP      # NSFNET-IGP
dgp     86      DGP             # Dissimilar Gateway Protocol
tcf     87      TCF             # TCF
eigrp   88      EIGRP           # Enhanced Interi
    Wat als de host geen Protocol Unreachable terugstuurt (al gebruikte je
    een protocol dat niet bestaat)? Dit kan twee redenen hebben. Ten
    eerste zou het kunnen dat je een AIX, HP-UX of Digital Unix machine
    bent tegengekomen of als de regelset op de host je niet toestaat om
    deze poorten te benaderen. Dus, ten eerste, controleer welk soort host
    je scant (oa mogelijk met een fingerprint OS detectie) of anders kun
    je aannemen dat het gefilterd/geblockt wordt. ------------------ SYN ------------- | Host A | ------------------------------------ > | Host B | ------------------ ------------- ------------------ ACK/SYN ------------- | Host A | <------------------------------------| Host B | ------------------ ------------- ------------------ ACK ------------- | Host A | ------------------------------------ > | Host B | ------------------ -------------Host A stuurt Host B een SYN om aan te geven dat hij een connectie wil, B antwoord met een ACK/SYN en wacht op de laatste ACK waarmee de connectie compleet zou zijn. Maar wat als de laatste ACK niet verstuurd wordt? Als B zijn SYN/ACK terugstuurt wacht het (zoals genoemd) op de ACK van A, tot die tijd zal het worden geplaatst in de connectie wachtrij (connection queue) van B. Als de connectie compleet is (A stuurt B een ACK), zal deze uit de wachtrij verwijderd worden. Maar daar het IP adres gespoofed is, krijgt B nooit een ACK (zo zou het moeten zijn). Zo kun je dus de connectie wachtrij "vullen" tot de host geen verdere connecties meer kan maken.
23/06/02 23:12:48 194.157.1.1 80 -> 194.157.1.1 23/06/02 23:14:57 194.157.1.1 31337 -> 194.157.1.1Zoals je kunt zien, zijn de bron en doel IPs identiek.
 12:35:26.916369 192.168.38.110.135>192.168.38.110.135: udp 46[tos0x3,ECT,CE]   
         4503 004a 96ac 0000 4011 15c7 c0a8 266e        
        c0a8 266e 0087 0087 0036 8433 6920 616d         
        206c 616d 6520 646f 7320 6b69 6420 6275         
        7420 6920 7265
 12:35:26.916566 192.168.38.110.135>192.168.38.110.135: udp 46[tos0x3,ECT,CE]
        4503 004a 2923 0000 4011 8350 c0a8 266e         
        c0a8 266e 0087 0087 0036 8433 6920 616d         
        206c 616d 6520 646f 7320 6b69 6420 6275         
        7420 6920 7265
 12:35:26.916682 192.168.38.110.135>192.168.38.110.135:udp 46[tos0x3,ECT,CE]    
        4503 004a 50a0 0000 4011 5bd3 c0a8 266e         
        c0a8 266e 0087 0087 0036 8433 6920 616d         
        206c 616d 6520 646f 7320 6b69 6420 6275         
        7420 6920 7265
    De aanval die je hier ziet wordt ook wel Snork genoemd. 
 10:13:32.104203 10.10.10.10.53>192.168.1.3.53: udp 28(frag 242:36@0+)(ttl64)   
        4500 0038 00f2 2000 4011 8404 0a0a 0a0a         
        c0a8 0103 0035 0035 0024 0000 0000 0000         
        0000 0000 0000 0000 0000 0000 0000 0000         
         0000 0000 0000
 10:13:32.104272 10.10.10.10 >192.168.1.3: udp 28(frag 242:4@24)(ttl 64)        
        4500 0018 00f2 0003 4011 a421 0a0a 0a0a         
        c0a8 0103 0035 0035 0024 0000 0000 0000         
        0000 0000 0000 0000 0000 0000 0000      
    Ping of Death: 17:43:58.431 pinger > target: icmp echo request (frag 4321: 380@0+) 17:43:58.431 pinger > target: (frag 4321: 380@2656+) 17:43:58.431 pinger > target: (frag 4321: 380@3040+) 17:43:58.431 pinger > target: (frag 4321: 380@3416+)
 09:28:28.666073 179.135.168.43>256.256.30.255: icmp: echo request (DF)         
        4500 001c c014 4000 1e01 6172 b387 a82b         
        c0a8 1eff 0800 f7ff 0000 0000 0000 0000         
        0000 0000 0000 0000 0000 0000 0000
 09:28:28.696073 68.90.226.250>256.256.30.255: icmp: echo request (DF)  
        4500 001c c015 4000 1e01 95cf 445a e2fa         
        c0a8 1eff 0800 f7ff 0000 0000 3136 3803         
        3133 3503 3137 3907 696e 2d61 6464
 09:28:28.726073 138.98.10.247>256.256.30.255:  icmp: echo request (DF)         
        4500 001c c016 4000 1e01 27ca 8a62 0af7         
        c0a8 1eff 0800 f7ff 0000 0000 0332 3236         
        3938 0331 3638 0769 6e2d 6164 6472
 09:28:28.756073 130.113.202.100 > 256.256.30.255: icmp: echo request (DF)      
        4500 001c c017 4000 1e01 704c 8271ca64  
        c0a8 1eff 0800 f7ff 0000 0000 0231 3002         
        3938 0331 3338 0769 6e2d 6164 6472
        ...
    Sinds enige tijd bestaan er ook DDoS aanvallen (Distributed Denial of
    Service). Zoals de naam suggereert is dit een
    gedistribueerde/genetwerkte DoS aanval. De aanvaller (client) zoekt
    naar andere hosts/netwerken... welke eenvoudig te exploiteren zijn.
    Deze eerst geïnfecteerde hosts worden de handlers genoemd.
    Handlers infecteren verdere hosts/netwerken, deze geïnfecteerde
    hosts worden dan agents genoemd. Als datagram:
                 ---------
                 | YOU   |
                 ---------
                     |
        ---------------------------------
        |               |               |
     Handler         Handler         Handler                                    
        |               |               |
    ------        -------------------        ------------               
    |    |        |                 |        |          |       
  Agent  Agent      Agent           Agent  Agent     Agent      
    Later voeren de agenten aanvallen uit.
Dit is het eerste artikel van 2. We zullen verder gaan in het volgende nummer van LinuxFocus.