Báo cáo đồ án cơ sở ngành mạng phần nguyên lý hệ điều hành tìm hiểu kĩ thuật lập trình hook và viết chương trình bắt phím keylog Báo cáo đồ án cơ sở ngành mạng phần nguyên lý hệ điều hành tìm hiểu kĩ thuật lập trình hook và viết chương trình bắt phím keylog Báo cáo đồ án cơ sở ngành mạng phần nguyên lý hệ điều hành tìm hiểu kĩ thuật lập trình hook và viết chương trình bắt phím keylog
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN - - BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Phần Nguyên lý hệ điều hành: Tìm hiểu kĩ thuật lập trình Hook viết chương trình bắt phím Keylogger Phần Lập trình mạng Xây dựng chương trình Mail Client MỤC LỤC PHẦN 1: NGUYÊN LÍ HỆ ĐIỀU HÀNH chương 1: CƠ SỞ LÝ THUYẾT 1.1 Khái niệm 1.2 Kĩ thuật lập trình hook 1.2.1 Các loại mô hình Hook .6 1.2.2 Cơ chế Hook 1.2.3 Phân loại Hook 1.2.4 Thư viện JnativeHook Java CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 2.1 Phân tích yêu cầu .9 2.1.1 Yêu cầu chức .9 2.1.2 Yêu cầu giao diện người dùng .9 2.1.3 Yêu cầu tương thích .9 2.2 Phân tích chức 2.2.1 Bắt kiện từ bàn phím 2.2.2 Ghi tệp văn theo ngày tháng 10 2.2.3 Gửi tệp tạo qua email 11 CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 11 3.1 Cơng cụ xây dựng chương trình 11 3.2 Hình ảnh kết chạy chương trình 11 PHẦN 2: LẬP TRÌNH MẠNG 14 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 14 1.1 Giới thiệu 14 1.1.1 Thư điện tử (Email) 14 1.1.2 Cấu trúc mail 15 1.2 Các giao thức gửi nhận mail 16 1.2.1 Giao thức SMTP .16 1.2.2 Giao thức POP3 17 1.2.3 Giao thức IMAP .19 CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 21 2.1 Phân tích chức 21 2.2 Thiết kế hệ thống 23 2.2.1 Sơ đồ gói (Pakage diagram) .23 2.1.2 UI .23 2.1.3 Controller 24 2.1.4 Bean 24 CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ: 26 3.1 Môi trường phát triển .26 3.2 Hình ảnh demo 26 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 31 Kết đạt .31 Hướng phát triển 31 DANH SÁCH HÌNH ẢNH Hình Quy trình Hook Hình 2: Thư mục lưu file output ghi lại phím gõ Hình 3: File output ghi phím gõ 10 Hình 4: File output.txt gửi tự động mail cá nhân 10 Hình 5: Cơ chế hoạt động thư điện tử 12 Hình 6: Cơ chế giao thức SMTP 15 Hình 7: Sơ đồ gói .19 Hình 8: Màn hình đăng nhập 22 Hình 9: Màn hình hộp thư gửi .23 Hình 10: Màn hình hộp thư gửi .23 Hình 11: Màn hình hộp thư nháp 24 Hình 12: Màn hình hộp thư spam .24 Hình 13: Màn hình chi tiết mail 25 Hình 14: Màn hình soạn mail .25 Hình 15: Màn hình gửi mail thành cơng .26 Hình 16: Màn hình gửi đăng xuất .26 DANH SÁCH TỪ VIẾT TẮT Từ viết tắt Diễn giải SMTP Simple Mail Transfer Protocol POP3 Post Office Protocol Version IMAP Internet Message Access Protocol URL Uniform Resource Locator TCP Transmission Control Protocol PHẦN 1: NGUYÊN LÍ HỆ ĐIỀU HÀNH TIÊU ĐỀ: TÌM HIỂU KỸ THUẬT LẬP TRÌNH HOOK VÀ XÂY DỰNG CHƯƠNG TRÌNH BẮT PHÍM KEYLOGGER CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Khái niệm Không giống ứng dụng MS-DOS, ứng dụng Windows hướng kiện, chúng không thực gọi hàm rõ ràng để lấy đầu vào, thay vào chúng chờ cho hệ thống chuyển đầu vào đến chúng Window hệ điều hành dễ sử dụng, tương tác người dùng với ứng dụng tiện ích window cách dễ dàng thông qua giao diện đồ họa (GUI) thao tác chuột, phím đơn giản Một câu hỏi đặt “Các ứng dụng làm để phân loại, lưu giữ phản hồi lại tương tác đến người dùng?” Window cung cấp chế thông điệp (message) hàng đợi thông điệp (message queue) với tập hợp cấu trúc liệu hàm API hỗ trợ ứng dụng giao tiếp với người dùng Window có hai hàng đợi thông điệp: Hàng đợi hệ thống (system queue) hàng đợi ứng dụng (Application queue) Hàng đợi hệ thống hàng đợi dùng chung cho tồn hệ thống, tiến trình chạy chia sẻ hàng đợi Nhiệm vụ hàng đợi hệ thống ghi lại hành động phần cứng kích chuột, gõ phím,… chúng xảy Q trình xử lý thơng điệp Windows diễn sau: Đầu tiên từ hành động nguời dùng : click chuột, nhấn phím, hệ điều hành chuyển hành động tương ứng thành thơng điệp (message) Rồi sau Windows đẩy message vào hàng đợi hệ thống (system queue) từ system queue message đuợc chuyển đến ứng dụng Những thông điệp chuyển đến ứng dụng, chúng tạo thành hàng đợi ứng dụng (application queue) Từ lúc ứng dụng lấy thơng điệp hàng đợi ứng dụng để xử lý (thơng qua vịng lặp chờ thơng điệp -message loop) Hình Quy trình Hook 1.2 Kĩ thuật lập trình hook 1.2.1 Các loại mơ hình Hook Local hook: kỹ thuật Hook dùng để bẫy kiện tiến trình cài đặt Remote hook: kỹ thuật Hook cho phép bẫy kiện thuộc tiến trình ứng dụng khác Trong mơ hình lại tồn hai kiểu hook khác: + Thread-specific: kiểu Hook bẫy kiện luồng cụ thể + System-wide: bẫy kiện tất luồng tất tiến trình thi hành hệ thống 1.2.2 Cơ chế Hook Có nhiều loại hook (như chuột, bàn phím) hệ điều hành ln trì danh sách hook procedure cho loại Mỗi danh sách Hook procedure gọi hookchain(chuỗi hook) Bản chất hook chain dãy trỏ hàm trỏ đến Hook procedure Khi hệ thống thực kiện đó, tìm kiếm hook chain tương ứng với kiện Nếu hook procedure phù hợp tìm thấy, hệ thống thực lấy lại quyền điều khiển sau hook chain kết thúc Vì hook procedure thực xong, phải thực việc chuyển quyền điều khiển cho hook procedure hook chain Tuy nhiên chế tùy thuộc vào loại hook Như số loại hook theo dõi thơng điệp, cho dù hook procedure có chuyển quyền điều khiển cho hook procedure hay không, hệ thống tự động làm việc Một điểm cần lưu ý hook làm chậm hệ thống, bạn nên cài đặt hook cần thiết loại bỏ hồn tất cơng việc 1.2.3 Phân loại Hook Có nhiều loại hook phân biệt dựa vào kiện, thông điệp mà Hook procedure can thiệp vào Danh sách liệt kê loại hook: WH_CALLWNDPROC and WH_CALLWNDPROCRET: cho phép bạn theo dõi thông điệp gởi đến thủ tục cửa sổ (window procedure) WH_CBT: hệ thống gọi thủ tục hook WH_CBT: trước activating, creating, destroying, minimizing, maximizing, moving, hoặcsizing cửa sổ ; trước hoàn thành lệnh hệ thống, trước loại bỏ kiện chuột bàn phím từ hàng đợi thông điệp hệ thống… WH_DEBUG : hệ thống gọi thủ tục hook WH_DEBUG trước gọi thủ tục hook kết hợp với hook khác hệ thống WH_FOREGROUNDIDLE: hook WH_FOREGROUNDIDLE cho phép bạn thực tác vụ ưu tiên thấp thời gian tác vụ chế độ foreground idle WH_GETMESSAGE: hook WH_GETMESSAGE cho phép ứng dụng theo dõi thông điệptrả hàm GetMessage PeekMessage WH_JOURNALPLAYBACK: hook WH_JOURNALPLAYBACK cho phép ứng dụng chèn thêm thông điệp vào hàng đợi thông điệp hệ thống WH_JOURNALRECORD: hook WH_JOURNALRECORD cho phép bạn giám sát ghi lại kiện đầu vào WH_KEYBOARD_LL: Các hook WH_KEYBOARD_LL cho phép bạn theo dõi kiện bàn phím hàng đợi ứng dụng WH_KEYBOARD: hook WH_KEYBOARD cho phép ứng dụng theo dõi lưu lượng truy cập thông điệp thông điệp WM_KEYDOWN WM_KEYUP trả hàm GetMessage PeekMessage WH_MOUSE_LL: hook WH_MOUSE_LL cho phép bạn theo dõi kiện chuột hàng đợi ứng dụng WH_MOUSE : hook WH_MOUSE cho phép bạn theo dõi thông điệp chuột trả hàm GetMessage PeekMessage WH_MSGFILTER and WH_SYSMSGFILTER: cho phép theo dõi thơng điệp xử lý menu, scrollbar, dialog… WH_SHELL: Chi tiết xem thêm thư viện lập trình MSDN 1.2.4 Thư viện JnativeHook Java JNativeHook thư viện để cung cấp trình nghe chuột bàn phím tồn cầu cho Java Điều cho phép bạn lắng nghe phím tắt tồn cầu chuyển động chuột mà khơng thể sử dụng Java túy Để hồn thành nhiệm vụ này, JNativeHook tận dụng mã gốc phụ thuộc vào tảng thông qua giao diện gốc Java để tạo móc nối tồn hệ thống cấp thấp phân phối kiện đến ứng dụng bạn Các kiện sau có sẵn thơng qua Listener tương ứng Key Press Events Key Release Events Key Typed Events Mouse Down Events Mouse Up Events Mouse Click Events Mouse Move Events Mouse Drag Events Mouse Wheel Events Ngồi trình nghe kiện tồn cầu, thư viện có khả đăng kiện gốc trở lại hệ điều hành gốc CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 2.1 Phân tích yêu cầu 2.1.1 u cầu chức Chương trình ghi lại tồn thao tác phím người dùng lưu tập tin văn File văn tự động gửi mail người dùng sau khoảng thời gian định 2.1.2 Yêu cầu giao diện người dùng Đây chương trình mang tính chất gián điệp nên chạy ẩn hệ thống Chương trình có giao diện để người dùng tương tác tùy chọn riêng Sau khoảng thời gian đinh, file lưu kí tự bắt từ bàn phím gửi đến tài khoản cá nhân thơng qua mail 2.1.3 u cầu tương thích Để đảm bảo có tương tác tốt với Windows, chương trình em sử dụng ngơn ngữ Java mơi trường Eclipse 2.2 Phân tích chức Keylogger có số chức sau: 2.2.1 Bắt kiện từ bàn phím Cơ chế bắt kiện từ bàn phím mơ tả sau: có kiện nhấn phím từ người dùng, thông điệp truyền đến chuỗi hook liên kết với thơng điệp đó, thơng điệp xử lý thủ tục hook chuỗi hook - Khai báo JNatitveHook để bắt kiện bàn phím 1.2 Các giao thức gửi nhận mail 1.2.1 Giao thức SMTP SMTP chữ đầu viết tắt Simple Mail Transfer Protocol dịch có nghĩa giao thức truyền tải thư tín đơn giản hóa Và giao thức thực nhiệm vụ gửi mail cịn việc nhận mail hay truy xuất liệu mail server có giao thức IMAP hay POP3 đảm nhiệm SMTP Server (server dùng để gửi mail) dịch vụ cho phép gửi email với số lượng lớn, tốc độ nhanh mà khơng bị giới hạn hịm mail miễn phí Gmail mail kèm hosting Nói cách khác máy chủ giúp bạn thao tác gửi thư người ta thường gọi SMTP server chúng thực gửi thư qua giao thức TCP IP Thường SMTP thực để hoạt động qua cổng Internet 25 (TCP) châu âu có phương thức thay cho SMTP gmail sử dụng rộng rãi gọi X.400 Song Song với có nhiều máy chủ thư điện tử hỗ trợ giao thức chuyển thư đơn giản mở rộng gọi (ESMTP), giao thức cho phép tệp đa phương tiện gửi dạng e-mail Hình 6: Cơ chế giao thức SMTP 1.2.2 Giao thức POP3 POP3 viết tắt Post Office Protocol version giao thức tầng ứng dụng, dùng để lấy thư điện tử từ server mail, thông qua kết nối TCP/IP POP3 sử dụng để kết nối tới server email tải email xuống máy tính cá nhân thơng qua ứng dụng email client Outlook, Thunderbird, Windows Mail, Mac Mail… POP giao thức nhận mail có lịch sử lâu đời Nó đời từ máy tính cịn bị giới hạn tốc độ, băng thông, nên kỹ sư tạo POP, nỗ lực để làm đơn giản để tải copy email để đọc offline, sau xóa email từ remote server Phiên đầu POP đời năm 1984, nâng cấp POP2 vào năm 1985 POP3 phiên giao thức giao thức phổ biến Từ POP3 tạo copy email xóa gốc máy chủ, email khóa chặt máy định truy cập thông qua webmail hay client máy khác Tóm lại POP3 giao thức chiều Cơ chế hoạt động POP: Kết nối đến server Nhận toàn mail Lưu cục mail Xóa mail server Ngắt kết nối với server Mặc định, port POP3 là: Port 110 – port khơng mã hóa Port 995 – SSL/TLS port, gọi POP3S Nhược điểm POP3: Mỗi lần nhận mail, POP download email máy local (và mặc định xóa mail server đi) nên bạn sử dụng nhiều thiết bị để quản lý tài khoản email qua giao thức POP Tuy nhiên, bạn cấu hình email client để POP3 khơng xóa email server mà “mask as read” – đánh dấu đọc với email Ưu điểm POP3: Mail lưu cục bộ, tức ln truy cập khơng có kết nối Internet Kết nối Internet dùng để gửi nhận mail Tiết kiệm không gian lưu trữ server Được lựa chọn để lại mail server Hợp nhiều tài khoản email nhiều server vào hộp thư đến 1.2.3 Giao thức IMAP IMAP viết tắt Internet Message Access Protocol, giao thức chuẩn Internet sử dụng ứng dụng email để truy xuất thư email từ máy chủ thư qua kết nối TCP/IP IMAP tạo vào năm 1986 phù hợp với cơng nghệ đại thời Ý tưởng thay người dùng phải ràng buộc vào email client đó, mà người dùng check mail đám mây internet từ thiết bị, ứng dụng