TCP/IP Vulnerabilities

hollowtabernacleRéseaux et Communications

26 oct. 2013 (il y a 5 années et 4 mois)

211 vue(s)

TCP/IP Vulnerabilities

ECE 478/578 Computer and Network Security

Submitted by
Rudhrakumar Venkatesan
Shashidhar Lakkavalli Abstract

TCP/IP is a set of protocols developed to allow cooperating computers to share resources
across a network. The TCP/IP protocol suite, which is very widely used today, has a large
number of serious security flaws inherent in the protocols, regardless of the correctness of any
implementations. We describe a variety of attacks based on these flaws.
The Attack methods in TCP/IP Networks, which we will be trying to explore in this
paper, are
(i) Sniffing - A Passive attack using Sniffer Programs those trap the packets.
(ii) Denial of Service on Swap space, Bandwidth, RAM, Caches.
(iii) Spoofing, hijacking - Redirection of TCP Stream through Active Attacks.
(iv) Sequence Number Prediction Attacks.
We will also be studying some sniffer programs, spoofing & hijacking tools & their
impact on the network. We also explore the various methods of detection, prevention and
recovery from such attacks.

1 Introduction
1.1 TCP/IP
1.2 Attacks
2 Passive Attacks
2.1 Sniffing
2.1.1 Protocols Vulnerable to Sniffing
2.1.2 Methods for sniffing
2.1.3 Prevention of Vulnerabilities
2.1.4 Encryption Tools
2.1.5 Sniffing Programs
3 Active Attacks
3.1 Spoofing & Hijacking
3.1.1 IP Spoofing
3.1.2 Hijacking
3.1.3 How It s Done Connection Killing Connection Hijacking
3.1.4 Impact
3.1.5 Solutions
3.2 Sequence Number Guessing
3.2.1 Details Of Attack
3.2.2 Solutions
3.3 Denial Of Service
3.3.1 Some Basic Targets for an Attack
3.3.2 The Attacks
3.3.3 Protecting a system against DOS Attack
4 Conclusion

5 Reference
1 Introduction

The TCP/IP protocol suite is the most widely used communication standard on the
Internet. Despite that, there are a number of serious security flaws inherent in the protocols.
Flaws even arise due to the bad implementation and improper configuration of the Applications
using these protocol suites. The attacks are classified into Active attacks and passive attacks
depending on the behaviour of the attacker. Sniffing is the most common form of passive attack
and so we will be discussing about it in detail, where as there are many prominent forms of
active attacks and we will be considering spoofing, hijacking, sequence number prediction and
Denail of service attacks into discussion.

1.1 TCP/IP

TCP provides a full duplex reliable stream connection between two end points. A
connection is uniquely defined by the quadruple (IP address of sender, TCP port number of the
sender, IP address of the receiver, TCP port number of the receiver). Every byte that is sent by a
host is marked with a sequence number (32 bits integer) and is acknowledged by the receiver
using this sequence number. The sequence number for the first byte sent is computed during the
connection opening. It changes for any new connection based on rules designed to avoid reuse of
the same sequence number for two different sessions of a TCP connection.

1.2 Attacks

In security, the word attack has taken on very specific connotations. For example, you
might here of researchers trying to "attack a cryptosystem". The word is often used in the
abstract sense rather than in any physical sense. This academic circles, this word is often used in
preference to other synonyms such as crack or break.
A passive attack (like sniffer)is one that can take place by eavedropping. An active
attack(Like Hijacking) is one that requires interaction, such as injecting something into the data
stream or change, delete, reroute, add, forge or divert data. All attacks are divided into these two

2. Passive Attacks
2.1 Sniffing

Packet sniffing is the act of intercepting and reading any or all network traffic that is
being transmitted across a shared network communication channel. Sniffing programs are of 2
two forms. Commercial packet sniffers are used to help maintain networks. Underground packet
sniffers are used to break into computers.

