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
Trang 1LỜ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
1
Trang 2MỤC LỤC
Trang
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
2
Trang 3BÁO CAO TTTN ĐẠI HỌC LỞI MỞ ĐẦU
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
Trang 4BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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:
Trang 5BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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)?
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?
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:
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:
Trang 6BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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
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
Trang 7BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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ọ
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)
Trang 8BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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ì 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
Trang 9BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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)
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
Trang 10BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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 :
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
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 :
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 Windows\System32 xóa các tập tin bpk, bpkhk.dll, bpkwb.dll
Trang 11BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER
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ảiTOTALCMD*************** - 2040 - ekey.dll < - quen thuộcEasy 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 :
+ Vào mục Start -> Run gõ : cmd
Trang 12BÁO CAO TTTN ĐẠI HỌC CHƯƠNG I TÌM HIỂU KEYLIGER+ Ở màn hình Dos gõ : taskkill /f /im Easy Keylogger*************** /tERROR: 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ự
Trang 13BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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
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.
Trang 14BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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 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 :
Ý 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ủ
Trang 15BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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 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
Trang 16BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆUNế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á
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ề.
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:
_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
Trang 17BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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
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
Trang 18BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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.
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ả
Trang 19BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆUcá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.
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
Trang 20BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
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
Trang 21BÁO CAO TTTN ĐẠI HỌC CHƯƠNG II GIỚI THIỆU
Username:freedomelem 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
Trang 22BÁO CAO TTTN ĐẠI HỌC CHƯƠNG III DEMO CHƯƠNG TRINH