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

Luận văn nâng cao hiệu quả phát hiện mã độc sử dụng các kỹ thuật học máy

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.17 MB, 42 trang )

1
MỞ ĐẦU

Ngày nay cùng với sự phát triển mạnh mẽ của công nghệ thông tin và
sự phát triển của Internet tồn cầu là các nguy cơ mất an tồn thơng tin đang
trở nên nguy hiểm và khó lường hơn, trong đó mã độc hại (malware) là một
trong những mối hiểm họa nghiêm trọng trên Internet. Mã độc ngày càng tiến
hóa với những biến thể đa dạng từ virus máy tính, worm, botnet…với các
hình thức xâm nhập, che dấu ngày càng tinh vi. Số lượng và hình thái đa dạng
của mã độc ngày càng tăng, trong khi các phần mềm phòng chống mã độc
không thể phát hiện, ngăn chặn được hết dẫn đến hàng triệu máy tính bị
nhiễm mã độc. Ở Việt Nam, theo số liệu thống kê của BKAV thì năm 2017 có
đến 15 triệu máy tính ở Việt Nam bị nhiễm mã độc tương ứng thiệt hại
khoảng 12.300 tỷ đồng. Ngoài ra, ngày nay để phát triển một mã độc mới
khơng u cầu nhiều kỹ năng cao do tính sẵn có các cơng cụ tấn cơng trên
internet. Tính sẵn sàng cao của các kỹ thuật chống phát hiện cũng như khả
năng mua phần mềm độc hại trên thị trường chợ đen dẫn đến cơ hội trở thành
một kẻ tấn công cho bất kỳ ai, không phụ thuộc vào cấp độ kỹ năng và trình
độ chun mơn. Do đó, bảo vệ hệ thống máy tính khỏi các phần mềm độc hại
trên Intenet là một trong những nhiệm vụ quan trọng nhất về an ninh mạng
cho người dùng, doanh nghiệp. Một cuộc tấn cơng đơn lẻ có thể dẫn đến dữ
liệu bị xâm phạm và gây ra những hậu quả to lớn. Sự mất mát lớn và các cuộc
tấn công thường xuyên đặt ra yêu cầu cần thiết phải có các phương pháp phát
hiện chính xác và kịp thời. Các kỹ thuật phân tích tĩnh và phân tích động
thường dựa vào cơ sở dữ liệu được xây dựng trước đó nên có một số hạn chế
như khó có khả năng phát hiện ra các mã độc mới, các lỗ hổng chưa được
công bố (zero-day) hay các biến thể của mã độc đã biết. Hơn nữa, ngày nay số
lượng mã độc ngày càng tăng cao dẫn đến số lương mẫu ngày càng nhiểu địi
hỏi phải có một phương pháp phù hợp để phát hiện mã độc. Do đó hướng



2
nghiên cứu dựa vào các mơ hình học máy để phát hiện và phân loại mã độc tỏ
ra là phương pháp tìm năng và hiệu quả khi số lượng mẫu mã độc lớn và các
biến thể của mã độc ngày càng đa dạng. Tuy nhiên một trong những vấn đề
chính được quan tâm là làm thế nào để xây dựng được mơ hình học máy hiệu
quả và mang lại kết quả chính xác cao. Trong đó có một yếu tố quan trọng
ảnh hưởng chính đến mơ hình và hiệu qủa của các thuật toán học máy là lựa
chọn đặc trưng và các phương pháp trích chọn đặc trưng phù hợp. Trong phần
nghiên cứu của luận văn này chúng tôi lựa chọn đặc trưng mạng do đặc trưng
mạng có thể nâng cao khả năng phát hiện các lỗ hổng chưa được biết (zeroday) và khắc phục được hạn chế về hiệu quả học máy đối với việc lựa chon
các đặc trưng khác như đặc trưng về byte sequence, strings, API, opcode,
system call ... được sử dụng làm đầu vào cho các thuật tốn học máy thường
cho kết quả khơng tốt đối với các mã độc được mã hóa, được ngụy trang
(obfucated), biến thể của mã độc. Đồng thời, chúng tơi trình bày về 02
phương pháp trích chọn đặc trưng gói tin mạng gồm phương pháp trích chọn
đặc trưng từ tiêu đề (header) của gói tin mạng và phương pháp trích chọn đặc
trưng từ tải (payload) của gói tin mạng dựa trên phương án 2-gram. Sau đó dữ
liệu đặc trưng này sẽ được trích chọn ra các đặc trưng phù hợp nhất làm đầu
vào cho thuật toán học máy, trong luận văn này chúng tơi lựa chọn thuật tốn
one-class SVM do thuật toán one-class SVM là một trong những thuật toán
phân loại phổ biến nhất và có khả năng phát hiện mã độc đã biết, mã độc mới
(zero-day), các biến thể của mã độc và phân loại mã độc. Kết quả của luận
văn được thực nghiệm dựa trên dữ liệu mẫu Android Malware dataset
(CICAndMal2017) gồm 212788 mẫu, trong đó có 168186 mẫu sạch và 44202
mẫu mã độc thuộc họ Ransomware gồm các loại Charger, Jisut, Wannalocker.
Kết quả thực nghiệm với các độ đo F1, Precision, Recall để đánh giá hiệu quả
của thuật tốn cho thấy phương pháp trích xuất từ header có độ chính xác cao
hơn so với phương pháp trích xuất từ payload, cụ thể: phương pháp trích xuất
từ header có kết quả với các độ đo Precision, Recall, F1 lần lượt là 95,93%,



3
95,83%, 95,84% so với phương pháp trích xuất từ payload cho kết quả lần
lượt là là 87,78%, 71,16%, 78,60% đối với tập dữ liệu huấn luyện và kết quả
95,91%, 95,73%, 95,82% so với kết quả 85,58%, 69,82%, 76,91% đối với tập
dữ liệu kiểm thử.
Nội dung tiếp theo của luận văn này được chia làm 04 phần như sau:
Chương 1: Tổng quan về mã độc. Chương này này sẽ giới thiệu về các
loại mã độc, phân loại mã độc, các kỹ thuật phân tích mã độc, các đặc trưng
và trích chọn đặc trưng.
Chương 2: Tổng quan về kỹ thuật học máy. Chương này sẽ giới thiệu
về học máy, phân loại các phương pháp học máy, thuật toán học máy svm,
thuật toán one-class svm và các phương pháp đánh giá hiệu quả của học máy.
Chương 3: Giải pháp áp dụng học máy vào phân tích mã độc. Chương
này sẽ trình bày về mơ hình đề xuất, 02 phương pháp trích chọn đặc trưng gói
tin mạng, lựa chọn đặc trưng, thực nghiệm và đánh giá kết quả thực nghiệm.
Kết luận và hướng phát triển của đề tài


