Tấn công rootkit trong Oracle 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.
Trang 1KHOA 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
Trang 2KHOA 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:
Trang 3Mụ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
Trang 4Lờ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áccô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ườidù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ậtquố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ềucự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ấuvế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ủaattacker 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ậttoà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ẹpnê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 độngtrong 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ácgó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
Trang 5nở tiếp nhận các góp ý qua hòm thư: akalololala@gmail.com Nhóm em xin chânthà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
Trang 6Danh 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
Trang 7này, malware sẽ thực hiện dễ dang hơn nếu có sự trợ giúp của rootkit Vì thế cácmalware đầ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ấynă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 websiterootkit.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 MarkRusonovich 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ộtcá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ảitiế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ấpbả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ữngnhữ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ữnghacker máy tính đã itmf ra cách mới và hiện quả để tấn công Các chương trình chegiấu và rootkit cho thấy một nguy cơ cận kề về an ninh mạng Thực tế, ngày6/12/2005 tạp chí eweek đã công bố răng có tới 20% malware bị phát hiện trênWindows XP SP2 là các rootkit trong số malware là 14%, trong khi tại thời điểncủ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àythườ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ôngbiết Rootkit có ở nhiều loại hệ điều hành như Linux, Solaris và các phiên bảnMicrosoft 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)
Trang 8Thuậ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áclệ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ànhkhông Unix như Microsoft Windows (ngay cả khi hệ điều hành đó không có tàikhoả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ự tintưở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ùngquan trọng và quyết định
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 hayregedit 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 Usermode rootkit chỉ có thể hook các table trong phạm vi không gian địa chỉ dành chouser(các bảng IAT,EAT) hoặc có thể chèn các jump vào API mức user để thay cácsystem call sang function của rootkit
Có hai kiểu hook là priviledge hook và unpriviledge hooks User moderootkit là các unpriviledge, trong khi kernel mode rootkit là priviledge hook Ở mỗikiểu hook khác nhau về quyền hệ thống đều sử dụng kỹ thuật hook giống nhau Kỹ
Trang 9thuật hooking API và thay đổi địa chỉ API: user mode rootkit sẽ chặn các lời gọihàm API và thay đổi địa chỉ API trong IAT thuộc tiến trình của user, sau đó trỏ tờirootkit function thay vì Windows API functions Cả user mode và kernel moderootkit 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 moderootkit chỉ cho thể chỉnh sửa table nào thuộc về chương trình user Mỗi chươngtrì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 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 APItươ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 TaskManager 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ếntrình đang được kích hoạt nên user mode rootkit ít hiệu quả bằng kernel moderootkit 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 khikhở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ànhkhác nhau Cơ chết điều khiển thông qua đặc quyền mà nó giành được đặc biệtquyề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ươngtrì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ươngtrì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áckhả năng xử lý, nó sẽ phải dùng tạo các system call tới kernel Ví dụ, user clickchuộ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ìnhmứ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ênchứa địa chỉ của tất cả API hoặc system function mà nó sẽ cần gọi tới Bảng đó
Trang 10đượ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ònkhá 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ý trungtâ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ểnnhiề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ảitươ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ộtdriver sẽ chuyển hướng các system function call sang mã lập trình của nó để thihà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ảithay đổ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áthiện ra rootkit này Non-persister rootkit có vẻ như ít đe dọa tới những ai mà việckhở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àngtră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
Trang 11Chươ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ệ chophép quản lý thông tin một cách toàn diện Oracle server bao gồm hai thành phầnchí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ềuhà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 Sharedpool: 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ủaShared 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ơitham 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
Trang 12Background process (các tiến trình nền) thực hiện các chwucs năng thay cholờ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 trongtham số DB_NAME của parameter file Về mặt vật lý, database gồm các controlfile, 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…
Trang 13Hì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ànhphầ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 haynhiề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
Trang 14nhwu 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ệucủ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ưacommit đố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
Trang 15Oracle thực hiện cấp phát vùng không gian lưu trữ một cách linh hoạt mỗikhi 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 trongOracle database, là trái tim của oracle database, chứa các thông tin về chínhdatabase 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ạobởi file script sql.bsq trong quá trình tạo database Nó gồm các table chỉ đọc, cungcấp thông tin về mọi khía cạnh của Oracle database, các định nghĩa về schemaobject, không gian lưu trữ, database security, thông tin audit…Các dữ liệu trênOracle 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 Language-DDL) Để biết các data dictionary view mà chúng ta có thể xem,truy vẫn viewDictionary
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,Allview, 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ácschema 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ấpquyền SELECT ANY TABLE
Trang 16Một số data dictionary view:
Các thông tin kiểm tra
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ênquan tới performance(hiệu năng) Mặc dù các view này có vẻ như là các tablethông thường trong database, nhưng thực ra thì không Các view này lấy thông tintrê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ôngthể cập nhật hay thay đổi gì đối với thông tin nguồn Có thể truy vấn dynamicperformance view để xuất dữ liệu Tuy nhiên, chỉ có các truy vấn đơn giản được hỗ
Trang 17trợ 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épthô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ấythô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ôngtin 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ớigầ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ựcthi(execute) các stored program (procedure, function, package) được sở hữu bởi đốitượng khác Privilege cũng cho phép user thực hiện các hoạt động mức hệ thốngnhư kết nối tới database, tạo table, chỉnh sửa database Các privilege có thể đượcgá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 datadictionary 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 tablechứ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ônglàm ảnh hưởng database Oracle có 2 loại quyền chính là : Object privilege systemprivilege để 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 địnhnghĩa, operator, index Để sử dụng một schema object thuộc sở hữu của người dùngkhác, cần có privilege trên object đó Xem thông tin về các object privilege qua cácview all_tab_privs_made hoặc user_tab_privs_made Có nhiều kiểu objectprivilige 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 chotan;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
Trang 18System privilege là quyền cho phép vận hành database, như kết nối đếndatabase, tạo user, chỉnh sửa database, sử dụng dung lượng của tablespace Các câulệ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, đượcliệt kê trong data dictionary view System_privilege_map Một số system privilegetrong Oracle 10g.
Quyền đối tượng với
database
Alter database, alter system Auditsystem, 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ườiquản trị phải được gán một trong 2 quyền này Quyền hệ thống sysdba và sysopercho 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ềnrestricted session
Connect tới database với tài khoản sys Khi kết nối tới
Trang 19database với quyền sysdba, schema của user là sysSysoper Startup, Shutdown database
Thiết lập chế dộ backup, recover databaseQuyề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ủauser lả public
Cùng với Sysdba và sysoper là một quyền cũng rất mạnh là select anydictionary: 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ậphợ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 usermột và có thể dễ dàng thu hổi role về oracle định nghĩa trước một số role Đó là:
Connect Create session, alter session, create snnonym, create
view, create database link, create cluster, create sequenceResource Create table, create cluster, create sequence, create
trigger, create procedure, create type, create indextype, createopentor
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 userkhác hoặc DBA khác Vì thế phải cần đối với các quyền này
Trang 202.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à datadictionary
Tất cả các base table và view trong database dictionary được lưu treongschema SYS Các table và view này là thiết yếu đối với sự vận hành của OracleDatabase Để suy trì tính toàn vẹn của data dictionary, các table trong schema SYSchỉ được thao tác bởi database Không nên tạo các table hay chỉnh sửa gì trongschema của user SYS Dù có thể thay đổi tham số lưu trữ của data dictionary nếucầ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 roleDBA User system thường sở hữu các table do Oracle cung cấp hơn là cácdictionary User system có thể tạo thêm các table và view để cung cấp thông tinqune trị cũng như về các table và view được dùng bởi các công cụ quản trị Khôngnê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 để truynhập để lấy data từ database SQL cho chugns ta khả năng truy nhập hoàn toàn vàodata, 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ưởnglắ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ộtthờ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 truynhậ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 choviệ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ônngữ 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 baogồ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ànhmột ngôn ngữ xử lý transaction mạnh mẽ
Trang 212.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ặcthêm nó vào một chương trình khác Anonymous block lý tưởng cho việc thực hiệncá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 đảmbảo đó là việc thực hiện procedure thành công hay thất bại Procedure được đặt têntạ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 thiprocedure từ dấu nhắc SQL*Plus, từ bên trong một mã SQL hoặc từ block codePL/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ốngvới procedure chỉ khác ở chỗ luôn có giá trị trả về Function có thể thực thi từ dấunhắc SQL*Plus, từ bên trong một mã SQL hoặc từ block code PL/SQL khác Khithự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ộtpackage 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ầnphả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ợpPL/SQL engine Tiếp theo, code được phân tích cú pháp thành mã SQL chuyển tớiSQL engine hoặc SQL statement executor Các câu lệnh thủ tục được chuyển tớinơ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 đổithành ngôn ngữ C ở thời điểm chạy Ở chế độ interpret, biên dịch PL/SQL nhanhhơ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ảitiến trong 10gR1 Nó chuyển PL/SQL thành C ngay tại thời điểm biên dịch Điều
Trang 22nà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ểmchạ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
ALTER SYSTEM KILL SESSION ’12,55’
Executable View, package, function and procedure
Execute SELECT * FROM MY_VIEW EXEC
PROCEDURE
CURRENT_SCHEMA=USER01
Rm Delete bal…(put in correct sytax)
fdisk Drop tablespaces
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àikhoản lệnh ở trong OS*Nix như ps, who và top đã bị thay thế bằng phiên bản củaTrojan, 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 tungcủ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 datadictionary view là sys.user$, v$pwfile_users…Vì vậy attacker cần can thiệp vàosource 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ấpthô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ủauser 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
Trang 232.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áccột trong view này:
Column Comments
Job Xác định một job Không thay đổi nó dù thực hiện
import hay export nhiều lầnLog_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 đầuNext_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ếpTotal_time Tổng thời gian sử dụng hệ thống của job, tính theo giâyBrocken 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 jobInterval Lập lịch chạy job lần tiếp thep
Failures 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ấtWhat Body của block anonymous PL/SQL mà job này thực
hiệnNls_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
Trang 24Job 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ấtSID 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
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ôngLatchwait Đị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
Trang 25Bả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áchche giấu thông tin về các process ở trong các view này Một số thông tin trong viewv$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ácdù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