1. Trang chủ
  2. » Công Nghệ Thông Tin

Tấn công rootkit trong Oracle (doc)

59 956 5

Đ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

Thông tin cơ bản

Định dạng
Số trang 59
Dung lượng 1,5 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

MỤC LỤC 1 DANH MỤC CÁC HÌNH VẼ 3 DANH MỤC CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT 4 LỜI NÓI ĐẦU 5 CHƯƠNG 1. 6 TÌM HIỂU VỀ ROOTKIT 6 1.1. Hiểu biết chung về mã độc hại(malware) 6 1.2. Khái niệm Rootkit 7 1.2.1. Lịch sử Rootkit 7 1.2.2. Định nghĩa Rootkit 7 1.3. Cách thức hoạt động của Rootkit 8 1.3.1. Chiếm quyền điều khiển. 8 1.3.2. Kỹ thuật Hooking 8 1.4. Phân loại Rootkit 9 1.4.1. Usermode rootkit và kernel – mode rootkit 9 1.4.2. Persistent và nonpersistent rootkit 11 CHƯƠNG 2. 12 TẤN CÔNG ROOTKIT TRONG ORACLE 12 2.1. Một số kiểu tấn công trong Oracle 12 2.1.1. Tấn công SQL injection 12 2.1.2. Hack listener 15 2.1.3. PLSQL injection 17 2.2. Tấn công Rootkit trong Oracle 18 2.2.1. Tìm hiểu một số data dictionary view 19 2.2.2. Khai thác các PLSQL Package 22 2.2.3. Nhiệm vụ của rootkit 29 2.2.4. Cách thức tấn công của rootkit 34 2.2.5. Mô tả tấn công Oracle sử dụng rootkit kết hợp với backdoor 41 KẾT LUẬN 49 TÀI LIỆU THAM KHẢO 50 DANH MỤC CÁC HÌNH VẼ Hinh 1: Tương đồng giữa database và OS 19 Hinh 2:View dba_jobs 20 Hinh 3: View dba_jobs_running 21 Hinh 4: VProcess 21 Hinh 5:VSession 22 Hinh 6: dbms_metadata 23 Hinh 7: dbms_output 25 Hinh 8: dbms_jobs 25 Hinh 9: dbms_sql 26 Hinh 10: Trước khi ẩn user Hacker 30 Hinh 11: Sau khi ẩn user Hacker 31 Hinh 12: vsession trước khi ẩn session 32 Hinh 13:vsession sau khi ẩn session 32 Hinh 14:dba_jobs trước khi ẩn job 33 Hinh 15:dba_jobs sau khi ẩn job 33 Hinh 16:Truoc khi thay đôi binary 35 Hinh 17:Sau khi thay đổi binary. 36 Hinh 18: Đường dẫn thực thi trong Oracle 37 Hinh 19: Trước khi thay đổi đường dẫn thực thi 37 Hinh 20: Tạo view mới 38 Hinh 21: Truy xuất sau khi thay đổi đường dẫn 38 Hinh 22 :Sử dụng PLSQL native 41 DANH MỤC CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT API Application Program Interface ARCn Archive CSDL Cơ sở dữ liệu DB Database DCL Data Control Language DDL Data dictionary Language DML Data Manipulate Language DBWn Database Written DLL Thư viện liên kết động Function Hàm Instance Thành phần logic của DB LGWR Log writer OS Hệ điều hành Package Chứa các procedure, function PGA Private Global Area PLSQL Ngôn ngữ truy vấn có thủ tục Procedure Thủ tục RDBMS Hệ quản trị cơ sở dữ liệu quan hệ Rootkit Chương trình che giấu hành vi của hacker SQL Ngôn ngữ truy vấn SGA System Global Area Table Bảng Tablespace Tập hợp các table, view, index… View Table chứa metadata LỜI NÓI ĐẦU Rootkit trong OS không còn xa lạ với chúng ta. Chúng đã được các kẻ xâm nhập sử dụng để che giấu các dấu vết từ rất lâu. Tuy nhiên, không phải ai cũng biết rằng rootkit còn có thể được sử dụng và đang được các hacker sử dụng trong cơ sở dữ liệu, thường chứa các dữ liệu quan trọng của các công ty, tổ chức. Theo ước tính, khoảng 100 triệu người có thông tin cá nhân nằm trong tầm kiểm soát của tội phạm Internet. Lấy cắp thông tin đã trở thành một nguy cơ chính, thông tin đã trở thành mỏ vàng cho tội phạm. Thông tin cá nhân được chia thành nhiều loại với mức giá khác nhau. Ví dụ, thông tin về địa chỉ, số điện thoại, ngày sinh, số dịch vụ xã hội, số đăng ký băng lái…đều được đặt giá. Rất nhiều cơ sở dữ liệu của các công ty lớn bị xâm phạm. Nhất là các ngân hàng, nhà băng, dịch vụ thẻ thanh toán như CardSystems, Citigroup, Bank of America, DSW Shoe Warehouse… đều đã bị tội phạm nhòm ngó và gây ra thiệt hại nhất định. Oracle là hãng dẫn đầu trong thị trường cơ sở dữ liệu và thường được sử dụng ở các cơ quan, tổ chức lớn. Với khối lượng dữ liệu lớn và quan trọng. Không nghi ngờ gì, Oracle đã trở thành đích ngắm hấp dẫn trong các cuộc tấn công. Oracle database rootkit là hướng tấn công khá mới. Rootkit được cài đặt sau khi đã đột nhập thành công vào một Oracle database, để che giấu mọi dấu vết của cuộc đột nhập, và trở thành tấm bình phong che chắn sự hiện diện của attacker trong database. Người quản trị sẽ khó lòng biết được database của mình có đang bị nhìn ngó hay bị tấn công hay không, dù có sử dụng các công cụ tìm kiếm rootkit. Và vì thế không có biện pháp cải thiện hay áp dụng phương pháp tự bảo vệ, qua một thời gian dài thiệt hại sẽ rất đáng kể. Khi mà cơ sở dữ liệu là một tài nguyên vô cùng quan trọng có ý nghĩa sống còn đối với doanh nghiệp, tổ chức. Chương 1. TÌM HIỂU VỀ ROOTKIT 1.1. Hiểu biết chung về mã độc hại(malware) Thuật ngữ malware là từ viết tắt của malicious software. Malware được tạo với mục đích truy nhập, chỉnh sửa và phá hoại các software khác trên máy tính. Malware có nhiều loại: virus, worms, trojans, backdoor, spyware… và các biến thể khác

Trang 1

MỤC LỤC

1.1 13

DANH MỤC CÁC HÌNH VẼ 13

API 14

Application Program Interface 14

ARCn 14

Archive 14

CSDL 14

Cơ sở dữ liệu 14

DB 14

Database 14

DCL 14

Data Control Language 14

DDL 14

Data dictionary Language 14

DML 14

Data Manipulate Language 14

DBWn 14

Database Written 14

DLL 14

Thư viện liên kết động 14

Function 14

Hàm 14

Instance 14

Thành phần logic của DB 14

LGWR 14

Log writer 14

OS 14

Hệ điều hành 14

Package 14

Chứa các procedure, function 14

PGA 14

Private Global Area 14

PL/SQL 14

Ngôn ngữ truy vấn có thủ tục 14

Procedure 14

Thủ tục 14

RDBMS 14

Hệ quản trị cơ sở dữ liệu quan hệ 14

Rootkit 14

Chương trình che giấu hành vi của hacker 14

SQL 14

Trang 2

Ngôn ngữ truy vấn 14

SGA 14

System Global Area 14

Table 14

Bảng 14

Tablespace 14

Tập hợp các table, view, index… 14

View 14

Table chứa metadata 14

Rootkit trong OS không còn xa lạ với chúng ta Chúng đã được các kẻ xâm nhập sử dụng để che giấu các dấu vết từ rất lâu Tuy nhiên, không phải ai cũng biết rằng rootkit còn có thể được sử dụng và đang được các hacker sử dụng trong cơ sở dữ liệu, thường chứa các dữ liệu quan trọng của các công ty, tổ chức 14

Theo ước tính, khoảng 100 triệu người có thông tin cá nhân nằm trong tầm kiểm soát của tội phạm Internet Lấy cắp thông tin đã trở thành một nguy cơ chính, thông tin đã trở thành mỏ vàng cho tội phạm Thông tin cá nhân được chia thành nhiều loại với mức giá khác nhau Ví dụ, thông tin về địa chỉ, số điện thoại, ngày sinh, số dịch vụ xã hội, số đăng ký băng lái…đều được đặt giá Rất nhiều cơ sở dữ liệu của các công ty lớn bị xâm phạm Nhất là các ngân hàng, nhà băng, dịch vụ thẻ thanh toán như CardSystems, Citigroup, Bank of America, DSW Shoe Warehouse… đều đã bị tội phạm nhòm ngó và gây ra thiệt hại nhất định 15

Oracle là hãng dẫn đầu trong thị trường cơ sở dữ liệu và thường được sử dụng ở các cơ quan, tổ chức lớn Với khối lượng dữ liệu lớn và quan trọng Không nghi ngờ gì, Oracle đã trở thành đích ngắm hấp dẫn trong các cuộc tấn công 15

Oracle database rootkit là hướng tấn công khá mới Rootkit được cài đặt sau khi đã đột nhập thành công vào một Oracle database, để che giấu mọi dấu vết của cuộc đột nhập, và trở thành tấm bình phong che chắn sự hiện diện của attacker trong database Người quản trị sẽ khó lòng biết được database của mình có đang bị nhìn ngó hay bị tấn công hay không, dù có sử dụng các công cụ tìm kiếm rootkit Và vì thế không có biện pháp cải thiện hay áp dụng phương pháp tự bảo vệ, qua một thời gian dài thiệt hại sẽ rất đáng kể Khi mà cơ sở dữ liệu là một tài nguyên vô cùng quan trọng có ý nghĩa sống còn đối với doanh nghiệp, tổ chức 15

