Tải bản đầy đủ (.pdf) (15 trang)

Báo cáo Keylogger - Kiểm thử xâm nhập mạng (có demo)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (807.67 KB, 15 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THÔNG TIN

Học phần: Kiểm thử xâm nhập mạng
Bài báo cáo:
Keylogger theo dõi người dùng
Giảng viên hướng dẫn:
Sinh viên thực hiện:
Nguyễn Hoàng Sơn
Nguyễn Hoàng Bảo Khánh
Nguyễn Thái Cường
Nguyễn Văn Đại
Nguyễn Duy Phong

Hà Nội 2019

TS. Nguyễn Ngọc Điệp
B15DCAT141
B15DCAT101
B15DCAT033
B15DCAT037
B15DCAT130


MỤC LỤC
LỜI MỞ ĐẦU ................................................................................................3
I. Giới thiệu về kiến thức: ................................................................................4
1. Keylogger: ..............................................................................................4
1.1. Keylogger là gì? ................................................................................4
1.2. Phân loại keylogger: ..........................................................................4
1.3. Cách hoạt động của keylogger: ...........................................................4


2. Windows Hook:.......................................................................................5
2.1. Quy trình xử lý thơng điệp (message) của Windows: ............................5
2.2. Hook là gì? .......................................................................................5
2.3. Cơ chế hoạt động của hook.................................................................6
2.4. Các loại hook (hook type) ..................................................................7
2.5. Phạm vi của Hook .............................................................................9
2.6. Hook Prodecure.................................................................................9
2.7. Các hàm API cần thiết .......................................................................9
3. Marco Virus: ......................................................................................... 10
II. Kịch bản tấn công: .................................................................................... 11
III. Demo: .................................................................................................... 13
IV. Phân chia công việc: ................................................................................ 13
V. Kết luận: .................................................................................................. 14
VI. Tài liệu tham khảo: .................................................................................. 15

2


LỜI MỞ ĐẦU
Bảo mật và bảo đảm an tồn thơng tin dữ liệu đang là vấn đề thời sự được nhiều
nhà khoa học tập trung nghiên cứu, là một chủ đề rộng có liên quan đến nhiều lĩnh vực.
Hiện nay có rất nhiều cách tấn cơng để hacker có thể lấy được thông tin quan trọng của
người dùng, một trong số đó phải kể đến là keylogger.

3


I. Giới thiệu về kiến thức:
1. Keylogger:
1.1. Keylogger là gì?

Keylogger là một phần mềm nhỏ gọn – hoặc đôi lúc nguy hiểm hơn thậm chí là một thiết
bị phần cứng – với khả năng ghi lại mọi phím bấm mà người dùng đã nhấn trên bàn
phím. Tổng hợp kết quả của các tổ hợp phím này, kẻ cài đặt keylogger có thể thu được tin
nhắn cá nhân, nội dung email, số thẻ tín dụng và dĩ nhiên nguy hiểm nhất là mọi loại mật
khẩu của người dùng.
1.2. Phân loại keylogger:
Keylogger bao gồm hai loại, một loại keylogger phần cứng và một loại là phần mềm. Báo
cáo này đề cập đến loại phần mềm. Keylogger phần mềm có thể được phân loại theo 4
loại theo mức độ nguy hiểm tăng dần:
 Loại số 1: 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: Keylogger nguy hiểm; chạy ngầm, hướng đến mục đích do thám nhiều
hơn là giám sát (nguy hại đến 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: Keylogger loại 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: 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 và tiêu diệt.
Trong báo cáo demo, nhóm em sẽ làm về loại số 4 nguy hiểm nhất, có thể lấy dữ liệu
người dùng, ẩn thân, get log, remote từ server hacker đồng thời bypass được AV.
1.3. Cách hoạt động của keylogger:
1.3.1. 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.
4





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 tồn bộ những gì hook ghi nhận được.

Ngồ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)…
1.3.2. Cách thức cài đặt vào máy:
Trong đa số trường hợp, keylogger được các malware cài đặt một cách âm thầm lên máy
người dùng sau khi thâm nhập thành công. Nếu máy tính của người dùng đã bị thâm
nhập, đoạn mã độc này có thể mang sẵn trong mình chức năng của một phần mềm
keylogger nhỏ gọn – hoặc nó có thể hoạt động như một Trojan, tiến hành tải về và cài đặt
gói keylogger một cách âm thầm, thậm chí là kèm theo nhiều phần mềm độc hại khác.
Thường thì các malware cũng sẽ tự động thiết lập một kênh để gửi thông tin mà
keylogger thu được về cho “chủ nhân”. Có thể nói keylogger là một trong những cơng cụ
được tin tặc ưa chuộng nhất bởi chúng có thể thu được mọi loại thông tin của người dùng
bằng phương pháp này.
1.3.3. 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.
2. Windows Hook:
2.1. Quy trình xử lý thơng điệp (message) của Windows:
Đầu tiên khi các sự kiện, các hành động của người dùng như là click chuột, gõ
phím, … thì hệ điều hành sẽ chuyển các sự kiện, hành động tương ứng đó thành các
thơng điệp (message). Sau đó Windows sẽ đẩy các thông điệp này vào hàng đợi của hệ
thống (system queue) và từ hàng đợi của hệ thống các thông điệp sẽ được chuyển cho các
hàng đợi ứng dụng (application queue). Từ lúc này, các ứng dụng sẽ lấy các thông điệp
này trong hàng đợi ứng dụng để xử lý thông qua các vịng lặp chờ thơng điệp.
2.2. Hook là gì?
Hook là cơ chế là từ đó một hàm có thể chặn các sự kiện (message, bàn phím,
chuột, …) trước khi chúng được gửi tới hàng đợi của ứng dụng. Các hàm này có thể thực
5


hiện một số thao tác trên sự kiện và trong một vài trường hợp hồn tồn có thể định nghĩa
lại hoặc thậm chí hủy bỏ sự kiện mà nó bắt được. Một điểm cần lưu ý là các hàm này
được gọi bởi Windows chứ không phải từ một ứng dụng.
Windows hỗ trợ nhiều loại hook khác nhau, mỗi loại nhắm tới việc bắt chặn một loại
thông điệp cụ thể nào đó. Ví dụ, một ứng dụng có thể sử dụng WH_KEYBOARD để
giám sát các sự kiện ấn phím trong hệ thống. Nhờ loại hook này mà một chương trình có
thể can thiệp vào và tạo ra khả năng gõ Tiếng Việt khi soạn thảo văn bản. Một loại hook
khác là WH_MOUSE cho phép theo dõi các sự kiện liên quan tới hoạt động của chuột.
2.3. Cơ chế hoạt động của hook
Như đã nói ở trên, có nhiều loại hook (như chuột, bàn phím) và hệ điều hành ln
duy trì một danh sách các hook procedure cho mỗi loại đó. Mỗi danh sách các hook
procedure này được gọi là hook chain. Bản chất của hook chain là một dãy các con trỏ trỏ
tới các Hook procedure.
Khi hệ thống thực hiện một sự kiện nào đó, nó sẽ tìm kiếm trong hook chain tương
ứng với sự kiện đó. Nếu một hook procedure phù hợp được tìm thấy, hệ thống sẽ thực

hiện nó và chỉ lấy lại quyền điều khiển khi hook chain kết thúc. Vì thế ngay khi một hook
procedure thực hiện xong, nó phải thực hiện việc chuyển quyền điều khiển cho hook
procedure kế tiếp trong hook chain.
Tuy nhiên cơ chế này còn tùy thuộc vào nhiều loại hook. Như một số loại hook chỉ
thực hiện việc theo dõi các thông điệp, vì vậy cho dù hook procedure có chuyển quyền
điều khiển cho hook procedure kế tiếp hay không, hệ thống vẫn sẽ tự động làm việc này.

Hình 0.1 Hoạt động của Hook
Một điều lưu ý nữa là hook sẽ làm chậm hệ thống, vì thế chỉ nên cài đặt hook khi
cần thiết và loại bỏ nó khi đã hồn tất công việc.

6


2.4. Các loại hook (hook type)
Các loại hook

Tác dụng
1. Cho phép theo dõi các thông điệp được gửi
WH_CALLWNDPROC và
tới window procedure (các cửa sổ của
WH_CALLWNDPROCRET
windows).

WH_CBT

2. Hệ thống sẽ gọi hook WH_CBT trước khi
kích hoạt, tạo, hủy, thu nhỏ, phóng to, di
chuyển, hoặc thay đổi kích cỡ của cửa sổ
trong Windows, trước khi hồn thành một

lệnh hệ thống, trước khi xóa sự kiện chuột
hoặc bàn phím khỏi hàng đợi hệ thống hoặc
trước khi đồng bộ hóa với hàng đợi hệ thống.
Giá trị mà hook này trả về xác định xem hệ
thống có cho phép hoặc ngăn chặn một trong
các hoạt động trên hay không.

3. Hệ thống gọi hook WH_DEBUG trước khi
gọi một hook procedure liên kết với bất kỳ
WH_DEBUG
một hook nào trên hệ thống. Hook này có thể
sử dụng để xác định xem có cho phép hệ
thống gọi hook procedure liên kết với các
hook khác hay không.
5. Hook này cho phép ứng dụng có thể theo dõi
các thơng báo được trả về bởi hàm
GetMessage hoặc PeekMessage. Có thể sử
WH_GETMESSAGE
dụng hook này để giám sát đầu vào của chuột
4.
hay bàn phím cũng như các thông điệp khác
được gửi lên hàng đợi ứng dụng.
7. Hook này cho phép ứng dụng chèn thông
điệp vào hàng đợi hệ thống. Có thể dùng
WH_JOURNALPLAYBACK hook này để lấy lại một loạt các sự kiện
chuột vào bàn phím được ghi lại trước đó
6.
bằng
cách
sử

dụng
WH_JOURNALRECORD.
Hook này cho phép theo dõi và ghi lại các sự
WH_JOURNALRECORD
kiện đầu vào. Thơng thường có thể sử dụng
7


Các loại hook
8.

WH_KEYBOARD_LL

WH_KEYBOARD

WH_MOUSE_LL

WH_MOUSE

WH_MSGFILTER
WH_SYSMSGFILTER

Tác dụng
hook này để ghi lại các sự kiện chuột vào bàn
phím và phát lại sau đó bằng cách sử dụng
hook WH_JOURNALPLAYBACK.
Hook này cho phép theo dõi các sự kiện của
bàn phím mà được truyền vào hàng đợi.
Hook này cho phép ứng dụng giám sát lưu
lượng thông điệp cho thông điệp

WM_KEYDOWN và WM_KEYUP mà
được trả về từ hàm GetMessage và
PeekMessage. Có thể dùng hook này để giám
sát đầu vào của bàn phím truyền tới hàng đợi.
Hook này cho phép giám sát các sự kiện đầu
vào của chuột được truyền vào hàng đợi.
Hook này cho phép theo dõi các thơng điệp
chuột được trả về bởi hàm GetMessage và
PeekMessage. Có thể sử dụng hook này để
giám sát đầu vào của chuột được truyền về
hàng đợi
Các hook này cho phép theo dõi các thông
điệp được xử lý bởi một menu, thanh cuộn,
hộp tin nhắn, hộp thoại, và để phát hiện khi
và một cửa sổ khác sắp được kích hoạt như là
khi người dùng ấy tổ hợp phím ALT+TAB
hoặc ALT+ESC.
Bảng 3.1 Các loại Hook

8


2.5. Phạm vi của Hook
Dựa theo hook ta có thể cài đặt hook procedure có phạm vi cục bộ (local
hook/thread hook) hoặc toàn cục (global hook). Tất cả các loại hook đều có thể được cài
đặt để trở thành một global hook. Một số cho phép chọn lựa phạm vi hook dựa vào các
tham số trong hàm cài đặt (SetWindowsHookEx).
- Local hook (thread hook): chỉ có ảnh hưởng trong phạm vi một thread.
- Global hook: có ảnh hưởng trong tồn hệ thống. Trường hợp này, hook
procedure phải được chứa trong một thư viện DLL.

2.6. Hook Prodecure
Hook procedure là một loại “callback function” (hàm hồi quy). Hệ thống sẽ gọi các
hàm này khi các sự kiện, thông điệp tương ứng với loại hook. Mỗi loại hook có một hook
procedure khác nhau nhưng đều có cùng tham số. Với mỗi hook procedure khác nhau thì
việc xét các giá trị tham số cũng khác nhau:
LRESULT CALLBACK HookProc (int nCode, WPARAM wParam, LPARAM
lParam)
- nCode: giá trị giúp xác định cách xử lý thông điệp. Nếu nCode nhỏ hơn 0, hook
procedure sẽ gọi CallNextHookEx. Ngược lại sẽ thực hiện các công việc xử lý
trước khi gọi CallNextHookEx.
- wParam và lParam: tùy theo loại hook sẽ có ý nghĩa khác nhau. Ví dụ nếu bạn
hook bàn phím thì wParam sẽ có giá trị của phím được nhấn, lParam sẽ chứa các
thông tin về số lần nhấn, các phím tắt, trạng thái phím, …
2.7. Các hàm API cần thiết
Để sử dụng hook, ta cần sử dụng 3 hàm API cần thiết:
- SetWindowsHookEx: cài đặt một hook procedure vào một hook chain.
HHOOK WINAPI SetWindowsHookEx (int idHook, HOOKPROC lpfn,
HINSTANCE hMod, DWORD dwThreadId)
- idHook: loại hook (được liệt kê ở trên).
- lpfn: một con trỏ đến hook procedure. Nếu là global hook thì tham số này phải
trỏ đến một hook procedure trong một DLL. Ngược lại thì có thể trỏ đến một
đoạn mã đóng vai trị hook procedure trong process hiện tại.
9


- hMod: handle của DLL chứa hook procedure. Trong trường hợp local hook thì
tham số này được đặt là NULL.
- dwThreadId: định danh của thread mà hook procedure sẽ gắn vào. Nếu giá trị này
là 0 thì mọi thread sẽ bị ảnh hưởng (global), ngược lại thì chỉ có thread được xác
định là bị ảnh hưởng (local).

- CallNextHookEx: chuyển quyền điều khiển cùng các thông tin hook cho hook
procedure kế tiếp trong hook chain. Bạn có thể khơng sử dụng hàm này tuy nhiên
chỉ khi nào bạn muốn chặn các hook procedure còn lại trong hook chain.
LRESULT WINAPI CallNextHookEx (HHOOK hhk, int nCode,WPARAM
wParam, LPARAM lParam)
- hhk: handle của hook lấy được từ SetWindowsHookEx, tuy nhiên tham số này
thực sự không cần thiết.
- nCode: tham số này được gọi tên là hook code. Giá trị của nó sẽ quyết định hook
procedure có thực hiện các cơng việc xử lý khơng. Nếu giá trị này là âm, bạn cần
gọi hàm CallNextHookEx để chuyển tới hook procedure kế tiếp và bỏ qua bước
xử lý (xem phần hook procedure). Giá trị này có được do hệ thống quyết định và
bạn không nên thay đối giá trị.
- wParam / lParam: các tham số lưu trữ thông tin cần thiết cho hook procedure kế
tiếp.
- UnhookWindowsHookEx: gỡ hook procedure ra khỏi hook chain được cài đặt
bởi SetWindowsHookEx.
- hhk: handle của hook sẽ được loại ra khỏi hook chain, lấy từ
SetWindowsHookEx.

3. Marco Virus:
Macro là những đoạn mã lệnh được sử dụng để thực hiện một số nhiệm vụ một cách tự
động. Việc sử dụng Macro sẽ giúp người sử dụng đơn giản hóa các thao tác lặp đi lặp lại
để thực hiện một công việc cụ thể nào đó, chỉ bằng một câu lệnh Macro. Các ứng dụng
trong bộ Microsoft Office như Word, Excel, PowerPoint đều cho phép tạo ra các Macro
ngay trong các file văn bản, file bảng tính hay file trình diễn. Hacker đã lợi dụng điều này
để tạo ra virus Macro, lây nhiễm trên các file văn bản (.doc, .docx), các file bảng tính
(.xls, .xlsx) hay các file trình diễn (.ppt, .pptx) của các phần mềm Word, Excel hay
PowerPoint.
10



II. Kịch bản tấn cơng:
Nhóm em chuẩn bị bao gồm:
- File doc có chứa marco virus.
- File exe chứa Keylogger trong Resource làm nhiệm vụ cài đặt.
- File Keylogger có chức năng ghi lại thao tác nhập từ bàn phím và thông tin cửa sổ, tab
website của người dùng.
- Server để nhận file log và remote.
Sơ đồ tấn công:

- Nạn nhân nhận được 1 file doc có chứa virus marco độc hại.
- Khi mở file doc ra, marco tự động thực thi: Download và thực thi file exe chứa mã độc
và cài đặt.
- File exe này thực hiện giải nén và lưu Keylogger vào trong thư mục
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup (nhằm mục đích
để Keylogger ln khởi động cùng Windows).
- Process của Keylogger được chạy nền: ghi lại toàn bộ thao tác nhập từ bàn phím và
thơng tin các cửa sổ, các tab website mà nạn nhân truy cập rồi lưu lại trong file log theo
ngày tại thư mục %APPDATA%\Microsoft\Windows\Windows Data.
- Khi cần, Hacker có thể dùng server connect đến Keylogger này để lấy về file log.

11


File log được lưu lại hàng ngày tại thư mục Windows Data:

File log của ngày 7-5-2019:

12



III. Demo:
Để dễ hình dung, nhóm em xin phép demo bằng video và test trong môi trường local.
/>
IV. Phân chia cơng việc:
Thành viên

Cơng việc

Nguyễn Hồng Bảo Khánh

Code server, marco virus, file exe tự cài đặt

Nguyễn Hoàng Sơn

Code Keylogger

Nguyễn Thái Cường

Code client trong Keylogger

Nguyễn Văn Đại

Hỗ trợ code server

Nguyễn Duy Phong

Viết báo cáo, hỗ trợ code

13



V. Kết luận:
Về cốt lõi, phần mềm keylogger vẫn luôn được xếp vào dạng mã độc – malware. Việc
bảo vệ mình trước loại mã độc này là điều hết sức quan trọng. Với công nghệ ngày càng
phát triển, kéo theo nhiều đồ dùng đều có thể là một thiết bị điện tử thì việc bị theo dõi
bằng keylogger hàng ngày sẽ cực kì nguy hiểm. Trong báo cáo này, nhóm em đã cố gắng
mơ phỏng lại những gì có thể xảy ra nếu bị hacker tấn công và lấy thông tin bằng
Keylogger.
Do thời gian có hạn và khối lượng kiến thức cần nghiên cứu là vô cùng rộng lớn nên báo
cáo khơng thể tránh khỏi những thiếu sót, rất mong sự đóng góp ý kiến của thầy và các
bạn để có thể được hồn thiện hơn.

14


VI. Tài liệu tham khảo:
[1] Wikipedia
[2] TCP/IP Sockets in C: Practical Guide for Programmers (The Morgan
Kaufmann Practical Guides Series) 2nd Edition
[3] Hacking: How to Make Your Own Keylogger in C++ Programming Language

15



×