4
CHƯƠNG 1: TỔNG QUAN VỀ MÃ ĐỘC
Chương này giới thiệu khái niệm về mã độc, phân loại mã độc, mục
đích phân tích mã độc và các kỹ thuật phân tích mã độc.
1.1. Giới thiệu về mã độc
Mã độc (tên tiếng anh là malware – được viết tắt từ malicious software)
là loại phần mềm bất kỳ được thiết kế có mục đích để gây tổn hại cho một
máy tính, máy chủ, máy khách hoặc mạng máy tính. Các chương trình độc hại
này có thể thực hiện nhiều chức năng, bao gồm ăn cắp, mã hóa hoặc xóa dữ
liệu nhạy cảm, thay đổi hoặc chiếm đoạt các chức năng tính tốn lõi và giám
sát hoạt động máy tính của người dùng mà không được sự cho phép của họ.

Mã độc chỉ gây thiệt hại sau khi được cấy hoặc đưa vào máy tính mục tiêu và
có thể ở dạng mã lệnh thực thi, tập lệnh, nội dung hoạt động và phần mềm
khác. Mã độc có mục đích xấu, hoạt động trái phép với người dùng máy tính
bình thường vì vậy mã độc không bao gồm phần mềm gây ra tác hại vô ý do
một số thiếu sót liên quan đến lỗi phần mềm.
Các chương trình được cung cấp chính thức bởi các cơng ty có thể
được coi là phần mềm độc hại nếu họ bí mật hành động chống lại lợi ích của
người dùng máy tính. Ví dụ, tại một thời điểm, đĩa nhạc Compact của hãng
Sony đã bí mật cài đặt một rootkit trên máy tính người mua với đích ngăn
chặn sự sao chép bất hợp pháp nhưng đồng thời cũng thu thập thơng tin về
thói quen nghe nhạc của người dùng và vơ tình tạo ra các lỗ hổng bảo mật.
Các giải pháp như phần mềm antivirus, tường lữa…thường được sử dụng để
kiểm tra sự tồn tại, các hoạt động độc hại cũng như ngăn chặn phần mềm độc
hại truy cập vào máy tính.
1.2. Phân loại mã độc
Có nhiều cách tiếp cận khác nhau để phân loại mã độc thành một số
loại nhật định với các đặc điểm cụ thể như: tính nhân bản, sự nhiễm độc, tàng
hình, lệnh và điểu khiển (C&C), các kỹ thuật che dấu, tập hợp các hành vi


5
được thể hiện trong quá trình chạy trên hệ điều hành. Hơn nữa, ngày càng khó
xác định các phần mềm độc hại vì ngày nay tác giả của phần mềm độc hại có
thể dễ dàng tiếp cận mã nguồn của một số mẫu phần mềm độc hại và kết hợp
các chức năng của chúng để tạo ra các mẫu mới có cơ chế tự mở rộng khả
năng và nhỏ gọn hơn. Mặc dù khơng có sự thống nhất chung về việc phân loại
phần mềm độc hại, các loại phần mềm độc hại dựa trên mục đích và hành vi
của chúng có thể được phân loại như sau:
1.2.1. Virus [5].
1.2.1.1. Khái niệm

Virus máy tính là một loại phần mềm độc hại phổ biến nhất, được ẩn
dấu trong một chương trình có vẻ vơ hại, có thể tự tạo ra các bản sao và lây
lan vào các chương trình khác hoặc các tệp (file) khác để thực hiện một hành
vi độc hại như xóa file, sao chép nội dung, mã hóa file...
1.2.1.2. Thành phần
Một virus máy tình gồm 03 thành phần:
o Cơ chế lây nhiễm: các phương tiện mà virus lây lan, cho phép tự nhân
bản, cơ chế này gọi là vec-tơ lây nhiễm
o Bộ kích khởi (trigger): sự kiện hay điều kiện mà quyết định khi nào tải
(payload) được kích hoạt
o Payload: một đoạn mã được chạy trên máy nạn nhân, dùng để thực hiện
một số hoạt động phá hoại hoặc có thể liên quan đến hoạt động lành tính
nào đó nhưng đáng chú ý.
1.2.1.3. Vòng đời của Virus
Vòng đời của Virus, thường bao gồm 04 giai đoạn sau:
o Giai đoạn ngủ đông: Giai đoạn này virus không hoạt động, Virus được
kích hoạt bởi một số sự kiện như: như ngày, sự có mặt của chương trình
khác hoặc tệp tin hoặc dung lượng ổ đĩa vượt quá giới hạn. Không phải
tất cả các virus đều có giai đoạn này.


6
o Giai đoạn nhân bản: Virus sao chép bản sao của chính nó vào chương
trình khác hoặc vào các vùng của hệ thống trên ổ cứng. Bản sao của nó
có thể không giống với phiên bản lan truyền, virus thường biến hình để
tránh phát hiện. Mỗi chương trình đã bị nhiễm sẽ chứa một bản sao của
virus, bản thân virus sẽ bước vào giai đoạn nhân bản.
o Giai đoạn kích hoạt: Virus sẽ được kích hoạt để thực hiện chức năng mà
nó đã dự định. Cũng như giai đoạn khơng hoạt động, giai đoạn kích hoạt
có thể được thực hiện bởi một loạt các sự kiện hệ thống, bao gồm số lần

bản sao của virus đã tạo ra các bản sao của chính nó.
o Giai đoạn thực thi: Chức năng của virus được thực hiện, chức năng có
thể vơ hại như một thơng báo trên màn hình hoặc phá hoại chương trình
và các tệp dữ liệu
1.2.1.4. Phân loại virus:
Virus cơ bản được phân làm hai loại: theo loại mục đích mà virus cố
gắng lây nhiễm và theo phương pháp mà virus sử dụng để che dấu bản thân
nhằm tránh phát hiện bởi người dùng và các phần mềm chống virus. Phân loại
theo mục đích bao gồm các loại sau:
 Lây nhiễm vào vùng khởi động (Boot sector infector): lây nhiễm một
bản ghi khởi động chính hoặc bản khi khởi động và lây lan khi một hệ
thống được khởi động từ đĩa chứa virus.
 Lây nhiễm têp tin (file infector): lây nhiễm vào các tệp tin của hệ điều
hành hoặc shell được thực thi.
 Macro virus: lây nhiễm các tệp tin với mã macro được biên dịch bởi một
ứng dụng.
Phân loại theo phương pháp mà Virus sử dụng bao gồm các loại sau:
 Virus được mã hóa (Encrypted virus): phương pháp được thực hiện như
sau. Một phần của virus tạo ra một khóa mã hóa ngẫu nhiên và mã hóa
phần cịn lại của virus. Khóa được lưu với virus. Khi một chương trình
bị nhiễm được gọi, virus sử dụng khóa ngẫu nhiên được lưu trữ để giải


7
mã virus. Khi virus nhân bản, một khóa ngẫu nhiên khác nhau được lựa
chọn. Bởi vì phần lớn virus được mã hóa bằng một khóa khác nhau cho
mỗi trường hợp dẫn đến khơng có mẫu bit cố định để quan sát.
 Virus tàng hình (Stealth virus): một hình thức của virus được thiết kế để
che dấu bản thân nó khỏi sự phát hiện của phần mềm chống virus.
 Virus đa hình (Polymorphic virus): một loại virus biến đổi theo mọi lây

