Bài giảng Rootkit

Rootkit là gì?

 Rootkit là một "kit" gồm các chương trình nhỏ và

hữu dụng cho phép attacker duy trì việc truy xuất

đến root (user có quyền lực nhất trên máy tính).

 Rootkit là một tập chương trình cho phép duy trì

sự hiện diện lâu dài và chắc chắn trên máy tính

mà không bị phát hiện bởi các phương tiện quản

trị và an ninh thông thường.

Các dịch vụ được cung cấp bởi Rootkit

 Command and Control (C2)

 Surveillance (giám sát thu thập)

 Concealment (che giấu)

 

Bài giảng Rootkit trang 1

Trang 1

Bài giảng Rootkit trang 2

Trang 2

Bài giảng Rootkit trang 3

Trang 3

Bài giảng Rootkit trang 4

Trang 4

Bài giảng Rootkit trang 5

Trang 5

Bài giảng Rootkit trang 6

Trang 6

Bài giảng Rootkit trang 7

Trang 7

Bài giảng Rootkit trang 8

Trang 8

Bài giảng Rootkit trang 9

Trang 9

Bài giảng Rootkit trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 44 trang duykhanh 4420
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Rootkit", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Rootkit

Bài giảng Rootkit
 ROOTKIT
1
 Rootkit là gì?
  Rootkit là một "kit" gồm các ch ươ ng trình nh ỏ và 
 hữu dụng cho phép attacker duy trì vi ệc truy xu ất 
 đế n root (user có quy ền lực nh ất trên máy tính).
  Rootkit là một tập ch ươ ng trình cho phép duy trì 
 sự hi ện di ện lâu dài và ch ắc ch ắn trên máy tính 
 mà không bị phát hi ện bởi các ph ươ ng ti ện qu ản 
 tr ị và an ninh thông th ườ ng.
2
 Các dịch vụ đượ c cung cấp bởi Rootkit
  Command and Control (C2)
  Surveillance (giám sát thu th ập)
  Concealment (che gi ấu)
3
 Rootkit là Post-Intrusion Tool
4
 Rootkit ho ạt độ ng nh ư th ế nào?
  Rootkits làm vi ệc dựa trên ph ươ ng th ức sửa đổ i. 
  Xác đị nh và s ửa đổ i các ph ần mềm khi ến cho 
 chúng đư a ra các quy ết đị nh sai lầm.
  Có nhi ều ch ỗ có th ể s ửa đổ i trong ph ần mềm.
5
 Patching
  Software logic có th ể bị thay đổ i nếu các data
 byte bị sửa đổ i. Kỹ thu ật này đượ c gọi là patching
  Byte patching là một trong nh ững kỹ thu ật chính 
 đượ c dùng bởi các ho ạt độ ng bẻ khóa ph ần 
 mềm.
6
 Easter Eggs
  Sự thay đổ i software logic có th ể đượ c thi ết lập một 
 cách cố ý từ đầ u.
  Ng ườ i lập trình có th ể đặ t một back door trong
 ch ươ ng trình do họ vi ết ra.
  Back door này không đượ c trình bày trong tài li ệu và 
 nó là đặ c tính bị gi ấu.
  Dạng này đượ c gọi là Easter Egg.
  Có th ể đượ c dùng nh ư ch ữ ký
7
 Spyware Modifications
  Một ch ươ ng trình sẽ sửa đổ i ch ươ ng trình khác 
 để chèn vào một spyware. Ví dụ spyware theo 
 dõi các website là ng ườ i dùng truy cập.
  Khó phát hi ện spyware
  Ví dụ: spyware đánh lừa các trình duy ệt hay
 shell, rất khó xóa chúng.
8
 Source-Code Modification
  Ng ườ i lập trình có th ể chèn vào mã ngu ồn các 
 dòng mã độ c.
  Một back door đượ c th ực hi ện nh ư một bug trong 
 ph ần mềm. Ví dụ một ch ươ ng trình bị cài một lỗ 
 hổng buffer overflow.
  Khó phát hi ện vì xem nh ư một bug
9
 Sử a đổ i trong User Mode
10
 Sử a đổ i trong Kernel Mode
11
 Cá c thủ thuậ t thông thườ ng
 Mu c̣ đi ch́ sau cu ng̀ la ̀ đă ṭ va ò bô ̣ nh ớ code hay data
 Sử a Data
 • Call Tables
 • Kernel Objects
 Sử a Code có sẵ n
 • In-Place Patching
 • Detour Patching
 Đệ trì nh Code mớ i
 • Filter Drivers
 • Hypervisors
 • DLL & Thread Injection
12 • COM & BHO Objects
 Call Tables
  Là mả ng củ a cá c con trỏ hà m (function pointers)