2.1.1 Protocols vulnerable to sniffing?
Following is a sampling of typical protocols that are sniffed, especially for passwords.
Telnet and rlogin
Sniffing can capture the keystrokes as the user types them, including the user name and
The default version of HTTP has numerous holes. Many web sites use "Basic" authentication,
which sends passwords across the wire in plain-text. Many web sites use another technique
which prompts the user for a username and password, which are also sent across the network in
plain-text. Data sent in clear-text.
Almost all SNMP traffic is SNMPv1, which has no good security. SNMP passwords (called
community-strings) are sent across the wire in the clear.
Passwords sent in the clear. Data sent in clear
Passwords sent in the clear. Data sent in clear
Passwords sent in the clear. Data sent in clear
Passwords sent in the clear. Data sent in clear

Fig 1.0 Sniffing Program in Action 2.1.2 Methods for sniffing

The network interface card (NIC) hardware in a networked computer receives every piece
of network traffic that is transmitted across the physical network. Ordinarily the network device
driver software will process only incoming traffic which contains the address of its host
computer, or broadcast packets which are meant for all computers on a network. However certain
network adapter hardware can be configured to operate in an altered state where the network
device driver processes all traffic transmitted across the network, whether addressed to the host
computer or not.

Monitoring network traffic requires both hardware and software mechanisms working together.
The monitoring process begins with the NIC, with the packets being captured by the device
driver software. Both the hardware and the software components of the NIC need to provide
mechanisms for capturing the raw packets. After the network traffic is processed by the NIC,
software mechanisms are needed to filter the captured data. Finally, a mechanism is required to
extract and reconstruct the data portion of the captured packets, and to display what you get in a
readable format.

2.1.3 Prevention of vulnerabilities

Most of the systems have secure alternatives. However most sites do not implement these
solutions, and are consequently vulnerable to this sort of attack. The remaining of the
vulnerabilities are caused by faulty implementation of protocols. Examples of faulty protocol
implementation include Windows NT’s password hashing algorithm. TELNET packets bound for
an Windows NT server, for example, can be intercepted and decrypted by someone knowing the
password hashing weakness

Some of the methods of preventing sniffing are :

1. Authentication schemes such as MD4 and MD5, KERBEROS, DESLOGIN, s/key, and SSH
are available to prevent the clear text transmission of user names and passwords across a
network. Public key encryption programs such as PGP are available to encrypt electronic
mail (E-mail) to prevent the contents from being read.
2. Sniffer programs running in promiscous mode can be found out by identifying the sessions
currently running on the machine. In Unix machines, Ifconfig a reveals all programs
running in promisuous mode. Ultrix can possibly detect someone running a sniffer by using
the commands pfstat and pfconfig. pfconfig allows you to set who can run a sniffer pfstat
shows you if the interface is in promiscuous mode.
3. Often a sniffer log becomes so large that the file space is all used up. On a high volume
network, a sniffer will create a large load on the machine. These sometimes trigger enough
alarms that the administrator will discover a sniffer.
4. Secure Socket Layer : SSL is built into all popular web browsers and web servers. It allows
encrypted web surfing, and is almost always used in e-commerce when users enter their
credit card information. 5. To detect a sniffing device that only collects data and does not respond to any of the
information, requires physically checking all your ethernet connections by walking around
and checking the ethernet connections individually.
6. Active hubs send to each system only packets intended for it rendering promiscuous sniffing.
7. Using interfaces that will not allow processes to run in promiscuous mode and thus prevent

2.1.4 Encryption Tools

One time password techniques

2.1.5 Tools to detect packet sniffers

Check Promiscuous Mode

2.1.6 Sniffing programs

Network Associates Sniffer
BlackICE Pro

3. Active Attacks

3.1 Spoofing & Hijacking

Passive attacks using sniffers are becoming more and more frequent on the Internet. The
attacker obtains a user id and password that allows him to logon as
that user. In order to prevent such attacks people have been using identification schemes such as
one-time password [SKEY] or ticketing identification [Kerberos]. Though they prevent password
sniffing on an unsecure network these methods are still vulnerable to an active attack as long as
they neither encrypt nor sign the data stream. Still many people are complacent believing that active attacks are very difficult and hence a lesser risk. But we can implement a IP hijack and
successfully spoof the system with an active attack which can be done with
the same resources as for a passive sniffing attack.

3.1.1 IP spoofing

