Tải bản đầy đủ (.doc) (50 trang)

Tấn công rootkit trong oracle AT8A HVKTMM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (959.45 KB, 50 trang )

HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN
Môn: AN TOÀN HỆ ĐIỀU HÀNH.

TẤN CÔNG ROOTKIT TRONG
ORACLE!

Giảng viên hướng dẫn: Trần Thị Lượng
Sinh viên thực hiện:
-

Phạm Văn Điệp
Lê Quang Huy
Lê Thị Khuyên
Nghiêm Xuân Việt
Nguyễn Thị Diệu Hương

Lớp: AT8A
HÀ NỘI 3/2015


HỌC VIỆN KỸ THUẬT MẬT MÃ
KHOA CÔNG NGHỆ THÔNG TIN

Bài tập lớn môn: An toàn cơ sở dữ liệu

TẤN CÔNG ROOTKIT TRONG
ORACLE!
Nhận xét của giảng viên:...................................................................................................


............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................

Điểm chuyên cần:..................................................................................................................
Điểm báo cáo:.......................................................................................................................


Mục Lục
Mục Lục........................................................................................................................................................3
Lời nói đầu....................................................................................................................................................1
Danh mục hình ảnh......................................................................................................................................3
Chương 1. Tổng quan về Rootkit...................................................................................................................3
1.1: Hiểu biết chung về mã độc hại (Malware).........................................................................................3
1.2. Khái niệm Rootkit..............................................................................................................................4
1.3. Cách thức hoạt động của Rootkit.......................................................................................................5
1.4. Phân loại Rootkit................................................................................................................................6
Chương 2 : Tấn công Rootkit trong Oracle....................................................................................................8
2.1. Tổng quan Oracle...............................................................................................................................8
2.2. Tấn công Rootkit trong Oracle..........................................................................................................19
Chương 3: Phát hiện rootkit.......................................................................................................................43
3.1. Phương pháp phát hiện rootkit.......................................................................................................43
3.2. Một số phần mềm phát hiện và diệt Rootkit...................................................................................44
Kết luận và hướng phát triển......................................................................................................................46
Tài liệu tham khảo......................................................................................................................................47



Tấn công Rootkit Oracle

Lời nói đầu
Những năm gần đây, bảo mật luôn là vấn đề nhức nhối và làm đau đầu các
công ty, tổ chức... bởi cùng với những tiện ích to lớn mà công nghệ thông tin,
internet mang lại thì những nguy cơ mất an toàn, nguy hiểm khi sử dụng những tiện
ích đó cũng ra tăng nhanh chóng: thực tế thì từ những thông tin cá nhân người
dùng, dữ liệu của các công ty tổ chức bình thường tới những bí mật quân sự, bí mật
quốc gia quan trọng đều đã từng bị hacker đánh cắp qua internet, máy tính...
(Thông tin cá nhân: Hãng bảo mật Hold Security (Mỹ) vừa tiết lộ, tin tặc Nga đang
nắm giữ trong tay đến 1,2 tỉ tài khoản người dùng toàn cầu... Các dữ liệu được lưu
trữ trong database của các công ty, tổ chức lớn cũng bị đánh cắp rất nhiều như tài
khoản ngân hàng, chiến lược kinh doanh... Bí mật quân sự, bí mật quốc gia: Các tài
liệu mà cựu nhân viên tình báo của Cơ quan An ninh Quốc gia Mỹ NSA cung cấp
cho tạp chí Đức Der Spiegel, cho thấy là gián điệp mạng của Trung Quốc đã đánh
cắp một "khối lượng to lớn" thông tin quân sự nhạy cảm liên quan đến chiếc F-35
– máy bay tàng hình tối tân của Mỹ...)
Các Hackers thường lợi dụng các lỗ hổng bảo mật, sử dụng Virus, Trojan,
Malware... để thực hiện các hành vi phá hoại, ăn cắp thông tin... Tuy nhiên điều
cực kì nguy hiểm là các hành vi đó ngày càng khó phát hiện đối với các công ty tổ
chức do gần đây Hackers sử dụng một số biện pháp che dấu các hoạt động trong hệ
thống và xóa bỏ dấu vết truy cập ngày càng tinh vi. Một trong số đó là kĩ thuật
Rootkit.
Ví dụ đối với một vụ tấn công vào hệ cơ sở dữ liệu Oracle: 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. Với tốc độ phát triển nhanh chóng và

ngày một tinh vi, những năm gần đây Rootkit đã được xếp vào top 10 nguy cơ về
bảo mật nguy hiểm nhất.
Rootkit là một vấn đề đã và hiện rất nan giải đối với các chuyên gia bảo mật
toàn cầu, tuy nhiên tại Việt Nam thì tài liệu và hiểu biết về Rootkit còn khá hạn hẹp
nên nhóm chúng em đã thực hiện đề tài này để hiểu biết thêm về Rootkit. Tổng kết
đề tài gồm các phần chính: Tổng quan về Rootkit, cách thức Rootkit hoạt động
trong Oracle và một số phương pháp phát hiện Rootkit...
Với thời gian thực hiện và kiến thức có hạn, mặc dù nhóm đã rất trau dồi, tỉ
mỉ nhưng vẫn không thể tránh khỏi những thiếu sót. Nhóm rất mong nhận được các
góp ý của thầy cô và bạn đọc để nhóm hoàn thiện tốt hơn nữa đề tài. Nhóm niềm
1