13
 Kernel Objects
  Không ph ải đố i tượ ng nh ư trong lập trình hướ ng 
 đố i tượ ng
  Là sự tr ừu tượ ng hóa tài nguyên hệ th ống
  Đượ c hi ện th ực nh ư một cấu trúc trong C
  Ví dụ: nt!_EPROCESS, nt!_DRIVER_OBJECT,
 nt!_TOKEN
  Có th ể ki ểm tra bằng kernel debugger
14
 In-Place Patching
 Có thể thay đổ i code mà không phả i thay đổ i hướ ng thự c thi
 Thay je SHORT $LN2@routine (đó là 0x74 0x24)
 bở i NOP NOP (đó là 0x90 0x90)
 Code ở trong ngoặ c luôn đượ c thự c thi!
15
 Detour Patching
 Trampoline là tấ m bạ t che giấ u
16
 Filter Drivers (1/2)
  Filter driver đượ c chè n và o mộ t stack hiệ n hữ u
17
 Filter Drivers (2/2)
 Can thiệ p và sử a đổ i cá c IRP (I/O Request Packet) 
 đi qua chú ng
18
 DLL & Thread Injection
  Cá ch hiệ u quả , Microsoft đã cà i đặ t cá c chứ c n ăng 
 chố ng lạ i nh ư UIPI*
19
 Nh ững gì không ph ải là rootkit
  Rootkit không ph ải là Exploit
  Rootkit không ph ải là Virus
 Virus Problem
 Các virus áp dụng công ngh ệ rootkit, do đó càng 
 khó phát hi ện và ng ăn ch ặn
20
 Mộ t số giả i phá p chố ng rootkit
21
Kernel bị xâm hại nh ư th ế 
nào?
22
 Các thành ph ần tr ọng yếu của 
 Kernel
  Process management 
  File access
  Security
  Memory management 
23
 Process management 
  Các process cần CPU time Kernel có code làm
 công vi ệc cấp phát CPU time.
  Nếu OS có dùng threads, kernel sẽ lập lịch cho 
 mỗi thread.
  Cấu trúc dữ li ệu trong bộ nh ớ theo dõi tất cả các
 thread và process bằng cách sửa đổ i các cấu 
 trúc dữ li ệu này, attacker có th ể ẩn một process.
24
 File access
  Các device driver đượ c nạp để ki ểm soát các hệ 
 th ống file khác nhau, nh ư FAT32, NTFS.
  Kernel cung cấp một giao ti ếp nh ất quán cho các 
 hệ th ống file bằng cách thay đổ i code trong 
 ph ần này của kernel, attacker có th ể gi ấu các file
 hay th ư mục một cách dễ dàng.
25
 Security
  Kernel ch ịu trách nhi ệm sau cùng trong vi ệc áp 
 đặ t các qui tắc gi ữa các processes
  Trên UNIX và MS-Windows, kernel áp đặ t quy ền 
 và dải bộ nh ớ cho mỗi process ch ỉ một vài sửa 
 đổ i code trong ph ần này có th ể vô hi ệu tất cả các
 cơ ch ế an ninh này.
26
 Memory management
  Trong một số nền tảng ph ần cứng, một đị a ch ỉ 
 bộ nh ớ có th ể đượ c ánh xạ sang nhi ều vị trí vật lý
 (hai process đượ c ánh xạ khác nhau).
  Khai thác cách th ức làm vi ệc này có th ễ 3 rất hữu 
 dụng để ẩn data đố i với các trình debug hay ph ần 
 mềm truy tìm ch ứng cứ (forensic software).
27
 Ti ếp tục sinh tồn với Reboot
  Rootkit driver ph ải đượ c nạp khi system boot.
  Cũng có nhi ều thành ph ần ph ần mềm đượ c nạp
 khi system boot
  Mi ễn là rootkit đượ c gắn với một trong các sự 
 ki ện trong quá trình boot đượ c li ệt kê trong 7
 slide kế ti ếp, nó cũng sẽ đượ c nạp.
28
 Dùng run key
  Run key (và các bi ến th ể của nó) có th ể dùng để 
 nạp bất kỳ ch ươ ng trình nào vào lúc boot.
  Ch ươ ng trình đượ c nạp có th ể gi ải nén và nạp
 rootkit.
  Rootkit có th ể ẩn run-key value một khi nó đã 
 đượ c nạp để không bị phát hi ện.
29
 Dùng một Trojan hay file bị nhi ễm
  Bất kỳ t ập tin .sys hay executable nào đượ c nạp 
 vào lúc boot đề u có th ể b ị thay th ế, hay loader 
 code có th ể đượ c chèn vào theo cách t ươ ng tự 
 nh ư virus nhi ễm vào một file.
  Một trojan DLL có th ể đượ c chèn vào search path
  Một DLL hi ện hữu có th ể b ị thay th ế m ột cách 
 đơ n gi ản.
30
 Dùng các tập tin .ini
  Các tập tin .ini có th ể bị thay đổ i khi ến cho các
 ch ươ ng trình đượ c ch ạy.
  Nhi ều ch ươ ng trình có các tập tin kh ởi độ ng có 
 th ể ch ạy các lệnh và ch ỉ ra các tập tin DLL để 
 nạp.
