Mục Lục
Tên phần : Trang :
Phần 1: Lời nói đầu 3
Phần 2: Nội Dung 4
I. Sơ lược về virus 4
1. Hooker là gì -2. Lịch sử của virus Hooker
3. Cấu tạo của Hooker 5
II. Cách thức để virus tiếp cận vào máy 7
1. Các dạng lây nhiễm 7
2. Cách lây bám 9
III. Cách thức hoạt động 9
1. Sau khi trojan được kích hoạt chúng sẽ làm những việc như sau -2. Cách thức ngụy trang 14
2.1.Tiến hành việc lấy thông tin -2.2.Tiến hành liên lạc với chủ của nó 15
2.3RPC(Remote Procedure Call) -2.4. Cách thức Config virus Hooker 19
IV. Làm sao để bạn tự bảo vệ mình 20
Phần 3: Tổng Kết 21
21 trang |
Chia sẻ: maiphuongdc | Lượt xem: 2623 | Lượt tải: 4
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu virus Hooker, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t hiện thêm lỗi kết nối RAS và cố định lỗi này. Đôi khi nó cũng xung
đột với một vài chủ đề.Khi đó keyloggingDll được chứa trong LZW.
2.7.Version 2.3 beta 5:
Hooker gửi đi các keylog. Nếu trong cửa sổ chỉ có “.” điều đó có nghĩa là
trojan không thể gửi thư đi (Hooker chỉ cần làm đầy hộp thư với một lượng lớn
các thư).
2.8.Version 2.3 beta 6:
Chỉ cần một chút thay đổi trong thủ tục gửi mail là hooker có thể bắt đầu trên
máy mà không cần rasapi32.dll.
2.9.Version 2.4:
Không có thêm phiên bản, đây là bản phát hành.Cố định ít lỗi trong tên
người dùng và tên máy chủ phát hiện.Có thêm một vài tính năng:
Keylog đầy đủ: nếu không được kiểm tra Hoocker sẽ chỉ đăng nhập cửa
sổ, nơi mà đã được keystrokes.
Nâng cao đăng nhập: nếu không được kiểm tra, Hoocker sẽ không đăng
nhập phím khoá mở rộng như shift,alt…
Ngoài ra còn cố định lỗi trong kết nối IP
3.Cấu tạo của Hooker :
a. Thành phần chính :
Một con Hooker thường 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 Hooker . Phần này là phần
được giấu kỹ nhất của Hooker , thông thường chỉ có thể gọi ra bằng một tổ hợp
phím tắt đặt 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) cho chủ nhân con virus …
b. Một số loại Hook :
5
Trong Windows, khi chúng ta thực hiện các thao tác nhấp chuột, nhấn
phím… thì hệ điều hành sẽ chuyển các sự kiện này thành các thông điệp
(message) rồi đưa vào hàng đợi (queue) của hệ thống. Sau đó, các thông
điệp được trao lại cho từng ứng dụng cụ thể để xử lý.
Hook là một kỹ thuật cho phép một hàm có thể chặn, theo dõi, xử lý, hoặc
hủy bỏ các thông điệp trước khi chúng “mò” đến được ứng dụng.
Hai ví dụ thường gặp của Hook là ứng dụng soạn thảo văn bản tiếng Việt
(Unikey, Vietkey…) và ứng dụng tra từ điển trực tiếp trên màn hình
(Click’n’See, Lạc Việt MTD, English Study…). Chúng xử lý thông điệp từ
bàn phím để đổi văn bản sang tiếng Việt, hoặc xử lý thông điệp từ con
chuột để lấy văn vản dưới con trỏ. Chương trình KeyLogger chuyên ăn cắp
mật khẩu cũng sử dụng kỹ thuật này , và con Virus Hooker cũng dựa trên
nguyên tắc đó
Xét về mặt chức năng, Hook có 15 loại ứng với nhóm sự kiện mà nó sẽ xử
lý :
- WH_CALLWNDPROC - hook quản lý các thông điệp trước lúc hệ
thống gởi chúng tới cửa sổ đích
- WH_CALLWNDPROCRET - hook quản lý các thông điệp sau khi
chúng được xử lý bởi thủ tục cửa sổ đích
- WH_CBT - hook nhận những thông báo có ích tới ứng dụng huấn
luyện trên cơ sở tính toán (CBT)
- WH_DEBUG - hook có ích cho việc debug những thủ tục hook khác
- WH_FOREGROUNDIDLE - hook sẽ được gọi khi thread
foreground của ứng dụng sẽ trở thành không dùng đến. Hook này có
ích cho hoạt động những nhiệm vụ (task) độ ưu tiên thấp trong thời
gian không được dùng đến
- WH_GETMESSAGE - hook quản lý các thông điệp được post tới
hàng thông điệp
- WH_JOURNALPLAYBACK - hook post những thông điệp được
ghi trước đó bởi thủ tục hook WH_JOURNALRECORD
6
- WH_JOURNALRECORD - hook ghi những thông điệp đầu vào
được post tới hàng thông điệp hệ thống. Hook này có ích cho việc
ghi các macro
- WH_KEYBOARD - hook quản lý các thông điệp keystroke
- KEYBOARD_LL Windows NT - hook quản lý những sự kiện nhập
vào từ keyboard mức thấp
- WH_MOUSE - hook quản lý các thông điệp chuột
- WH_MOUSE_LL Windows NT - hook quản lý những sự kiện đầu
vào chuột mức thấp
- WH_MSGFILTER - hook quản lý các thông điệp được kết sinh
như là một kết quả cuả sự kiện đầu vào ở trong dialog box, message
box, menu hay scroll bar
- WH_SHELL - hook quản lý các thông điệp nhận thông báo hữu ích
để shell các ứng dụng
- WH_SYSMSGFILTER - đặt một ứng dụng các thông điệp được
kết sinh như là kết quả của một sự kiện đầu vào ở trong dialog box,
message box, menu hay scroll bar. Thủ tục hook quản lý những
thông điệp này cho tất cả các ứng dụng trong hệ thống
Ứng với mỗi loại Hook, Windows sẽ có một chuỗi các hàm lọc (filter function) để
xử lý. Ví dụ, khi người dùng nhấn phím, thông điệp này sẽ được truyền qua tất cả
các hàm lọc thuộc nhóm WH_KEYBOARD
II.Cách thức để virus tiếp cận vào máy:
1. Các dạng lây nhiễm :
1.1 Từ ICQ :
ICQ là 1 chương trình máy tính cho phép nhắn gửi tin nhắn trực tiếp với
nhau qua dạng chữ viết hay tiếng nói , nó giống Instant Messenger của Yahoo
hay MS .
Nhưng nhiều người lại nghĩ rằng Trojan không thể lây lan trong khi họ
đang nói chuyện có thể gửi cho họ một chú Trojan.
Có thể bạn biết đến ICQ cho bạn một bug cho phép bạn gửi một file .exe
tới người khác nhưng khi đó người nhận nhìn như có vẻ bạn đang gửi một file
âm thanh, hình ảnh…
7
Ví dụ: Có người nào đó sẽ thay đổi biểu tượng của file.exe thành file.bmp,
và nói với bạn rằng đây là hình của anh. Bạn sẽ download nó về và bum bum bum
!!! Nhưng nếu người gửi file đổi tên file.exe thành .bmp thì bạn đã an toàn, vì khi
file.exe đổi tên thành .bmp thì file.exe không thể thực hiện. Nhưng khi file gửi
đến bạn đúng là một con Trojan được kẹp chung với file hình ảnh và người gửi đã
thay đổi icon của file.exe, khi đó Trojan sẽ bắt đầu chay mà bạn không hề nghi
ngờ, vì khi đó nó vẫn hiện hình ảnh của một ai đó. Đó là lý do mà hầu hết người
dùng nói họ không chạy bất kỳ file nào trong khi họ đã lỡ lầm truyền vào mà
không biết.
1.2 Từ IRC:
Cũng giống như phương pháp lây truyền từ ICQ phương pháp lây truyền
qua IRC cũng là lừa nạn nhân để chạy Trojan trong máy của mình.IRC(Internet
Relay Chat) là dạng liên lạc cấp tốc qua mạng Internet
1.3.Từ mail:
Trojan được lây lan bằng mail và tốc đọ của nó rất nhanh. Một cách đơn
giản và thường dùng là Trojan sẽ lấy địa chỉ mail trong address book để phát tán
cho những người bạn của bạn. Vì thế để đè phòng con virus này chúng ta hãy cài
ngay chương trình có thể kiểm tra mail trước khi download về và kiểm tra những
mail đã được gửi đi.
1.4 Từ truy cập trực tiếp:
Trong quá trình sử dụng máy tính thì có thể do lỗi truy nhập mà họ có thể bị
dính Trojan, hoặc do một người nào đó đã xâm nhập vào máy của mình và đã làm
cho máy của ta bị Trojan tấn công.
1.5. Một số thủ thuật và mánh khóe khác:
Trên các máy Microsoft Windows, người tấn công có thể đính kèm một
Trojan vào một cái tên có vẻ lương thiện vào trong một thư điện tử với việc dụ
người đọc mở tệp đính kèm ra. Trojan thường là các tệp khả thi trên Windows và
do đó sẽ có các đuôi như là .exe, .com, .bat, .src. hay .pif. Trong nhiều ứng dụng
của Windows đã có cấu hình mặc định không cho phép hiển thị các đuôi này..Do
đó, nếu trojan có tên chẳng hạn là “Readme.txt.exe” thì tệp này sẽ hiển thị một
8
cách mặc định thành “Readme.txt” và nó sẽ đánh lừa người dùng rằng đây chỉ là
một loại hồ sơ văn bản không thể gây hại.
Các biểu tượng cũng có thể được gán với các loại tệp khác nhau và có thể
được đính kèm và thư điện tử. Khi người này dùng , mở các biểu tượng thì các
Trojan ẩn dấu sẽ tiến hành những tác hại bất ngờ.Hiện nay các Trojan không chỉ
xóa các tệp , bí mật điều chỉnh cấu hình của máy tính bị nhiễm mà còn dùng máy
này như là một cơ sở để tấn công các máy khác trong mạng.
Lợi dụng một số lỗi của trình duyệt web, chẳng hạn như Internet Explorer, để
nhúng Trojan vào một trang web, khi người dùng xem trang này sẽ bị nhiễm.
Người dùng nên cập nhật các bản vá lỗi thường xuyên và dùng một trình duyệt
web có độ bảo mật cao như Firefox
2. Cách lây bám :
Ở trên là một số cách thức mà con virus này tiếp cận máy của chúng ta . Để
cho nó bám được vào các vật mang tin như trên thì chủ nhân con virus này dùng
Godmessage để lưu trojan vào trong mail, trang web. Khi nạn nhân mở mail, hay
trang web đó thì sẽ tự động bị nhiễm trojan (Godmessage là một công cụ tạo
ActiveX trên trang web. Người dùng IE truy cập tới một trang đã gài sẵn mã
ActiveX nguy hiểm, thì ngay lập tức trình duyệt của họ tải về một file dạng nén.
Và ở lần khởi động sau, nó sẽ được bung ra và bắt đầu hoành hành) . ActiveX là
một đoạn chương trình cho phép nhúng con Hooker vào trong tài liệu hoặc trang
web.
Khi chúng ta download một tài liệu nào đó , chẳng hạn là file ảnh , nếu
người gửi file đổi tên file.exe thành .bmp thì bạn đã an toàn, vì khi file.exe đổi tên
thành .bmp thì file.exe không thể thực hiện. Nhưng khi file gửi đến bạn đúng là
một con Trojan được kẹp chung với file hình ảnh và người gửi đã thay đổi icon
của file.exe, khi đó Trojan sẽ bắt đầu chay mà bạn không hề nghi ngờ, vì khi đó
nó vẫn hiện hình ảnh của một ai đó. Đó là lý do mà hầu hết người dùng nói họ
không chạy bất kỳ file nào trong khi họ đã lỡ lầm truyền vào mà không biết
III.Cách thức hoạt động:
1. Sau khi trojan được kích hoạt chúng sẽ làm những việc như sau
- Tìm vị trí an toàn để ẩn thân: Đoạn mã chính có thể tự tạo ra từ 2 đến 3 file và
9
có thể nhiều hơn nữa để tìm một vị trí tốt mà ẩn , những nơi mà chúng thích nhất
là... sytem, ...system32, trong đó có một file gọi là kích hoạt thường là các file thi
hành với đuôi có thể là .com, .exe, .bat, .inf..., 1 file dùng để lưu các hàm hoặc thư
viện hoặc thông tin, nếu như file chứa thư viện thường có đuôi là .dll, còn file
chứa thông tin thường có đuôi là .dat hoặc là .tmp.
- Giành quyền khởi động : Sau khi ẩn thân an toàn chúng bắt đầu giành quyền
khởi động bằng một số cách - đây là những nơi mà win ưu tiên khởi động trước :
- Trong các Autostart Folder: ví dụ file khởi động của trojan là trojan.exe thì
C:\Windows\Start Menu\Programs\startup\trojan.exe.
Trong file C:\windows\Win.ini tại dòng lệnh
load=Trojan.exe
hoặc run=Trojan.exe
- Trong file c:\windows\system.ini sau dòng lệnh shell
Shell=Explorer.exe trojan.exe
Trojan sẽ tự động chạy khi file Explorer.exe chạy
- Trong Autoexec.bat
c:\....\Trojan.exe
- Explorer Startup
c:\explorer.exe,c:\...\trojan.exe
- Tạo một khóa trong Registry :
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio
n\Run]
"trojan"="c:\...\Trojan.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio
n\RunOnce]
"trojan"="c:\...\Trojan.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio
n\RunServices]
"trojan"="c:\...\Trojan.exe"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio
n\RunServicesOnce]
"trojan"="c:\...\Trojan.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
10
Run]
"trojan"="c:\...\Trojan.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\
RunOnce]
"trojan"="c:\...\Trojan.exe"
- Trong Registry Shell Open với key là "%1 %*"
[HKEY_CLASSES_ROOT\exefile\shell\open\command]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\com
mand]
trojan.exe "%1 %*"
- Trong 1 số ứng dụng mà cho phép một số chương trình chạy: ví dụ ICQ
[HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\]
- Trong ActiveX
[HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed
Components\KeyName]
StubPath=C:\...\Trojan.exe
- Tiêu diệt các Phần mền antivirus và các firewall tức là những chương trình chống
lại nó bằng cách kiểm tra bộ nhớ và phát hiện nếu như 1 số file nào mà giống như
list nằm trong file dữ liệu thì remove hoặc ngăn chặn lại .
Các tiến trình mà virus tự động kết thúc trong khi thực thi :
ZONEALARM.EXE
WFINDV32.EXE
WEBSCANX.EXE
VSSTAT.EXE
VSHWIN32.EXE
VSECOMR.EXE
VSCAN40.EXE
VETTRAY.EXE
VET95.EXE
NT.98.EXET
CA.EXE
TBSCAN.EXE
SWEEP95.EXE
SPHINX.EXE
SMC.EXE
11
SERV95.EXE
SCRSCAN.EXE
SCANPM.EXE
SCAN95.EXE
SCAN32.EXE
SAFEWEB.EXE
RESCUE.EXE
RAV7WIN.EXE
RAV7.EXE
PERSFW.EXEP
CFWALLICON.EXE
PCCWIN98.EXE
PAVW.EXE
PAVSCHED.EXE
PAVCL.EXE
PADMIN.EXE
OUTPOST.EXE
NVC95.EXE
NUPGRADE.EXE
NORMIST.EXE
NMAIN.EXE
NISUM.EXE
NAVWNT.EXE
NAVW32.EXE
NAVNT.EXE
NAVLU32.EXE
NAVAPW32.EXE
N32SCANW.EXE
MPFTRAY.EXE
MOOLIVE.EXE
LUALL.EXE
LOOKOUT.EXE
LOCKDOWN2000.EXE
JEDI.EXE
IOMON98.EXE
IFACE.EXE
ICSUPPNT.EXE
ICSUPP95.EXEI
CMON.EXE
ICLOADNT.EXE
ICLOAD95.EXE
IBMAVSP.EXE
IBMASN.EXE
12
IAMSERV.EXE
IAMAPP.EXE
FRW.EXEFPROT.EXE
FP-WIN.EXE
FINDVIRU.EXE
F-STOPW.EXE
F-PROT95.EXE
F-PROT.EXE
FAGNT95.EXE
ESPWATCH.EXE
ESAFE.EXE
ECENGINE.EXE
DVP95_0.EXE
DVP95.EXE
CLEANER3.EXE
CLEANER.EXE
CLAW95CF.EXE
CLAW95.EXE
CFINET32.EXE
CFINET.EXE
CFIAUDIT.EXE
CFIADMIN.EXE
BLACKICE.EXE
BLACKD.EXE
AVWUPD32.EXE
AVWIN95.EXE
AVSCHED32.EXE
AVPUPD.EXE
AVPTC32.EXE
AVPM.EXE
AVPDOS32.EXE
AVPCC.EXEAVP32.EXE
AVP.EXE
AVNT.EXE
AVKSERV.EXE
AVGCTRL.EXE
AVE32.EXE
AVCONSOL.EXE
AUTODOWN.EXE
APVXDWIN.EXE
ANTI-TROJAN.EXE
ACKWIN32.EXE
13
_AVPM.EXE
_AVPCC.EXE
_AVP32.EXE
2.Cách thức ngụy trang :
Do việc phân chia làm nhiều phần giúp Trojan rất nhiều trong việc ngụy
trang nghĩa là những đoạn mã chính được nằm trong các thư viện dạng động có
đuôi là dll với một phần tên có vẽ rất giống một thư viện của win làm cho rất khó
phá hiện và được nẳm tại những nơi có các file cùng kiểu với nó thường là thư
mục C:..\system , còn đoạn mã có nhiệm vụ boot thì rất nhỏ có thể được mã hoá và
hide khiến cho ta nhẳm tưởng một file vô hại . Để chống việc theo dõi của các
phần mền anti chúng có thể tự thêm một số lệnh mà những lệnh này không ảnh
hưởng tới phần logic của chương trình (chống lại việc mô phỏng hoá ) khiến cho
nó có thể thay đổi kích thước file mỗi lần khởi động , hoặc có thể ẩn thân dưới một
số chương trình mà mọi người thường dùng bẵng cách nối một dòng lệnh vào
chương trình nào đó với các kiểu ( chèn đầu , chèn giữa hay chèn cuối mà không
ảnh hưởng đến chương trình chủ ) , với cách này đoạn mã boot không dể dàng gì
phát hiện , nếu có del đoạn mã boot trên disk thì khi chạy chương trình chủ thì
đoạn mã boot vẫn hoạt động trở lại một cách bình thường . Để tăng thêm việc
ngụy trang chúng phải ẩn dưới taskbar nghĩa là nhấn CTRL+ALT+DEL thì đoạn
mã vẫn không hiện ra , hoặc tiến hành phá hủy dòng lệnh msconfig là dòng lệnh
hiện các file khởi động của win . Ngoài ra sau khi đoạn mã chính được kích hoạt
thì đoạn mã boot vừa tạo thành lại có dòng lệnh kiểm tra xem và del luôn cả
chương trình chính khiến cho việc ẩn thân càng kín đáo hơn . Chính vì nhiệm vụ
lấy thông tin cần phải kín đáo nên trojan lấy việc kín đáo và ẩn thân là rất quan
trọng
2.1.Tiến hành việc lấy thông tin :
Tuỳ theo người thiết kế ra trojan mà thông tin lấy có nhiều kiểu khác nhau nhưng
chủ yếu là làm những nhiệm vụ sau :
+ Lấy thông tin về password của các loại webmail , các ứng dụng có kiểu là
login+password, ICQ, IRC, FTP, HTTP...
+ Lấy thông tin tất cả các file có kiểu:.DBX; .TBB; .EML; .MBX; .NCH;
.MMF; .INBOX; .ODS với mục đích tra lấy tất cả các nội dung mail của victim
+ Lấy về một số file mà do yêu cầu người thiết kế viết , đa số là các file ứng dụng
và dữ liệu cũng như login thường có dạng: .doc; .dbf; .sxl; .pwl; .log
+ Chiếm tất cả tài nguyên , chúng có thể mở port , tạo ra giao thức để giúp cho
14
chúng có khả năng lấy thêm dữ liệu ở các máy khác hoặc giúp cho chủ nhân của
nó có thể truy cập từ xa hay kết nối vào máy vistim để lấy thông tin hoặc giành
quyền điểu khiển máy vistim như : del, upload, down ..., chiếm HTTP, FPT,
SMTP... giúp cho việc liên hệ với chủ nhân của nó được dể dàng.
2.2.Tiến hành liên hệ với chủ nó :
Người chế ra virus Hooker chỉ mong được yêu cầu cuối cùng này tức là phải liên
hệ được với mình , đây là bước mà chủ nhân nó mong chờ nhất.Như vậy ngoài
những thành phần cơ bản đã nói ở trên thì để có một con Hooker hoàn chỉnh thì
trong tập Files mà sau khi con virus này được kích hoạt thì nó còn có một File
“mswinsck.ocw” . Mswinsck.ocx là một trình điều khiển ActiveX và được gọi là
Winsock Control . Nó có sẵn trong Microsoft Visual Studio và được sử dụng để
kết nối đến một máy từ xa để trao đổi dữ liệu bằng cách sử dụng TCP hay UDP,
các giao thức được sử dụng để tạo ra các máy khách và máy chủ chương trình
Để liên lạc được với chủ nhân nó trojan này thực hiện theo cơ chế gọi từ xa
RPC(Remote Procedure Call)
+ Dùng thông qua SMTP port 25 pop3 tức là thông qua một server mail là nơi mà
chủ nhân nó có khả năng nhận . Nhưng để dùng được SMTP thì cấn phải kết nối
mạng , nếu như gởi mail đi mà không kết nối thì tất nhiên là máy victim sẽ cảnh
báo chính vì vậy mà trojan sẽ lưu một số địa chỉ vào phần dữ liệu của mình và
kiểm tra giá trị của url nếu như thấy sự thay đổi trên trang web và trên url thì tất
nhiên mạng đã được kết nối , hoặc -dùng google.com để kiểm tra sự kết nối
+ Dùng Ftp port port 21, HTTP fort 80 , 23 , để có thề gởi dữ liệu hay cho chủ nó.
Có thể tạo ra một port nào đó rồi nằm chờ đợi chủ nhân của nó kết nối vào máy
victim
Đa số các virus Hooker đời sau nó tận dụng tất cả các kiểu truyền thông tin nhưng
mà càng về sau thì càng khai thác triệt để hơn tài nguyên , chúng đang thiên về
loại mở port nẳm chờ đợi hơn , cái này thì giúp chủ nhân của nó khai thác được
nhiều thông tin hơn . Để giúp cho việc kết nối giữa trojan nằm ở máy victim(người
bị hại) và chủ nhân của con virus thì phần dữ liệu của trojan còn lưu thêm 2 phần
để tra tên vả pass .Nó gởi mail về hộp thư của chủ nhân nó dưới dạng file Log.txt
Sau đây chúng ta cùng tìm hiểu qua về RPC :
2.3.RPC(Remote Procedure Call):
Remote Procedure Call (RPC) – Thủ tục gọi hàm từ xa là một kỹ thuật tiến bộ
cho quá trình kết nối từ Client đến Server để sử dụng các ứng dụng và dịch vụ. RPC cho
phép client có thể kết nối tới 1 dịch vụ sử dụng dynamic port nằm ở một máy tính khác.
Trong hệ thống mạng máy tính hiện nay có rất nhiều dịch vụ và ứng dụng sử dụng cơ chế
kết nối RPC, ví dụ quá trình đồng bộ của các Domain Controller trong hệ thống Active
Directory, hoặc khi MS Outlook kết nối tới MS Exchange Server…
A. Kiến trúc của RPC:
15
RPC được thiết kế để cung cấp cho việc truyền tải thông tin giữa client và server dễ
dànghơn, bảo mật hơn, và thuận tiện hơn cho việc đồng bộ hóa các luồn dữ liệu. Các hàm
chứa trong RPC hỗ trợ cho việc truy cập bất kỳ chương trình nào đòi hỏi phương pháp
giao tiếp từ client đến server. Hình bên dưới sẽ cho chúng ta thấy kiến trúc của RPC
Hình 1: Kiến trúc Remote Procedure Call
B. Các thành phần của RPC
Thành phần Miêu tả
Client or server
process Chương trình hoặc dịch vụ trả lời từ yêu cầu của RPC
RPC stubs Những hệ thống chương trình con được dùng bởi client hoặc server khởi động yêu cầu RPC.
Marshalling engine
(NDR20 hoặc
NDR64)
Cung cấp một giao diện chung giữa RPC Client và RPC Server và
được chia làm 2 loại: NDR20 và NDR64. NDR20 được dùng cho hạ
tầng 32 bits. Trong khi đó NDR64 được tối ưu dùng cho hạ tầng 64
bits. Client và Server sẽ thương lượng nên chọn NDR20 hay NRD64
để giao tiếp với nhau
Runtime application
programming
interface (API)
Cung cấp giao diện cho RPC tới Clients hoặc Servers. Thông thường,
RPC Clients và Servers sẽ gọi hàm API (giao diện lập trình ứng dụng)
để khởi tạo RPC và chuẩn bị cấu trúc dữ liệu sẽ được sử dụng để thực
hiện cuộc gọi RPC. Lớp API sẽ quyết định nếu yêu cầu RPC đến từ
marshalling engine hoặc trực tiếp từ client/server đến máy chủ nội bộ
hoặc máy chủ từ xa. Sau đó lớp API sẽ dẫn đường cho RPC đến
Connection RPC, Datagram RPC hoặc Local RPC Layers
16
Connection RPC
protocol engine
Được sử dụng khi RPC yêu cầu giao thức kết nối. Lớp này sẽ chỉ định
sử dụng giao thức kết nối nếu RPC được gửi đi hoặc nhận được một
kết nối hướng tới RPC
Datagram RPC
protocol engine
Được sử dụng khi RPC yêu cầu giao thức phi kết nối. Lớp này sẽ chỉ
định sử dụng giao thức phi kết nối nếu RPC được gửi đi hoặc nhận
được một phi kết nối tới RPC
Local RPC protocol
engine Được sử dụng khi Server và Client đặt trong cùng một host.
Registry
Được truy cập khi dịch vụ RPC đầu tiên được tải về. Các thành phần
trong registry sẽ chỉ định dãy port IP và tên thiết bị của các card mạng
để RPC có thể kết hợp chúng lại với nhau. Trừ khi API ép buộc RPC
phải dùng, Registry sẽ không được sử dụng trong hoạt động của RPC
Win32 APIs
(kernel32.dll,
advapi32.dll,
ntdll.dll)
Kernel32.dll là một file thư viện động 32 bits có trong Windows NT.
File này chịu trách nhiệm quản ly bộ nhớ, các hoạt động vào ra của hệ
thống
Advapi32.dll là file nâng cao của Windows 32 dựa trên giao diện lập
trình ứng dụng. File này hỗ trợ về bảo mật và gọi các registry
Ntdll.dll là file dll quản lý chức năng các file hệ thống của Windows
NT
SSPI
(secur32.dll)
Cung cấp giao diện bảo mật cho RPC. File secur32.dll sẽ thương
lượng cách dùng cho việc chứng thực và mã hóa như: Kerberos,
NTLM, hoặc Secure Sockets Layer (SSL)
Endpoint Mapper
(EPM)
(rpcss.dll)
Rpcss.dll (Remote procedure call subsystem) chủ yếu cung cấp cơ sở
hạ tầng cho các dịch vụ COM, nhưng một phần của Rpcss.dll được
dùng cho EPM. RPC Server liên lạc với EPM để nhận những điểm kết
thúc động và đăng ký những điểm này vào cơ sở dữ liệu của EPM.
Rồi sau đó khi RPC Clients muốn kết nối tới RPC Server, nó sẽ liên
lạc với EPM để nhờ EPM phân giải những điểm kết thúc..
Active Directory
Chỉ được sử dụng cho quá trình xử lý RPC client khi giao diện bảo
mật cụ thể như Kerberos hoặc Negotiate như nhà cung cấp bảo mật
hoặc khi Server dùng NTLM như nhà cung cấp bảo mật
Used in the RPC client process only when the security interface
specifies Kerberos or Negotiate as the security provider or when the
server uses NTLM as the security provider.
Network stack Được sử dụng thông qua các yêu cầu và trả lời của RPC giữa Client và Server
Kernel Được sử dụng thông qua các yêu cầu và trả lời của RPC giữa Client và Server
C. Quá trình xử lý và tương tác của RPC
Các thành phần của RPC sẽ giúp cho Clients xử lý dễ dàng bằng cách gọi hàm nằm trên
một chương trình từ xa. Client và Server có một địa chỉ không gian riêng; điều đó có
17
nghĩa là mỗi nguồn tài nguyên bộ nhớ của Client và Server cấp phát cho dữ liệu sẽ được
dùng bởi hàm.
Hình 2: Quá trình xử lý của RPC
Quá trình xử lý của RPC bắt đầu từ phía Client. Ứng dụng từ phía Client sẽ gọi Client
stub thay vì client phải viết code triển khai cho hàm đó. Các stub sẽ được biên soạn và
liên kết với các ứng dụng từ phía client trong quá trình phát triển. Thay vì chứa mã code
để thực hiện thủ tục gọi hàm từ xa, các code của stub sẽ yêu cầu truy vấn những tham số
từ địa chỉ không gian của Client và sau đó chuyển chúng vào thư viện chạy thực của
client. Sau đó, thư viện chạy thực của client sẽ biên dịch những tham số cần thiết vào
định dạng chuẩn NDR (Network Data Representation) để chuyển giao cho Server.
Tiếp theo stub của Client sẽ gọi hàm trong thư viện chạy thực của Client (rpcrt4.dll) để
gửi các yêu cầu và thông số của nó đến server. Nếu server được đặt trong cùng 1 host với
client, thư viện chạy thực có thể sử dụng các tính năng của Local RPC (LRPC) và thông
qua các yêu cầu của RPC tới Windows kernel cho việc truyền tải đến server. Nếu server
được đặt ở một host khác, thư viện chạy thực sẽ xác định một giao thức truyền tải thích
hợp và thông qua các yêu cầu của RPC đến Network Stack cho việc truyền tải đến server.
RPC có thể dùng các cơ chế trao đổi khác (Interprocess Communications – IPC) như:
Name pipes và Winsock để thực hiện truyền tải đến server.
Bảng dưới đây sẽ liệt kê các giao thức mạng hỗ trợ RPC và các loại RPC kết nối với giao
thức tương ứng được sử dụng
Protocol RPC Type
Transmission Control Protocol (TCP) Connection–oriented
Sequenced Packet Exchange (SPX) Connection–oriented
Named Pipe Connection–oriented
HTTP Connection–oriented
User Datagram Protocol (UDP) Connectionless
Cluster Datagram Protocol (CDP) Connectionless
18
Khi Server nhận được yêu cầu của RPC(từ phía client trong nội bộ hoặc client từ xa), các
hàm trong thư viện chạy thực RPC của Server chấp nhận các yêu cầu và gọi hàm xử lý
Server Stub. Server stub sẽ truy vấn các tham số từ network buffer và chọn 1 trong 2 loại
NDR20 hoặc NDR64 (trong NDR Marshalling Engines), sau đó chuyển đổi chúng từ
định dạng truyền tải mạng sang định dạng theo yêu cầu bởi mày chủ. Sau đó các thủ tục
từ xa sẽ được chạy, có khả năng xuất ra các tham số và trả về giá trị. Khi các thủ tục từ xa
hoàn tất, một chuỗi các bước tương tự sẽ trả về dữ liệu cho Client
Các thủ tục từ xa trả dữ liệu của nó về cho Server Stub, chọn 1 trong 2 loại NDR20 hoặc
NDR64 (trong NDR Marshalling Engines), chuyển đổi những tham số được xuất ra thành
định dạng truyền tải mạng đến client và trả chúng vào thư việc chạy thực RPC của
Server. Sau đó thư viện chạy thực RPC của Server sẽ truyền tải dữ liệu đến máy tính của
Client bằng LRPC hoặc qua network.
Client hoàn tất các thủ tục bằng cách chấp nhận dữ liệu qua mạng và trả dữ liệu về để gọi
hàm. Thư viện chạy thực RPC của Client nhận được thủ tục
Các file đính kèm theo tài liệu này:
- Tim_Hieu_Virus_Hooker.pdf