Bài 12: Các kỹ thuật tấn công và cách phòng chống 1
Các phương pháp tấn công Lợi dụng lỗi bảo mật kết hợp với các nguyên tắc khác Lỗi chưa công bố Lỗi đã công bố Mã độc: Virus, sâu, trojan, XSS, SQL injection, plugin, Cổng hậu (backdoor): Truy cập từ xa được mở bởi các phần mềm hay virus Mạo danh (spoofing) 2
Các phương pháp tấn công (tiếp) Phá mật khẩu: Brute force, từ điển, Chiếm quyền Man in the middle (MitM) Từ chối dịch vụ (DOS, DDOS, bomb) Spam Nghe lén Sniffing: đọc bộ nhớ, key logger, router/switch, Side channels: sóng điện từ (truyền thông không dây), âm thanh, hình ảnh, Quan hệ xã hội (social engineering) 3
Lỗi tràn bộ đệm (buffer overflow) Không kiểm soát kích thước vùng nhớ chứa dữ liệu Lỗi được khai thác phổ biến nhất tới nay Đặt biệt dễ bị với các chương trình C (cũ) void foo(char *s) { char buf[10]; strcpy(buf, s); } foo("this string is too long for foo"); 4
Tổ chức bộ nhớ trong chương trình Thông thường, chỉ các vùng nhớ chứa dữ liệu (Stack, Heap) được phép thay đổi trong quá trình chạy chương trình Program instructions Global data Stack Heap 5
Cơ chế tổ chức stack gọi hàm Một frame của stack Parameters high SP+offset SP Return Address Calling Stack Pointer Local Variables Addresses 00000000 low 6
Khai thác lỗi tràn bộ đệm (1) Sửa đổi dữ liệu: quyền, mật khẩu, boolean rootpriv = false; char name[8]; cin >> name; Trước false Sau A r m s t r o n g char name[8] rootpriv 7
Khai thác lỗi tràn bộ đệm (2) Cho phép chạy mã bất kỳ (độc) do người dùng cung cấp void foo(char *s) { char buf[100]; strcpy(buf, s); } Trước address of s return-address Sau address of s pointer to pgm saved sp buf Small Program 8
Lỗi tràn bộ đệm: phòng tránh Kiểm soát kích thước các vùng nhớ chặt chẽ Không dùng các hàm vi phạm quy tắc trên: strcpy(), strcat(), gets(), fgets(), scanf(), Tránh dùng các thư viện có lỗi này Một số hệ điều hanh cho phép hạn chế chạy code ở vùng nhớ dữ liệu Vẫn không tránh được trường hợp ghi đè địa chỉ trả về của hàm tới địa chỉ khác hợp lệ: Đoạn code do người dùng nạp sẵn lên bộ nhớ bằng chương trình khác người dùng sử dụng trực tiếp máy tính Đoạn code khác sẵn trong chương trình có thể dùng để vượt quyền 9
Mã độc (malware) Malware: Chương trình, đoạn chương trình độc hại có khả năng lây nhiễm nói chung Ransomware: Tống tiền, đòi tiền chuộc Spyware: Gián điệp, bí mật lấy và gửi thông tin Adware: Quảng cáo Thường đi kèm khi cài các phần mềm khác Spamware: Phầm mềm khai thác thông tin phục vụ những người gửi spam Scareware: Đe doạ khiến người dùng mua sản phẩm, phần mềm ngoài ý muốn VD: Đe doạ máy đã nhiễm virus 10
Mã độc (tiếp) Virus: Đoạn mã, đoạn chương trình ký sinh trong chương trình chủ Worm: Chương trình tự có khả năng kích hoạt và lây nhiễm Trojan: Chương trình lây nhiễm trên các máy tính khiến máy tính đó có thể được điều khiển hay khai thác từ xa (zombie) Bot: Chương trình quét các server hay thiết bị khác tự động để dò tìm và khai thông tin như lỗ hổng, trích xuất dữ liệu (spider, crawler), mục đích tốt hoặc xấu Khiến máy tính bị khai thác hoặc điều khiển từ xa (Trojan) 11
Mã độc: Virus Đoạn mã, đoạn chương trình ký sinh trong chương trình chủ Không có khả năng tự kích hoạt hay lây nhiễm mà cần tác động của con người Cơ chế nhiễm và phát tán Trong các file chủ có khả năng thực thi được Máy thường:.exe,.com.,.bat, Server:.php,.sh, Autorun (ổ đĩa, thư mục) ActiveX, plugin, Mã nhúng trong các tài liệu, email, 12
Mã độc: Sâu (worm) Chương trình tự có khả năng kích hoạt và lây nhiễm Lây lan nhanh hơn virus rất nhiều Cơ chế lây nhiễm Tự động tìm và khai thác các lỗ hổng hay điểm yếu về bảo mật để phát tán VD: Quét danh bạ email để gửi copy cho người khác Nhiều sâu khai thác các lỗ hổng bảo mật và lây lan với số lượng lớn 13
Mã độc: Trojan Là các chương trình có ích nhưng có tính năng bí mật Tính năng thiết kế sẵn Tính năng được gắn thêm bằng các Các loại Trojan: 14 công cụ Tạo cổng hậu (backdoor) giúp người khác có thể bí mật truy cập thiết bị của nạn nhân từ xa Cho phép người khác điều khiển được thiết bị nạn nhân (thành zombie) phát tán thư rác, tấn công DDoS, đào tiền ảo, Khai thác dữ liệu và gửi ra ngoài Tống tiền, đe doạ,
Phòng tránh lây nhiễm mã độc Công nghệ: Sử dụng các phần mềm diệt và phòng tránh malware Cập nhật thường xuyên Thiết lập firewall Dùng HTTPS với web Kỹ năng của người dùng: Không sử dụng các phần mềm không rõ nguồn gốc Không mở các file tài liệu, email không rõ nguồn gốc Hạn chế truy cập và cung cấp thông tin ở các trang web không đảm bảo Cập nhật HĐH và các phần mềm thường xuyên để khắc phục các lỗ hổng Đặc biệt quan trọng với các server Sao lưu dữ liệu thường xuyên 15
Spoofing: IP Dùng IP được tin cậy trong gói tin IP để vượt qua hàng rào bảo mật 16
Spoofing: IP Dùng cho DoS 17
Spoofing: ARP Cũng thuộc phân loại MitM 18
Spoofing: DNS Còn gọi là DNS cache poisoning 19
Spoofing: Email 20
Tấn công từ chối dịch vụ (denial of service, DoS) Làm một máy chủ hay thiết bị tê liệt, không tiếp tục cung cấp được dịch vụ Thường bằng cách làm quá tải thiết bị nạn nhân Một hình thức tấn công khá bổ biến Mục đích: Tiêu khiển Tấn công đối thủ Đe doạ, tống tiền 21
DoS: Ping of Death Gửi gói tin ICMP ping có kích thước lớn hơn 64kB Gói tin IP có kích thước giới hạn là 64kB Trước 1996: nhiều máy tính bị lỗi không xử lý được các gói tin quá lớn (do lỗi tràn bộ đệm) treo máy hoặc khởi động lại Từ 1997: Các HĐH đã khắc phục lỗi này Hiện nay vẫn còn nhiều website chặn gói tin ICMP 22
DoS: SYN Flood (1) Sử dụng lỗ hổng trong cơ chế bắt tay 3 lượt của TCP Kẻ tấn công không trả lời half-open connections 23
DoS: SYN Flood (2) Kết hợp giả mạo IP để tránh truy nguồn gốc 24
DoS: HTTP POST Gửi HTTP POST header hợp lệ Sau đó gửi phần nội dung POST với tốc độ rất chậm Chiếm dụng tài nguyên lâu dẫn tới quá tải 25
DDoS (Distributed DoS) Sử dụng nhiều thiết bị đồng thời để tấn công nạn nhân bằng lưu lượng rất lớn và khó phòng chống Kẻ tấn công thường sử dụng các malware để phát tán Trojan tạo thành một mạng zombie và ra lệnh tấn công khi cần 26
DDoS: HTTP Flood Thường sử dụng các thiết bị đã bị khống chế 27
DDoS: DNS Amplification Giả mạo IP nạn nhân thực hiện truy vấn DNS tới nhiều Truy vấn DNS kiểu ANY gửi trả toàn bộ danh sách domain 28
DDoS: Smurfing Ping tới nhiều thiết bị (có thể sử dụng broadcast) đồng thời bằng gói tin giả IP nguồn là địa chỉ nạn nhân 29
Nghe lén (sniffing) Kết nối có dây hoặc không dây không mã hoá Thiết bị mạng trung gian (router, switch, gateway, proxy) Mạng chia sẻ (LAN, Wi-Fi) Nhìn/nghe trộm, quay lén Keylogger 30
Người trung gian (Man in the middle, MitM) 31
Phá mật khẩu: Brute force Thử sai bằng các tổ hợp mật khẩu 32
Phá mật khẩu: Từ điển Sử dụng tổ hợp các từ/cụm từ trong danh sách (từ điển) Thường kết hợp với phá nhiều mật khẩu/tài khoản đồng thời thì xác suất thành công sẽ cao hơn (rainbow table attack) 33
Phá mật khẩu: Keylogger Cài phần mềm/phần cứng ghi lại các ký tự đã gõ từ bàn phím Bí mật gửi cho kẻ tấn công 34
Phá mật khẩu: Phishing Giả mạo các trang web hay dịch vụ để lấy cắp mật khẩu, số thẻ tín dụng, tài khoản ngân hàng, Phising: fishing + phreaking 35
Chiếm session (session hijacking) Bằng cách nào đó lấy được cookie lưu session web của người dùng từ trình duyệt Nghe lén qua mạng (packet sniffing) Malware Cross-site scripting (XSS) Sử dụng cookie này để mạo danh nạn nhân, giúp truy cập vào tài khoản dịch vụ mà không cần qua khâu đăng nhập 36
Cross-site scripting (XSS) Một số website cho phép (do thiết kế hoặc do lỗi) thực thi code (Javascript) do người dùng cung cấp print "<html>" print "<h1>most recent comment</h1>" print database.latestcomment print "</html>" Có thể bị lợi dụng để: Khai thác thông tin người dùng, bao gồm cả cookie Thay đổi nội dung trang web chủ làm sai lệch thông tin Thực hiện các truy vấn tấn công nặc danh các nạn nhân khác 37
Cross-site scripting: Ví dụ 38
SQL Injection Lợi dụng các câu truy vấn SQL không được kiểm soát cú pháp và đầu vào chặt chẽ "SELECT * FROM users WHERE name='" + username + "';" Người dùng nhập: a'; UPDATE users SET password='xyz' WHERE name='a 39
SQL Injection Lợi dụng các câu truy vấn SQL không được kiểm soát cú pháp và đầu vào chặt chẽ 40
Nâng quyền tài khoản (privilege escalation) Người có quyền user nâng khai thác lỗ hổng để Nâng quyền tài khoản lên cao hơn (hoặc với quyền tài khoản khác ngang hàng) Thực thi chương trình/đoạn chương trình của mình với quyền cao hơn (hoặc với quyền tài khoản khác ngang hàng) 41
Nâng quyền tài khoản: Một số lỗi tạo lỗ hổng Các trình xử lý lỗi (error handlers) Cho phép người dùng cung cấp hàm/trình xử lý lỗi Ghi log các tiến trình hệ thống khi xảy ra lỗi ra màn hình, file khiến thông tin bị khai thác Phân quyền không đúng VD: Windows chạy các trình screen saver với quyền admin Kiểm tra các điều kiện không chặt chẽ VD: Đặt rootkit vào các thư mục được chia sẻ chung giữa các người dùng 42
Sử dụng các yếu tố xã hội (social engineering) Tấn công phi kỹ thuật Sử dụng mồi nhử Đe doạ bằng các thiệt hại Mạo danh dùng uy tín cá nhân, tổ chức Kết hợp với các biện pháp hay lỗ hổng kỹ thuật 43