31
 Đă ng ký nh ư một driver
  Rootkit có th ể tự đă ng ký nh ư một driver đượ c phép 
 nạp vào lúc boot máy.
  Điều này yêu cầu tạo một registry key, tuy nhiên key 
 này sẽ ẩn một khi rootkit đã đượ c nạp.
32
 Đă ng ký nh ư một add-on 
 của một ứng dụng hi ện hữu
  Để b ổ sung một ch ức n ăng mở r ộng vào các trình 
 duy ệt web
  Ch ức n ăng mở r ộng đượ c nạp khi ứng dụng nạp
  Ph ươ ng pháp này khá hi ệu qu ả để n ạp rootkit.
33
 Sửa đổ i kernel ngay trên đĩ a
  Kernel có th ể bị sửa đổ i một cách tr ực ti ếp và 
 đượ c lưu trên đĩ a
  Ph ải thay đổ i một vài th ứ trong boot loader sao cho
 kernel sẽ bỏ qua th ủ tục ki ểm tra tính toàn vẹn theo
 checksum (checksum integrity check)
  Kernel sẽ bị thay đổ i vĩnh vi ễn và không có dirver 
 nào ph ải đă ng ký.
34
 Sửa đổ i boot loader
  Boot loader có th ể bị sửa đổ i để áp đặ t các bản 
 vá vào kernek tr ướ c khi nạp.
  Ưu điểm là kernel file không có bi ểu hi ện bị thay 
 đổ i nếu hệ th ống đượ c phân tích offline.
  Vi ệc sửa đổ i boot-loader hoàn toàn có th ể bị phát 
 hi ện bởi các công cụ thích hợp.
35
 Đệ trình code vào Kernel
  Một cách đệ trình code vào kernel là dùng một 
 module có th ể n ạp, đượ c gọi là device driver hay 
 kernel driver.
  Hầu hết các hệ điều hành hi ện đạ i đề u cho phép 
 các ch ức năng mở rộng của kernel đượ c nạp (hỗ 
 tr ợ cho các nhà ch ế tạo ph ần cứng th ứ ba)
  Bất kỳ code nào đề u có th ể đượ c đệ trình thông 
 qua một driver (không ph ải ch ỉ cho thi ết bị ngo ại 
36 vi) full access to computer
 Module tiêu bi ểu 
  Linux-loadable module
 int init_module(void)
 {
 }
 void cleanup_module(void)
 {
 }
  Trong Windows device driver, entry point ph ải 
 đă ng ký function callbacks
 NTSTATUS DriverEntry( ... )
 {
 theDriver->DriverUnload = MyCleanupRoutine;
 }
 NTSTATUS MyCleanupRoutine()
 {
37 }
 Xây dựng Windows Device Driver
38
 Device Driver đơ n gi ản
 #include "ntddk.h"
 NTSTATUS DriverEntry( IN PDRIVER_OBJECT 
 theDriverObject,
 IN PUNICODE_STRING theRegistryPath )'
 {
 DbgPrint("Hello World!");
 return STATUS_SUCCESS;
 }
39
 Bộ công cụ phát tri ển Device Driver
  Driver Development Kit (DDK)
  Windows 2003 DDK.
  Can build drivers for Windows XP, using this 
 version of the DDK
  The DDK provides two different build 
 environments: the checked and the free build 
 environments
40
 Unload Routine
  Khi tạo một driver, tham số theDriverObject đượ c 
 truy ền vào hàm main của driver. Nó ch ỉ đế n một cấu 
 trúc dữ li ệu ch ức các con tr ỏ hàm. Một trong các con 
 tr ỏ này đượ c gọi là "unload routine."
  Nếu unload routine đượ c set thì driver có th ể đượ c
 unload kh ỏi bộ nh ớ.
  Ng ượ c lại, không th ể unload driver kh ỏi bộ nh ớ, cần 
 ph ải boot lại.
41
 Th ủ t ục set con tr ỏ unload routine
  Tr ướ c hết cần tạo một hàm unload function, sau đó cài đặ t 
 con tr ỏ unload:
 VOID OnUnload( IN PDRIVER_OBJECT DriverObject )
 {
 DbgPrint("OnUnload called\n");
 }
 NTSTATUS DriverEntry(IN PDRIVER_OBJECT 
 theDriverObject,
 IN PUNICODE_STRING theRegistryPath)
 {
 DbgPrint("I loaded!");
 // Initialize the pointer to the unload function
 // in the DriverObject
 theDriverObject->DriverUnload = OnUnload;
42 return STATUS_SUCCESS;}
 Loading và Unloading một Driver
  PnPUtil 
  Thêm một gói driver vào kho driver
  Li ệt kê các gói driver trong kho
  Xóa gói driver
43
 HẾT
44

File đính kèm:

  • pdfbai_giang_rootkit.pdf