15

TÌM HIỂU VỀ ROOTKIT 16

Hiểu biết chung về mã độc hại(malware) 16

Thuật ngữ malware là từ viết tắt của malicious software Malware được tạo với mục đích truy nhập, chỉnh sửa và phá hoại các software khác trên máy tính Malware có nhiều loại: virus, worms, trojans, backdoor, spyware… và các biến thể khác xuất hiện từng ngày 16

Mục tiêu của malware có thể là thông tin cá nhân, dữ liệu, tài nguyên máy tính… Bằng cách ghi dấu thói quen lướt Web của bạn, chúng biết những vấn đề bạn quan tâm và những quảng cáo mà sẽ phù hợp với ý định của bạn Những malware này cho phép các công ty quảng cáo thiết kế các pop up nắm bắt mục đích của từng cá nhân Xa hơn nữa, malware có thể điều khiển nội dung những gì được hiển thị trên trình duyệt của bạn Đó là hijacking Các nội dung tìm kiếm và hiển thị của bạn có thể bị hijack sang trang mà malware chỉ định Điều này có thể đưa đến nhiều phiền toái khi các pop up liên tục nhảy ra, và tệ hơn nữa nó có thể chứa các virus, worm mà khi vô tình kích phải chúng sẽ ngay lập tức xâm nhập vào máy tính của bạn 16 Mục tiêu thứ ba, là thông tin cá nhân Những thông tin dùng để đăng nhập vào tài khoản ngân hàng, chuyển tiền, rút tiền Nếu bạn dùng password, hacker có thể dùng chương trình giải mã mật khẩu Hoặc nó có thể giả một chương trình an ninh, dụ bạn cài vào mà không biết trong đó có thể có chương trình keylogger, spyware… sẵn sàng lấy cắp thông tin của bạn Cuối cùng, hacker sẽ lợi dụng tài nguyên hệ thống vào

Trang 3

những mục đích như tấn công hệ thống khác, ẩn nấp sau hệ thống của bạn nhằm che giấu hành tung của mình Để thực hiện được các mục đích này, malware sẽ thực hiện

dễ dàng hơn nếu có sự trợ giúp của rootkit Vì thế các malware đầu tiên sẽ cài đặt rootkit vào máy, tới lượt mình rootkit sẽ che giấu hành vi của malware Thực tế, rootkit

là xấu hay tốt do mục đích mà nó được sử dụng 16 Khái niệm Rootkit 17

từ kit- một tập các công cụ để che giấu và chiếm quyền 17 Việc phát hiện Sony Rootkit ( rootkit quản lí bản quyền số) bởi Mark Russonovich của Sysinternal đã khiến rootkit được quan tâm một cách đặc biệt và nhiều người đã bắt đầu tìm hiểu hoạt động của nó Cho tới sự kiện đó, rootkit chỉ là một cái gì đó khêu gợi

sự tò mò, hơn là một hiểm họa cận kề Sự kiện Sony Rootkit xảy ra ngày 31/10/2005

đã đưa rootkit thành trung tâm chú ý Nó cũng chứng tỏ, hãng đã nghiên cứu và phát triển kỹ thuật rootkit qui củ Sau sự kiện này, Sony đã phải tiến hành gỡ bỏ rootkit trên các đĩa CD và tốn khoản bồi thường không ít 17

Sự kiện này được cho là trước sau gì cũng xảy ra, khi mà các nhà cung cấp bảo mật đưa ra nhiều biện pháp để chống lại các kiểu nguy cơ có thể, thì những người tạo malware cũng sẽ tương ứng đáp lại bằng các kỹ thuật ăn cắp và tinh ranh hơn Bằng cách sử dụng rootkit và khả năng lén lút của nó, những hacker máy tính đã tìm ra cách mới và hiệu quả để tấn công Các chương trình che giấu và rootkit cho thấy một nguy

cơ cận kề về an ninh mạng Thực tế, ngày 6/12/2005 tạp chí eweek đã công bố rằng có tới 20% malware bị phát hiện trên Windows XP SP2 là các rootkit Một số liệu sau đó vào ngày 6/12/2006 cũng ghi nhận rằng tỉ lệ rootkit trong số malware là 14%, trong khi tại thời điểm của sự kiện Sony Rootkit con số đó là 8% 17

1.1.2 Định nghĩa Rootkit 17

Rootkit là một chương trình được thiết kế để che giấu không chỉ chính nó mà còn các thành phần liên quan khác như process, file, folder, registry keys, ports và driver Rootkit có thể có mục đích tốt whitehat (nhưng vẫn tiềm ẩn nguy cơ mất an toàn) hay mục đích xấu – blackhat Các rootkit độc hại thường dùng cho việc xâm nhập và duy trì điều khiển từ xa một cách bất hợp pháp Rootkit độc hại che giấu các malware,

malwware sẽ cài đặt các backdoor cho phép hacker truy nhập tới máy bị điều khiển 17 Rootkit cho thấy một lỗ hổng cơ bản của hệ điều hành Khó mà biết được tính toàn vẹn của hệ thống tới đâu, hay độ tin cậy các bản báo cáo, các kết quả quét mã độc Chúng

ta sẽ không thể chắc chắn rằng máy tính của mình không đang chứa chấp những mã độc hại ngấm ngầm hoạt động và tác hại của chúng 18 Cách thức hoạt động của Rootkit 18

Sự xuất hiện của Rootkit trên máy tính hay mạng cho thấy khả năng bị vi phạm của các hệ thống mà bạn phải làm việc và tin tưởng và đó cũng là lỗ hổng an ninh lớn nhất Không nghi ngờ gì nữa, rootkit có khả năng quanh quẩn ở đâu đó để thực hiện những nhiệm vụ mà nhờ đó nó được tạo ra Vậy làm thế nào rootkit có thể lợi hại như vậy? Đó

là nhờ lợi dụng tính mềm dẻo và linh hoạt của kiến trúc Windows Phần này chúng ta sẽ tìm hiểu cách thức ẩn nấp và hoạt động của Rootkit 18

1.1.3 Chiếm quyền điều khiển 18

Bất kì khi nào user hay một chương trình nào truy vấn hệ thống, kết quả trả về sẽ được mặc định tin tưởng không gợn chút nghi vấn Rootkit lợi dụng sự tin tưởng cơ bản này Đầu tiên nó phải chiếm được quyền quản trị hệ thống để có thể điều khiển hệ thống làm gì cho nó Vì thế chiếm quyền admin là một bước vô cùng quan trọng và quyết định 18

1.1.4 Kỹ thuật Hooking 18

Là kỹ thuật mà Rootkit sử dụng để thay đổi đường dẫn thực thi của hệ điều hành- nó chặn các lời gọi hệ thống và điều chỉnh kết quả sao cho không có dấu vết gì về sự tồn

Trang 4

tại của nó Hook sẽ chuyển hướng các chương trình bình thường, sang các hàm của rootkit thay vì các hàm của hệ thống Cả kernel mode và user mode rootkit đều sử dụng kỹ thuật hooking để lọc các kết quả trả về bởi OS và giấu đi sự tồn tại của nó Các chương trình phân tích và quét sẽ không phát hiện ra thông tin về sự tồn tại của nó trong Registry, cũng như các port mà rootkit sử dụng Đó là vì các chương trình này dựa trên thông tin lấy từ OS Chúng ta sẽ không phát hiện được rootkit thông qua các công cụ như Task Manager, windows explorer hay regedit Windows sử dụng các table

để lưu trữ và ghi dấu các thông tin quan trọng Các table này có thể bị hook, thay đổi

và bẻ gẫy bởi rootkit User mode và kernel mode rootkit đều sử dụng kỹ thuật hook và mỗi loại bị hạn chế bởi những gì mà chúng có thể hook do phạm vi hoạt động của chúng User mode rootkit chỉ có thể hook các table trong phạm vi không gian địa chỉ dành cho user (các bảng IAT, EAT) hoặc có thể chèn các jump vào API mức user để thay các system call sang function của rootkit 18

Có hai kiểu hook là priviledge hook và unpriviledged hooks User mode rootkit là các unpriviledge hook, trong khi kernel mode rootkit là priviledge hook Ở mỗi kiểu hook khác nhau về quyền hệ thống đều sử dụng kỹ thuật hook giống nhau Kỹ thuật hooking API: user mode rootkit sẽ chặn các lời gọi hàm API và thay đổi địa chỉ API trong IAT thuộc tiến trình của user, sau đó trỏ tới rootkit function thay vì Windows API functions.

Cả user mode và kernel mode rootkit sử dụng API hooking để đảm bảo OS chỉ trả về kết quả đã được sàng lọc, vốn sẽ bỏ rơi bất kì sự tiết lộ nào về rootkit hay tung tích của

nó User mode rootkit chỉ có thể chỉnh sửa table nào thuộc về chương trình user Mỗi chương trình user có IAT riêng chứa thông tin về các function mà kernel sẽ thực hiện cho nó Để hiệu quả, user mode rootkit phải tìm cách để thay đổi table của mọi user program và điều khiển bất kỳ chương trình nào sắp sửa chạy để nó có thể hook API tương ứng của chương trình đó Rootkit không nhất thiết phải hook mọi API, chỉ những API nào có thể liên quan tới nó Ví dụ nó có thể hook API của Task Manager dùng để liệt kê các process hoặc API mà dùng bởi Windows Explorer để liệt kê danh sách các file, folder Và bởi vì nó phải hook cùng một API của mọi tiến trình đang được kích hoạt nên user mode rootkit ít hiệu quả bằng kernel mode rootkit Kernel mode rootkit chỉ cần hook một cấu trúc mà tất cả user program sử dụng 19 Phân loại Rootkit 19 Rootkit được chia thành hai loại– user mode và kernel mode rootkit, phụ thuộc vào phạm vi ảnh hưởng và liệu chúng chỉ tồn tại trong bộ nhớ hay sau khi khởi động

