ICMP là thuật ngữ khá phổ biến đối với những ai theo đuổi ngành công nghệ thông tin. Nhưng ít ai hiểu rõ và biết chính xác về khái niệm này? Bài viết này Vietnix sẽ giúp bạn hiểu rõ hơn về ICMP là gì? ICMP được sử dụng để làm gì? Tìm hiểu ngay!
ICMP là gì?
Internet Control Message Protocol (ICMP) là một giao thức ở tầng Network được các thiết bị mạng sử dụng để chẩn đoán các sự cố truyền thông mạng. ICMP chủ yếu được sử dụng để xác định liệu dữ liệu có đến đích dự kiến thành công hay không và thời gian thực hiện việc đó. Thông thường, giao thức ICMP được sử dụng trên các thiết bị mạng, chẳng hạn như bộ định tuyến. ICMP rất quan trọng, giao thức này được dùng để báo cáo lỗi và kiểm tra, nhưng nó cũng có thể được sử dụng trong các cuộc tấn công từ chối dịch vụ phân tán (DDoS) .
ICMP được sử dụng để làm gì?
Mục đích chính của ICMP là để báo cáo lỗi. Khi hai thiết bị kết nối qua Internet, ICMP sẽ tạo ra lỗi để chia sẻ với thiết bị gửi tín hiệu trong trường hợp dữ liệu không đến được đích dự kiến của nó. Ví dụ, nếu một gói dữ liệu có kích thước quá lớn đối với một router, router sẽ bỏ gói dữ liệu đó và gửi một thông điệp ICMP trở lại nguồn ban đầu để lấy dữ liệu mới.
Công dụng thứ hai của giao thức ICMP là thực hiện chẩn đoán các sự cố mạng, các công cụ thường được sử dụng để theo dõi hoặc ping đều hoạt động bằng ICMP. Công cụ theo dõi được sử dụng để hiển thị đường dẫn định tuyến giữa hai thiết bị Internet. Đường dẫn định tuyến là đường dẫn vật lý thực tế của các bộ định tuyến được kết nối mà một yêu cầu phải đi qua trước khi nó đến đích. Hành trình giữa một bộ định tuyến này và một bộ định tuyến khác được gọi là ‘hop’ và một tracert cũng báo cáo thời gian cần thiết cho mỗi hop trên đường đi. Điều này có thể hữu ích để xác định các nguyên nhân gây chậm trễ mạng.
Tiện ích ping là một phiên bản đơn giản hóa của tracert. Một gói tin ping sẽ kiểm tra tốc độ kết nối giữa hai thiết bị và thời gian gói dữ liệu đến đích và quay trở lại thiết bị của người gửi. Mặc dù ping không cung cấp dữ liệu về định tuyến hoặc hop, nhưng nó vẫn là một số liệu rất hữu ích để đánh giá độ trễ giữa hai thiết bị. Các thông báo ICMP echo-request và echo-reply thường được sử dụng cho mục đích thực hiện ping.
Ngoài ra, bạn có thể tham khảo các bài viết sau đây về chứng chỉ công nghệ mạng:
Các loại ICMP thường thấy
- ICMP echo
- ICMP Destination Unreachable
- ICMP Parameter Problem
- ICMP Redirect/ Change Requesst
- ICMP Timestamp request
- ICMP Information Request and Reply
- ICMP Address Mask Request
- ICMP Router Discovery
- ICMP Source Quench
Để hiểu được các loại ICMP này thì các bạn cần phải nắm được các trường TYPE và xác định ý nghĩa cũng như thông điệp mà chúng muốn mang lại.
0: Echo reply
3: Destination unreachable
4: Source quench
5: Redirect
8: Echo
9: Router advertisement
10: Router selection
11: Time exceeded
12: Parameter problem
13: Timestamp
14: Timestamp reply
15: Information request
16: Information reply
17: Address mask request
18: Address mask reply
30: Traceroute
31: Datagram Conversion Error
32: Mobile Host Redirect
33: IPv6 Where-Are-You
34: IPv6 I-Am-Here
35: Mobile Registration Request
36: Mobile Registration Reply
37: Domain Name Request
38: Domain Name Reply
39: SKIP
40: Security Failures
Đặc điểm của các loại ICMP phổ biến
ICMP echo
Đây là loại thường thấy nhất và chúng đóng vai trò vô cùng quan trọng. Hiện nay có 2 loại ICMP echo đó là echo request và echo reply.
Type = 0 -> echo request, code = 0
Type = 8 -> echo reply, code = 0
ICMP Destination Unreachable
Nếu như điểm ICMP không thể truy cập thì thiết bị trung gian sẽ gửi một thông báo về cho người gửi. ứng với nhiều nguyên nhân khác nhau sẽ cho các giá trị và các code khác nhau.
ICMP Parameter Problem
Nếu khi gặp lỗi ở dữ liệu và không thể chuyển tiếp nó đi đâu được thì thiết bị trung gian sẽ gửi 1 thông báo cho Sender trong trường hợp Type = 12 Code = 0 – 2
Lưu ý phần này chỉ được sử dụng để kiểm soát thông tin và các thông báo chứ chúng không mang thông báo đi.
ICMP Redirect/ Change Requesst
Đây là phương thức được gửi đi bởi 1 gateway mặc định, sau đó báo với host nhận biết là có best path hay không.
Ở giao diện mà các gói ICMP đã đi vào sau đó lại được định tuyến đi ra.
Ở mạng con hay mạng của địa chỉ IP nguồn cùng với mạng con hay mạng với nexthop.
Khi host được để ở trạng thái mặc định là gửi thông báo thì ICMP để bỏ default này sẽ nhận lệnh “no ip redirects”.
Tương ứng với các type và code như sau:
Type = 5 code = 0 -> Redirect datagram for the network
Type = 5 code = 1 -> Redirect datagram for the host
Type = 5 code = 2 -> Redirect datagram for the type of service and the network
Type = 5 code = 3 -> Redirect datagram for the type of service and the host
ICMP Timestamp request
Đây chính là phương thức đồng bộ thời gian giữa nơi truyền và nhận tin có thể thực hiện qua:
Type = 13, code = 0 -> ICMP Timestamp Request
Type = 14, code = 0 -> ICMP Timestamp reply
Đối với trường hợp size 16 bit là địa chỉ ID thì việc nhận biết giữa các cặp reply/request có thể sử dụng số thứ tự.
ICMP Information Request and Reply
Phương thức ICMP này có thể xác định số mạng sử dụng qua:
Type = 15, code = 0 -> ICMP Information Request
Type = 16, code = 0 -> ICMP Information reply
Trong trường hợp size 16 bít là địa chỉ ID thì để có thể nhận biết các cặp reply/request bạn có thể sử dụng số thứ tự.
ICMP Address Mask Request
Phương thức này để có thể xác định số mạng được sử dụng. Thực hiện qua:
Một khi máy chủ tìm được mạng con của mình, thiết bị này sẽ sử dụng các hình thức:
Type = 17, code = 0 -> ICMP Address Mask Request
Type = 118, code = 0 -> ICMP Address Mask reply
Bên cạnh đó còn có 2 trường có size 16 bit là ID và 32 bit dành cho Address Mask. Chúng sẽ liên kết với nhau và không dùng thông báo trả lời bởi nó là địa chỉ hoàn toàn chính xác của máy chủ khi bạn thuê máy chủ ảo.
ICMP Router Discovery
Hình thức ICMP này dùng để xác định bộ định tuyến khi sender mất default gateway, được thực hiện bởi Type = 9 Code =0
ICMP Source Quench
Giao thức này được sử dụng để báo cho người gửi biết là có hiện tượng tắc nghẽn và hỏi họ xem có muốn giảm tốc độ gửi gói dữ liệu đi hay không như sau: Type = 4 Code = 0
Cách thức hoạt động của ICMP
Không giống như Giao thức Internet (IP), ICMP không được liên kết với giao thức lớp Transport như TCP hoặc UDP. Điều này làm cho ICMP trở thành một giao thức connectionless: một thiết bị không cần mở kết nối với thiết bị khác trước khi gửi tin nhắn ICMP. Lưu lượng IP thông thường được gửi bằng TCP, có nghĩa là bất kỳ hai thiết bị nào trao đổi dữ liệu trước tiên sẽ thực hiện TCP handshake để đảm bảo cả hai thiết bị đều sẵn sàng nhận dữ liệu. ICMP không mở kết nối theo cách này. Giao thức ICMP cũng không cho phép nhắm mục tiêu một port cụ thể trên thiết bị.
ICMP được sử dụng như thế nào trong các cuộc tấn công DDoS?
ICMP flood attack
ICMP flood attack hoặc ping flood là khi kẻ tấn công cố gắng tràn ngập một thiết bị mục tiêu bằng các gói tin ICMP request/reply. Mục tiêu phải xử lý và trả lời từng gói tin, sử dụng tài nguyên máy tính của nó cho đến khi người dùng hợp lệ không thể được phục vụ.
Ping of death attack
Ping of death attack là khi kẻ tấn công gửi một ping lớn hơn kích thước tối đa cho phép của một gói tin đến một máy được nhắm mục tiêu, khiến máy bị treo hoặc sập. Gói tin bị phân mảnh trên đường đến mục tiêu của nó, nhưng khi mục tiêu tập hợp lại gói tin có kích thước vượt quá kích thước tối đa ban đầu của nó, kích thước của gói tin sẽ gây ra tràn bộ đệm.
Hiện nay, kiểu tấn công Ping of death đã không còn tác dụng, tuy nhiên các thiết bị mạng cũ vẫn có thể dễ bị ảnh hưởng bởi nó.
Smurf attack
Trong một cuộc tấn công Smurf, kẻ tấn công sẽ gửi một gói ICMP với địa chỉ IP nguồn giả mạo. Thiết bị mạng trả lời gói tin, gửi câu trả lời tới IP giả mạo và làm người dùng choáng ngợp trong các gói ICMP không mong muốn. Giống như ‘ping of death’, ngày nay smurf attack chỉ có thể thực hiện được với các thiết bị cũ.
ICMP không phải là giao thức lớp mạng duy nhất được sử dụng trong các cuộc tấn công DDoS layer 3. Ví dụ, những kẻ tấn công cũng đã sử dụng các gói GRE trong quá khứ.
Thông thường, các cuộc tấn công DDoS ở lớp mạng nhắm vào thiết bị và cơ sở hạ tầng mạng, trái ngược với các cuộc tấn công DDoS ở lớp ứng dụng, nhằm vào các thuộc tính web.
Lời kết
Như vậy là bạn đã biết giao thức ICMP là gì và được dùng để làm gì, hy vọng qua bài viết này bạn có thêm nhiều kiến thức bổ ích!