- “OT systems are isolated (air-gapped) from IT or the internet.”
Reality: Modern OT is often connected to corporate networks for monitoring and remote access,
making them reachable by attackers. - “Legacy OT systems can’t be hacked.”
Reality: Older PLCs/RTUs lack authentication and encryption, making them vulnerable even
if not originally designed for online use. - “Availability is the only thing that matters.”
Reality: Integrity (correct process control) and confidentiality (e.g., recipe data) are also
critical. Attacks can cause unsafe conditions even when systems stay “up.” - “Standard IT security tools will protect OT just fine.”
Reality: Traditional antivirus and patching can break fragile OT systems or require downtime
plants can’t afford; OT needs tailored security measures. - “Physical security = cybersecurity.”
Reality: Remote exploits via vendor VPNs, phishing, or infected maintenance laptops can bypass
physical barriers. - “Once you set up firewalls, you’re safe.”
Reality: Misconfigurations, shared credentials, and unmonitored conduits can let attacks pass;
security needs monitoring, detection, and layered defenses.
Cybersecurity
DDoS UDP Flood Attack (Layer 4 Attack)
UDP flood attacks exploit the lack of connection control in the User Datagram Protocol. Unlike TCP, UDP doesn’t manage sessions, track connections, or limit traffic. Attackers take advantage by sending large numbers of UDP packets to various ports on a target.
If no application listens on a given port, the system often replies with an ICMP “Destination Unreachable” message. These replies consume bandwidth and processing power. Attackers also spoof source IP addresses to hide their identity and misdirect response traffic.
UDP floods resemble sudden spikes in legitimate traffic, but the cause differs. DDoS attacks are intentional and hostile, while user surges are natural. Many modern attacks also use amplification. An attacker sends small UDP requests to servers like DNS, NTP, or memcached, using the victim’s IP. The servers respond with much larger messages to the victim, greatly increasing the impact.
One major case was the 2018 attack on GitHub using memcached servers, which hit 1.3 Tbps. Even without amplification, a UDP flood can saturate a target if the upstream network pushes more traffic than the target can absorb.
Key Packet Indicators:
UDP floods involve a high rate of UDP packets aimed at one or many ports on a target. These packets have an IP protocol value of 17 (ip.proto==17) and no flags, unlike TCP. Attackers often target either known service ports to overload them or random ports to trigger ICMP “destination unreachable” replies. They usually spoof or randomize the source IP and port. In basic floods, the payload carries junk or is nearly empty, since the goal is volume. An important sign is an unusual spike in UDP traffic, especially if the system usually handles mostly TCP. A web server that typically sees 95% TCP traffic showing a jump in UDP, especially to odd ports, should raise concern. A related sign is a surge of ICMP Type 3 messages going out from the victim to spoofed sources. Monitoring tools should track UDP packet rates and bandwidth. A sharp rise above normal levels often signals a flood. If many destination ports on the target are hit rapidly, it may look like a scan but is more likely an attack meant to drain resources. Normal UDP traffic follows known patterns tied to services like DNS (port 53) or VoIP. It usually includes a clear request and response. UDP flood traffic, by contrast, is random or targets ports that cause heavy load. It often doesn’t expect a reply. Amplified floods, like DNS-based ones, use small queries to trigger large responses from third-party servers. This results in large UDP packets hitting the victim, often marked with a source port of 53. A pattern of high UDP volume, frequent ICMP “port unreachable” replies, or broad port targeting points strongly to a flood attack.
Wireshark:
- Filter for high UDP traffic to a target IP: udp && ip.dst ==<VICTIM IP>
- Detect High UDP Packets from Multiple Sources (Possible Flood): udp && (frame.time_delta < 0.01) (adjust
0.01
based on baseline traffic) - UDP Amplification/Reflection Attacks: (udp.dstport == 53 || udp.dstport == 123 || udp.dstport == 1900 || udp.dstport == 11211) && (udp.length > 500)
- Statistics → Conversations → UDP → Sort by “Packets” or “Bytes”
CSV
Relationships are like CSVs—one wrong delimiter, and it all breaks.
CSV stands for Comma-Separated Values. It’s a plain text format that stores tables. Each line holds one record, and fields within a record are split by commas. Many programs use CSV files because they’re easy to create, read, and move between systems. To work with CSV data from the command line, especially for filtering and analyzing, csvkit is a useful tool. Down are easy commands for basic CSV file EDA:
Step 1: Install or upgrade csvkit (in windows 11)
pip install --upgrade csvkit
Step 2: Extract rows where the “Attack_type” column contains “Normal”
csvgrep -c "Attack_type" -r "Normal" data.csv > normal_rows.csv
Step 3: View structure and summary stats of the filtered file
csvstat ransomware_rows.csv

