Tấn công ARP (1)



TẤN CÔNG ARP (1)

Lưu ý: chỉ sử dụng phần hướng dẫn này với mục đích tìm hiểu, học tập!!!!! Không nên sử dụng để gây ảnh hưởng tới sự hoạt động bình thường của hệ thống mạng.

Mục đích

  • Hiểu được giao thức ARP.
  • Thực hiện một số phương pháp tấn công ARP.
  • Biện pháp phòng chống tấn công ARP.

Phần mềm, công cụ cần thiết

  • Wireshark
  • Cain and Abel

ARP (Address Resolution Protocol)

ARP là giao thức thực hiện việc tìm địa chỉ MAC của một máy trên mạng khi đã biết địa chỉ IP.
Hoạt động của ARP (hình minh họa dưới đây)
  • Trong mô hình TCP/IP, khi tầng IP có một gói tin cần gửi đi (đã biết địa chỉ IP của máy nhận), nó phải thông báo cho tầng Network Access biết địa chỉ MAC của máy nhận trong mạng cục bộ. Nếu IP trên máy gửi không tìm được địa MAC của máy nhận trong bộ nhớ cache ARP, nó sẽ sử dụng ARP để tìm địa chỉ MAC của máy nhận.
  • ARP trên máy A sẽ đi hỏi tất cả các máy trong mạng cục bộ bằng cách gửi gói broadcast, với nội dung là: máy nào trong mạng có địa chỉ IP (ví dụ: 192.168.1.2) hãy cho biết địa chỉ MAC (ARP request), tất cả các máy trên mạng đều nhận được gói này, tuy nhiên, các máy có địa chỉ IP khác 192.168.1.2 sẽ hủy gói ARP request này, chỉ có máy B với địa chỉ IP 192.168.1.2 sẽ nhận, xử lý và trả lời cho máy A (ARP reply). Nhận được ARP reply từ máy B, máy A sẽ lưu lại vào ARP table trong bộ nhớ cache ARP.

Cache ARP

Cache ARP là bộ nhớ đệm (trên RAM) chứa ARP table. ARP table là một bảng, chứa thông tin ánh xạ giữa địa chỉ IP và địa chỉ MAC tương ứng. Mỗi một bộ ánh xạ này được gọi là một entry.
Có 2 loại entry được lưu trong ARP table là static và dynamic.
  • Entry loại static: là entry được tạo bằng tay, tồn tại trong Cache ARP cho tới khi máy tính khởi động lại.
  • Entry loại dynamic: là entry được tạo ra bằng giao thức ARP, tồn tại trong một khởi thời gian nhất định (mặc định là 20 phút).
Trong Windows, sử dụng lệnh arp –a để xem nội dung của ARP table.
C:\Documents and Settings\Maxsys>arp -a
Interface: 0.0.0.0 --- 0x4
Internet Address      Physical Address      Type
192.168.12.123        00-12-45-67-23-56     static
Interface: 192.168.1.104 --- 0x5
Internet Address      Physical Address      Type
192.168.1.1           00-1f-a4-25-d2-d1     dynamic

Bài tập 1: quan sát giao thức ARP

  1. Mở cửa sổ dòng lệnh, nhập lệnh arp -a để hiển thị nội dung ARP table. Quan sát kết quả và cho biết có bao nhiêu entry? Bao nhiêu entry kiểu static? Bao nhiêu entry kiểu dynamic?
  2. Nhập tiếp lệnh arp –d * để xóa toàn bộ nội dung của ARP table. Gõ lại lệnh arp –a, kết quả bạn nhận được là gì?
  3. Mở chương trình wireshark, chọn cạc mạng phù hợp và bắt đầu quá trình bắt gói.
  4. Trở lại cửa sổ dòng lệnh, thực hiện lệnh arp –d * , chờ một vài giây, nhập lệnh arp –a, nếu thấy xuất hiện bất kỳ entry nào, dừng chương trình bắt gói tin, quan sát cửa sổ kết quả chương trình bắt gói, trả lời các câu hỏi sau:
    • Tìm các gói ARP?
    • Gói nào là ARP request? Gói nào là ARP reply?
    • Dựa vào đâu để biết gói đó là ARP request hay ARP reply?
  5. Tắt chương trình wireshark, trở lại cửa sổ dòng lệnh:
    • Dùng lệnh arp với tham số phù hợp để thêm một entry loại static.
    • Xóa một entry kiểu dynamic.
    • Xóa một entry kiểu static.

