Bài tập lớn môn an toàn mạng máy tính tìm hiểu tấn công heartbleed và phương pháp phòng chống

36 58 0
Bài tập lớn môn an toàn mạng máy tính tìm hiểu tấn công heartbleed và phương pháp phòng chống

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TỒN THƠNG TIN  BÀI TẬP LỚN MƠN AN TỒN MẠNG MÁY TÍNH ĐỀ TÀI TÌM HIỂU TẤN CƠNG HEARTBLEED VÀ PHƯƠNG PHÁP PHÒNG CHỐNG Giáo viên hướng dẫn: CAO MINH TUẤN Nhóm thực NGUYỄN HÀ AN : VŨ HỒNG ĐẠT LÊ THỊ LINH LÊ VĂN PHƯƠNG Lớp : AT8C Hà Nội, tháng năm 2015 Tìm hiểu cơng HeartBleed phương pháp phòng chống Ý KIẾN CỦA GIÁO VIÊN Tìm hiểu cơng HeartBleed phương pháp phịng chống MỤC LỤC LỜI NÓI ĐẦU 1.1.1 Tấn công OpenSSL dựa lỗ hỗng Heartbleed 1.1.2 Quá trình phát 1.1.3 Phương pháp công khai thác lỗ hổng CHƯƠNG II: CÀI ĐẶT VÀ THỰC HIỆN TẤN CÔNG HEARTBLEED 14 2.1 Mơ hình cài đặt thực cơng 14 2.2 Cài đặt máy chủ 15 2.2.1 Thiết lập cấu hình mạng 15 2.2.2 Thiết lập cấu hình dịch vụ DNS 15 2.2.3 Thiết lập Web site chứa lỗ hổng bảo mật heartbleed 18 2.2.4 Cài đặt sở liệu cho trang web www.test.com 22 2.2 Cài đặt máy trạm 25 2.2.1 Thiết lập cấu hình mạng 25 2.2.2 Truy cập www.test.com 26 2.3 Tấn công khai thác lỗ hổng Heartbleed 26 2.3.1 Cài đặt mạng máy thực công 26 2.3.2 Tấn công khai thác lỗ hổng Heartbleed 27 2.4 Phương pháp phòng chống 28 2.4.1 Lời khuyên cho doanh nghiệp 28 2.4.2 Lời khuyên cho người dùng cuối 29 2.4.3 Lời khuyên khác 29 CHƯƠNG III KỊCH BẢN DEMO .30 KẾT LUẬN 34 TÀI LIỆU THAM KHẢO .35 Tìm hiểu cơng HeartBleed phương pháp phịng chống LỜI NÓI ĐẦU Mạng Internet mang lại cho người lợi ích to lớn, giúp người giới xích lại gần hơn, chia sẻ thơng tin liên lạc với cách dễ dàng Lượng thông tin chia sẻ trao đổi ngày lớn, có nhiều thơng tin nhạy cảm, quan trọng Do mơi trường kết nối Internet vơ hình chung lại mơi trường dễ dàng cho kẻ xấu lợi dụng để công khai thác liệu quan trọng hay thực mục đích phá hoại Do nhu cầu đặt tìm giải pháp bảo vệ thơng tin nhạy cảm, quan trọng truyền môi trường mạng Để bảo vệ thơng tin mạng, can thiệp mật mã vào môi trường internet nhằm đảm bảo thông tin, liệu tránh kẻ xấu có mục đích cơng khai thác liệu phá hoại.Trong đó, giải pháp sử dụng giao thức SSL để thiết lập kênh truyền tin an toàn Internet giải pháp sử dụng rộng rãi hiệu Khi đó, liệu kênh liên lạc sẽ mã hóa xác thực để đảm bảo an toàn Tuy nhiên, giao thức có lỗ hổng bảo mật nghiêm trọng lỗ hổng heartbleed Xuất phát từ lý trên, nhóm em chọn đề tài “Tìm hiểu cơng heartbleed phương pháp phòng chống” để hiểu rõ lỗ hổng dạng công Nội dung tập lớn gồm có chương: Chương I: Nghiên cứu phương pháp công heartbleed vào bộ giao thức SSL/TLS: Chương giới thiệu phương pháp công heartbleed vào giao thức SSL/TLS Chương II: Cài đặt, thực công HeartBleed phương pháp phịng chống : Chương trình bày vấn đề cài đặt thực công HeartBleed đưa số lời khuyên để phong chống Chương III: kịch demo: chương nhóm sẽ trình bày chi tiết nội dung mà nhóm thực demo báo cáo Do thời gian kiến thức cịn hạn chế, nên khơng thể tránh khỏi thiếu sót nội dung hình thức, mong thầy bạn xem xét bổ sung để nhóm hồn thiện báo cáo Chúng em xin chân thành cảm ơn !!! Tìm hiểu cơng HeartBleed phương pháp phịng chống CHƯƠNG I: NGHIÊN CỨU PHƯƠNG PHÁP TẤN CƠNG HEARTBLEED VÀO BỘ GIAO THỨC SSL/TLS 1.1 Tấn công HeartBleed 1.1.1 Tấn công OpenSSL dựa lỗ hỗng Heartbleed Heartbleed tạm dịch “trái tim rỉ máu” lỗi bảo mật thư viện mật mã dạng mã nguồn mở OpenSSL, thư viện sử dụng rộng rãi để phát triển giao thức bảo mật tầng truyền tải (TLS) Internet Lỗ hổng kết việc thiếu hàm kiểm tra giới hạn xử lý tính mở rộng heartbeat TLS Tính heartbeat nguồn gốc cho tên gọi lỗ hổng heartbleed Lỗ hổng cho phép đối phương lấy thơng tin bí mật như: khóa riêng máy chủ, cookies mật phiên liên lạc người sử dụng Nhiều quan bảo mật uy tín giới đưa cảnh báo tư vấn bảo mật người quản trị hệ thống lỗi nghiêm trọng 1.1.2 Quá trình phát Tính mở rộng Heartbeat giao thức TLS DTLS tiêu chuẩn mô tả cụ thể RFC 6520, công bố vào tháng năm 2012 Nó cho phép dễ dàng kiểm tra giữ trạng thái “sống” (alive) cho liên kết thông tin bảo mật mà không cần phải tiến hành thỏa thuận lại cho lần kết nối Tìm hiểu cơng HeartBleed phương pháp phịng chống Năm 2011, Robin Seggelmann trường Đại học Duisburg-Essen phát triển tính mở rộng Heartbeat cho thư viện mã nguồn mở OpenSSL Sau Seggelmann yêu cầu đưa tính vào OpenSSL, thay đổi ông Stephen N Henson, bốn nhà phát triển OpenSSL tiến hành xem xét, đánh giá Henson không phát lỗi trình phát triển Seggelmann đưa đoạn mã nguồn khơng hồn thiện vào thư viện mã nguồn mở OpenSSL vào ngày 31 tháng 12 năm 2011 Đoạn mã chứa lỗ hổng bảo mật sử dụng rộng rãi phiên OpenSSL 1.0.1 ngày 14 tháng năm 2012 Tính heartbeat kích hoạt nguyên nhân gây phiên OpenSSL chứa lỗ hổng bảo mật Heartbleed Neel Mehta thành viên nhóm bảo mật cơng ty Google công bố lỗ hổng Heartbleed vào ngày tháng năm 2014 Lỗ hổng kéo theo lỗi nghiêm trọng xử lý nhớ thực tính mở rộng Heartbeat gây Đối phương ăn cắp lượng thông tin lên đến 64KB từ nhớ ứng dụng với lần thực hàm heartbeat Lỗ hổng kỹ sư công ty Codenomicon, công ty an ninh mạng Phần Lan đặt tên đồng thời gắn với logo trái tim rỉ máu Họ lấy tên miền Heartbleed.com nhằm giải thích lỗi cho cơng chúng 1.1.3 Phương pháp công khai thác lỗ hổng Phương thức hoạt động tính Heartbeat TLS Heartbeat chế thiết kế để giữ kết nối TLS/DTLS (một tiêu chuẩn an ninh cơng nghệ tồn cầu tạo liên kết mã hóa client server) mà khơng cần tạo liên kết thủ tục tạo liên kết qua SSL/TLS phức tạp nhiều thời gian Thông điệp Heartbeat Request gửi từ phía client tới server bao gồm liệu tùy chọn độ dài liệu Server nhận thơng điệp sẽ phải gửi lại phía client xác liệu u cầu (hình 1.1): Tìm hiểu cơng HeartBleed phương pháp phịng chống Hình 1.1 Heartbeat request (dạng bình thường) Thơng điệp Heartbeat request có cấu trúc sau: struct { HeartbeatMessageType type; uint16 payload_length; opaque payload[HeartbeatMessage.payload_length]; opaque padding[padding_length]; } HeartbeatMessage; byte hb type byte payload len n byte s3->rrec.data[0], *pl; unsigned short hbtype; unsigned int payload; unsigned int padding = 16; /* Use minimum padding */ /* Read type and payload length first */ hbtype = *p++; n2s(p, payload); pl = p; if (hbtype == TLS1_HB_REQUEST) { unsigned char *buffer, *bp; int r; /* Allocate memory for the response, size is byte * message type, plus bytes payload length, plus * payload, plus padding */ buffer = OPENSSL_malloc(1 + + payload + padding); bp = buffer; /* Enter response type, length and copy payload */ *bp++ = TLS1_HB_RESPONSE; s2n(payload, bp); memcpy(bp, pl, payload); bp += payload; /* Random padding */ RAND_pseudo_bytes(bp, padding); r = dtls1_write_bytes(s, TLS1_RT_HEARTBEAT, buffer, + payload + Tìm hiểu cơng HeartBleed phương pháp phịng chống padding); if (r >= && s->msg_callback) s->msg_callback(1, s->version, TLS1_RT_HEARTBEAT, buffer, + payload + padding, s, s->msg_callback_arg); OPENSSL_free(buffer); if (r < 0) return r; } Cấu trúc ghi SSL/TLS: typedef struct ssl3_record_st { int type; /* type of record */ unsigned int length; /* How many bytes available */ unsigned int off; /* read/write offset into 'buf' */ unsigned char *data; /* pointer to the record data */ unsigned char *input; /* where the decode bytes are */ unsigned char *comp; /* only used with decompression - malloc()ed */ unsigned long epoch; /* epoch number, needed by DTLS1 */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ } SSL3_RECORD; Bản ghi SSLv3 bao gồm thành phần chính: type, length data Khi client gửi tới server thông điệp Heartbeat request: thành phần data trongbản ghi SSLv3 mà server nhận liệu mà Heartbeat request Con trỏ p dùng server để xử lý ghi theo cấu hình mặc định sẽ trỏ tới byte ghi này, có cấu trúc mơ tả sau: ^ p byte byte payload byte byte hb req payload len data padding Server sẽ tiến hành xử lý yêu cầu với dtls1_process_heartbeat: /* Read type and payload length first */ hbtype = *p++; n2s(p, payload); pl = p; 10 đoạn code hàm Tìm hiểu cơng HeartBleed phương pháp phịng chống Hình 2.8 Tham số an toàn bảo vệ www.test.com Bấm nút ‘View Certificate’ để xem chứng số máy chủ web: Hình 2.9 Chứng số máy chủ web www.test.com 21 Tìm hiểu cơng HeartBleed phương pháp phịng chống 2.2.4 Cài đặt sở liệu cho trang web www.test.com Đăng nhập vào MySQL Server câu lệnh: #mysql –u root –p Khi đăng nhập mysql sẽ yêu cầu người dùng đặt mật cho tài khoản root Ở tài khoản root sẽ đặt mật ‘123456’ Hình 2.10 Đăng nhập vào MySQL Server Tạo sở liệu test cho trang web www.test.com sở liệu chứa bảng user chứa thông tin người dùng bao gồm username password thông qua lệnh: mysql>create database test; mysql> use test; mysql>create table users(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(200) NOT NULL, password CHAR(200) NOT NULL, PRIMARY KEY(id)); Cài đặt công cụ quản lý PhpMyAdmin Trước tiên, cài đặt PhpMyAdmin: #yum install phpmyadmin PhpMyAdmin cài đặt thành công đăng nhập vào localhost/phpmyadmin hình 3.10 Quá trình đăng nhập sẽ sử dụng tài khoản root mật 123456 MySQL Server 22 Tìm hiểu cơng HeartBleed phương pháp phịng chống Hình 2.11 Cài đặt PhpMyAdmin thành công Tạo thông tin người dùng tên ‘trung’ với mật ‘123456’ vào bảng user sở liệu test PhpMyAdmin Tại mục ‘Insert’ sở liệu test tiến hành điền thông tin người dùng hình 3.11, chọn ‘Go’ để hồn thành Hình 2.12 Thêm người dùng vào sở liệu 23 Tìm hiểu cơng HeartBleed phương pháp phòng chống Kết nối tới sở liệu: trang www.test.com khơng có liên quan tới sở liệu MySQL Server Vì vậy, để www.test.com sử dụng sở liệu test MySQL Server cần phải có trang kết nối /var/www/html/database.php có nội dung sau: Khởi chạy dịch vụ mysql câu lệnh service mysqld restart Kiểm tra việc kết nối tới sở liệu cách truy cập https://www.test.com thực đăng nhập 24 Tìm hiểu cơng HeartBleed phương pháp phịng chống Hình 2.13 ‘Login OK’ kết nối tới sở liệu thành công 2.2 Cài đặt máy trạm 2.2.1 Thiết lập cấu hình mạng Máy trạm cài đặt hệ điều hành Window XP, việc thiết lập cấu hình mạng hình 3.13: Hình 2.14 Thiết lập cấu hình mạng máy trạm 25 Tìm hiểu cơng HeartBleed phương pháp phòng chống 2.2.2 Truy cập www.test.com Máy trạm dùng tài khoản ‘trung’ để sử dụng dịch vụ web từ máy chủ web www.test.com: Hình 2.15 Đăng nhập máy chủ web thành công 2.3 Tấn công khai thác lỗ hổng Heartbleed 2.3.1 Cài đặt mạng máy thực công Máy thực công cài đặt hệ điều hành Window 7, việc thiết lập cấu hình mạng hình 2.16: Hình 2.16 Thiết lập cấu hình mạng máy thực cơng 26 Tìm hiểu cơng HeartBleed phương pháp phịng chống 2.3.2 Tấn cơng khai thác lỗ hổng Heartbleed Đầu tiên đối phương truy cập vào máy chủ web: https://test.com, khơng có tài khoản nên đối phương sẽ không tiến hành đăng nhập (hình 2.17): Hình 2.17 Đối phương khơng thể đăng nhập vào https://test.com Đối phương dùng công cụ Wireshark nghe lưu lượng vào máy chủ đối phương bắt thông tin phiên liên lạc từ mày trạm (192.168.2.30) tới máy chủ web (192.168.2.10) Nhưng đối phương đọc liệu phiên liên lạc liệu mã hóa hình 2.18: Hình 2.18 Đối phương khơng thể nghe liệu vào máy chủ web 27 Tìm hiểu cơng HeartBleed phương pháp phịng chống Đối phương dùng cơng cụ OpenSSLHeartbleedExploit.exe để cơng máy chủ web (hình 2.19) Cơng cụ OpenSSLHeartbleedExploit.exe biên dịch từ trình biên dịch gcc Linux với mã nguồn tập tin heartbleed.c Hình 2.19 Tấn cơng khai thác lỗ hổng Heartbleed máy chủ web Trên hình 2.19 cho thấy đối phương tìm tài khoản ‘trung’ mật ‘123456’ Như vậy, đối phương khai thác thành công lỗ hổng Heartbleed máy chủ web Kết thực nghiệm công Heartbleed: Tấn công thành công lần thực thời gian 30 giây 2.4 Phương pháp phòng chống 2.4.1 Lời khuyên cho doanh nghiệp • Đây lỗ hổng bảo mật thuộc thư viện OpenSSL lỗi nằm SSL/TLS hay chứng nhận Symantec đưa Bất kỳ sử dụng OpenSSL 1.0.1 tới 1.0.1f nên cập nhật vá phần mềm (1.0.1g) thiết lập lại OpenSSL để loại bỏ Heartbleed • Kiểm tra độ dài thực tế Heartbeat data (sửa source code) if (1 + + 16 > s->s3->rrec.length) 28 Tìm hiểu cơng HeartBleed phương pháp phòng chống return 0; /* silently discard */ if (1 + + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec */ • Sau nâng cấp lên phiên OpenSSL vá lỗi, bạn nghi ngờ chứng nhận máy chủ web bạn bị lộ, lấy cắp bị khai thác, liên hệ với đơn vị cấp chứng nhận để thay • Cuối cùng, doanh nghiệp nên cân nhắc thiết lập lại mật người dùng cuối - bị lộ nhớ máy chủ 2.4.2 Lời khuyên cho người dùng cuối • Người dùng cuối nên cảnh giác liệu bị lộ cho bên thứ ba sử dụng nhà cung cấp dịch vụ có chứa lỗ hổng bảo mật • Theo dõi để biết thơng báo từ nhà cung cấp dịch vụ bạn sử dụng Khi nhà cung cấp dịch vụ liên hệ thông báo với người dùng nên thay mật khẩu, người dùng nên làm • Tránh email lừa đảo từ kẻ công yêu cầu bạn cập nhật mật khẩu, tránh truy nhập vào website lạ, nên truy nhập vào tên miền thống • Sử dụng dịch vụ website uy tín họ sẽ người vá lỗ hổng bảo mật • Theo dõi tài khoản ngân hàng thẻ tín dụng để phát khoản chi tiêu bất thường 2.4.3 Lời khuyên khác • Tránh truy nhập vào tên miền lạ với phần mềm trình khách • Ngừng sử dụng dịch vụ proxy chưa vá lỗi • Cập nhật phần cứng phần mềm nhà sản xuất cơng bố vá • Sử dụng trình khách VPN dịch vụ đảm bảo không bị ảnh hưởng Heartbleed truy nhập mạng cơng cộng 29 Tìm hiểu cơng HeartBleed phương pháp phịng chống CHƯƠNG III KỊCH BẢN DEMO MƠ HÌNH: Hình 1: Mơ hình cơng HeartBleed Trong : • máy làm webserver chạy Fedora 18 cài Apache2, OpenSSL version 1.0.1c • máy làm attacker kiểm tra cơng heartbleed chay Ubuntu • Script cơng viết Python heartbleed.py CÁC BƯỚC TẤN CƠNG Bước : Kiểm tra xem webserver có bị lỗi Heartbleed hay không bằng câu lệnh: # python heartbleed.py 192.168.152.152 -p 443 Kết : Hình 2: Kiểm tra lỗi Heartbleed, script trả server có lỗi 30 Tìm hiểu cơng HeartBleed phương pháp phịng chống Kiểm tra version tương ứng OpenSSL webserver: # openssl OpenSSL > version Kết Như OpenSSL có version 1.0.1c bị mắc lỗi Heartbleed Bước 2: Tấn công Heartbleed - Ta kiểm tra tùy chọn công Script câu lệnh : # python heartbleed.py –h Kết : Hình 3: Tùy chọn cơng heartbleed 31 Tìm hiểu cơng HeartBleed phương pháp phịng chống Ta cơng thử câu lệnh : # python heartbleed.py 192.168.152.152 –e –r RAM.txt –a ASCII.txt –p 443 Kết : Như ta công vào webserver lấy trạng thái RAM server lúc lưu file RAM.txt, ta kết xuất liệu nhạy cảm file ASCII.txt Nội dung file RAM.txt : Vì server chưa có thơng tin nhạy cảm nên file ASCII.txt khơng có Hoặc ta ghi lại log cơng : 32 Tìm hiểu cơng HeartBleed phương pháp phịng chống Server sẽ trả Response heartbleed chứa nội dung tối đa 64kb RAM webserver, liệu truyền đường truyền mã hóa OpenSSL có chứa thơng tin nhạy cảm username/password ta sẽ lấy file RAM 33 Tìm hiểu cơng HeartBleed phương pháp phịng chống KẾT LUẬN Sau thời gian tìm hiểu sưu tầm tài liệu, đến nhóm em hồn thành đề tài“Tìm Hiểu Tấn Cơng Heartbleed phương pháp phịng chống” Về bản, đề tài làm rõ nội dung mục tiêu đề ban đầu Nhóm em cố gắng tìm hiểu nghiên cứu vấn đề phương pháp công giao thức SSL/TLS, thực thành công việc cài đặt thực công Heartbleed Tuy nhiên, thời gian có hạn nên đề tài khơng thể tránh thiếu sót định Rất mong đóng góp ý kiến thầy bạn để đề tài hoàn thiện Một lần nhóm em xin chân thành cảm ơn! 34 Tìm hiểu cơng HeartBleed phương pháp phịng chống TÀI LIỆU THAM KHẢO Nguyễn Thanh Sơn Bảo mật gói IP Học viện Kỹ Thuật Mật mã (2013) Christopher Mayer 20 year of SSL/TLS Research An Analysis Of The Internet’s Security Foundation NDS Publishing (2014) Joshua Davies Implementing SSL/TLS Using Cryptography and PKI Wiley Punlishing (2011) Tim Diers Christopher Allen The TLS Protocol Version 1.0 (1990) T.Dierks, C.Allen RFC 2246-The TLS Protocol Version 1.0 (1999) Hong Lei Zhang Three attacks in SSL/TLS protocol and their solution The university of Auckland (2002) Pratik Guha Sarkar, Shawn Fitzgerald Attacks on SSL: a comprehensive study of BEAST, CRIME TIME BREACH, LUCKY 13 & RC4 BIASES https://www.isecpartners.com (2013) How Heartbleed Works: The Code Behind the Internet’s Security Nightmare (2014) Jonathan Hobson CentOS Linux Server Cookbook Packt Publishing (2013) 10 Paul DuBois MySQL Cookbook O’Reilly Media (2012) 11 David Sklar, Adam Trachtenberg Php Cookbook, Third Edition O’Reilly Media (2014) 12 Prdelka Heartbleed OpenSSL – Information Leak Exploit www.exploit-db.com/exploits/32791/ (2014) 35 ... HeartBleed phương pháp phịng chống CHƯƠNG I: NGHIÊN CỨU PHƯƠNG PHÁP TẤN CÔNG HEARTBLEED VÀO BỘ GIAO THỨC SSL/TLS 1.1 Tấn công HeartBleed 1.1.1 Tấn công OpenSSL dựa lỗ hỗng Heartbleed Heartbleed... file RAM 33 Tìm hiểu cơng HeartBleed phương pháp phịng chống KẾT LUẬN Sau thời gian tìm hiểu sưu tầm tài liệu, đến nhóm em hồn thành đề tài? ?Tìm Hiểu Tấn Cơng Heartbleed phương pháp phịng chống? ?? .. .Tìm hiểu cơng HeartBleed phương pháp phịng chống Ý KIẾN CỦA GIÁO VIÊN Tìm hiểu cơng HeartBleed phương pháp phịng chống MỤC LỤC LỜI NĨI ĐẦU 1.1.1 Tấn công OpenSSL dựa lỗ hỗng Heartbleed

Ngày đăng: 25/08/2020, 19:50

Từ khóa liên quan

Trích đoạn

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan