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

Mô hình nguy hiểm của bộ nhớ trên Hệ điều hành Windows

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 (1.11 MB, 41 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ

BÀI TẬP LỚN

Mô hình nguy hiểm với bộ nhớ
trên HĐH Windows
Học phần: Mã độc
Giáo viên hướng dẫn: Đặng Xuân Bảo
Nhóm sinh viên thực hiện: Nhóm 10 – L01
1. Trần Minh Đức

Hà Nội, tháng1 11 năm 2019


MỤC LỤC
MỤC LỤC.......................................................................................................... 2
DANH SÁCH CÁC KÝ HIỆU TỪ VIẾT TẮT .................................................. 4
DANH SÁCH CÁC BẢNG................................................................................ 5
DANH SÁCH CÁC HÌNH VẼ ........................................................................... 6
LỜI MỞ ĐẦU .................................................................................................... 7
Chương I: Tổng quan về mô hình nguy hiểm với bộ nhớ trên HĐH Window ..... 8
1.1 Nguyên nhân ............................................................................................. 8
1.2 Mối de dọa trên nền tảng Windows ........................................................... 8
Chương II: Sự tương quan ............................................................................... 10
2.1. Kỹ thuật tấn công dễ bị tổn thương ......................................................... 10
2.2. Bộ nhớ pháp y ........................................................................................ 10
2.3. Quy trình bảo vệ dữ liệu ......................................................................... 10
Chương III: Tổng quan về mô hình .................................................................. 12
3.1. Giả thuyết ............................................................................................... 12
3.2. Mô tả về mô hình .................................................................................... 13


3.2.1 Định nghĩa 1 (nạn nhân) .................................................................... 13
3.2.2 Định nghĩa 2 (kẻ tấn công) ................................................................ 13
3.2.3 Định nghĩa 3 (PMCAP) ..................................................................... 14
3.2.4 Định nghĩa 4 (MTV) .......................................................................... 14
Chương IV: Thực hiện ...................................................................................... 20
4.1 Thu thập bộ nhớ xử lý.............................................................................. 20
4.2 Khai thác dữ liệu ..................................................................................... 22
4.2.1 Định nghĩa 5 ( điểm neo) ................................................................... 27
4.2.2 Định nghĩa 6 ( điểm đích) .................................................................. 27
Chương V: Đánh giá......................................................................................... 31
5.1 Thời gian tồn tại của các đối tượng mục tiêu ........................................... 31
5.2 Tìm kiếm Vtable ...................................................................................... 32
5.3. Tìm kiếm biến toàn cục .......................................................................... 33
5.4. Tìm kiếm không gian ngăn xếp............................................................... 34
2


5.5. Nghiên cứu điển hình.............................................................................. 36
Chương VI: Kết luận ........................................................................................ 40
TÀI LIỆU THAM KHẢO ................................................................................ 41

3


DANH SÁCH CÁC KÝ HIỆU TỪ VIẾT TẮT
PMCAP
DEP
ASLR
UAC
COOP

CFI
SGX
MITM
MTV
MIC
ACE
PID

Process Memory Captor
Data Execution Protection
Address Space Layout Randomization
User Account Control
Object-Oriented Programming
Control Flow Integrity
Software Guard Extensions
Man in The Middle
Model Threat Value
Mandatory Integrity Control
Access Control Entry
Process Identify

4


DANH SÁCH CÁC BẢNG
Bảng 5.1. Kết quả tìm kiếm dựa trên vtable tính năng trong các điều kiện khác
nhau.................................................................................................................. 33
Bảng 5.2. Các trường thu được từ các cấu trúc đối tượng HTTP....................... 36
Bảng 5.3. Các trường thu được từ các cấu trúc đối tượng HTTP....................... 38


5


DANH SÁCH CÁC HÌNH VẼ
Hình 3.1: Kịch bản tấn công điển hình.............................................................. 12
Hình 3.2: Cái nhìn trực quan về mô hình PMCAP ............................................ 15
Hình 3.3: Truy cập vào các quy trình so với các đối tượng Trung bình và Thấp
quy trình cấp toàn vẹn ...................................................................................... 17
Hình 4.1: Khả năng của tiến trình IE ở mức toàn vẹn thấp................................ 20
Hình 4.2: Khả năng của quá trình Edge ở mức toàn vẹn của AppContainer. ..... 21
Hình 4.3: Khả năng của các quy trình Chrome. ................................................ 22
Hình 4.4: Ví dụ của bộ nhớ tiến trình x64. ........................................................ 23
Hình 4.5: Khả năng của các quy trình Chrome. Mối quan hệ giữa các đối tượng
mục tiêu và biến toàn cục. ................................................................................ 25
Hình 4.6: Đoạn mã từ Chrome.dll ..................................................................... 26
Hình 4.7: Ví dụ cho điểm neo và điểm đích trên stack. .................................... 27
Hình 4.8: Kiểm tra địa chỉ đối tượng trên stack và ước tính thời gian. .............. 28
Hình 4.9: Thuật toán 1 – Thuật toán tìm kiếm ngăn xếp chủ đề cho PMCAP ... 29
Hình 5.1: Thời gian sống của các đối tượng trong môi trường khác nhau ......... 31
trong các điều kiện khác nhau........................................................................... 33
Hình 5.2: Kết quả dựa trên tìm kiếm biến toàn cầu ........................................... 34
Hình 5.3: Kết quả dựa trên tìm kiếm ngăn xếp ................................................. 35
Hình 5.4: Một ví dụ về khung stack cho Edge 64 bit khi chạy .......................... 36
Hình 5.5: Bố trí ngăn xếp khi bước vào amd64_CallFunction .......................... 37
Hình 5.6: Nhật ký theo dõi chuỗi phần của thủ tục đăng nhập iCloud ............... 39

6


LỜI MỞ ĐẦU

Xã hội hiện nay đang ngày càng phát triển cùng với sự vươn lên mạnh mẽ
của ngành Công nghệ thông tin. Mặc dù các nước phát triển đã đầu tư, nghiên cứu
các thiết bị đầu cuối của PC nhưng vẫn không thể thay thế được các việc liên quan
đến hệ điều hành của Windows trong cuộc sống . Trong vài thập kỷ qua, có rất
nhiều nghiên cứu bảo mật trên nền tảng Windows để tăng cường bảo mật và bảo
vệ dữ liệu nhạy cảm, bao gồm phân tích phần mềm độc hạ và khai thác lỗ hổng
bảo mật tối đa. Từ góc độ phát triển HĐH Windows, Bảo vệ Thực thi Dữ liệu
(DEP) và Ngẫu nhiên Bố cục Không gian Địa chỉ (ASLR) được giới thiệu trên
Windows XP SP2 để ngăn chặn việc khai thác tràn bộ đệm. Sau đó, Windows 7
hạn chế quyền của chương trình theo các cơ chế như Kiểm soát tài khoản người
dùng (UAC), chế độ được bảo vệ, cách ly phiên 0 và BitLocker. Thiết bị bảo vệ
và AppContainer khác được tích hợp với Windows 10 cung cấp khả năng bảo vệ
tốt hơn. Thực tiễn cho thấy khó khăn trong việc thỏa hiệp HĐH Windows đang
tăng lên. Trong khi đó, Microsoft đã đưa ra chương trình tiền thưởng, có thể thúc
đẩy các nhà nghiên cứu khám phá các phương pháp đảm bảo an toàn mới. Biện
pháp này có thể giúp ngăn chặn các cuộc tấn công thực sự xảy ra.
Trong bài báo cáo này, chúng em mô tả và phân tích mô hình và PMCAP
sau đó đưa ra một triển khai chi tiết lấy bốn trình duyệt web phổ biến IE, Edge,
Chrome và Firefox làm ví dụ. Cuối cùng, mô hình được xác minh thông qua các
thí nghiệm thực tế và nghiên cứu trường hợp.

7


Chương I: Tổng quan về mô hình nguy hiểm với bộ nhớ
trên HĐH Window
Hiện tại, Windows đã được trang bị nhiều thành phần bảo mật và chính
sách, nhưng các ứng dụng trên chạy trên nền tảng này vẫn phải đối mặt với thách
thức bảo mật trong quá trình sử dụng.
1.1 Nguyên nhân

• Windows là một hệ sinh thái mở, cho phép người dùng cài đặt và thực hiện
chương trình của bên thứ ba. Nó không xác nhận nguồn gốc chương trình
một cách nghiêm ngặt và ngăn chặn những điều chưa biết được cài đặt, mặc
dù đưa ra một số cảnh báo bảo mật như UAC. Hầu hết các chính sách bảo
mật không được triển khai theo mặc định và phải luôn được cấu hình bởi
các chuyên gia. Những kẻ tấn công cũng đang làm việc với PowerShell để
tạo ra các mối đe dọa của riêng chúng ngay cả khi có trình bảo vệ. Tất cả
những điều này cho thấy khả năng xâm nhập phần mềm độc hại vẫn còn
tồn tại.
• So với “hộp cát” ứng dụng trên nền tảng di động thì cơ chế kiểm soát truy
cập trên Windows kém hơn. Một số tài nguyên không được bảo vệ hiệu
quả; các chương trình có quyền cơ bản có thể tạo ra khả năng đe dọa tiềm
ẩn. Ví dụ, các quy trình ở cùng mức toàn vẹn có thể truy cập lẫn nhau; các
ứng dụng có thể đọc hầu hết các thư mục và tập tin trên đĩa. Một quy trình
đặc quyền có thể sửa đổi cấu hình bảo mật hệ thống, thêm chứng chỉ gốc
đáng tin cậy hoặc thay đổi cài đặt đăng ký, v.v.
1.2 Mối de dọa trên nền tảng Windows
Từ tình hình bảo mật được mô tả ở trên, bài viết này chỉ ra một mô hình
mối đe dọa PMCAP mới trên nền tảng Windows. Mô hình nhắm mục tiêu là quá
trình biến động của dữ liệu bộ nhớ trong thời gian thực, đặc biệt là dữ liệu liên
quan đến mạng. Dựa trên các cuộc tấn công vào hệ thống điểm cuối, tương tự như
một cuộc tấn công không có mã tối thiểu; trước tiên, mô hình tận dụng sự không
hoàn hảo của kiểm soát truy cập và cơ chế bảo vệ dữ liệu, sau đó nó có thể trích
xuất dữ liệu riêng tư từ bộ nhớ.
• Đầu tiên, bài viết chỉ ra một mô hình đe dọa dữ liệu bộ nhớ xử lý trong thời
gian thực trên hệ điều hành Windows. Mô hình đe dọa các trình duyệt web
và các chương trình khác được xây dựng trên các kỹ thuật tấn công đa dạng.
Bài viết cũng xem xét ảnh hưởng của các yếu tố mạng đến dữ liệu bộ nhớ
liên quan đến mạng.
8



• Thứ hai, đề xuất một phương pháp trích xuất dữ liệu bộ nhớ mới dựa trên
không gian ngăn xếp luồng và nó có thể trích xuất dữ liệu quan trọng một
cách hiệu quả từ không gian địa chỉ lớn.
• Thứ ba, phân tích các cấu trúc dữ liệu chính liên quan đến truyền thông của
các trình duyệt web phổ biến, lấy đó làm ví dụ và mô tả việc triển khai mô
hình.
• Cuối cùng, đánh giá việc thực hiện ví dụ và thảo luận về lợi ích và hạn chế
của mô hình.

9


Chương II: Sự tương quan
2.1. Kỹ thuật tấn công dễ bị tổn thương
Nhiều kỹ thuật khai thác lỗ hổng tiên tiến như tấn công tái sử dụng mã được
đề xuất để bỏ qua các bảo vệ mới nhất. Một kỹ thuật gọi là lập trình hướng dữ liệu
(DOP), không phụ thuộc vào việc kiểm soát dữ liệu để chiếm quyền điều khiển
luồng và chỉ sử dụng dữ liệu không kiểm soát để xây dựng các cuộc tấn công hoàn
chỉnh Turing. Phân tích sự cô lập của Chrome, sau đó kẻ tấn công có thể truy cập
các hệ thống cục bộ với sự trợ giúp của các dịch vụ đám mây.
Sử dụng khai thác để thực hiện tải trọng tấn công trên hệ thống đích là bước
đầu tiên của mô hình; các kỹ thuật tấn công hiện có có thể được áp dụng. Windows
được trang bị nhiều cơ chế bảo mật nhưng vẫn có một số cách tiếp cận bỏ qua,
bao gồm một số kỹ thuật thực thi mạnh mẽ. Mặc dù các kỹ thuật tấn công này có
sự phụ thuộc khi thực hiện, nhưng nó cho thấy luôn có mối đe dọa tiềm tàng của
các cuộc tấn công chưa biết.
2.2. Bộ nhớ pháp y
Các nghiên cứu về pháp y bộ nhớ chủ yếu chứa thu thập bộ nhớ, phân tích

bộ nhớ và phục hồi cấu trúc dữ liệu. Cụ thể hơn, trước tiên, nó sử dụng thẻ phần
cứng, ảo hóa và các ứng dụng ở các cấp độ khác nhau bao gồm cấp độ người dùng
và cấp độ nhân. Nó hoạt động theo cách không xâm phạm và sử dụng cách tiếp
cận mạnh mẽ để tìm ra bí mật chính của TLS bằng cách giải mã và xác minh các
bản ghi TLS trong một vòng lặp. DSCRLEX là một kỹ thuật kỹ thuật đảo ngược
tự động tuyệt vời để khôi phục nhiều loại dữ liệu ứng dụng, sử dụng lại logic ứng
dụng từ chương trình nhị phân.
Mô hình nhằm mục đích lấy dữ liệu bộ nhớ biến động trực tiếp và cố gắng
thu thập và phân tích dữ liệu liên tục trong thời gian thực. Đó là một thách thức
để giải quyết vấn đề định vị và trích xuất dữ liệu phù du. Tải trọng tấn công của
mô hình sẽ chạy trong chế độ người dùng trên hệ thống đích. Nó có một số hạn
chế về các vấn đề không xâm phạm, chẳng hạn như lịch trình chủ đề. Một số kỹ
thuật được đề cập ở trên, như nhận dạng cấu trúc dữ liệu tự động, có thể cung cấp
hỗ trợ cho mô hình. Mặt khác, một số kỹ thuật được đề cập trong mô hình là hữu
ích cho việc trích xuất bộ nhớ dựa trên ảo hóa hoặc phần cứng.
2.3. Quy trình bảo vệ dữ liệu
Có một số công trình nghiên cứu để bảo vệ dữ liệu quá trình bao gồm mã
hóa và cách ly. Kỹ thuật thực tế nhất là Phần mở rộng bảo vệ phần mềm Intel
(SGX), được Windows 10 hỗ trợ. Nó cung cấp một cơ chế “hộp cát” có thể cô lập
các phần mềm độc hại trên nền tảng bao gồm cả rootkit. Mặc dù các biện pháp
10


bảo vệ này có thể ngăn chặn dữ liệu bộ nhớ bị phần mềm độc hại truy cập, đôi khi
chúng phụ thuộc vào phần cứng và khó áp dụng cho người dùng thông thường
của Internet để bảo vệ quy mô lớn trong tương lai gần.
Lỗ hổng bảo mật đóng một vai trò quan trọng trong sự thâm nhập. Hầu hết
các nghiên cứu hiện có cho công nghệ tấn công tập trung vào thực thi mã, vì nó
là bước đầu tiên của toàn bộ quá trình tấn công. Nghiên cứu làm việc trên pháp y
bộ nhớ chủ yếu giải quyết vấn đề phân tích ảnh chụp nhanh bộ nhớ. Bảo vệ dữ

liệu bộ nhớ không được triển khai rộng rãi trên điểm cuối của người dùng thông
thường. Mặt khác, phần mềm độc hại thực sự luôn đe dọa bảo mật dữ liệu thông
qua các hành vi xâm lấn như móc nối. Mô hình trong bài viết này được xây dựng
dựa trên các cuộc tấn công dễ bị tổn thương và nhấn mạnh vào việc trích xuất dữ
liệu bộ nhớ trực tiếp, bao gồm cả ảnh hưởng của các yếu tố mạng.

11


Chương III: Tổng quan về mô hình
Trong hầu hết các trường hợp, người dùng gặp phải một cuộc tấn công phần
mềm độc hại do cài đặt phần mềm bị ràng buộc với mã độc hại hoặc truy cập liên
kết URL lừa đảo. URL có thể là một địa chỉ trang web bình thường, nhưng nó
chứa mã độc đã được kẻ tấn công triển khai trước đó. Mặt khác, liên kết URL có
thể chuyển hướng đến trang web do kẻ tấn công kiểm soát khi liên lạc bị tấn công.
Thông thường nhất, máy tính người dùng mạng kết nối với điểm phát sóng Wi-Fi
do kẻ tấn công giả mạo và bị tấn công bởi công nghệ Man in The Middle (MITM).
Mặc dù các giao thức TLS đã được sử dụng rộng rãi, nhưng vẫn có rất nhiều lưu
lượng truy cập web bị rủi ro

Hình 3.1 Kịch bản tấn công điển hình
3.1. Giả thuyết
Để có được một mô tả rõ ràng về mô hình, cần đưa ra một số giả định như
sau: Trong đó, các giả định (i) và (ii) là điều cần thiết và giả định (iii) là tiềm năng.
• Kẻ tấn công giữ một số bộ dụng cụ khai thác có chứa mã thực thi mã từ xa
hoặc các lỗ hổng leo thang đặc quyền; họ hành động trên trình duyệt web
hoặc các chương trình khác. Trên thực tế, có nhiều bằng chứng về mã khái
niệm cho các trình duyệt web và các plugin của chúng trên Internet, chẳng
hạn như Metasploit Framework và bộ khai thác. Đó là một thách thức để
có được các lỗ hổng không xác định hoặc zero-day.


12


• (ii) Bảo vệ toàn vẹn mã tồn tại trong hệ thống đích. Nói cách khác, kẻ tấn
công không thể sửa đổi mã tồn tại trên hệ điều hành bằng các công nghệ
như hooking.
• (iii) Kẻ tấn công có thể giả mạo các điểm truy cập Wi-Fi và sau đó kiểm
soát việc liên lạc của nạn nhân kết nối với điểm phát sóng. Các điểm truy
cập Wi-Fi miễn phí có sức lan tỏa trong thành phố, vì vậy những kẻ tấn
công có thể đánh lừa người dùng một cách dễ dàng dựa trên lỗ hổng của
giao thức Wi-Fi.
3.2. Mô tả về mô hình
PMCAP nỗ lực để giảm bớt ảnh hưởng trên hệ thống đích và nhắm vào các
cấu trúc đối tượng liên quan đến mạng trong bộ nhớ quy trình trực tiếp. Nó có hai
lợi thế.
• Khi tìm kiếm, có mục tiêu rõ ràng thay vì khớp chuỗi trong toàn bộ không
gian địa chỉ bộ nhớ, để cải thiện hiệu quả.
• (ii) Các cấu trúc đối tượng, với hình dạng gốc mở rộng của cây, có thể chỉ
ra nội dung dữ liệu trong phạm vi rộng. Bắt đầu từ cấu trúc dữ liệu, có thể
thu được nhiều dữ liệu hữu ích hơn với chi phí thấp hơn. Đầu tiên, đưa ra
các định nghĩa về mô hình PMCAP như sau.
3.2.1 Định nghĩa 1 (nạn nhân)
Một nạn nhân được ký hiệu là bốn bộ như được biểu diễn trong công thức
sau:
VR = (Ver, GP, HP, TP)
(1)
Trong đó:
• Ver là một tập hợp thông tin phiên bản, bao gồm các mô-đun và chương
trình hệ thống trên máy tính nạn nhân.

• GP là một bộ quy trình có thể kích hoạt các khai thác và sau đó gây ra việc
thực thi mã từ xa.
• HP là bộ quy trình máy chủ; mã tấn công có thể tự tiêm vào nó để duy trì
thời gian chạy.
• TP là bộ quy trình đích, từ đó mã tấn công sẽ trích xuất dữ liệu.
3.2.2 Định nghĩa 2 (kẻ tấn công)
Kẻ tấn công được ký hiệu là một tuple như trong công thức sau đây
AR = (Exp, Payload, Loc)
(2)
Trong đó :
• Exp là bộ sưu tập khai thác thuộc sở hữu của những kẻ tấn công;
13


• Payload là tập hợp mã tấn công, thực hiện nhiệm vụ trích xuất dữ liệu theo
nhiều cách khác nhau.
• Loc biểu thị vị trí của kẻ tấn công và quyết định xem kẻ tấn công có thể
kiểm soát mạng nạn nhân hay không.
3.2.3 Định nghĩa 3 (PMCAP)
Mô hình PMCAP được ký hiệu là một tuple như trong công thức sau đây:
PMCAP = (VR, AR, ENV)
(3)
Trong đó :
• VR là nạn nhân bao gồm các tài nguyên liên quan; trong Định nghĩa 1.
• Tương tự AR đại diện cho kẻ tấn công; xem Định nghĩa 2.
• ENV là môi trường mạng cho kẻ tấn công và nạn nhân; nó quyết định nếu
có những con đường tấn công giữa chúng.
Sau đó, từ tất cả các yếu tố được liệt kê ở trên, chúng ta có thể phân tích mối đe
dọa của mô hình bằng Giá trị Đe dọa Mô hình (MTV), được định nghĩa như sau.
Từ định nghĩa và phương pháp tính toán của nó, chúng ta sẽ nhận ra các thành

phần chính trong mô hình.
3.2.4 Định nghĩa 4 (MTV)
MTV có thể đo lường mối đe dọa gây ra bởi cuộc tấn công cụ thể; phương
pháp tính toán được hiển thị theo công thức sau:
MTV = f (µ, PC, α)
(4)
Trong đó :
• f là hàm tính toán; có thể được xác định tùy chỉnh theo yếu tố mạng, phụ
thuộc vào ENV và Loc.
• PC biểu thị khả năng của mã tấn công, phụ thuộc vào Tải trọng cụ thể trong
Tải trọng.
• α là cờ biểu thị giai đoạn hiện tại của toàn bộ quá trình tấn công. Chẳng
hạn, nếu GP trống, nạn nhân không thỏa mãn điều kiện tấn công; nếu TP
trống, mã tấn công không thể trích xuất dữ liệu ngay cả khi nó đã được thực
thi trên hệ thống đích.

14


Hình 3.2 : Cái nhìn trực quan về mô hình PMCAP
Phía bên trái hiển thị hệ thống nạn nhân chứa một loạt các quy trình hoạt
động với các hoạt động mạng. Phía bên phải bao gồm máy chủ web bình thường
và máy chủ độc hại do kẻ tấn công kiểm soát. Hai vị trí biểu thị các vị trí có thể
có của kẻ tấn công. Luồng tấn công được ngụ ý bởi mũi tên nét đứt trong hình này
và mũi tên rắn biểu thị luồng giao tiếp bình thường của các quá trình đích. Mũi
tên nét đứt và mũi tên đặc cho thấy các phần được chiếu sáng của PMCAP. Chia
quá trình tấn công thành bốn bước. Đầu tiên, kẻ tấn công cố gắng thỏa hiệp trang
web mục tiêu và triển khai khai thác trong Exp sau đó. Quá trình trong GP chạy
trên hệ thống Nạn nhân kích hoạt khai thác lỗ hổng; chủ yếu là quá trình sẽ là một
trình duyệt web. Thứ hai, mã tấn công trong Payload thực thi và xem xét rằng quá

trình kích hoạt có thể đâm mã mới vào không gian bộ nhớ của quá trình máy chủ
trong HP được tìm kiếm bởi mã tấn công cùng một lúc. Thứ ba, mã tấn công săn
tìm các quy trình mục tiêu trong TP và thu được dữ liệu bộ nhớ trực tiếp. Cuối
cùng, mã tấn công chuyển dữ liệu trở lại máy chủ điều khiển bởi kẻ tấn công. Có
ba loại quy trình trên hệ thống nạn nhân. Quá trình kích hoạt GP thường là quá
trình trình duyệt web hoặc các quá trình liên quan đến mạng khác. HP process
process có thể là một process tương tự hoặc các process khác có tuổi thọ dài. Quá
trình đích TP là quá trình chứa dữ liệu nhạy cảm, chẳng hạn như trình duyệt web
hoặc phần mềm tin nhắn tức thời. Mô tả cụ thể như sau :

15


• Tấn công:Kẻ tấn công tận dụng phần mềm dễ bị tổn thương và xây dựng
khai thác và sau đó làm cho máy tính mục tiêu kích hoạt mã tấn công. Cuộc
tấn công đã được chứng minh bằng nhiều sự cố trong thế giới thực. Như
được hiển thị trong Hình 3.2, nếu kẻ tấn công đặt vào Vị trí 1 nằm bên cạnh
kênh giao tiếp, thì cần có trang web của bên thứ ba để thực hiện tấn công
từ xa. Nếu kẻ tấn công đặt vào Vị trí 2, cuộc tấn công MITM sẽ đóng vai
trò của nó vì lý do kiểm soát mạng. Kẻ tấn công nhắm vào phiên HTTP khi
nạn nhân được kết nối và sau đó có thể chọn trình duyệt web hoặc các loại
phần mềm khác có lỗ hổng thực thi từ xa làm mục tiêu tấn công. Bên cạnh
đó, lỗ hổng đọc bộ nhớ tùy ý có thể không phù hợp với mô hình. Một trong
những lý do là nó không thể đọc dữ liệu bộ nhớ trong các quy trình. Gần
như tất cả các trình duyệt web đều hỗ trợ đa xử lý. Lý do khác là mã khai
thác sẽ làm xáo trộn trạng thái hoạt động của quy trình và thậm chí dẫn đến
sự cố toa tàu.
• Thi hành mã: Ứng dụng trên hệ thống nạn nhân Cấm kích hoạt khai thác,
sau đó mã tấn công sẽ được thực thi. Mã tấn công phải đối mặt với hai thách
thức. Một trong số đó là vấn đề cấp phép mã. Kiểm soát toàn vẹn bắt buộc

(MIC) cung cấp một cơ chế để kiểm soát truy cập vào các đối tượng dựa
trên các mức toàn vẹn trên HĐH Windows 7. Sáu mức toàn vẹn được xác
định bởi MIC, Trình cài đặt, Hệ thống, Cao, Trung bình, Thấp và Không
đáng tin cậy, được lưu trữ trong một mục kiểm soát truy cập (ACE) của đối
tượng cùng với chính sách bắt buộc của đối tượng. Các chính sách bắt buộc
của đối tượng là Không viết, Không đọc và Không thực hiện. Hầu hết các
ứng dụng trên hệ thống được gán nhãn Toàn vẹn trung bình được kế thừa
từ quy trình thám hiểm.

16


Hình 3.3: Truy cập vào các quy trình so với các đối tượng Trung
bình và Thấp quy trình cấp toàn vẹn
Từ Hình 3.3 thấy rằng các chính sách Không đọc và Không ghi lên không
thể ngăn quá trình toàn vẹn trung bình đọc và viết quy trình ở cùng mức
toàn vẹn hoặc thấp hơn. Điều này có nghĩa là nếu mã tấn công đạt được
mức toàn vẹn Trung bình, nó có thể truy cập tài nguyên của hầu hết các quy
trình. Ví dụ: khi Internet Explorer đang chạy ở chế độ được bảo vệ, quy
trình của nó được gán Tính toàn vẹn thấp, do đó, bất kỳ quy trình nào khác
cũng có thể đọc dữ liệu bộ nhớ của nó. MIC đã không cung cấp bảo vệ dữ
liệu hoàn hảo cho bộ nhớ quá trình. Vấn đề khác là hình thức mã tấn công.
Khi một số quy trình được bảo vệ bị cấm tạo quy trình con, phương pháp
tiêm mã cũng có thể được sử dụng. Phương pháp này được sử dụng rộng
rãi trong cả phần mềm bảo mật và phần mềm độc hại.
• Khai thác dữ liệu: Thu thập và trích xuất dữ liệu bộ nhớ trực tiếp là chức
năng cốt lõi của mã tấn công. Mô hình chú ý nhiều hơn đến dữ liệu bộ nhớ
liên quan đến mạng; những dữ liệu này có nhiều biến động và biến đổi. Các
dữ liệu khác (ví dụ: dữ liệu bộ đệm, dữ liệu giao diện người dùng) sẽ duy
trì trong một khoảng thời gian dài hơn trong bộ nhớ và dễ dàng trích xuất

hơn nhiều. Phần mềm độc hại truyền thống thường sử dụng phương thức
móc thời gian chạy để lấy mục tiêu thông tin, nhưng mô hình không sử
dụng phương pháp này vì hai lý do sau: (i) Móc chức năng cần có quyền
ghi bộ nhớ và sẽ vi phạm chính sách toàn vẹn mã và làm xáo trộn luồng
công việc gốc. (ii) Với hooking, rất nhiều dữ liệu sẽ bị chặn và xử lý, điều
17


này sẽ dẫn đến chi phí cao hơn. Trong một trường hợp cực đoan, mô hình
chỉ cần sự cho phép đọc bộ nhớ. Một số phương pháp thu thập dữ liệu được
hỗ trợ trong PMCAP.
• Điều khiển mạng: Như được hiển thị trong Hình 3.3, nếu kẻ tấn công ngồi
ở Vị trí 2, cuộc tấn công MITM sẽ giúp cải thiện mức độ đe dọa. Nó nên
phổ biến vì có nhiều điểm truy cập Wi-Fi mà không cần xác thực hoặc với
mật khẩu đã biết ở nơi công cộng (ví dụ: quán cà phê, khách sạn và sân
bay). Trong trường hợp này, có thể giảm tốc độ dòng mạng để tăng tuổi thọ
của dữ liệu liên quan đến mạng trong bộ nhớ, ngay cả khi quy trình đích
mã hóa truyền thông bằng giao thức SSL / TLS, vì không cần biết các định
dạng gói và chỉ cần điều chỉnh các định dạng gói và chỉ cần điều chỉnh tốc
độ chuyển tiếp gói. Một lợi ích khác là PMCAP có thể sử dụng các phiên
giao tiếp thông thường để truyền dữ liệu được trích xuất.
Một vài thách thức trong việc thực hiện:
• Quá trình đặc quyền vấn đề: Hầu hết các ứng dụng chạy trên Windows đều
có nhãn mức toàn vẹn trung bình; để đọc bộ nhớ tiến trình khác, mã tấn
công phải ở mức toàn vẹn trung bình ít nhất. Trên thực tế không khó để đạt
được mục tiêu, vì rất nhiều phần mềm của bên thứ ba bao gồm phần mềm
bảo mật có thể có lỗ hổng thực thi mã. Chúng ta cũng có thể thấy rằng quy
trình toàn vẹn thấp có thể truy cập quy trình Internet Explorer đang chạy
trong chế độ được bảo vệ. Trình duyệt chạy ở mức toàn vẹn thấp và giúp
người khác dễ dàng truy cập hơn.

• (2) Tìm kiếm trong không gian địa chỉ lớn:Kích thước của không gian địa
chỉ ảo quy trình 32 bit là 4 GB và 264 byte cho quy trình 64 bit. Trong thực
tế, vì chỉ cần tìm kiếm trong không gian bộ nhớ được phân bổ của quá trình
đích và trong chế độ người dùng, phạm vi tìm kiếm mục tiêu vẫn còn hạn
chế.
(3) Kiên trì tấn công: Vấn đề chính là làm thế nào để khám phá quá trình
mục tiêu. Một phương pháp trực tiếp là liệt kê quy trình xác định (PID) trên
hệ thống, bởi vì giá trị của PID có phạm vi giới hạn. Một cách khác là sử
dụng chức năng API hệ thống, chẳng hạn như CreatToolhelp32Snapshot có
thể được gọi từ bất kỳ mức toàn vẹn nào. Liệt kê các cửa sổ liên quan đến
chủ đề cũng là một phương pháp tốt. So với các phương pháp khác, PMCAP
có các đặc điểm sau: (i) Đây là một phần mở rộng dựa trên cuộc tấn công
khai thác lỗ hổng và phần mềm độc hại và tận dụng tối đa sự không hoàn
hảo của cơ chế kiểm soát truy cập trên nền tảng hệ điều hành Windows.
18


(ii) Tải trọng tấn công để trích xuất dữ liệu có trên hệ thống. Nó không làm
hỏng tính toàn vẹn mã của chương trình đích và chỉ cần sự cho phép đọc
bộ nhớ. (iii) Chú ý nhiều hơn đến dữ liệu liên quan đến mạng trong bộ nhớ
quá trình có thể bị ảnh hưởng bởi điều khiển mạng.

19


Chương IV: Thực hiện
Một số kỹ thuật liên quan đến mô hình, như phương pháp khai thác và tấn
công lỗ hổng, thường xuyên được nghiên cứu và phân tích. Việc thực hiện tập
trung vào trích xuất dữ liệu trong bộ nhớ. Lấy IE/Edge, Chrome, Firefox làm mục
tiêu và chọn lớp cấu trúc đối tượng làm dữ liệu để trích xuất được trình bày như

phần dưới đây: HTTP_REQUEST_HANDLE_OBJECT trong IE/Edge,
URLRequestHttpJob trong Chrome và nsHttpTransaction trong Firefox chứa
thông tin phiên HTTP.
• Các trình duyệt web, như các ứng dụng thường được mọi người sử dụng và
cũng hay bị tấn công..
• Mã nguồn và ký hiệu debug của các chương trình này có thể giúp phân tích
cấu trúc đối tượng nhanh chóng.
Trong thực tế, PMCAP là generic trong Windows, nó làm ảnh hưởng đến dữ liệu
bộ nhớ không chỉ các trình duyệt mà còn các ứng dụng khác.
4.1 Thu thập bộ nhớ xử lý
Do tiến trình có thể bị crash sau khi kích hoạt khai thác trên hệ thống nạn
nhân, mã tấn công nên cố gắng tạo một tiến trình mới với tư cách là máy chủ lưu
trữ mã thông báo truy cập hiện tại và sau đó tấn công payload vào không gian bộ
nhớ tiến trình mới để duy trì thời gian chạy. Nó sẽ làm phức tạp hóa vấn đề nếu
tiến trình kích hoạt không được phép tạo ra một tiến trình con. Chúng ta phải tìm
một tiến trình khác có cùng mức độ toàn vẹn với tiến trình kích hoạt; một số
trường hợp sẽ không xảy ra. Các trình duyệt hiện đại sử dụng kiến trúc đa tiến
trình, có nghĩa là mỗi tab trình duyệt sẽ chạy trong một tiến trình riêng biệt.

Hình 4.1: Khả năng của tiến trình IE ở mức toàn vẹn thấp

20


Cơ chế này có thể cải thiện độ tin cậy của trình duyệt vì sự cố của tiến trình
tại tab này sẽ không ảnh hướng đến toàn bộ trình duyệt. Để tránh việc khai thác
lỗ hổng, tiến trình tab luôn chạy với đặc quyền thấp. Nếu mã tấn công có thể có
được quyền cấp độ toàn vẹn trung bình nó sẽ dễ dàng truy cập vào các tiến trình
của trình duyệt. Firefox trong báo cáo này được sử dụng chế độ đơn tiến trình –
mặc định. IE/Edge và Chrome sử dụng chế độ đa tiến trình.


Hình 4.2: Khả năng của quá trình Edge ở mức toàn vẹn của AppContainer
IE/Edge chạy trong chế độ được bảo vệ và mỗi cửa sổ trình duyệt có tiến
trình tách biệt. Dữ liệu liên quan đến mạng mà chúng ta cần quan tâm nằm trong
tiến trình tab. Sự khác biệt giữa IE và Edge là tiến trình tab của IE chạy ở mức
toàn vẹn thấp và Edge chạy trong AppContainer sanbox – là một môi trường cách
ly tiến trình mới, cung cấp kiểm soát truy cập chi tiết cho các đối tượng thông qua
việc thêm kiểm soát truy cập bổ sung (Acccess control entry - ACE) trong danh
sách điều khiển truy cập hệ thống (System acccess control list - SACL) của các
đối tượng. Tuy nhiên, các tiến trình khác nhau có cùng nhận dạng bảo mật
AppContainer cũng có thể truy cập lẫn nhau như hình 4.1 và hình 4.2, với IE/Edge,
mã tấn công chỉ chạy với đặc quyền thập hơn, nó cũng có thể đọc dữ liệu liên
quan đến mạng trong bộ nhớ và không cần phải thoát ra khỏi sandbox.

21


Hình 4.3: Khả năng của các quy trình Chrome
Không giống như các sản phẩm của Microsoft, tiến trình chính của Chrome
quản lý các tab và xử lý giao tiếp mạng cùng một lúc. Nó chạy ở mức toàn vẹn
trung bình, tiến trình GPU chạy ở cùng mức toàn vẹn và các tiến trình render chạy
ở mức toàn vẹn không đáng tin cậy. Nếu mã tấn công chạy ở hai mức toàn vẹn
này, nó không thể đọc tiến trình chính do cơ chế MIC. Tại Hình 4.3, để có được
dữ liệu liên quan đến mạng trong bộ nhớ, mã tấn công phải có đặc quyền tối thiểu
ở mức trung bình. Mặt khác, các tiến trình render không thể truy cập lẫn nhau. So
với IE, kiến trúc này hạn chế khả năng khai thác lỗ hổng cho tiến trình render.
4.2 Khai thác dữ liệu
Có ba phương pháp để trích xuất dữ liệu bộ nhớ :
(1) Tìm kiếm dựa trên con trỏ Vtable: Sử dụng lập trình hướng đối tượng, với
nhiều lớp định nghĩa hàm virtual do sử dụng tính kế thừa và đa hình. Tình

biên dịch sẽ thêm một con trỏ thành viên ẩn ở đầu đối tượng. Con trỏ trỏ
đến một mảng chứa tất cả các con trỏ hàm virtual; đây được gọi là bảng
hảm virtual (vtable). Hầu hết các trình biên dịch lưu trữ vtable và con trỏ
vtable trong tệp nhị phân dưới dạng biến toàn cục. Trong việc khai thác các
lỗ hổng vtable luôn được sử dụng để leak các địa chỉ module bằng các vượt
qua bảo vệ ASLR. Ngược lại, nếu chúng ta biết phiên bản và địa chỉ cơ sở
hình ảnh của module đích, địa chỉ của con trỏ vtable có thể được tính khi
chạy. Do đó có thể đánh dấu đối tượgn bằng con trỏ vtable và sau đó tìm
kiếm các cấu trúc đối tượng trong bộ nhớ heap dựa trên con trỏ vtable. Chỉ
22


sử dụng con trỏ vtable làm đặc tính có thể gây ra tỷ lệ cảnh báo sai cao.
Kích thước của con trỏ là 4 byte hoặc 8 byte – quá nhỏ. Chúng ta có thể
chọn một đặc tính bổ sung trong cấu trúc đối tượng; đặc tính phải được sửa
trong phiên bản cụ thể của module, chẳng hạn như magick number và con
trỏ hàm callback. Trong trường hợp này, chúng ta sẽ đạt được mức cảnh
báo thấp. Trên thực tế, phương pháp quét bộ nhớ vét cạn được sử dụng
trong bộ nhớ forensics – lớp mầm. Nó phải vượt qua những không gian địa
chỉ lớn và mục tiêu không rõ ràng. Mặc dù không gian địa chỉ ảo trong các
tiến trình 64bit nhưng kích thước của bộ nhớ vật lý nói chung là 4Gb hoặc
8GB. Kích thước của bộ nhớ ánh xạ quá tiến trình phụ thuộc vào việc sử
dụng thời gian thực của nó. Một ví dụ về tiến trình x64 được biểu diễn
trong hình 4.4. Chúng ta có thể thấy rằng Đimột lượng lớn các địa chỉ ảo
là Free. Mã tấn công của PMCAP chạy trong chế độ người dùng trên HĐH
đích, do đó nó không thể nhận được bộ mô tả địa chỉ ảo (Virtual address
descriptor - VAD) của tiến trình đích mực dù cấu trúc _EPROCESS. Chúng
ta vẫn có thể sử dụng VirtualQueryEx để sử dụng các địa chỉ ảo của tiến
trình, cần quyền truy cập PROCESS_QUERY_INFORMATION và không
bị MIC chặn. Trong trường hợp này, phạm vi tìm kiếm bị giới hạn, vì vậy

chúng ta có thể nhận được kết quả tốt hơn khi tìm kiếm mục tiêu rõ ràng.

Hình 4.4: Ví dụ của bộ nhớ tiến trình x64

23


Mã tấn công chạy cùng tiến trình mục tiêu; bảo vệ ASLR không có tác
động đến việc thu tập dữ liệu. Tuy nhiên, phải đối mặt với một thách thức
là số lượng phiên bản module hệ thống và chương trình lắn. Chúng ta cần
có sự trợ giúp bằng các kỹ thuật liệu kê và tự động hóa.
(2) Tìm kiếm dựa trên biến toàn cục: Các ứng dụng thường áp dụng linked list,
array và hash table để quản lý các đối tượng. Điều này cho phép tìm kiếm
các cấu trúc đối tượng dựa trên các cấu trúc dữ liệu này có thể được chỉ ra
bởi các biến toàn cục. Tương tự như giá trị tượng trung, kỹ thuật tìm kiếm
dựa trên biến toàn cục được sử dụng trong memory forensics. Ví dụ,
PsActiveProcessHead là hằng số trỏ đến phần đầu của danh sách liên kết
tiến trình và bảng băm _TCBTable trỏ đến danh sách thông tin kết nối được
liên kết. Một số khai thác lỗ hổng cũng sử dụng các hằng số toàn cục để
lấy địa chỉ biến trong bộ nhớ. Không giống như vậy, mô hình trong bài viết
này nhằm đến dữ liệu bộ nhớ trực tiếp; kỹ thuật này sẽ gặp một môi trường
bộ nhớ liên tục. Trong phát triển phần mềm, singleton pattern và biến tĩnh
sẽ được chuyển đổi thành biến toàn cục bởi trình biên dịch. Hướng tới mã
nguồn mở, chúng ta có thể định vị biến thông qua các từ khóa như
GetInstance, static,… Đối với các chương trình nhị phân, chúng ta cần phải
thực hiện các phân tích bổ sung trong phân đoạn dữ liệu. Biến toàn cục có
phần bù cố định từ đầu module nhị phân giống như con trỏ vtable. Phương
pháp tìm kiếm dựa trê biến toàn cục có thể tránh tìm kiếm trong toàn bộ
không gian địa chỉ nhưng cũng có giới hạn. Các trình duyệt web đáp ứng
đủ các điều kiện đó, với mỗi chương trình có sẽ một chút khác biệt. Đối

tượng HTTP_REQUEST_HANDLE_OBJECT ở hình 4.5 đã được liên kết
bởi một danh sách liên kết kép được tham chiếu bởi hằng số toàn cục
WinnetGlobalObjectList; chúng ta có thể đọc giá trị trực tiếp thông qua
phần bù của địa chỉ tương ứng với phiên bản module.

24


Hình 4.5: Khả năng của các quy trình Chrome. Mối quan hệ giữa các đối
tượng mục tiêu và biến toàn cục
Không có hằng số toàn cục trỏ đến các đối tượng nsHttpTransaction;
nsHttpTransaction xuất hiện dưới dạng một biến thành viên của class
nsHttpConnection được tham chiếu bởi class nsHttpConnectionMgr.
Class nsHttpConnectionMgr là một biến thành viên của nsHttpHandler;
nsHttpHandler được định nghĩa là một singleton pattern chỉ có một
instance trong thời gian chạy. Chúng ta cũng có thể nhận được các object
nsHttpTransaction thông qua nsHttpHandler instance sau một số lần nhảy.
Các object URLRequestHttpJob cũng không được tổ chức bởi một biến
trực tiếp; ví dụ của URLRequestHttpJob là một biến thành viên của class
URLRequest. Trong khi đó URLRequest có một biến thành viên trỏ đến
instance của URLRequestContext. Class URLRequestContext quản lý tất
cả các object URLRequest, nhưng instance của nó được tạo trong runtime.
Chúng ta có thể thấy ba trường hợp trong hình 4.5, gồm cả ba cấu trúc dữ
liệu : danh sách liên kết đôi, bảng băm và cây đỏ đen. Các cấu trúc thay
đổi tại runtime, điều này mang đến khó khăn cho tiến trình tìm kiếm.

25



×