![]() |
Random scanning: In this technique, the machine that is infected by the malicious code (such a machine can be either the attacker's machine or the machine of a member of their army, such as a zombie) probes IP addresses randomly from the IP address space and checks their vulnerability. When it finds a vulnerable machine, it breaks into it and tries to infect it, installing on it the same malicious code that is installed on itself. This technique creates significant traffic, because the random scanning causes a large number of compromised hosts to probe and check the same addresses. An advantage (to attackers) of this scanning method is that the malicious code can be spread very quickly because the scans seem to come from everywhere. However, the fast rate at which the malicious code is dispersed cannot last forever. After a small period of time, the spreading rate reduces because the number of the new IP addresses that can be discovered is smaller as time passes. This becomes obvious if we consider the analysis of David Moore and Colleen Shannon [4] on the spread of the Code-Red (CRv2) Worm, which uses random scanning to spread itself. |
![]() |
Hit-list scanning: Long before attackers start scanning, they collect a list of a large number of potentially
vulnerable machines. In their effort to create their army, they begin scanning down the list in order to find vulnerable
machines. When they find one, they install on it the malicious code and divide the list in half. Then they give one half to
the newly compromised machine, keep the other half, and continue scanning the remaining list. The newly infected host begins
scanning down its list, trying to find a vulnerable machine. When it finds one, it implements the same procedure as described
previously, and in this way the hit-list scanning takes place simultaneously from an enduringly increasing number of
compromised machines. This mechanism ensures that the malicious code is installed on all vulnerable machines contained in the
hit list in a short period of time. In addition, the hit list possessed by a new compromised host is constantly reducing
because of the partitioning of the list discussed previously. As has been mentioned, the construction of the list is carried out long before the attackers start scanning. For that reason, the attackers can create the list at a very slow rate and for a long period of time. If the attackers conduct a slow scan, it is possible that this activity would not be noticed because a scanning process in a network usually occurs at extremely high frequencies, so a slow scan could occur without anyone realizing that it is a malicious scan. It should also be mentioned that there are public servers such as the Netcraft Survey [2] that can create such hit lists without scanning. |
![]() |
Topological scanning: Topological scanning uses information contained on the victim machine in order to find new targets. In this technique, an already-compromised host looks for URLs in the disk of a machine that it wants to infect. Then it renders these URLs targets and checks their vulnerability. The fact that these URLs are valid Web servers means that the compromised host scans possible targets directly from the beginning of the scanning phase. For that reason, the accuracy of this technique is extremely good, and its performance seems to be similar to that of hit-list scanning. Hence, topological scanning can create a large army of attackers extremely quickly and in that way can accelerate the propagation of the malicious code. |
![]() |
Local subnet scanning: This type of scanning acts behind a firewall in an area that is considered to be infected by the malicious scanning program. The compromised host looks for targets in its own local network, using the information that is hidden in “local” addresses. More specifically, a single copy of the scanning program is running behind a firewall and tries to break into all vulnerable machines that would otherwise be protected by the firewall. This mechanism can be used in conjunction with other scanning mechanisms: for example, a compromised host can start its scans with local subnet scanning, looking for vulnerable machines in its local network. As soon as it has probed all local machines, it can continue the probing process by switching to another scanning mechanism in order to scan off-local network machines. In that way, an army with numerous zombies can be constructed at an extremely high speed. |
![]() |
Permutation scanning: In this type of scanning, all machines share a common pseudorandom permutation list of IP
addresses. Such a permutation list can be constructed using any block cipher of 32 bits with a preselected key [3]. If a
compromised host has been infected during either the hit-list scanning or local subnet scanning, it starts scanning just
after its point in the permutation list and scans through this list in order to find new targets. Otherwise, if it has been
infected during permutation scanning, it starts scanning at a random point. Whenever it encounters an already-infected
machine, it chooses a new random start point in the permutation list and proceeds from there. A compromised host can
recognize an already-infected machine among noninfected ones, because such machines respond differently than other machines.
The process of scanning stops when the compromised host encounters sequentially a predefined number of alreadyinfected
machines without finding new targets during that period of time. Then, a new permutation key is produced and a new scanning
phase begins. This mechanism serves two major purposes: first, it prevents unnecessary reinfections of the same target
because when a compromised host recognizes an already-compromised machine, it changes the way it scans according to the
process described previously. Second, this mechanism maintains the advantages (to attackers) of random scanning, because the scanning of new targets takes place in a random way. Hence, permutation scanning can be characterized as a coordinated scanning with an extremely good performance, because the randomization mechanism allows high scanning speeds. An improved version of permutation scanning is partitioned permutation scanning. This type of scanning is a combination of permutation and hit-list scanning. In this scenario, the compromised machine has a permutation list, which is cut in half when it finds a new target. Then it keeps one section of the list and gives the other section to the newly compromised machine. When the permutation list that an infected machine possesses reduces below a predefined level, the scanning scheme turns from partitioned permutation scanning into simple permutation scanning. |
![]() |
Central source propagation: In this mechanism, after the discovery of the vulnerable system that will become one of
the zombies, instructions are given to a central source so that a copy of the attack toolkit is transferred from a central
location to the newly compromised system. After the toolkit is transferred, an automatic installation of the attack tools
takes place on this system, controlled by a scripting mechanism. That initiates a new attack cycle, where the newly infected
system looks for other vulnerable computers on which it can install the attack toolkit using the same process as the
attacker. Like other file-transfer mechanisms, this mechanism commonly uses HTTP, FTP, and remote-procedure call
(RPC) protocols. A graphical representation of this mechanism is shown in Figure 1. Figure 1: Central Source Propagation ![]() |
![]() |
Back-chaining propagation: In this mechanism, the attack toolkit is transferred to the newly compromised system from
the attacker. More specifically, the attack tools that are installed on the attacker include special methods for accepting a
connection from the compromised system and sending a file to it that contains the attack tools. This back-channel file copy
can be supported by simple port listeners that copy file contents or by full intruder-installed Web servers, both of which
use the Trivial File Transfer Protocol (TFTP). Figure 2 presents this mechanism: Figure 2: Back-Chaining Propagation ![]() |
![]() |
Autonomous propagation: In this mechanism, the attacking host transfers the attack toolkit to the newly compromised
system at the exact moment that it breaks into that system. This mechanism differs from the previously mentioned mechanisms
in that the attack tools are planted into the compromised host by the attackers themselves and not by an external file
source. Figure 3 shows the autonomous propagation. Figure 3: Autonomous Propagation ![]() |
![]() |
Apache2: This attack is mounted against an Apache Web server where the client asks for a service by sending a request with many HTTP headers. However, when an Apache Web server receives many such requests, it cannot confront the load and it crashes. |
![]() |
ARP Poison: Address Resolution Protocol (ARP) Poison attacks require the attacker to have access to the victim's LAN. The attacker deludes the hosts of a specific LAN by providing them with wrong MAC addresses for hosts with already-known IP addresses. This can be achieved by the attacker through the following process: The network is monitored for "arp who-has" requests. As soon as such a request is received, the malevolent attacker tries to respond as quickly as possible to the questioning host in order to mislead it for the requested address. |
![]() |
Back: This attack is launched against an apache Web server, which is flooded with requests containing a large number of front-slash ( / ) characters in the URL description. As the server tries to process all these requests, it becomes unable to process other legitimate requests and hence it denies service to its customers. |
![]() |
CrashIIS: The victim of a CrashIIS attack is commonly a Microsoft Windows NT IIS Web server. The attacker sends the victim a malformed GET request, which can crash the Web server. |
![]() |
DoSNuke: In this kind of attack, the Microsoft Windows NT victim is inundated with "out-of-band" data (MSG_OOB). The packets being sent by the attacking machines are flagged "urg" because of the MSG_OOB flag. As a result, the target is weighed down, and the victim's machine could display a "blue screen of death." |
![]() |
Land: In Land attacks, the attacker sends the victim a TCP SYN packet that contains the same IP address as the source and destination addresses. Such a packet completely locks the victim's system. |
![]() |
Mailbomb: In a Mailbomb attack, the victim's mail queue is flooded by an abundance of messages, causing system failure. |
![]() |
SYN Flood: A SYN flood attack occurs during the three-way handshake that marks the onset of a TCP connection. In the three-way handshake, a client requests a new connection by sending a TCP SYN packet to a server. After that, the server sends a SYN/ACK packet back to the client and places the connection request in a queue. Finally, the client acknowledges the SYN/ACK packet. If an attack occurs, however, the attacker sends an abundance of TCP SYN packets to the victim, obliging it both to open a lot of TCP connections and to respond to them. Then the attacker does not execute the third step of the three-way handshake that follows, rendering the victim unable to accept any new incoming connections, because its queue is full of half-open TCP connections. |
![]() |
Ping of Death: In Ping of Death attacks, the attacker creates a packet that contains more than 65,536 bytes, which is the limit that the IP protocol defines. This packet can cause different kinds of damage to the machine that receives it, such as crashing and rebooting. |
![]() |
Process Table: This attack exploits the feature of some network services to generate a new process each time a new TCP/IP connection is set up. The attacker tries to make as many uncompleted connections to the victim as possible in order to force the victim's system to generate an abundance of processes. Hence, because the number of processes that are running on the system cannot be boundlessly large, the attack renders the victim unable to serve any other request. |
![]() |
Smurf Attack: In a "smurf" attack, the victim is flooded with Internet Control Message Protocol (ICMP) "echo-reply" packets. The attacker sends numerous ICMP "echo-request" packets to the broadcast address of many subnets. These packets contain the victim's address as the source IP address. Every machine that belongs to any of these subnets responds by sending ICMP "echo-reply" packets to the victim. Smurf attacks are very dangerous, because they are strongly distributed attacks. |
![]() |
SSH Process Table: Like the Process Table attack, this attack makes hundreds of connections to the victim with the Secure Shell (SSH) Protocol without completing the login process. In this way, the daemon contacted by the SSH on the victim's system is obliged to start so many SSH processes that it is exhausted. |
![]() |
Syslogd: The Syslogd attack crashes the syslogd program on a Solaris 2.5 server by sending it a message with an invalid source IP address. |
![]() |
TCP Reset: In TCP Reset attacks, the network is monitored for "tcpconnection" requests to the victim. As soon as such a request is found, the malevolent attacker sends a spoofed TCP RESET packet to the victim and obliges it to terminate the TCP connection. |
![]() |
Teardrop: While a packet is traveling from the source machine to the destination machine, it may be broken up into smaller fragments, through the process of fragmentation. A Teardrop attack creates a stream of IP fragments with their offset field overloaded. The destination host that tries to reassemble these malformed fragments eventually crashes or reboots. |
![]() |
UDP Storm: In a User Datagram Protocol (UDP) connection, a character generation ("chargen") service generates a series of characters each time it receives a UDP packet, while an echo service echoes any character it receives. Exploiting these two services, the attacker sends a packet with the source spoofed to be that of the victim to another machine. Then, the echo service of the former machine echoes the data of that packet back to the victim's machine and the victim's machine, in turn, responds in the same way. Hence, a constant stream of useless load is created that burdens the network. |
![]() |
DDoS attacks flood victims with packets. This means that victims cannot contact anyone else in order to ask for help. So it is possible for a network neighbor to be attacked, but nobody would know it and nobody can help. Consequently, any action to react can be taken only if the attack is detected early. But can an attack be detected early? Usually traffic flow increases suddenly and without any warning [34] [35] [36]. For this reason defense mechanisms must react quickly. |
![]() |
Any attempt of filtering the incoming flow means that legitimate traffic will also be rejected. And if legitimate traffic is rejected, how will applications that wait for information react? On the other hand, if zombies number in the thousands or millions, their traffic will flood the network and consume all the bandwidth. In that case filtering is useless because nothing can travel over the network. |
![]() |
Attack packets usually have spoofed IP addresses. Hence it is more difficult to trace back to their source. Furthermore, it is possible that intermediate routers and ISPs may not cooperate in this attempt. Sometimes attackers, by spoofing source IP addresses, create counterfeit armies. Packets might derive from thousands of IP addresses, but zombies number only a few tens, for example. |
![]() |
Defense mechanisms are applied in systems with differences in software and architecture. Also systems are managed by users with different levels of knowledge. Developers must design a platform independent of all these parameters. [37] |
![]() |
Prevent installation of distributed attack tools on our systems. This will help to restrict the zombies army. Several tasks also need to be performed. First, keep protocols and operating systems up-to-date. We can prevent system exploitation by eliminating the number of weaknesses of our system. |
![]() |
Use firewalls in gateways to filter incoming and outgoing traffic. Incoming packets with source IP addresses belonging to the subnetwork and outgoing packets with source IP addresses not belonging to the subnetwork are not logical. |
![]() |
Deploy IDS systems to detect patterns of attacks. |
![]() |
Deploy antivirus programs to scan malicious code in our system. |