Traceroute là một công cụ được sử dụng để bảo trì và phân tích mạng. Với một địa chỉ IP, Traceroute sẽ điền vào danh sách tất cả các nút trên Internet mà một gói dữ liệu đi qua để đến máy tính được đại diện bởi địa chỉ IP. Mỗi nút được liệt kê theo thứ tự mà nó được truy cập, do đó, danh sách đại diện cho đường dẫn mạng mà dữ liệu truyền từ máy tính này sang máy tính khác. Mỗi nút được đại diện bởi địa chỉ IP của nó cũng như tên máy chủ của máy tính, nếu có. Được sử dụng như một công cụ mạng, nó có thể xác định các liên kết bị hỏng trong mạng, cũng như xác định các tuyến đường không hiệu quả. Traceroute xác định lộ trình của dữ liệu, chứ không phải là đích mà chúng ta đang theo đuổi.
Tài liệu tham khảo
1. G. Connolly, A. Sachenko and G. Markowsky, "Distributed traceroute approach to geographically locating IP devices," Second IEEE International Workshop on Intelligent Data Acquisition and Advanced Computing Systems: Technology and Applications, 2003. Proceedings, 2003, pp. 128-131, doi: 10.1109/IDAACS.2003.1249532.
Mạng được điều khiển bằng phần mềm (Software Defined Network - SDN) được định nghĩa là một kiến trúc mạng mới được sử dụng để đơn giản hóa việc quản lý mạng và giảm độ phức tạp trong công nghệ mạng. Trong mô hình này, bộ điều khiển mạng được coi như một thành phần mới trong mạng. Bộ điều khiển này có toàn quyền để quản lý và lập trình mạng. Lập trình mạng không giống như cấu hình các thiết bị mạng. Trong quá trình cấu hình, kỹ sư mạng sử dụng một tập hợp các lệnh được xác định trước để thay đổi cài đặt của các thiết bị mạng nhằm thực hiện một số tác vụ nhất định. Ngược lại, khả năng lập trình mạng là quá trình mà một chuyên gia mạng viết các chương trình điều khiển nhiều thiết bị chuyển tiếp gói tin có thể được cấu hình bằng cách sử dụng một số giao thức như OpenFlow. Ví dụ, thiết bị chuyển mạch tầng 2 có thể được lập trình thông qua bộ điều khiển để hoạt động như bất kỳ thiết bị mạng nào, chẳng hạn như tường lửa hoặc bộ định tuyến. Sử dụng cách tiếp cận này, độ phức tạp của quản lý mạng và gỡ lỗi giao thức có thể được giảm bớt. Hơn nữa, nhiều vấn đề bảo mật, chẳng hạn như nhiễm độc giao thức phân giải địa chỉ (ARP) có thể được giải quyết.
SDN là công nghệ mạng mới tách mặt phẳng dữ liệu khỏi mặt phẳng điều khiển. Mặt phẳng dữ liệu được xử lý bởi phần cứng bên dưới truyền các luồng hoặc chặn nó dựa trên các cấu hình được thao tác bởi bộ điều khiển. Tuy nhiên, mặt phẳng điều khiển được xử lý bởi giao thức Openflow và bộ điều khiển. Để hiểu các yếu tố này, Hình 1 cho thấy một sơ đồ đơn giản của cấu trúc liên kết mạng SDN. Trong cấu trúc liên kết này, có thể quan sát thấy ba loại phần cứng khác nhau; Switch, Server ‘bộ điều khiển’ và Computer ‘người dùng’ và hai loại liên kết khác nhau; liên kết điều khiển - chuyển mạch và các liên kết truy cập. Trong phần phụ tiếp theo, chúng tôi sẽ giới thiệu bộ điều khiển (Controller) và liên kết điều khiển - chuyển mạch (Controller-Switch Link) vì chúng là những bộ phận quan trọng nhất trong kiến trúc này.
Hình 1. Cấu trúc liên kết SDN đơn giản
Bộ điều khiển mạng (Controller) là phần chính của mạng SDN. Nó là một máy chủ nơi các nhà phát triển có thể phát triển và viết các thuật toán và cấu trúc liên kết của họ. Nói cách khác, họ lập trình cách mạng sẽ phản ứng với các sự kiện khác nhau. Các ứng dụng này có thể được viết bằng các ngôn ngữ lập trình khác nhau tùy thuộc vào bộ điều khiển được cài đặt. Nhiều bộ điều khiển đã được phát triển trong nhiều năm. Bảng I trình bày tóm tắt về một số bộ điều khiển SDN. Nhiều tài liệu nghiên cứu đã được thực hiện trong lĩnh vực so sánh các số liệu hiệu suất, chẳng hạn như, độ trễ, số lượng luồng và tắc nghẽn của các bộ điều khiển này.
Controller | Development Language |
Floodlight | JAVA |
OpenIRIS | JAVA |
Maestro | JAVA |
NOX | C++/Python |
POX | Python |
Ryu | Python |
Liên kết điều khiển - chuyển mạch (Controller-Switch link): phần quan trọng thứ hai của kiến trúc SDN là giao thức chạy trên liên kết giữa Switch và máy chủ điều khiển. Giao thức này được gọi là Openflow. Openflow định nghĩa định dạng thông điệp, hành động và quy tắc. Trước khi bất kỳ thông điệp nào chuyển giữa bộ điều khiển và Switch, kết nối TCP phải được thiết lập qua Controller-Switch Link. Các bước sau đây cho thấy kiến trúc SDN hoạt động như thế nào.
Đầu tiên, Switch hỗ trợ SDN xử lý thông điệp từ bất kỳ người dùng nào qua bất kỳ liên kết truy cập nào. Nó kiểm tra xem gói tin mới đến có khớp với bất kỳ quy tắc luồng nào được đưa vào trong Switch hay không. Nếu gói tin phù hợp với bất kỳ quy tắc luồng nào, Switch sẽ hoạt động theo hành động được đính kèm với quy tắc này. Thứ hai, nếu không có quy tắc nào được tìm thấy cho gói tin này, Switch sẽ đặt gói tin vào một thông điệp và gửi nó đến bộ điều khiển qua Controller-Switch Link. Thứ ba, bộ điều khiển xử lý gói tin và phân tích nó theo thuật toán đang chạy. Sau đó, nó tạo ra một quy tắc quyết định cho luồng này. Cuối cùng, bộ điều khiển gửi quy tắc luồng mới này đến Switch để thao tác với loại gói tin này.
Tài liệu tham khảo
1. M. Z. Masoud, Y. Jaradat and I. Jannoud, "On preventing ARP poisoning attack utilizing Software Defined Network (SDN) paradigm," 2015 IEEE Jordan Conference on Applied Electrical Engineering and Computing Technologies (AEECT), 2015, pp. 1-5, doi: 10.1109/AEECT.2015.7360549.
Tấn công giả mạo ARP (ARP Spoofing), còn được gọi là ARP Cache Poisoning, là một phương pháp mà kẻ tấn công gửi một thông điệp ARP giả mạo đến Mạng cục bộ (LAN). ARP là một giao thức phi trạng thái (Stateless), trong đó người nhận ARP Reply tự động lưu ánh xạ vào bộ nhớ đệm ARP mà không cần yêu cầu. Bất kỳ kẻ tấn công nào được kết nối với mạng LAN đều có thể gửi thông điệp ARP Reply giả mạo tới nạn nhân bằng địa chỉ MAC của chính nó được liên kết với địa chỉ IP của Host mục tiêu. Mọi lưu lượng truy cập từ nạn nhân đến mục tiêu sẽ được chuyển hướng đến kẻ tấn công. Nếu Host mục tiêu là bộ định tuyến và kẻ tấn công cũng gửi thông điệp ARP Reply giả mạo tới bộ định tuyến bằng địa chỉ MAC của chính nó được liên kết với địa chỉ IP của nạn nhân, thì kẻ tấn công có thể trở thành Người trung gian (Man-In-The-Middle) giữa nạn nhân và tất cả lưu lượng truy cập Internet của nó.
Tài liệu tham khảo
1. B. Scott et al., "An interactive visualization tool for teaching ARP spoofing attack," 2017 IEEE Frontiers in Education Conference (FIE), 2017, pp. 1-5, doi: 10.1109/FIE.2017.8190531.
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.