To gain access, intruders create packets with spoofed source IP addresses. This exploits
applications that use authentication based on IP addresses and leads to unauthorized user and
possibly root access on the targeted system. It is possible to route packets through filtering-router
firewalls if they are not configured to filter incoming packets whose source address is in the local
domain. It is possible to spoof even if no reply packets can reach the attacker. Examples of
configurations that are potentially vulnerable include - routers to external networks that support
multiple internal interfaces - routers with two interfaces that support subnetting on the internal
network - proxy firewalls where the proxy applications use the source IP address for

3.1.2 Hijacking

Once the intruders have root access on a system, they can hijack existing terminal and
login connections from any user on the system. In taking over the existing connections, intruders
can bypass one-time passwords and other strong authentication schemes by tapping the
connection after the authentication is complete. For example, a legitimate user connects to a
remote site through a login or terminal session; the intruder hijacks the connection after the user
has completed the authentication to the remote location; the remote site is now compromised.

Spoofing is classified into
Non-blind spoofing Using the spoofing to interfer with a connection that sends packets along
your subnet.
Blind spoofing Using the spoofing to interfer with a connection (or creating one), that does not
send packets along your cable.
The concept of non-blind spoofing(NBS) is pretty simple. Because packets travel within
your reach, you can get the current sequence and acknowledge (SEQ/ACK) numbers on the
connection. NBS is thus a very easy and accurate method of attack, but limited to connections
going over your subnet. In spoofing documentation these attacks are sometimes ommited,
because they are mostly ’denial-of-service’ attacks, or because people don’t realise the advantage
a spoof (in particulary a hijack) can have above simple password sniffing. Spoofing in generally
is refered to as a verry high level of attack. This refers to blind spoofing (BlS).

3.1.3 How It’s Done Connection Killing

host A <------X------------------------->host B | A,B have a TCP connection running
host S <------/ A,S on same subnet
a. Using reset (RST)
TCP packets have flags which indicate the status of the packet, like RST. That is a flag
used to reset a connection. To be accepted, only the sequence number has to be correct (there is
no ACK in a RST packet). So we are going to wait for packets in a connection between A and B.
Assume we wait for packets to A. We will calculate (from B’s packets) the sequence number for
A’s packets (from B’s ACK’s), and fire a bogus RST packet from S (faking to be A) to B.

b. Closing a connection (FIN)
An other flag is FIN and says: "no more data from sender". This flag is used when
closing a connection down the normal legit way. So if there was a way to make a packet that is
accepted by one of the two hosts, this host would believe the ’sender’ didn’t have any data left.
Following (real) packets would be ignored as they are considered bogus. That’s it, because we
can sniff the current SEQ/ACK of the connection we can pretend to be either host A or B, and
provide the other host with CORRECT packetinformation, and an evil FIN flag. The beauty of it
all is, that after a FIN is send the other host always replies with one if it is accepted, so we have a
way to verify our killing, and can be 100% sure of success (if for some reason we missed a SEQ
or ACK, we can just resend). RST killing is more popular and is prefered. Connection Hijacking

host A <------X------------------------->host B | A,B have a TCP connection running (TELNET)
host S <------/ A,S on same subnet

Assume a TELNET from A (client) to B (server). TCP separates good and bogus packets
by their SEQ/ACK numbers i.e. B trusts the packets from A because of its correct SEQ/ACK
numbers. So if there was a way to mess up A’s SEQ/ACK, B would stop believing A’s real
packets. We could then impersonate to be A, but using correct SEQ/ACK numbers (that is
numbers correct for B). We would now have taken over the connection (host A is confused, B
thinks nothings wrong, and S sends ’correct’ data to B). This is called ’Hijacking’ a connection.
To mess up A’s SEQ/ACK numbers we simply insert a data packet into the stream at the right
time (S as A->B), the server B would accept this data, and update ACK numbers, A would
continue to send it’s old SEQ numbers, as it’s unaware of our spoofed data.

Takeover phase 1: Stealing connection. Sending Spoofed clean-up data... Waiting for spoof to be
confirmed... Phase 1 ended.
Takeover phase 2: Getting on track with SEQ/ACK’s again Server SEQ: C34A680B (hex) ACK:
5C8223F5 (hex) Phase 2 ended.
Takeover phase 3: Sending MY data. Sending evil data. Waiting for evil data to be confirmed...
Phase 3 ended.

