Intrusion detection system evasion techniques: Difference between revisions

Content deleted Content added
Tags: Mobile edit Mobile web edit
AnomieBOT (talk | contribs)
Rescuing orphaned refs (":04" → ":09" from rev 945505416)
Line 25:
 
== Insertion and evasion ==
Attackers can evade IDS by crafting packets in such a way that the end host interprets the attack payload correctly while the IDS either interprets the attack incorrectly or determines that the traffic is benign too quickly.<ref name=":0409" />
 
=== Fragmentation and small packets ===
Line 33:
 
=== Overlapping fragments and TCP segments ===
Another evasion technique is to craft a series of packets with [[Transmission Control Protocol|TCP sequence numbers]] configured to overlap. For example, the first packet will include 80 bytes of payload but the second packet's sequence number will be 76 bytes after the start of the first packet. When the target computer reassembles the TCP stream, they must decide how to handle the four overlapping bytes. Some operating systems will take the older data, and some will take the newer data.<ref name=":0409" /> If the IDS doesn't reassemble the TCP in the same way as the target, it can be manipulated into either missing a portion of the attack payload or seeing benign data inserted into the malicious payload, breaking the attack signature.<ref name=":12" /><ref name=":0409" /> This technique can also be used with IP fragmentation in a similar manner.
 
=== Protocol ambiguities ===
Some IDS evasion techniques involve deliberately manipulating [[Transmission Control Protocol|TCP]] or [[Internet Protocol|IP]] protocols in a way the target computer will handle differently from the IDS. For example, the TCP urgent pointer is handled differently on different operating systems. If the IDS doesn't handle these protocol violations in a manner consistent with its end hosts, it is vulnerable to insertion and evasion techniques similar to those mentioned earlier.<ref name=":0409" />
 
=== Low-bandwidth attacks ===
Line 42:
 
== Denial of service ==
Due to the fact that passive IDS are inherently [[fail-open]] (as opposed to [[fail-closed]]), launching a [[denial-of-service attack]] against the IDS on a network is a feasible method of circumventing its protection.<ref name=":0409" /> An adversary can accomplish this by exploiting a bug in the IDS, consuming all of the computational resources on the IDS, or deliberately triggering a large number of alerts to disguise the actual attack.
 
=== CPU exhaustion ===
Packets captured by an IDS are stored in a kernel buffer until the CPU is ready to process them. If the CPU is under high load, it can't process the packets quickly enough and this buffer fills up. New (and possibly malicious) packets are then dropped because the buffer is full.<ref name=":0409" />
 
An attacker can exhaust the IDS's CPU resources in a number of ways. For example, signature-based intrusion detection systems use pattern matching algorithms to match incoming packets against signatures of known attacks. Naturally, some signatures are more computational expensive to match against than others. Exploiting this fact, an attacker can send specially-crafted network traffic to force the IDS to use the maximum amount of CPU time as possible to run its pattern matching algorithm on the traffic.<ref name=":12" /><ref name=":22" /> This [[algorithmic complexity attack]] can overwhelm the IDS with a relatively small amount of bandwidth.<ref name=":12" />
 
An IDS that also monitors encrypted traffic can spend a large portion of its CPU resources on decrypting incoming data.<ref name=":0409" />
 
=== Memory exhaustion ===
In order to match certain signatures, an IDS is required to keep [[State (computer science)|state]] related to the connections it is monitoring. For example, an IDS must maintain "TCP control blocks" (TCBs), chunks of memory which track information such as sequence numbers, window sizes, and connection states (ESTABLISHED, RELATED, CLOSED, etc.), for each TCP connection monitored by the IDS.<ref name=":0409" /> Once all of the IDS's [[random-access memory]] (RAM) is consumed, it is forced to utilized [[virtual memory]] on the [[Hard disk drive|hard disk]] which is much slower than RAM, leading to performance problems and dropped packets similar to the effects of CPU exhaustion.<ref name=":0409" />
 
If the IDS doesn't [[Garbage collection (computer science)|garbage collect]] TCBs correctly and efficiently, an attacker can exhaust the IDS's memory by starting a large number of TCP connections very quickly.<ref name=":0409" /> Similar attacks can be made by fragmenting a large number of packets into a larger number of smaller packets, or send a large number of out-of-order TCP segments.<ref name=":0409" />
 
===Operator fatigue===