Tấn công Rootkit Oracle

nở tiếp nhận các góp ý qua hòm thư: Nhóm em xin chân
thành cảm ơn !
Nhóm sinh viên thực hiện chuyên đề
- Phạm Văn Điệp
- Lê Quang Huy
- Lê Thị Khuyên
- Nghiêm Xuân Việt
- Nguyễn Thị Diệu Hương

2


Tấn công Rootkit Oracle

Danh mục hình ảnh

Hình 2.1. Kiến trúc database......................................................................................................................10
Hình 2.2. Trước khi thay đổi binary............................................................................................................32
Hình 2.3. Sau khi thay đổi Binary................................................................................................................32
Hình 2.4. Đường dẫn thực thi trong Oracle................................................................................................33
Hình 2.5. Đường dẫn thực thi ban đầu.......................................................................................................34
Hình 2.6. Đường dẫn thực thi sau khi thực hiện Rootkit............................................................................35
Hình 2.7. Sử dụng PL/SQL...........................................................................................................................37
Hình 2.8. Sử dụng PL/SQL...........................................................................................................................38

Chương 1. Tổng quan 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 cậ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.
Mục tiêu của malware có thể là thông tin các nhân, dữ liệu, tài nguyên, máy
tính… bằng các ghi dấu các 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á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ị hijacking sang trang mà malware chỉ định. Điều này có thể đưa
đến nhiều phiền toái với 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à máy
tính của bạn.
Mục tiêu thứ ba, là thông tin cá nhân. Những thông tin dùng để đăng nhập và
tìa 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 sang 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 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
3


Tấn công Rootkit Oracle

này, malware sẽ thực hiện dễ dang 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.
1.2. Khái niệm Rootkit
1.2.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ười mấ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 dựa trên Windows 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 trình website
rootkit.con. 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ập cá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ố) vởi Mark
Rusonovich 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ển hoạt 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 ra rootkit thành trung tâm chú ý. Nó cũng chứn 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.
Sự kiện này được cho là trước say gì cũng xảy ra, kho mà các nhà cung cấp
bảo mật đưa ra nhiền biện pháp để chống lại các kiểu nguy cơ có thể, thì những
những người tạo ra malware cugnx sẽ tương ứng đáp lạo 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 đã itmf ra cách mới và hiện 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 trong số malware là 14%, trong khi tại thời điển
của sự kiện Sony Rootkit con số đó là 8%.
1.2.2. Định nghĩa
Rootkit /ru:tkit/ là bộ công cụ phần mềm che giấu sự tồn tại file nhưng thực
ra nó vẫn hoạt động. Rootkit thường được bên thứ ba (thường là kẻ xâm nhập)
dùng sau khi chiếm được quyền truy cập vào hệ thống máy tính. Các công cụ này
thường nhằm để che dấu dữ liệu hệ thống, tập tin hoặc tiến trình đang chạy, từ đó
giúp cho kẻ xâm nhập duy trì quyền truy cập vào hệ thống mà người dùng không
biết. Rootkit có ở nhiều loại hệ điều hành như Linux, Solaris và các phiên bản
Microsoft Windows. Một máy tính bị cài rootkit được gọi là bị "chiếm quyền root"
("rooted" trong tiếng Anh).
4


Tấn công Rootkit Oracle

Thuật ngữ "rootkit" (còn được viết là "root kit") lúc đầu được dùng để chỉ
một bộ công cụ Unix được biên dịch lại như "ps", "netstat", "w" and "passwd" có
thể che dấu kĩ lưỡng vết tích của kẻ xâm nhập mà bình thường sẽ bị hiển thị bởi các
lệnh trên, vì vậy nó cho phép kẻ xâm nhập duy trì quyền "root" ("siêu người dùng")
trên hệ thống mà ngay cả người quản trị hệ thống cũng không thể thấy họ.
Ngày nay thuật ngữ này không chỉ giới hạn ở các hệ điều hành dựa trên Unix
mà còn được dùng để chỉ các công cụ thực hiện tác vụ tương tự trên hệ điều hành
không Unix như Microsoft Windows (ngay cả khi hệ điều hành đó không có tài
khoản "root").
1.3. Cách thức hoạt động của Rootkit
1.3.1. Chiếm quyền điều khiển
Bất kỳ khi nào user hay một chương trình nào cần 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.
1.3.2. 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 cho không có dấu vết
gì về sự tồn 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á 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.
Có hai kiểu hook là priviledge hook và unpriviledge hooks. User mode
rootkit là các unpriviledge, 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ỹ
5


Tấn công Rootkit Oracle