3.1.4. Impact
Current intruder activity in spoofing source IP addresses can lead to unauthorized remote
root access to systems behind a filtering-router firewall. After gaining root access and taking
over existing terminal and login connections, intruders can gain access to remote hosts.

3.1.5 Solutions

A. Detection

IP spoofing

1. If you monitor packets using network-monitoring software such as netlog, look for a packet
on your external interface that has both its source and destination IP addresses in your local
domain. If you find one, you are currently under attack.
2. Another way to detect IP spoofing is to compare the process accounting logs between
systems on your internal network. If the IP spoofing attack has succeeded on one of your
systems, you may get a log entry on the victim machine showing a remote access; on the
apparent source machine, there will be no corresponding entry for initiating that remote


1. When the intruder attaches to an existing terminal or login connection, users may detect
unusual activity, such as commands appearing on their terminal that they did not type or a
blank window that will no longer respond to their commands. Encourage your users to
inform you of any such activity.
2. In addition, pay particular attention to connections that have been idle for a long time. Once
the attack is completed, it is difficult to detect. However, the intruders may leave remnants of
their tools. For example, you may find a kernel streams module designed to tap into existing
TCP connections.

B. Prevention

IP spoofing
The best method of preventing the IP spoofing problem is to install a filtering router that
restricts the input to your external interface (known as an input filter) by not allowing a packet
through if it has a source address from your internal network. In addition, you should filter
outgoing packets that have a source address different from your internal network in order to
prevent a source IP spoofing attack originating from your site. If your vendor’s router does not
support filtering on the inbound side of the interface or if there will be a delay in incorporating
the feature into your system, you may filter the spoofed IP packets by using a second router
between your external interface and your outside connection. Configure this router to block, on
the outgoing interface connected to your original router, all packets that have a source address in
your internal network. For this purpose, you can use a filtering router or a UNIX system with
two interfaces that supports packet filtering. Disabling source routing at the router does not
protect you from this attack, but it is still good security practice to do so.
There is no specific way to prevent users from hijacking other than preventing intruders
from gaining root access in the first place. If you have experienced a root compromise, you have
to do a recovery.

3.2 Sequence Number Guessing

3.2.1 Details of the Attack

If TCP sequence numbers are predictable, a hacker can forge a connection from another
machine. The hacker doesn’t need to see the packets from the server; the server believes the
hacker is the trusted client. This is easily done on any Internet machines where the hacker has
full privileges: Macs, Windows etc.
Lets assume that the attacker, in this case X, has been able to spoof the IPaddress of
client A. Spoofing attacks are also discussed in this paper(3.1).
Sequence number guessing is related with the 3-way handshake used in the TCP.
Suppose client machine A wants to talk to remote server B. It sends the following message:
That is, it sends a packet with the SYN ("synchronize sequence number") bit set and an
initial sequence number ISNa.

B replies with
In addition to sending its own initial sequence number, it acknowledges A’s. The actual numeric
value ISNa also appears in the message.

A concludes the handshake by sending

The initial sequence numbers are intended to be more or less random. RFC 793 specifies
that the 32-bit counter be incremented by 1 in the low-order position about every 4
microseconds. Instead, some unix versions like Free-BSD increment it by a constant every
second, and by another constant for each new connection. Thus, if a connection is opened to a
machine, then guessing the sequence number for the next connection is not very tough. And this
leads to the source of attack.
Suppose X is the attacker. X first opens a real connection to its target. This gives ISNb.
It then impersonates A and sends
Ax-B: SYN, ISNx where "Ax" denotes a packet sent by X pretending to be A.

B’s response to X’s original SYN
B-A: SYN, ISNb’, ACK(ISNx) the legitimate A, about which more anon.

X never sees that message but can still send Ax-B: ACK(ISNb’) using the predicted value for
ISNb’. If X had guessed the sequence number right B’s server thinks it has a legitimate
connection with A, when in fact X is sending the packets. X can’t see the output from this
session, but it can execute commands as more or less any user
There is a minor difficulty here. If A sees B’s message, it will realize that B is
acknowledging something it never sent, and will send a RST packet in response to tear down the

3.2.2 Solution

The problem encountered above is because the attacker was able to guess the initial
sequence number. By having the initial sequence number a random number, the sequence attack
can be avoided. But, this leads to protocol problems like duplicate packets and reincarnations of
packets of the old connection at the server, due to which the server will not be able to distinguish
if the packets were from the current session or from the previous connection. One way to avoid
this is to allot sequence number space to each port, and the sequence numbers are incremented
according to the following relationship