Step 4: Check for missing or summary stats in the “dns.qry.name.len” column (same as step 3 but here for specific column)
csvstat -c "dns.qry.name.len" normal_rows.csv
Step 5: See frequency distribution for “dns.qry.name.len”
csvcut -c "dns.qry.name.len" normal_rows.csv | csvstat --freq
Granularity
In IT network traffic, granularity refers to the level of detail at which network data is capturered or monitored.
High Granularity (packet-level):
Tracks network traffic at the packet level. Shows details for each connection and short-term changes. Helps with precise monitoring and troubleshooting. Needs more storage and processing power.
Datasets examples:
Low Granularity (flow-level):
Groups traffic data over longer periods. Shows general patterns and long-term trends. Misses specific events but helps spot broader shifts in behavior.
Datasets examples:
DDoS TCP SYN Flood Attack (Layer 4 Attack)
My TCP relationship status? It’s complicated, SYN but no ACK!!
TCP SYN Flood Attack exploits the fundamental weakness in TCP’s three-way handshake mechanism. During normal TCP connection establishment, a client sends a SYN packet, the server responds with SYN-ACK, and the client completes the handshake with an ACK. The server maintains connection state in a backlog queue during this process.
In a SYN flood, which is a type of volumetric DDoS attack, the attackers send a large number of SYN packets with fake source IP addresses. These spoofed packets prevent the server’s SYN-ACK replies from reaching a real client, leaving many half-open connections. The server reserves memory and processing power for each attempt, quickly filling its connection queue.
Once the queue is full, new legitimate requests can’t get through, blocking access. The attack is efficient because it takes little effort to send spoofed SYNs, but the server has to commit real resources for each one. The method exploits TCP’s stateful design, where a server must track each incoming connection. Unlike bandwidth attacks, this one overwhelms the server’s ability to manage new connections.
Key Packet Indicators:
As mentioned above, in a SYN flood, the attacker sends a large number of TCP SYN packets, which are normally used to start a connection, but never completes the handshake. These packets often have fake or inconsistent source IP addresses and ports. The destination port is usually an open service port, like TCP port 80 on a web server, because open ports force the server to allocate resources for each request.
Normal TCP connections use a three-way handshake: SYN, SYN-ACK, and ACK. But in a SYN flood, most packets are SYNs without matching ACKs. The server replies with SYN-ACKs, then waits. Its backlog of half-open connections fills up quickly. Packet captures show many SYNs, lots of SYN-ACKs, and few or no final ACKs. On the server, many connections remain in the SYN_RECV state, visible with tools like netstat
.
Since the SYNs often use spoofed IPs, filtering by source is hard. These packets might have odd TTL values or uncommon IP options, but that’s not always the case. The TCP headers may also contain abnormal values, like a sequence number of 0, but this varies.
The main indicator is the skewed traffic pattern: a flood of SYNs with few ACKs or RSTs in return. In normal traffic, SYNs make up a small share. In a SYN flood, they dominate. You might also see some RST packets, often from real IP owners reacting to unexpected SYN-ACKs.
TCP flag analysis helps too. A stream of packets with only the SYN flag and no matching ACK or RST from the client side stands out. Some real clients abort incomplete connections with RST, but spoofed IPs often trigger stray RSTs instead.
This lopsided SYN-to-ACK ratio and the lack of full handshakes are the core signs of a SYN flood.
Wireshark:
- To find all SYNs without ACK: tcp.flags.syn==1 and tcp.flags.ack==0
- Statistics → Conversations → TCP → Sort by “Packets”
Cybersecurity Datasets
KDD99:
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
UNSW-NB15 Dataset:
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
CICIDS2017:
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
CSEIDS2018:
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
CICDDoS2019:
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
Edge-IIoT:
& Data Type, Size & Volume, Attack Taxonomy & Coverage, Feature Set & Representation, Class Distribution & Imbalance, Data Collection Method / Source / Operational Context, Temporal Splits & Benchmarking Support, Relevance & Currency
- Granularity
- Size (samples/flows/records)
- Feature Set
- Volume (Time Span)
- Attack Taxonomy & Coverage
- Represenation
- Class Distribution
- License
- Data Collection Method
- Temporal Splits & Benchmarking Support
- Relevance & Currency
- Labeled
DoS and DDoS attacks
“I support freedom of expression, no matter whose, so I oppose DDoS attacks regardless of their target… they’re the poison gas of cyberspace.”
– John Perry Barlow
Definitions:
A Denial-of-Service (DoS) attack is a malicious attempt to disrupt the availability of a service or resource by overwhelming it with illegitimate traffic or requests, typically from a single source. In a classic DoS scenario, one host (or a single attacker) sends a flood of packets or exploits a vulnerability to exhaust the target’s network bandwidth, CPU, memory, or other resources, thereby denying service to legitimate users.
Distributed Denial-of-Service (DDoS) attack is essentially a large-scale DoS attack launched simultaneously from multiple compromised machines (hence “distributed”) to overwhelm the target. In a DDoS, an attacker typically controls a network of zombie hosts (a botnet) which collectively send traffic or requests to the victim, amplifying the attack power far beyond a single machine’s capacity.
Differences:
- Number of Attack Sources: A DoS attack comes from one host or a small group under one attacker’s control. A DDoS attack involves many distributed sources, often hundreds or thousands, acting together.
- Scale and Impact: DDoS attacks generate much more traffic than a DoS. They can overwhelm high-bandwidth connections and large server clusters.
- Attack Complexity: DDoS attacks often use several tactics at once. Attackers first infect devices with malware to build a botnet. Then they control these bots through command servers and launch a coordinated attack.
- Attribution and Evasion: DDoS traffic comes from many unrelated IPs. These are often spoofed or from infected devices like IoT gadgets and servers. This makes traceback hard. DoS attacks are easier to trace and block, though attackers may still spoof their IPs or use anonymity networks. Some DDoS attackers rent botnets through “booter” services.
- Mitigation Difficulty: A DoS attack may be stopped by blocking one IP. A DDoS attack is harder to stop. It requires advanced tools to filter traffic from many sources. These include DDoS protection systems, scrubbing centers, or content delivery networks. Smarter tools like traffic anomaly detection or challenge-response checks help separate attack traffic from real users.
Despite these differences, a DDoS is still a type of DoS. The goal is the same: to deny access to a service. DDoS attacks use many machines to boost traffic and make defense harder. Both rely on the imbalance in resource cost. It’s cheap for attackers to flood a system, but expensive for the target to manage the load.
Common DoS and DDoS Attacks:
Over the years, attackers have developed numerous tools to automate DoS and DDoS attacks. These range from simple single-host scripts to complex distributed botnet frameworks. Table 1 summarizes some well-known attacks, the typical OSI layer or protocol they target, and a brief description:
Category | Attack Name | Datasets | Target Layer / Protocol | Brief Description |
---|---|---|---|---|
TCP | TCP SYN Flood | CICIDS2017, CSECICIDS2018, CICDDoS2019, EdgeIIoTset | L4 / TCP | Floods server with SYN packets, exhausting connection queue. |
Generic TCP Flood | CICIDS2017, CSECICIDS2018, CICDDoS2019, BotIoT | L4 / TCP | High-rate TCP traffic (mixed flags) saturates server handling. | |
Teardrop (Fragment) | KDD99, UNSWNB15, CSECICIDS2018 | L3 / IP | Overlapping IP fragments disrupt packet reassembly. | |
UDP | UDP Flood | CICIDS2017, CSECICIDS2018, CICDDoS2019, EdgeIIoTset | L4 / UDP | High-volume UDP packets overwhelm target with responses. |
UDP-Lag | CICDDoS2019 | L4 / UDP | Slow-rate packets keep resources engaged without detection. | |
NetBIOS Flood | CICDDoS2019 | L4 / NetBIOS-NS | Spoofed NetBIOS queries generate amplified traffic to victim. | |
Portmap Amplification | CICDDoS2019 | L7 / RPC | Exploits RPCbind to amplify traffic toward target. | |
SNMP Amplification | CICDDoS2019 | L7 / SNMP | Massive SNMP replies reflect to victim using spoofed requests. | |
ICMP | Ping Flood | UNSWNB15, CICIDS2017, CSECICIDS2018, CICDDoS2019, EdgeIIoTset | L3 / ICMP | Excessive Echo Requests saturate target’s reply bandwidth. |
Smurf Attack | KDD99, CICDDoS2019, CSECICIDS2018 | L3 / ICMP (Broadcast) | Broadcast ICMP with spoofed source reflects large reply sets. | |
Ping of Death | KDD99, CSECICIDS2018 | L3 / ICMP | Malformed or oversized ICMP packets cause crashes. | |
HTTP | HTTP GET/POST Flood | CICIDS2017, CSECICIDS2018, EdgeIIoTset | L7 / HTTP | Massive number of requests exhaust server-side threads. |
WebDDoS (ARME) | CICDDoS2019 (on the official website only, but not in the downloaded dataset) | L7 / HTTP | Randomized HTTP traffic evades caching and overloads servers. | |
Slowloris (Headers) | UNSWNB15, CSECICIDS2018 | L7 / HTTP | Slow headers keep HTTP connections open indefinitely. | |
Slow POST (R.U.D.Y.) | CSECICIDS2018 | L7 / HTTP | Slow POST bodies occupy server threads with long-lived connections. | |
Slow Read | UTSA-LowRate-DoS, CSECICIDS2018 | L7 / HTTP | Tiny advertised TCP windows stall server-side sending. | |
Slow HTTP Test | CSECICIDS2018 | L7 / HTTP | Combined slow attack types simulating realistic HTTP traffic. | |
DNS Amplification | CICDDoS2019, CSECICIDS2018 | L7 / DNS | Open resolvers reflect large responses to spoofed DNS queries. | |
HULK (HTTP Unbearable Load King) | CSECICIDS2018 | L7 / HTTP | High‑rate obfuscated HTTP GET flood that evades caching and hits direct server resources. | |
GoldenEye | CSECICIDS2018 | L7 / HTTP | Layer‑7 HTTP flood using persistent connections (Keep‑Alive) to exhaust sockets. | |
Others | NTP Amplification | CICDDoS2019 | L7 / NTP | Spoofed monlist or read requests yield large amplified replies. |
SSDP Amplification | CICDDoS2019 | L7 / SSDP | M-SEARCH queries trigger device responses reflected toward victim. | |
LDAP Amplification | CICDDoS2019, CSECICIDS2018 | L7 / LDAP | Spoofed CLDAP requests return large directory responses to victim. | |
MSSQL Amplification | CICDDoS2019 | L7 / MSSQL | SQL Resolution Service reflection yields large UDP responses. | |
TFTP Amplification | CICDDoS2019 | L7 / TFTP | TFTP requests to misconfigured servers can generate amplified responses (~ 60×). |