BLOG ĐANG TRONG THỜI GIAN PHÁT TRIỂN, MONG SỰ QUAN TÂM CỦA MỌI NGƯỜI DÀNH CHO BLOG MỚI NÀY CỦA HUNG.PRO.VN

KỸ THUẬT NÉ TRÁNH ANTIVIRUS TINH VI - RETURN ADDRESS SPOOFING

KỸ THUẬT NÉ TRÁNH ANTIVIRUS TINH VI - RETURN ADDRESS SPOOFING, kỷ thuật né tránh antivirus tinh vi nhất thời buổi công nghệ đi lên
3 min read
Trong cuộc chiến không hồi kết giữa Red Team và các giải pháp bảo mật như Antivirus (AV) & Endpoint Detection and Response (EDR), mọi hành vi bất thường đều bị giám sát nghiêm ngặt. Nhưng nếu có cách để "tàng hình", giả mạo dấu vết và đánh lừa hệ thống giám sát thì đó là lúc Return Address Spoofing (Giả mạo địa chỉ trả về) phát huy tác dụng.

(Bài viết dựa vào post của HulkOps - ib để lấy link và ref liên quan vì gr hạn chế dán link)

1. Tại sao kỹ thuật này quan trọng?

Các giải pháp bảo mật phát hiện mã độc bằng cách theo dõi call stack, tức là kiểm tra nguồn gốc của các lời gọi API hệ thống. Nếu một API quan trọng như InternetConnectA hay VirtualAlloc được gọi từ một vùng nhớ không xác thực (ví dụ: shellcode trong heap), khả năng cao nó sẽ bị gắn cờ là mã độc và bị chặn ngay lập tức.
Tuy nhiên, nếu có thể làm cho AV tin rằng API này được gọi từ một DLL hợp lệ như KERNEL32.DLL, hành vi độc hại sẽ trở nên hợp pháp trong mắt hệ thống bảo vệ. Đây chính là nguyên lý hoạt động của Return Address Spoofing.

2. Cơ chế hoạt động của Return Address Spoofing

Thông thường, khi một API được gọi, hệ điều hành sẽ lưu địa chỉ trả về trên stack – đây là địa chỉ mà chương trình sẽ tiếp tục thực thi sau khi API hoàn thành.

Kỹ thuật đánh lừa Antivirus

Xác định gadget phù hợp – Một gadget là một đoạn mã hợp lệ trong một DLL tin cậy (ví dụ: KERNEL32.DLL), có thể giúp điều hướng luồng thực thi.

Sửa đổi địa chỉ trả về – Thay vì quay lại shellcode, địa chỉ trả về được sửa thành gadget trong DLL tin cậy. Điều hướng luồng thực thi – Khi API hoàn tất, nó sẽ quay về địa chỉ hợp lệ trong DLL, nhưng thực chất, luồng thực thi đã được chuyển hướng về shellcode.

🔥 Kết quả? Công cụ giám sát sẽ chỉ thấy một API được gọi từ một DLL hợp lệ – không có dấu hiệu bất thường!

3. Ví dụ thực tế: Chạy shellcode mà không bị phát hiện

📌 Kịch bản: Chúng ta muốn thực thi shellcode mà không bị EDR phát hiện.
🔧 Cách thực hiện:
Sử dụng VirtualAlloc để cấp phát bộ nhớ cho shellcode.
Xác định một gadget trong KERNEL32.DLL có thể chuyển hướng luồng thực thi.
Sửa đổi địa chỉ trả về để khiến EDR tin rằng API được gọi từ vùng hợp lệ.
Profit! 🎉
#include <Windows.h>
#include <stdio.h>
unsigned char shellcode[] = { 0x57,0x48,0x89,0xe7,0x48,0x83,0xe4,0xf };
int main() {
UINT64 pAddr;
HANDLE hThread;
pAddr = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
memcpy(pAddr, shellcode, sizeof(shellcode));
hThread = CreateThread(NULL, 0x00, pAddr, NULL, 0x00, NULL);
WaitForSingleObject(hThread, INFINITE);
}

🔍 Khi kiểm tra bằng debugger, địa chỉ trả về sẽ được ngụy trang, giúp shellcode thực thi mà không bị phát hiện!

4. Ứng dụng thực tế của kỹ thuật này

✔ Red Teaming & Penetration Testing:

Tránh bị phát hiện khi thực thi payload trên hệ thống mục tiêu.
Giúp mã độc tồn tại lâu hơn bằng cách ngụy trang hành vi đáng ngờ.

✔ Malware Evasion:

Kỹ thuật này có thể được tận dụng để vượt qua các giải pháp Antivirus & EDR tiên tiến.

✔ Bypass Exploit Mitigations:

Một số cơ chế bảo vệ như Control Flow Guard (CFG) có thể bị vô hiệu hóa thông qua kỹ thuật này.

5. Hạn chế và phòng chống

🔴 Hạn chế: Một số EDR tiên tiến vẫn có thể phát hiện bất thường trong call stack.

🔴 Cách phòng chống:
Giám sát sự thay đổi bất thường trong call stack để phát hiện hành vi giả mạo.
Áp dụng Control Flow Integrity (CFI) để ngăn chặn các cuộc tấn công kiểu này.

6. Kết luận

🔥 Return Address Spoofing là một kỹ thuật mạnh mẽ để né tránh Antivirus & EDR, nhưng cũng là một con dao hai lưỡi. Trong tay Red Team, nó giúp kiểm thử bảo mật hiệu quả. Trong tay kẻ tấn công, nó là một vũ khí nguy hiểm.

💡 Tìm hiểu thêm hoặc thử nghiệm mã nguồn tại: GitHub - ib để lấy link chi tiết do group hạn chế dán link

Bạn có thể thích những bài đăng này

2 nhận xét

  1. second ago
    test comment
    1. second ago
      Mình đã add phân biệt nhận xét của những người quản trị blog rồi nhé, mọi người lưu ý nhận biết để tránh bị lừa nhé. tks
Hung Pro Blog @ 2025
Chia sẽ kiến thức và tư duy sáng tạo về nhiều ngôn ngữ lập trình khác nhau. Csharp, Visual Studio, Blogger, HTML, Javascript, CSS..v.v
Developed by Jago Desain