PHẦN I. TỔNG QUAN VỀ ĐỀ TÀI 1. Lý do chọn đề tài Ngày nay, khi khoa học công nghệ phát triển mạnh mẽ với mạng lưới Internet phủ khắp mọi nơi giúp cho chúng ta tiếp cận được thông tin nhanh chóng, thỏa mãn nhu cầu giải trí, tìm hiểu về tất cả các lĩnh vực trong xã hội, rút ngắn khoảng cách giữa con người về mặt địa lý như các dịch vụ Chat, Facebook…. Tuy nhiên bên cạnh những lợi ích của nó thì còn tồn tại những mặt tiêu cực, ảnh hưởng xấu tới con người. Đặc biệt, đó là các thế hệ trẻ còn chưa nhận thức, làm chủ được bản thân nên dẫn dễ khiến thế hệ trẻ đi vào con đường sai trái. Keylogger hay còn gọi là “trình theo dõi bàn phím” là một chương trình máy tính được viết ra với mục đích theo dõi và ghi lại mọi thao tác được thực hiện trên bàn phím vào một tập tin (log) để người cài đặt nó dễ sử dụng. Do khả năng theo dõi của chương trình nên Keylogger cũng có thể coi là một phần mềm gián điệp. Tuy nhiên, nó cũng mang lại nhiều lợi ích như giúp phụ huynh theo sát hành động của con em mình trên Internet để đưa ra các biện pháp giáo dục kịp thời hơn. Từ những điều trên, tôi đã quyết định tìm hiểu, nghiên cứu và “xây dựng chương trình Keylogger đơn giản” để giúp các bậc phụ huynh kiểm soát tốt hơn con em mình. 2. Mục tiêu và nhiệm vụ của đề tài. a. Mục tiêu Xây dựng một chương trình có khả năng ẩn mình, thu thập các phím Ghi lại dữ liệu vào một file sau đó gửi về qua phương thức E – mail. b. Nhiệm vụ Keylogger có khả năng ẩn mình Tự động khởi chạy cùng Windows Bắt được cả bàn phím ảo Lấy IP của máy để quản lý dữ liệu khi gửi về 3. Ngôn ngữ lập trình và công cụ cài đặt a. Ngôn ngữ lập trình Csharp Ngôn ngữ CSharp (C) được phát triển bởi đội ngũ kỹ sư của Microsoft, nó được xây dựng dựa trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java. Thứ nhất: C là ngôn ngữ đơn giản : C loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và C++, bao gồm việc loại bỏ những macro, template, đa kế thừa, và lớp cơ sở ảo (Virtual base class). Chúng là những nguyên nhân gây ra sự nhầm lẫn cho người lập trình . Ngôn ngữ C đơn giản vì nó dựa trên nền tảng C và C++ nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Thứ hai, C là ngôn ngữ hiện đại : Vì C chứa tất cả những đặc tính sau : Xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn. Thứ ba, C là ngôn ngữ hướng đối tượng : Vì C hỗ trợ tất cả các đặc tính như: sự đóng gói (encapsulation), sự kế thừa (inheritance) và đa hình (polymorphism). Thứ tư, C là ngôn ngữ mạnh mẽ và cũng mềm dẻo Thứ năm, C là ngôn ngữ ít từ khóa : C là ngôn ngữ sử dụng giới hạn những từ khóa, chỉ khoảng 80 từ khóa. Thứ sáu, C là ngôn ngữ hướng module : Mã nguồn C có thể được viết trong những phần được gọi là những lớp, những lớp này chứa các phương thức thành viên của nó. Những lớp và những phương thức có thể được sử dụng lại trong ứng dụng hay các chương trình khác. Bằng cách truyền các mẫu thông tin đến những lớp hay phương thức chúng ta có thế tạo ra những mã nguồn dùng lại có hiệu quả. Chính vì những mục đích đó, tôi lựa chọn ngôn ngữ lập trình C . b. Giới thiêụ về Visual Studio. Visual Studio là bộ công cụ hoàn chỉnh cho phép xây dựng cả các ứng dụng cho máy để bàn lẫn các ứng dụng web doanh nghiệp theo nhóm. Ngoài khả năng xây dựng những ứng dụng desktop tốc độ cao, bạn còn có thể sử dụng các công cụ phát triển mạnh mẽ dựa trên thành phần cùng các công nghệ khác nhằm đơn giản hóa thiết kế, phát triển và triển khai các giải pháp doanh nghiệp theo nhóm. Visual Studio đơn giản hóa quá trình phát triển giải pháp, giảm thiểu nguy cơ cũng như tăng cường kết quả trả về. Các công cụ cho mọi giai đoạn trong chu trình phát triển, từ thiết kế, phát triển đến kiểm định và triển khai, cho phép bạn thỏa sức thể hiện trí tưởng tượng và mang đến những giải pháp có ảnh hưởng lớn . Cung cấp một môi trường tích hợp các công cụ và kiến trúc máy chủ nhằm đơn giản hóa toàn bộ tiến trình phát triển ứng dụng. PHẦN II. NỘI DUNG ĐỀ TÀI I. Cơ sở lý thuyết 1. Giới thiệu về giao thức SMTP (Simple Mail Transfer Protocol). SMTP (Simple Mail Transfer Protocol – Giao thức truyền tải thư tín đơn giản) là một chuẩn truyền tải thư điện tử qua mạng Internet. Giao thức hiện dùng được là ESMTP (extended SMTP – SMTP mở rộng). SMTP dùng cổng 25 của giao thức TCP. 2. Lớp DNS trong NameSpace System.Net và System.Net.Socket Lớp DNS là một lớp static dùng để lấy thông tin của một host cụ thể nào đó. Thông tin của host từ các truy vấn DNS trả về thông quan một thể hiện của lớp IPHostEntry. Lớp DNS cung cấp một số phương thức đồng bộ và bất đồng bộ. Phương thức Mô tả GetHostName() Trả về tên của máy tính cục bộ mà chương trình đang chạy GetHostByAddress(IPAddress) Tạo một thể hiện của IPHostEntry từ IPAddress GetHostAddresses (string hostNameOrAddresses) Trả về một mảng địa chỉ IP cho host được chỉ ra bởi tham số hostNameOrAddress. GetHostEntry(IPAddress): Phân giải địa chỉ IP thành một thể hiện của IPHostEntry. GetHostByAddress(string) Tạo một thể hiện IPHostEntry từ IPAddress GetHostByName(string hostName) Trả về một đối tượng IPHostEntry chứa thông tin về địa chỉ IP của host được chỉ ra bởi hostName GetHostEntry(String) Phân giải một hostname hoặc một địa chỉ IP thành một thể hiện của IPHostEntry Resolve(string HostName) Trả về một thể hiện của IPHostEntry chứa thông tin về host Bảng 1:Phương thức đồng bộ lớp DNS 3. Giới thiệu về NameSpace System.IO a. Lớp StreamReader và StreamWriter StreamReader và StreamWriter được sử dụng để điều khiển việc đọc và ghi dữ liệu dạng text trên Stream. Hai lớp này được thực thi cùng với lớp NetworkStream sẽ giúp chúng ra giải quyết dễ dàng vấn đề về ranh giới thông điệp khi truyền dữ liệu theo giao thức TCP. o Lớp StreamWriter và StreamReader thường được khởi tạo như sau: Public StreamReader (Stream stream) Public StreamWriter(Stream stream) Biến stream có thể tham chiếu đến bất kì loại đối tượng Stream nào bao gồm cả đối tượng NetworkStream Một số thành phần lớp StreamReader Phương thức Mô tả Close() Đóng đối tượng StreamReader Read() Đọc một hoặc nhiều byte dữ liệu từ StreamReader ReadLine() Đọc dữ liệu từ StreamReader bao gồm cả ký tự ngắt dòng ReadToEnd() Đọc hết dữ liệu có trên stream Bảng 2. Một số thành phần lớp StreamReader Một số thành phần lớp StreamWriter Phương thức Mô tả Flush() Gửi tất cả dữ liệu trên bộ đệm vào stream Write() Gửi một hoặc nhiều byte dữ liệu lên stream WriteLine() Gửi dữ liệu kèm theo ký tự ngắt dòng Bảng 3. Một số thành phần lớp StreamWriter II. Khảo sát hiện trạng về Keylogger 1. Hiện trạng. Keylogger hay tiến trình thao tác bàn phím là một chương trình máy tính ban đầu được viết nhằm mục đích theo dõi và ghi lại mọi thao tác được thực hiện trên bàn phím vào một tập tin nhật ký để cho người cài đặt sử dụng nó. Hiện nay, thì Keylogger phát triển cao hơn nó không những ghi lại thao tác bàn phím mà còn ghi lại các hình ảnh trên màn hình (screen) bằng cách chụp (screenhot) hoặc quay phim (screen capture) thậm chí còn ghi nhận cách con trỏ chuột trên máy tính di chuyển. 2. Khảo sát. a. Phân loại keylogger theo mức độ nguy hiểm. Keylogger bao gồm hai loại: một lọa keylogger phần cứng và một loại phần mềm. Nhưng trong đề tài này chúng ta chỉ đi tìm hiểu về Keylogger phần mềm. Theo những người lập trình, thì keylogger viết ra với chỉ có một loại duy nhất là giúp các bạn giám sát con cái xem họ làm gì với PC, với internet, khi chat với người lạ. Nhưng cách sử dụng và chức năng của keylogger hiện tại trên thế giới khiến người ta thường phân loại mức độ nguy hiểm bằng các 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ên trình quản lý tiến trình (process manager) và trình cài đặt, dỡ bỏ chương trình(add and remove program)? • Theo dõi không thông báo PC bị nhiểm khó tự phát hiện? • Có chức năng Captureescreen hoặc ghi lại thao tác chuột? • Khó tháo gỡ? • Có khả năng lây nhiễm, chống tắt (kill process)? Cứ mỗi câu trả lời “có” cho một điểm. Điểm càng cao, keylogger càng vượt khỏi mục đích giám sát đến với những mục đích do thám và tính nguy hiểm của nó ngày càng cao. Keylogger có thể được phân loại theo số điểm. • Loại số 1: 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, đúng với mục đích giám sát. • Loại số 2: Một đến hai điểm Keylogger nguy hiểm, chạy ngầm, hướng đến mục đích do thám nhiều hơn là giám sát (nguy hại đến thông tin cá nhân như tài khoản cá nhân, mật khẩu, thẻ tín dụng vì người dùng không biết). • Loại số 3: Ba đến năm điểm Keylogger loại rất nguy hiểm, ẩn dấu hoàn toàn theo dõi trên một phạm vi rộng, mục đich do thám rõ ràng. • Loại số 4: Sáu điểm Keylogger nguy hiểm nghiêm trọng, thường được mang theo bởi các trojanvirus cực kỳ khó tháo gỡ, lại là keylogger nguy hiểm nhất. Chính vì vậy nó thường hay bị các chương trình chống virus tìm thấy và tiêu diệt. b. Thành phần của keylogger. Thông thường, một chương trình keylogger sẽ gồm ba thành phần chính: o Chương trình điều khiển (Control Program): dùng để theo điều phối hoạt động, tinh chỉnh các thiết lập, xem các tập tin nhật ký cho keylogger. Phần này là phần được giấu kỹ nhất của keylogger thông thường chỏ có thể gọi ra bằng một tổ phím tắt đặc biệt. o Tập tin hook hoặc là một chương trình monitor: dùng để ghi nhận lại các thao tác bàn phím (đây là phần quan trọng nhất) o Tập tin nhật ký (log): nơi chứa đựng ghi lại toàn bộ những gì hook ghi nhận được. c. Cách cài vào máy. Các loại keylogger từ 13 thông thường khi cài đặt vào máy cũng giống như mọi chương tình máy tính khác, đều phải qua bước cài đặt. Đầu tiên nó sẽ cài đặt các tập tin dùng để hoạt động vào một thư mục đặc biệt, sau đó đăng ký cách thức hoạt động rồi đợi người dùng thiết lập thêm các ứng dụng. Sau đó nó bắt đầu hoạt động. Loại keylogger số 4 có thể vào thẳng máy của người dùng bỏ qua các bước cài đặt, dùng tính năng autorun để cùng chạt với hệ thống. Một số loại tự thả (drop) mình vào các chương trình khác, để khi người dùng sử dụng chương trình keylogger sẽ tự động chạy theo. d. Cách thức hoạt động. Trong một hệ thống (Windows, Linux, Mac..), khi bấm một phím trên bàn phím, bàn phím sẽ chuyển nó thành tín hiệu chuyển vào CPU, CPU sẽ chuyển nó tới hệ điều hành để hệ điều hành dịch thành chữ hoặc số cho chính nó hoặc các chương trình khác sử dụng. Nhưng khi trong hệ thống đó có keylogger, không những chỉ có hệ điều hành theo dõi mà có cả hook file monitor program của keylogger theo dõi, nó sẽ ghi nhận và dịch các tín hiệu ghi vào tập tin nhật ký. Đồng thời nó còn có thể theo dõi cả màn hình và thao tác chuột. PHẦN III. XÂY DỰNG ĐỀ TÀI 1. Phân tích và thiết kế phần mềm Hình 1. Sơ đồ sử lý của Keylogger Keylogger được viết trên màn hình Console Application, sau khi bắt được thông tin sẽ gửi về Mail. Các chức năng của Keylogger o chức năng thu bàn phím gõ, bàn phím ảo và lấy IP của máy người dùng: Khi Keylogger chạy trên máy của người dùng, Keylogger sẽ lấy IP của máy người dùng để ghi vào file nhằm phân biệt các máy. Khi người dùng gõ bàn phím hay click chuột kể cả bàn phím ảo, thì Keylogger thu thập các phím gõ đó và lưu thành một tập tin, sau một thời gian cố định thì sẽ tự động gửi vào gmail đã cài đặt trước. o chức năng gửi mail: Theo thứ tự để gửi thông điệp, chúng ta cần phải sử dụng một máy chủ SMTP (Simple Mail Transfer Protocol). Trong project, chúng ta đang sử dụng máy chủ SMTP của Gmail vì nó miễn phí. o chức năng ẩn mình: Keylogger chạy ẩn trên máy của người dùng đó là nó hoạt động một cách lén lút, không có một biểu tượng nào trên destop hay trên thanh tast bar, và không có tên chương trình xuất hiện trong danh sách Task Manager
Trang 1HỌC VIỆN QUẢN LÝ GIÁO DỤC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO BÀI TẬP LỚN
LẬP TRÌNH MẠNG
ĐỀ TÀI:
KEYLOGER
Thực hiện Sinh viên Trần Quốc Tuấn
Hà Nội, ngày 20 / 06 / 2014
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 2
PHẦN I TỔNG QUAN VỀ ĐỀ TÀI 3
1 Lý do chọn đề tài 3
2 Mục tiêu và nhiệm vụ của đề tài 3
3 Ngôn ngữ lập trình và công cụ cài đặt 4
PHẦN II NỘI DUNG ĐỀ TÀI 6
I Cơ sở lý thuyết 6
1 Giới thiệu về giao thức SMTP (Simple Mail Transfer Protocol) 6
2 Lớp DNS trong NameSpace System.Net và System.Net.Socket 6
3 Giới thiệu về NameSpace System.IO 7
II Khảo sát hiện trạng về Keylogger 8
PHẦN III XÂY DỰNG ĐỀ TÀI 11
1 Phân tích và thiết kế phần mềm 11
2 Hướng dẫn cài đặt và sử dụng 13
PHẦN IV KẾT LUẬN 19
1 Đánh giá ưu, nhược điểm của chương trình xây dựng 19
PHẦN V TÀI LIỆU THAM KHẢO 20
Trang 3LỜI NÓI ĐẦU
Ngày nay khi dòng chảy của cuộc sống quá nhanh khiến cho những bậc cha
mẹ có quá ít thời gian ở bên gia đình để kiểm soát con cái tránh khỏi những tệ nạn
xã hội, đặc biệt là trong mạng Internet, thế giới ảo, chứa biết bao tệ nạn gây hạikhông ít tới việc học tập, tâm lý của trẻ em đang tuổi lớn Chính vì lẽ đó, tôi đã tìmhiểu, nghiên cứu và xây dựng chương trình Keylogger đơn giản để theo dõi, ghi lạinhững thao tác trên bàn phím máy tính để giúp những bậc phụ huynh nâng cao khảnăng quản lý, dạy dỗ con em mình
Chương trình Keylogger khi hoạt động nó sẽ ghi lại những thao tác trên bànphím, bao gồm cả bàn phím ảo rồi cung cấp những thông tin này qua E-mail đãđịnh trước Do đó, giúp cho phụ huynh nắm bắt được kịp thời những gì con em tađang hoạt động để từ đó đưa ra các biện pháp giáo dục, dạy dỗ tốt hơn
Tôi xin chân thành gửi lời cảm ơn tới các Thầy, Cô khoa công nghệ thôngtin Học viện Quản lý Giáo dục đã cung cấp, truyền đạt những kiến thức bổ ích.Đặc biệt là thầy Bùi Ngọc Châu - giảng viên khoa CNTT đã tận tình hướng dẫn,giúp đỡ, giải đáp những thắc mắc và tạo mọi điều kiện thuận lợi về tài liệu
và phương tiện để tôi hoàn thành đề tài này
Do kiến thức còn hạn chế nên chương trình khó tránh khỏi những saisót Vì vậy, tôi mong nhận được sự góp ý của thầy cô và bạn bè để chương trìnhngày càng hoàn thiện hơn
Xin chân thành cảm ơn !
Hà Nội, ngày 20/06/2014
Trang 4PHẦN I TỔNG QUAN VỀ ĐỀ TÀI
1 Lý do chọn đề tài
Ngày nay, khi khoa học công nghệ phát triển mạnh mẽ với mạng lướiInternet phủ khắp mọi nơi giúp cho chúng ta tiếp cận được thông tin nhanh chóng,thỏa mãn nhu cầu giải trí, tìm hiểu về tất cả các lĩnh vực trong xã hội, rút ngắnkhoảng cách giữa con người về mặt địa lý như các dịch vụ Chat, Facebook…
Tuy nhiên bên cạnh những lợi ích của nó thì còn tồn tại những mặt tiêu cực,ảnh hưởng xấu tới con người Đặc biệt, đó là các thế hệ trẻ còn chưa nhận thức,làm chủ được bản thân nên dẫn dễ khiến thế hệ trẻ đi vào con đường sai trái
Keylogger hay còn gọi là “trình theo dõi bàn phím” là một chương trìnhmáy tính được viết ra với mục đích theo dõi và ghi lại mọi thao tác được thực hiệntrên bàn phím vào một tập tin (log) để người cài đặt nó dễ sử dụng Do khả năngtheo dõi của chương trình nên Keylogger cũng có thể coi là một phần mềm giánđiệp Tuy nhiên, nó cũng mang lại nhiều lợi ích như giúp phụ huynh theo sát hànhđộng của con em mình trên Internet để đưa ra các biện pháp giáo dục kịp thời hơn
Từ những điều trên, tôi đã quyết định tìm hiểu, nghiên cứu và “xây dựng
chương trình Keylogger đơn giản” để giúp các bậc phụ huynh kiểm soát tốt hơn
con em mình
2 Mục tiêu và nhiệm vụ của đề tài.
a Mục tiêu
- Xây dựng một chương trình có khả năng ẩn mình, thu thập các phím
- Ghi lại dữ liệu vào một file sau đó gửi về qua phương thức E – mail.
b Nhiệm vụ
- Keylogger có khả năng ẩn mình
Trang 5- Bắt được cả bàn phím ảo
- Lấy IP của máy để quản lý dữ liệu khi gửi về
3 Ngôn ngữ lập trình và công cụ cài đặt
a Ngôn ngữ lập trình Csharp
Ngôn ngữ CSharp (C#) được phát triển bởi đội ngũ kỹ sư củaMicrosoft, nó được xây dựng dựa trên nền tảng của hai ngôn ngữmạnh nhất là C++ và Java
- Thứ nhất: C# là ngôn ngữ đơn giản : C# loại bỏ một vài sự phức tạp và rối
rắm của những ngôn ngữ như Java và C++, bao gồm việc loại bỏ nhữngmacro, template, đa kế thừa, và lớp cơ sở ảo (Virtual base class) Chúng lànhững nguyên nhân gây ra sự nhầm lẫn cho người lập trình Ngôn ngữ C#đơn giản vì nó dựa trên nền tảng C và C++ nhưng nó đã được cải tiến để làmcho ngôn ngữ đơn giản hơn
- Thứ hai, C# là ngôn ngữ hiện đại : Vì C# chứa tất cả những đặc tính sau :
Xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảomật mã nguồn
- Thứ ba, C# là ngôn ngữ hướng đối tượng : Vì C# hỗ trợ tất cả các đặc tính
như: sự đóng gói (encapsulation), sự kế thừa (inheritance) và đa hình(polymorphism)
- Thứ tư, C# là ngôn ngữ mạnh mẽ và cũng mềm dẻo
- Thứ năm, C# là ngôn ngữ ít từ khóa : C# là ngôn ngữ sử dụng giới hạn
những từ khóa, chỉ khoảng 80 từ khóa
- Thứ sáu, C# là ngôn ngữ hướng module : Mã nguồn C# có thể được viết
trong những phần được gọi là những lớp, những lớp này chứa các phươngthức thành viên của nó Những lớp và những phương thức có thể được sửdụng lại trong ứng dụng hay các chương trình khác Bằng cách truyền các
Trang 6mẫu thông tin đến những lớp hay phương thức chúng ta có thế tạo ra những
mã nguồn dùng lại có hiệu quả
Chính vì những mục đích đó, tôi lựa chọn ngôn ngữ lập trình C#
b Giới thiêụ về Visual Studio
- Visual Studio là bộ công cụ hoàn chỉnh cho phép xây dựng cả các ứngdụng cho máy để bàn lẫn các ứng dụng web doanh nghiệp theo nhóm Ngoàikhả năng xây dựng những ứng dụng desktop tốc độ cao, bạn còn có thể sửdụng các công cụ phát triển mạnh mẽ dựa trên thành phần cùng các côngnghệ khác nhằm đơn giản hóa thiết kế, phát triển và triển khai các giải phápdoanh nghiệp theo nhóm
- Visual Studio đơn giản hóa quá trình phát triển giải pháp, giảm thiểu nguy
cơ cũng như tăng cường kết quả trả về Các công cụ cho mọi giai đoạn trongchu trình phát triển, từ thiết kế, phát triển đến kiểm định và triển khai, chophép bạn thỏa sức thể hiện trí tưởng tượng và mang đến những giải pháp cóảnh hưởng lớn Cung cấp một môi trường tích hợp các công cụ và kiến trúcmáy chủ nhằm đơn giản hóa toàn bộ tiến trình phát triển ứng dụng
Trang 7PHẦN II NỘI DUNG ĐỀ TÀI
I Cơ sở lý thuyết
1 Giới thiệu về giao thức SMTP (Simple Mail Transfer Protocol).
- SMTP (Simple Mail Transfer Protocol – Giao thức truyền tải thư tín
đơn giản) là một chuẩn truyền tải thư điện tử qua mạng Internet
- Giao thức hiện dùng được là ESMTP (extended SMTP – SMTP mở
rộng)
- SMTP dùng cổng 25 của giao thức TCP.
2 Lớp DNS trong NameSpace System.Net và System.Net.Socket
- Lớp DNS là một lớp static dùng để lấy thông tin của một host cụthể nào đó
- Thông tin của host từ các truy vấn DNS trả về thông quan một thểhiện của lớp IPHostEntry
- Lớp DNS cung cấp một số phương thức đồng bộ và bất đồng bộ
Phương thức Mô tả
GetHostName() Trả về tên của máy tính cục bộ mà chương
trình đang chạyGetHostByAddress(IPAddress
Trả về một mảng địa chỉ IP cho host được chỉ
ra bởi tham số hostNameOrAddress
GetHostEntry(IPAddress): Phân giải địa chỉ IP thành một thể hiện của IPHostEntry
GetHostByAddress(string) Tạo một thể hiện IPHostEntry từ IPAddressGetHostByName(string
hostName)
Trả về một đối tượng IPHostEntry chứa thông tin về địa chỉ IP của host được chỉ ra bởi hostName
GetHostEntry(String) Phân giải một hostname hoặc một địa chỉ IP
thành một thể hiện của IPHostEntryResolve(string HostName) Trả về một thể hiện của IPHostEntry chứa
thông tin về host
Bảng 1:Phương thức đồng bộ lớp DNS
Trang 83 Giới thiệu về NameSpace System.IO
a Lớp StreamReader và StreamWriter
StreamReader và StreamWriter được sử dụng để điều khiển việc đọc và ghi
dữ liệu dạng text trên Stream
Hai lớp này được thực thi cùng với lớp NetworkStream sẽ giúp chúng ra giảiquyết dễ dàng vấn đề về ranh giới thông điệp khi truyền dữ liệu theo giao thức TCP
o Lớp StreamWriter và StreamReader thường được khởi tạo như sau:
Public StreamReader (Stream stream)
Public StreamWriter(Stream stream) Biến stream có thể tham chiếu đến bất
kì loại đối tượng Stream nào bao gồm cả đối tượng NetworkStream
* Một số thành phần lớp StreamReader
Phương thức Mô tả
Close() Đóng đối tượng StreamReader
Read() Đọc một hoặc nhiều byte dữ liệu từ StreamReader
ReadLine() Đọc dữ liệu từ StreamReader bao gồm cả ký tự ngắt
dòngReadToEnd() Đọc hết dữ liệu có trên stream
Bảng 2 Một số thành phần lớp StreamReader
* Một số thành phần lớp StreamWriter
Phương thức Mô tả
Flush() Gửi tất cả dữ liệu trên bộ đệm vào stream
Write() Gửi một hoặc nhiều byte dữ liệu lên stream
WriteLine() Gửi dữ liệu kèm theo ký tự ngắt dòng
Bảng 3 Một số thành phần lớp StreamWriter
Trang 9II Khảo sát hiện trạng về Keylogger
1 Hiện trạng
Keylogger hay tiến trình thao tác bàn phím là một chương trình máy tính banđầu được viết nhằm mục đích theo dõi và ghi lại mọi thao tác được thực hiện trên bàn phím vào một tập tin nhật ký để cho người cài đặt sử dụng nó
Hiện nay, thì Keylogger phát triển cao hơn nó không những ghi lại thao tác bàn phím mà còn ghi lại các hình ảnh trên màn hình (screen) bằng cách chụp (screen-hot) hoặc quay phim (screen- capture) thậm chí còn ghi nhận cách con trỏ chuột trên máy tính di chuyển
2 Khảo sát
a Phân loại keylogger theo mức độ nguy hiểm
Keylogger bao gồm hai loại: một lọa keylogger phần cứng và một loại phần mềm Nhưng trong đề tài này chúng ta chỉ đi tìm hiểu về Keylogger phần mềm
Theo những người lập trình, thì keylogger viết ra với chỉ có một loại duy
nhất là giúp các bạn giám sát con cái xem họ làm gì với PC, với internet, khi chat
với người lạ Nhưng cách sử dụng và chức năng của keylogger hiện tại trên thế giới
khiến người ta thường phân loại mức độ nguy hiểm bằng các 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ên trình quản lý tiến trình (process manager)
và trình cài đặt, dỡ bỏ chương trình(add and remove program)?
Theo dõi không thông báo/ PC bị nhiểm khó tự phát hiện?
Có chức năng Captureescreen hoặc ghi lại thao tác chuột?
Khó tháo gỡ?
Có khả năng lây nhiễm, chống tắt (kill process)?
Trang 10Cứ mỗi câu trả lời “có” cho một điểm Điểm càng cao, keylogger càng vượt khỏi mục đích giám sát đến với những mục đích do thám và tính nguy hiểm của nóngày càng cao Keylogger có thể được phân loại theo số điểm.
Loại số 1: 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, đúng với mục đích giám sát
Loại số 2: Một đến hai điểm
Keylogger nguy hiểm, chạy ngầm, hướng đến mục đích do thám nhiều hơn
là giám sát (nguy hại đến thông tin cá nhân như tài khoản cá nhân, mật khẩu, thẻ tín dụng vì người dùng không biết)
Loại số 3: Ba đến năm điểm
Keylogger loại rất nguy hiểm, ẩn dấu hoàn toàn theo dõi trên một phạm virộng,
mục đich do thám rõ ràng
Loại số 4: Sáu điểm
Keylogger nguy hiểm nghiêm trọng, thường được mang theo bởi các virus cực kỳ khó tháo gỡ, lại là keylogger nguy hiểm nhất Chính vì vậy nó thườnghay bị các chương trình chống virus tìm thấy và tiêu diệt
trojan-b Thành phần của keylogger
Thông thường, một chương trình keylogger sẽ gồm ba thành phần chính:
o Chương trình điều khiển (Control Program): dùng để theo điều phối
hoạt động, tinh chỉnh các thiết lập, xem các tập tin nhật ký cho keylogger Phầnnày là phần được giấu kỹ nhất của keylogger thông thường chỏ có thể gọi ra bằngmột tổ phím tắt đặc biệt
o Tập tin hook hoặc là một chương trình monitor: dùng để ghi nhận lại
các thao tác bàn phím (đây là phần quan trọng nhất)
Trang 11o Tập tin nhật ký (log): nơi chứa đựng/ ghi lại toàn bộ những gì hook
ghi nhận được
c Cách cài vào máy
Các loại keylogger từ 1-3 thông thường khi cài đặt vào máy cũng giống nhưmọi chương tình máy tính khác, đều phải qua bước cài đặt Đầu tiên nó sẽ cài đặtcác tập tin dùng để hoạt động vào một thư mục đặc biệt, sau đó đăng ký cách thứchoạt động rồi đợi người dùng thiết lập thêm các ứng dụng Sau đó nó bắt đầu hoạtđộng
Loại keylogger số 4 có thể vào thẳng máy của người dùng bỏ qua các bướccài đặt, dùng tính năng autorun để cùng chạt với hệ thống Một số loại tự thả (drop)mình vào các chương trình khác, để khi người dùng sử dụng chương trìnhkeylogger sẽ tự động chạy theo
d Cách thức hoạt động
Trong một hệ thống (Windows, Linux, Mac ), khi bấm một phím trên bànphím, bàn phím sẽ chuyển nó thành tín hiệu chuyển vào CPU, CPU sẽ chuyển nótới hệ điều hành để hệ điều hành dịch thành chữ hoặc số cho chính nó hoặc cácchương trình khác sử dụng
Nhưng khi trong hệ thống đó có keylogger, không những chỉ có hệ điềuhành theo dõi mà có cả hook file/ monitor program của keylogger theo dõi, nó sẽghi nhận và dịch các tín hiệu ghi vào tập tin nhật ký Đồng thời nó còn có thể theodõi cả màn hình và thao tác chuột
Trang 12PHẦN III XÂY DỰNG ĐỀ TÀI
1 Phân tích và thiết kế phần mềm
FILE.TXT
Hình 1 Sơ đồ sử lý của Keylogger
Keylogger được viết trên màn hình Console Application, sau khi bắt được thông tin sẽ gửi về Mail
Các chức năng của Keylogger
o chức năng thu bàn phím gõ, bàn phím ảo và lấy IP của máy người dùng: Khi Keylogger chạy trên máy của người dùng, Keylogger sẽ lấy IP của máy
người dùng để ghi vào file nhằm phân biệt các máy Khi người dùng gõ bàn phím hay click chuột kể cả bàn phím ảo, thì Keylogger thu thập các phím gõ đó và lưu thành một tập tin, sau một thời gian cố định thì sẽ tự động gửi vào gmail đã cài đặt trước
o chức năng gửi mail: Theo thứ tự để gửi thông điệp, chúng ta cần phải
sử dụng một máy chủ SMTP (Simple Mail Transfer Protocol) Trong project, chúng ta đang sử dụng máy chủ SMTP của Gmail vì nó miễn phí
ĐÍNH KÈM FILE
L Ư U
Trang 13o chức năng ẩn mình: Keylogger chạy ẩn trên máy của người dùng đó
là nó hoạt động một cách lén lút, không có một biểu tượng nào trên destop hay trênthanh tast bar, và không có tên chương trình xuất hiện trong danh sách Task
Manager
Hình 2 Ảnh minh họa tệp tin Keylogger gửi về cho Gmail
Trang 142 Hướng dẫn cài đặt và sử dụng.
a Hướng dẫn cài đặt
- Trước tiên, chúng ta click vào file Keylogger.exe, giao diện cài đặt sẽ
xuất hiện như hình dưới Click vào Next để tiếp tục:
Ảnh 3 Hướng dẫn cài đặt
Trang 15- Chọn Next tiếp để tiếp tục:
Ảnh 4 Hướng dẫn cài đặt
Trang 16- Click chọn Browse để chọn nơi cài đặt Sau đó chọn Next để tiếp tục:
Ảnh 5 Hướng dẫn cài đặt
Trang 17- Chương trình sẽ hỏi bạn có muốn tạo Shortcuts cho chương trình ra
Desktop không Nếu có thì bạn tích chọn rồi sau đó chọn Next để tiếp tục cài đặt:
Ảnh 6 Hướng dẫn cài đặt
Trang 18- Chương trình sẽ đưa ra những thông tin mà bạn đã chọn như: vị trí cài
đặt chương trình….Chọn Install để bắt đầu cài đặt:
Ảnh 7 Hướng dẫn cài đặt
Trang 19- Chờ đợi trong giây lát chương trình cài đặt, sau khi thành công bạn
chọn Finish để kết thúc
Ảnh 8 Hướng dẫn cài đặt
b Hướng dẫn sử dụng
- Chương trình có tính năng AutoRun ngay sau khi cài đặt thành công
nên chúng ta sẽ không cần phải thao tác thêm gì cả
- Tất cả các dữ liệu Keylogger thu thập được sẽ được gửi về qua E-mail
mà đã đăng ký trước theo chu kỳ 30 giây một lần
3 Kết quả đạt được
Chương trình đã đạt được các chức năng sau:
- Ẩn mình trong máy được cài đặt.
- Thu thập các phím gõ kể cả bàn phím ảo.
- Tự động khởi chạy cùng Windows.
- Gửi thông tin đã thu thập được về Gmail.
- Lấy IP máy đã cài đặt.