nhiễm, khiến cho việc phát hiện virus bằng chữ ký trở nên khơng thể.
 Virus biến hóa (Metamorphic virus): giống như một virus biến hình,
một virus biến hóa biến đổi với mọi sự lây nhiễm. Sự khác biệt là một
virus biến hóa tự viết lại hồn tồn ở mỗi vịng lặp để tăng độ khó phát
hiện. Virus biến hóa có thể thay đổi hành vi, cũng như ngoại hình của
chúng.
1.2.2. Worm [5]
Sâu (Worm) là một chương trình có thể tự sao chép và gửi các bản sao
từ máy tính này sang máy tính khác qua các kết nối mạng. Khi đến nơi, worm
có thể được kích hoạt và nhân bản lần nữa. Ngoài việc nhân bản, worm
thường thực hiện một số chức năng không mong muốn như thu thập thông tin
hệ thống, tìm kiếm lỗ hổng bảo mật... Worm là một loại phần mềm độc hại
được ẩn náu trong máy tính, nhưng nó khơng phải là virus vì nó khơng được
nhúng vào chương trình khác.Worm lây nhiễm từ máy tính này đến máy tính
khác bằng cách khai thác lổ hổng bảo mật hoặc lỗ hổng do chính tác giả tạo ra.
Để tự nhân bản, một worm mạng sử dụng một số phương tiện mạng như sau:
 Chức năng thư điện tử (Electronic mail facility): worm thư điện tử gửi
bản sao của nó đến hệ thống khác, mã của nó được kích hoạt khi thư
điện tử hoặc tệp đính kèm nhận được hoặc xem.
 Khả năng thực thi từ xa (Remote execution capability): worm thực thi
bản sao của chính nó trên hệ thống khác bằng cách sử dụng một cơ chế
thực thi từ xa hoặc bằng cách khai thác lỗ hổng chương trình của một
dịch vụ mạng để phá hủy hoạt động của chúng.


8
 Khả năng truy cập từ xa (Remote login capability): worm đăng nhập
vào hệ thống từ xa như một người dùng, sau đó sử dụng các lệnh để sao
chép chính nó từ hệ thống này đến hệ thống khác và thực thi lệnh.
Ví dụ, một trong những sâu máy tính nổi tiếng nhất trong lịch sử máy tính

có tên là Confiker. Confiker mục tiêu tấn công vào hệ điều hành Microsoft
Window, phiên bản đầu tiên của sâu Confiker được phát hiện vào tháng 10
năm 2008 và đã lây nhiễm hàng triệu máy tính trên thế giới. Confiker khai
thác một lỗ hổng về dịch vụ mạng được xây dựng trên hệ điều hành Window,
bao gồm tất các các phiên bản từ Window 2008 đến Windows server 2008
được nhân bản qua Internet. Lỗ hổng này có tên là MS08_067, cho phép một
kẻ tấn cống thực thi mã lệnh từ xa và chiếm tồn bộ quyền điều khiển máy
tính từ xa.
1.2.3. Ransomware
Ransomware (mã độc tống tiền) gồm nhiều lớp phần mềm độc hại với
mục đích hạn chế truy cập đến hệ thống máy tính mà nó đã lây nhiễm và địi
hỏi phải trả một khoản tiền cho kẻ tấn cơng nhằm xóa bỏ hạn chế truy cập mà
nó đã tạo ra trước đó. Một vài dạng của ransomware mã hóa tệp tin, dữ liệu
trên ổ đĩa cứng nhằm tống tiền, trong khi một vài dạng khác thì đơn giản hơn
như chúng khóa hệ thống lại và hiển thị một thông báo để thuyết phục nạn
nhân trả tiền. Mã độc tống tiền thường lan truyền qua email với các file đính
kèm, như các virus máy tính khác, khi mở file đính kèm này thì máy tính của
người dùng sẽ bị kiểm sốt. Khi đó, mã độc qt tồn bộ ổ đĩa của máy tính
và mã hóa các file bằng mã hóa cơng khai. Hầu hết các tập tin quan trọng trên
máy tính người dùng với định dạng .doc, pdf, xls, zip... sẽ không mở được
nữa. Để giải mã bắt buộc phải có khóa bí bật, mà khóa bí mật chỉ có kẻ tấn
cơng mới có và nạn nhân sẽ nhận được thơng báo trên màn hình (desktop) địi
tiền chuộc nếu muốn giải mã file. Một số loại mã độc ransomware như sau:
 Charger: mã độc này sẽ sao chép tất cả các dữ liệu từ tin nhắn dạng text,
danh bạ, nhật ký ...và tìm kiếm quyền admin từ người dùng. Nếu người


9
dùng chấp nhận yêu cầu của mã độc, thì phần mềm mềm độc hại sẽ tấn
công người dùng và một tin nhắn cảnh báo cho người dùng biết là thiết

bị của người dùng đã bị khóa và các dữ liệu cá nhân sẽ được bán trên thị
trường nếu người dùng không chấp nhận trả tiền chuộc. Các nạn nhân
của mã độc Charger sẽ yêu cầu phải trả khoảng 0.2 bitcoins (khoảng
8000$ USD) nếu muốn mở khóa (unblock) thiết bị.
 Jisut: Không giống như những mã độc ransomware khác thường yêu cầu
tiền chuộc thì Jisut tiếp cận theo một cách khác và khơng quan tâm về
sự nặc danh. Trên màn hình xuất hiện con ngựa con bao gồm thông tin
liên quan trên mạng xã hội QQ ở Trung Quốc và thuyết phục nạn nhân
liên hệ với tác giả để lấy lại các tệp tin của họ. Nếu thông tin trên QQ là
đúng thì chủ nhân của mã độc là các thanh niên từ 16 đến 21 tuổi sẽ
xuất hiện. Các biến thể đầu tiên của Jisut Android/LockScreen xuất hiện
nữa đầu năm 2014, từ thời điểm 2014 đến bây giờ đã phát hiện hàng
trăm biến thể của Jisut với các hành vi khác nhau hoặc các tin nhắn đòi
tiền chuộc khác nhau nhưng tất cả dựa trên cùng một mẫu mã độc. Khi
mã độc Jisut được kích hoạt thì nó sẽ tạo ra một màn hình hoạt động
được hiện lên với đầy đủ màn hình với màu đen, nếu người dùng thay
đổi giao diện hoặc tắt, khởi động lại thiết bị thì một thông báo sẽ được
hiển thị lên hoặc một bài hát sẽ được thực thi.
 WannaLocker: mã độc này là một loại khác của ransomware Wannacry,
ban đầu nhắm đến người dùng Android ở Trung Quốc và mở rộng ra
toàn thế giới. Mã độc này lây nhiễm các tệp tin (files) trên bộ lưu trữ
của thiết bị và mã hóa các tệp tin bằng thuật tốt mã hóa AES. Khi các
tệp tin bị mã hóa, mã độc sẽ hiện lên một thơng báo địi tiền chuộc
tương tự như WannaCry, nó cung cấp thơng tin về dữ liệu đã được mã
hóa và các khả năng đê phục hội chúng bằng ngôn ngữ tiếng trung.
WannaLocker yêu cầu số tiền chuộc là 40 Renmibi Trung Quốc và cách
liên lạc để thực hiện giao dịch chuyển tiền và khôi phục dữ liệu.


