분류 전체보기 8

Syscall - implement

C 언어에서 syscall 호출하는 방법을 알아보겠습니다.방법 1: NTDLL.dll EXPORT 함수 직접 호출가장 간단한 방법입니다. NTDLL.dll 이 export 하는 Nt*/Zw* 함수를 직접 선언하고 호출합니다.NTDLL.dll 은 프로세스 로드 시 자동으로 메모리에 매핑되므로 별도의 LoadLibrary가 필요 없습니다.#include #include #define NTSTATUS LONG#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)typedef NTSTATUS (fnNtAllocateVirtualMemory)( HANDLE ProcessHandle, PVOID *BaseAddress, ULONG ..

IT 2026.06.10

Syscall - 커널의 소통 창구

Syscall은 사용자 프로그램(User mode, Ring 3)이 운영체제의 핵심 기능(Kernel mode, Ring 0)에 접근하기 위한 공식적인 진입점 입니다. 운영체제의 커널은 보호된 영역에서 동작합니다. 애플리케이션이 파일 I/O, 메모리 할당, 프로세스 생성, 네트워킹 등의 커널 기능을 사용하려면 특수한 CPU 명령어를 통해 Ring3 -> Ring0로 전환해야 하는데, 이 전환 메커니즘이 바로 Syscall입니다.Linux에서는 syscall/sysenter 명령어로 직접 커널 테이블을 참조하지만, Windows에서는 Native API 라는 계층화된 구조를 통해 접근합니다.Windows 의 API 계층 구조Windows는 운영체제 기능을 노출하는데 세 가지 주요 계층을 사용합니다. 각 계..

IT 2026.06.03

IAT Hiding

IAT(Import Address Table) 이란, 사용된 함수와 이를 내보내는 DLL과 같은 PE 파일에 관한 정보가 포합되어 있는 표입니다.이러한 정보는 signature가 될수 있고, 또한 detect될 수 있기 때문에 IAT 에서 사용된 함수를 숨기는 작업을 해보겠습니다.IATPE(Portable Excutable)헤더란, 32-bit, 64-bit windows 운영체제에서 사용되는 file format의 헤더를 의미합니다.ex) .exe, .dll이 PE 헤더에는 IAT라는 table이 있는데 이 table에 앞서 설명드린 프로그램에서 사용되는 함수의 목록과 DLL의 정보가 있습니다.PeParser로 뜯어본 IAT입니다. GetProcAddress 같은 함수들이 보입니다.EDR은 이 IAT를..

IT 2026.05.30

Classic APC Injection

APC(Asynchronous Procedure Call) 이란, Windows Thread 가 대기 상태에서 사용자 정의 함수를 실행할 수 있는 메커니즘 입니다.이 기능을 이용해 타겟 스레드 컨텍스트에서 쉘코드를 실행시키는 기법이 APC Injection 입니다.APC(Asynchronous Procedure Call)모든 Thread가 APC function을 실행할 수 있는 것은 아닙니다.Alertable state에 있는 Thread만 APC function을 실행할 수 있습니다.Alertable state thread 는 대기 상태의 Thread를 의미합니다. Thread가 alertable state에 들어가면 Alertable thread queue에 들어가고, queue된 APC funct..

IT 2026.05.25

API Hooking with Custom structure

API Hooking 을 진행하는데 있어 여러가지 methods 가 있지만, 오늘은 Custom Structure를 이용해 API hooking을 해보겠습니다.Custom Structuretypedef struct _HookSt { PVOID pFunctionToHook; PVOID pFunctionToRun; BYTE pOriginalBytes[TRAMPOLINE_SIZE]; DWORD dwOldProtection;} HookSt, *PHookSt;우선, 보다 쉽게 구현하기 위해 structure를 만들어 줍니다.PVOID pFunctionToHook - hooking할 function의 주소입니다.PVOID pFunctionToRun - 실행할 function의 주소입니다.BYTE OriginalBy..

IT 2026.05.24

API Hooking feat.DF

API Hooking 에 대하여API Hooking 이란, API 함수를 가로채어 조작하는 기술을 말합니다.일반적으로 디버깅, 리버스 엔지니어링, 게임 치트 를 하는데 쓰입니다.API Hooking 은 본래의 implementation에 동작을 추가하거나 변형하여 원래 수행해야할 동작을 하지 못하게 하거나, 보완하여 동작하게 합니다. Trampoline전통적인 API Hooking을 수행하는 방법입니다. Trampoline은 특정한 코드 구역으로 jumping 하는 shellcode를 말합니다.Trampoline의 shellcode가 함수의 시작에 삽입되어 있으면, 그 함수는 hooked 됩니다.hooked된 함수가 호출되면, trampoline shellcode가 대신 동작합니다. 그리고 실행 흐름이 ..

IT 2026.05.21

- 자작 C2 서버 제작기 -

간단한 C2 서버를 LLM 을 활용해 제작해보았다.LLM 모델은 qwen3.6_35b_a3b_q8. 이 모델을 활용해 c2 서버를 제작해 보았습니다.HTTP-polling 기반의 명령-응답 구조이며, agent는 macOS, Windows 를 지원합니다.1. 통신 계층// common.c:161header_len = snprintf(header_buf, sizeof(header_buf), "%s %s HTTP/1.0\r\n" "Host: %s\r\n" "Content-Type: application/json\r\n" "Content-Length: %d\r\n" "\r\n", method, path, host_header, (int)strlen(body));HTTP/1.0 ..

IT/Hack 2026.05.13