Một số phương pháp tấn công ARP

ARP poisoning

ARP poisoning là một phương pháp tấn công hệ thống ARP, đầu độc hệ thống ARP làm cho thông tin của ARP table còn chính xác.
ARP có một điểm yếu là không có cơ chế xác thực. Như đã biết để xây dựng ARP table, máy tính sẽ gửi các ARP request, sau đó nhận lại các ARP reply. Hệ thống hoàn toàn không có cơ chế xác minh xem thông tin của ARP reply đó là thật hay giả, thông tin này sẽ được lưu lại vào ARP table để sử dụng.
Lợi dụng điểm yếu này người tấn công sẽ thực hiện đầu độc hệ thống ARP, sau đó tấn công hệ thống mạng theo một số phương pháp như: man in the middle, denial of services, MAC flooding…v.v.

Tấn công theo kiểu Man in the middle


Hình trên minh họa tấn công ARP kiểu man in the middle. Người tấn công ngồi tại máy C, anh ta muốn theo dõi nội dung trao đổi giữa hai máy A và B.
Để lấy được thông tin trao đổi giữa A và B, máy C sẽ thực hiện tấn công ARP poisoning theo kiểu man in the middle hai máy A, và B. Bằng cách:
  • Máy C gửi một gói ARP reply tới máy A. Nội dung của ARP reply gồm địa chỉ IP của máy B và MAC của máy C. (192.168.1.4 : AA-BB-CC-DD-00-22). Máy A sẽ nhận và cập nhật vào ARP table.
  • Máy C gửi tiếp một gói ARP reply khác tới máy B. Nội dung của ARP reply gồm địa chỉ IP của máy A và MAC của máy C. (192.168.1.3 : AA-BB-CC-DD-00-22). Máy B sẽ nhận và cập nhật vào ARP table.
  • Máy C thực hiện chuyển tiếp (forwarding) các gói tin trao đổi giữa máy A và máy B. Điều này giúp hai máy A và B vẫn thực hiện được các trao đổi dữ liệu bình thường mà không hề biết đang có một người thứ ba đang theo dõi nội dung của các cuộc trao đổi.

Bài tập 2: tấn công ARP poisoning kiểu man in the middle

Ở bài tập này, sử dụng mô hình mạng gồm 3 máy.
  • Máy tấn công: 192.168.7.36 gọi là máy C
  • Hai máy bị tấn công (bị theo dõi): máy ftp client, IP 192.168.7.111 gọi là máy A và máy ftp server 192.168.7.222 gọi là máy B.
  1. Tại máy C, tải về và cài đặt phần mềm Cain and Abel (từ đây gọi tắt là Cain). Sử dụng phần mềm này để có được địa chỉ MAC của các máy đang hoạt động trong hệ thống mạng cục bộ. Địa chỉ để tải: http://www.oxid.it/cain.html.
  2. Tại máy C, chạy chương trình Cain, vào mục Configure trên danh mục chính, chọn tab Sniffer, chọn cạc mạng với địa chỉ IP phù hợp với mạng bạn đang dự định thực hiện tấn công, bấm OK.

  1. Bấm vào biểu tượng cái cạc mạng (thứ hai từ trái qua) để bắt đầu quá trình quét hệ thống, chọn tab Sniffer để hiển thị địa chỉ MAC của các máy đang hoạt động trong hệ thống mạng cục bộ.