lại( được ghi lên ổ đĩa) persisten và non-persistent rootkit 19

1.1.5 User-mode rootkit và kernel – mode rootkit 19

Đây là rootkit có cơ chế điều khiển và phạm vi ảnh hưởng lên hệ điều hành khác nhau

Cơ chế điều khiển thông qua đặc quyền mà nó giành được Đặc quyền càng lớn, phạm

vi ảnh hưởng càng tăng 19 Bất kể là chế độ nào đi nữa, thì mọi rootkit đều dựa trên cơ sở: các chương trình giao tiếp với nhau nhờ các lời gọi hàm Tùy vào mức đặc quyền của chương trình, nó có thể tạo lời gọi trực tiếp tới kernel hay gián tiếp qua một bên xử lí thứ ba đứng giữa nó và kernel Hay người ta gọi là User mode và kernel mode 20 Rootkit mức user, là mức đặc quyền thấp nhất, nó phải sử dụng giao diện ứng dụng chương trình API để gửi yêu cầu tới hệ thống Các lời gọi này sẽ thông qua thư viện liên kết động mức user (DLL) để được chuyển thành thông điệp mà kernel có thể hiểu Thực

tế thì chương trình mức user không tự chứa tất cả các khả năng xử lí, nó sẽ phải dùng tạo các system call tới kernel Ví dụ, khi user click nút OK Windows chuyển thông tin

đó thành một system call để hệ thống xử lí Ngôn ngữ mà Window cung cấp để thực hiện giao tiếp giữa kernel và chương trình mức user gọi là API Để vận hành tốt hơn, mỗi chương trình user tự tạo một bảng riêng chứa địa chỉ của tất cả API hoặc system function mà nó sẽ cần gọi tới Bảng đó được gọi là IAT ( import address table) Gián tiếp liên lạc với kernel làm hạn chế mức ảnh hưởng của user mode rootkit Nó chỉ có thể chạy trong một ứng dụng nhất định, với một số user nhất định Nó có thể bị phát hiện bởi các chương trình phát hiện rootkit Lợi điểm của nó là dễ tạo, không làm hệ thống bị treo hay gặp sự cố Nhưng để có kết quả nhất định, user mode rootkit còn khá nhiều việc phải làm 20

Trang 5

Kernel mode rootkit: kernel là phần mềm tương ứng với đơn vị xử lí trung tâm- bộ não của hệ điều hành, là thành phần căn bản Kernel duy trì và điều khiển nhiều tài nguyên quan trọng, và các hàm như thông tin bộ nhớ, an ninh, lập lịch xử lí, giao tiếp giữa phần cứng và phần mềm Kernel vì thế có phạm vi ảnh hưởng toàn bộ hệ thống, phần cứng và tất cả các ứng dụng Tất cả các chương trình đều phải tương tác với kernel theo một cách nào đó Và nếu rootkit thao túng được kernel, nó sẽ ở vị trí điều khiển

tất cả 20

Không giống user mode rootkit hoạt động ở Ring 3, kernel mode rootkit hoạt động ở Ring 0, tương tác trực tiếp với kernel Kernel mode rootkit sẽ cài đặt một device driver để lấy quyền điều khiển mức kernel Sau đó, rootkit driver sẽ chuyển hướng các system function call sang mã lập trình của nó để thi hành 20

1.1.6 Persistent và non-persistent rootkit 21

Một khía cạnh để phân loại rootkit nữa là khả năng tồn tại của nó sau khi hệ thống khởi động 21

Persistent rootkit: để có thể tồn tại sau khi hệ thống khởi động rootkit phải thay đổi được nội dung ổ cứng Rootkit sẽ chèn một mục autostart vào Registry, nhờ đó nó được load vào bộ nhớ và tự động thực thi mỗi lần máy tính khởi động Dù các thay đổi vật lí làm tăng khả năng bị phát hiện nhưng vẫn rất nhiều tiện ích hệ thống cũng như chương trình quét malware lại bỏ qua rootkit 21

Non-Persistent rootkit: chỉ tồn tại trên bộ nhớ và mất đi khi hệ thống khởi động lại Các chương trình mà bỏ qua việc quét các nơi lưu trữ vật lí sẽ không phát hiện ra rootkit này Non-persistent rootkit có vẻ như ít đe dọa tới những ai mà việc khởi động lại máy tính là thường xuyên Nhưng đối với một mạng server- với hàng trăm máy tính client, việc reboot thường rất hiếm Các rootkit nằm trên bộ nhớ thường lợi dụng điểm này, hơn nữa, rootkit kiều này không để lại manh mối vật lý nào để có thể bị phát hiện 21

22

TẤN CÔNG ROOTKIT TRONG ORACLE 22

Một số kiểu tấn công trong Oracle 22

1.1.7 Tấn công SQL injection 22

1.1.8 Hack listener 25

1.1.9 PL/SQL injection 27

Tấn công Rootkit trong Oracle 28

Oracle database và OS khá tương đồng với nhau về mặt cấu trúc Cả database và OS đều có user, process, job, executable và symbolic link Vì vậy, hacker có thể lợi dụng sự tương đồng này để triển khai các rootkit cũng như các mã độc khác như virus, từ phạm vi của OS sang lãnh địa của Oracle database 28

Một số tương đồng về command và object giữa Oracle và OS *Nix 28

Thông thường có một thủ thuật của rootkit OS thế hệ đầu khi ẩn một tài khoản Lệnh ở trong OS *Nix như ps, who và top đã bị thay thế bằng phiên bản của trojan, liệt kê tất cả trừ tài khoản của kẻ xâm nhập Hướng tiếp cận này cũng có thể được áp dụng đối với DB Rootkit database cũng cần che giấu các hành tung của nó, cụ thể là các process, job, login Bằng cách tác động vào nơi sẽ lưu trữ và cung cấp các thông tin này, cũng như tác động vào cách thức truy xuất các thông tin này Oracle lưu trữ thông tin về user trong các base table và các data dictionary view là sys.user$, v$pwfile_users… Vì vậy attacker cần can thiệp vào source code của các view này 29

Đầu tiên, chúng ta thử tìm hiểu một số data dictionary view mà cung cấp thông tin về user cũng như thông tin về các tiến trình có liên quan tới hoạt động của user trong DB Và tìm hiểu một số PL/SQL package sẵn có của Oracle được sử dụng cho việc tấn công của attacker 29

1.1.10 Tìm hiểu một số data dictionary view 29

View dba_jobs lưu thông tin về tất cả các jobs trong database Thông tin về các cột trong view này: 29

Trang 6

Column 29

Comments 29

Job 29

Xác định một job Không thể thay đổi nó dù thực hiện import hay export nhiều lần 29

Log_user 29

Khi user xác nhận job thì sẽ được ghi lại 29

Priv_user 29

User có quyền mặc định được áp dụng cho job này 29

Schema_user 29

Schema mặc định được gán cho job khi thực thi 29

Last_date 29

Thời điểm gần nhất mà job được thực hiện thành công 29

Last_sec 29

Tương tự như last_date 29

This_date 29

Thời điểm mà job được bắt đầu thực hiện (là null nếu không thực thi) 29

This_sec 29

Tương tự this_date Thời điểm lần thực thi cuối cùng được bắt đầu 29

Next_date 30

Thời điểm kế tiếp mà job sẽ được thực hiện 30

Next_sec 30

Tương tự next_date Thời điểm được thực hiện kế tiếp 30

Total_time 30

Tổng thời gian sử dụng hệ thống của job, tính theo giây 30

Broken 30

Nếu là y, nghĩa là không có một cố gắng chạy job này Nếu là N có một cố gắng để chạy job 30

Interval 30

Lập lịch chạy job lần tiếp theo 30

Failures 30

Số lần khởi động job và không thành công kể từ lần thành công gần nhất 30

What 30

Body của block anonymous PL/SQL mà job này thực hiện 30

Nls_env 30

Tham số phiên mô tả biến môi trường nls của job 30

Misc_env 30

Tham số phiên khác áp dụng cho job 30

Instance 30

ID của instance chạy hoặc có thể chạy job Mặc định là 0 30

View Dba_jobs_running liệt kê thông tin về tất cả các job đang chạy 30

Column_name 30

Comments 30

Failures 30

Số lần job được khởi hoạt và thất bại kể từ lần thành công sau cùng 30

Instance 30

ID của instance chạy job 30

Job 30

Trang 7

ID của job đang chạy 30

Last_date 30

Ngày gần nhất mà job chạy thành công 30

Last_sec 30

Tương tự như last_date, đó là lần thực hiện thành công gần nhất 30

SID 30

ID của tiến trình đang thực hiện job 30

This_date 30

Ngày mà job bắt đầu thực hiện (thường là null nếu không đang thực hiện) 30

This_sec 30

Giống như this_date Đó là lần thực hiện thành công cuối cùng 30

Lưu thông tin về các process hiện tại đang chạy 30

Cột 30

Mô tả 30

Addr 30

Địa chỉ của process 30

Pid 30

Định danh của process 30

Spid 31

Định danh trên OS của process 31

Username 31

Process được chạy bằng tài khoản OS nào 31

Trace ID 31

Định danh file trace 31

Background 31

Nhận diện process có phải tiến trình background không 31

Latchwait 31

Địa chỉ của Latch mà process đang đợi 31

Latchspin 31

địa chỉ của latch mà process đang spinning trên 31

Pga_used_mem 31