ISN = M + F(localhost, localport, remotehost, remoteport).

It is important that F not be computable from the outside, or an attacker could still guess
at sequence numbers from the initial sequence number used for some other connection. If F is a
cryptographic hash function of the connection-id and some secret data, then it is a good source of
a unpredictable random number. Hash techniques like MD5 is a good choice, since the code is
widely available. The secret data can either be a true random number [10], or it can be the
combination of some per-host secret and the boot time of the machine. The boot time is included
to ensure that the secret is changed on occasion. Other data, such as the host’s IP address and
name, may be included in the hash as well.

3.3 Denial of service

Denial of service is about without permission knocking off services, for example through
crashing the whole system. This kind of attacks are easy to launch and it is hard to protect a
system against them.
Such attacks are motivated typically due to Sub-cultural status, To gain access, Revenge,
Political reasons, Economical reasons or Nastiness.

3.3.1 Some basic targets for an attack

a. Swap Space
Most systems have several hundred Mbytes of swap space to service client requests. The
swap space is typical used for forked child processes which have a short life time. The swap
space will therefore almost never in a normal cause be used heavily. A denial of service could be
based on a method that tries to fill up the swap space.
b. Bandwidth
If the bandwidth is to high the network will be useless. Most denial of service attack
influence the bandwidth in some way. c. Kernel Tables
Overflow in the kernel tables will cause serious problems on the system. The kernel have a
kernelmap limit, if the system reach this limit it can not allocate more kernel memory and must
be rebooted. The kernel memory is not only used for RAM, CPU:s, screens and so on, it it also
used for ordinaries processes. Meaning that any system can be crashed and with a mean
algorithm pretty fast. In Solaris 2.X the amount of kernel memory the system is usingit is
measured and reported with the sar command , but for SunOS 4.X there is no such command. So
in SunOS 4.X we don’t even can get a warning.
d. RAM
A denial of service attack that allocates a large amount of RAM can make a great deal of
problems. NFS and mail servers are actually extremely sensitive because they do not need much
RAM and therefore often don’t have much RAM. An attack at a NFS server is trivial. The normal
NFS client will do a great deal of caching, but a NFS client can be anything including the
program you wrote yourself.

3.3.2 The Attacks

(A). Taking Advantage Of Finger
Most fingerd installations support redirections to an other host.
Ex: $finger
In this example the finger will go through and on to As far as knows it is who is fingering. So this method can be used for
hiding, but also for a very dirty denial of service attack.
Foe eg in :
$ finger
All those @ signs will get finger to finger host.we.attack again and again and again... The effect
on host.we.attack is powerful and the result is high bandwidth, short free memory and a hard
disk with less free space, due to all child processes.
The solution is to install a fingerd which don’t support redirections, for example GNU finger.

(B). Freezing Up X-Windows
If a host accepts a telnet session to the X-Windows port, somewhere between 6000 and
6025(In most cases 6000) it could be used to freeze up the X-Windows system. This can be made
with multiple telnet connections to the port or with a program which sends multiple
XOpenDisplay() to the port. The same thing can happen to Motif or Open Windows. The
solution is to deny connections to the X-Windows port.
(C). Attacking With Lynx Clients
A World Wide Web server will fork an httpd process as a respond to a request from a
client, typical Netscape or Mosaic. The process lasts for less than one second and the load will
therefore never show up if someone uses ps. In most causes it is therefore very safe to launch a
denial of service attack that makes use of multiple WWW clients, typical lynx clients. But the
netstat command could be used to detect the attack. Some httpd:s (for example http-gw) will
have problems besides the normal high bandwidth, low memory. And the attack can in those
cases get the server to loop.
(D). Malicious Use Of Telnet Under Solaris 2.4
If the attacker makes a telnet connections to the Solaris 2.4 host and quits using: Ex:
Control-} quit then will inetd keep going "forever". The solution is to install the proper patch.

(E). How To Disable Services
Most Unix systems disable a service after N sessions have been open in a given time.
Well most systems have a reasonable default (lets say 800 - 1000), but not some SunOS systems
that have the default set to 48... The solutions is to set the number to something reasonable.