10

1.2.4. Trojan
Trojan là một loại phần mềm giả mạo phổ biến, chúng thường ẩn náu
trong chương trình phần mềm hữu ích để thực hiện các nhiệm vụ mong muốn
và hợp pháp nhưng thực chất là thực hiện một số chức năng độc hại như xóa
file, thu thập thơng tin hệ thống và gửi cho máy chủ điều khiển, ăn cắp thông
tin tài khoản người dùng ....Những chức năng mong muốn và hợp pháp chỉ là
phần bề mặt giả tạo nhằm che dấu cho các thao táo độc hại. Không giống như
virus, trojan khơng có chức năng tự sao chép nhưng lại có chức năng phá hoại
tương tự virus. Một số dạng Trojans cơ bản như sau:
 Remote Access Trojans: cho phép kẻ tấn cơng kiểm sốt tồn bộ hệ
thống từ xa
 Data-Sending Trojans: Trojan gửi thông tin nhạy cảm của nạn nhân cho
kẻ tấn công
 Destructive Trojans: Trojan phá hủy hệ thống
 Denied-of-Service – DoS Attack Trojan: Trojan phục vụ tấn công Ddos
 HTTP, FTP Trojans: Trojan tự tạo thành HTTP hay FTP server để kẻ
tấn công khai thác lỗi
 Security Software Disable Trojan: Có tác dụng tắt tính năng bảo mật
trong các máy tính nạn nhân
1.2.5. Backdoor [6]
Backdoor (cửa hậu) là một loại phần mềm độc hại cung cấp cho kẻ tấn
công quyền truy cập từ xa vào máy nạn nhân. Backdoor là loại phần mềm độc
hại phổ biến nhất và chúng có đủ hình dạng, kích cỡ với khả năng khác nhau.
Mã backdoor thường thực hiện đầy đủ các khả năng, vì vậy khi sử dụng
backdoor kẻ tấn công thường không cần tải thêm các phần mềm độc hại khác
hoặc mã chương trình. Backdoor thường cho phép kẻ tấn cơng kết nối đến
máy tính từ xa với ít quyền hoặc không cần xác thực và đi kèm với một số
chức năng phổ biến như khả năng thao tác các khóa registry, liệt kê các cửa sổ
hiện thị, tạo thư mục, tìm kiếm tập tin, truy cập từ xa bằng tài khoản riêng,
thực thi lệnh hệ thống....Một số loại backdoor như sau:



11
 Reverse Shell: là một kết nối bắt nguồn từ một máy bị nhiễm và cung
cắp quyền truy cập shell cho kẻ tấn cơng vào máy tính đó. Khi ở trong
reverse shell, kẻ tấn cơng có thể thực thi các lệnh trên máy của nạn nhân
ngay trên máy của kẻ tấn công.
 RATs: công cụ quản trị từ xa (RAT) được sử dụng để quản lý các máy
tính từ xa. RAT thường được sử dụng trong các cuộc tấn công có chủ
đích với mục tiêu cụ thể, chẳng hạn như đánh cắp thông tin.
 Botnet: là tập hợp các máy chủ bị xâm nhập, được gọi là zombie, được
điểu khiển bởi máy chủ botnet. Mục tiêu của botnet là tạo ra một mạng
lưới zombie lớn để botnet phát tán mềm mềm độc hại hoặc thực hiện tấn
công từ chối dịch vụ (DDoS).
1.2.6. Rootkits
Rootkit là một bộ công cụ phần mềm do kẻ xâm nhập đưa vào máy tính
nạn nhân nhằm mục đích cho phép mình quay lại xâm nhập máy tính đó và
dùng nó cho các mục đích xấu mà khơng bị phát hiện. Một số mục đích của
kẻ xâm nhập khi sử dụng rootkit bao gồm:
 Thu thập dữ liệu về các máy tính trong cùng mạng và thơng tin của
người dùng như mật khẩu, thơng tin tài chính.
 Tạo hoặc chuyển tiếp spam.
 Gây lỗi hoặc sai trong hoạt động của máy tính.
Rootkit được thiết kế tốt có khả năng che giấu hoặc xóa bỏ bất cứ dấu
vết nào của việc nó truy cập vào máy tính, sự tồn tại và hoạt động của nó. Ví
dụ, nó có thể sữa nhật ký (log) của hệ thống để hệ điều hành khơng ghi hoặc
xóa bỏ tất cả các thơng tin liên quan đến việc nó đăng nhập vào máy, thông
tin các lần truy cập tiếp theo của kẻ xâm nhập, thơng tin về các chương trình
mà rootkit chạy. Rootkit khơng phải là virus do nó khơng tự nhân bản và
khơng có cơ chế hoạt động tự chủ. Rootkit nằm hồn tồn dưới quyền kiểm

sốt của kẻ tấn cơng.


12
1.3. Mục đích phân tích mã độc
Khái niệm: phân tích phần mềm độc hại là quá trình xác định chức
năng và mục đích của mẫu phần mềm độc hại đã cho là virus, worm, Trojan
Horse .. hay biến thể của mã độc đã biết hoặc mã độc mới.
Các mục đích của phân tích mã độc: có ba mục đích chính trong việc
phân tích mã độc bao gồm phát hiện mã độc, phân tích sự tương tự giữa các
phần mềm độc hại và phân loại các phần mềm độc hại. Chi tiết ba mục đích
của phân tích mã độc như sau: [2]
 Phát hiện mã độc nhằm mục đích phát hiện một tập tin có phải là mã
độc hay khơng.
 Phân tích sự tương tự giữa các phần mềm độc hại nhằm mục đích kiểm
tra sự giống nhau, khác nhau giữa các phần mềm độc hại để phát hiện
biến thể của mã độc đã biết hoặc lớp mã độc mới.
 Phân loại phần mềm độc hại: cho phép phân loại phần mềm độc hại vào
các nhóm phần mềm đọc hại khác nhau như nhóm virus, horm, rootkit...
1.4. Phương pháp phân tích mã độc
Hiện tại có một số kỹ thuật được dùng để phân tích mã độc, gồm có phân
tích tĩnh, phân tích động và phân tích lai, chi tiết các các kỹ thuật như sau:
Phân tích tĩnh là phương pháp phân tích phần mềm mà khơng cần thực
thi chúng. Các thơng tin thu được có thể bao gồm các metadata của chương
trình, định dạng, dung lượng…các chuỗi ký tự xuất hiên trong mã nguồn, các
thư viện được thêm vào (import), các lời gọi hàm có thể được sử dụng, mã
nguồn chương trình dưới dạng Assembly…Ưu điểm của phương pháp này là
có thể biết được tất cả các khả năng thực hiện có thể của chương trình, tuy
nhiên đối với mã độc thì việc phân tích tĩnh thường gặp khó khăn do việc mã
hóa (Encrypt), đóng gói (Packed), ngụy trang (Obfuscated). Một số kỹ thuật