Vùng nhớ PGA mà process sử dụng 31

Pga_alloc_mem 31

Vùng nhớ PGA hiện thời được cấp phát cho process 31

V$session liệt kê các thông tin về mỗi session hiện tại Rootkit cần tìm cách che giấu thông tin về các process ở trong các view này Một số thông tin trong view v$sessions: 31

Column 31

Nội dung 31

Saddr 31

Địa chỉ session 31

Sid 31

Định danh session 31

Serial# 31

Số serial của session Dùng để xác định duy nhất một object của session Đảm bảo rằng các câu lệnh được thực thi đúng đối tượng khi session kết thúc và một session khác dùng ID lại định danh của session 31

Paddr 31

Trang 8

Địa chỉ của process sở hữu session 31

Event 31

Tài nguyên hoặc sự kiện mà session đang đợi 31

Status 31

Trạng thái của session(active, inactive, killed, cached…) 31

Logon_time 31

Thời gian logon 31

Username 31

Tên user 31

Command 31

Câu lệnh đang xử lý 31

Type 31

Kiểu session 31

1.1.11 Khai thác các PL/SQL Package 31

Package là một schema object nhóm các kiểu, biến và chương trình PL/SQL có liên quan Package thường có hai phần, phần đặc tả (spec) và phần thân (body), đôi khi phần body không cần thiết Phần đặc tả là phần giao tiếp của package Nó khai báo các kiểu, các biến, hằng, ngoại lệ, con trỏ và các chương trình con mà bên ngoài có thể tham chiếu tới Phần body định nghĩa các truy vấn cho con trỏ và mã cho các chương trình con (các procedure, function…) Phần spec được coi là phần hộp trắng, phần body là hộp đen Có thể debug, thay đổi phần body mà không ảnh hưởng tới phần spec 31

Để tạo package spec, dùng lệnh: Create package Lệnh Create package body định nghĩa phần body Phần spec sẽ được public với tất cả các procedure và code khác bên ngoài package Phần body chứa các thực thi và các khai báo riêng, không được hiển thị đối với bên ngoài 32

Utl_tcp là package cơ bản nhất có thể truy xuất network UTL_TCP có thể tạo các kết nối TCP tới server khác, gửi và nhận data Hơn nữa, không có giới hạn trong định dạng của data này, tức là nó có thể ở dạng binary hoặc text-based Nó cho phép rdbms giao tiếp với bất kỳ kiểu server nào trên network mà nó cần, web server hay RPC server Đây là một package rất hữu ích cho attacker Ví dụ, attacker có thể dựa vào utl_tcp để tạo một chương trình quét cổng TCP 38

Các function cơ bản: 38

Open_connection 38

Mở một socket tới host 38

Read_raw 38

Đọc dữ liệu binary từ socket 38

Write_raw 38

Viết dữ liệu binary tới socket 38

Read_text 38

Đọc dữ liệu ASCII từ socket 38

Write_text 38

Viết dữ liệu ASCII tới socket 38

1.1.12 Nhiệm vụ của rootkit 38

User Oracle được lưu trong table SYS.USER$ cùng với database role User có flag TYPE#=1 và role có flag TYPE#=0 Để việc truy nhập dễ dàng hơn, và đảm bảo tính tương thích với các phiên bản trước, Oracle đưa ra 2 view là DBA_USERS và ALL_USERS thông qua public synonym Hầu hết các DBA và các công cụ sử dụng các view này để truy nhập table SYS.USER$ Vì vậy để ẩn đi các user muốn che giấu cần sửa các view source: 38

AND U.NAME !=’tên cần ẩn’ 38

39

Trang 9

Mọi thay đổi trên view thuộc về SYS yêu cầu quyền SYSDBA( Cần có một mục về các tài khoản và quyền hạn trên Oracle) Sau đó truy vấn trở lại view trên sẽ không thấy

xuất hiện tài khoản đó: 39

39

40

40