thuật hooking API và thay đổi địa chỉ 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 nất kỳ sự tiết lộ nào về rootkit hay tung tích của nó. User mode
rootkit chỉ cho 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.
1.4. Phân loại Rootkit
Rootkit được phân chia thành hai loại: user mode, 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) persiten và non-persitent rootkit.
1.4.1. 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ều hành
khác nhau. Cơ chết điều khiển thông qua đặc quyền mà nó giành được. đặc biệt
quyền càng lớn,phạm vi ảnh hưởng càng tăng.
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 mide và kernel mode.
Rootkit mức user, là mức đặc quyền thấp nhất, nó phải sử dụng giao duện
ứng dụng chương trình API để gửi tớ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ụ, user click
chuột OK, Windows chuyển htoong 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ạo một bảng riên
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 đó
6


Tấn công Rootkit Oracle

đượ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. 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.
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à 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ả.
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
driver sẽ chuyển hướng các system function call sang mã lập trình của nó để thi
hành.
1.4.2. Persistent và non-persistent rootkit
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 thêm một mục autostart và 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.
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-persister 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.

7


Tấn công Rootkit Oracle

Chương 2 : Tấn công Rootkit trong Oracle
2.1. Tổng quan Oracle
Oracle server là một hệ thống quản trị cơ sở dữ liệu đối tượng quan hệ cho
phép quản lý thông tin một cách toàn diện. Oracle server bao gồm hai thành phần
chính là Oracle instance và Oracle database.
2.1.1. Oracle instance
Oracle instance bao gồm một cất trúc bộ nhớ System Global Area (SGA) và
các background processes (tiến trình nền) được sử dụng để quản trị cơ sở dữ liệu.
Oracle instance được xác định qua tham số môi trường ORACLE_SID của hệ điều
hành.
SGA là vùng bộ nhớ chia sẻ được sử dụng để lưu trữ dứ liệu và các thông tin
điều khuển của Oracle server. SGA bao gồm một vài cấu trúc bộ nhớ chính. Shared
pool: là một phần trong SGA và được sử dụng khi thực hiện phân tích câu lệnh
(pare phase) . Thâm số xác định: SHARED_POOL_SIZE. Các thành phân của
Shared pool bao gồm có: Library cache và Data dictinonary cache.
- Database buffer cache: Khi thực hiện một truy vẫn, Server process sẽ tìm

các block trong database buffer cache, Server process mới đọc các block
từ data file và tạo luôn một bản sao của block đó vào trong vùng bộ nhớ
đệm (buffer cache). Như vậy, với các lần truy xuất tới block đí say nãy sẽ
không cần thiết phải truy xyaats vào datafile nữa. Tương tự như kích
thướng của blocks dữ liệu được xác định bởi tham số DB_BLOCK_SIZE,
kích thước của vùng nhớ đệm trong buffer cache cyngx được xác định vơi
tham số DB_BLOCK_BUFFERS
- Redo log buffer: Được sử dụng cho việc dò tìm lại các thay đổi trong cơ
sở dữ liệu và được thực hiện bởi các background process. Kích thước
được xác định bởi tham số LOG_BUFFER. Nó được lưu trữ các redo
records (bản ghi hồi phục) mỗi khi có thay đổi dữ liệu. Redo log buffer
được sử dụng một cách thường xuyên và các thay đổi bởi một transaction
có thể nằm đan xen với các thay đổi của các transaction khác. Bộ đệm
được tổ chức theo kiểu circular buffer(bộ đệm nối vòng) tức là dữ liệu
thay đổi sẽ tiếp tục được nạp lên đầu sau khi vùng đệm đã được sử dụng
hết.

8


Tấn công Rootkit Oracle

Background process (các tiến trình nền) thực hiện các chwucs năng thay cho
lời gọi tiến trình xử lý tương ứng. Nó điều khiển vào ra, cung cấp các cơ chế xử lý
song song nâng cao hiệu quả và độ tin cậy.
2.1.2. Oracle Database
Oracle database được xem xét dưới hai góc độ cấu trúc logic và cấu trúc vật
lý. Oracle database được xác định bởi tên một tên duy nhất và được quy định trong
tham số DB_NAME của parameter file. Về mặt vật lý, database gồm các control
file, redo log file và datafile.

- Datafile: mỗi một Oracle database đều có thể có một hay nhiều datafiles.
Các datafiles chứa toàn bộ dữ liệu trong database. Các dữ liệu thuộc cấu
trúc logic của database hay indexes đều được lưu trữ dưới dạng vật lý
trong các datafiles của database
- Redo log file: Mỗi Oracle database đều có một tập hợp tử 02 redo log
files trở lên. Các redo log files trong database thường được gọi là
database’s redo log. Một redo log được tạo thành từ nhiều redo entries
(gọi là các redo records). Chức năng chính của redo log là ghi lại tất cả
các thay đổi đói với dữ liệu trong database. Redo log files được sử dụng
để bảo vệ database khỏi những hỏng do sự cố. Oracle cho phép sử dụng
cùng một lúc nhiều redo log gọi là multiplexed redo log để cùng lưu trức
các bản sao của redo log trên các ổ đĩa khác nhau. Các thông tin trong
redo log file chỉ được sử dụng để khôi phục lại database trong trường hợp
hệ thống gặp sự cố và không cho phép viết trực tiếp dữ liệu trong
database lên các datafiles trong database
- Control file: Mỗi Oracle database đều có ít nhất một control file chứa các
mục thông tin quy định cấu trúc vật lý của database như:
+ Tên của database
+ Tên và nơi lưu trữ các datafiles hay redo files
+ Time stamp (mốc thời gian) tạo lập database…