được sử dụng cho phân tích tĩnh bao gồm [8]:
 Kỹ thuật phát hiện dựa trên chữ ký (signature based detection
technique) còn gọi là khớp mẫu hoặc chuỗi hoặc mặt nạ hoặc kỹ thuật


13
dấu vân tay. Chữ ký là một chuỗi các bit được người viết phần mềm độc
hại chèn vào chương trình ứng dụng được viết bởi những người phát
triển mã độc và cho phép nhận ra một loại mã độc cụ thể. Để phát hiện
phần mềm độc hại trong mã của chương trình, người rà sốt mã độc hại
sẽ tìm kiếm một số chữ ký đã được định nghĩa trước đó trong mã
chương trình. Ví dụ, các từ khóa được tìm kiếm như địa chỉ IP, lời gọi
chương trình….
 Kỹ thuật phát hiện heuristic (heuristic detection technique) được biết
như là kỹ thuật chủ động. Có nhiều sự tương đồng giữa kỹ thuật phân
tích chữ ký số và kỹ thuật heuristic tuy nhiên có một sự khác nhau rõ
ràng của kỹ thuật phân tích heuristic là việc thay cho tìm kiềm một chữ
ký cụ thể trong đoạn mã chương trình thì người kiểm tra mã độc sẽ tìm
những lệnh và chỉ thị mà khơng có trong chương trình. Thuận lợi chính
của kỹ thuật này là có thể dễ dàng phát hiện ra các biến thể mới của mã
độc mà chưa được phát hiện trước đây.
Phân tích động là phương pháp theo dõi, phân tích hành vi thực hiện, các
tương tác của phần mềm với môi trường thông qua việc thực thi các phần
mềm đó. Khi phân tích động mã độc cũng đồng nghĩa với việc ta phải chạy
mã độc đó, do vậy chúng ta cần có một mơi trường an tồn để tránh các tác
hại đối với hệ thống cũng như bên ngoài. Hộp cát (Sandbox) là một cơ chế
bảo mật để chạy các chương trình khơng đáng tin cậy trong một mơi trường
an tồn mà khơng sợ làm hệ thống "thực". Ưu điểm của phương pháp phân
tích này đó là có thể theo dõi các hành động thực sự được thực hiện bởi mã
độc trong khi đối với phân tích tĩnh, khi gặp rẽ nhánh chúng ta không thể biết

mã độc sẽ đi theo nhánh nào. Thách thức của phương pháp này là mơi trường
sandbox phải an tồn, tránh bị phát hiện đồng thời phải đáp ứng được các điều
kiện để mã độc bộc lộ tối đa hành vi của mình. Có hai cách tiếp cận chính cho
phương pháp phân tích động gồm có:


14
 Phân tích sự khác biệt giữa các thời điểm được xác định: với phương
pháp này, mẫu phần mềm độc hại đã được phân tích trong một khoảng
thời gian nhất định, sau đó thay đổi cấu hình hệ thống và phân mềm độc
hại sẽ được phân tích lại như ban đầu [7]
 Quan sát hành vi thời gian chạy: theo cách tiếp cận này, phần mềm độc
hại sẽ thực hiên các hành động độc hại được giám sát các hành vi bằng
cơng cụ chun dụng [7]
 Phân tích lai (hybrid): kỹ thuật phân tích này là sự kết hợp giữa phân
tích tĩnh và phân tích động, thường tuân theo một quy trình đơn giản
ban đầu kiểm tra bất kỳ chữ ký trong mã chương trình, nếu phát hiện bất
kỳ chữ ký nào xuất hiện thì sẽ giám sát hành vi của mã này [8]
1.5. Trích xuất đặc trưng và các loại đặc trưng
1.5.1. Trích xuất đặc trưng
Q trình trích xuất đặc trưng được thực hiện bằng việc phân tích tĩnh
hoặc phân tích động hoặc cả hai loại phân tích tĩnh và phân tích động. Cách
tiếp cận dựa trên phân tích tĩnh được thực hiện bằng cách xem xét nội dung
của các mẫu mã độc mà không cần chúng thực thi (khơng cần chạy chương
trình), trong khi cách tiếp cận dựa trên phân tích động được thực hiện dựa trên
các mẫu mã được được thực thi để kiểm tra các hành vi của nó. Mốt số kỹ
thuật có thể được sử dụng cho phân tích động như: trình sữa lỗi (debugger)
được sử dụng cho việc phân tích các lớp chỉ thị (instruction), các bộ mô
phỏng (simulators) biểu diễn và hiện thị các hành vi tương tự như trong môi
trường thật của mã độc, trong khi các bộ giả lập (emulators) nhân bản hành vi

của một hệ thống với độ chính xác cao hơn nhưng yêu cầu nhiều tài nguyên
hơn. Sandboxes là các hệ điều hành được ảo hóa cung cấp một mơi trường
đánh tin cậy và cơ lập để kích hoạt các mã độc. Các dấu vết thực thi (excution
traces) thường được sử dụng để trích xuất các đặc trưng khi sử dụng phân tích
động. Ngồi ra, một số cơng cụ và kỹ thuật khác thường được sử dụng để
trích xuất đặc như: các mã disassembly và biều đồ luồng dữ liệu (data-flow)


15
và điều khiển (control). Mã dịch ngược assembly là thành phần quan trọng
cho việc trích xuất các byte tuần tự (Byte sequence và Opcode), trong khi
biểu đồ luồng dữ liệu và điều khiển được sử dụng để trích xuất các lời gọi hệ
thống (system calls) và API.
1.5.2. Các loại đặc trưng
Có 8 loại đặc trưng điển hình bao gồm [2]:
 Chuỗi byte (bytes sequence): phân tích các chuỗi byte cụ thể trong tệp
tin nhị phân được sử dụng phổ biến trong phân tích tĩnh. Một số cơng
trình sử dụng chuỗi các byte với kích thước cụ thể và đa số cơng trình
khác sử dụng n-grams (n-grams là một chuỗi các byte).
 Opcodes: opcodes xác định các hoạt động (operation) ở mức máy được
thực thi bởi một file thực thi và có thể được trích xuất thơng qua phân
tích tĩnh bằng cách kiểm tra các mã assembly. Chuỗi tuần tự opcode là
một trong những đặc trưng phổ biến được sử dụng, nó đếm số lần xuất
hiện của opcode cụ thể trong assemby.
 API và các lời gọi hệ thống (System calls): tương tự opcodes, API và
các lời gọi hệ thống cho phép phân tích hành vi của mã độc nhưng ở
mức cao. Chúng có thể được trích xuất bằng phân tích tĩnh hoặc phân
tích động bằng cách phân tích mã assembly được dịch ngược hoặc một
danh sách các lời gọi hệ thống. Một trong những cấu trúc dữ liệu phổ
biến để biểu diễn hành vi PE và trích xuất cấu trúc chương trình là đồ

thị luồng điều khiển (control flow graph).
 Hoạt động mạng (Network activity): một số lượng lớn các thơng tin