Thông thường attacker sẽ chọn các username khó phát hiện(ví dụ MTSYS) và một câu điều kiện không dễ nhận ra( ví dụ AND U.USER#<> 17, trong đó 17 là chỉ số của user mới được tạo) Vì thế Developer hoặc các DBA không nên dựa vào view, mà nên truy nhập các table căn bản như SYS.USER$ 40

Oracle process được chia làm 3 loại: 40

User process: Bắt đầu khi database user yêu cầu kết nối tới Oracle server 40

Server process: Xử lý các yêu cầu từ user process kết nối tới instance 40

Background process: Là các tiến trình tương tác lẫn nhau và với hệ điều hành để quản lý bộ nhớ, quản lý các tín hiệu nhập xuất để ghi dữ liệu ra đĩa, và một số nhiệm vụ khác Nó được bắt đầu khi Oracle instance hoạt động 40

V$session trước và sau khi ẩn tiến trình của attacker 40

41

41

Các tiến trình được lưu trong view v$session nằm ở schema Sys Ngoài ra thông tin về mỗi session còn xuất hiện trong gv_$sessions, flow_sessions, v_$process 41

Job là những tác vụ cần được thực hiện tại một thời điểm nào đó và có thể lặp lại Lập lịch chạy job giúp tự động hóa công việc quản trị Ví dụ lập lich update, import, export dữ liệu Thông tin về tất cả các job có trong dba_jobs, sys.job$, dba_jobs_running 41

Giả sử hacker cần tạo một job để chạy tại một thời điểm nào đó ví dụ export dữ liệu, thì cần là phải ẩn các job này Để job này không hiển thị khi truy vấn dba_jobs thì cần phải giấu đi priv_user: quyền của user mà job được sử dụng Do chỉ có job do tài khoản hacker tạo sẽ chạy bằng quyền của hacker 41

Dba_jobs trước và sau khi ẩn job của attacker 42

42

42

Trong quá trình ghi log, các thông tin được log trong listener.log của TNS-listener(nếu kích hoạt logging) Gỡ bỏ các dấu vết có trong các file này là điều cần thiết với attacker Oracle đưa ra nhiều cách để thực hiện điều này Cách dễ nhất là dùng package utl_file Package này cho phép đọc (UTL_FILE.GET_LINE), viết (UTL_FILE.PUT_LINE) hay xóa (UTL_FILE.REMOVE) file Log file không bị cấm(lock) bởi TNS listener, nhờ đó có thể thay đổi nội dung ở tại thời điểm đang hoạt động (runtime) 42

Các dấu vết của một attack cũng lưu trong bộ nhớ của database(SGA, System Global Area) Mọi câu lệnh SQL đã thực thi bởi mỗi user cũng có trong view V_$SQLAREA Để gỡ các thông tin này từ SGA, xóa shared pool bằng lệnh sau: 42

Alter system flush shared_pool; 42

Nhớ rằng xóa share pool sẽ ảnh hưởng tới hiệu suất của database, và user có thể sẽ than phiền về tốc độ truy nhập 42

Mọi transaction tạo thay đổi lên database được lưu trong Redo-Log file và cũng lưu trong archive log, nếu database chạy ở chế độ archive log mode Attacker cũng sẽ phải xóa các dấu vết này Đầu tiên chạy lệnh để database switch một redo-log: 43

Alter system switch logfile; 43

Sau khi cài đặt rootkit, rootkit cần switch các redo log file trong tất cả redo log group để nội dung trong đó bị thay thế Nếu database có thiết lập chế độ archive log, cần phải xóa tất cả archive file gần nhất bằng package utl_file.fremove 43

1.1.13 Cách thức tấn công của rootkit 43

Trang 10

Oracle lưu các thông tin về username, job, process trong các data dictionary view Và người quản trị sẽ truy vấn các view này để có được thông tin về cơ sở dữ liệu mình quản lý, các process, các job đang hoạt động Cụ thể, thông tin về user có trong

sys.user$, dba_users, all_user, 43

Thông tin về 43

Có trong các table, view 43

User 43

sys.user$, dba_users, all_users 43

Job 43

dba_jobs, dba_jobs_running, sys.job$ 43

Process 43

v$session, gv_$process, flow_session, v_$process 43

Đầu tiên xem source của view trong v$fixed_view_definition như sau: 43

Select view_definition From v_$fixed_view_definition where view_name = ‘V$PWFILE_USERS’; 43

Ta được: 43

select USERNAME , SYSDBA , SYSOPER from GV$PWFILE_USERS where inst_id = USERENV 43

('Instance') 43

Nhưng vấn đề là view GV$PWFILE_USERS là fixed view (view cố định) Oracle user bao gồm cả Sysdba không thể thay đổi source code của nó Attacker sẽ tìm cách nào đó thay đổi source code của view này để che giấu tài khoản sysdba Hacker của hắn: 43

Select view_definition from v$fixed_view_definition where view_name = ‘GV$PWFILE_USERS’; 44

Kết quả: 44

VIEW_DEFINITION 44

- 44

select inst_id,username,decode(sysdba,1,'TRUE','FALSE'), decode(sysoper,1,'TRUE','FALSE') from x$kzsrt where valid=1 and username != 'INTERNAL' 44

Attacker sẽ muốn thay đổi source code của gv$pwfile_users thành: 44

select inst_id,username,decode(sysdba,1,'TRUE','FALSE'), decode(sysoper,1,'TRUE','FALSE') from x$kzsrt where username not in ('INTERNAL', ‘HACKER’) 44

Vì thế, attacker sẽ phải tác động tới phần binary để source của fixed view mới bị ảnh hưởng Sử dụng công cụ như hexeditor search hoặc tương tự để tìm chuỗi ‘GV$PWFILE_USERS’ 44

44

45

Sau đó, copy binary đã edit vào file ban đầu 45

Đối với việc thay đổi đường dẫn thực thi, điều mà chúng ta quan tâm là cách thức DB Oracle phân giải tên các object được truy vấn như thế nào Trong rootkit OS, đường dẫn tới các lệnh *NIX như ps, who, top bị sẽ bị thay đổi Trong database, một phiên bản bị trojan sẽ được gọi thay vì phiên bản ban đầu Hướng tiếp cận này có lợi thế đối với attacker, việc kiểm tra mã checksum cũng không phát hiện được thay đổi này Ví dụ, xem xét truy vấn: 45

Select user_name from DBA_USERS 45 Oracle sẽ phân giải tên object user_name này như thế nào? Đầu tiên Oracle kiểm tra xem liệu có một local object(table hay view) là DBA_USERS Nếu có, object này được dùng cho query Nếu không, Oracle tiếp tục tìm một private synonym có tên như vậy Nếu không có nó sẽ kiểm tra một public synonym Dựa trên cấu trúc của đường dẫn thực thi của Oracle, sẽ có một số cách có thể cho việc thi hành một rootkit như sau: .45

Trang 11

- Tạo một local object mới với tên giống với trong user schema 46

- Tạo một object mới tham chiếu tới object ban đầu( view hay table) hoặc một object mới chứa bản sao của data trong object ban đầu Bảng DBA_USERS nên được cập nhật với một trigger trên SYS.USER$ 46

- Tạo một private synonym và một local object mới 46

- Chỉnh sửa một public synonym và tạo một local object mới 46

46

Tạo view mới system.all_users2: 47

47

Sau đó, tạo một private synonym system.all_users cho system.all_users2: 47

Create synonym system.all_users for system.all_users2; 47

Khi đó, truy xuất tới all_users, thông tin sẽ xuất phát từ view mới được tạo trên 47

47

Điểm bất lợi của ba phương pháp đầu là chỉ schema của người sở hữu bị ảnh hưởng bởi các thay đổi này Attacker phải tạo các object khác nhau cho các tài khoản admin khác nhau Hầu hết attacker sẽ dùng cách thứ 4 vì view nguyên bản không bị sửa đổi và nó áp dụng với mọi tài khoản ngoại trừ SYS 48

Các source code của package dễ bị chỉnh sửa Hầu hết các package do Oracle tạo ra đều được wrap và bảo vệ không bị chỉnh sửa Đây chính là lỗ hổng mà rootkit sử dụng để hoạt động 48

Thông thường, sau khi tạo một thủ tục lưu trữ, có thể truy nhập mã nguồn thông qua bảng SOURCE, như sau: 48

SQL> SELECT text FROM USER_SOURCE 48

SQL> WHERE name = 'WRAPTEST' order by line; 48

Kết quả: 48

PROCEDURE wraptest IS 48

TYPE emp_tab IS TABLE OF emp%ROWTYPE INDEX BY PLS_INTEGER; 48

all_emps emp_tab; 48

BEGIN 48

SELECT * BULK COLLECT INTO all_emps FROM emp; 48

FOR i IN 1 10 LOOP 48

DBMS_OUTPUT.PUT_LINE('Emp Id: ' || all_emps(i).empno); 48

END LOOP; 48

END; 48

Làm thế nào để tránh điều này? Nhiều lập trình viên Oracle không load các procedure này vào database mà đặt nó vào một file SQL trên server và thực hiện từ xa Bất kì ai có thể truy nhập tới server sẽ đọc được file này, nhưng bằng cách này bạn cũng đã phần nào hạn chế được truy nhập theo ý mình Còn trong trường hợp, nếu code để ở database, nó nên được wrap thành một hoặc một phần của package 48

Wrapping là một phương pháp thay đổi mã PL/SQL dạng rõ thành các kí tự mà chỉ Oracle đọc được Như vậy, nó vẫn được biên dịch và thực hiện như bình thường, mà vẫn được bảo vệ an toàn Nhưng hacker có thể dùng các công cụ wrap và unwrap để sửa đổi lại mã các procedure, package với các phiên bản Oracle không sử dụng checksum 48

1.1.14 Mô tả tấn công Oracle sử dụng rootkit kết hợp với backdoor 50

Để lấy dữ liệu từ database, cách thức phù hợp nhất là kết hợp rootkit database và backdoor database 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 rõ ràng không muốn các hành vi của mình bị DBA phát hiện, vì vậy attacker thường kết hợp cài backdoor với rootkit để che giấu hoạt động của backdoor 50

Trang 12

Ở đây chúng ta sẽ 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 Chương trình backdoor có thể được lập lịch, sử dụng chức năng job để nếu kết nối bị mất hoặc database instance bị restart thì attacker vẫn có thể kết nối tại thời điểm sau đó Để 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 51 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 Backdoor console lắng nghe trên một TCP port xác định trước, đợi kết nối từ backdoor 51 Chúng ta sẽ tạo một các rootkit và backdoor bằng mã PL/SQL 51

Mã này sẽ tạo một function để chỉnh sửa data dictionary view Dba_jobs,

dba_jobs_running, Ku$_job_view để che giấu backdoor job Function này có thể được inject vào bất kỳ lỗ hổng SQL injection nào 51 Code ẩn connection giữa backdoor và backdoor console: 51 Code ẩn connection giữa backdoor và backdoor console trong sys.dba_jobs: 51 Code ẩn connection giữa backdoor và backdoor console trong sys.dba_jobs_running: 52 Code ẩn connection giữa backdoor và backdoor console trong sys.ku$_job_t: 52 Database được coi là những tài sản có giá trị nhất của một công ty Nếu database không hoạt động, công ty đó cũng không thể thực hiện các giao dịch, và chúng ta có thể thấy thiệt hại sẽ được tính theo từng giờ không hoạt động của database DB là phần trong cùng của hệ thống, bao bọc phía ngoài nó có thể là web application,

internal networks, partner network, và cũng là từng ấy điểm để có thể truy nhập vào database Và cho dù OS và network được đảm bảo an toàn thì database vẫn có thể bị tấn công qua các lỗ hổng tràn bộ đệm, SQL injection, đoán password, rootkit,

backdoor… Vì vậy việc đảm bảo an toàn cho DB (bao gồm đảm bảo tính bí mật, toàn vẹn và sẵn sang của dữ liệu) cũng quan trọng và cần thiết không kém gì an toàn cho

OS hay các ứng dụng khác 58

Trang 13

1.1.

DANH MỤC CÁC HÌNH VẼ Hinh 1: Tương đồng giữa database và OS 19

Hinh 2:View dba_jobs 20

Hinh 3: View dba_jobs_running 21

Hinh 4: V$Process 21

Hinh 5:V$Session 22

Hinh 6: dbms_metadata 23

Hinh 7: dbms_output 25

Hinh 8: dbms_jobs 25

Hinh 9: dbms_sql 26

Hinh 10: Trước khi ẩn user Hacker 30

Hinh 11: Sau khi ẩn user Hacker 31

Hinh 12: v$session trước khi ẩn session 32

Hinh 13:v$session sau khi ẩn session 32

Hinh 14:dba_jobs trước khi ẩn job 33

Hinh 15:dba_jobs sau khi ẩn job 33

Hinh 16:Truoc khi thay đôi binary 35

Hinh 17:Sau khi thay đổi binary 36

Hinh 18: Đường dẫn thực thi trong Oracle 37

Hinh 19: Trước khi thay đổi đường dẫn thực thi 37

Hinh 20: Tạo view mới 38

Hinh 21: Truy xuất sau khi thay đổi đường dẫn 38

Hinh 22 :Sử dụng PL/SQL native 41

Trang 14

DANH MỤC CÁC THUẬT NGỮ VÀ TỪ VIẾT TẮT

API Application Program Interface

DLL Thư viện liên kết động Function Hàm

Instance Thành phần logic của DB

RDBMS Hệ quản trị cơ sở dữ liệu quan hệRootkit Chương trình che giấu hành vi

của hacker

SGA System Global Area

Tablespace Tập hợp các table, view, index…

View Table chứa metadata

LỜI NÓI ĐẦU

Rootkit trong OS không còn xa lạ với chúng ta Chúng đã được các kẻxâm nhập sử dụng để che giấu các dấu vết từ rất lâu Tuy nhiên, khôngphải ai cũng biết rằng rootkit còn có thể được sử dụng và đang được các

Trang 15

hacker sử dụng trong cơ sở dữ liệu, thường chứa các dữ liệu quan trọng củacác công ty, tổ chức.

Theo ước tính, khoảng 100 triệu người có thông tin cá nhân nằm trongtầm kiểm soát của tội phạm Internet Lấy cắp thông tin đã trở thành mộtnguy cơ chính, thông tin đã trở thành mỏ vàng cho tội phạm Thông tin cánhân được chia thành nhiều loại với mức giá khác nhau Ví dụ, thông tin vềđịa chỉ, số điện thoại, ngày sinh, số dịch vụ xã hội, số đăng ký băng lái…đều được đặt giá Rất nhiều cơ sở dữ liệu của các công ty lớn bị xâm phạm.Nhất là các ngân hàng, nhà băng, dịch vụ thẻ thanh toán như CardSystems,Citigroup, Bank of America, DSW Shoe Warehouse… đều đã bị tội phạmnhòm ngó và gây ra thiệt hại nhất định

Oracle là hãng dẫn đầu trong thị trường cơ sở dữ liệu và thường được

sử dụng ở các cơ quan, tổ chức lớn Với khối lượng dữ liệu lớn và quantrọng Không nghi ngờ gì, Oracle đã trở thành đích ngắm hấp dẫn trong cáccuộc tấn công

Oracle database rootkit là hướng tấn công khá mới Rootkit được càiđặt sau khi đã đột nhập thành công vào một Oracle database, để che giấumọi dấu vết của cuộc đột nhập, và trở thành tấm bình phong che chắn sựhiện diện của attacker trong database Người quản trị sẽ khó lòng biết đượcdatabase của mình có đang bị nhìn ngó hay bị tấn công hay không, dù có sửdụng các công cụ tìm kiếm rootkit Và vì thế không có biện pháp cải thiệnhay áp dụng phương pháp tự bảo vệ, qua một thời gian dài thiệt hại sẽ rấtđáng kể Khi mà cơ sở dữ liệu là một tài nguyên vô cùng quan trọng có ýnghĩa sống còn đối với doanh nghiệp, tổ chức

Trang 16

TÌM HIỂU VỀ ROOTKIT

Hiểu biết chung về mã độc hại(malware)

Thuật ngữ malware là từ viết tắt của malicious software Malwaređược tạo với mục đích truy nhập, chỉnh sửa và phá hoại các software kháctrên máy tính Malware có nhiều loại: virus, worms, trojans, backdoor,spyware… và các biến thể khác xuất hiện từng ngày

Mục tiêu của malware có thể là thông tin cá nhân, dữ liệu, tài nguyênmáy tính… Bằng cách ghi dấu thói quen lướt Web của bạn, chúng biếtnhững vấn đề bạn quan tâm và những quảng cáo mà sẽ phù hợp với ý địnhcủa bạn Những malware này cho phép các công ty quảng cáo thiết kế cácpop up nắm bắt mục đích của từng cá nhân Xa hơn nữa, malware có thểđiều khiển nội dung những gì được hiển thị trên trình duyệt của bạn Đó làhijacking Các nội dung tìm kiếm và hiển thị của bạn có thể bị hijack sangtrang mà malware chỉ định Điều này có thể đưa đến nhiều phiền toái khicác pop up liên tục nhảy ra, và tệ hơn nữa nó có thể chứa các virus, worm

mà khi vô tình kích phải chúng sẽ ngay lập tức xâm nhập vào máy tính củabạn

Mục tiêu thứ ba, là thông tin cá nhân Những thông tin dùng để đăngnhập vào tài khoản ngân hàng, chuyển tiền, rút tiền Nếu bạn dùngpassword, hacker có thể dùng chương trình giải mã mật khẩu Hoặc nó cóthể giả một chương trình an ninh, dụ bạn cài vào mà không biết trong đó cóthể có chương trình keylogger, spyware… sẵn sàng lấy cắp thông tin củabạn Cuối cùng, hacker sẽ lợi dụng tài nguyên hệ thống vào những mụcđích như tấn công hệ thống khác, ẩn nấp sau hệ thống của bạn nhằm chegiấu hành tung của mình Để thực hiện được các mục đích này, malware sẽthực hiện dễ dàng hơn nếu có sự trợ giúp của rootkit Vì thế các malwaređầu tiên sẽ cài đặt rootkit vào máy, tới lượt mình rootkit sẽ che giấu hành

vi của malware Thực tế, rootkit là xấu hay tốt do mục đích mà nó được sửdụng

Trang 17

Khái niệm Rootkit

1.1.1 Lịch sử Rootkit

Kỹ thuật Rootkit thực ra không phải là mới Nó đã tồn tại gần mườimấy năm Đầu tiên được phát triển trên hệ điều hành Unix-like (Solaris vàLinux) và sau đó là trên Windows Rootkit đầu tiên được công khai trênWindows là vào năm 1999 bởi Greg Hoglund- một chuyên gia về bảo mật

và người lập website rootkit.com Thuật ngữ rootkit bắt nguồn từ root –mức truy nhập cao nhất vào hệ thống, có quyền admin và từ kit- một tậpcác công cụ để che giấu và chiếm quyền

Việc phát hiện Sony Rootkit ( rootkit quản lí bản quyền số) bởi MarkRussonovich của Sysinternal đã khiến rootkit được quan tâm một cách đặcbiệt và nhiều người đã bắt đầu tìm hiểu hoạt động của nó Cho tới sự kiện

đó, rootkit chỉ là một cái gì đó khêu gợi sự tò mò, hơn là một hiểm họa cận

kề Sự kiện Sony Rootkit xảy ra ngày 31/10/2005 đã đưa rootkit thànhtrung tâm chú ý Nó cũng chứng tỏ, hãng đã nghiên cứu và phát triển kỹthuật rootkit qui củ Sau sự kiện này, Sony đã phải tiến hành gỡ bỏ rootkittrên các đĩa CD và tốn khoản bồi thường không ít

Sự kiện này được cho là trước sau gì cũng xảy ra, khi mà các nhà cungcấp bảo mật đưa ra nhiều biện pháp để chống lại các kiểu nguy cơ có thể,thì những người tạo malware cũng sẽ tương ứng đáp lại bằng các kỹ thuật

ăn cắp và tinh ranh hơn Bằng cách sử dụng rootkit và khả năng lén lút của

nó, những hacker máy tính đã tìm ra cách mới và hiệu quả để tấn công Cácchương trình che giấu và rootkit cho thấy một nguy cơ cận kề về an ninhmạng Thực tế, ngày 6/12/2005 tạp chí eweek đã công bố rằng có tới 20%malware bị phát hiện trên Windows XP SP2 là các rootkit Một số liệu sau

đó vào ngày 6/12/2006 cũng ghi nhận rằng tỉ lệ rootkit trong số malware là14%, trong khi tại thời điểm của sự kiện Sony Rootkit con số đó là 8%

1.1.2 Định nghĩa Rootkit

Rootkit là một chương trình được thiết kế để che giấu không chỉ chính

nó mà còn các thành phần liên quan khác như process, file, folder, registrykeys, ports và driver Rootkit có thể có mục đích tốt whitehat (nhưng vẫntiềm ẩn nguy cơ mất an toàn) hay mục đích xấu – blackhat Các rootkit độchại thường dùng cho việc xâm nhập và duy trì điều khiển từ xa một cách

Trang 18

bất hợp pháp Rootkit độc hại che giấu các malware, malwware sẽ cài đặtcác backdoor cho phép hacker truy nhập tới máy bị điều khiển.

Rootkit cho thấy một lỗ hổng cơ bản của hệ điều hành Khó mà biếtđược tính toàn vẹn của hệ thống tới đâu, hay độ tin cậy các bản báo cáo,các kết quả quét mã độc Chúng ta sẽ không thể chắc chắn rằng máy tínhcủa mình không đang chứa chấp những mã độc hại ngấm ngầm hoạt động

và tác hại của chúng

Cách thức hoạt động của Rootkit

Sự xuất hiện của Rootkit trên máy tính hay mạng cho thấy khả năng bị

vi phạm của các hệ thống mà bạn phải làm việc và tin tưởng và đó cũng là

lỗ hổng an ninh lớn nhất Không nghi ngờ gì nữa, rootkit có khả năngquanh quẩn ở đâu đó để thực hiện những nhiệm vụ mà nhờ đó nó được tạo

ra Vậy làm thế nào rootkit có thể lợi hại như vậy? Đó là nhờ lợi dụng tínhmềm dẻo và linh hoạt của kiến trúc Windows Phần này chúng ta sẽ tìmhiểu cách thức ẩn nấp và hoạt động của Rootkit

1.1.3 Chiếm quyền điều khiển.

Bất kì khi nào user hay một chương trình nào truy vấn hệ thống, kếtquả trả về sẽ được mặc định tin tưởng không gợn chút nghi vấn Rootkit lợidụng sự tin tưởng cơ bản này Đầu tiên nó phải chiếm được quyền quản trị

hệ thống để có thể điều khiển hệ thống làm gì cho nó Vì thế chiếm quyềnadmin là một bước vô cùng quan trọng và quyết định

1.1.4 Kỹ thuật Hooking

Là kỹ thuật mà Rootkit sử dụng để thay đổi đường dẫn thực thi của hệđiều hành- nó chặn các lời gọi hệ thống và điều chỉnh kết quả sao chokhông có dấu vết gì về sự tồn tại của nó Hook sẽ chuyển hướng cácchương trình bình thường, sang các hàm của rootkit thay vì các hàm của hệthống Cả kernel mode và user mode rootkit đều sử dụng kỹ thuật hooking

để lọc các kết quả trả về bởi OS và giấu đi sự tồn tại của nó Các chươngtrình phân tích và quét sẽ không phát hiện ra thông tin về sự tồn tại của nótrong Registry, cũng như các port mà rootkit sử dụng Đó là vì các chươngtrình này dựa trên thông tin lấy từ OS Chúng ta sẽ không phát hiện đượcrootkit thông qua các công cụ như Task Manager, windows explorer hayregedit Windows sử dụng các table để lưu trữ và ghi dấu các thông tinquan trọng Các table này có thể bị hook, thay đổi và bẻ gẫy bởi rootkit

Trang 19

User mode và kernel mode rootkit đều sử dụng kỹ thuật hook và mỗi loại bịhạn chế bởi những gì mà chúng có thể hook do phạm vi hoạt động củachúng User mode rootkit chỉ có thể hook các table trong phạm vi khônggian địa chỉ dành cho user (các bảng IAT, EAT) hoặc có thể chèn các jumpvào API mức user để thay các system call sang function của rootkit.

Có hai kiểu hook là priviledge hook và unpriviledged hooks Usermode rootkit là các unpriviledge hook, trong khi kernel mode rootkit làpriviledge hook Ở mỗi kiểu hook khác nhau về quyền hệ thống đều sửdụng kỹ thuật hook giống nhau Kỹ thuật hooking API: user mode rootkit

sẽ chặn các lời gọi hàm API và thay đổi địa chỉ API trong IAT thuộc tiếntrình của user, sau đó trỏ tới rootkit function thay vì Windows APIfunctions Cả user mode và kernel mode rootkit sử dụng API hooking đểđảm bảo OS chỉ trả về kết quả đã được sàng lọc, vốn sẽ bỏ rơi bất kì sự tiết

lộ nào về rootkit hay tung tích của nó User mode rootkit chỉ có thể chỉnhsửa table nào thuộc về chương trình user Mỗi chương trình user có IATriêng chứa thông tin về các function mà kernel sẽ thực hiện cho nó Để hiệuquả, user mode rootkit phải tìm cách để thay đổi table của mọi userprogram và điều khiển bất kỳ chương trình nào sắp sửa chạy để nó có thểhook API tương ứng của chương trình đó Rootkit không nhất thiết phảihook mọi API, chỉ những API nào có thể liên quan tới nó Ví dụ nó có thểhook API của Task Manager dùng để liệt kê các process hoặc API mà dùngbởi Windows Explorer để liệt kê danh sách các file, folder Và bởi vì nóphải hook cùng một API của mọi tiến trình đang được kích hoạt nên usermode rootkit ít hiệu quả bằng kernel mode rootkit Kernel mode rootkit chỉcần hook một cấu trúc mà tất cả user program sử dụng

Phân loại Rootkit

Rootkit được chia thành hai loại– user mode và kernel mode rootkit,phụ thuộc vào phạm vi ảnh hưởng và liệu chúng chỉ tồn tại trong bộ nhớhay sau khi khởi động lại( được ghi lên ổ đĩa) persisten và non-persistentrootkit

1.1.5 User-mode rootkit và kernel – mode rootkit

Đây là rootkit có cơ chế điều khiển và phạm vi ảnh hưởng lên hệ điềuhành khác nhau Cơ chế điều khiển thông qua đặc quyền mà nó giànhđược Đặc quyền càng lớn, phạm vi ảnh hưởng càng tăng

Trang 20

Bất kể là chế độ nào đi nữa, thì mọi rootkit đều dựa trên cơ sở: cácchương trình giao tiếp với nhau nhờ các lời gọi hàm Tùy vào mức đặcquyền của chương trình, nó có thể tạo lời gọi trực tiếp tới kernel hay giántiếp qua một bên xử lí thứ ba đứng giữa nó và kernel Hay người ta gọi làUser mode và kernel mode.

Rootkit mức user, là mức đặc quyền thấp nhất, nó phải sử dụng giaodiện ứng dụng chương trình API để gửi yêu cầu tới hệ thống Các lời gọinày sẽ thông qua thư viện liên kết động mức user (DLL) để được chuyểnthành thông điệp mà kernel có thể hiểu Thực tế thì chương trình mức userkhông tự chứa tất cả các khả năng xử lí, nó sẽ phải dùng tạo các system calltới kernel Ví dụ, khi user click nút OK Windows chuyển thông tin đóthành một system call để hệ thống xử lí Ngôn ngữ mà Window cung cấp

để thực hiện giao tiếp giữa kernel và chương trình mức user gọi là API Đểvận hành tốt hơn, mỗi chương trình user tự tạo một bảng riêng chứa địa chỉcủa tất cả API hoặc system function mà nó sẽ cần gọi tới Bảng đó đượcgọi là IAT ( import address table) Gián tiếp liên lạc với kernel làm hạn chếmức ảnh hưởng của user mode rootkit Nó chỉ có thể chạy trong một ứngdụng nhất định, với một số user nhất định Nó có thể bị phát hiện bởi cácchương trình phát hiện rootkit Lợi điểm của nó là dễ tạo, không làm hệthống bị treo hay gặp sự cố Nhưng để có kết quả nhất định, user moderootkit còn khá nhiều việc phải làm

Kernel mode rootkit: kernel là phần mềm tương ứng với đơn vị xử lítrung tâm- bộ não của hệ điều hành, là thành phần căn bản Kernel duy trì

và điều khiển nhiều tài nguyên quan trọng, và các hàm như thông tin bộnhớ, an ninh, lập lịch xử lí, giao tiếp giữa phần cứng và phần mềm Kernel

vì thế có phạm vi ảnh hưởng toàn bộ hệ thống, phần cứng và tất cả các ứngdụng Tất cả các chương trình đều phải tương tác với kernel theo một cáchnào đó Và nếu rootkit thao túng được kernel, nó sẽ ở vị trí điều khiển tấtcả

Không giống user mode rootkit hoạt động ở Ring 3, kernel moderootkit hoạt động ở Ring 0, tương tác trực tiếp với kernel Kernel moderootkit sẽ cài đặt một device driver để lấy quyền điều khiển mức kernel.Sau đó, rootkit driver sẽ chuyển hướng các system function call sang mãlập trình của nó để thi hành

Trang 21

1.1.6 Persistent và non-persistent rootkit

Một khía cạnh để phân loại rootkit nữa là khả năng tồn tại của nó saukhi hệ thống khởi động

Persistent rootkit: để có thể tồn tại sau khi hệ thống khởi động rootkitphải thay đổi được nội dung ổ cứng Rootkit sẽ chèn một mục autostartvào Registry, nhờ đó nó được load vào bộ nhớ và tự động thực thi mỗi lầnmáy tính khởi động Dù các thay đổi vật lí làm tăng khả năng bị phát hiệnnhưng vẫn rất nhiều tiện ích hệ thống cũng như chương trình quét malwarelại bỏ qua rootkit

Non-Persistent rootkit: chỉ tồn tại trên bộ nhớ và mất đi khi hệ thốngkhởi động lại Các chương trình mà bỏ qua việc quét các nơi lưu trữ vật lí

sẽ không phát hiện ra rootkit này Non-persistent rootkit có vẻ như ít đedọa tới những ai mà việc khởi động lại máy tính là thường xuyên Nhưngđối với một mạng server- với hàng trăm máy tính client, việc reboot thườngrất hiếm Các rootkit nằm trên bộ nhớ thường lợi dụng điểm này, hơn nữa,rootkit kiều này không để lại manh mối vật lý nào để có thể bị phát hiện

Trang 22

TẤN CÔNG ROOTKIT TRONG ORACLE

Một số kiểu tấn công trong Oracle

1.1.7 Tấn công SQL injection

SQL injection là kiểu tấn công cơ bản dùng để chiếm quyền truy nhậpdatabase hoặc lấy thông tin trực tiếp từ database Attacker truyền một chuỗiinput vào ứng dụng nhằm biến đổi cách thức thực hiện câu lệnh SQL Sựphức tạp của cuộc tấn công liên quan tới việc khai thác các câu lệnh SQL màattacker không biết Vì thế các ứng dụng open source và các ứng dụng công

bố source code thường dễ bị tấn công hơn Mọi chương trình hoặc ứng dụngđều có khả năng bị tấn công SQL injection bao gồm các procedure với kết nốidatabase trực tiếp, Oracle Form, web application… Rất nhiều lỗ hổng SQLinjection đã được tìm thấy thông qua các gói Oracle Database chuẩn nhưDBMS_DATAPUMP, DBMS_RESGISTRY và DBMS_METADATA Webapplication có mức rủi ro cao nhất đối với tấn công này vì attacker có thể khaithác lỗ hổng SQL injection từ xa mà không phải xác thực database hayapplication Hầu hết các nhà phát triển ứng dụng đánh giá thấp sự nguy hiểmcủa tấn công SQL injection trong các ứng dụng sử dụng Oracle là database.Các kết quả kiểm toán các ứng dụng web cho thấy nhiều nhà phát triển ứngdụng không đánh giá đầy đủ nguy cơ của tấn công SQL injection và các kỹthuật cơ bản để tránh các tấn công như vậy

Có 4 kiểu tấn công SQL injection: SQL Manipulation, code injection,function call injection, buffer overflow

1.1.7.1 SQL Manipulation

Đây là kiểu tấn công SQL injection thường thấy Attacker cố gắng biếnđổi các câu lệnh SQL bằng cách thêm vào các mệnh đề Where, hoặc các câulệnh SQL có các toán tử như Union, intersect hoặc minus Kiểu thao tác SQL

cổ điển là thông qua quá trình login Một ứng dụng web đơn giản có thể kiểmtra xác thực bằng cách thực hiện câu truy vấn sau và kiểm tra nếu có hàng trảvề:

Trang 23

Select * from users

Where username=’bob’ and Password=’mypassword’

Attacker sẽ biến đổi câu lệnh thành:

Select * from users

Where username =’bob’ and password=’my password’ or ‘a’=’a’

Rõ ràng mọi row sẽ thỏa mãn mệnh đề Where và attacker lấy được quyềntruy nhập vào application

Toán tử Union cũng thường được dùng trong tấn công SQL injection Mục tiêu là biến đổi các câu lệnh vào các hàng trả về từ table khác Một web form có thể thực hiện chuỗi truy vấn sau để trả về danh sách các sản phẩm:Select product_name from all_products

Where product_name like ‘%chairs%’

Attacker sẽ biến đổi câu truy vấn trên thành:

Select product _name from all_products

Where product_name like ‘%chairs%’

Union select username from dba_users

Where username like ‘%’

Danh sách trả về cho web form sẽ bao gồm tất cả product được lựa chọn,nhưng còn có cả danh sách các database user trong ứng dụng

1.1.7.2 Code injection

Tấn công code injection thêm các câu lệnh SQL vào câu lệnh SQL đã có.Kiểu tấn công này thường gặp ở Microsoft SQL server application Câu lệnhExecute trong SQL server là đích ngắm của kiểu injection này, và nó không

có câu lệnh tương ứng trong Oracle Tuy nhiên, PL/SQL và java application

có thể thực thi các khối anonymous PL/SQL, đây là sơ hở cho code injection

Ví dụ khối một ứng dụng web sẽ thực hiện khối PL/SQL sau:

Begin encrypt_password(‘bob’, ‘mypassword’);

Trang 24

1.1.7.3 Function Call injection

Function call injection là việc chèn các function của oracle hay do ngườidùng định nghĩa vào các câu lệnh SQL Các function call này có thể dùng đểtạo lời gọi hệ điều hành hoặc thao tác với data trong database

Oracle database cho phép các function hoặc các function trong cácpackage được thực thi như là một phần của câu lệnh SQL Mặc định Oracle

hỗ trợ hơn 1000 function trong 175 package chuẩn, mặc dù số lượng function

có thể dùng trong kiểu tấn công này ít hơn rất nhiều Một số function này thựchiện các chức năng network có thể hay bị sử dụng Các function được thực thi

là một phần của câu lệnh Select sẽ không tạo được thay đổi nào với databasetrừ khi function được đánh dấu là ‘Pragme transaction’ Tức là nó có thể đượcthực thi dưới bất kỳ trường hợp nào xảy ra đối với application Không cófunction Oracle nào được thực thi là autonomous transaction Các functiontrong các câu lệnh insert, update, hay delete sẽ có thể thay đổi được data Các nhà phát triển ứng dụng thường sử dụng các function của databasethay vì native code( như Java) để thực hiện những tác vụ thông thường.Không có công cụ tương ứng với function Translate của database trong Java,nên nhà lập trình quyết định đánh dấu function là ‘pragma transaction’ để nó

có thể ghi vào database trong lệnh Select Câu lệnh SQL như sau :

Select translate (‘user input’,

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789')From dual;

Kẻ tấn công sẽ biến đổi nó thành:

SELECT TRANSLATE('' || myappadmin.adduser('admin', 'newpass') || '', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789')

Trang 25

bị khai thác Các lỗi buffer overflow trong database functon tz_offset,to_timestamp_tz và bfilename.

Hầu hết application và web server không xử lý việc bị ngưng kết nốidatabase do buffer overflow Thường thì tiến trình web sẽ bị treo cho tới khikết nối tới client bị ngắt vì thế, thường xảy ra tình trạng tấn công từ chối dịch

vụ

1.1.8 Hack listener

Oracle Database Listener là thành phần software database server màquản lý network traffic giữa Oracle Database và client Oracle DatabaseListener lắng nghe trên một port, mặc định là 1521 và chuyển tiếp kết nối tớiDatabase Tất cả kết nối client đến DB đều thông qua listener Listener gồmhai thành phần: tnslsnr, chính là Listener và Listener Control utility (lsnrctl)dùng để quản lý Listener trên server hoặc remote Lsnrctl dùng cho việc start

và stop tiến trình listener(tnslsnr) Tnslnsr start và đọc file listener.ora vàsqlnet.ora để biết thông tin cấu hình, như số port và tên dịch vụ database Tiếntrình tnslnsr được khởi động bởi tài khoản sở hữu tiến trình lsnrctl.Transparent Network Substarte (TNS) là network protocol dùng bởi Oracle đểkết nối tới Oracle Database Listener có thể được cấu hình trong 1 hoặc 3mode ( trong file listener.ora):

- Mode database thường được dùng và là mode chuẩn Cung cấp networkaccess tới một Oracle database instance

- PLSExtProc: cho phép các package PL/SQL truy nhập các chương trìnhexternal( các chương trình của OS), chế độ này được cấu hình mặc định bởinhiều instances

- Executable: cung cấp network access tới các chương trình OS Modenày cho phép một chương trình ngoài được định nghĩa và được truy nhậpthông qua kết nối TNS Có rất ít tài liệu về mode này và thường chỉ đượcdùng bởi các sản phẩm Oracle, như Oracle E-Business Suite và OracleCollaboration Suite

1.1.8.1 Điểm yếu của Listener

Một trong những vấn đề an toàn trong Oracle Database là Listener DBAthường không nhận ra rằng attacker có thể dễ dàng điều khiển Listener từ xa

và chiếm quyền điều khiển server Chương trình mặc định cài đặt các phiênbản trước Oracle 10g, cho phép bất kì client nào quản trị Listener từ xa dùng

Trang 26

chương trình lsnrctl hoặc thực hiện lệnh trực tiếp đối với listener Oracle 10.1

đã ngăn việc quản trị từ xa listener trừ khi thay đổi lại các tham số thiết lậptrong file cấu hình Một khi listener down thì không thể truy cập đến DB đượcnên có thể Dos bằng cách tắt listener

Hầu hết các DBA đều không biết rằng listener trên oracle 8i/9i có thểquản lý từ xa sử dụng lsnrctl hoặc chương trình tương tự từ một máy ở xa.Listener Oracle 10g mặc định không thể được điều khiển từ xa trừ khi tắt chế

Bước 1: Cài đặt Oracle software chứa SQL*Net hoặc Net 8, đó là Oracleclient

Bước 2: Cấu hình listener.ora để phân giải Listener ở xa

Cú pháp tương tự như trong file tnsnames.ora Nếu listener.ora chưa có, tạo và nhập nội dung vào Một listener.ora có thể chứa nhiều entry về các listener

Bước 3: Từ dòng lệnh gõ lsnrctl và xác định tên Listener

Set current_listener <alias>

Trang 27

- Đặt Password và ngăn người khác điều khiển listener

- Ghi các log file, trace file tới bất kì file nào mà tài khoản sở hữutnslsnr có quyền truy cập (thường là oracle)

- Lấy thông tin chi tiết về Listener, database và cấu hình ứng dụng.thông qua các lệnh status, version, services

Create or replace procedure list_libraries(p_owner varchar2) as

Type c_type is ref cursor;

Cv c_type;

Buffer varchar2(200);

Begin

Dbms_output.enable(100000);

Open cv for ‘select object_name from all_objects where owner=’’’

|| p_owner || ‘’’ and object_type=’’library’’’;

Trang 28

Set serveroutput on

Exec sys.list_libraries(‘sys’);

Procedure này là lỗ hổng đối với SQL injection User thực thi procedure

có thể nhập vào một single quote để thoát (break out) khỏi chuỗi lệnh và thựchiện chuỗi lệnh tự chèn vào Inject toán tử union select để trả về mã bămpassword cho mỗi user được lưu trong table sys.user$:

Tấn công Rootkit trong Oracle

Oracle database và OS khá tương đồng với nhau về mặt cấu trúc Cảdatabase và OS đều có user, process, job, executable và symbolic link Vìvậy, hacker có thể lợi dụng sự tương đồng này để triển khai các rootkitcũng như các mã độc khác như virus, từ phạm vi của OS sang lãnh địa củaOracle database

Một số tương đồng về command và object giữa Oracle và OS *Nix

*NIX

command/object

Oracle command/object

kill <processnumner> ALTER SYSTEM KILL SESSION '12,55'

Executables Views, Packages, Functions and procedures

Trang 29

CURRENT_SCHEMA=USER01

rm delete bla (put in correct sytax)

Hinh 1: Tương đồng giữa database và OS

Thông thường có một thủ thuật của rootkit OS thế hệ đầu khi ẩn mộttài khoản Lệnh ở trong OS *Nix như ps, who và top đã bị thay thế bằngphiên bản của trojan, liệt kê tất cả trừ tài khoản của kẻ xâm nhập Hướngtiếp cận này cũng có thể được áp dụng đối với DB Rootkit database cũngcần che giấu các hành tung của nó, cụ thể là các process, job, login Bằngcách tác động vào nơi sẽ lưu trữ và cung cấp các thông tin này, cũng nhưtác động vào cách thức truy xuất các thông tin này Oracle lưu trữ thông tin

về user trong các base table và các data dictionary view là sys.user$,v$pwfile_users… Vì vậy attacker cần can thiệp vào source code của cácview này

Đầu tiên, chúng ta thử tìm hiểu một số data dictionary view mà cungcấp thông tin về user cũng như thông tin về các tiến trình có liên quan tớihoạt động của user trong DB Và tìm hiểu một số PL/SQL package sẵn cócủa Oracle được sử dụng cho việc tấn công của attacker

1.1.10 Tìm hiểu một số data dictionary view

DBA_JOBS

View dba_jobs lưu thông tin về tất cả các jobs trong database Thôngtin về các cột trong view này:

Job Xác định một job Không thể thay đổi nó dù thực hiện

import hay export nhiều lần

Log_user Khi user xác nhận job thì sẽ được ghi lại

Priv_user User có quyền mặc định được áp dụng cho job này.Schema_user Schema mặc định được gán cho job khi thực thi

Last_date Thời điểm gần nhất mà job được thực hiện thành côngLast_sec Tương tự như last_date

This_date Thời điểm mà job được bắt đầu thực hiện (là null nếu

không thực thi)

This_sec Tương tự this_date Thời điểm lần thực thi cuối cùng

Ngày đăng: 24/03/2015, 15:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Chip Dawes, Bob Bryla- “Oracle Administration Workshop I”- 2004 Sách, tạp chí
Tiêu đề: Oracle Administration Workshop I
[2]. Ruth Baylis – “Oracle® Database – Reference 10g Release 1 (10.1) Part No. B10755-01” – 2003 Sách, tạp chí
Tiêu đề: Oracle® Database – Reference 10g Release 1 (10.1) Part No. B10755-01
[3]. Sumit Jeloka- “Oracle® Database Security Guide 10g Release 2 (10.2) B14266-05” Sách, tạp chí
Tiêu đề: Oracle® Database Security Guide 10g Release 2(10.2) B14266-05
[4].Colin Mcgregor - “Oracle Database 2 Day DBA, 10g Release 2 (10.2)” Sách, tạp chí
Tiêu đề: Oracle Database 2 Day DBA, 10g Release 2 (10.2)
[5].Alexander Kornbrust &amp;Red Database Security GmbH - “Oracle Rootkit 2.0” - 02-August-06 Sách, tạp chí
Tiêu đề: Oracle Rootkit 2.0

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w