Xây dựng bộ công cụ(driver) theo dõi hành vi mạng chạy trên windows 7

  • Số trang: 120 |
  • Loại file: PDF |
  • Lượt xem: 19 |
  • Lượt tải: 0
minhtuan

Đã đăng 15929 tài liệu

Mô tả:

TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN–TRUYỀN THÔNG BM. MTT & TT LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC Đề tài: Xây Dựng Bộ Công Cụ(Driver) Theo Dõi Hành Vi Mạng Chạy Trên Windows 7 GV hướng dẫn: Sinh viên thực hiện: TS. Lê Văn Lâm Lai Quốc Đạt(1101728) HỌC KỲ 2 – 2013 - 2014 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm LỜI CẢM ƠN Tôi xin chân thành cám ơn các thầy, các cô Khoa Công nghệ thông tin & Truyền thông trường Đại học Cần Thơ đã cung cấp cho tôi những nền tảng kiến thức hữu ích và giá trị để tôi có thể hoàn thành được đề tài của mình. Tôi xin được gửi lời cảm ơn chân thành đến TS.Lê Văn Lâm, thầy đã hướng dẫn và chỉ bảo tôi rất nhiệt tình cũng như khơi gợi cho tôi rất nhiều ý tưởng trong suốt quá trình thực hiện đề tài luận văn này. Tôi cũng xin gửi lời cảm ơn đến những người bạn của tôi. Các bạn đã giúp đỡ tôi rất nhiều trong việc tìm kiếm tài liệu, lời khuyên hữu ích và hướng dẫn tôi trong việc lập trình có hiệu quả. Cuối cùng, tôi xin cám ơn đến gia đình và người thân đã luôn tiếp thêm nguồn động và tinh thần cho tôi, giúp đỡ và chăm sóc tôi trong suôt quá trình học tập và thời gian thực hiện luận văn này. Cần Thơ, ngày 16 tháng 05 năm 2014 Sinh viên LAI QUỐC ĐẠT Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 1 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm MỤC LỤC LỜI CẢM ƠN .......................................................................................................... 1 MỤC LỤC ................................................................................................................ 2 PHỤ LỤC BẢNG .................................................................................................... 6 PHỤ LỤC HÌNH ẢNH .......................................................................................... 7 CHÚ THÍCH TIẾNG ANH .................................................................................. 8 CHƯƠNG MỘT: TỔNG QUAN ............................................................................. 9 I. ĐẶT VẤN ĐỀ ............................................................................................................... 9 II. MỤC TIÊU - PHẠM VI ĐỀ TÀI .............................................................................. 9 1. Mục Tiêu ................................................................................................................... 9 2. Phạm Vi Đề Tài ...................................................................................................... 10 CHƯƠNG HAI: CƠ SỞ LÝ THUYẾT................................................................. 11 I. TỔNG QUAN VỀ DRIVER ...................................................................................... 11 1. Driver là gì? ............................................................................................................ 11 2. Các Loại Driver Trong Windows ......................................................................... 12 II. TỔNG QUAN VỀ WINDOWS 7 KERNEL MODE DRIVERS ......................... 14 1. Windows Driver Foundation (WDF) ................................................................... 14 1.1 WDF Object Model ........................................................................................... 15 1.2 Driver framework .............................................................................................. 17 1.3 Driver Object và Device Object ......................................................................... 18 1.3.1 Driver Object .............................................................................................. 18 1.3.2 Device Object .............................................................................................. 19 1.4 Driver Stack và Devie Stack.............................................................................. 20 1.4.1 Device Node và Device Stack ..................................................................... 20 1.4.2 Driver Stack ................................................................................................ 21 2. Kernel Mode Driver Framework (KMDF).......................................................... 22 2.1 Những thành phần của KMDF ........................................................................ 22 2.2 Device object và vai trò của driver.................................................................... 23 2.2.1 Function driver và Function Device Object ............................................... 23 2.2.2 Filter driver và Filter device objects .......................................................... 24 2.2.3 Bus driver và Physical device objects ......................................................... 24 2.3 I/O Request Handle........................................................................................... 26 2.3.1 I/O Request Flow ........................................................................................ 26 2.3.2 I/O Queues .................................................................................................. 27 2.3.3 Retrieving Buffers from I/O Request ........................................................... 28 2.3.4 I/O Targets .................................................................................................. 29 2.3.5 Creating Buffers for I/O Request ................................................................ 30 2.3.6 Canceled & Supended Requests.................................................................. 30 2.4 Completing I/O Request .................................................................................... 32 2.5 I/O Transfer Type.............................................................................................. 33 2.5.1 Buffered I/O ................................................................................................ 33 2.5.2 Direct I/O .................................................................................................... 33 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 2 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm 2.5.3 Neither Buffered nor Direct I/O .................................................................. 33 3. I/O REQUEST PACKET ...................................................................................... 33 3.1 Cấu Trúc IRP .................................................................................................... 33 3.2 I/O Stack Location ............................................................................................ 36 3.3 IRP Major Function Code ................................................................................ 37 3.4 Xử Lý IRP.......................................................................................................... 39 3.4.1 Tạo IRP ....................................................................................................... 39 3.4.2 Chuyển Tiếp IRP Đến Dispatch Routine .................................................... 40 3.4.3 Hoàn Thành IRP ......................................................................................... 40 III. NHỮNG KIẾN THỨC HỖ TRỢ ........................................................................... 42 1. Đồng Bộ Hoá........................................................................................................... 42 1.1 IRQL Là Gì?...................................................................................................... 42 1.2 Spin Lock và Mutex .......................................................................................... 43 1.3 Các Đối Tượng Đồng Bộ Hoá .......................................................................... 44 2. Memory Pool .......................................................................................................... 45 3. Input/Output Control (IOCTL) ........................................................................... 46 IV. WINDOWS FILTERING PLATFORM(WFP) .................................................... 47 1. Kiến Trúc Tổng Quan Của WFP .......................................................................... 47 2. Các thành phần của WFP ..................................................................................... 48 3. Trình điều khiển Windows Filtering Platform Callout: ..................................... 49 3.1 Giới thiệu Windows Filtering Platform Callout. ............................................. 49 3.2 Các bước để phát triển một trình điều khiển WFP Callout: ........................... 50 3.3 Những điều cần lưu ý khi viết một chương trình Callout Driver:.................. 51 4. Xây dựng một trình điều khiển WFP Callout: .................................................... 52 4.1 Một số định nghĩa trong trình điều khiển WFP Callout:................................ 52 4.1.1 Callout: ....................................................................................................... 52 4.1.2 Callout Driver:............................................................................................ 52 4.1.3 Callout Function: ........................................................................................ 52 4.1.4 Filter: .......................................................................................................... 52 4.1.5 Filter Engine: .............................................................................................. 53 4.1.6 Filtering Layer:........................................................................................... 53 4.2 Defining and Exporting New GUIDs: ............................................................. 53 4.3 Thực thi một Callout Driver: ............................................................................ 54 4.3.1 Khởi tạo một Callout Driver: ..................................................................... 54 4.3.2 Xử lý Notify Callouts: ................................................................................. 60 4.3.3 Xử lý Classify Callouts: .............................................................................. 63 4.3.4 Xử lý Delete Flow Callout: ......................................................................... 65 4.3.5 Gở bỏ một Callout Driver: ......................................................................... 66 4.4 Xác định Callout Classify cho Callout Driver: ................................................ 68 V. CÔNG CỤ LẬP TRÌNH DRIVER VÀ HỖ TRỢ .................................................. 71 1. Cài Đặt Visual Studio 2008 và Visual DDK/WDK ............................................. 71 1.1 Visual Studio 2008 ............................................................................................ 71 1.2 Visual DDK/WDK ............................................................................................. 72 2. Build Driver ............................................................................................................ 73 3. Install Driver .......................................................................................................... 74 4. View Driver Output ............................................................................................... 74 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 3 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm 5. WinDbg và VMWare ............................................................................................. 75 CHƯƠNG BA: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU.............................. 78 I. CÁCH VIẾT MỘT DRIVER ĐƠN GIẢN ............................................................... 78 1. Tạo và Giải Thích Tập Tin Makefile.................................................................... 78 2. Tạo và Giải Thích Tập Tin SOURCES ................................................................ 78 3. Tạo và Giải Thích Tập Tin .c ................................................................................ 79 3.1 Vai Trò và Phân Loại Header File................................................................... 80 3.2 DriverEntry Routine ......................................................................................... 81 3.3 UnloadDriver Routine....................................................................................... 83 II. YÊU CẦU ĐỀ TÀI .................................................................................................... 83 III. XÂY DỰNG CALLOUT DRIVER CONNECTMONITOR............................... 84 1. Kiến trúc mạng và mô hình OSI trên Windows.................................................. 84 1.1 Physical layer: ................................................................................................... 84 1.2 Data Link Layer ................................................................................................ 85 1.3 Network Layer ................................................................................................... 85 1.4 Transport Layer................................................................................................. 85 2. Callout Driver ConnectMonitor ........................................................................... 86 2.1 Giới thiệu ConnectMonitor: ............................................................................. 86 2.2 Sự kiện mong muốn của Driver Callout ConnectMonitor: ............................ 86 2.3 Cách thức hoạt động của ConnectMonitor: .................................................... 87 2.3.1 DriverEntry: ................................................................................................ 87 2.3.2 HpcConMonitorRegisterCallouts: .............................................................. 88 2.3.3 HpcConMonitorRegisterALEClassifyCallouts ........................................... 90 2.3.4 HpcConMonitorRegisterTransportCallouts ............................................... 91 2.3.5 HpcConMonitorALEConnectClassify ......................................................... 92 2.3.6 HpcConMonitorALEConnectNotify ............................................................ 94 2.3.7 HpcConMonitorALERecvAcceptClassify ................................................... 94 2.3.8 HpcConMonitorALERecvAcceptNotify....................................................... 96 2.3.9 HpcConMonitorTransportClassify ............................................................. 96 2.3.10 HpcConMonitorTransportNotify .............................................................. 98 2.3.11 HpcConMonitorUnregisterCallouts ......................................................... 98 2.3.12 UnloadDriver ............................................................................................ 98 2.4 Kết Quả Hoạt Động Của Callout Driver ConnectMonitor. ............................ 99 IV. PHỤ LỤC CÁC THỦ TỤC & CẤU TRÚC SỬ DỤNG TRONG LẬP TRÌNH DRIVER ........................................................................................................................ 101 1. Phụ Lục Các Thủ Tục .......................................................................................... 101 1.1 RtlInitUnicodeString....................................................................................... 101 1.2 RtlUnicodeStringCat ....................................................................................... 101 1.3 RtlUnicodeStringCatString............................................................................. 102 1.4 RtlUnicodeStringCopy .................................................................................... 102 1.5 ObQueryNameString ...................................................................................... 103 1.6 IoCreateDevice ................................................................................................ 104 1.7 IoCreateSymbolicLink .................................................................................... 105 1.8 PsLookupProcessByProcessId........................................................................ 105 1.9 ObOpenObjectByPointer ................................................................................ 106 1.10 ZwQueryInformationProcess ....................................................................... 107 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 4 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm 1.11 MmGetSystemRoutineAddress ..................................................................... 108 2. Phụ Lục Các Cấu Trúc ........................................................................................ 109 2.1 Cấu trúc DEVICE_OBJECT.......................................................................... 109 2.2 Cấu Trúc FAST_IO_DISPATCH .................................................................. 114 CHƯƠNG BỐN: KẾT LUẬN - HƯỚNG PHÁT TRIỂN ................................. 118 I. KẾT LUẬN ............................................................................................................... 118 II. HƯỚNG PHÁT TRIỂN ......................................................................................... 118 TÀI LIỆU THAM KHẢO................................................................................. 118 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 5 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm PHỤ LỤC BẢNG Bảng 01. KMDF object type được sử dụng phổ biến ................................. 17 Bảng 02. Các thành phần của KMDF .......................................................... 22 Bảng 03. Một số IRP major function code .................................................. 38 Bảng 04. Một số routine dùng cho Spin Lock ............................................. 43 Bảng 05. Kernel dispatch objects ................................................................. 44 Bảng 06. Một số routine dùng cho event ..................................................... 44 Bảng 07. Một số routine dùng cho timer ..................................................... 45 Bảng 08. Một số routine liên quan đến bộ nhớ ........................................... 45 Bảng 09. Một số hành động và kết quả để kiểm tra ConnectMonitor...... 99 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 6 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm PHỤ LỤC HÌNH ẢNH Hình 01. Mối quan hệ giữa Application, OS và Driver................................... 11 Hình 02. Yêu cầu được giải quyết qua nhiều driver ........................................ 11 Hình 03. Sofware driver................................................................................... 12 Hình 04. Sơ đồ mô tả sự tương tác giữa user-mode và kernel-mode .............. 13 Hình 05. Các loại driver trong kernel-mode ................................................... 13 Hình 05. Windows Driver Foundation và Driver Life Cycle .......................... 14 Hình 07. Standard routines that driver must have .......................................... 18 Hình 08. Mối quan hệ giữa device object và I/O manager ............................. 20 Hình 09. Device stack trong kernel-mode ....................................................... 21 Hình 10. Driver stack....................................................................................... 22 Hình 11. Luồng xử lý IRP ................................................................................ 26 Hình 12. Mối quan hệ song song gữa driver và I/O stack location ................ 36 Hình 13. Quá trình xử lý IRP tiêu chuẩn ......................................................... 39 Hình 14. Kiến trúc của WFP ........................................................................... 47 Hình 15. cài đặt DDK/WDK ............................................................................ 73 Hình 16. OSR Loader....................................................................................... 74 Hình 17. DebugView ........................................................................................ 75 Hình 18. Tuỳ chọn khi khởi động máy ảo ........................................................ 77 Hình 19. Mô hình tham khảo OSI .................................................................... 84 Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 7 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm CHÚ THÍCH TIẾNG ANH Viết tắc Driver Driver object Device Device object OS Filter Filter Engine Filter Layer Network Connect Receive Transport Chú Thích Trình điều khiển Đối tượng trình điều khiể Thiết bị Đối tương thiết bị Hệ điều hành Lọc Bộ Lọc Lớp lọc Mạng Kết nối Nhận Vận Chuyển Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 8 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm CHƯƠNG MỘT: TỔNG QUAN I. ĐẶT VẤN ĐỀ Khi người sử dụng dùng trình duyệt web để truy cập đến các trang web trên mạng Internet, trình duyệt web sẽ nối kết đến các máy phục vụ web (web server), yêu cầu tải nội dung mà người dùng yêu cầu và hiển thị nội dung yêu cầu. Tuy nhiên, nếu người dùng truy cập vào các trang web độc hại (malicious web pages), ngoài những thông tin mà người dùng yêu cầu, trình duyệt web có thể nhận được những mã lệnh độc hại, thực thi mã lệnh này trên máy tính người dùng. Quá trình này được gọi là drive-by-download. Kết quả của quá trình này có thể là máy tính của người sử dụng sẽ bị cài đặt một cách tự động các chương trình virus máy tính hoặc các chương trình gián điệp. Nguy hiểm hơn, máy tính người dùng có thể trở thành một nút trên một hệ thống phân tán tấn công từ chối dịch vụ(DDos) được điều khiển từ xa. Một trong các phương pháp để phát hiện và phân tích tấn công drive-bydownload là sử dụng High-interaction Client honeypot. Trong phương pháp này, người ta xây dựng một số hệ thống người dùng đầu cuối với hệ điều hành và các ứng dụng cụ thể trên đó. Ngoài ra, người ta xây dựng và các chương trình theo dõi các thông số trong hệ thống trên các hệ thống đầu cuối này. Sau đó, các hệ thống người dùng đầu cuối sẽ được điều khiển để chạy ứng dựng duyệt web, nối kết đến các trang web cần kiểm tra tính nguy hiểm. Các thông số theo dõi trên hệ thống sẽ được phân tích và cho ra kết quả để đưa ra quyết định là các trang web đó có xảy ra tấn công drive-by-download hay không. Một trong các công cụ High-interaction client honeypot được sử dụng phổ biến nhất hiện nay là Capture-HPC của Đại học Victoria, Welllington, New Zealand. Tuy nhiên, ứng dụng này được xây dựng chạy trên nền tảng của Windows XP – Một hệ điều hành khá phổ biến trong thời gian trước đây. Nhưng hiện tại số Microsoft đã chính thức khai tử Windows XP và khuyên người dùng chuyển sang sử dụng các Hệ điều hành mới hơn. Mặc khác, xu hướng của người dùng hiện tại đang chuyển dần sang sử dụng Windows 7. Chính vì vậy, việc chuyển đổi ứng dụng Capture-HPC để có thể chạy trên Windows 7 là một yêu cầu cấp thiết phục vụ cho nghiên cứu tấn công drive-by download. Đề tài này sẽ thực hiện một trong các bước khá quan trọng trong quá trình chuyển đổi: Xây dựng các bộ công cụ(Driver) theo dõi hành vi chạy trên nền Windows 7. II. MỤC TIÊU - PHẠM VI ĐỀ TÀI 1. Mục Tiêu Nhằm cung cấp một cái nhìn tổng quát về Driver cũng như các đặt điểm cơ bản và cách thức hoạt động của nó trên môi trường Windows nói chung và Windows 7 nói riêng, giúp cho mọi người tiếp cận Driver một cách thuận tiện và dễ dàng hơn. Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 9 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Thêm vào đó là giới thiệu các nền tảng để xây dựng một Driver trên Windows 7 bao gồm mô hình phát triển Driver thế hệ tiếp theo của Microsoft Windows Driver Foundation(WDF) và nền tảng phát triển Driver Network Windows Filtering Platform (WFP), thay thế cho công nghệ Transport Driver Interface (TDI) chỉ có trên Windows XP và các phiên bản trước. Với sự hỗ trợ của Phần mềm Visual Studio 2008 và bộ công cụ Visual DDK/WDK, cùng với những kiến thức được giới thiệu ở trên chúng ta sẽ bắt đầu xây dựng một Driver đơn giản chạy trên Windows 7. Mục tiêu quan trọng nhất của đề tài này là phải xây dựng được các bộ công cụ(Driver) theo dõi hành vi chạy trên nền Windows 7. Đề tài này chúng em sẽ phát triển các Driver theo dõi hành vi của tiến trình(Process), thanh ghi(Registry), hệ thống tập tin(File System) và dữ liệu mạng(Network). 2. Phạm Vi Đề Tài Nghiên cứu về các nền tảng để xây dựng một Driver gồm có Windows Driver Foundation(WDF) và Windows Filtering Platform (WFP). Nghiên cứu về Driver và cách tạo một Driver cơ bản. Xây dựng các bộ công cụ theo dỗi hành vi trên Windows 7 bao gồm các Driver sau: Process Driver: theo dõi việc tạo(Create) hoặc đóng(Close) một tiến trình trên Windows 7 Registry Driver: theo dõi các sự kiện liên quan đến thanh ghi như: mở một key(OpenKey), tạo(CreateKey), xóa(DeleteKey)… File System Driver: theo dõi hệ thống tập tin cũng như các sự kiện xảy ra trên tập tin đó. Connect Driver: theo dõi các gói tin và các thông tin về nó như là địa chỉ IP, cổng, các giao thức mạng, và các ứng dụng,… Đồng thời xác định được trạng thái của gói tin đó(Connect, Receive hay Transport). Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 10 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm CHƯƠNG HAI: CƠ SỞ LÝ THUYẾT I. TỔNG QUAN VỀ DRIVER 1. Driver là gì? Hầu hết những định nghĩa về driver là “A driver is software that allows your computer to communicate with hardware or devices” – Driver là một phần mềm cho phép máy tính (hoặc OS) của bạn giao tiếp với phần cứng hoặc thiết bị. Ví dụ, một ứng dụng cần đọc một vài dữ liệu từ một thiết bị. Ứng dụng gọi một hàm được thực thi bởi hệ điều hành, và hệ điều hành gọi một hàm được thực thi bởi driver. Driver thì được viết bởi cùng công ty thiết kế và sản xuất thiết bị. Sau khi driver lấy dữ liệu từ thiết bị, nó trả dữ liệu về cho hệ điều hành, hệ điều hành trả dữ liệu về ứng dụng. Hình 01. Mối quan hệ giữa Application, OS và Driver Lưu ý: Không phải tất cả driver đều được viết bởi cùng công ty thiết kế và sản xuất thiết bị. Trong một số trường hợp, thiết bị được thiết kế theo tiêu chuẩn chung nên driver có thể được viết bởi Microsoft. Không phải tất cả driver đều giao tiếp trực tiếp với thiết bị. Yêu cầu xuất phát từ ứng dụng có thể được giải quyết qua nhiều driver trong một ngăn xếp thiết bị như hình bên dưới. Hình 02. Yêu cầu được giải quyết qua nhiều driver Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 11 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Driver trong ngăn xếp giao tiếp trực tiếp với thiết bị được gọi là Function Driver; Driver mà thực thi những xử lý phụ thì được gọi là Filter Driver. Một vài Filetr Driver theo dõi và ghi chép lại thông tin về I/O request nhưng mà không tham gia tích cực trong việc xử lý. Ví dụ, những filter driver xác định thì hành động như là xác nhận để đảm bảo cho những driver khác trong ngăn xếp xử lý chính xác I/O request. Tuy nhiên định nghĩa về driver như bên trên thì chưa đầy đủ vì một số driver thì không kết hợp với bất kỳ thiết bị phần cứng nào. Ví dụ, bạn cần truy cập vào cấu trúc dữ liệu của lõi OS và chỉ truy cập được khi chạy trong chế độ hạt nhân–kernel mode. Bạn có thể làm điều này bằng cách tách thành hai phần. Phần đầu tiên chạy trong chế độ người dùng và mô tả giao diện người dùng, phần này được gọi application - ứng dụng. Phần thứ hai chạy trong chế độ hạt nhân và truy cập đến cấu trúc dữ liệu của lõi OS, phần này được gọi là software driver và không kết hợp với bất cứ thiết bị phần cứng nào. Hình 03. Sofware driver 2. Các Loại Driver Trong Windows Có hai loại driver Microsoft Windows cơ bản: User-mode driver thực thi trong chế độ người dùng, giữ vai trò cung cấp một giao diện giữa một ứng dụng Win32 và kernel-mode driver hoặc các thành phần khác hệ điều hành. Kernel-mode driver thực thi trong chế độ hạt nhân như một phần của điều hành, nó bao gồm những thành phần hệ điều hành chế độ hạt nhân mà điển hình là quản lý I/O, Plug and Play memory, processes và threads, security. Kernel-mode driver thường phân lớp. Nói chung, driver cấp cao hơn thường nhận được dữ liệu từ các ứng dụng, lọc dữ liệu, và gửi nó để một driver cấp thấp hơn có hỗ trợ chức năng thiết bị. Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 12 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Windows Applications Windows Services Win32 API user-mode kernel-mode Windows I/O System I/O Manager Power Manager PnP Manager Hình 04. Sơ đồ mô tả sự tương tác giữa user-mode và kernel-mode Riêng đối với kernel-mode driver, có ba loại driver khác nhau thể hiện ba mức độ trong một driver stack: highest-level, intermediate-level và lowest-level. Và tầng bên trên bao giờ cũng nhận sự hỗ trợ từ những tầng thấp hơn nó. Hình 05. Các loại driver trong kernel-mode Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 13 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Highest-level driver bao gồm những trình điều khiển hệ thống tập tin (File system drivers - FSDs) hỗ trợ hệ thống tập tin như là: NTFS, File allocation table (FAT), CD-ROM file system. Intermediate-level driver được chia nhỏ hơn và bao gồm: Function driver điều khiển các thiết bị ngoại vi cụ thể trên một chuyến xe I/O. Filter driver thêm nó trên hoặc dưới function driver. Sofware bus driver trình bày một tập hợp các thiết bị con mà tầng cao hơn có thể gắn vào. Lowest-level driver điều khiển một I/O bus mà thiết bị ngoại vi được kết nối. Kernel Mode Driver Framework (KMDF) hỗ trợ những tính năng được yêu cầu bởi Windows và được phổ biến đến tất cả các trình điều khiển chế độ hạt nhân. II. TỔNG QUAN VỀ WINDOWS 7 KERNEL MODE DRIVERS 1. Windows Driver Foundation (WDF) Microdoft Windows Driver Foundation (WDF) là một mô hình phát triển trình điều khiển thế hệ tiếp theo của Microsoft. WDF bao gồm một bộ các thành phần hỗ trợ cho sự phát triển, triển khai, và duy trì cho cả hai trình điều khiển chế độ hạt nhân và người dùng. Hình 05 mô tả những thành phần của WDF làm việc với những công cụ phát triển trình điều khiển hiện có để xử lý chu kỳ sống trình điều khiển hoàn toàn: Hình 05. Windows Driver Foundation và Driver Life Cycle Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 14 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Driver model hỗ trợ việc tạo trình điều khiển hướng đối tượng, hướng sự kiện. Bằng cách sử dụng WDF, người viết trình điều khiển có thể tập trung vào phần cứng thiết bị của họ, chứ không phải là hệ điều hành. Trình điều khiển WDF có thể được viết cho một trong hai chế độ hạt nhân hoặc chế độ người dùng . Framework và Windows Driver Kit (WDK). WDF định nghĩa một mô hình trình điều khiển đơn và bao gồm framework cho sự phát triển trình điều khiển cả hai chế độ hạt nhân và người dùng. Framework cung cấp cơ sở hạ tầng cơ bản để hỗ trợ các mô hình WDF. Họ thực hiện tính năng phổ biến, cung cấp mặc định thông minh và quản lý hầu hết các tương tác với hệ điều hành. User Mode Driver Framework (UMDF) cung cấp sự hỗ trợ chức năng tương tự như trong KMDF, nhưng trình điều khiển có khả năng cho một số loại thiết bị chạy trong chế độ người dùng thay vì trong chế độ hạt nhân. Tất cả các trình điều khiển WDF được xây dựng bằng cách sử dụng các WDK xây dựng môi trường . Tracing and static analysic tools. Cả KMDF và UMDF đã được xây dựng sẵn mã xác minh và hỗ trợ tích hợp theo dõi thông qua Event Tracing cho Windows (ETW). Các dấu vết được tạo ra có thể giúp đỡ trong việc gỡ lỗi trình điều khiển trong quá trình phát triển và trong việc chẩn đoán các vấn đề trong những trình điều khiển tung ra thị trường. Trình điều khiển WDF cũng làm việc với người xác minh điều khiển hiện tại. Ngoài ra, công cụ xác minh trình điều khiển thời gian biên dịch, chẳng hạn như PREfast và Static Driver Verifier (SDV). Driver Signing. Trình điều khiển WDF được ký kết trong cùng một cách như trình điều khiển WDM . Driver insallation tools.Trình điều khiển WDF được cài đặt bằng cách sử dụng các tập tin INF và làm việc với các công cụ cài đặt trình điều khiển hiện có, bao gồm công cụ Driver install framewotk (DIFx). Versioning. WDF hỗ trợ versioning để một nhị phân điều khiển duy nhất có thể chạy trên bất kỳ phiên bản của hệ điều hành và sử dụng cùng một phiên bản của khuôn khổ mà nó đã được xây dựng và thử nghiệm. 1.1 WDF Object Model Mô hình này định nghĩa một tập các object - đối tượng đại diện cho cấu trúc điều khiển thông thường, chẳng hạn như các thiết bị, hàng đợi, I/O requests, và trình điều khiển riêng của mình. Các đối tượng có các thuộc tính, phương pháp, và các sự kiện . Properties - thuộc tính mô tả đặc điểm của đối tượng. Mỗi thuộc tính được kết hợp với những phương pháp mà get và set giá trị của thuộc tính. Methods – phương pháp thực hiện hành động trên các đối tượng. Có giá trị trả về. Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 15 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Events - sự kiện là những điều kiện mà một trình điều khiển cần để hành động. WDF xác định các sự kiện có thể cho từng đối tượng và xác định những hành động mặc định cho hầu hết chúng. Trình điều khiển bao gồm mã để xử lý các sự kiện cho các hành động mặc định không phù hợp hoặc không đầy đủ cho các thiết bị của nó. Thông báo đến trình điều khiển về sự thay đối trạng thái. Khi sự kiện xảy ra, WDF gọi những callback. Trình điều khiển WDF tạo ra các instance – thể hiện của các đối tượng mà nó đòi hỏi để phục vụ thiết bị của nó và điều chỉnh những thể hiện cho phù hợp với những yêu cầu của nó. Đối với mỗi thể hiện, trình điều khiển cung cấp những callback cho các sự kiện. Callbacks gọi các phương thức trên đối tượng để thực hiện bất kỳ hành động bổ sung. Đối tượng được tổ chức phân cấp. WDF driver object là đối tượng gốc; tất cả các đối tượng thì phụ thuộc vào đối tượng gốc. Đối với hầu hết các loại đối tượng, một trình điều khiển có thể xác định parent - cha khi nó tạo ra đối tượng. Nếu trình điều khiển không xác định đối tượng cha khi tạo đối tượng, framework sẽ thiết lập đối tượng cha là WDF driver object như mặc định. Tuy nhiên, một số loại đối tượng đã được xác định trước đối tượng cha và không thay đổi khi được tạo ra. Khi đối tượng cha bị xoá thì đối tượng con sẽ tự động bị xoá nhưng phải theo qui tắc “Đối tượng con xoá trước, sau đó tới đối tượng cha”. Driver tương tác với WDF object thông qua Device Driver Interface (DDIs) và thông qua giao diện đó mỗi bên thực hiện những hành động riêng của mình lên đối tưọng: Driver actions Tạo object. Định nghĩa callback routine để xử lý sự kiện cho mỗi object. Định nghĩa loại và sự cấp phát tài nguyên. Đòi hỏi DDIs trên object khi trả lời sự kiện. WDF actions Quản lý quan hệ cha/con của object. Quản lý thời gian sống của object. Gọi callback routine mà driver đã định nghĩa trước đó khi sự kiện xảy ra. Thực hiện hành động mặc định khi driver không xác định được callback. Mặc dù mô hình đối tượng áp dụng cho cả các KMDF và UMDF, WDF object được thực hiện khác nhau trong hai framework. Kernel-mode object Trình điều khiển không bao giờ truy cập trực tiếp thể hiện của Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 16 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm KMDF object. Thay vào đó, trình điều khiển tham chiếu đến thể hiện của đối tượng bằng handle. Những hành động như read, write trên một đối tượng, trình điều khiển gọi một method - phương thức trên đối tượng và gửi đến handle. KMDF định nghĩa hơn 20 loại đối tượng. Bảng 01 liệt kê một số loại thông dụng nhất. Bảng 01. KMDF object type được sử dụng phổ biến Object Type Name WDFDRIVER WDFDEVICE WDFQUEUE WDFINTERRUPT WDFREQUEST WDFMEMORY WDFIOTARGET Description Đại diện driver object Đại diện device object Đại diện một hàng đợi của I/O requests Đại diện một interrupt resource Mô tả một I/O request Mô tả một bộ đệm cho một I/O request Đại diện cho I/O target của một I/O request KMDF object không được quản lý bởi Windows object manager và do đó không được thao tác bằng cách sử dụng chức năng ObXxx của hệ thống. Chỉ có framework và WDF driver có thể tạo ra và thao tác chúng. Tương tự như vậy, KMDF event không liên quan đến các kerneldispatcher event mà Windows sử dụng như cơ chế đồng bộ hóa. Một trình điều khiển không thể tạo, thao tác, hoặc chờ đợi vào một sự kiện WDF. Thay vào đó, driver đăng ký callback cho sự kiện này và WDF gọi trình điều khiển khi sự kiện xảy ra. User-mode object UMDF object được dựa trên component object model (COM). UMDF sử dụng một tập hợp con nhỏ của COM cho giao diện truy vấn và tính tham khảo tính năng. Handle là không cần thiết bởi vì các giao diện là các lớp cơ sở trừu tượng và xác định đối tượng. Các UMDF xác định đối tượng ít hơn KMDF vì trình điều khiển chế độ người dùng không thể truy cập trực tiếp phần cứng và do đó không thực hiện truy cập bộ nhớ trực tiếp (DMA) hoặc xử lý ngắt quãng. 1.2 Driver framework Framework cung cấp cơ sở hạ tầng cơ bản cho driver và thực hiện các dịch vụ sau cho WDF driver: Quản lý thời gian sống của object. Cung cấp DDIs để driver gọi các thao tác trên object. Cung cấp sự thực thi phổ biến các tính năng mà driver thường yêu cầu, chẳng hạn như Plug and Play, power manager, synchronizaion, I/O queue, truy cập vào registry. Quản lý luồng của I/O request và PnP từ hệ điều hành đến driver. Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 17 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Thay vì gọi trực tiếp hệ điều hành, driver tương tác với các framework phù hợp cho hầu hết các dịch vụ. Các framework quản lý hầu hết các tương tác với hệ điều hành thay mặt cho driver. 1.3 Driver Object và Device Object 1.3.1 Driver Object I/O manager tạo ra một driver object cho mỗi driver mà được cài đặt và nạp vào OS. Driver object được mô tả bởi cấu trúc DRIVER_OBJECT. Khi I/O manager gọi thủ tục DriverEntry, nó cung cấp địa chỉ cho driver object. Và driver object chứa sự lưu trữ cho các entry point cho nhiều thủ tục tiêu chuẩn của driver. Driver có trách nhiệm điền vào các entry point. Hình 07. Standard routines that driver must have Mỗi thủ tục tiêu chuẩn với một dấu sao bên cạnh tên của nó nhận một IRP là đầu vào và cũng nhận được một con trỏ đến device object mục tiêu cho I/O request. I/O manager xác định loại driver object và sử dụng các driver object để đăng ký và theo dõi thông tin về những hình ảnh của driver được tải vào OS. Lưu ý các entry point (DDDispatchXxx và DDDispatchYyy) trong hình trên tương ứng với major function code(IRP_MJ_XXX). Người lập trình driver phải biết về một số thành phần của một driver object để khởi tạo một driver cũng như tháo dỡ driver. Các thành phần dưới đây có thể truy cập đến driver . PDEVICE_OBJECT DeviceObject Trỏ đến driver object được tạo ra bởi driver. Thành phần này được tự động cập nhật khi driver gọi IoCreateDevice thành công. Một driver có thể sử dụng thành phần này và thành phần của NextDevice của DEVICE_OBJECT để bước qua một danh sách của tất cả các device object mà driver tạo ra. PDRIVER_EXTENSION DriverExtension Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 18 Luận Văn Tốt Nghiệp GVHD: TS. Lê Văn Lâm Trỏ tới driver extension. Chỉ có thể truy cập thành phần của driver extension là DriverExtension->AddDevice, thủ tục DriverEntry lưu trữ thủ tục AddDevice. PUNICODE_STRING HardwareDatabase Trỏ đến đường dẫn Registry\Machine\Hardware để thông tin cấu hình phần cứng trong registry. PFAST_IO_DISPATCH FastIoDispatch Trỏ đến một cấu trúc định nghĩa các entry point fast I/O của driver. Thành phần này chỉ được sử dụng bởi FSDs và network transport driver - trình điều khiển giao thông mạng. PDRIVER_INITIALIZE DriverInit Entry point cho thủ tục DriverEntry, được thành lập bởi I/O manager . PDRIVER_STARTIO DriverStartIo Entry point cho thủ tục StartIo của driver, được thiết lập bởi thủ tục DriverEntry khi driver khởi tạo, nếu driver không có thủ tục StartIo thành phần này là NULL. PDRIVER_UNLOAD DriverUnload Entry point cho thủ tục Unload của driver, được thiết lập bởi thủ tục DriverEntry khi driver khởi tạo. nếu driver không có thủ tục StartIo thành phần này là NULL. PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION 1] Một bảng dispatch bao gồm một mảng các entry point cho thủ tục DispatchXxx của driver. Giá trị của chỉ số của mảng là những giá trị IRP_MJ_XXX đại diện cho mỗi IRP major function code. driver phải thiết lập entry point trong mảng này cho các IRP_MJ_XXX request mà driver xử lý, xem Writing Dispatch Routine. 1.3.2 Device Object Hệ điều hành mô tả các thiết bị bởi các device object - đối tượng thiết bị. Một hoặc nhiều device object được kết hợp với mỗi thiết bị. Các device object phục vụ như là mục tiêu của tất cả các hoạt động trên thiết bị.Trình điều khiển kernel-mode phải tạo ra ít nhất một device object cho mỗi thiết bị. Một số device object không đại diện cho physical device - thiết bị vật lý, xử lý I/O request không được gửi đến phần cứng, nhưng vẫn phải tạo ra một device object, xem Creating device object để biết thêm về cách tạo ra device object. Device object có những đặc điểm như sau: Được mô tả bởi cấu trúc DEVICE_OBJECT. Được tổ chức trong một device stack – ngăn xếp thiết bị. Xây Dựng Driver Theo Dõi Hành Vi Mạng Trên Windows 7 19
- Xem thêm -