chính có thể thu được bằng cách quan sát việc tương tác mã thực thi với
mạng. Địa chỉ kết nối và lưu lượng được tạo ra có thể rất có giá trị như
kết nối với một lệnh và trung tâm điều khiển. Một số đặc trưng được sử
dụng như giao thức, cổng TCP/UDP, các yêu cầu HTTP, kết nối DNS....
 File system: các hành động của file được thực thi bởi các mã độc là
thành phần cơ bản khi thu thập chứng cứ về sự tương tác của mã độc với


16
mơi trường, ví dụ loại file gì được thêm, sữa, xóa, thay đổi; file gì bị
nhiễm mã độc và file chưa bị nhiễm mã độc.
 Các thanh ghi CPU (CPU Registers): cách các thanh ghi trong CPU
được sử dụng có thể có giá trị như thanh ghi ẩn nào được sử dụng và các
giá trị gì được lưu trong các thanh ghi, đặc biệt là các cờ (Flasgs).
 Các đặc điểm file PE (PE file characteristics): phân tích tĩnh một PE có
thể mang lại tập hợp các thơng tin có giá trị như các phần (sections), các
nhập (imports), các ký hiệu (symbols),
 Chuỗi ký tự (Strings): một PE có thể được kiểm tra bằng cách tìm kiếm
các ký tự cụ thể như dấu hiệu tác giả, tên file, thông tin hệ thống.


17
CHƯƠNG 2: TỔNG QUAN VỀ HỌC MÁY

2.1. Giới thiệu về học máy
Thời gian gần đây, trí tuệ nhân tạo (AI – Artificial Intelligence) và cụ
thể hơn là học máy (Machine Learning) đang nổi lên như một bằng chứng của
cách mạng công nghiệp lần thứ tư (lần 1 – động cơ hơi nước, lần 2 – năng

lượng điện, lần 3 – cơng nghệ thơng tin). Trí tuệ nhân tạo đang len lỏi vào
mọi lĩnh vực trong đời sống của chúng ta như xẹ tự lái của Google và Tesla,
hệ thống gợi ý sản phẩm của Amazon, hệ thống trợ lý ảo Siri của Apple, hệ
thống gợi ý phim của Netfix....chỉ là một trong những ứng dụng AI/Machine
Learning.
Học máy là một tập con của trí tuệ nhân tạo. Theo định nghĩa của
Wikipedia thì, học máy là một lĩnh vực nhỏ của khoa học máy tính, nó có khả
năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải lập trình cụ thể.
Ý tưởng cơ bản của mọi quy trình học máy là xây dựng mơ hình dựa
trên một số thuật toán để thực hiện một nhiệm vụ cụ thể như phân loại, phân
lớp, hồi quy... Giai đoạn huấn luyện được thực hiện dựa trên dữ liệu đầu vào
và mô hình được xây dựng để dự đốn đầu ra. Kết quả đầu ra phụ thuộc mục
tiêu ban đầu và việc thực hiện. Chi tiết quy trình học máy gồm các bước như
sau [13]:

Hình 2.1: quy trình học máy


18
Quy trình học máy cơ bản được chia làm các giai đoạn sau:
 Thu thập dữ liệu (gathering data): Quá trình thu thập dữ liệu phụ thuộc
vào loại dự án mà chúng ta mong muốn xây dựng, ví dụ nếu chúng ta
muốn xây dựng dự án học máy mà sử dụng dữ liệu thực để chúng ta có
thể xây dựng một hệ thống IoT từ các dữ liệu cảm biến khác nhau. Dữ
liệu chúng ta có thể thu thập từ các nguồn dữ liệu khác nhau như một
tập tin, cơ sở dữ liệu, cảm biến ...
 Tiền xử lý dữ liệu (data pre-processing): Tiền xử lý dữ liệu là một trong
những giai đoạn quan trọng trong học máy, nó giúp xây dựng mơ hình
học máy chính xác. Tiền xử lý dữ liệu là một q trình làm sạch dữ liệu
thơ, dữ liệu được thu thập từ nhiều nguồn trong thế giới thực và được

chuyển thành một tập dữ liệu sạch. Dữ liệu thơ ban đầu có một số đặc
điểm như dữ liệu bị thiếu sót, khơng nhất qn, nhiễu vì vậy dữ liệu này
phải được xử lý trước khi đưa vào học máy.
 Xây dựng mơ hình phù hợp cho loại dữ liệu (researching model): Mục
tiêu chính của chúng ta là xây dựng mơ hình thực hiện tốt nhất dựa trên
một số thuật toán phân loại và phân lớp.
 Huấn luyện và kiểm thử mơ hình trên dữ liệu (training and testing
model): để huấn luyện một mơ hình, ban đầu chúng ta chia mơ hình
thành 03 giai đoạn bao gồm: dữ liệu huấn luyện (training data), dữ liệu
xác nhận (validation data) và dữ liệu kiểm thử (testing data). Để huấn
luyện bộ phân lớp ta sử dụng tập hợp dữ liệu huấn luyện (training data
set), để tinh chỉnh các tham số ta sử dụng tập hợp xác nhận (validation
set) và sau đó kiểm tra hiệu suất của bộ phân loại chưa biết sử dụng tập
hợp dữ liệu kiểm thử (test data set). Một lưu ý quan trọng là trong quá
trình huấn luyện bộ phân lớp là dữ liệu kiểm thử không được sử dụng để
huấn luyện.
 Đánh giá (evaluation): Đánh giá mơ hình là một phần quan trọng trong
quy trình phát triển mơ hình, nó giúp tìm ra mơ hình tốt nhất để đại diện


19
cho dữ liệu của chúng ta và mơ hình được chọn sẽ hoạt động tốt như thế
nào trong tương lai.
2.2. Phân loại các thuật tốn học máy [2]
Có hai cách phổ biến để phân loại các thuật toán học máy. Một là dựa vào
phương thức học (learning style) và hai là dựa trên chức năng (function) của
thuật toán. Theo phương phức học thì các thuật tốn học máy được chia làm
04 loại gồm: học có giám sát (Supervise learning), học không giám sát
(Unsupervised learning), học bán giám sát (Semi-supervised learning) và học
tăng cường (Reinforcement Learning). Chi tiết các loại học máy theo phương

thức học như sau:
 Học có giám sát: Là thuật toán dự đoán đầu ra (outcome) của một dữ
liệu mới (new input) dựa trên các cặp (input, output) đã biết từ trước.
Các cặp dữ liệu này còn được gọi là “dữ liệu, nhãn”, tức (data, label).
Học có giám sát là loại phổ biến nhất trong các thuật toán học máy. Bài
tốn học có giám sát cịn được chia nhỏ thành hai loại chính như sau:
 Phân loại (Classification): Một bài toán được gọi là phân loại nếu các
nhãn của dữ liệu đầu vào (input data) được chia thành một số hữu
hạn nhóm: Ví dụ bài tốn xác định xem một email có phải spam hay
khơng?
 Hồi quy (Regression): Nếu nhãn (label) không được chia thành các
