Trong những năm gần đây, sự phát triển của mã độc đang ngày càng gia tăng nhanh chóng. Hơn 350.000 mã độc đang phát hiện bởi phần mềm phòng chống virus mỗi ngày. Để có thể phân tích và phát hiện mã độc một cách hiệu quả, những nhà phân tích mã độc thường sử dụng phương pháp trích xuất hành vi độc hại của mã độc, hay còn gọi là kỹ thuật dịch ngược (reverse engineering).
Kỹ thuật dịch ngược là quá trình lấy một biên dịch nhị phân và cố gắng tái tạo lại cách chương trình ban đầu hoạt động, từ đó hiểu được bản chất, hành vi và phương thức chương trình đó hoạt động [1]. Đây là một cách tiếp cận có cấu trúc để phân tích mã độc. Hành vi và chức năng của mã độc có thể được phát hiện thông qua các phương pháp dịch ngược.
Tuy nhiên, để tránh phát hiện ra mã độc thông qua phân tích tĩnh và phân tích động, các tác giả của mã độc đang sử dụng các kỹ thuật chống dịch ngược. Ban đầu, kỹ thuật chống dịch ngược được ứng dụng trong việc chống tin tặc dịch ngược mã nguồn, chống ăn cắp mã nguồn để xây dựng bản phá khóa cho các chương trình với chi phí cao. Sau đó kỹ thuật chống dịch ngược đã được tin tặc sử dụng đối với mã độc nhằm mục đích cản trở và gây khó khăn trong việc phân tích chúng. Những kỹ thuật này khiến mã độc trở nên tinh vi hơn, do đó để một nhà phân tích phát hiện ra mã độc sử dụng chống dịch ngược đang hoạt động trong hệ thống là rất khó khăn [2].
Các kỹ thuật phân tích được sử dụng trong các kỹ thuật phát hiện mã độc là: phân tích tĩnh (static), phân tích động (dynamic) và phân tích lai (hybrid) kết hợp giữa phân tích động và tĩnh. Tương tự như kỹ thuật dịch ngược, kỹ thuật chống dịch ngược cũng được chia làm ba loại, là kỹ thuật chống dịch ngược tĩnh, kỹ thuật chống dịch ngược động hoặc kết hợp cả hai phương pháp trên.
Như đã nói ở trên, trong kỹ thuật phân tích mã độc hay dịch ngược mã độc, các chuyên gia phân tích mã độc sẽ chạy các mẫu mã độc đó trong trình debug, sandbox hay môi trường máy ảo để phân tích chức năng và hành vi của mã độc đó [4]. Biết được điều đó, tin tặc sử dụng kỹ thuật chống dịch ngược mã độc nhằm mục đích cản trở và gây khó khăn trong việc phân tích mã độc bằng cách sử dụng một số kỹ thuật như trong Hình 1.
Hình 1. Các kỹ thuật chống dịch ngược mã độc
Anti-Debuger là kỹ thuật chống phân tích được sử dụng phổ biến trong mã độc. Khi bị phân tích bởi một trình Debuger nào đó, mã độc sử dụng kỹ thuật này có thể phát hiện ra sự có mặt của trình Debuger, sau đó làm thay đổi hướng thực thi của mã độc (rẽ sang hướng khác hoặc dừng hoạt động…) gây cản trở quá trình phân tích.
Hiện nay, với sự phát triển của các chương trình antivirus, tin tặc luôn thay đổi và xây dựng các kỹ thuật mới để vượt qua được các chương trình Antivirus. Một số kỹ thuật Anti-Debuger đơn giản và phổ biến bao gồm: sử dụng các hàm API, kiểm tra cấu trúc, Timing Check, ngắt [5].
Hệ điều hành Windows cung cấp một số hàm API có chức năng xác định trình Debuger. Các hàm API sẽ dò quét các dấu hiệu của trình Debuger khi hoạt động, bao gồm:
- Hàm IsDebuggerPresent: Đây là hàm API đơn giản nhất để phát hiện sự có mặt của một trình Debuger. Hàm này tìm kiếm cấu trúc Process Environment Block (PEB). Kết quả trả về sẽ là giá trị 0 nếu như chương trình chạy trong ngữ cảnh của một trình Debuger. Nếu không thì kết quả trả về là một giá trị khác 0.
- Hàm CheckRemoteDebuggerPresent: Hàm API này gần như giống với hàm IsDebuggerPresent. Hai hàm này đều nhằm phát hiện sự có mặt của một trình Debuger, nhưng hàm CheckRemoteDebuggerPresent có khả năng thực hiện quá trình kiểm tra thông qua một tiến trình xử lý khác.
- Hàm NtQueryInformationProcess: Đây là hàm Native API trong NTdll.dll có chức năng lấy thông tin về một quá trình nhất định.
Khi một trình Debuger chạy sẽ tạo ra các vùng nhớ heap khác nhau. Những thông tin mà hệ thống sử dụng để xác định một vị trí “không xác định” trong PEB tại offset 0x68. Nếu giá trị ở vị trí này là 0x70 thì có nghĩa là một trình Debuger đang hoạt động. Giá trị 0x70 là sự tổ hợp của các bit cờ.
Timing Check là một trong những kỹ thuật phổ biến để phát hiện sự có mặt của trình Debuger. Nguyên lý của kỹ thuật này là so sánh sự sai khác về độ trễ khi có mặt và không có mặt của trình Debuger. Các ngoại lệ sẽ được xử lý rất nhanh nếu như không có mặt của trình Debuger. Ngược lại, ngoại lệ sẽ xử lý chậm hơn khi có mặt của trình Debuger do đòi hỏi sự can thiệp của con người.
Bằng việc chèn các mã lệnh ngắt trong chương trình, trình Debuger sẽ gặp phiền phức và có thể bị chuyển hướng nếu như sử dụng lệnh ngắt và xử lý ngoại lệ đồng thời. Đây là một kỹ thuật cổ điển nhưng vẫn hiệu quả trong việc gây phiền toái và khó khăn trong quá trình phân tích chương trình.
Ngắt Int3 có mã opcode là 0xCC. Trình Debuger sẽ hiểu mã lệnh 0xCC là một điểm ngắt hoặc một bẫy ngắt. Vì vậy, trình Debuger sẽ dừng thực thi để tránh rơi vào bẫy này. Thực chất, lúc này, trình Debuger đã thực sự rơi vào một cái bẫy. Với ngắt Int3, người lập trình mã độc có thể điều hướng chương trình thực thi hoặc làm nhiễu quá trình phân tích của người phân tích hoặc chương trình Antivirus.
Int2D
Ngắt Int2D cũng là một loại ngắt tương tự Int3. Ngắt Int2D được sử dụng để truy cập nhân Debugger, và cũng có thể được sử dụng ở mức User mode. Khi ngắt Int2D được gọi, hệ thống sẽ giữ lại 1 byte sau lệnh ngắt. Các chương trình thực thi sẽ sử dụng chính điều này để chỉnh sửa nội dung của nó.
VMware là phần mềm ảo hóa thường được các chuyên gia phân tích mã độc sử dụng để tạo ra môi trường ảo nhằm mục đích phân tích hành vi và chức năng của các mẫu mã độc. Tuy nhiên, có một số cách để mã độc có thể phát hiện đang được chạy trong môi trường ảo hay môi trường thật. Các phương pháp phổ biến mà tin tặc hay sử dụng được miêu tả trong Hình 2 [6].
Hình 2. Kỹ thuật chống dịch ngược mã độc trên môi trường ảo hóa
Khi môi trường ảo hóa được khởi tạo, trong Registry sẽ xuất hiện các thư mục có liên quan đến Vmware. Như vậy, mã độc trước khi khởi động chỉ cần kiểm tra trong Registry có thư mục đó hay không, là biết được nó có đang chạy trong môi trường ảo hóa hay không. Đường dẫn của thư mục đó như sau:
HKLM\SOFTWARE\VmwareInc.\Vmware Tools
HKEY_LOCAL_MACHINE\HARDWARE\ DEVICEMAP\Scsi\ScsiPort2\ScsiBus 0\Target Id 0\Logical Unit Id 0\Identifier
Tương tự như vậy, mã độc trước khi chạy sẽ kiểm tra trong các thư mục có chứa file của VMware hay không rồi mới bắt đầu các hành vi khác. Đường dẫn của các file như sau:
1) C:\windows\System32\Drivers\ Vmmouse.sys
2) C:\windows\System32\Drivers\ vm3dgl.dll
Địa chỉ MAC của các máy ảo thường sẽ được cung cấp cố định một vài địa chỉ. Chính vì vậy mã độc hoàn toàn có thể biết được môi trường bên ngoài đang là ảo hay thật bằng cách kiểm tra địa chỉ MAC của máy [7]: 00:05:69; 00:0C:29; 00:1C:14; 00:50:56.
Tương tự như kỹ thuật Anti VMWare, một số kỹ thuật khác mà các tin tặc thường hay sử dụng là: Anti-Virtual Box, Anti Sandboxie, Generic Sandbox và Wine Detection, … [8].
Hình 3. Cấu trúc file PE
File thực thi .exe trong hệ điều hành Windows thường có cấu trúc PE file, định dạng file riêng của Win32 (Hình 3). PE file được chia làm 2 phần Header và Section, trong đó Header dùng để lưu các giá trị định dạng file và các offset của các section trong phần Section.
Kỹ thuật Packer Application sử dụng phương pháp nén, mã hóa, lưu hoặc giấu mã gốc của chương trình, tự động bổ sung một hoặc nhiều section, sau đó sẽ thêm đoạn mã Unpacking Stub và chuyển hướng Entry Point (EP) tới vùng mã này. Bình thường một file không đóng gói (Nonpacked) sẽ được tải bởi OS. Với file đã đóng gói thì Unpacking Stub sẽ được tải bởi OS, sau đó chương trình gốc sẽ tải Unpacking Stub. Lúc này mã EP của file thực thi sẽ trỏ tới Unpacking Stub thay vì trỏ vào mã gốc.
Có rất nhiều kỹ thuật chống dịch ngược đã được tin tặc sử dụng nhằm mục đích gây khó khăn cho các chuyên gia phân tích mã độc, điều đó giúp cho mã độc có thêm thời gian để hoạt động và phá hoại máy tính của người dùng. Bài báo đã đưa ra được các kỹ thuật chống dịch ngược phổ biến hiện nay, từ đó các chuyên gia phân tích mã độc hay an toàn thông tin có thể hiểu được những kỹ thuật đó và đưa ra được các cách thức phân tích mã độc hiệu quả, đảm bảo an toàn thông tin cho các hệ thống máy tính.
TÀI LIỆU THAM KHẢO 1. R. Goyda, S. Sharma, and S. Bevinakoppa, “Obfuscation of stuxnet and flame malware,” In. Proc. of the 3rd international conference on applied informatics and computing theory(AICT'12), 150--154, 2012. 2. J. W. Kim, J. Bang, Y.S. Moon, and M. J. Choi, “Disabling anti-debugging techniques for unpacking system in user-level debugger,” in 2019 International Conference on Information and Communication Technology Convergence(ICTC), Jeju Island, South Korea, 2019. 3. M. N. Gagnon, S. Taylor, and A. K. Ghosh, “Software protection through antidebugging,” IEEE Security & Privacy, 5(3), 82--84, 2007. 4. R. Vinayakumar, M. Alazab, K. P. Soman, P. Poornachandram, and S. Venkatran man, “Robust intelligent malware detection using deep learning,” IEEE Access, 7, 46717--46738, 2019. 5. M. J. Choi, J. Bang, J. W. Kim, H. Kim, and Y. S. Moon, “Allin-one framework for detection, unpacking, and verification for malware analysis,” Security and Communication Network 2019, 2019(5278137), 1--16, 2019. 6. S. Choi, T. Chang, S. Yoon, and Y. Park, “Hybrid emulation for bypassing anti-reversing techniques and analyzing malware,” The Journal of Supercomputing, 1--27, 2020. 7. D. P. Pham, D. L. Vu, and F. Massacci, “Mac-A-Mal: macOS malware analysis framework resistant to anti evasion techniques,” Journal of Computer Virology and Hacking Techniques, 15(4), 249--257, 2019. 8. J. K. Lee, B. J. Kang, and E. G. Im, “Rule-based antianti-debugging system,” In Proc. of the 2013 Research in Adaptive and Convergent Systems, 353--354, 2013. |
TS. Phạm Văn Tới, Hà Thị Thu Trang, Phan Trọng Duy, Phòng Thí nghiệm trọng điểm an toàn thông tin, Bộ Tư lệnh 86
16:00 | 03/05/2021
14:00 | 04/03/2022
16:00 | 04/08/2024
09:00 | 13/06/2022
07:00 | 08/11/2021
14:00 | 07/03/2022
08:00 | 05/10/2020
08:00 | 26/08/2024
DNS Tunneling là một kỹ thuật sử dụng giao thức DNS (Domain Name System) để truyền tải dữ liệu thông qua các gói tin DNS. Giao thức DNS được sử dụng để ánh xạ các tên miền thành địa chỉ IP, nhưng DNS tunneling sử dụng các trường dữ liệu không được sử dụng thông thường trong gói tin DNS để truyền tải dữ liệu bổ sung. DNS Tunneling thường được sử dụng trong các tình huống mà việc truy cập vào Internet bị hạn chế hoặc bị kiểm soát, như trong các mạng cơ quan, doanh nghiệp hoặc các mạng công cộng. Tuy nhiên, DNS Tunneling cũng có thể được sử dụng để thực hiện các cuộc tấn công mạng, bao gồm truy cập trái phép vào mạng hoặc truyền tải thông tin nhạy cảm mà không bị phát hiện.
13:00 | 30/07/2024
Trong thế giới số hiện nay, việc nhận thức về cách các công ty thu thập và sử dụng dữ liệu của người dùng trở nên quan trọng hơn bao giờ hết. Nếu dữ liệu cá nhân rơi vào tay kẻ xấu, người dùng có thể trở thành nạn nhân của việc gian lận và bị đánh cắp danh tính. Dưới đây là năm lời khuyên để bảo vệ quyền riêng tư dữ liệu cho người dùng.
11:00 | 13/05/2024
Trong lĩnh vực chữ ký số, lược đồ ký số dựa trên đường cong Elliptic (ECDSA) được đánh giá là một trong những lược đồ chữ ký số có độ an toàn cao, dù ra đời sau nhưng ECDSA đang dần được thay thế cho lược đồ ký số RSA. Bài báo này tập trung giới thiệu lược đồ ECDSA, ứng dụng của ECDSA trong thực tế và các tham số an toàn được khuyến nghị dùng cho ECDSA.
08:00 | 09/01/2024
Nhiều người trong chúng ta thường có thói quen chỉ để ý đến việc bảo vệ an toàn máy tính và điện thoại của mình nhưng lại thường không nhận ra rằng đồng hồ thông minh (ĐHTM) cũng có nguy cơ bị tấn công mạng. Mặc dù ĐHTM giống như một phụ kiện cho các thiết bị chính nhưng chúng thường được kết nối với điện thoại, máy tính cá nhân và có khả năng tải các ứng dụng trên mạng, cài đặt tệp APK hay truy cập Internet. Điều đó có nghĩa là rủi ro mất an toàn thông tin trước các cuộc tấn công của tin tặc là điều không tránh khỏi. Vậy nên để hạn chế những nguy cơ này, bài báo sau đây sẽ hướng dẫn người dùng cách sử dụng ĐHTM an toàn nhằm tránh việc bị tin tặc lợi dụng đánh cắp thông tin.
Trong thời đại ngày nay, cùng với sự phát triển của khoa học kỹ thuật có ngày càng nhiều những cuộc tấn công vào phần cứng và gây ra nhiều hậu quả nghiêm trọng. So với các loại tấn công khác, tấn công qua kênh kề đang được nghiên cứu do khả năng khôi phục lại khóa bí mật trong khi hệ thống vẫn hoạt động bình thường mà không hề làm thay đổi phần cứng. Bài báo này sẽ trình bày một cách sơ lược về những kết quả cuộc tấn công kênh kề lên mã hóa RSA cài đặt trên điện thoại thông minh sử dụng hệ điều hành Android tại Viện Khoa học - Công nghệ mật mã. Nhóm tác giả đã tấn công khôi phục được một phần khóa bí mật của mã hóa RSA cài đặt trên điện thoại thông minh và chứng minh khả năng rò rỉ thông tin qua kênh kề.
14:00 | 11/09/2024
Nhằm trang bị cho người dân “vũ khí” chống lừa đảo trên không gian mạng, Cục An toàn thông tin (Bộ TT&TT) triển khai chiến dịch quốc gia với 5 nhóm kỹ năng thiết yếu, từ nhận biết dấu hiệu lừa đảo đến xử lý tình huống khi bị tấn công.
10:00 | 18/10/2024