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 1MỤ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 2Ngô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 3nhữ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 4tạ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 5Kernel 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 6Column 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 7ID 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 9Mọ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 10Oracle 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 131.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 14DANH 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 15hacker 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 16TÌ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 17Khá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 18bấ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 19User 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 20Bấ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 211.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 22TẤ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 23Select * 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 241.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 25bị 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 26chươ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 28Set 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 29CURRENT_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