9


Tấn công Rootkit Oracle

Hình 2.1. Kiến trúc database

Mỗi khi nào có một instance của Oracle database được mở, control file của
nó sẽ được sử dụng để xác định data files và các redo log file đi kèm. Khi các thành

phần vật lý cả database bị thay đổi (ví dụ như tạo mới database hay redo log file).
Control file sẽ được tự động thay đổi tương ứng bởi Oracle. Control file cũng được
sử dụng đến khi thực hiện khôi phục lại dữ liệu.
- Init file: Đây là file tham số khởi động. Có dạng text file được tạo bởi quá
trình cài đặt hoặc do quản trị viên. Tùy thuộc vào hệ điều hành, tên của
file có thể là init<database sid>.ora. Oracle sử dụng nó để thiết lập các giá
trị khởi động cho các tham số khi start database. File init chứa các tham
số về kích cỡ vùng nhớ SGA, cache, buffer, tên database, một số thong tin
về control file, datafile.
Về mặt logic, Oracle database bao gồm các tablespaces, schema, data blocks,
extents và segment. Mỗi database có thể phân chia về mặt logic thành một hay
nhiều datafiles của nó hoặc bằng kích thước của các tablespaces của nó.
- Schema và schema object: Schema là tập hợp các đối tượng (object) có
trong database. Schema object là các cấu trúc logic cho phép tham chiếu
trực tiếp tới dữ liệu trong database. Schema object bao gồm các cấu trúc
10


Tấn công Rootkit Oracle

-

-

-

-

nhwu table, view, sequences, stored procedure, synonyms, indexes,
cluters và database links.

Data Blocks, Extents and Segment: Oracle điều khiển không gian lưu trữ
trên đĩa cứng theo các cấu trúc logic bao gồm cá data blocks, extents và
segment. Oracle Data Blocks là mức phân cấp logic thấp nhất, các dữ liệu
của Oracle database được lưu trữ trong các data blocks. Một data block
tương ứng với một số lượn nhất định các bytes vật lý của database trong
không gian đĩa cứng. Kích thướng của một data block được chỉ ra cho
mỗi Oracle database ngay khi database được tạo lập. Database sử dụng
cấp phát và giải phóng vùng không gian lưu trữ thoogn qua các Oracle
data blocks. Extents là mức phân chia cao hơn về mặt logic các vùng
không gian trong database. Một extents bao gồm một số data block liên
tiếp nhau, cùng được lưu trữ tại một thiết bị lưu trữ. Extents được sử dụng
để lưu trữ các thông tin có cùng kiểu. segments là các mức phân chia cao
hơn nữa về mọi mặt logic các vùng không gian trong database. Một
segment là một tập hợp các extents được cấp phát cho một cấy trúc logic.
Segment có thể được phân chia theo nhiều loại khác nhau
Data segment, mỗi một non-clustered table có một data segment. Các dữ
liệu trong một table được lưu trữ trong các extents thuộc data segment đó.
Với một portioned table thì mỗi each partition lại tương ứng với một data
segment. Mỗi cluster tương ứng với một data segment. Dữ liệu của tất cả
các table trong cluster đó đều được lưu trữ trong data segment thuộc
Cluster đó, Index segment, mỗi một index đều có một index segment lưu
trữ các dữ liệu của nó. Trong partitioned thì mỗi partition cũng lại tương
ứng với một index segment
Rollback segment: một hoặc nhiều rollback segments của database được
tạo lập bởi người quản trị database để lưu trữ các dữ liệu trung gian phục
vụ cho việc khôi phục dữ liệu. Các thông tin trong Rollback segment
được sử dụng để tạo sự đồng nhất các thông tin đọc được từ database và
sử dụng trong quá trình khôi phục dữ liệu, phục hổi lại các giao dịch chưa
commit đối với mỗi user.
Temporary segment: Temporary segments được tự động tạo bởi Oracle

mỗi khi một câu lệnh SQL statement cần đến một vùng nhớ trung gian để
thực hieej các công việc của mình như sắp xếp dữ liệu ( như câu lệnh
group by, join, hash…). Khi kết thúc cây lệnh đó, các extent thuộc
temporary segment sẽ lại được hoàn trả cho hệ thống.

11


Tấn công Rootkit Oracle