Có thể bấm vào biểu tượng dấu “+” trên thanh công cụ, chọn ARP Test (Broadcast 31-bit) trong phần Promiscuous-Mode Scanner để có thêm nhiều địa chỉ MAC.

  1. Quan sát danh sách xem hai máy bạn dự định tấn công đã xuất hiện trên danh sách hay chưa? Nếu đã có, bấm vào tab ARP ở thanh công cụ phía dưới của chương trình Cain, sẽ xuất hiện hai cửa sổ: cửa sổ phía trên (I) hiển thị danh sách các máy đang bị tấn công, cửa sổ phía dưới (II) hiện thị nội dung đang trao đổi giữa các máy đang bị tấn công.

  1. Bấm chuột vào cửa sổ (I), bấm vào nút có dấu “+” trên thanh công cụ, để lựa chọn các máy sẽ tấn công. Khung bên trái hiển thị tất cả các máy trong mạng, chọn một máy sẽ tấn công, cửa sổ bên phải sẽ xuất hiện tất cả các máy trong mạng (trừ máy đã được lựa chọn ở bên trái). Chọn máy thứ 2 ở khung bên phải, bấm OK.

Bấm vào biểu tượng rada màu vàng – đen (thứ 3 bên trái qua) để bắt đầu theo dõi hai máy.
  1. Tại máy C, chạy chương trình bắt gói wireshark.
  2. Tại máy ftp client (máy A) tạo một phiên kết nối ftp tới máy ftp server. Ví dụ: tên đăng nhập cisco, mật khẩu cisco.
C:\>ftp 192.168.7.222
Connected to 192.168.7.222.
220 Welcome to the eagle-server FTP service.
User (192.168.7.222:(none)): cisco
331 Please specify the password.
Password:
230 Login successful.
  1. Tại máy C, mở chương trình wireshark, lọc gói ftp, sẽ thấy được tên đăng nhập và mật khẩu mà 2 máy ftp client (192.168.7.111) trao đổi với ftp server (192.168.7.222),….và nhiều thông tin khác.

---------------------------------------
LGC.

Đọc đĩa cứng bằng phần mềm Disk Editor




Để thuận tiện trong việc khảo sát tổ chức logic của đĩa cứng. Tài liệu này sẽ hướng dẫn cách đọc đĩa cứng bằng phần mềm Disk Editor, lưu nội dung đọc được từ đĩa cứng (dạng hex) vào tập tin văn bản (.txt).

Để việc thực hành được linh hoạt, không ảnh hưởng tới máy tính thật, quá trình thực hành sẽ được thực hiện trên môi trường máy tính ảo.

Phần này tôi ghi lại những gì tôi đã làm, do vậy, các bạn có thể tự thực hiện trên các môi trường khác nhau để tìm hiểu thêm.


Các phần mềm cần có

- VMware 6.0
- Hệ điều hành Windows XP.
- Đĩa Hiren’s Boot 10.1

Các bước chuẩn bị

- Cài đặt phần mềm VMware 6.0
- Sử dụng phần mềm VMware để tạo máy tính ảo. Lưu ý: nếu muốn lưu lại nội dung đọc được vào đĩa cứng của máy tính ảo, để sau đó chép sang máy thật, thì máy ảo phải có một ổ đĩa logic được định dạng kiểu FAT32.
- Cài đặt hệ điều hành Windows XP lên máy tính ảo vừa tạo.
- Đưa đĩa Hiren’s Boot vào máy tính ảo.
- Thiết lập CMOS của máy tính ảo cho phép khởi động từ đĩa CD-ROM trước.

Các bước thực hiện
1. Khi máy tính khởi động, xuất hiện bảng lựa chọn khởi động, chọn Start Hiren’s BootCD để khởi động từ đĩa CD.




2. Danh sách các chương trình có trong đĩa Hiren’s Boot xuất hiện, chọn mục Hard Disk Tools…

3. Chọn More...



4. Chọn More...

 

5. Chọn "Norton Disk Editor 2002".


 

6. Sẽ có một số cửa sổ thông báo xuất hiện, bấm Enter để tiếp tục. Đây là màn hình chương trình Disk Editor.




7. Vào mục Object, chọn Drive.



8. Tại cửa sổ Select the disk…, trong mục Type chọn Physical Disk, chọn Hard Disk 1 ở khung bên trái, bấm OK.



9. Muốn đọc sector vật lý nào và đọc bao nhiêu sector thì vào mục Object, chọn Physical Sector.



 10. Trong cửa sổ Select physical sector range, muốn đọc từ sector nào thì điền vào mục Starting Sector, và điền tổng số sector cần đọc vào mục Number of Sectors.


 

11. Kết quả.




