Báo cáo đồ án tấn công MITM đánh giá an toàn mạng . Các cuộc tấn công mạng có thể xảy ra ở bất kỳ đâu, kể cả trong chính mạng nội bộ ta đang sử dụng. Trong mạng nội bộ LAN, kẻ tấn công có thể sử dụng nhiều phương pháp khác nhau nhằm đánh cắp thông tin cá nhân, thông tin đăng nhập
Trang 3LỜI MỞ ĐẦU
Hiện nay, trong thời đại công nghiệp 4.0 đang phát triển mạnh mẽ, các công
ty công nghệ đang tìm kiếm và phát triển các thiết bị IoT, công nghệ, giao thức mớinhằm nâng cao đời sống xã hội lên một tầm cao mới Tuy nhiên, do sự phát triển nhanh vượt trội của công nghệ thông tin, các cơ chế an toàn bảo mật không thể bắt kịp được tốc độ đó, khiến cho chúng ta dễ bị nhắm đến bởi các cuộc tấn công mạngkhi sử dụng các thiết bị đó Ảnh hưởng của các cuộc tấn công mạng có thể rất lớn, tùy theo mức độ quan trọng và giá trị tài sản của mục tiêu
Các cuộc tấn công mạng có thể xảy ra ở bất kỳ đâu, kể cả trong chính mạng nội bộ ta đang sử dụng Trong mạng nội bộ LAN, kẻ tấn công có thể sử dụng nhiều phương pháp khác nhau nhằm đánh cắp thông tin cá nhân, thông tin đăng nhập, tài liệu quan trọng, … của người dùng bị nhắm đến Một trong những phương pháp tấncông hay được sử dụng, đó là tấn công người xen giữa hay còn gọi là tấn công Man–in–The–Middle
Để bảo vệ trước các cuộc tấn công Man-in-the-middle, nhiều công cụ kiểm thử đã được xây dựng để mô phỏng các cuộc tấn công và phát hiện các lỗ hổng trong mạng máy tính, phục vụ cho việc thiết kế các cơ chế phát hiện và bảo mật mạng cần thiết trước kiểu tấn công này Tuy nhiên, nhiều công cụ tấn công chưa thực hiện được nhiều phương thức tấn công hay các kỹ thuật tấn công vẫn chưa hoàn thiện Ví dụ, công cụ tấn công Ettercap là một công cụ tấn công Man-in-The-Middle lâu đời nhưng thông tin đọc được chỉ giới hạn ở tên đăng nhập và mật khẩu.Vậy, việc phát triển công cụ tấn công Man-in-The-Middle vẫn còn nhiều tiềm năng
để thêm vào các phương thức mới hay cải thiện các kỹ thuật đã có
Chính vì lý do này, đề tài được chọn khi xây dựng đồ án này là “Xây dựng công cụ tấn công Man-In-The-Middle phục vụ đánh giá an toàn mạng” với mục tiêu là:
Giới thiệu về tấn công Man-in-the-middle và tìm hiểu về các phương thức và
kỹ thuật tấn công Man-in-the-middle được sử dụng hiện nay
Trang 4 Phân tích, thiết kế và lập trình công cụ tấn công MiTM
Thử nghiệm công cụ tấn công MiTM
Tìm hiểu về cách phòng chống và phát hiện tấn công MiTM
Sau thời gian nghiên cứu đồ án, các mục tiêu đề ra cơ bản đã đạt được Tuy nhiên, do kiến thức và kỹ năng lập trình còn hạn chế nên không thể tránh khỏi thiếusót, vậy nên rất mong thầy cô cùng các bạn học viên cùng đóng góp ý kiến để tác giả đồ án có thể hoàn thiện đề tài này
Trang 5MỤC LỤC
LỜI CẢM ƠN i
LỜI MỞ ĐẦU ii
DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT vi
DANH MỤC HÌNH ẢNH vii
Chương 1: Tìm hiểu về tấn công Man – in – The – Middle (MiTM) 1
1.1 Khái niệm tấn công 1
1.2 Các phương pháp thực hiện tấn công Man – in – The – Middle (MiTM) 3
1.2.1 ARP Spoofing 3
1.2.2 DHCP Spoofing 7
1.2.3 DNS Cache Poisoning 12
1.2.4 ICMP Redirect 15
1.3 Các hình thức tấn công Man – in – the – middle 18
1.3.1 Packet Injection and Modification (Thêm và thay đổi gói tin) 18
1.3.2 Session Hijacking (Chiếm đoạt phiên) 19
1.3.3 SSL Stripping 21
Chương 2: Xây dựng công cụ tấn công MiTM 23
2.1 Giới thiệu 23
2.1.1 Scapy 23
2.1.2 Giới thiệu về công cụ được xây dựng 25
2.2 Phân tích và thiết kế chức năng 26
2.2.1 Quét mạng (Network Scanner) 26
2.2.2 Tấn công ARP Spoofing 29
2.2.3 Phát hiện ARP Spoofing (ARP Spoofing detector) 34
2.2.4 Lắng nghe HTTP (HTTP Sniffer) 39
2.2.5 DNS Spoofing 42
2.2.6 Trợ giúp 47
Chương 3: Thử nghiệm đánh giá an toàn mạng 48
3.1 Chuẩn bị 48
Trang 63.1.1 Hướng dẫn cài đặt công cụ 48
3.1.2 Thiết lập mô hình thử nghiệm 48
3.2 Thử nghiệm đánh giá an toàn mạng 51
3.2.1 Khái niệm về đánh giá an toàn mạng 51
3.2.2 Quét mạng (Network Scanner) 52
3.2.3 ARP Spoofing 53
3.2.4 Nghe lén đường truyền HTTP (HTTP Sniffer) 56
3.2.5 DNS Spoofing 58
3.2.6 Kết quả đánh giá an toàn mạng 60
Chương 4: Phòng chống và phát hiện tấn công Man–in–the–Middle 61
4.1 Một số biện pháp phòng chống và phát hiện tấn công MiTM 61
4.2 Sử dụng công cụ WiTM 63
KẾT LUẬN 66
TÀI LIỆU THAM KHẢO 67
Phụ lục 1: Chương trình chính của công cụ (WiTM.py) 68
Phụ lục 2: Script chứa các hàm kiểm tra trước (precheck.py) 71
Phụ lục 3: Script chứa chức năng quét mạng (network_scanner.py) 73
Phụ lục 4: Script chứa chức năng tấn công ARP Spoofing và phát hiện ARP Spoofing (ARP_spoofing.py) 74
Phụ lục 5: Script chứa chức năng nghe lén đường truyền HTTP (packet_sniffer.py) 77
Phụ lục 6: Script chứa chức năng tấn công DNS Spoofing (DNS_spoof.py) 79
Phụ lục 7: Script hướng dẫn sử dụng (help.py) 81
Trang 7DANH MỤC KÝ HIỆU VÀ TỪ VIẾT TẮT
ARP Address Resolution Protocol
DHCP Dynamic Host Configuration Protocol
HSTS HTTP Strict Transport Security
HTTP Hypertext Transfer Protocol
ICMP Internet Control Message Protocol
IDS Intrusion Detection System
NAT Network Address Translation
NSA National Security Agency
OSI Open Systems Interconnection
TCP Transmission Control Protocol
VPN Virtual Private Network
WEP Wired Equivalent Privacy
Trang 8DANH MỤC HÌNH ẢNH
Hình 1.1 Ví dụ minh họa tấn công MiTM 1
Hình 1.2 Hoạt động mạng thông thường 5
Hình 1.3 Cách thực hiện tấn công ARP Spoofing của kẻ tấn công 6
Hình 1.4 Hoạt động mạng sau khi bị tấn công ARP Spoofing 7
Hình 1.5 Quá trình hoạt động của giao thức DHCP 8
Hình 1.6 Tấn công DHCP Starvation 10
Hình 1.7 Tấn công DHCP Spoofing 11
Hình 1.8 Tấn công DNS Cache Poisoning 13
Hình 1.9 Tấn công ICMP Redirect 17
Hình 1.10 Tấn công DNS Spoofing sử dụng kỹ thuật sửa đổi gói tin 18
Hình 1.11 Tấn công Session Hijacking 20
Hình 1.12 Tấn công SSL Stripping 21
Hình 2.1 Lưu đồ mô tả hoạt động của chức năng quét mạng 27
Hình 2.2 Lưu đồ mô tả hoạt động của chức năng tấn công ARP Spoofing 30
Hình 2.3 Lưu đồ xử lý dữ liệu nhập vào và lắng nghe đường truyền của chức năng phát hiện ARP Spoofing 35
Hình 2.4 Lưu đồ xử lý gói tin ARP và phát hiện tấn công ARP Spoofing 36
Hình 2.5 Lưu đồ mô tả hoạt động lắng nghe của chức năng HTTP Sniffer 39
Hình 2.6 Lưu đồ xử lý dữ liệu đầu vào và chặn bắt gói tin của chức năng DNS Spoofing 42
Hình 2.7 Lưu đồ mô tả cách xử lý gói tin DNS Response của chức năng DNS Spoofing 43
Hình 3.1 Giao diện công cụ WiTM 48
Hình 3.2 Mô hình mạng thử nghiệm 49
Hình 3.3 Cửa sổ Virtual Network Editor trong VMWare Workstation 50
Hình 3.4 Cửa số NAT Settings trong VMWare Workstation 50
Hình 3.5 Chức năng Network Scanner được chọn 52
Hình 3.6 Kết quả sau khi quét của chức năng Network Scanner 53
Hình 3.7 Địa chỉ MAC của máy nạn nhân trên Windows 7 53
Hình 3.8 Chức năng ARP Spoofing được chọn 54
Hình 3.9 Tấn công ARP Spoofing đang được thực hiện 54
Hình 3.10 Bảng ARP của máy nạn nhân khi bị tấn công ARP Spoofing 55
Hình 3.11 Tấn công ARP Spoofing bị ngừng 55
Hình 3.12 Chức năng HTTP Sniffer được chọn 56
Hình 3.13 Giao diện Website của học viện Kỹ thuật Mật mã 56
Hình 3.14 Kết quả thu được khi người dùng vào trang web 57
Trang 9Hình 3.15 Giao diện trang web có URL http://testphp.vulnweb.com/login.php 57
Hình 3.16 Kêt quả thu được khi người dùng đăng nhập vào trang web 58
Hình 3.17 Chức năng DNS Spoofing được chọn 59
Hình 3.18 Tấn công DNS Spoofing được thực hiện 59
Hình 3.19 Kết quả nslookup trên máy nạn nhân với tên miền facebook.com 59
Hình 3.20 Kết quả nslookup trên máy nạn nhân với tên miền microsoft.com 60
Hình 3.21 Giao diện của chức năng DNS Spoofing trong quá trình tấn công 60
Hình 4.1 Chức năng phát hiện tấn công ARP Spoofing được lựa chọn 64
Hình 4.2 Thực hiện tấn công ARP Spoofing ở máy nạn nhân 65
Hình 4.3 Kết quả chức năng phát hiện tấn công ARP Spoofing của công cụ WiTM .65
Trang 10CHƯƠNG I: TÌM HIỂU VỀ TẤN CÔNG MITMI.1 Khái niệm tấn công
Man – in – the – middle là một dạng tấn công mà ở đó kẻ tấn công xâm nhậpvào cuộc hội thoại giữa hai nhóm người, giả danh cả hai nhóm người và truy cậpvào các thông tin mà hai bên đang truyền cho nhau Tấn công man – in – the –middle cho phép kẻ tấn công chặn, gửi và nhận dữ liệu dành cho người khác hoặckhông bao giờ gửi đi, mà hai bên không hề hay biết
Tấn công MiTM là một trong những kiểu tấn công mạng lâu đời nhất tronglịch sử an ninh mạng Đầu những năm 1980 cho đến giờ, các nhà khoa học máytính đã phải nghiên cứu những cách có thể ngăn chặn được các nhân tố đe dọa được
sử dụng để nghe lén hoặc phá hoại đường truyền Để có thể thực hiện kiểu tấn côngnày, kẻ tấn công có thể can thiệp vào đường truyền hợp pháp hoặc tạo ra điểm kếtnối giả mà kẻ tấn công kiểm soát Đường truyền sau khi bị can thiệp sẽ bị loại bỏ
mã hóa nhằm đánh cắp, thay đổi hoặc chuyển hướng đường truyền đến địa điểm mà
kẻ tấn công muốn chuyển đến
Hình 1.1 Ví dụ minh họa tấn công MiTM
Hình 1.1 trên là một ví dụ của tấn công MiTM có thể làm gì nếu xâm nhậpthành công Lúc này, kẻ tấn công Peter sẽ xâm nhập vào cuộc trò chuyện giữa Jack
và Jill bằng cách đóng giả Jack và Jill Tại đây, đối với Jack, Peter là Jill và đối vớiJill, Peter là Jack Khi đó, Jack và Jill nghĩ rằng họ đang nói chuyện trực tiếp với
Trang 11nhau nhưng thực ra, họ đều đang nói chuyện với Peter Vì lý do này, Peter có thểlắng nghe mọi dữ liệu mà Jack và Jill gửi đến cho Peter và thay đổi thông tin đượctruyền đi Trong ví dụ, Jack và Jill đang thực hiện một giao dịch chuyển tiền Peterthực hiện tấn công MiTM và thay khóa của Jill bằng khóa của chính mình, gửi choJack Sau đó, Peter sẽ chỉnh sửa số tài khoản của Jack bằng tài khoản của mình đểJill chuyển số tiền vốn định gửi cho Jack vào tài khoản của mình.
Các cuộc tấn công MiTM đang ngày càng gia tăng, khó phát hiện hơn vàđang có xu hướng phát triển để có thể phá được các biện pháp bảo mật hiện nay.Một số cuộc tấn công MiTM gây ảnh hưởng lớn được ghi nhận:
Năm 2011, một lỗ hổng an ninh của cơ quan cấp chứng thư Hà Lan đượckhai thác để cung cấp chứng thư giả mạo Các chứng thư giả mạo đó sauđược sử dụng để thực hiện tấn công MiTM
Việc cơ quan an ninh quốc gia (NSA) của Mỹ giả mạo thành Google đượclàm sáng tỏ vào năm 2013 khi Edward Snowden làm rò rỉ các tài liệu củaNSA công khai Sử dụng khả năng chặn bắt các thông tin và giả mạo cácchứng chỉ SSL, NSA có thể theo dõi các tìm kiếm tiềm tang của người dùng
Năm 2014, Lenovo cài đặt một phần mềm adware MiTM gọi là Superfishtrên các máy tính PC Windows Superfish được sử dụng để quét các đườngtruyền SSL và cài đặt các chứng chỉ cho phép chúng chặn bắt và chuyểnhướng các đường truyền an toàn
Năm 2015, một cặp đôi người Anh mất 340.000 Euro trong một cuộc tấncông MiTM nghe lén email và cướp email
Cuối tháng 4, năm 2019, nhiều nhà nghiên cứu tin rằng nhiều kẻ tấn côngđang cố gắng sử dụng kiểu tấn công Man – in – the – Middle để phân phối vàcài đặt Plead Backdoor bằng cách sử dụng phần mềm AsusWSPanel.exe
Trang 12I.2 Các phương pháp thực hiện tấn công Man – in – The – Middle (MiTM)
I.2.1 ARP Spoofing
I.2.1.1 Giới thiệu về giao thức ARP
Trong một hệ thống mạng máy tính, có 2 địa chỉ được gán cho máy tính là:
Địa chỉ logic: là địa chỉ của các giao thức mạng như IP, IPX, Loại địa chỉnày chỉ mang tính chất tương đối, có thể thay đổi theo sự cần thiết của ngườidùng Các địa chỉ này thường được phân thành 2 phần riêng biệt là phần địachỉ mạng và phần địa chỉ máy Cách đánh địa chỉ như vậy nhắm giúp choviệc tìm ra các đường kết nối từ hệ thống mạng này sang hệ thống mạngkhác dễ dàng hơn
Địa chỉ vật lý: hay còn gọi là địa chỉ MAC là địa chỉ 48 bit, dùng để địnhdanh duy nhất do nhà cung cấp gán cho mỗi thiết bị Đây là loại địa chỉphẳng, không phân lớp, nên rất khó dùng để định tuyến
Trên thực tế, các card mạng (NIC) chỉ có thể kết nối với nhau theo địa chỉMAC, địa chỉ cố định và duy nhất của phần cứng Do vậy phải có một cơ chế đểánh xạ địa chỉ logic - lớp 3 sang địa chỉ vật lý - lớp 2 để các thiết bị có thể giao tiếpvới nhau Từ đó, giao thức phân giải địa chỉ ARP - Address Resolution Protocolđược tạo ra nhằm giải quyết vấn đề trên
Giao thức ARP (Address Resolution Protocol), là giao thức được sử dụng đểphân giải địa chỉ MAC cố định từ một địa chỉ IP, có thể thay đổi tùy theo từngmạng ARP là giao thức lớp 2 - Data link layer trong mô hình OSI và là giao thứclớp Link layer trong mô hình TCP/IP Ban đầu ARP chỉ được sử dụng trong mạngEthernet để phân giải địa chỉ IP và địa chỉ MAC Nhưng ngày nay ARP đã đượcứng dụng rộng rãi và dùng trong các công nghệ khác dựa trên lớp hai
Quá trình hoạt động của giao thức ARP như sau:
Bước 1: Khi một thiết bị nguồn muốn liên lạc với một thiết bị khác, thiết bị
đó sẽ kiểm tra xem trong bộ đệm ARP của máy đã có địa chỉ MAC được
Trang 13phân giải của thiết bị đích chưa Nếu đã có, máy sẽ sử dụng địa chỉ MAC đó
để bắt đầu kết nối
Bước 2: Nếu địa chỉ MAC của thiết bị đích chưa có trong bộ đệm ARP, thiết
bị nguồn sẽ tạo ra một gói tin ARP request và gửi broadcast cho toàn bộ thiết
bị có trong mạng với trường Target IP address chứa địa chỉ IP của thiết bịđích Trường Target Hardware Address sẽ để trống
Bước 3: Mọi thiết bị trong mạng nhận được gói tin ARP Request do thôngđiệp được truyền broadcast Khi đó, chúng sẽ so sánh địa chỉ IP trong trườngTarget IP address với địa chỉ IP của chúng Nếu địa chỉ IP của chúng khônggiống, gói tin sẽ bị loại bỏ
Bước 4: Nếu thiết bị đích nhận được gói tin, nó sẽ so sánh và tạo ra thôngđiệp ARP reply, sử dụng thông tin từ thông điệp ARP request đã nhận từtrước để trả lời Đồng thời, thiết bị đích cũng sẽ cập nhật bộ đệm ARP Ởđây, gói tin ARP reply sẽ được gửi theo hướng Unicast
Bước 5: Thiết bị nguồn sẽ nhận gói tin ARP reply từ thiết bị đích và cập nhậtđịa chỉ MAC trong trường Sender Hardware Address cùng với địa chỉ IP cầnphân giải vào bộ đệm ARP
Bước 6: Thiết bị nguồn và thiết bị đích có thể liên lạc với nhau do bộ đệmARP đã có bản ghi cần thiết
Giao thức ARP là giao thức được sử dụng rất nhiều trong các thiết bị kết nốimạng ngày nay do sự linh hoạt và tiện lợi của nó Tuy nhiên, một cơ chế nguy hiểmcủa giao thức này có thể khiến mọi thiết bị gặp nguy hiểm Để đảm bảo rằng cácthiết bị mạng luôn tìm được địa chỉ MAC của thiết bị muốn kết nối, kể cả khi thiết
bị đó có thay đổi địa chỉ IP, các gói tin ARP sẽ luôn được tiếp nhận mặc dù thiết bị
đó không gửi gói tin ARP request Cơ chế này đã bị lợi dụng nhằm tiến hành nhiềucác dạng tấn công khác nhau, trong đó có tấn công Man – in – the – Middle
Trang 14I.2.1.2 Tấn công ARP Spoofing
ARP spoofing là kiểu tấn công mà ở đó kẻ tấn công gửi các gói tin ARP sailệch trong toàn bộ khu vực mạng cục bộ Điều này sẽ dẫn đến địa chỉ MAC của kẻtấn công với địa chỉ IP của máy tính hợp pháp hoặc máy chủ trên mạng đó Một khiđịa chỉ MAC của kẻ tấn công kết nối với địa chỉ IP hợp lệ, kẻ đó sẽ bắt đầu nhậnbất kỳ dữ liệu được dành cho địa chỉ IP đó ARP spoofing có thể cho phép các nhân
tố độc hại chặn bắt, chỉnh sửa hoặc có thể ngăn chặn gói tin đang truyền Các cuộctấn công ARP spoofing chỉ có thể xảy ra trên các mạng cục bộ, nơi sử dụng giaothức ARP
Để có thể phân tích rõ hơn về kiểu tấn công này, đồ án sẽ phân tích ví dụ sau:
Hình 1.2 Hoạt động mạng thông thường
Hình ảnh 1.2 chỉ rõ hoạt động bình thường của mạng máy tính trước khi kẻ tấn công bắt đầu tấn công ARP spoofing Có thể thấy rằng, máy nạn nhân vẫn gửi các yêu cầu và nhận các phản hồi từ Internet thông qua Access point bình thường,
và cả máy kẻ tấn công cũng như vậy Lúc này, bảng ARP của Access point và của nạn nhân không bị thay đổi
Trang 15Hình 1.3 Cách thực hiện tấn công ARP Spoofing của kẻ tấn công
Ở hình ảnh 1.3, máy kẻ tấn công đã bắt đầu thực hiện cuộc tấn công ARPSpoofing trên mạng LAN Có thể thấy rằng, kẻ tấn công đang gửi các gói tin ARPreply cho cả máy nạn nhân và Access Point Đối với nạn nhân, kẻ tấn công gửi mộtgói tin ARP reply có địa chỉ IP gửi là địa chỉ của Access Point, nhưng địa chỉ MACgửi được sử dụng trong gói ARP reply là địa chỉ của mình Khi máy nạn nhân nhậngói tin này, máy sẽ tưởng rằng Access Point đang gửi địa chỉ MAC cho mình vàcập nhật bảng ARP trên máy của mình Điều tương tự cũng xảy ra như vậy vớiAccess Point
Trang 16Hình 1.4 Hoạt động mạng sau khi bị tấn công ARP Spoofing
Sau khi đã thay đổi bảng ARP của cả máy nạn nhân và Access point, kẻ tấncông đã thành công trong việc xen giữa bản thân mình trong kết nối của máy nạnnhân đối với Access Point Tại đây, mọi gói tin từ máy nạn nhân, sẽ phải đi quamáy kẻ tấn công để có thể đến Access Point và kết nối với Internet
Tấn công ARP Spoofing là cách thực hiện tấn công MiTM đơn giản và dễthực hiện nhất trong các phương pháp thực hiện tấn công
I.2.2 DHCP Spoofing
I.2.2.1 Giới thiệu về giao thức DHCP
Khả năng kết nối các thiết bị nhanh và dễ dàng là điều rất quan trọng trongquá trình phát triển công nghệ hiện nay, và mặc dù nhiều thập kỉ đã qua, giao thứcDHCP vẫn là một trong phương pháp cần thiết để đảm bảo rằng các thiết bị có thểkết nối mạng và được cấu hình chính xác DHCP giảm đi rất nhiều những lỗi khicài đặt địa chỉ IP thủ công và có thể mở rộng số lượng địa chỉ IP bằng cách giới hạnthời gian các thiết bị có thể giữ địa chỉ IP được cấp
Giao thức DHCP (Dynamic Host Configuration Protocol) là một giao thứcmạng, hoạt động theo mô hình server – client, được sử dụng trong các mạng IP mà
ở đó, một máy chủ DHCP tự động phân phát một địa chỉ IP và các thông tin mạng
Trang 17khác cho mỗi thiết bị trên mạng để chúng có thể kết nối với nhau một cách hiệu quảvới các thiết bị khác Một máy chủ DHCP cho phép các máy tính yêu cầu các địachỉ IP và các tham số mạng tự động, giảm thiểu trách nhiệm cho các nhân viênquản trị mạng hoặc người dùng phải tự cài đặt các địa chỉ IP thủ công cho tất cảthiết bị mạng
Hình 1.5 Quá trình hoạt động của giao thức DHCP
Việc cấp phát và tiếp nhận giữa máy chủ DHCP và máy khách DHCP trênhình 1.5 có thể được diễn giải như sau:
Bước 1: Máy khách DHCP gửi broadcast một thông điệp DHCPDISCOVERtrên mạng hiện tại
Bước 2: Khi máy chủ DHCP tiếp nhận thông điệp DHCPDISCOVER từ mộtclient, máy chủ DHCP sẽ dành riêng một địa chỉ IP cho client và tạo một đềnghị cho thuê bằng cách gửi một thông điệp DHCPOFFER cho client Thôngđiệp này chứa địa chỉ MAC của client, địa chỉ cho thuê, subnet mask, thờihạn cho thuê và địa chỉ của máy chủ DHCP tạo đề nghị
Bước 3: Để trả lời cho thông điệp DHCPOFFER, client trả lời với thông điệpDHCPREQUEST, gửi broadcast cho máy chủ, yêu cầu địa chỉ được thuê
Trang 18Một client có thể nhận nhiều thông điệp DHCPOFFER từ nhiều máy chủ,nhưng chúng chỉ có thể nhận một thông điệp DHCPOFFER Khi các máychủ DHCP khác nhận thông điệp DHCP Request này, chúng sẽ thu về bất kì
đề nghị nào dành cho client đó và trả địa chỉ IP đề nghị về với tập các địa chỉsẵn sàng sử dụng
Bước 4: Khi một máy chủ DHCP tiếp nhận thông điệp DHCPREQUEST từphía client, server sẽ trả về thông điệp DHCPACK nhằm công nhận việc tiếpnhận đề nghị của máy chủ DHCP Thông điệp DHCPACK chứa thời hạn sửdụng địa chỉ và bất kì các thông tin cấu hình khác mà client có thể yêu cầu.Giao thức DHCP đã và đang là giao thức được sử dụng rất nhiều trong cácmạng máy tính, chính vì vậy, đấy cũng chính là lý do nhiều kẻ tấn công muốn khaithác điểm yếu của giao thức này để có thể thực hiện một số cuộc tấn công nhưDHCP Spoofing, DHCP Stavation, …
Trang 19I.2.2.2 Tấn công DHCP Spoofing
Tấn công DHCP Spoofing, hay còn gọi là giả mạo DHCP, là một kiểu tấncông mà ở đó máy tính của kẻ tấn công đóng vai hay giả dạng thành một máy chủDHCP trong mạng nội bộ LAN Kiểu tấn công này thường được kết hợp với kiểutấn công DHCP Starvation để tăng tính hiệu quả và chính xác
Hình 1.6 Tấn công DHCP Starvation
DHCP Starvation là kiểu tấn công nhằm đến máy chủ DHCP, ở đó kẻ tấncông sẽ gửi một lượng lớn thông điệp DHCP Request với các địa chỉ MAC giảmạo Nếu máy chủ DHCP tiếp nhận các thông điệp DHCP Request này và xử lý
nó, các địa chỉ IP trong máy chủ của DHCP sẽ bị cạn kiệt trong một khoảng thờigian rất ngắn Hình 1.6 ở trên là một ví dụ về cách thực hiện tấn công DHCPStarvation
Một khi các địa chỉ IP khả dụng của máy chủ DHCP bị cạn kiệt, kẻ tấn công
sẽ dựng lên một máy chủ DHCP giả mạo và trả lời các DHCP request từ các clienttrong mạng Bằng việc dựng lên một máy chủ DHCP giả mạo, kẻ tấn công giờ đã
có thể bắt đầu cuộc tấn công DHCP Spoofing
Trang 20Hình 1.7 Tấn công DHCP Spoofing
Sau khi tấn công DHCP Starvation và xây dựng lên máy chủ DHCP giả mạo,
kẻ tấn công có thể bắt đầu phân phối các địa chỉ IP và các điều chỉnh cấu hình TCP/
IP khác đến các client DHCP trong mạng nội bộ bằng cách gửi các thông điệpDCHPOFFER cho toàn mạng Các điều chỉnh cấu hình TCP/IP bao gồm DefaultGateway và địa chỉ IP của máy chủ DNS Kẻ tấn công giờ có thể thay thế các địachỉ này bằng chính địa chỉ IP của kẻ tấn công Một khi địa chỉ IP của DefaultGateway của các thiết bị mạng bị thay đổi, các client trong mạng bắt đầu gửi cácđường truyền ra ngoài mạng đến máy tính của kẻ tấn công Kẻ tấn công giờ đãđứng giữa đường truyền giữa các client kết nối với DHCP giả mạo và Internet,đóng vai trò giống như là một gateway trước khi các thông điệp từ các client kếtnối gửi ra ngoài mạng
Tấn công DHCP Spoofing có thể gây ảnh hưởng lớn đến toàn bộ các thiết bị
sử dụng giao thức DHCP trong mạng LAN, khiến cho đường truyền của toàn bộcác thiết bị trong mạng bị nghe lén và thay đổi nếu hệ thống không có các biệnpháp bảo vệ kịp thời
Trang 21I.2.3 DNS Cache Poisoning
I.2.3.1 Giới thiệu về giao thức DNS
DNS (Domain Name System) là một dịch vụ phân giải tên miền có khả năngánh xạ tên miền (Domain) sang địa chỉ IP và ngược lại DNS có cơ sở dữ liệu phâncấp, phân tán và sử dụng Port giao tiếp là 53 (UDP/TCP)
DNS bao gồm hai thành phần quan trọng: Máy chủ DNS và DNS Client:
Máy chủ DNS sẽ thực hiện phân giải tên miền ra IP và ngược lại từ IP sangtên miền bằng cách tìm kiếm trong cơ sở dữ liệu của nó, nếu không tìm thấy
nó sẽ đi hỏi máy chủ DNS khác
o Forward Lookup Zone sẽ phân giải tên miền sang địa chỉ IP
o Reverse Lookup Zone sẽ phân giải IP sang tên miền
DNS Client dùng để phân giải cho máy người dùng, khi người dùng truy cậptên miền DNS Client sẽ đi hỏi máy chủ DNS để lấy thông tin phân giải tênmiền
Máy chủ DNS sử dụng 2 giao thức để hoạt động là TCP và UDP Giao thứcTCP dùng để đóng gói khi 2 Server DNS thực hiện trao đổi dữ liệu với nhau, TCPđảm bảo quá trình cập nhật thông tin diễn ra an toàn và chính xác Giao thức UDPđược dùng để đóng gói và trả lời các Query một cách nhanh chóng cho các Clientgửi yêu cầu phân giải tên miền
Quá trình hoạt động của giao thức DNS:
Bước 1: Đầu tiên Client sẽ gửi yêu cầu phân giải tên miền DNS Request tớimáy chủ DNS trong mạng cục bộ Nếu máy chủ DNS trong mạng cục bộ sẽkiểm tra trong cơ sở dữ liệu của nó có chứa bản ghi không Nếu có, nó sẽ gửitrả lại địa chỉ IP của máy có tên miền nói trên
Bước 2: Trong trường họp máy chủ DNS cục bộ không có cơ sở dữ liệu vềtên miền này, nó sẽ hỏi lên các máy chủ DNS Root
Bước 3: Máy chủ DNS Root sẽ tìm kiếm thông tin phân giải trong cơ sở dữliệu để trả về địa chỉ IP tương ứng cho Client
Trang 22 Bước 4: Trường hợp máy chủ DNS Root không tìm thấy thông tin phân giảitrong cơ sở dữ liệu của nó thì sẽ gửi truy vấn hỏi các máy chủ DNS thứ cấpkhác.
Bước 5: Các máy chủ DNS khác nếu tìm được thông tin phân giải tên miềnđược yêu cầu sẽ gửi phản hồi DNS Reply về cho máy chủ DNS Root
Giao thức DNS máy tính có thể dễ dàng truy cập vào các trang web màkhông cần phải nhớ những địa chỉ IP để truy cập Nhưng chính tiện ích này cũngchính là điểm yếu của giao thức DNS Vì người dùng không thể nhớ được tên miềnnày được gán với địa chỉ IP nào, kẻ tấn công có thể lợi dụng việc này để thay thếđịa chỉ IP của tên miền đó bằng địa chỉ IP của một máy chủ độc hại do kẻ tấn côngkiểm soát Đây còn được gọi là tấn công DNS poisoning
I.2.3.2 Tấn công DNS Cache Poisoning
Hình 1.8 Tấn công DNS Cache Poisoning
Hình 1.8 mô tả cách thực hiện tấn công DNS Cache Poisoning, một dạng tấncông nguy hiểm, khai thác các lỗ hổng trong giao thức DNS để đổi hướng đườngtruyền Internet khỏi các máy chủ hợp pháp và hướng đến các máy chủ giả mạo
Trang 23Một trong những lí do khiến kiểu tấn công DNS poisoning trở nên nguy hiểm nhưvậy vì nó có thể lan ra từ máy chủ DNS này sang máy chủ DNS khác
Internet không chỉ có một máy chủ DNS, như vậy sẽ kém hiệu quả Nhàcung cấp mạng sử dụng chính các máy chủ DNS của họ làm nơi lưu trữ bộ đệm cácthông tin từ các máy chủ DNS khác Router tại nhà hiện nay hoạt động như mộtmáy chủ DNS, lưu trữ bộ đệm các thông tin từ các máy chủ DNS của nhà cung cấpmạng đăng ký Máy tính của người dùng cũng có một bộ nhớ bộ đệm DNS cục bộ,
để máy có thể tra cứu các bản ghi DNS đã yêu cầu từ trước hơn là gửi yêu cầu đếnmáy chủ DNS lần này đến lần khác
Nếu kẻ tấn công có thể điều khiển một máy chủ DNS và thay đổi một sốthông tin trên nó, ví dụ, kẻ tấn công có thể trỏ google.com đến một địa chỉ IP mà kẻtấn công điều khiển, máy chủ đó sẽ nói với những người dùng của nó tìmgoogle.com ở địa chỉ giả Ở địa chỉ giả đó, kẻ tấn công có thể tiếp nhận và chuyểntiếp yêu cầu của người truy cập đến tên miền muốn truy cập, thậm chí là thay đổiyêu cầu đến website thật, đứng giữa đường truyền của nạn nhân và website
Tấn công DNS poisoning có thể lan rộng ra nhiều mạng khác Ví dụ, nếunhiều nhà cung cấp mạng lấy các thông tin DNS của họ từ một máy chủ bị xâmnhập, bản ghi DNS bị chỉnh sửa sẽ lan ra các nhà cung cấp mạng và lưu vào bộ nhớ
bộ đệm ở đó Từ đó, chúng sẽ lan ra các bộ định tuyến tại nhà và các bộ nhớ bộđệm DNS trên các máy tính khi chúng phân giải tên miền, nhận phản hồi sai lệch
và lưu trữ nó Người dùng chịu ảnh hưởng của kiểu tấn công DNS poisoning sẽ bịđiều hướng đến máy chủ kiểm soát bởi kẻ tấn công, từ đó kẻ tấn công có thể thựchiện các kiểu tấn công lừa đảo, nhằm lừa người dùng cung cấp các thông tin nhạycảm như thông tin tài khoản mạng xã hội, ngân hàng, CMND, …
I.2.4 ICMP Redirect
I.2.4.1 Giới thiệu về ICMP
ICMP (Internet Control Message Protocol), là một giao thức hỗ trợ trên tầngmạng, được sử dụng bởi các thiết bị mạng nhằm gửi các thông điệp báo lỗi hoặc
Trang 24hoặc các thông điệp vận hành thành công, thất bại khi giao tiếp đến các địa chỉ IPkhác trong mạng Các thông điệp ICMP thường được sử dụng trong hoạt độngchuẩn đoán, mục đích điều khiển, hoặc được tạo ra nhằm thông báo lỗi trong quátrình hoạt động của tầng mạng Ví dụ, mọi thiết bị (như là các bộ định tuyến trunggian) trước khi chuyển tiếp một gói tin IP, phải hạ trường TTL (Time to Live) trong
IP headers xuống 1 Nếu trường TTL hạ xuống 0 trước khi đến đích, gói tin sẽ bịloại bỏ và một gói tin ICMP Time Exceed sẽ được gửi lại đến địa chỉ nguồn, thôngbáo gửi thất bại
Một số dạng thông điệp ICMP phổ biến, thường thấy trong quá trình hoạtđộng mạng:
ICMP Request (Type 8), ICMP Reply (Type 0): Là 2 dạng thông điệp được
sử dụng trong ping để kiểm tra kết nối của thiết bị từ xa, hoặc kiểm tra hoạtđộng của thiết bị mạng
ICMP Destination Unreachable (Type 3): Thông điệp được sử dụng nhằmbáo về địa chỉ IP nguồn rằng đích đến không thể kết nối được
ICMP Parameter Problem (Type 12): Thông điệp báo lỗi trong header củadatagram
ICMP Redirect/Change Request (Type 5): Thông điệp điều khiển, được gửibởi gateway, nhằm báo cho các host biết rằng có một đường đi tốt hơn
ICMP Timestamp Request (Type 13), ICMP Timestamp Reply (Type 14):Thông điệp được sử dụng nhằm đồng bộ thời gian ứng dụng giữa nơi chuyền
Trang 25biệt, nhằm đổi hướng đường đi của mục tiêu Kiểu tấn công MiTM này còn đượcgọi là kiểu tấn công ICMP Redirect.
I.2.4.2 ICMP Redirect
Tấn công ICMP Redirect là một dạng tấn công MiTM, xen giữa đườngtruyền của nạn nhân bằng cách sử dụng thông điệp ICMP Redirect (Type 5) nhằmchuyển hướng đường truyền của nạn nhân Các gói tin của máy nạn nhân thay vì điqua gateway, chúng sẽ đi qua máy của kẻ tấn công do sự điều chỉnh trong bảngđịnh tuyến của máy nạn nhân
Như đã giới thiệu ở trên, thông điệp ICMP Redirect đảm bảo các host trongmạng sử dụng gateway tốt nhất có thể, hoặc đổi sang gateway khác phòng trườnghợp bị lỗi Những thông điệp này thường được gửi bởi các cầu nối để thông báo vớicác host rằng có một đường đi tốt hơn để liên lạc với đích đến định trước Thôngđiệp ICMP Redirect là dạng thông điệp chỉ được gửi bởi các bộ định tuyến, khônghost nào có thể gửi được Khi một gói tin ICMP Redirect được nhận bởi host, mộttuyến đường mới được thêm vào nhằm giúp host sử dụng được thông tin đó Thôngđiệp ICMP Redirect là tổng họp của địa chỉ IP của Gateway, theo đó là gói tin IP đểđịnh danh đường đi mới sẽ áp dụng Có 4 mã, được sử dụng để định danh các đốitượng chuyển hướng:
Code 0: Chuyển hướng cho mạng
Code 1: Chuyển hướng cho host
Code 2: Chuyển hướng cho một dạng dịch vụ và mạng
Code 3: Chuyển hướng cho một dạng dịch vụ và host
Để thực hiện được tấn công ICMP Redirect, kẻ tấn công sẽ phải tạo ra mộtgói tin ICMP Redirect giả mạo, với địa chỉ IP nguồn từ gateway Từ đó máy nạnnhân sẽ nhận gói tin và cập nhật đường đi mới, với gateway mới chính là địa chỉcủa IP của kẻ tấn công Hình 1.9 dưới đây minh họa cách thực hiện tấn công ICMPRedirect của kẻ tấn công
Trang 26Hình 1.9 Tấn công ICMP Redirect
Tấn công ICMP Redirect thường rất khó để phát hiện do không thể phát hiệnđược sự bất thường trong lưu lượng mạng, nhưng để thực hiện được kiểu tấn côngnày, người thực hiện tấn công cũng gặp rất nhiều khó khăn Để có thể tạo ra mộtgói tin giả mạo, người tấn công cần phải biết được địa chỉ IP đích mà nạn nhânmuốn kết nối đến, thông thường là các địa chỉ IP ngoài Internet
Việc phát hiện địa chỉ IP đích của nạn nhân có thể dễ dàng đối với nhữngmạng sử dụng các thiết bị hub, chuyển gói tin theo dạng broadcast, nhưng với mạngmáy tính hiện đại, sử dụng switch để chuyển tiếp, việc lắng nghe các gói tin trongmạng sẽ trở nên khó khăn hơn rất nhiều, vì vậy rất khó để tạo ra một gói tin phùhợp được Tuy vậy, tấn công MiTM sử dụng ICMP Redirect vẫn là một trongnhững phương pháp tấn công hiệu quả
I.3 Các hình thức tấn công Man – in – the – middle
I.3.1 Packet Injection and Modification (Thêm và thay đổi gói tin)
Tấn công Packet Injection and Modification (Thêm và thay đổi gói tin) làhình thức tấn công mà ở đó, khi người tấn công đã đứng giữa đường truyền củamục tiêu và nghe lén được các gói tin đang truyền, lúc đó kẻ tấn công có thể thayđổi tham số của gói tin hoặc thay đổi số thứ tự của gói tin để thêm vào gói tin độc
Trang 27hại, rồi truyền lại cho mục tiêu nhằm chuyển hướng, ngụy trang hoặc thay đổi cáchlàm việc của máy tính nạn nhân
Hình 1.10 Tấn công DNS Spoofing sử dụng kỹ thuật sửa đổi gói tin
Hình ảnh 1.10 một ví dụ về việc sử dụng Packet Modification để thực hiệntấn công DNS Spoofing Ở đây, kẻ tấn công nghe lén các gói tin đi từ nạn nhân raInternet nhằm tìm kiếm các gói tin DNS Query yêu cầu phân giải tên miềnYahoo.com Khi nhận được gói tin DNS Query đến tên miền Yahoo.com, kẻ tấncông sẽ chuyển tiếp yêu cầu đó đến tên miền và chờ đợi gói tin DNS Reply từ tênmiền Sau khi nhận được gói tin trả về cho yêu cầu, kẻ tấn công sẽ chặn và thay đổiđịa chỉ phân giải từ tên miền thành địa chỉ của máy chủ độc hại mà kẻ tấn côngmuốn mục tiêu chuyển hướng đến và chuyển về cho mục tiêu Lúc này, nạn nhânnhận được gói tin DNS Reply bị chỉnh sửa của kẻ tấn công và chuyển hướng đếnmáy chủ của kẻ tấn công Từ đó mọi gói tin được gửi đến Yahoo.com sẽ bị chuyểnđến máy chủ của kẻ độc hại mà nạn nhân không hề hay biết
Hình thức tấn công này rất phổ biến trong tấn công MiTM, giúp cho kẻ tấncông can thiệp và điều hướng đường truyền của nạn nhân, thêm vào những tệp tinđộc hai vào đường truyền nạn nhân, v.v Tuy nhiên, cũng có nhiều nhược điểm cầncân nhắc khi thực hiện Vì đây là một hình thức tấn công can thiệp đến đườngtruyền đang xảy ra và yêu cầu độ trễ thấp, hình thức này phải thực hiện tự động và
Trang 28can thiệp ít để đảm bảo đường truyền không bị trễ Để thực hiện được kiểu tấn côngnày hiệu quả, kẻ tấn công cần phải sử dụng công cụ can thiệp gói tin có thể chỉnhsửa nhanh chóng, chính xác và hoàn toàn tự động
I.3.2 Session Hijacking (Chiếm đoạt phiên)
Session Hijacking là một hình thức tấn công mà phiên làm việc của ngườidùng bị chiếm đoạt bởi kẻ tấn công Thông thường, một phiên làm việc bắt đầu khingười dùng đăng nhập hay sử dụng một dịch vụ, ví dụ như ứng dụng ngân hàng, vàkết thúc khi người dùng thoát ra Kiểu tấn công này phụ thuộc vào việc kẻ tấn côngphải biết được session cookie, vì vậy kiểu tấn công này còn được gọi là kiểu tấncông cookie hijacking hay cookie side-jacking Mặc dù bất kỳ phiên máy tính nàocũng có thể bị chiếm đoạt, tấn công Session hijacking thường chỉ được áp dụng đốivới các phiên của trình duyệt hoặc của các ứng dụng web
Trong hầu hết các trường hợp khi người dùng truy cập vào một ứng dụngweb, máy chủ sẽ tạo ra một session cookie tạm thời ở trình duyệt của người dùng
để nhớ rằng họ đang truy cập và đã được xác thực Giao thức HTTP là một giaothức stateless và session cookie gán vào mọi HTTP header là cách phổ biến nhất đểmáy chủ có thể định danh trình duyệt của người dùng hoặc phiên hoạt động hiện tạicủa họ
Trang 29Hình 1.11 Tấn công Session Hijacking
Hình 1.11 là một ví dụ về tấn công Session Hijacking
Để có thể thực hiện được tấn công session hijacking, kẻ tấn công cần phảibiết session ID, hay còn gọi là khóa phiên (session key) của nạn nhân, điều này cóthể làm được bằng cách nghe lén tìm session cookie của nạn nhân Sau khi nạnnhân đã đăng nhập thành công vào máy chủ, kẻ tấn công có thể cướp được phiênlàm việc đó bằng cách sử dụng chính session ID đó cho chính phiên trình duyệt của
kẻ tấn công Máy chủ khi đó sẽ đối xử với phiên làm việc của kẻ tấn công nhưphiên làm việc của nạn nhân
Nếu tấn công thực hiện thành công, kẻ tấn công có thể thực hiện bất kì hànhđộng nào mà nạn nhân được phép làm trong phiên hoạt động Tùy thuộc vào mụctiêu nhắm đến, điều này có thể là chuyển tiền từ tài khoản ngân hàng của nạn nhân,mua sắm trên các trang bán hàng online với tư cách là nạn nhân, truy cập vào các
Trang 30thông tin cá nhân cho những tên cướp danh tính, cướp dữ liệu cá nhân của khánhhàng từ hệ thống công ty, mã hóa các dữ liệu quan trọng và yêu cầu tiền chuộc đểgiải mã chúng, v.v, tất cả đều mang lại hậu quả nghiêm trọng.
I.3.3 SSL Stripping
SSL Stripping hay còn gọi là tấn công hạ cấp SSL là một dạng tấn công được
sử dụng để phá vỡ bảo mật được áp dụng bởi chứng chỉ SSL trên các trang web sửdụng HTTPS Nói một cách khác, SSL Stripping là một kỹ thuật hạ cấp đườngtruyền của người dùng từ đường truyền HTTPS bảo mật xuống đường truyềnHTTP không mã hóa và để lộ đường truyền trước mối nguy bị nghe lén hoặc thaotúng dữ liệu Trong SSL Stripping, mọi đường truyền từ máy nạn nhân được địnhtuyến thông qua một proxy được tạo ra bởi kẻ tấn công
sẽ đóng vai trò như một người truy cập, thay thế nạn nhân gửi thông điệpnhận được từ nạn nhân đến máy chủ Khi đó, kết nối giữa kẻ tấn công và
Trang 31máy chủ là kết nối an toàn do máy kẻ tấn công và máy chủ web thiết lập kếtnối SSL/TLS thành công.
Máy chủ trả lời với trang web đăng nhập có URL sau:https://www.foobank.com/online_banking Ở giai đoạn này, kẻ tấn công cótruy cập vào trang web đăng nhập Tiếp theo, kẻ tấn công sửa đổi phản hồi từmáy chủ từ HTTPS xuống HTTP và gửi nó lại cho nạn nhân, kết quả là URLcủa phản hồi sẽ có địa chỉ là http://www.foobank.com/online_banking
Lúc này, máy nạn nhân có truy cập vào trang đăng nhập của ngân hàng vớiđường truyền không an toàn với máy kẻ tấn công Từ thời điểm đó, mọi yêucầu của nạn nhân được truyền dưới dạng văn bản rõ và kẻ tấn công có thểnghe lén được dữ liệu
Máy chủ nghĩ rằng nó đã thiết lập thành công kết nối SSL/TLS với máy nạnnhân nhưng thực ra là đang kết nối với máy kẻ tấn công Ngược lại, máy nạnnhân cũng nghĩ rằng nó đang kết nối với máy chủ hợp pháp
Tấn công SSL Stripping được sử dụng nhiều trong nghe lén dữ liệu do trìnhduyệt không hiện bất kì lỗi chứng chỉ SSL nào và nạn nhân cũng không hề hay biếttấn công đó đang diễn ra
Trang 32CHƯƠNG II: XÂY DỰNG CÔNG CỤ TẤN CÔNG MITMII.1 Giới thiệu
II.1.1 Scapy
Scapy là một chương trình Python cho phép người dùng gửi, lắng nghe, phântích và tạo các gói tin mạng máy tính Những khả năng này giúp cho việc xây dựngcác công cụ có thể do thám, quét và tấn công mạng hiệu quả cao
Nói một cách khác, Scapy là một chương trình thao tác gói tin có khả năngtương tác mạnh mẽ, có thể tạo và giải mã các gói tin của nhiều giao thức, gửi vànhận chúng, ghép các yêu cầu và trả lời và nhiều hơn nữa Scapy có thể dễ dàng xử
lý các nhiệm vụ cổ điển như quét, theo dấu, do thám, tấn công và do thám mạng
Nó có thể thay thế công cụ hping, arpspoof, arp-sk, arping, p0f và một phần củacông cụ Nmap, tcpdump và tshark
Scapy còn có thể thực hiện nhiều công việc cụ thể khác mà một số công cụkhác không thể làm được, như là gửi frame không hợp lệ, thêm các frame 802.11,kết hợp các kỹ năng (VLAN hopping + ARP poisoning), giải mã VOIP trên kênhtruyền được mã hóa WEP, …
Ý tưởng rất đơn giản Scapy chủ yếu làm hai việc: gửi gói tin và nhận gói tintrả về Người sử dụng scapy định nghĩa một tập các gói tin, scapy gửi chúng, nhậncâu trả lời, ghép các yêu cầu với câu trả lời và gửi về một danh sách các cặp gói tin(yêu cầu, trả lời) và một danh sách các gói tin không khớp Đây là một lợi thế lớntrước các công cụ như Nmap hoặc Hping, ở đó mà câu trả lời không bị thu hẹptrong open, closed, filtered mà là cả gói tin
Một số chức năng chính của Scapy:
Thiết kế gói tin nhanh chóng: Scapy cho phép người dùng miêu tả một góitin hoặc một tập các gói tin thành các tầng xếp lên nhau Các trường của mỗitầng có các giá trị mặc định có thể thay đổi Scapy không bắt buộc ngườidùng phải sử dụng các phương thức định nghĩa trước hoặc các khuôn mẫu cótrước Trong C, người lập trình phải cần đến trung bình 60 dòng để mô tả
Trang 33một gói tin Với Scapy, các gói tin được gửi có thể chỉ cần mô tả trên 1 dòng
và 1 dòng nữa để in kết quả 90% các công cụ do thám mạng có thể đượcviết lại bằng 2 dòng của Scapy
Do thám một lần, thu nhiều dữ liệu: Không như nhiều công cụ khác, Scapycung cấp toàn bộ các thông tin, ví dụ như toàn bộ các gói tin gửi và gói tintrả về nhận được Xem xét các gói tin này sẽ cho người dùng thông tin mongmuốn Hầu hết các công cụ chọn điểm nhìn và loại bỏ các gói tin không liênquan đến điểm nhìn đó Vì Scapy cho người sử dụng toàn bộ dữ liệu gói tin,
dữ liệu đó có thể được sử dụng nhiều lần cho phép các điểm nhìn thay đổiliên tục trong quá trình phân tích
Scapy giải mã, không phải giải thích: Một trong những vấn đề của các thiết
bị do thám mạng máy tính là chúng cố gắng giải thích các phản hồi thay vìchỉ giải mã và đưa ra các dữ liệu Việc giải thích các kết quả có thể giúpnhững người dùng không biết gì về quét cổng nhưng chúng cũng có thể cóhại hơn là đem là lợi ích, do chúng có thể đưa ra các thành kiến về kết quả.Điều có thể có xu hướng xảy ra là để họ có thể tự mình thực hiện việc giảithích, những người dùng có hiểu biết sẽ cố gắng đảo ngược kỹ thuật diễn giảicủa công cụ để rút ra các sự kiện đã kích hoạt sự diễn giải đó Thật khôngmay, nhiều thông tin bị mất trong hoạt động này
Giá trị mặc định hợp lý: Scapy sẽ cố gắng sử dụng các giá trị mặc định hợp
lý cho tất cả các trường của gói tin, nếu chúng không bị viết đè lên Scapycòn cung cấp khả năng tính toán các checksum, kích thước gói tin, … khôngcần sự can thiệp của người dùng
Sau khi đã tìm hiểu về Scapy, đồ án sẽ ứng dụng thư viện Scapy vào trongcông cụ để tạo ra các gói tin nhằm tác động lên hoạt động mạng của máy tính
Trang 34II.1.2 Giới thiệu về công cụ được xây dựng
Công cụ được xây dựng, đặt tên là Who – in – the – Middle (viết tắt làWiTM), là công cụ nhằm cung cấp cho người sử dụng một số các phương thức và
kỹ thuật tấn công, phục vụ cho việc thực hiện tấn công MiTM
Công cụ WiTM sử dụng ngôn ngữ lập trình Python làm ngôn ngữ xây dựngcông cụ và Scapy làm module chính nhằm tạo các gói tin mạng, phục vụ cho việcquét và thực hiện tấn công Bằng việc sử dụng Python, công cụ có thể tương tác vớiScapy bằng cách import Scapy vào script với tư cách là một module Từ đó, công
cụ có thể thao tác với các chức năng của Scapy như tạo và phân tích gói tin
WiTM được xây dựng là một công cụ tấn công MiTM có thể được sử dụng
và cài đặt dễ dàng, không phụ thuộc nhiều vào các module ngoài các module mặcđịnh của Python Ngoài ra, WiTM có thể được sử dụng linh hoạt kết hợp với cáccông cụ tấn công mạng khác do các chức năng của WiTM được xây dựng độc lập
và không phục thuộc vào nhau
WiTM được thiết kế cùng với các chức năng sau:
Quét mạng
Tấn công ARP Spoofing
Phát hiện ARP Spoofing
Lắng nghe đường truyền HTTP
DNS Spoofing
Chi tiết cụ thể về các chức năng của công cụ xây dựng sẽ được trình bày vàgiải thích ở phần Phân tích và thiết kế chức năng tiếp theo
Trang 35II.2 Phân tích và thiết kế chức năng
II.2.1 Quét mạng (Network Scanner)
II.2.1.1 Phân tích
Ở chức năng Quét mạng, mục tiêu phải đạt được là xác định được thông tin
về địa chỉ IP và địa chỉ MAC của những thiết bị kết nối mạng trong LAN, đồngthời xác định địa chỉ IP của Gateway, phục vụ cho việc xác định hướng tấn côngMiTM của người sử dụng
Để có thể làm được điều này, công cụ cần phải sử dụng giao thức ARP để cóthể vừa xác định được các thiết bị đang kết nối trong mạng, vừa phân giải được địachỉ IP thành địa chỉ MAC Ngoài ra, giao thức ARP là một giao thức mạng truyềntải nhanh và không bị hạn chế bởi tường lửa có trên các máy tính, khiến cho việcquét mạng trở nên chính xác hơn
Ở chức năng này, công cụ yêu cầu người dùng nhập vào mạng cần quét, địnhdạng là network/subnet Từ đó công cụ sẽ phải kiểm tra địa chỉ mạng nhập vào cóhợp lệ hay không Nếu hợp lệ, địa chỉ mạng người dùng cung cấp để tạo gói tinARP request, gửi đi và nhận về các gói tin trả lời, kết quả trả về sẽ được in ra dướidạng bảng Nếu không hợp lệ, công cụ sẽ yêu cầu người dùng nhập lại Lưu đồ mô
tả quá trình hoạt động của chức năng được thể hiện ở hình 2.1 dưới đây:
Trang 36Hình 2.13 Lưu đồ mô tả hoạt động của chức năng quét mạng
Để sử dụng chức năng này, chọn option 1 ở giao diện chính
II.2.1.2 Thiết kế
Trước khi xây dựng chức năng, cần phải tạo ra một hàm có khả năng kiểm tra địa chỉ IP được nhập vào, từ đó sẽ thiết kế thêm hàm kiểm tra mạng nhập vào hợp lệ hay không Phần lập trình các hàm kiểm tra địa chỉ nhập vào sẽ có ở phần
Trang 37phụ lục 2 Sau đó, đồ án sẽ mô tả cách lập trình hàm nhập địa chỉ mạng từ phía người dùng.
def input_network():
while True:
try:
network_IP = str(raw_input("[*] Please input network
IP you want to scan: "))
if network_check(network_IP):
return network_IP else:
print("[!] Invalid Input!") continue
except KeyboardInterrupt:
return ""
break
Ở đây, áp dụng hàm kiểm tra địa chỉ mạng đã tạo, nếu địa chỉ nhập vào hợp
lệ, công cụ trả về dữ liệu Nếu dữ liệu nhập vào không hợp lệ, người dùng sẽ được yêu cầu nhập lại
Như đã nói ở phần trước, công cụ sẽ sử dụng giao thức ARP để quét mạng Bằng cách sử dụng Scapy, tạo ra một hàm nhằm gửi gói tin ARP broadcast đến địa chỉ mạng đã nhập và nhận các gói tin trả lời
Trang 38trả lời Để lấy các gói tin đã được trả lời, lấy giá trị đầu tiên của cặp và trả về giá trịđó.
print("[!] Return " + str(num) + " results!")
print("[!] Gateway: " + scapy.conf.route.route("0.0.0.0")[2])
Sau khi đã tạo ra được hàm gửi gói tin ARP broadcast và nhận gói tin trả lời, tạo ra một hàm in ra kết quả đã lấy được từ hàm gửi ARP broadcast ở trên Giá trị của hàm send_ARP_broadcast lưu trữ cặp giá trị gồm gói tin gửi đi và gói tin trả lời từ đó lấy thông tin của gói tin trả về bằng cách lấy giá trị thứ 2 của cặp và trích xuất giá trị IP nguồn và MAC nguồn của chúng Để tìm được địa chỉ gateway, sử dụng hàm conf.route.route Hàm này sẽ trả về thông tin của một đường đi được chỉ định trước theo định dạng sau (interface, outgoing_interface, gateway) Ở đây, lấy địa chỉ gateway bằng cách lấy thông tin từ đường đi 0.0.0.0 Chức năng quét mạng cục bộ đã tạo xong
II.2.2 Tấn công ARP Spoofing
II.2.2.1 Phân tích
Đây là chức năng thực hiện tấn công ARP Spoofing Ở chức năng này, để có thể thực hiện kiểu tấn công này như định nghĩa, cần phải thực hiện xây dựng chức năng tấn công theo hình 2.2:
Trang 39Hình 2.14 Lưu đồ mô tả hoạt động của chức năng tấn công ARP Spoofing
Để giải thích cụ thể chức năng này, đồ án sẽ phân tích lưu đồ trên như sau:
Bước 1: Yêu cầu người dùng nhập 2 địa chỉ IP: địa chỉ IP của mục tiêu tấncông và địa chỉ IP của đối tượng giả mạo Nếu 2 địa chỉ nhập vào không hợp
lệ, công cụ sẽ yêu cầu người dùng nhập lại
Trang 40 Bước 2: Sau khi đã nhập 2 địa chỉ IP, tạo ra 2 gói tin ARP Reply giả mạonhằm đánh lừa hai mục tiêu: máy bị tấn công và máy bị giả mạo, có địnhdạng như sau:
o Gói tin ARP reply 1: Có địa chỉ MAC trả lời là địa chỉ MAC của máyngười sử dụng công cụ nhưng địa chỉ IP là địa chỉ của máy giả mạo,gửi đến máy bị tấn công
o Gói tin ARP reply 2: Có địa chỉ MAC trả lời là địa chỉ MAC của máyngười sử dụng công cụ nhưng địa chỉ IP là địa chỉ của máy bị tấncông, gửi đến máy bị giả mạo
Bước 3: Sau khi tạo được 2 gói tin giả mạo, cần phải thực hiện việc gửi 2 góitin này liên tục nhằm hạn chế khả năng máy của nạn nhân có thể lấy lại địachỉ MAC thật của thiết bị đang giả mạo Việc này có thể thực hiện đượcbằng cách tạo ra vòng lặp và cài đặt thời gian thực hiện việc gửi 2 gói tintrên
Bước 4: Khi người dùng muốn kết thúc tấn công ARP spoofing, dừng quátrình gửi gói tin ARP reply giả mạo và tạo ra 2 gói tin ARP reply khác nhằmkhôi phục lại bảng ARP của 2 máy, xóa giấu vết tấn công của công cụ
Để có thể vừa thực hiện được tấn công ARP spoofing, vừa có thể thực hiệnđược các tính năng khác trong công cụ, công cụ sẽ phải phân luồng xử lý và chạytấn công một cách ngầm định để người sử dụng có thể chọn các lựa chọn khác màkhông ảnh hưởng đến quá trình tấn công ARP spoofing
Để sử dụng tấn công ARP Spoofing, lựa chọn option 2 Để ngắt tấn côngARP spoofing, chọn lại option 2 để ngắt tấn công đã thực hiện từ trước