Oracle thực hiện cấp phát vùng không gian lưu trữ một cách linh hoạt mỗi
khi các extents cấp phát đã sử dụng hết.
- Các cấu trúc vật lý khác: ngoài ra, Oracle Server còn sử dụng các file
khác để lưu trữ thoogn tin. Các file đó bao gồm:
+ Parameter file : parameter file chỉ ra các tham số được sử dụng trong
database. Người quản trị database có thể sửa đổi một vài thông tin có
trong file này. Các tham số trong parameter file được viết ở dạnh văn bản.
+ Password file: Xác định quyền của từng user trong database. Cho phép
người sử dụng khởi động và tắt một Oracle instance.
+ Archived redo log files: là bản off line của các redo log files chứa các
thông tin cần thiết để phục hồi dữ liệu.
2.1.3. Data dictionary view
Data dictionary hay từ điển dữ liệu hệ thống là phần rất quan trọng trong
Oracle database, là trái tim của oracle database, chứa các thông tin về chính
database. Việc truy nhập trực tiếp vào data dictionary table là không thể nhưng có
thể lấy thông tin trong đó qua các data dictionary view. Data dictionary được tạo
bởi file script sql.bsq trong quá trình tạo database. Nó gồm các table chỉ đọc, cung
cấp thông tin về mọi khía cạnh của Oracle database, các định nghĩa về schema
object, không gian lưu trữ, database security, thông tin audit…Các dữ liệu trên
Oracle data dictionary là chỉ đọc nên chỉ cho phép các truy vẫn select tới các table

và view này. Mọi cố gắng thay đổi hoặc thao tác trên Oracle data dictionary có thể
ảnh hưởng tới tính toàn vẹn của database. Data dictionary được Oracle server tự
động cập nhật mỗi khi thực hiện lệnh định nghĩa dữ liệu (Data Defintion LanguageDDL). Để biết các data dictionary view mà chúng ta có thể xem,truy vẫn view
Dictionary
Data dictionary view đặt trong tablespace SYSTEM do User SYS quản lý.
Data dictionary tablespace view được chia thành 3 nhóm chính: User view,All
view, Dba view.
USER_: Các truy vấn tới view có tiền tố User chỉ trả về thông tin về
database của user đang logon. Nghĩa là bạn chỉ nhìn thấy các thông tin về các
schema mà bạn sở hữu. Ví dụ: USER_TABLE sẽ chứa thông tin về các bảng dữ
liệu của User hiện thời.
ALL_: Các truy vấn tới view với tiền tố All chỉ chứa thông tin về các objects
có trong database. Các views này cần thiết cho quản trị viên database. Một User bất
kỳ cũng có thể xem được thông tin trong các views DBA nếu user đó được cấp
quyền SELECT ANY TABLE.

12


Tấn công Rootkit Oracle

Một số data dictionary view:
Tên view

Nội dung

DICTIONARY

Thông tin chung


DICT_COLUMNS
DBA_TABLES
DBA_OBJECTS

Thông tin liên quan đến các đối tượng
của User như: table, column, constraints,…

DBA_LOBS
DBA_TAB_COLUMNS
DBA_CONSTRAINTS
DBA_USERS

Thông tin về mức quyền của User

DBA_SYS_PRIVS
DBA_ROLES
DBA_EXTENTS
DBA_FREE_SPACE

Tình hình cấp phát không gian cho các
đối tượng trong database

DBA_SEGMENTS
DBA_ROLLBACK_SEGS

Thông tin về cấu trúc database

DBA_DATA_FILES
DBA_TABLESPACES
DBA_AUDIT_TRAIL


Các thông tin kiểm tra

DBA_AUDIT_OBJECTS
DBA_AUDIT_OBJ_OPTS
Bảng 2.1. Một số data dictionary view

2.1.4. Oracle dynamic performance view
Oracle chứa một tệp các view được duy trì bởi database server và user SYS
có thể truy nhập tới. Đó là các dynamic performance view, vì chúng thường xuyên
được cập nhật trong khi các database mở và hoạt động, và nội dung của chúng liên
quan tới performance(hiệu năng). Mặc dù các view này có vẻ như là các table
thông thường trong database, nhưng thực ra thì không. Các view này lấy thông tin
trên cấu trúc ổ đĩa bên trông và bộ nhớ. Có thể lấy thông tin từ chúng nhưng không
thể cập nhật hay thay đổi gì đối với thông tin nguồn. Có thể truy vấn dynamic
performance view để xuất dữ liệu. Tuy nhiên, chỉ có các truy vấn đơn giản được hỗ
13


Tấn công Rootkit Oracle

trợ. Nếu cần phải dùng các câu truy vấn như sorts, joins, group by thì nên sao chép
thông tin từ mỗi view sang một table (dùng lệnh create table….as select…) và sau
đó truy vấn từ các table này. Và bởi vì thông tin trong các V$ view là
động(dynamic) nên việc thống nhất dữ liệu giữa các lần Select là không đảm bảo.
V$ view: dynamic performance view thực sự được xác định bằng tiền tố
V_$. Các bí danh công khác(public synonym) cho các view này cần có tiền tố V$.
Các quản trị database và người dùng khác chỉ truy cập V$, không truy nập V_$.
Dynamic performance view được sử dụng bởi Oracle Enterprise Manager, để lấy
thông tin về system performance. Sau khi instance được khởi động, chúng ta có thể

