BỘ CÔNG THƯƠNG
TRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỀ TÀI
NGHIÊN CỨU CÁC KỸ THUẬT VƯỢT QUA
PHẦN MỀM CHỐNG MÃ ĐỘC
Giảng viên hướng dẫn:
Thực hiện:
ThS. Nguyễn Minh Trường
PHAN HỒNG LĨNH
2118110036 - CCQ1811A
TP. Hồ Chí Minh – Tháng 07/2020
2
LỜI CẢM ƠN
Để hoàn thành đề tài lời đầu tiên em xin chân thành cảm ơn đến toàn thể thầy cơ
trong trường Cao đẳng Cơng thương Tp.Hồ Chí Minh nói chung và các thầy cô trong
ngành công nghệ thông tin nói riêng, những người đã tận tình hướng dẫn, dạy dỗ và
trang bị cho em những kiến thức bổ ích trong śt q trình em học tại trường.
Đặc biệt em xin chân thành gửi lời cảm ơn sâu sắc đến giảng viên ThS. Nguyễn
Minh trường, người đã tận tình hướng dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp
đỡ em trong śt q trình làm đề tài.
Sau cùng em xin gửi lời cảm ơn tới gia đình, bạn bè, anh chị đóng góp ý kiến
trong q trình học tập, nghiên cứu cũng như quá trình làm đề tài.
Em xin chân thành cảm ơn!
3
MỤC LỤC
4
DANH MỤC CÁC HÌNH
Chương 1:
1.1.
MỞ ĐẦU
Lý do chọn đề tài
Trong thời đại 4.0, sức mạnh của công nghệ ngày càng lớn và càng tiến bộ hơn,
việc bảo mật thông tin, dữ liệu, … trên internet là điều vô cùng cần thiết. Bởi vì lượng
lớn thơng tin và dữ liệu đó nếu mà bị đánh cắp sẽ gây ra thiệt hại vô cùng lớn, ảnh
hưởng rất nhiều không chỉ cả nhân mà còn ảnh hưởng đến cả các tổ chức, tập đồn,
cơng ty lớn, hay thậm chí là cả mợt q́c gia. Vì vậy em chọn đề tài này để tìm hiểu
các cách mà các hacker thường sử dụng để vượt qua phần mềm phòng chớng mã đợc,
từ đó tìm ra cách phòng chớng để tạo sự an tồn thơng tin cho cá nhân hay cợng đồng.
1.2.
Mục đích
Tìm ra các phương pháp vượt qua các phần mềm chống mã độc, virus hiện có, hoặc
tìm ra các phương pháp mới để từ đó tìm ra các hướng giải quyết, chớng lại các
phương pháp đó.
1.3.
Đối tượng và phạm vi
Vì thời gian tìm hiểu khơng nhiều và bản thân khả năng cũng có hạn, nên đới tượng
em tìm hiểu lần này là các phương pháp đã được giới thiệu trên internet với phạm vi
nhỏ, chủ yếu tấn công vào cá nhân sử dụng phần mềm chống mã độc phổ biến như
kaspersky, avast,…
5
Chương 2:
CƠ SỞ LÝ THUYẾT
2.1. Khái niệm, phân loại và mục đích của mã độc
a. Khái niệm
Mã độc là mợt thuật ngữ dùng để ám chỉ những phần mềm được cài đặt vào máy
tính, thực hiện những nhiệm vụ khơng mong muốn của người dùng, thường nhằm
phục vụ lợi ích cho bên thứ ba nào đó.
b. Phân loại
Virus, Worm, Trojan, Rootkit, Keylogger, Addware, Spyware, Browser Hijacker,
Mobile Threats,…
c. Mục đích
•
Trị đùa hoặc khẳng định bản thân
•
Học tập và nghiên cứu
•
Phá hủy dữ liệu, hệ thớng máy tính
•
Theo dõi và đánh cắp thơng tin
2.2. Cách thức lây nhiễm
•
Lây nhiễm theo cách cổ điển.
•
Lây nhiễm qua thư điện tử.
•
Lây nhiễm qua truy cập trang web.
•
Lây nhiễm qua các phần mềm cài đặt.
•
Lây nhiễm qua khai thác lỗi bảo mật.
•
Qua nhiều con đường khác,...
6
Hình 1.Minh họa cách thức lây nhiễm mã độc qua thư điện tử
Hình 2.Sự xuất hiện của các loại mã độc mới theo từng năm. – Thống kê của AV-TEST.
7
Hình 3.Việt Nam đứng thứ 2 về lượng lây nhiễm mã độc tấn công các giao dịch ngân hàng
trực tuyến (2013) - Theo TrendMicro.
2.3. Các loại mã độc mới và dự đốn xu hướng mã độc
trong tương lai.
•
Mã đợc sẽ tiếp nhằm vào hạ tầng trọng yếu của các quốc gia để đánh cắp và
phá huỷ dữ liệu.
•
Các mã đợc trên di động tăng nhanh và xuất hiện nhiều biến thể phần mềm mã
hố tớng tiền (ransomware) trên di đợng.
•
Qùn riêng tư của người sử dụng tiếp tục là mục tiêu của hacker.
•
Các dịch vụ lưu trữ dữ liệu đám mây sẽ gặp nhiều vấn đề về an ninh.
•
Mạng xã hội như Facebook sẽ trở thành con đường chủ yếu để kẻ lừa đảo hoạt
đợng.
•
Các c̣c tấn cơng mạng mang màu sắc chính trị gia tăng giữa hacker của các
q́c gia.
•
Doanh nghiệp đới đầu với các c̣c tấn cơng đánh cắp dữ liệu ngày càng tinh vi
(APT).
8
2.4. Các công cụ - kỹ thuật sinh mã độc tự động.
Hình 4.JPS (Virus Maker 3.0)
Hình 5.TeraBIT Virus Maker 3.1
9
Hình 6.Sonic Bat
10
Chương 3:
3.1.
CÁC KỸ THUẬT VƯỢT QUA PHẦN MỀM
PHÒNG CHỐNG MÃ ĐỘC
Cấu trúc tệp tin thực thi
PE File Format (Portable Executable File Format): là định dạng tệp tin thực thi trên
Hệ điều hành Windows 32bit và Windows 64bit. Bao gồm các file .exe, .dll
(32bit), .com, .net,… ngoại trừ các file VxDs và .dll (16bit).
Cấu trúc một tệp tin thực thi bao gồm:
3.2.
•
DOS MZ Header
•
DOS Stub
•
PE Header
•
Section Table
•
Section
Cấu trúc PE Header
Signature: dấu hiệu nhận biết định dạng File (4 bytes)
•
(PE : 50 45 00 00 – 32 bits)
•
(NE : 4E 45 00 00 – 16 bits)
•
(LE : 4C 45 00 00 – trình điều khiển thiết bị ảo Window 3.x)
•
( LX : 45 58 00 00 – File cho OS/2 2.0 )
File Header: chứa thông tin về sơ đồ bố trí vật lý và những đặc tính của file
(20 bytes)
Optional Header: chứa thông tin về sơ đồ logic bên trong của một file PE
(224 bytes)
Trong cấu trúc File Header, mợt sớ thành phần cần lưu ý đó là:
Machine: giá trị xác định PE File này được biên dịch cho dòng máy nào (dưới
dạng mã trên Intel 32 bits)
NumberOfSections: cho biết số Section của PE File. Thành phần này cần thay
đổi nếu như ḿn thêm hoặc xóa bất kỳ sections nào trong một PE File.
Characteristics: là bit cờ, xác định định dạng PE File.
Giá trị 0x0102 nếu là file *.EXE
11
Giá trị 0x2102 nếu là file *.DLL
Optional Header bao gồm 31 thành phần, chiếm 224 bytes.
Trong đó, các thành phần lưu ý được mơ tả như sau:
•
Magic (2 bytes)
•
AddressOfEntryPoint (4 bytes): chứa địa chỉ ảo tương đối (RVA) của câu
lệnh đầu tiên sẽ được thực thi khi
chương trình PE loader sẵn sàng để
chạy tệp tin PE (.text hoặc .code)
•
ImageBase (4 bytes)
•
Section Alignment (4 bytes)
nhớ
•
File Alignment (4 bytes) : phần liên kết của các Section trong tệp tin
•
SizeOfImage (4 bytes)
là tổng của tất cả các
tới Section Alignment
•
SizeOfHeaders (4 bytes) : kích thước của tất cả các headers + section
table.
•
Data Directory
: là một mảng gồm 16 phần tử, trong đó mỗi phần liên
quan đến một cấu
trúc dữ liệu quan trọng trong PE tệp tin.
: xác định là tệp tin 32 bit (0B 01) hay 64 bit (0B 20)
: địa chỉ nạp được ưu tiên cho tệp tin PE.
: phần liên kết của các Section trong bộ
: tồn bộ kích thước của PE image trong bộ nhớ,
headers và sections được liên kết
Section Table chứa thơng tin về mỗi Section.
•
VirtualSize: là kích thước của section’s data được tính theo bytes
•
VirtualAddress: hay gọi là RVA (địa chỉ ảo tương đối) của section.
•
SizeOfRawData: kích thước của section’s data trong tệp tin trên đĩa
•
PointToRawData: là offset từ vị trí bắt đầu của tệp tin cho tới phần section’s
data.
•
Characteristics: bao gồm các cờ, cho biết thuộc tính của section.
Sections chứa nợi dung chính của tệp tin
Mợt sớ Sections thông dụng: .text, .data (.rdata, .bss), .rsrc, .edata, .idata,
.debug, .reloc
12
3.3.
Các kỹ thuật vượt qua phần mềm phòng chống mã
độc
3.3.1.
Kỹ thuật mã hóa
Là mợt cách thức phù hợp và hiệu quả, vừa làm thay đổi dấu hiệu đặc trưng của mã
đợc, vừa gây khó trong việc phân tích hoạt đợng của mã đợc.
Các kỹ thuật mã hóa:
3.3.2.
•
Mã hóa cơ bản
•
Mã hóa dòng
•
Mã hóa với khóa ngẫu nhiên
•
Mã hóa dựa trên phép hốn vị
•
Mã hóa phụ tḥc vào mã lệnh
Kỹ thuật chèn mã rác
•
Mã lệnh rác được thêm vào nhưng khơng ảnh hưởng đến tính logic của chương
trình.
•
Mợt sớ lệnh như: XCHG, NOP, “MOV ax, ax”, “SUB ax 0” …
3.3.3.
Kỹ thuật rẽ nhánh
•
Chương trình được tạo ra với nhiều điểm kiểm tra ngẫu nhiên bằng các lệnh
nhảy có điều kiện (JNE, JNZ…).
Hình 7.Hoạt động chương trình khi có và khơng rẽ nhánh
Sử dụng Stub để giải mã và thực thi trên bộ nhớ.
13
Hình 8.Hình ảnh tệp tin được tạo ra.
Tệp tin nhị phân mới được tạo ra có hai phần, phần thứ nhất gọi là Stub, phần này sẽ
chịu trách nhiệm cho việc giải mã và thực thi mã độc trên bộ nhớ. Phần thứ hai là
phần Payload, phần này chính là mã đợc đã được mã hóa, có rất nhiều giải thuật có thể
lựa chọn.
-
Thêm Junk code để chỉnh sửa luồng chạy.
-
Thay đổi hoặc mã hóa chuỗi.
-
Thay đổi tên biến.
-
Thay đổi thứ tự vẻ bề ngoài của mã.
-
Thêm hoặc đổi icon.
-
Mã hóa tồn bợ chuỗi biến và kể cả payload cũng với thuật tốn mã hóa dữ liệu
theo tiêu chuẩn.
-
Làm rới tồn bợ hàm gọi API khả nghi.
-
Khiến cho đợ dài của tất cả các phần tử ở phía đi thay đổi, khơng thể dự
đốn được.
-
Xóa tồn bợ những chuỗi khơng cần thiết và ẩn các nguồn có thể là dấu hiệu
nhận diện bởi Antivirus.
14
Hình 9.Tệp tin được làm rối.
3.3.4.
Kỹ thuật PRIDE (Pseudo-Random Index Decryption).
Mục đích của kỹ thuật này bảo vệ virus trước phương pháp heuristic. Ngay cả với
việc thay đổi hướng thực hiện của thủ tục giải mã.
-
Data: là địa chỉ bộ đệm bên trong chứa dữ liệu của virus.
-
Tuần tự đọc dữ liệu và tạo ra một bộ đệm mới chứa các dữ liệu được giải mã.
-
Kiểm soát mã lệnh mới được giải mã.
PRIDE bao gồm việc giải mã một cách ngẫu nhiên và không theo thứ tự, byte 10
được giải mã, byte 25 được giải mã, byte 7 được giải mã cứ như vậy. Kiểu truy cập
vào bộ nhớ như thế sẽ giống với với truy cập bộ nhớ của mợt ứng dụng bình thường.
Đồng thời kỹ thuật này sẽ củng cố hơn tính đa hình của mã lệnh giải mã.
15
Hình 10.Kỹ thuật PRIDE
3.3.5.
Các kỹ thuật chống phân tích mã độc
Anti-Debugger:
•
Sử dụng các hàm API
Hàm IsDebuggerPresent
Hàm CheckRemoteDebuggerPresent
Hàm NtQueryInformationProcess
•
Kiểm tra cấu trúc
Hàm NTGlobalFlag
•
Timing Check
•
Ngắt
Int3
Int2D
Hình 11.Chạy trực tiếp chương trình
16
Hình 12.Chạy chương trình thông qua Visual Studio 2012
Anti-Virtual Machine:
Các phần mềm ảo hóa phổ biến:
•
Virtual-Machine
VMware Workstation
Oracle VirtualBox
Microsoft Virtual PC
•
Parallels Desktop
•
Sandboxie
Hình 13.Một số giải pháp ảo hóa, Sandbox
Anti-Virtual Machine:
Các kỹ thuật Anti-Virtual Machine
17
•
Timing Base
•
Artifacts Based
Hình 14.Phát hiện máy ảo dựa vào Timing Base
Hình 15.Phát hiện máy ảo dựa vào Artifacts Base
3.3.6.
Kỹ thuật che giấu API (Application Programming Interface).
Mục đích của kỹ thuật này là che giấu các API được gọi trong quá trình thực thi và
các API được liệt kê trong Import Directory. Khiến các AV không nghi ngờ các chức
năng thực hiện, hơn nữa còn chống Debug, chống dịch ngược phần mềm.
18
Hình 16.Che giấu API
Hình 17.Thực thi hàm MessageBox() mà không gọi API.
19
Hình 18.Thực thi hàm MessageBox() mà không gọi API.
3.3.7.
Kỹ thuật sử dụng chữ ký số.
Hình 19.Chữ ký thật
20
Hình 20.Chữ ký giả
3.3.8.
Khai thác lỗ hổng trên Hệ điều hành.
Lỗ hổng trên Hệ điều hành: Là những lỗi lập trình từ những chương trình hệ thớng
bên trong Hệ điều hành.
Những mã độc sử dụng lỗ hổng trên hệ điều hành thường khó phát hiện hơn so với
những mã đợc thơng thường, những loại mã đợc này có thời gian hoạt động ngầm rất
lâu trước khi chúng bị phát hiện bởi những chuyên gia phân tích mã độc.
Những lỗ hổng trên Hệ điều hành không chỉ xuất hiện trên HĐH Windows mà còn
trên Linux, Android, MAC OS – Trước đó Apple tun bớ khơng thể có mã đợc.
21
Hình 21.Sự lây lan của Stuxnet
Các lỗ hổng trên Hệ điều hành điển hình năm 2014
-
CVE-2014-414: Windows OLE Package Manager SandWorm Exploit
-
CVE-2014-4113:
Dereference
-
CVE-2014:6324: Windows Kerberos - Elevation of Privilege (MS14-068)
Windows
TrackPopupMenu
Win32k
NULL
Pointer
Một số lỗ hổng trên Hệ điều hành mới công bố năm 2015
-
CVE-2015-0004: Windows < 8.1 (32/64 bit) - Privilege Escalation (User
Profile Service) (MS15-003)
-
Windows 8.1 - Local WebDAV NTLM Reflection Elevation of Privilege
-
McAfee Data Loss Prevention Endpoint - Arbitrary Write Privilege Escalation
22
Hình 22.Khai thác CVE-2014-4113 để leo thang đặc quyền NT AUTHORITY\SYSTEM
23
KẾT LUẬN
1. Các phần mềm phòng chống mã độc Không an toàn 100%. Chỉ được coi là
“Thuốc an thần”.
2. Tuy nhiên khơng vì thế mà loại bỏ hồn tồn phần mềm phòng chống mã độc
khỏi hệ thống.
3. Hệ thống cần phải thường xuyên bảo trì, theo dõi để giảm thiểu tối đa tác hại
của mã đợc.
4. Cần xây dựng chính sách an ninh cho hệ thống, đảm bảo việc giảm thiếu tối
đa rủi do do mã độc gây ra, các biện pháp phịng chống, khắc phục hậu quả
do mã đợc.
5. Các mã độc muốn vượt được qua các phần mềm phòng chớng mã đợc thì kỹ
thuật lập trình là chính, các lá chắn bảo vệ chỉ là vỏ bọc bên ngồi, sẽ bị phát
hiện sớm hơn.
6. Cịn nhiều kỹ thuật vượt qua phần mềm phòng chống mã độc, nhưng do giới
hạn về thời gian nghiên cứu, điều kiện thực tế và tài liệu nên nhóm nghiên
cứu chưa trình bày trong nội dung nghiên cứu.
24
TÀI LIỆU THAM KHẢO
Tiếng Anh
[1]
Aditya P. Mathur and Nwokedi Idika, "A Survey of Malware Detection
Techniques".
[2]
Joshua Tully, "Introduction into Windows Anti-Debugging", 9/2008
[3]
Joshua Tully, "An Anti-Reverse Engineering Guide", 11/2008
[4]
Mark Vincent Yason, "The Art of Unpacking"
[5]
Michael Sikorski and Andrew Honig, "Praise for Practical Malware Analysis"
[6]
Moritz Jodeit, "Exploiting CVE-2014-4113 on Windows 8.1"
[7]
N. Rin, "VMDE - Virtual Machines Detection Enhanced"
[8]
Peter Szor, "The Art of Computer Virus Research and Defense"
[9]
Philippe Beaucamps, "Advanced Metamorphic Techniques in Computer
Viruses“
[10] Richard Ford, "The future of virus detection"
[11] Ronnie Johndas, "Analysis of CVE-2014-4113".
Trang web
[12] />[13] />
25