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

Bypass AV Hook - Direct Syscall

0 0 2

Người đăng: Vương Lê

Theo Viblo Asia

Bypass AV Hooking with Direct Syscall

Table of Content

  1. [Giới thiệu]
  2. [WinAPI Hooking]
  3. [Lấy mã máy syscall API]
  4. [Setup VS2022 để code ASM]
  5. [Code]

Giới thiệu

Khi viết mã độc trên Windows, điều chúng ta sử dụng các WinAPI là không thể tránh khỏi. Tuy nhiên việc sử dụng các API cần phải thực hiện 1 cách lén lút nếu không sẽ rất dễ dàng bị các trình AV phát hiện. Một trong những kĩ thuật để phát hiện hành vi của các API mà AV sử dụng đó là Hook API. Bài viết sẽ giải thích cách Hook API hoạt động và làm sao để bypass việc Hook của AV bằng Direct Syscall.

WinAPI Hooking

Khi 1 chương trình gọi đến API, nó thực hiện các bước theo sơ đồ dưới đây.

Tuy nhiên, 1 số API sử dụng cơ chế Hook để theo dõi xem API . Cơ chế hook API ở userland mình để link blog của iredteam tại đây: https://www.ired.team/offensive-security/code-injection-process-injection/how-to-hook-windows-api-using-c++.

Để bypass quá trình này, chúng ta có thể sử dụng kĩ thuật unhook dựa vào kĩ thuật hook của iredteam ở trên, hoặc gọi thẳng syscall tại kernelland.

Lấy mã máy syscall API

Để xem mã máy của API, mình mở 1 tiến trình bất kì rồi thực hiện debug tiến trình đấy, mình sẽ thử tìm mã máy của WriteProcessMemory, hay NtWriteVirtualMemory trong ntdll.dll

0:031> u NtWriteVirtualMemory
ntdll!NtWriteVirtualMemory:
00007fff`efd8d710 4c8bd1 mov r10,rcx
00007fff`efd8d713 b83a000000 mov eax,3Ah
00007fff`efd8d718 f604250803fe7f01 test byte ptr [SharedUserData+0x308 (00000000`7ffe0308)],1
00007fff`efd8d720 7503 jne ntdll!NtWriteVirtualMemory+0x15 (00007fff`efd8d725)
00007fff`efd8d722 0f05 syscall
00007fff`efd8d724 c3 ret
00007fff`efd8d725 cd2e int 2Eh
00007fff`efd8d727 c3 ret

Thực tế chúng ta chỉ cần quan tâm đến phần mã sau, đây là phần mã gọi syscall để thực hiện API

mov r10,rcx
mov eax,3Ah
syscall
ret

Lưu ý: Tham số đầu vào của hàm sẽ lấy theo tham số của NtWriteVirtualMemory

Setup VS2022 để code ASM

Để có thể biên dịch và chạy mã máy trên VS2022 chúng ta cần setup 1 số thứ như sau:

Chuột phải vào Project -> Build Dependencies -> Build Customizations => Tích vào masm

Sau đó tạo 1 file .asm để lưu mã syscall, chuột phải vào file, chọn Properties, sửa Item type thành Microsoft Macro Assembler

Code

Đây là phần code của file syscall.asm

syscall.asm

.code SysNtWriteVirtualMemory proc mov r10,rcx mov eax,3Ah syscall ret SysNtWriteVirtualMemory endp
end

main.c

#include <Windows.h>
//Signature of NtWriteVirtualMemory
EXTERN_C NTSTATUS SysNtWriteVirtualMemory( HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG BufferLength, PULONG ReturnLength
); int main() { SysNtReadVirtualMemory(ProcessHandle, (PVOID)address2read, &buffer, 8, &byteRead); return 0;
} 

Tham số của hàm trên là giả, nhưng cách sử dụng về cơ bản là như vậy. Sử dụng phương pháp sẽ giúp chúng ta bỏ qua được hook của 1 số AV. Tuy nhiên phương pháp này vẫn có thể bị phát hiện bởi kĩ thuật Nirvana Debugging mà mình sẽ nói đến tại phần sau.

Bình luận

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

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

Tạo ra virus bằng tool (Part1)

Virus. Tác hại của nó để lại cũng nặng nề:. . Gây khó chịu cho chúng ta là tác hại đầu tiên.

0 0 33

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

Phân loại mã độc hiện nay

Trong tài liệu của NIST có một số khác biệt theo định nghĩa và cách hiểu thông thường về Virus máy tính đang thông dụng. Ngay trong tên của tài liệu đã nêu lên sự khác biệt, các tác giả nói tới “Malwa

0 0 45

- 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 28

- 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 2)

I. Giới thiệu.

0 0 21

- 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 3)

I. Mở đầu.

0 0 24

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

☠️🧪 Thử độc: mã độc Android có đáng sợ? 🤮

Dạo gần đây Netflix đã công chiếu bộ phim Unlocked, kể về quá trình một tên sát nhân hàng loạt điều tra về các nạn nhân và cài phần mềm mã độc gián điệp vào điện thoại của họ. Với phần mềm đó, tên sát

0 0 11