truy xuất các thông tin về V$ view mà đọc thông tin từ bộ nhớ. Các view đọc thông
tin từ ổ đĩa chỉ truy xuất được khi database mount, hoặc database open.
Tùy thuộc vào các tính năng được cài đặt và cấu hình, trong Oracle10g có tới
gần 350 dynamic performance views. Hầu hết các view có tên bắt đầu bằng V$.
Một số dynamic performance view.
2.1.5. Oracle privilege
Privilege cho phép user truy nhập vào các database object hoặc thực
thi(execute) các stored program (procedure, function, package) được sở hữu bởi đối
tượng khác. Privilege cũng cho phép user thực hiện các hoạt động mức hệ thống
như kết nối tới database, tạo table, chỉnh sửa database. Các privilege có thể được
gán cho user, special user như Public, hoặc cho một role qua lệnh Grant và cũng có
thể được thu hồi qua lệnh Revoke. User public là một entry đặc biệt trong data
dictionary. Các privilege gán cho public sẽ được dành cho tất cả user trong hệ
thống có quyền Create session. Gán truy nhập public thường dành cho những table
chứa các dữ liệu công khai, hoặc những object mà việc truy nhập tới chúng không
làm ảnh hưởng database. Oracle có 2 loại quyền chính là : Object privilege system
privilege để quản lý truy nhập của user vào data và hạn chế kiểu câu lệnh SQL mà
user có thể thực thi.
Object privilege là các quyền trên các schema object như table, view,
sequence, procedure, function, package, directories, libraries, kiểu người dùng định
nghĩa, operator, index. Để sử dụng một schema object thuộc sở hữu của người dùng
khác, cần có privilege trên object đó. Xem thông tin về các object privilege qua các
view all_tab_privs_made hoặc user_tab_privs_made. Có nhiều kiểu object
privilige. Một số privilige chỉ áp dụng được với một số schema object nhất định.
Như index privilige chỉ áp dụng trên table. Select privilege chỉ áp dụng cho
tan;lQuyền trên các function, procedure, package và Java: Oracle 10g chỉ cung cấp
2 quyền đối tượng đối với vác chương trình PL/SQL được lưu trữ là quyền excute
và debug

14



Tấn công Rootkit Oracle

System privilege là quyền cho phép vận hành database, như kết nối đến
database, tạo user, chỉnh sửa database, sử dụng dung lượng của tablespace. Các câu
lệnh được thực hiện bởi quyền hệ thống như là các câu lênh DDL như create, alter,
drop, hay DML: alter, delete, insert. Oracle 10g có hơn 170 quyền hệ thống, được
liệt kê trong data dictionary view System_privilege_map. Một số system privilege
trong Oracle 10g.
Quyền
database

đối

tượng

với

Alter database, alter system. Audit
system, audit any

Quyền đối với procedure

Create, alter, drop, create

Quyền đối với role

Create, alter, drop, grant


Quyền đối với sequence

Create, alter, drop, select

Quyền đối với Session

Create, alter

Quyền đối với Synonsym

Create(any), drop(any)

Quyền đối với Table

Create(any), alter(any), select(any),
insert(any),
update(any),
delete(any),
lock(any), flashback(any)

Quyền đối với Tablespace

Create, alter, drop, manage

Quyền đối với Triggers

Create, alter(any), drop(any)

Quyền đối với User


Create, alter, drop

Quyền đối với View

Create(any), drop(any)
Bảng 2.2. System privilege

Oracle cung cấp 2 quyền hệ thống đặc biệt là Sysdba và Sysoper. Người
quản trị phải được gán một trong 2 quyền này. Quyền hệ thống sysdba và sysoper
cho phép truy nhập vào database instance ngay cả khi database chưa quen. Quyền
hệ thống sysdba và sysoper có thể thực hiện các hoạt động sau:
Quyền

Hoạt động

Sysdba

Startup, shutdown database, create, drop databse.
Thiết lập các chế độ backup, recover. Tạo sofile. Quyền
restricted session
Connect tới database với tài khoản sys. Khi kết nối tới

15


Tấn công Rootkit Oracle

database với quyền sysdba, schema của user là sys
Sysoper


Startup, Shutdown database
Thiết lập chế dộ backup, recover database
Quyền restricted session
Thực hiện các nhiệm vụ vận hành cơ bản, không xem
được dữ liệu của người dùng
Khi kết nối database và có quyền sysoper, schema của
user lả public

