Giao thức phân giải địa chỉ (Address Resolution Protocol - ARP) là một trong những giao thức chính của bộ giao thức TCP/IP. Mục đích của ARP là phân giải địa chỉ IPv4 (địa chỉ Logic 32 bit) thành địa chỉ vật lý tương ứng (địa chỉ MAC 48 bit). Các ứng dụng mạng ở tầng Ứng dụng sử dụng địa chỉ IPv4 để giao tiếp với thiết bị khác. Nhưng ở tầng Liên kết dữ liệu, địa chỉ là địa chỉ MAC (địa chỉ vật lý 48 bit), và địa chỉ này được ghi vào card mạng vĩnh viễn. Để hiểu rõ khái niệm này, bạn cần tìm hiểu định dạng Ethernet Frame, là gói dữ liệu được tạo ra ở tầng Liên kết dữ liệu. Bạn có thể xem địa chỉ phần cứng của card mạng bằng cách nhập lệnh "ipconfig/all" tại dấu nhắc lệnh (không có dấu ngoặc kép khi sử dụng Hệ điều hành Windows).
Nói cách khác, có hai loại địa chỉ được sử dụng cho giao tiếp IPv4. Địa chỉ sử dụng ở tầng 3 (tầng Mạng) là địa chỉ IPv4 (địa chỉ Logic 32 bit) và địa chỉ được sử dụng ở tầng 2 (tầng Liên kết dữ liệu) là địa chỉ MAC (địa chỉ vật lý 48 bit). Khi một máy tính đóng gói IPv4 Datagram, nó cần địa chỉ IPv4 nguồn, địa chỉ IPv4 đích, địa chỉ MAC nguồn và địa chỉ MAC đích. Địa chỉ IPv4 nguồn, địa chỉ IPv4 đích, địa chỉ MAC nguồn đã có sẵn vì địa chỉ IPv4 nguồn và địa chỉ IPv4 đích đều có sẵn cục bộ và địa chỉ IPv4 đích là nơi chúng ta đang cố gắng giao tiếp. Tại tầng 2 (tầng Liên kết dữ liệu) của máy tính gửi, nếu máy tính muốn đóng gói một IPv4 Datagram bên trong Ethernet Frame, nó cần địa chỉ MAC đích. Giao thức ARP được sử dụng để phân giải địa chỉ MAC tầng 2 của máy nhận (địa chỉ MAC đích).
Mục đích của Giao thức ARP là tìm ra địa chỉ MAC của một thiết bị trong Mạng cục bộ (LAN) của bạn, để biết địa chỉ IPv4 tương ứng mà ứng dụng mạng đang cố gắng giao tiếp. Có hai loại thông báo ARP có thể được gửi bằng giao thức ARP là ARP Request và ARP Reply.
ARP Request – Khi một Host gửi một ARP Request, nó sẽ điền vào khung ARP Request địa chỉ IP, địa chỉ MAC, loại thông báo ARP và địa chỉ IP mục tiêu. Sau đó, ARP Request được phát (Broadcast) tới tất cả các Host trong cùng một mạng LAN với Host gửi. Trường địa chỉ MAC mục tiêu được để trống cho Host có địa chỉ IP mục tiêu điền vào.
ARP Reply – Khi một Host nhận được ARP Request chứa địa chỉ IP của chính nó làm địa chỉ IP mục tiêu, nó sẽ điền địa chỉ MAC của nó vào trường địa chỉ MAC mục tiêu và trường hoạt động được đặt thành Opcode của ARP Relay. Gói tin này chỉ được gửi trực tiếp đến máy yêu cầu, quá trình này được gọi là Unicast. Khi máy yêu cầu nhận được ARP Reply, nó sẽ cập nhật bộ nhớ đệm ARP của nó với địa chỉ MAC được yêu cầu. Ví dụ về ARP Request và ARP Reply trong ARP như sau:
1. Máy A muốn gửi một gói tin đến D, nhưng A chỉ biết địa chỉ IP của D.
2. Máy A phát ARP Request với địa chỉ IP của D như trong Hình 1.
3. Tất cả các máy trong mạng cục bộ đều nhận được ARP Request được Broadcast.
4. Máy D trả lời với địa chỉ MAC của nó bằng Unicast của ARP Reply như trong Hình 2 và cập nhật bộ nhớ đệm ARP của nó với MAC của A.
5. Máy A thêm địa chỉ MAC của D vào bộ nhớ đệm ARP của nó.
6. Bây giờ máy A có thể chuyển gói tin trực tiếp đến máy D.
Hình 1. Host A phát yêu cầu cho Host D
Hình 2. Host D trả lời Host A (Unicast)
Bộ nhớ đệm ARP (ARP Cache) là một bảng được lưu trữ trong RAM của một thiết bị. Mỗi hàng trong bộ nhớ đệm ARP trói buộc một địa chỉ IP với một địa chỉ MAC. Đầu vào của bộ nhớ đệm ARP sẽ hết hạn sau một khoảng thời gian nhất định nếu thiết bị không nhận bất kỳ Frame nào từ thiết bị trong đầu vào với khoảng thời gian đó.
Hình 3 cho thấy một ví dụ về bộ nhớ đệm ARP trong Windows 8.1 được hiển thị trên dấu nhắc lệnh. Lệnh “arp –a” được sử dụng để hiển thị bộ nhớ đệm ARP trên dấu nhắc lệnh của Hệ Điều hành windows.
Hình 3. Ví dụ bộ nhớ đệm ARP trong Windows 8.1 của máy tính
Bộ nhớ đệm ARP được duy trì động theo hai cách.
a) Giám sát lưu lượng: Khi một nút nhận được bất kỳ Frame nào từ một nút khác, nó sẽ tạo một đầu vào trong bộ nhớ đệm ARP của nó với MAC và IP nguồn có trong Frame.
b) Gói tin ARP Request/Reply: Một nút sử dụng gói ARP Request để yêu cầu địa chỉ MAC tương ứng với một địa chỉ IP cụ thể và sử dụng gói ARP Reply để ghi lại địa chỉ MAC được yêu cầu trong bộ nhớ đệm ARP của nó. Hình 4 cho thấy định dạng của Frame ARP Request/Reply trên Ethernet.
Hình 4. Định dạng Frame ARP Request/Reply trên Ethernet
Nhiễm độc bộ nhớ đệm ARP là kỹ thuật mà kẻ tấn công sửa đổi một cách ác ý ánh xạ địa chỉ IP với địa chỉ MAC tương ứng của nó trong bộ nhớ đệm ARP của một Host khác bằng cách gửi ARP Reply giả mạo. Vì vậy kỹ thuật này còn được gọi là ARP spoofing.
Hình 5, kẻ tấn công là Host C. Nó thực hiện cuộc tấn công nhiễm độc bộ nhớ đệm ARP bằng cách gửi ARP Reply giả mạo đến Host A nói rằng 'địa chỉ IP của Host B ánh xạ tới địa chỉ MAC của Host C' và một ARP Reply giả mạo cho Host B nói rằng 'địa chỉ IP của Host A ánh xạ tới địa chỉ MAC của Host C'. ARP là một giao thức phi trạng thái và các câu trả lời không được kiểm tra so với các yêu cầu đang chờ xử lý. Do đó Host A và Host B sẽ cập nhật bộ nhớ đệm ARP của họ với ánh xạ nhận được trong các câu trả lời ARP.
Hình 5. Host C thực hiện tấn công nhiễm độc bộ nhớ đệm ARP trên Host A & Host B
1) Tấn công trung gian (Man in the Middle - MITM): Khi bộ nhớ đệm ARP của Host A và Host B bị nhiễm độc, Host A sẽ gửi tất cả lưu lượng dành cho Host B, đến Host C. Tương tự Host B sẽ gửi tất cả lưu lượng dành cho Host A, đến Host C. Host C hiện có thể đọc tất cả lưu lượng giữa Host A và Host B. Nếu Host C chuyển tiếp các gói tin, sau khi đọc chúng, đến máy đích thực tế, thì Host A và Host B sẽ không phát hiện rằng họ đang bị tấn công. Đây là một cuộc tấn công MITM mà kẻ tấn công có thể chuyển hướng lưu lượng đi qua giữa hai máy để đi qua anh ta.
2) Tấn công từ chối dịch vụ (Denial of Service - DoS): Tấn công từ chối dịch vụ hơi khác với tấn công MITM, khi kẻ tấn công không chuyển tiếp các gói tin, sau khi đọc chúng, đến máy đích thực, nó được gọi là cuộc tấn công từ chối dịch vụ.
Tài liệu tham khảo:
1. https://www.omnisecu.com/tcpip/address-resolution-protocol-arp.php.
2. M. Ataullah and N. Chauhan, "ES-ARP: An efficient and secure Address Resolution Protocol," 2012 IEEE Students' Conference on Electrical, Electronics and Computer Science, 2012, pp. 1-5, doi: 10.1109/SCEECS.2012.6184794.
3. J. S. Meghana, T. Subashri and K. R. Vimal, "A survey on ARP cache poisoning and techniques for detection and mitigation," 2017 Fourth International Conference on Signal Processing, Communication and Networking (ICSCN), 2017, pp. 1-6, doi: 10.1109/ICSCN.2017.8085417.
Web lưu trữ kiến thức cá nhân đã tham khảo và thấy hữu ích cho người đọc. Các bạn có thể đóng góp bài viết qua địa chỉ: dzokha1010@gmail.com