loại mà là một giá trị thực cụ thể. Ví dụ, một căn nhà rộng x 𝒎𝟐` , có
y phịng ngủ và cách trung tâm thành phố z km sẽ có giá là bao
nhiêu?
 Học khơng giám sát: trong bài tốn này, chúng ta khơng biết được nhãn
hay outcome mà chỉ có dữ liệu đầu vào. Thuật tốn học khơng giám sát
sẽ dựa vào cấu trúc của dữ liệu để thực hiện một cơng việc nào đó, ví dụ
như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension
reduction) để thuận tiện trong việc lưu trữ và tính tốn. Bài tốn học
khơng giám sát được tiếp tục chia nhỏ thành hai loại sau:


20
 Phân nhóm (clustering): Một bài tốn phân nhóm tồn bộ dữ liệu Y
thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi
nhóm. Ví dụ, phân nhóm khách hàng dựa vào hành vi mua hàng
 Kết hợp (association): là bài toán khi chúng ta muốn khám phá ra
một quy luật dựa trên nhiều dữ liệu cho trước. Ví dụ, những khách
hàng nữ mua quần áo thường có xu hướng mua thêm son mơi; những
khách hàng mua bóng đá thường mua thêm bảo hộ ống quyển và tất.

 Học bán giám sát (Semi-supervised learning): Các bài tốn khi chúng ta
có một lượng lớn dữ liệu Z nhưng chỉ một trong chúng được gán nhãn.
Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu trên. Ví
dụ, chỉ một phần các bức ảnh (ảnh về người, động vật, thực vật) được
gán nhán và phần lớn các bức ảnh khác chưa được gán nhãn trên
internet.
Phân loại dựa trên chức năng: Cách phân loại thứ hai dựa trên chức
năng của các thuật tốn. Ví dụ các thuật tốn hồi quy (Linear regression,
Logistic Regression, Stepwise Regresstion), các thuật toán phân loại (SVM,
kernel SVM, Linear Classifier), các thuật toán phân cụm (k-Means clustering,
k-Medians, EM)...
2.3. Thuật toán One-class SVM.
2.3.1. Giới thiệu thuật toán One-class SVM
Theo truyền thống nhiều vấn đề phân loại cố gắng giải quyết tình
huống hai hoặc phân loại nhiều lớp và mục tiêu của ứng dụng học máy là
phân biệt dữ liệu kiểm thử giữa một số lớp sử dụng dữ liệu huấn luyện.
Nhưng điều gì sẽ xảy ra nếu bạn chỉ có dữ liệu của một lớp và mục tiêu là
kiểm tra dữ liệu mới và tìm hiểu xem nó có giống hay khơng giống với dữ
liệu huấn luyện. Một phương pháp cho nhiệm vụ này đã trở nên phổ biến là
máy véc tơ hỗ trợ một lớp (One-class Support Vector Machine). Ví dụ hãy
tưởng tượng một loại thiết lập của nhà máy với các máy sản xuất rất lớn dưới
sự giám sát của một số hệ thống tiên tiến và nhiệm vụ của hệ thống giám sát


21
là xác định khi có sự cố xảy ra, chất lượng của các sản phẩm có dưới chuẩn
chất lượng khơng, các máy có tạo ra rung động gì lạ khơng hoặc một cái gì đó
làm nhiệt độ tăng lên khơng? Việc thu thập dữ liệu huấn luyện về các tình
huống tương đối dễ dàng do nó chỉ là trạng thái hoạt động bình thường nhưng
mật khác dữ liệu huấn luyện thu thập từ các trạng thái bị lỗi là khá tốn kém và

đôi khi là không thể thực hiện được. Để đối phó với vấn dề này, các giải pháp
phân loại một lớp (one-class) được giới thiệu bằng cách chỉ cung cấp dữ liệu
huấn luyện bình thường và thuật tốn tạo ra một mơ hình cho dữ liệu này.
Nếu dữ liệu được thu được quá khác nhau cùng với một số phép đo thì nó
được gán nhãn ngồi lớp từ mơ hình này.
Trong phạm vi của nghiên cứu này chúng tơi sẽ trình bày 02 cách tiếp
cận về thuật tốn One-class SVM, một cách tiếp cận theo tác giả Schölkopf và
một cách tiếp cận theo các tác giả Tax và Duin. Trước khi đi vào chi tiết thuật
toán One-Class SVM, chúng ta tìm hiểu thuật tốn máy véc tơ hỗ trợ (SVM –
Support Vector Machine).
2.3.2. Giới thiệu thuật toán SVM.
SVM (support vector machine) là một khái niệm trong thống kê và
khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên
quan đến nhau để phân loại và phân tích hồi quy. SVM dạng chuẩn nhận dữ
liệu đầu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là một
thuật tốn phân loại nhị phân. Với một bộ các ví dụ huấn luyện thuộc hai thể
loại cho trước, thuật toán huấn luyện SVM xây dựng một mơ hình SVM để
phân loại các ví dụ khác vào hai thể loại đó. Một mơ hình SVM là một cách
biểu diễn các điểm trong không gian và lựa chọn ranh giới giữa hai thể loại
sao cho khoảng cách từ các ví dụ huấn luyện tới ranh giới là xa nhất có thể.
Các ví dụ mới cũng được biểu diễn trong cùng một không gian và được thuật
toán dự đoán thuộc một trong hai thể loại tùy vào ví dụ đó nằm ở phía nào của
ranh giới.


22
SVM xây dựng một siêu phẳng hoặc một tập hợp các siêu phẳng trong
một không gian nhiều chiều hoặc vô hạn chiều, có thể được sử dụng cho phân
loại, hồi quy, hoặc các nhiệm vụ khác. Một cách trực giác, để phân loại tốt
nhất thì các siêu phẳng nằm ở càng xa các điểm dữ liệu của tất cả các lớp (gọi

là hàm lề) càng tốt, vì nói chung lề càng lớn thì sai số tổng qt hóa của thuật
tốn phân loại càng bé.
Trong nhiều trường hợp, không thể phân chia các lớp dữ liệu một cách
tuyến tính trong một không gian ban đầu được dùng để mô tả một vấn đề. Vì
vậy, nhiều khi cần phải ánh xạ các điểm dữ liệu trong không gian ban đầu vào
một không gian mới nhiều chiều hơn, để việc phân tách chúng trở nên dễ
dàng hơn trong không gian mới. Để việc tính tốn được hiệu quả, ánh xạ sử
dụng trong thuật tốn SVM chỉ địi hỏi tích vơ hướng của các vector dữ liệu
trong khơng gian mới có thể được tính dễ dàng từ các tọa độ trong khơng gian
cũ. Tích vô hướng này được xác định bằng một hàm hạt nhân K(x,y) phù hợp.
[1] Một siêu phẳng trong không gian mới được định nghĩa là tập hợp các điểm
có tích vô hướng với một vectơ cố định trong không gian đó là một hằng số.
Vector xác định một siêu phẳng sử dụng trong SVM là một tổ hợp tuyến tính
của các vector dữ liệu luyện tập trong không gian mới với các hệ số αi. Với
siêu phẳng lựa chọn như trên, các điểm x trong không gian đặc trưng được
ánh xạ vào một siêu mặt phẳng là các điểm thỏa mãn: Σi αi K(xi,x) = hằng số.
Ghi chú rằng nếu K(x,y) nhận giá trị ngày càng nhỏ khi y xa dần khỏi x
thì mỗi số hạng của tổng trên được dùng để đo độ tương tự giữa x với điểm xi
tương ứng trong dữ liệu luyện tập. Như vậy, tác dụng của tổng trên chính là
so sánh khoảng cách giữa điểm cần dự đoán với các điểm dữ liệu đã biết. Lưu
ý là tập hợp các điểm x được ánh xạ vào một siêu phẳng có thể có độ phức tạp
tùy ý trong khơng gian ban đầu, nên có thể phân tách các tập hợp thậm chí
khơng lồi trong khơng gian ban đầu.
Phân loại thống kê là một nhiệm vụ phổ biến trong học máy. Trong mơ
hình học có giám sát, thuật toán được cho trước một số điểm dữ liệu cùng với
nhãn của chúng thuộc một trong hai lớp cho trước. Mục tiêu của thuật toán là


23
xác định xem một điểm dữ liệu mới sẽ được thuộc về lớp nào. Mỗi điểm dữ

liệu được biểu diễn dưới dạng một vector p chiều và ta muốn biết liệu có thể
chia tách hai lớp dữ liệu bằng một siêu phẳng p − 1 chiều, đây gọi là phân loại
tuyến tính. Có nhiều siêu phẳng có thể phân loại được dữ liệu. Một lựa chọn
hợp lý trong chúng là siêu phẳng có lề lớn nhất giữa hai lớp.
2.3.2.1. Xây dựng bài toán SVM
Giả

sử

rằng

các

cặp

dữ

liệu

của

training

set



(𝒙𝟏 , 𝒚𝟏 ), (𝒙𝟐 , 𝒚𝟐 ),.., (𝒙𝟑 , 𝒚𝟑 ) với vector 𝒙𝒊 𝞊 𝑹𝒅 thể hiện đầu vào của một
điểm dữ liệu và 𝒚𝒊 là nhãn của điểm dữ liệu đó, d là số chiều của dữ liệu và N là
số điểm dữ liệu. Giả sử rằng nhãn của mỗi điểm dữ liệu được xác định bởi 𝒚𝒊 =

1 (lớp 1) hoặc 𝒚𝒊 = -1 (lớp 2). Để dễ hình dung, chúng ta cùng xét trường hợp
trong không gian hai chiều dưới đây. Không gian hai chiều để dễ hình dung,
các phép tốn hồn tồn có thể được tổng qt lên khơng gian nhiều chiều.

Hình 2.2: phân tích bài tốn SVM
Giả sử rằng các điểm vng xanh thuộc lớp 1, các điểm trịn đỏ thuộc
lớp -1 và mặt (𝑤 𝑇 𝑥 + 𝑏) = 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑏 là mặt phân chia giữa hai lớp
(hình 2.2). Hơn nữa, lớp 1 nằm về phía dương, lớp -1 nằm về phía âm của mặt
phân chia. Nếu ngược lại, ta chỉ cần đổi dấu của w và b. Chú ý rằng chúng ta
cần đi tìm các hệ số w và b. Ta quan sát thấy một điểm quan trọng sau đây:
với cặp dữ liệu (𝑥𝑛 , 𝑦𝑛 ) bất kỳ, khoảng cách từ điểm đó tới mặt phân chia là:


24
Điều này có thể dễ nhận thấy vì theo giả sử ở trên, yn ln cùng dấu với

phía của 𝑥 𝑛 . Từ đó suy ra yn cùng dấu với (𝑤 𝑇 xn + b) và tử số luôn là 1 số
không âm. Với mặt phần chia như trên, giới hạn (margin) được tính là khoảng
cách gần nhất từ 1 điểm tới mặt đó (bất kể điểm nào trong hai lớp):

Bài tốn tối ưu trong SVM chính là bài tốn tìm w và b sao cho margin
này đạt giá trị lớn nhất:

Nhận xét quan trọng nhất là nếu ta thay vector hệ số w bởi kw và b bởi kb
trong đó k là một hằng số dương thì mặt phân chia không thay đổi, tức
khoảng cách từ từng điểm đến mặt phân chia không đổi, tức margin không
đổi. Dựa trên tính chất này, ta có thể giả sử:
𝒚𝒏 (𝒘𝑻 𝒙𝒏 + b) = 1
Với những điểm nằm gần mặt phân chia nhất như hình 2.3 dưới đây:


Hình 2.3: các điểm gần mặt phân cách nhất của hai class được khoanh trịn
Như vậy, với mọi n, ta có:
𝒚𝒏 (𝒘𝑻 𝒙𝒏 + b) = 1


25
Vậy bài tốn tối ưu (1) có thể đưa về bài tốn tối ưu có ràng buộc sau đây:

Bằng một biến đổi đơn giản, ta có thể đưa bài tốn này về bài toán dưới
đây:

Ở đây, chúng ta đã lấy nghịch đảo hàm mục tiêu, bình phương nó để được
một hàm khả vi và nhân với 1/2 để biểu thức đạo hàm đẹp hơn. Xác định lớp
(class) cho một điểm dữ liệu mới: sau khi tìm được mặt phân cách 𝑾𝑻 𝒙 +
𝒃 = 𝟎 , class của bất kỳ một điểm nào sẽ được xác định đơn giản bằng cách:
class(x) = sgn(𝑤 𝑻 x + b)
trong đó hàm sgn là hàm xác định dấu, nhận giá trị 1 nếu đối số là không âm
và -1 nếu ngược lại.
2.3.3. Thuật tốn One-class SVM theo tác giả Schưlkopf
Về cơ bản, thuật tốn One-class SVM theo tác giả Schưlkopf thực hiện
tách tất cả các điểm dữ liệu khỏi điểm gốc (trong không gian đặc trưng F) và
tối đa khoảng cách từ siêu phẳng này đến điểm gốc. Điều này dẫn đến một
hàm nhị phân thu thập các vùng trong không gian đầu vào nơi mật độ xác suất
của dữ liệu tồn tại vì vậy hàm này sẽ trả lại giá trị +1 trong một vùng bé (vùng
thu thập các điểm dữ liệu huấn luyện) và -1 đối với các vùng khác.
Chúng ta xem xét dữ liệu huấn luyện 𝑥1, 𝑥2, 𝑥3, ... 𝑥𝑙 𝜖 𝑋 với l 𝜖 N là các
mẫu và X là một số tập hợp, để đơn giản chúng ta nghĩ nó như một tập hợp
con 𝑅𝑁 , đặt ɸ là một chuyển đổi đặc trưng X -> F, ví dụ một chuyển đổi vào
F khơng gian sản phẩm điểm sao cho có thể tính tốn sản phẩm điểm trong
hình ảnh của ɸ có thể được tính tốn bằng hàm nhân đơn giản:

K(x, y) = (ɸ(x). ɸ(y)), với hàm nhân Gaussian


×