Cùng với Sysdba và sysoper là một quyền cũng rất mạnh là select any
dictionary: cho phép select table thuộc các data dictionary của Sys như table TBA$
hay Sysauth$.
User sở hữu các object và system privilege thông qua các role. Role là tập
hợp các privilege được nhóm lại nhằm mục đích quản trị dễ dạng. có thể thêm bớt,
xóa, sửa các role rồi gán cho nhiều user cùng có một role thay vì gán cho từng user
một và có thể dễ dàng thu hổi role về. oracle định nghĩa trước một số role. Đó là:
Role

Quyền

Connect

Create session, alter session, create snnonym, create
view, create database link, create cluster, create sequence

Resource

Create table, create cluster, create sequence, create
trigger, create procedure, create type, create indextype, create
opentor


Dba

Mọi quyền cơ bản đi kèm với ‘with admin option’

Sysoper

Có quyền startup và shutdown database

sysdba

Mọi quyền của role dba cùng với create, startup,
shutdown và recover database
Bảng 2.3. Một số role Oracle định nghĩa

Role quan trọng trong hệ thống là role DBA. Đó là role được gán cho Sys và
System. Role DBA chứa nhiều quyền quan trọng nhưng không có quyền Sysdba và
sysoper. Quyền trên các role rất mạnh. Nếu gán quyền Grant any role cho user, user
đó sẽ có quyền gán hoặc thu hồi bất kỳ administrative role nào như
Scheduler_admin và ipm_full_database từ hoặc đến user nào, bao gồm chính user
khác hoặc DBA khác. Vì thế phải cần đối với các quyền này.
16


Tấn công Rootkit Oracle

2.1.6. Tài khoản Sys
Khi tạo database, user SYS được tạo tự động cùng và được gán role DBA.
Mật khẩu mặc định là change_on_install. Đây là tài khoản sở hữu database và data
dictionary.
Tất cả các base table và view trong database dictionary được lưu treong

schema SYS. Các table và view này là thiết yếu đối với sự vận hành của Oracle
Database. Để suy trì tính toàn vẹn của data dictionary, các table trong schema SYS
chỉ được thao tác bởi database. Không nên tạo các table hay chỉnh sửa gì trong
schema của user SYS. Dù có thể thay đổi tham số lưu trữ của data dictionary nếu
cần.
2.1.7. Tài khoản System
Đây cũng là tài khoản được tạo khi tạo database và nó cũng được gán role
DBA. User system thường sở hữu các table do Oracle cung cấp hơn là các
dictionary. User system có thể tạo thêm các table và view để cung cấp thông tin
qune trị cũng như về các table và view được dùng bởi các công cụ quản trị. Không
nên tạo các object bằng tài khoản này.
2.1.8. PL/SQL và một số khái niệm
SQL- ngôn ngữ truy vấn cấu trúc- là cách thức mà chúng ta hay dùng để truy
nhập để lấy data từ database. SQL cho chugns ta khả năng truy nhập hoàn toàn vào
data, tức là có thể lấy mọi thông tin dù có thể thông qua cách thức không lý tưởng
lắm. SQL không có sự đảm bảo về tính hiệu quả, không có sự vòng lặp, chỉ có thể
lấy mọi thông tin dù có thể thông qua cách thức không lý tưởng lắm. SQL không có
sự đảm bảo về tính hiệu quả, không có vòng lặp, chỉ có thể thực hiện chúng tại một
thời điểm, không có sự bảo vệ các mã lệnh, lưu mã lệnh trên sever thay vì client,
không xử lí ngoại lệ, không làm việc với các biến, tham số, object, record, array,
con trỏ…
Dù SQL khá là một công cụ mạnh mẽ nhưng nó vẫn chỉ là phương thức truy
nhập database hơn là một ngôn ngữ lập trình. PL/SQL khắc phục những nhược
điểm của SQL và có thêm những tính năng mới. PL/SQL là ngôn ngữ sử dụng cho
việc tạo các procedure, function, trigger và object được lưu trữ trong Oracle. Nó là
viết tắt của Procedure Language/SQL và trong đó rất nhiều đặc tính của các ngôn
ngữ lập trình gần đây. Nó cho phép thao tác dữ liệu và các cây lệnh query SQL bao
gồm các đoạn mã có cấu trúc mã khối và tính thủ tục, làm cho PL/SQL trở thành
một ngôn ngữ xử lý transaction mạnh mẽ.


17


Tấn công Rootkit Oracle