(F). Malicious Use Of UDP Services
It is simple to get UDP services (echo, time, daytime, chargen) to loop, due to trivial IP-
spoofing. The effect can be high bandwidth that causes the network to become useless. In the
example the header claim that the packet came from (loopback) and the target is the
echo port at system.we.attack. As far as system.we.attack knows is system.we.attack
and the loop has been establish.
Ex: from-IP= to-IP=system.we.attack Packet type:UDP from UDP port 7 to UDP port 7
SunOS 4.1.3. is known to boot if a packet with incorrect information in the header is sent to it.
This is the cause if the ip_options indicate a wrong size of the packet. The solution is to install
the proper patch.

(G). ICMP Redirect Attacks
Gateways uses ICMP redirect to tell the system to override routing tables, that is telling
the system to take a better way. To be able to misuse ICMP redirection we must know an
existing connection. If we have found a connection we can make the route lose it connectivity or
we could send false messages to the host if the connection we have found don’t use cryptation.
The effect of such messages is a reset of the connection. The solution could be to turn ICMP
redirects off, not much proper use of the service.

(H). Broadcast Storms
This is a very popular method in networks there all of the hosts are acting as gateways.
There are many versions of the attack, but the basic method is to send a lot of packets to all hosts
in the network with a destination that don’t exist. Each host will try to forward each packet so the
packets will bounce around for a long time. And if new packets keep coming the network will
soon be in trouble. Services that can be misused as tools in this kind of attack is for example
ping, finger and sendmail. But most services can be misused in some way or another.

(I). Email Bombing And Spamming
In a email bombing attack the attacker will repeatedly send identical email messages to
an address. The effect on the target is high bandwidth, a hard disk with less space and so on...
Email spamming is about sending mail to all (or rather many) of the users of a system. The point
of using spamming instead of bombing is that some users will try to send a replay and if the
address is false will the mail bounce back. In that cause have one mail transformed to three
mails. The effect on the bandwidth is obvious. There is no way to prevent email bombing or
spamming. However have a look at CERT:s paper "Email bombing and spamming".
(J). The Dot Dot Bug
Windows NT file sharing system is vulnerable to the under Windows 95 famous dot dot
bug (dot dot like ..). Meaning that anyone can crash the system. If someone sends a "DIR ..\" to
the workstation will a STOP messages appear on the screen on the Windows NT computer. Note
that it applies to version 3.50 and 3.51 for both workstation and server version. The solution is to
install the proper patch.

(K). Hostile Applets
A hostile applet is any applet that attempts to use your system in an inappropriate
manner. The problems in the java language could be sorted in two main groups: 1) Problems due
to bugs. 2) Problems due to features in the language. In group one we have for example the java
bytecode verifier bug, which makes is possible for an applet to execute any command that the
user can execute. Meaning that any attack methods described, could be executed through an
applet. If you need a high level of security you should use some sort of firewall for protection
against java. As a user you could have java disable.

(L). Virus
Computer virus is written for the purpose of spreading and destroying systems. Virus is
still the most common and famous denial of service attack method. It is a misunderstanding that
virus writing is hard. If you know assembly language and have source code for a couple of virus
it is easy. Several automatic toolkits for virus construction could also be found, for example: *
Genvir. * VCS (Virus Construction Set). * VCL (Virus Construction Laboratory). * PS-MPC
(Phalcon/Skism - Mass Produced Code Generator). * IVP (Instant Virus Production Kit). * G2
(G Squared). PS-MPC and VCL is known to be the best and can help the novice programmer to
learn how to write virus. An automatic tool called MtE could also be found. MtE will transform
virus to a polymorphic virus. The polymorphic engine of MtE is well known and should easily
be catch by any scanner.

(M). Anonymous Ftp Abuse
If an anonymous FTP archive have a writable area it could be misused for a denial of
service attack. We can fill up the hard disk. Also can a host can be made temporarily unusable by
massive numbers of FTP requests. Novells Netware FTP server is known to get short of memory
if multiple ftp sessions connects to it.

