MỤC LỤC Lời nói Đầu 2 Chương 1: Cơ sở lý thuyết 3 1.1Giới thiệu về Oracle 3 1.2 Quá trình cài đặt Oracle 4 Chương 2: Các hình thức tấn công phổ biến trên Oracle 9 2.1 Tấn công SQL Injection 9 2.1.1 Định nghĩa 9 2.1.2 Các dạng lỗi thường gặp 9 2.2 Tấn công chèn mã PLSQL 15 2.3 Tấn công Rootkit trong Oracle 17 2.3.1 Ẩn tải khoản Oracle Rootkit 17 2.3.2 Ẩn process 20 2.3.3 Ẩn Database Jobs 21 2.3.4 Mô tả tấn công Oracle sử dụng rootkit kết hợp với backdoor 21 2.4 Tấn công Oracle Listener 22 2.4.1 Khai thác thông tin CSDL Oracle qua Listener 22 2.4.2 Tấn công từ chối dịch vụ 25 2.5 Sâu Oracle 26 2.5.1 Sử dụng WORMFS với NFS Khách hàng 26 2.5.2 Tạo tập tin WORM 29 2.5.3 Thời gian lưu giữ 32 2.6 Tấn công mật khẩu 34 2.6.1 Tấn công dò tài khoản 34 2.6.2 Tấn công tài khoản có mật khẩu yếu 34 2.6.3 Dò mật khẩu SYS. SYSTEM 35 Chương 3: Tổng kết quá trình tìm hiểu tấn công trên CSDL Oracle 37 Tài liệu tham khảo 38 Lời nói Đầu Cơ sở dữ liệu là một trong những ngành được quan tâm nhiều trong khoa học máy tính nói chung và trong công nghệ thồn tin nói riêng. Từ khi có mô hình cơ sở dữ liệu đầu tiên vào những năm 60 đến nay, tuy không phải là chặng đường dài so với các ngành khoa học khác, nhưng với ngành khoa học máy tính và đặc biệt là cơ sở dữ liệu thì đó là thời gian đáng kể. Cơ sở dữ liệu đã trải qua nhiều thế hệ của hệ quản trị cơ sở dữ liệu đã có nhiều ứng dụng trong khoa học và các ngành kinh tế quốc dân. Hệ quản trị cơ sở dữ liệu ORACLE là một trong những hệ quản trị cơ sở dữ liệu lưu trữ thông tin an toàn và chắc chắn đồng thới lại truy cập chính xác, dễ dàng. Cơ sở dữ liệu (CSDL) của các tổ chức, doanh nghiệp luôn là mục tiêu của nhiều cuộc tấn công. Bởi đây là nơi lưu trữ các thông tin về khách hàng và nhiều dữ liệu bí mật khác. Một trong những nguyên nhân khiến cho các CSDL dễ bị tổn thương bởi các tấn công là do các tổ chức, doanh nghiệp chưa có biện pháp bảo vệ đầy đủ cho tài nguyên này. Khi kẻ xấu truy nhập vào dữ liệu nhạy cảm, có thể thực hiện tất cả các công việc để gây mất mát về tài chính hoặc phá hoại danh tiếng của tổ chức, doanh nghiệp. Và sau đây nhóm em xin trình bày đề tài các tấn công vào cơ sở dữ liệu ORACLE. Do còn hạn chế nhiều về thời gian, kiến thức và kinh nghiệm thực tế nên đề tài của nhóm không tránh khỏi những thiếu sót và khuyết điểm. Nhóm thực hiện đề tài rất mong nhận được sự đánh giá, nhận xét của các Thầy, các Cô và sự góp ý của các bạn sinh viên để giúp đề tài này được hoàn thiện hơn, từ đó nhóm chúng em có thể rút kinh nghiệm trong nghiên cứu và công việc sau này. Nhóm chúng em xin chân thành cảm ơn Chương 1: Cơ sở lý thuyết 1.1 Giới thiệu về Oracle Trong quá trình quản lý việc xử lý thông tin là vấn đề phức tạp vì lượng thông tin nhận được ngày một lớn và thường xuyên. Ngày nay có rất nhiều chương trình ứng dụng giúp ta quản lý và lưu trự thông tin dễ dàng. Trong đó có thể kể đến Oracle, là một trong những chương trình ứng dụng, nó có cơ chế bảo mật dữ liệu rất chặt chẽ giúp cho hệ thống hoạt động rất tốt và rất an toàn trong việc cập nhật và truy cập dữ liệu, tránh được việc mất mát dữ liệu, dễ dàng bảo trì và nâng cấp, có cơ chế quyền hạn rõ ràng vì vậy nó được sử dụng ở nhiều tổ chức lớn như ngân hàng, chính phủ…Nó không chỉ có lợi cho những nhà phát triển như dễ cài đặt, dễ triển khai, dễ nâng cấp lên phiên bản mới mà còn thuật lợi cho lập trình viên như viết các Trigger, Package vì trong Oracle còn tích hợp thêm PLSQL là một ngôn ngữ lập trình có cấu trúc ( Structure Language) và đây chính là điểm rất mạnh của Oracle so với các cơ sở dữ liệu khác. Ngoài ra Oracle còn tương tác tốt với nhiều hệ điều hành như Windows , Linux. Oracle là bộ giải pháp được cung cấp bởi công ty Oracle (http:www.oracle.comindex.html ) Đây là một hệ quản trị CSDL có tính bảo mật cao, hỗ trợ tốt các mô hình truy cập dữ liệu tập trung cũng như phân tán. Giải pháp của Oracle bao gồm các sản phẩm sau: Hệ quản trị CSDL Oracle Database được cài đặt trên máy chủ Database Server Oracle Client được cài đặt trên máy trạm cho phép các ứng dụng tại máy trạm truy cập và thao tác với ứng dụng tại máy chủ. Công cụ cho việc thiết kế và quản trị CSDL như Oracle Designer, SQL Plus. PLSQL là ngôn ngữ thủ tục cho được Oracle dùng để xây dựng đối tượng trong Oracle Database.
Trang 1Học Viện Kỹ Thuật Mật Mã
Khoa An Toàn Thông Tin
Đề Tài Tìm Hiểu Các Hình Thức Tấn Công CSDL Oracle
Nhóm thực hiện: Đỗ Anh Thắng
Nguyễn Thị Nga
Lê Quang Long
Lê Thị Linh
Trang 2∗ Cơ sở lý thuyết
∗ Các hình thức tấn công phổ biến vào cơ sở dữ liệu Oracle
∗ Tổng kết
Nội Dung
Trang 3∗ Giới thiệu về Oracle
∗ Quá trình cài đặt Oracle
Cơ Sở Lý Thuyết
Trang 4∗ Oracle là hệ quản trị CSDL có tính bảo mật cao.
∗ Oracle hỗ trợ tốt các mô hình truy cập dữ liệu tập trung cũng như phân tán
∗ Giải pháp của Oracle bao gồm các sản phẩm:
- Hệ quản trị CSDL Oracle Database
- Công cụ cho việc thiết kế và quản trị CSDL như Oracle Designer, SQL Plus
- PL/SQL là ngôn ngữ thủ tục cho được Oracle dùng để xây dựng đối tượng trong Oracle Database
Giới Thiệu Về Oracle
Trang 5∗ 1.Tấn công SQL Injection
∗ 2.Tấn công chèn mã PL/SQL
∗ 3.Tấn công Rootkit Oracle
∗ 4.Tấn công Oracle Listener
∗ 5.Sâu Oracle
∗ 6.Tấn công mật khẩu
Các Hình Thức Tấn Công Phổ Biến CSDL Oracle
Trang 6Định Nghĩa: SQL Injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng vào việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject ( tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp
∗ SQL injection có thể cho phép kẻ tấn công thực hiện thao tác , delete, insert, update…trên cơ sở
dữ liệu của các ứng dụng
Tấn công SQL Injection
Trang 7∗ Không kiểm tra ký tự thoát truy vấn
∗ Xử lý không đúng kiểu
∗ Blind SQL injection
∗ Thay đổi giá trị kiểu truy vấn
∗ Điều kiện lỗi
∗ Thời gian trễ
∗ Một số dạng tấn công thường gặp với ứng dụng Web
Các Dạng Lỗi Thường Gặp Trong Tấn công SQL Injection
Trang 8∗ Đây là dạng lỗi SQL injection xảy ra khi thiếu đoạn mã kiểm tra dữ liệu đầu vào trong câu truy vấn SQL
∗ Kết quả là người dùng cuối có thể thực hiện một số truy vấn không mong muốn đối với cơ sở dữ liệu của ứng dụng
∗ Ví Dụ:
statement = "SELECT * FROM users WHERE name = '" + userName + "';“
Câu lệnh được thiết kế để trả về các bản ghi tên người dùng cụ thể từ bảng người dùng Tuy nhiên, nếu biến userName được nhập chính xác theo một cách nào đó bởi người dùng ác ý, nó có thể trở thành một câu truy vấn SQL với mục đích khác hẳn so với mục đích của tác giả của đoạn mã trên Ví
dụ như biến UserName thành như sau:
a' or 't'='tKhiến câu truy vấn được hiểu như sau:
SELECT * FROM users WHERE name = 'a' OR 't'='t';
Không Kiểm Tra Ký Tự Thoát Truy Vấn
Trang 9Lỗi SQL injection dạng này thường xảy ra do lập trình viên hay người dùng định nghĩa đầu vào dữ liệu không rõ ràng hoặc thiếu bước kiểm tra và lọc kiểu dữ liệu đầu vào
Ví Dụ:
statement:= "SELECT * FROM data WHERE id = " + a_variable + ";“
Ý định của tác giả đoạn mã trên là nhập vào một số tương ứng với trường id - trường số Tuy nhiên, người dùng cuối, thay vì nhập vào một số, họ có thể nhập vào một chuỗi ký tự
Ví dụ, ta thiết lập giá trị của biến a_variable là:
1;DROP TABLE users
Khi đó, nó sẽ thực hiện thao tác xóa người dùng có id tương ứng khỏi cơ sở dữ liệu, vì câu truy vấn hoàn chỉnh đã được hiểu là:
SELECT * FROM DATA WHERE id=1;DROP TABLE users;
Xử Lý Không Đúng Kiểu
Trang 10∗ Lỗi SQL injection dạng này là dạng lỗi tồn tại ngay trong ứng dụng web nhưng hậu quả của chúng lại không hiển thị trực quan cho những kẻ tấn công.
∗ Nó có thể gây ra sự sai khác khi hiển thị nội dung của một trang chứa lỗi bảo mật này
∗ Hậu quả của sự tấn công SQL injection dạng này khiến cho lập trình viên hay người dùng phải mất rất nhiều thời gian để phục hồi chính xác từng bit dữ liệu
Blind SQL Injection
Trang 11∗ Dạng lỗi này khiến kẻ tấn công có thể thay đổi giá trị điều kiện trong câu lệnh truy vấn, làm sai lập sự hiển thị của một ứng dụng trong lỗi này.
∗ Ví dụ:
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1
Sẽ hiển thị một cách bình thường trong khi:
SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;
Thay Đổi Kiểu Giá Trị Truy Vấn
Trang 12∗ Dạng tấn công vượt qua kiểm tra lúc đăng nhập
∗ Dạng tấn công sử dụng câu lệnh SELECT
∗ Dạng tấn công sử dụng câu lệnh INSERT
Một Số Dạng Tấn Công Ứng Dụng Web
Trang 13Trong các trang tìm kiếm người dùng nhập thông tin tìm kiếm như họ tên Đoạn mã thường gặp là:
Dạng tấn công sử dụng câu lệnh SELECT
Trang 14∗ Tương tự như trên, tin tặc có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập vào trường tên tác giả bằng chuỗi giá trị:
∗ Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thực hiện thêm lệnh tiếp theo sau từ khóa UNION nữa Giả sử đoạn mã nhập vào là:
Trang 15∗ PL/SQL injection là một kỹ thuật tấn công khá quan trọng liên quan tới các procedure được lưu trữ trong oracle
∗ người tấn công có thể leo thang đặc quyền từ tài khoản Public tới tài khoản đặc quyền mức DBA
∗ Có thể inject vào các câu lệnh insert, select, delete, update trong các procedure, package, vào các anonymous PL/SQL Blook
Tấn Công Chèn Mã PL/SQL
Trang 16∗ Ẩn Tài Khoản Oracle Rootkit
∗ Ẩn process
∗ Ẩn Database Jobs
∗ Mô tả tấn công Oracle sử dụng rootkit kết hợp với backdoor
Tấn Công RootKit Oracle
Trang 17∗ Backdoor cho phép attacker thực hiện câu lệnh và truy vấn database từ xa và nhận hồi đáp từ server
∗ Attacker thường kết hợp cài backdoor với rootkit để che giấu hoạt động của backdoor
∗ Tạo một chương trình backdoor, sử dụng một chức năng network có sẵn để mở một kết nối tới vị trí của attacker Chương trình sẽ đọc kết nối và thực hiện các câu lệnh attacker gửi tới Sau đó gửi lại kết quả thực hiện của câu lệnh
∗ Để tránh bị phát hiện, kết nối giữa backdoor và attacker có thể được mã hóa hoặc đóng gói theo một cách nào đấy nhằm tránh sự phát hiện của hệ thống IDS, IPS
∗ Backdoor cài đặt trên database server, còn backdoor console chạy trên host của attacker sẽ giao tiếp qua giao thức TCP/IP
Mô Tả Tấn Công Oracle Sử Dụng Backdoor
Trang 18∗ Khai thác thông tin CSDL Oracle qua Listener
∗ Tấn công từ chối dịch vụ
Tấn Công Oracle Listener
Trang 19∗ Listener là một tiến trình mạng của CSDL Oracle
∗ Mô tả vấn đề
Listener được coi là cổng vào cho các kết nối từ xa đến một CSDL Oracle Theo mặc định, Listener lắng nghe trên cổng 1521 (cổng 2483 là cổng đăng ký chính thức mới TNS Listener và 2484 cho TNS Listener
sử dụng SSL)
∗ Nếu Listener "tắt" thì truy cập từ xa vào CSDL sẽ ngừng Nếu trường hợp này xảy ra, ứng dụng
ngừng, tức là tạo ra một cuộc tấn công từ chối dịch vụ
Khai Thác Thông Tin CSDL Oracle qua Listener
Trang 20∗ Khai thác thông tin CSDL Oracle qua Listener
Trang 21∗ Trong trường hợp chúng ta không tìm thấy tài khoản có quyền DBA, nhưng tài khoản OUTLN và BACKUP giữ một quyền cơ bản: EXECUTE ANY PROCEDURE
Trang 22∗ WORM có thể hoạt động ở một trong hai chế độ:
Sun standard compliance mode ( chế độ tiêu chuẩn)
Sun emulation compliance mode ( chế độ thi đua)
Sâu Oracle
Trang 23∗ 1 Dò tài khoản mặc định
∗ 2 Dò tài khoản có mật khẩu yếu
∗ 3 Dò mật khẩu SYS SYSTEM
Tấn công mật khẩu
Trang 24Cảm Ơn Cô Và Các Bạn
Đã Lắng Nghe