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 ghi lại các phím được gõ trên bàn phím, thường là bí mật, để người sử dụng bàn phím không biết rằng hành động của họ đang bị theo dõi. Sau đó, dữ liệu có thể được người vận hành chương trình ghi lại truy xuất. Keylogger có thể là phần mềm hoặc phần cứng.

Mặc dù bản thân các chương trình là hợp pháp, với nhiều chương trình được thiết kế để cho phép người sử dụng lao động giám sát việc sử dụng máy tính của họ, trình ghi lại phím thường được sử dụng để đánh cắp mật khẩu và thông tin bí mật khác. Keylooger cũng có thể được sử dụng để theo dõi hoạt động của trẻ em ở trường hoặc ở nhà và bởi các quan chức thực thi pháp luật để điều tra việc sử dụng có mục đích xấu.

Keylogger cũng có thể được sử dụng để nghiên cứu động lực gõ phím hoặc tương tác giữa người và máy tính. Có nhiều phương pháp ghi lại thao tác gõ phím, từ các phương pháp tiếp cận dựa trên phần cứng và phần mềm đến phân tích mật mã âm thanh.

## Lịch sử
Vào giữa những năm 1970, Liên Xô đã phát triển và triển khai một keylogger phần cứng nhắm vào máy đánh chữ. Được gọi là "selectric bug",  nó đo chuyển động của đầu in của máy đánh chữ IBM Selectric thông qua các tác động tinh tế lên từ trường khu vực do chuyển động quay và chuyển động của đầu in gây ra. Một keylogger ban đầu được Perry Kivolowitz viết và đăng lên nhóm tin tức Usenet net.unix-wizards, net.sources vào ngày 17 tháng 11 năm 1983. Việc đăng tải này dường như là một yếu tố thúc đẩy việc hạn chế quyền truy cập vào `/dev/kmem` trên các hệ thống Unix.  Chương trình chế độ người dùng được vận hành bằng cách định vị và đổ danh sách ký tự (máy khách) khi chúng được lắp ráp trong hạt nhân Unix.

Vào những năm 1970, các điệp viên đã cài đặt các keylogger trong các tòa nhà Đại sứ quán và Lãnh sự quán Hoa Kỳ tại Moscow. Họ đã cài đặt các lỗi trong máy đánh chữ điện Selectric II và Selectric III.

Các đại sứ quán Liên Xô sử dụng máy đánh chữ thủ công, thay vì máy đánh chữ điện, cho thông tin mật—rõ ràng là vì chúng miễn nhiễm với những lỗi như vậy. Tính đến năm 2013, các dịch vụ đặc biệt của Nga vẫn sử dụng máy đánh chữ.

## Ứng dụng của keylogger

### Keylogger phần mềm

Keylogger dựa trên phần mềm là chương trình máy tính được thiết kế để ghi lại mọi thông tin nhập từ bàn phím. Keylogger được sử dụng trong các tổ chức CNTT để khắc phục sự cố kỹ thuật với máy tính và mạng doanh nghiệp. Gia đình và doanh nhân sử dụng keylogger hợp pháp để theo dõi việc sử dụng mạng mà không cần người dùng biết trực tiếp. Microsoft đã công khai tuyên bố rằng Windows 10 có keylogger tích hợp trong phiên bản cuối cùng "để cải thiện dịch vụ nhập và viết". Tuy nhiên, những cá nhân có ý đồ xấu có thể sử dụng keylogger trên máy tính công cộng để đánh cắp mật khẩu hoặc thông tin thẻ tín dụng. Hầu hết các keylogger không bị chặn bởi mã hóa HTTPS vì điều đó chỉ bảo vệ dữ liệu khi truyền giữa các máy tính; keylogger phần mềm chạy trên máy tính của người dùng bị ảnh hưởng, đọc trực tiếp dữ liệu nhập từ bàn phím khi người dùng nhập.

Theo góc độ kỹ thuật, có một số loại:

