summaryrefslogtreecommitdiff
path: root/informationals/teso-i0023.txt
blob: b21eb1c2630250d23c643fab9435cb86ff6cb3aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
0023 2000/04/16  Information on BinTec Router DoS 

==== TESO Informational =======================================================
This piece of information is to be kept confidential.
===============================================================================

Description ..........: By filling the NAT table of a BinTec Router one can
                        force the machine to reboot because of memory shortage
Date .................: 2000/04/16 00:00
Author ...............: rookie
Publicity level ......: unknown
Affected .............: BinTec Router (BRICK-XS1/4 tested)
                        Firmware 4.9.3 has fixed this bug by deleting
                        Table entries, the 'Final Release' 5.1.2 reintroduced
                        the bug again
Type of entity .......: 
Type of discovery ....:
Severity/Importance ..: low, stupid DoS, easy to use
Found by .............: rookie

===============================================================================

BinTec Router will reboot automatically when memory is short, so the perfect
DoS is to fill up the memory.

A common setup especially for workgroup and small business Access Router to
connect many computers over one or two ISDN lines is NAT (Network Adress
Translation). However, NAT is also considered to be a 'security feature'
because it acts like a stateful transparent proxy for private networks, so it
can be found on other setups, too.

Due to this behaviour a router doing NAT has to manage a table with the
following information for every connection:

internal network ip & port -> router external port -> target ip & port 


a.)

Example from an XS Router (Firmware 5.1.2):

cass:system> ipNatTable

inx IfIndex(*ro)      Protocol(*ro)     IntAddr(*ro)      IntPort(*ro)
    ExtAddr(ro)       ExtPort(ro)       RemoteAddr(ro)    RemotePort(ro)
    Direction(ro)     Age(ro)

 00 10001             tcp               192.168.0.100     1112
    195.202.39.137    32824             212.3.152.130     50005
    outgoing          0 00:00:02.00


b.)

A packet with SYN flag establishes an entry:

raven:~# nmap -sS www.ccc.de -p 12345

 08 10001             tcp               192.168.0.100     63072
    195.202.39.137    33016             195.21.255.248    12345
    outgoing          0 00:00:02.00


c.)

However the table entry is deleted for that connection if a RST, FIN or
ICMP Error is received:

cass:ipExtIfTable> ipextifnatrmvfin

inx NatRmvFin(rw)

 00 yes /* ethernet 1*/

 01 yes /* ethernet 2*/

 02 yes /* dial up line */


d.)

For idle connections there is a timeout of 1 hour for TCP and 30
seconds for icmp and udp:

cass:ipExtIfTable> ipextifnattcptimeout

inx NatTcpTimeout(rw)

 00 3600

 01 3600

 02 3600

cass:ipExtIfTable> ipextifnatothertimeout

inx NatOtherTimeout(rw)

 00 30

 01 30

 02 30


Notice: Setting down the timeout won't help much, you can force the machine
        to reboot with nmap -sS down to about 2 seconds *with* RSTet
        connections. With anything below 30 seconds the router will kill any
        telnet, IRC and whatsoever idle connection.

Conclusion: Rebooting the machine from the masqueraded network is trivial by
            sending lots of SYN packets from different source IPs and ports to
            an external IP that does not send RST packets back (however even
            thenn the router memory might overflow)

e.)

Very often a forward rule is implemented to allow services from the outside
through NAT. 

The default behaviour is to reject connections from the outside:

Apr 19 23:39:18 cass INET: NAT: refused incoming session on ifc 10001 prot 6
195.202.39.137:113 <- 128.176.216.234:1046

However a forward rule can be defined:

          Service                         user defined
          Protocol                        tcp
          Port (-1 for any)               113
          Destination                     192.168.0.100

The identd request goes through:

Apr 20 00:39:28 raven tcplogd: auth connection attempt from
HOTSPOT2.UNI-MUENSTER.DE [128.176.216.234]


f.)

Entry in the NAT Table:

cass:ipNatTable> ipNatTable

inx IfIndex(*ro)      Protocol(*ro)     IntAddr(*ro)      IntPort(*ro)
    ExtAddr(ro)       ExtPort(ro)       RemoteAddr(ro)    RemotePort(ro)
    Direction(ro)     Age(ro)

 05 10001             tcp               192.168.0.100     113
    195.202.39.137    113               128.176.216.234   1049
    incoming          0 00:00:05.00

Conclusion: Rebooting from the outside is simple if a forward rule has been
            defined (very likely).

===============================================================================