(N). Syn Flooding
A SYN packet is the first portion of the TCP "Three-Way Handshake". It basically says,
"Hey, over here... I want to connect to you." When a TCP/IP stack receives a SYN pacet, it
responds with a SYN/ACK. which says "OK, you can connect to me, just let me make sure it’s
you." At this point, it is waiting for an ACK, which says "Yeah, it’s really me!". Now,if the
source address in the SYN packet does not exist, but has a path to it in place, that SYN/ACK will
never be answered with an ACK, and the TCP/IP stack will wait forever for that packet (actually
until a certain amount of time has passed which is implementation-dependent). If a whole bunch
of those faked SYN packets are received simultaneously, the connection queue of the target
machine will he filled. The connection queue is the number of half-open (SYN_RECEIVED)
connections the kernel will allow on a port before it starts dropping further connection requests to that port. For each Operating System there is a standard default, which may be configurable by
the superuser.

(O). Crashing Systems With Ping Flooding
If someone can ping a machine from a Windows 95 machine, it is possible to reboot or
freeze your machine. The attacker simply writes: ping -l 65510 And the
machine will freeze or reboot. It even works for for kernel 2.0.7 up to version 2.0.20. and 2.1.1.
for Linux (crash). AIX4, OSF, HPUX 10.1, DUnix 4.0 (crash). OSF/1, 3.2C, Solaris 2.4 x86

(P). Malicious Use Of Subnet Mask Reply Message
The subnet mask reply message is used under the reboot, but some hosts are known to
accept the message any time without any check. If so all communication to or from the host us
turned off, it’s dead. The host should not accept the message any time but under the reboot.

3.3.3 Protecting A System Against Denial Of Service Attacks

You can not make your system totally secured against denial of service, but the following
methods can reduce the risk.

(A). Security Patches
Always install the proper security patches. Also note that patches change over time and
that a solution suggested in security bulletins (i.e. CERT) often is somewhat temporary.
(B). Port Scanning
Check which services you have. Scan the ports with sprobe or some other port scanner.
You should do this regualy to see that anyone don’t have installed a service that you don’t want
on the system. Disable every service that you don’t need, could for example be rexd, fingerd,
systat, netstat, rusersd, sprayd, pop3, uucpd, echo, chargen, tftp, exec, ufs, daytime, time. Any
combination of echo, time, daytime and chargen is possible to get to loop. There is however no
need to turn discard off. The discard service will just read a packet and discard it, so if you turn
off it you will get more sensitive to denial of service and not the opposite.
(C). Check For The Attacks
Check for the possible attacks. Perform a stress test your system with several services and
look at the effect.
(D). Extra Security Systems
The basic that you always should install is a logdaemon and a wrapper. A firewall could
also be very good, but expensive. Note that you should be very careful if building your own
firewall or you might open up new and very bad security holes, but it is a very easy if you have
some basic knowledge. It is also very good to replace services that you need, for example telnet,
rlogin, rsh or whatever, with a tool like ssh. Ssh is free and can be found on the web.

(E). Monitoring Security
Also monitor security regularly, for example through examining system log files, history
files. Even in a system without any extra security systems could several tools be found for
monitoring, for example: - uptime - showmount - ps - netstat - finger
(F). Keeping Up To Date
It is very important to keep up to date with security problems.

4. Conclusion
In this paper, we considered the most common passive and active attacks possible on
TCP/IP protocol suite. Several attack methods, their impact, detection, prevention and solutions
were discussed. In the course of the discussion, we see that most of the vulnerabilities are due to
bad implementation and improper configuration of the network applications. The user can
employ the use of vulnerability detection and prevention tools to minimize the possibility of
attacks on user machines and applications. The IETF has considered the TCP/IP protocol suite
vulnerabilities and the upcoming versions of TCP and IP is expected to minimize them.

5. References
[1]. Security Problems in the TCP/IP Protocol Suite
Bellovin, Steven M.; 1989;
[2]. A Simple Active Attack Against TCP
Joncheray, Laurent; 1995;
[3]. IP Hijacking
Laurant Joucheray; April 24, 1995;
[4]. Sequence Number Attacks
Rik Farrow; December 1994 ;
[5]. A Weakness in the 4.2BSD Unix TCP/IP Software
Morris, Robert T; 1985;
[6]. Hacking Lexicon
[7]. Some TCP/IP Vulnerabilities
[8]. The Hawks security links
[10]. TCP/IP Security