2.1.8.1. Anonymous Block
Anonymous block là các code không được lưu trữ, không được đặt tên.
Chúng được thực thi trong một session và từ session khác không thể gọi tới. để
thực hiện lại các anonymous block code, phải lưu nó lại thành file và chạy lại hoặc
thêm nó vào một chương trình khác. Anonymous block lý tưởng cho việc thực hiện
các công việc không phải lặp lại. Nó bắt đầu sống bằng Declare hoặc begin.
2.1.8.2. Procedure và Functions
Procedure là block code được cài đặt tên và được lưu trữ. Chúng có thể trả
về niith giá trị khi được thực thi nhưng không bắt buộc. Điều duy nhất phải đảm
bảo đó là việc thực hiện procedure thành công hay thất bại. Procedure được đặt tên
tại thời điểm tạo và mặc định người sở hữu là người tạo nó. Có thể thực thi
procedure từ dấu nhắc SQL*Plus, từ bên trong một mã SQL hoặc từ block code
PL/SQL khác.
Function cũng là khối code được lưu trữ và đặt tên. Cấu trúc của nó giống
với procedure chỉ khác ở chỗ luôn có giá trị trả về. Function có thể thực thi từ dấu
nhắc SQL*Plus, từ bên trong một mã SQL hoặc từ block code PL/SQL khác. Khi
thực thi một function, phải có quyền xử lý giá trị trả về
2.1.8.3. Package
Là tập hợp các procedure và function. Chúng có 2 phần: phần đặc tả(spec) và
phần body. Phần đặc tả là công khai, chỉ ra cấu trúc của package. Khi miêu tả một
package trong SQL*Plus, phần được hiển thị chính là phần đặc tả. Phần đặc tả luôn
được tạo và biên dịch trước body. Có thể tạo package với phần spec mà không cần
phải có body.
2.1.8.4. Xử lý các câu lệnh PL/SQL
Khi thực thi một block PL/SQL, code được truyền tới PL/SQL engine.

Engine có thể ở trong chính data server hoặc là một trong các tool có tích hợp
PL/SQL engine. Tiếp theo, code được phân tích cú pháp thành mã SQL chuyển tới
SQL engine hoặc SQL statement executor. Các câu lệnh thủ tục được chuyển tới
nơi thực thi thủ tục(Procedure Statement Excutor) để xử lý.
Các code PL/SQL có thể được interpret tức là các procedure, function,
package được biên dịch và lưu trữ ở dạng PL/SQL sau đó được Oracle chuyển đổi
thành ngôn ngữ C ở thời điểm chạy. Ở chế độ interpret, biên dịch PL/SQL nhanh
hơn nhưng việc thực thi code chậm hơn so với native compilation.
Native compilation có mặt đầu tiên trong phiên bản Oracle 9iR1 và được cải
tiến trong 10gR1. Nó chuyển PL/SQL thành C ngay tại thời điểm biên dịch. Điều
18


Tấn công Rootkit Oracle

này giúp việc thực thi nhanh hơn 30% vì không có sự chuyển đổi nào tại thời điểm
chạy.
2.2. 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 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.
Một số tương đồng về command và object giữa Oracle và OS*Nix
*NIX
command/object

Oracle command/object

Ps


SELECT *FROM V$PROCESS

Kill

Executable

ALTER SYSTEM KILL SESSION ’12,55’
View, package, function and procedure

Execute

SELECT
PROCEDURE

*

FROM

MY_VIEW

Cd

ALTER
SESSION
CURRENT_SCHEMA=USER01

Rm

Delete bal…(put in correct sytax)


fdisk

Drop tablespaces

EXEC
SET

Bảng 2.4. Tương đồng giữa database và OS

Thông thường có một thủ thật của rootkit OS thế hệ đầu tiên 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á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.
Đầu tiên, chúng ta thử tìm hiểu một số datadictionary 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.
19


Tấn công Rootkit Oracle

2.2.1. Tìm hiểu 1 số data dictionary view
DBA_JOBS
View dba_jobs lưu thông tin về tất cả jobs trong database. Thông tin về các
cột trong view này:

Column
Job

Comments
Xác định một job. Không 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 cng

Last_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 ko

thực thi)

This_sec

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

Next_date

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

Next_sec

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

Total_time

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

Brocken

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

Interval
Failures

Lập lịch chạy job lần tiếp thep
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


What

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

Nls_env

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

Misc_env

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

instance

ID của instance chạy hoặc có thể chạy job. Mặc định là 0
Bảng 2.6. View dba_jobs

20


Tấn công Rootkit Oracle

DBA_JOB_RUNNING
View Dba_job_running liệt kê thông tin về tất cả job đang chạy
Column_name
Failures

Comments

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

instance

ID của instance chạy job

Job

ID của job đang chạy

Last_date

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

Last_sec

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

SID

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

This_date

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

This_sec


Giống như this_date. Đó là lần thực hiện thành công cuối
cùng
Bảng 2.7. View dba_jobs_running

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

Mô tả

addr

Địa chỉ của process

Pid

Định danh của process

Spid

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

Username

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

Trace ID

Định danh file trace


Background

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

Latchwait

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

Latchspin

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

Pga_used_mem

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

Pga_alloc_mem

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

21


Tấn công Rootkit Oracle
Bảng 2.8. V$Process

V$Session
V$sesion 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$sesion:
Column

Nội dung

Saddr

Địa chỉ session

sid

Định danh session

Sarial#

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

Paddr

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

Event

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

Status


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

Logon_time

Thời gian logon

Username

Tên user

Command

Các lệnh đang xử lý

Type

Kiểu session
Bảng 2.9. V$Session

2.2.2. Khai thác các PL/SQL Package
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ó 2 phần: 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à
bneen 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.
Để 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


22


×