12. Tại bước 11, bạn có thể đọc bất kì sector vật lý nào mà bạn muốn, và thực hiện phân tích tổ chức logic của đĩa cứng. Tuy nhiên, nếu bạn muốn lưu nội dung của đĩa cứng vừa đọc được ở dạng hex vào tập tin dạng .txt để sử dụng sau này hoặc để chép sang máy thật, thì bạn vào mục Tools, chọn Print Object As…


13.  Trong cửa sổ Print As, tại mục Where to print, chọn File, nhập đường dẫn C:\TenTapTin.txt. (Lưu ý: do phần mềm Disk Editor phiên bản này chỉ nhận ra ổ đĩa định dạng theo FAT32, nên ổ đĩa logic được định dạng theo FAT32 đầu tiên luôn được hiểu là ổ đĩa C:\). Bấm OK, nếu lưu thành công, sẽ có thông báo Print complete.


14. Khởi động lại máy ảo, vào hệ điều hành Windows, mở ổ đĩa định dạng FAT32 sẽ thấy tập tin kết quả.



15.  Kết quả.


16. Để lấy tập tin kết quả này từ máy ảo sang máy thật, có thể cài đặt VMTools để chép trực tiếp.



17. Sau khi cài VMware Tools, bạn chỉ việc kéo tập tin từ máy ảo sang máy thật.


---------------------------------
Video tại youtube:
---------------------------------
Cập nhật: 2014/6/27

Sử dụng Wireshark


SỬ DỤNG WIRESHARK ĐỂ QUAN SÁT CÁC GÓI TIN TRÊN MẠNG
(dựa theo Lab 2.6.2 CCNA)

Mục đích

  • Biết được mục đích của chương trình phân tích gói tin Wireshark.
  • Bắt được gói tin bằng phần mềm Wireshark.
  • Biết phân tích các gói tin trao đổi trên mạng.
  • Tìm hiểu chức năng lọc của Wireshark.

Thông tin cần biết

Wireshark là phần mềm phân tích gói tin, được sử dụng để khắc phục sự cố mạng, phân tích mạng, xây dựng giao thức và ứng dụng mạng, sử dụng trong đào tạo. Trước năm 2006, Wireshark có tên là Ethereal.
Phần mềm phân tích gói tin có thể bắt và lưu giữ lại các thông tin liên quan đến dữ liệu đang được truyền đi trên mạng. Nó có thể đọc nội dung và phân tích các gói tin theo các đặc tả khác nhau.
Wireshark có thể phân tích được nhiều loại giao thức mạng khác nhau.

Hướng dẫn sử dụng Wireshark

Để bắt được gói tin, Wireshark phải được cài đặt trên máy tính có kết nối mạng (LAN, mạng ảo, Internet…v.v) đang hoạt động và Wireshark phải được chạy trước, trước khi quá trình trao đổi dữ liệu diễn ra.
Màn hình khởi động của Wireshark.


Để bắt đầu bắt gói tin, vào menu Capture\ chọn Options. Hộp thoại Options cho phép thiết lập các tùy chọn, đặt các điều kiện lọc, giúp lựa chọn loại dữ liệu và số lượng dữ liệu sẽ bắt.

Trước tiên, cần đảm bảo là Wireshark được thiết lập để bắt gói tin trên giao tiếp mạng thích hợp: từ mục Interface, bấm chuột vào vị trí mũi tên để lựa chọn cạc mạng sẽ sử dụng để bắt gói tin. Đối với máy tính, sẽ chọn cạc mạng đang được kết nối mạng.
Ngoài ra, có thể thiết lập thêm một số tùy chọn khác. Ví dụ, các phần được đánh dấu dưới đây.

  • Capture packets in promiscuous mode: nếu không được đánh dấu chọn, thì chỉ bắt được các gói tin có đích đến là máy này. Nếu đánh dấu chọn, thì bên cạnh các gói tin có đích đến là máy này, còn có thể bắt được các gói tin trên cùng đoạn mạng chuyển qua cạc mạng (nhưng đích đến không phải là máy này). Chú ý: việc bắt các gói tin trên cùng đoạn mạng, đi qua cạc mạng (đích đến của gói tin không phải là máy đang xem xét) sẽ có các kết quả khác nhau, tùy thuộc vào các thiết bị mạng (hub, switch, router) được sử dụng trên hệ thống.
  • Name resolution: với tùy chọn này, Wireshark sẽ quyết định có/hay không thực hiện việc phân giải địa chỉ mạng (trong các gói tin) sang dạng tên. Mặc dù việc phân giải tên là có ích, tuy nhiên, việc phân giải tên cũng làm gia tăng các gói tin được bắt tại cạc mạng, dẫn đến làm méo mó kết quả của quá trình phân tích mạng.