* **Dựa trên trình quản lý ảo**: Về mặt lý thuyết, trình ghi phím có thể nằm trong trình quản lý ảo phần mềm độc hại chạy bên dưới hệ điều hành, do đó vẫn không bị ảnh hưởng. Về cơ bản, nó trở thành một máy ảo. Blue Pill là một ví dụ về khái niệm.
* **Dựa trên [[Nhân hệ điều hành|hạt nhân]]**: Một chương trình trên máy có được quyền truy cập root để ẩn trong hệ điều hành và chặn các lần nhấn phím đi qua hạt nhân. Phương pháp này khó viết và khó chống lại. Các keylogger như vậy nằm ở cấp hạt nhân, khiến chúng khó bị phát hiện, đặc biệt là đối với các ứng dụng chế độ người dùng không có quyền truy cập root. Chúng thường được triển khai dưới dạng rootkit để phá hoại hạt nhân hệ điều hành để có được quyền truy cập trái phép vào phần cứng. Điều này làm cho chúng trở nên rất mạnh mẽ. Ví dụ, một trình ghi phím sử dụng phương pháp này có thể hoạt động như một trình điều khiển thiết bị bàn phím và do đó có thể truy cập vào bất kỳ thông tin nào được nhập trên bàn phím khi thông tin đó đi đến hệ điều hành.
* **Dựa trên [[Giao diện lập trình ứng dụng|API]]**: Các keylogger này ghim các API bàn phím vào bên trong một ứng dụng đang chạy. Keylogger ghi lại các sự kiện gõ phím như thể đó là một phần bình thường của ứng dụng chứ không phải là phần mềm độc hại. Keylogger nhận được một sự kiện mỗi khi người dùng nhấn hoặc nhả phím. Keylogger chỉ ghi lại sự kiện đó.
** Các API Windows như `GetAsyncKeyState()`, `GetForegroundWindow()`, v.v. được sử dụng để thăm dò trạng thái của bàn phím hoặc để đăng ký các sự kiện bàn phím. Một ví dụ gần đây hơn chỉ đơn giản là thăm dò BIOS để tìm mã PIN xác thực trước khi khởi động chưa được xóa khỏi bộ nhớ.
* **Dựa trên Form grabbing**: Keylogger dựa trên Form grabbing ghi lại các lần gửi biểu mẫu Web bằng cách ghi lại dữ liệu biểu mẫu trên các sự kiện gửi. Điều này xảy ra khi người dùng hoàn thành biểu mẫu và gửi, thường là bằng cách nhấp vào nút hoặc nhấn enter. Loại keylogger này ghi lại dữ liệu biểu mẫu trước khi dữ liệu được truyền qua Internet.
* **Dựa trên [[JavaScript]]:** Một thẻ script độc hại được đưa vào trang web mục tiêu và lắng nghe các sự kiện chính như `onKeyUp()`. Các script có thể được đưa vào thông qua nhiều phương pháp khác nhau, bao gồm cả cross-site scripting, man-in-the-browser, man-in-the-middle, hoặc xâm nhập trang web từ xa.
* **Dựa trên Memory-injection**: Các keylogger dựa trên Memory Injection (MitB) thực hiện chức năng ghi nhật ký của chúng bằng cách thay đổi các bảng bộ nhớ được liên kết với trình duyệt và các chức năng hệ thống khác. Bằng cách vá các bảng bộ nhớ hoặc tiêm trực tiếp vào bộ nhớ, kỹ thuật này có thể được tác giả phần mềm độc hại sử dụng để vượt qua UAC (Kiểm soát tài khoản người dùng) của Windows. Trojan Zeus và SpyEye chỉ sử dụng phương pháp này. Các hệ thống không phải Windows có cơ chế bảo vệ cho phép truy cập vào dữ liệu được ghi cục bộ từ một vị trí từ xa. Có thể đạt được giao tiếp từ xa khi sử dụng một trong các phương pháp sau::
** Dữ liệu được tải lên trang web, cơ sở dữ liệu hoặc máy chủ FTP.
** Dữ liệu được gửi qua email định kỳ đến một địa chỉ email được xác định trước.
** Dữ liệu được truyền không dây bằng hệ thống phần cứng được đính kèm.
** Phần mềm cho phép đăng nhập từ xa vào máy cục bộ từ Internet hoặc mạng cục bộ để lưu trữ nhật ký dữ liệu trên máy mục tiêu.

## 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 để theo điều phối hoạt động, tinh chỉnh các thiết lập, xem các tập tin nhật ký cho Keylogger. Phần này là phần được giấu kỹ nhất của keylogger, thông thường chỉ có thể gọi ra bằng một tổ 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/ghi lại toàn bộ những gì hook ghi nhận được.

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 - 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/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.

## Phòng, tránh và chống keylogger
### Phòng
Keylogger thường bị 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/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:

* Không tùy tiện mở các tập tin lạ, không rõ nguồn gốc. 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 đó cho bạn.
* 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 bạn 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 keylog về để bảo vệ

### Tránh keylogger
Khi nghi ngờ nó 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 bạn 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 nó; 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*) từ đó bạn 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 bạn hãy tìm một đoạn văn có các từ p, a, s, w, o, r, d (ví dụ t**o** d**a**y I**s** a h**o**t day, **p**eter feel ba**d** he **w**ant a cool drink o**r** 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 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 quét các tìm các chương trình theo dõi cùng lúc quá nhiều ứng dụng dùng cách này thường bằng một tập tin 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ệ bạn 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 Antispyware củ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ói thêm: nếu bạn 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 virut)**

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.

## Xem thêm
* Ad-Aware
* Spybot S&D
* Rootkit
* Trojan horse
* Phần mềm độc hại
* Sâu máy tính (worm)
* Virus máy tính

## Tham khảo

## Liên kết ngoài
### Tiếng Việt
* Keylogger... "kẻ thù" giấu mặt! Báo tuổi trẻ 

### Ngôn ngữ khác
* Keylogging Keylogger phần cứng và keylogger phần mềm (khái niệm).
* Trang chủ của phần mềm SpybotS&D
* Trang chủ của phần mềm Ad Aware
* Trang chủ của phần mềm Microsoft Defender
* Trang chủ của phần mềm Spyware Doctor

* Trang chủ của phần mềm Anti-keylogger