| Literature DB >> 35632055 |
Kainat Malik1, Faisal Rehman1, Tahir Maqsood1, Saad Mustafa1, Osman Khalid1, Adnan Akhunzada2.
Abstract
Like smart phones, the recent years have seen an increased usage of internet of things (IoT) technology. IoT devices, being resource constrained due to smaller size, are vulnerable to various security threats. Recently, many distributed denial of service (DDoS) attacks generated with the help of IoT botnets affected the services of many websites. The destructive botnets need to be detected at the early stage of infection. Machine-learning models can be utilized for early detection of botnets. This paper proposes one-class classifier-based machine-learning solution for the detection of IoT botnets in a heterogeneous environment. The proposed one-class classifier, which is based on one-class KNN, can detect the IoT botnets at the early stage with high accuracy. The proposed machine-learning-based model is a lightweight solution that works by selecting the best features leveraging well-known filter and wrapper methods for feature selection. The proposed strategy is evaluated over different datasets collected from varying network scenarios. The experimental results reveal that the proposed technique shows improved performance, consistent across three different datasets used for evaluation.Entities:
Keywords: botnet detection; classification; internet of things (IoT); one-class KNN
Mesh:
Year: 2022 PMID: 35632055 PMCID: PMC9145805 DOI: 10.3390/s22103646
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.847
Figure 1System architecture model.
Figure 2PCAP filtering missing value strategy.
Extracted features.
| S. No. | Feature Name | Description | S. No. | Feature Name | Description |
|---|---|---|---|---|---|
| 1. | ip.src | Source IP address | 24. | tcp.flags.syn | TCP Syn flag |
| 2. | ip.dst | Destination IP address | 25. | tcp.flags.ack | TCP ACK flag in packet |
| 3. | frame.len | Length of frame in bytes | 26. | tcp.flags.push | TCP PUSH flag in packet |
| 4. | ip.proto | IP protocol number | 27. | tcp.flags.reset | TCP RESET flag in packet |
| 5. | tcp.srcport | TCP source port | 28. | tcp.flags.fin | TCP fin flag in packet |
| 6. | tcp.dstport | TCP destination port | 29. | ip.flags | IP header flags, such as fragmentation |
| 7. | udp.srcport | UDP source port | 30. | ip.frag_offset | IP fragmentation flag |
| 8. | udp.dstport | UDP destination port | 31. | ip.ttl | Time to live of IP packet |
| 9. | tcp.seq | TCP sequence numbers | 32. | tcp.ack | TCP ACK packet of three-way handshake |
| 10. | frame.time_epoch | Packet timestamp | 33. | tcp.window_size | Windows size for TCP communication |
| 11. | tcp.stream | TCP streams between nodes | 34. | tcp.nxtseq | Next expected sequence number |
| 12. | frame.time_relative | Time since the first packet in frame received | 35. | tcp.analysis.flags | Flags for analysis TCP sequence number and Acknowledgment |
| 13. | ip.len | Total length of packet/size of IP frame | 36. | udp.stream | Statistics of UDP streams |
| 14. | tcp.len | Length of TCP payload | 37. | udp.length.bad | UDP bad length value message |
| 15. | udp.length | Length of UDP payload | 38. | udp.length.bad_zero | UPD length is zero |
| 16. | frame.time_delta | Difference time between frames | 39. | frame.packet_flags_fcs_length | FCS (frame check sequence) length |
| 17. | ip.hdr_len | Length of IP header | 40. | ip.fragment.error | Defragmentation error |
| 18. | tcp.hdr_len | Size of TCP header in 32 bits | 41. | tcp.analysis.keep_alive | TCP keep-alive segment |
| 19. | tcp.analysis.bytes_in_flight | Bytes in flight for each packet | 42. | tcp.analysis.window_full | TCP windows full specified by user |
| 20. | tcp.time_relative | Time since first frame in TCP session | 43. | tcp.analysis.window_update | TCP window update |
| 21. | tcp.time_delta | Elapsed time between current and prior packet | 44. | tcp.analysis.zero_window | TCP zero window segment |
| 22. | tcp.analysis.ack_rtt | TCP ack and RTT (round time trip) for packet | 45. | tcp.analysis.zero_window_probe | TCP zero window probe |
| 23. | tcp.flags | TCP flags | 46. | frame.cap_len | Length of the captured frame |
Figure 3Feature extraction.
Figure 4Data preprocessing.
Figure 5Heatmap showing correlation score.
Features finalized after selection process.
| 1 | frame.len | 8 | tcp.hdr_len |
| 2 | ip.proto | 9 | tcp.time_relative |
| 3 | udp.srcport | 10 | ip.flags |
| 4 | udp.dstport | 11 | tcp.ack |
| 5 | tcp.stream | 12 | tcp.nxtseq |
| 6 | frame.time | 13 | ip.frag_offset |
| 7 | ip.len |
Dataset description.
| Dataset | IoT Devices | Source |
|---|---|---|
| MedBiot [ | IoT device | TPLink smart switch |
| Chris Dataset [ | IoT device | Camera |
| HCRL (INID) [ | IoT device 1 | SKT NUGU (NU 100) Speaker |
| IoT device 2 | EZVIZ Wi-Fi Camera |
Figure 6Accuracy of different datasets.
Figure 7Precision of different datasets.
Figure 8Recall of different datasets.
Figure 9F1-score of different datasets.
Effect of feature selection.
| Data Type | Chris Dataset | MedBiot Dataset | HCRL (INID) Dataset | ||||||
|---|---|---|---|---|---|---|---|---|---|
| F1-Score | Accuracy | Recall | F1-Score | Accuracy | Recall | F1-Score | Accuracy | Recall | |
| Normal | 88% | 87% | 94% | 81% | 88% | 92% | 83% | 87% | 91% |
| FS Applied | 99% | 99% | 100% | 98% | 98% | 100% | 98% | 98% | 100% |
Comparison with current research works.
| Research | F1-Score | Feature Selection | Multiple Dataset | One-Class Classifier |
|---|---|---|---|---|
| IOTDS [ | 94% | No | No | Yes |
| Smart home IDS [ | 98% | No | No | No |
| Proposed Solution (LBOD) | 99% | Yes | Yes | Yes |
Figure 10Comparison of accuracy.
Figure 11Comparison of precision.
Figure 12Comparison of F1-score.
Figure 13Comparison of recall.
Comparison of training and prediction time. FS: feature selection.
| Datasets | Chris Dataset | MedBiot Dataset | HCRL (INID) Dataset | |||
|---|---|---|---|---|---|---|
| Time (Seconds) | Training | Prediction | Training | Prediction | Training | Prediction |
| Before FS | 5.3457 | 0.5636 | 7.5342 | 2.2327 | 4.3283 | 0.7124 |
| After FS | 2.2340 | 0.1298 | 3.2345 | 0.4335 | 2.2134 | 0.3190 |