Bấm nút Start để bắt đầu quá trình bắt gói. Có thể thực hiện lệnh ping tới máy khác, hoặc truy cập một website, sau đó quan sát màn hình kết quả bắt gói của Wireshark.
Bấm nút Stop để dừng quá trình bắt gói.

Cửa sổ hiển thị kết quả bắt gói của Wireshark gồm có 3 phần.

Phần danh sách các gói tin: hiển thị tất cả các gói tin đã bắt được, kèm theo thông tin vắn tắt của mỗi gói tin.
Khi bấm vào mỗi gói tin trong phần “Danh sách các gói tin”, thông tin về gói tin(được chọn) sẽ hiển thị tại phần “Nội dung chi tiết mỗi gói tin”, và nội dung của gói tin dưới dạng hệ số16 sẽ được hiển thị tại phần “Nội dung gói tin dạng hex”.
Phần “Nội dung chi tiết mỗi gói tin” sẽ hiển thị các giao thức, các trường của mỗi giao thức, các giao thức. Các trường được tổ chức theo cấu trúc cây, có thể mở rộng hoặc thu gọn cấu trúc cây để tiện quan sát.
Có thể lưu kết quả của quá trình bắt gói vào một tập tin. Sau này có thể sử dụng phần mềm Wireshark mở lại các tập tin đã được lưu trước đó để thực hiện các phân tích.
Khi đóng màn hình kết quả hoặc tắt chương trình Wireshark, sẽ có cửa sổ nhắc người sử dụng lưu lại các kết quả đã bắt.

Bài tập 1: bắt gói ping

  1. Máy tính phải được kết nối vào một máy tính khác (thông qua mạng LAN, WLAN, WAN hoặc mạng ảo…v.v).
  2. Chạy chương trình Wireshark, thiết lập một số tùy chọn cho phù hợp như đã trình bày ở phần trên.
  3. Thực hiện lệnh ping (ping địa chỉ IP) tới một máy tính khác. Ví dụ: ping tới địa chỉ IP của máy Eagle Server, 192.168.254.254.
  4. Sau khi thực hiện lệnh ping thành công (đã nhận được gói trả lời – reply), dừng quá trình bắt gói.
  5. Quan sát kết quả ở cửa sổ “Danh sách các gói tin” của chương trình Wireshark, trả lời các câu hỏi sau:
    1. Tìm ra 8 dòng thể hiện quá trình ping vừa thực hiện, gồm các dòng nào (số thứ tự)?
    2. Lệnh ping sử dụng giao thức gì? Tên đầy đủ của giao thức đó?
    3. Hai loại gói tin (message) của lệnh ping?
    4. Trong cửa sổ “Danh sách các gói tin” chỉ chứa địa chỉ nguồn và đích của 2 máy bạn vừa thực hiện lệnh ping, có đúng không? Nếu không thì tại sao?
  6. Quan sát kết quả ở cửa sổ “Nội dung chi tiết mỗi gói tin” của chương trình Wireshark, trả lời các câu hỏi sau:
    1. Cho biết 2 loại địa chỉ được sử dụng trong quá trình thực hiện lệnh ping? Tại sao có 2 loại này?
    2. Các giao thức có trong frame Ethernet?
  7. Vào menu File, chọn mục Close, chọn Continue without Saving để đóng cửa sổ kết quả.

