[P1] Cách mà mã độc hiện đại hoạt động.

0 0 0

Người đăng: Tiến Đạt Spycio Vũ

Theo Viblo Asia

Mở bài

Dạo gần đây mình có tìm hiểu về mã độc lây file (file infector virus) cũng như WinAPI. Để củng cố kiến thức và chia sẻ đến cộng đồng, mình sẽ hướng dẫn mọi người cách mà mã động sẽ thực hiện như nào qua 3 phần.

image.png

LƯU Ý: Bài viết này chỉ để hướng dẫn cho mục đích học tập và sẽ không chịu trách nhiệm cho bất cứ hành vi vi phạm pháp luật nào cả.

TỔNG QUAN VỀ MÃ ĐỘC LÂY FILE

1. Mã độc lây file (file infector virus) là gì?

  • Mã độc lây file là một loại virus máy tính lây nhiễm vào các file thực thi trên môi trường Windows như: .exe, .com, .dll,... hoặc ở trong môi trường Unix là các file như: .bin, .out. Khi file bị lây nhiễm thực thi, virus cũng được kích hoạt và từ đó có thể lây lan tiếp sang những file chưa bị nhiễm.

2. Các hành vi độc hại.

  • Tìm kiếm nạn nhân: Mã độc sẽ chạy 1 module tìm kiếm các file trên hệ thống chưa bị nhiễm để đưa sang module lây nhiễm
  • Lây nhiễm: Sau khi đã có file, mã độc sẽ tiến hành inject các đoạn mã đôc hại của nó vào file đích
  • Tự lây lan/ mở rộng: Sau khi đã chèn đoạn mã độc hại của nó vào, từ một file chưa bị nhiễm đã biến thành một file độc hại khác. Ngoài ra mã độc cũng sẽ lây lan qua các ổ USB, hoặc qua mạng LAN.
  • Thực hiện hành vi độc hại khác: Phụ thuộc vào kĩ thuật của kẻ tấn công mà sẽ có nhiều vector tấn công khác nhau như thu thập dữ liệu người dùng, mã hóa file, keylogger,...

3. Dấu hiệu bất thường.

  • Các file .exe bị thay đổi thời gian sửa, kích thước file tăng lên cũng là một dấu hiệu
  • Các chương trình gốc bị crash, hoạt động lạ -Antivirus cảnh báo liên tục -File lạ xuất hiện trên hệ thống

DEMO CODE DUYỆT FILE VỚI C VÀ WINAPI

#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <stdio.h>
#include <string> void ListFilesTree(const char* folderPath, int indent) { WIN32_FIND_DATAA findData; HANDLE hFind; char searchPath[MAX_PATH]; char fullPath[MAX_PATH]; snprintf(searchPath, MAX_PATH, "%s\\*", folderPath); hFind = FindFirstFileA(searchPath, &findData); if (hFind == INVALID_HANDLE_VALUE) { return; } do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; snprintf(fullPath, MAX_PATH, "%s\\%s", folderPath, findData.cFileName); for (int i = 0; i < indent; ++i) { printf(" "); } if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf("[D] %s\n", findData.cFileName); ListFilesTree(fullPath, indent + 1); } else { printf("[F] %s\n", findData.cFileName); } } while (FindNextFileA(hFind, &findData)); FindClose(hFind);
} int main() { //inject("test.exe"); const char* root = "C:\\Users\\Zlick3r\\Downloads\\d3model"; // Đường dẫn gốc printf("Cây thư mục tại: %s\n", root); ListFilesTree(root, 0);
} 

image.png

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tạo ứng dụng trở nên pro hơn khi sử dụng gem clamby và service Clamav

Xin chào mọi người, chắc hẳn mọi người đều làm qua chức năng upload file trên một hệ thống nào đó. Để nâng cấp tính năng upload của mình pro hơn, nay mình sẽ giới thiệu mọi người cách check file upload có chứa virus, tránh gây nguy hiểm cho server của mình.

0 0 46

- vừa được xem lúc

Series tìm hiểu về các phần mềm độc hại xưa và nay (phần 1)

Hưởng ứng sự kiện MayFest2022 của Viblo thì mình cũng muốn làm một series dài dài về các phần mềm độc hại để mọi người có thể dễ follow và tìm đọc. I.

0 0 44

- vừa được xem lúc

Cách loại bỏ mã độc kdevtmpfsi và kinsing

Server đã được phát triển và chạy ổn định trên EC2 được vài tháng rồi. Một tuần trước khách hàng yêu cầu chuyển từ EC2 qua digitalocean( DO), nghe bảo là vì có thể giảm 20% chi phí.

0 0 30

- vừa được xem lúc

Cách khắc phục USB lỗi không hiển thị dữ liệu

Một ngày đẹp trời USB chỉ hiện shortcut, không thấy dữ liệu – rất có khả năng là do USB bị nhiễm virus Autorun. Virus này thường ẩn toàn bộ dữ liệu thật và chỉ hiện ra một shortcut giả.

0 0 2

- vừa được xem lúc

Hướng dẫn finetune mô hình LLM đơn giản và miễn phí với Unsloth

Chào mừng các bạn đến với bài viết hướng dẫn chi tiết cách finetune (tinh chỉnh) một mô hình ngôn ngữ lớn (LLM) một cách đơn giản và hoàn toàn miễn phí sử dụng thư viện Unsloth. Trong bài viết này, ch

0 0 8

- vừa được xem lúc

SERIES INDEX NÂNG CAO - BÀI 1: PHÂN TÍCH NHỮNG SAI LẦM PHỔ BIẾN KHI SỬ DỤNG INDEX TRONG MYSQL

Nếu anh em thấy hay thì ủng hộ tôi 1 follow + 1 upvote + 1 bookmark + 1 comment cho bài viết này tại Mayfest 2025 nhé. Còn nếu bài viết chưa hữu ích thì tôi cũng hi vọng anh em để lại những góp ý thẳn

0 0 8