Bài tập 2: bắt gói FTP

  1. Máy tính phải kết nối được với máy Eagle Server (192.168.254.254), đây là máy FTP server.
  2. Chạy chương trình Wireshark, thiết lập một số tùy chọn cho phù hợp như đã trình bày ở phần trên.
  3. Tại cửa sổ dòng lệnh nhập nội dung: ftp 192.168.254.254
  4. Khi kết nối được thiết lập, thực hiện chứng thực bằng tài khoản cisco, mật khẩu cisco (hoặc có thể sử dụng tài khoản anonymous, mật khẩu để trắng).
  5. Nếu đăng nhập thành công, nhập lệnh: get /pub/eagle_labs/eagle1/chapter1/gaim-1.5.0.exe để tải tập tin gaim-1.5.0.exe từ máy ftp server. Màn hình kết quả:
C:\>ftp 192.168.254.254
Connected to 192.168.254.254.
220 Welcome to the eagle-server FTP service.
User (192.168.254.254:(none)): cisco
331 Please specify the password.
Password:
230 Login successful.
ftp> get /pub/eagle_labs/eagle1/chapter1/gaim-1.5.0.exe
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for /pub/eagle_labs/eagle1/chapter1/gaim-1.5.0.exe (6967072 bytes).
226 File send OK.
ftp: 6967072 bytes received in 0.39Seconds 17818.60Kbytes/sec.
ftp>
  1. Sau khi tải xong tập tin, gõ lệnh quit để kết thúc phiên làm việc với ftp server.
  2. Xác định các dòng thể hiện toàn bộ quá trình kết nối, tải tập tin và ngắt kết nối (số thứ tự)? (Quá trình này bao gồm các gói của giao thức TCP và FTP).
  3. Xác định các dòng thể hiện quá trình tạo kết nối, đăng nhập vào server? Kể tên các thông điệp 2 máy đã trao đổi với nhau?
  4. Xác định các dòng thể hiện quá trình yêu cầu tải tập tin của máy client và quá trình truyền tập tin từ server về client?
  5. Xác định các dòng thể hiện quá trình đăng xuất và ngắt kết nối? Cho biết các thông điệp 2 máy đã trao đổi với nhau?
  6. Xác định các gói TCP được trao đổi trong suốt quá trình truyền tập tin của giao thức FTP. Trường nào trong header của TCP chỉ ra điều này?
  7. Trong cửa sổ “Danh sách các gói tin”, chọn một dòng trong quá trình tạo kết nối FTP, quan sát trong cửa sổ “Nội dung chi tiết mỗi gói tin”, hãy cho biết: các giao thức nào đã được đóng gói trong frame?
  8. Trong cửa sổ “Danh sách các gói tin”, chọn các dòng có chứa tên tài khoản đăng nhập và mật khẩu. Quan sát trong cửa sổ “Nội dung gói tin dạng hex”, bạn có nhận xét gì về vấn đề bảo mật thông tin trong quá trình đăng nhập FTP?
  9. Trong cửa sổ “Danh sách các gói tin”, chọn một dòng bất kì của quá trình truyền tập tin, hãy cho biết tên của tập tin đang được truyền? Chọn một dòng truyền nội dung của tập tin, bạn có đọc được thông tin trong cửa sổ “Nội dung gói tin dạng hex”?
  10. Từ cửa sổ bất kì, hãy xác định các gói tin cho biết quá trình ngắt kết nối? Bạn xác định dựa trên yếu tố nào?
  11. Đóng chương trình Wireshark.

Bài tập 3: bắt gói HTTP

  1. Máy tính phải kết nối được với máy Eagle Server (192.168.254.254), đây là máy Web server.
  2. Chạy chương trình Wireshark, thiết lập một số tùy chọn cho phù hợp như đã trình bày ở hai bài tập trước, bắt đầu quá trình bắt gói.
  3.  Mở trình duyệt web, nhập địa chỉ trang web example.com hoặc địa chỉ IP 192.168.254.254, sau khi trang web đã được hiển thị, dừng quá trình bắt gói.
  4. Xác định các gói tin TCP và HTTP của quá trình tải trang web về?
  5. Trong cửa sổ “Danh sách các gói tin”, chọn gói HTTP có chứa “(text/html)” trong cột Info. Trong cửa sổ “Nội dung chi tiết mỗi gói tin”, bấm chuột vào dấu “+” tại hàng “Line-based text data: html”, thông tin gì được hiện thị tại đây?
  6. Đóng chương trình Wireshark.
--------------------------------------------------------