Virtual Address Descriptor
Virtual Address Descriptor Virtual Address Descriptor (VAD)는 프로세스의 가상 주소를 관리하는 데이터 구조입니다. VAD는 AVL 트리(_RTL_AVL_TREE) 구조로 이루어져 있으며, 가상 주소 범위 및 페이지 보호 속성 등을 포함하고 있습니다. AVL Tree Adelson-Velsky and...
Virtual Address Descriptor Virtual Address Descriptor (VAD)는 프로세스의 가상 주소를 관리하는 데이터 구조입니다. VAD는 AVL 트리(_RTL_AVL_TREE) 구조로 이루어져 있으며, 가상 주소 범위 및 페이지 보호 속성 등을 포함하고 있습니다. AVL Tree Adelson-Velsky and...
pte-protect 해당 글에서는 PTE 조작을 통해 PAGE_EXECUTE 권한이 없는 코드를 실행하고, 유저 레벨에서 메모리를 숨기는 anti-cheat bypass 기술을 리뷰합니다. PTE의 nx 비트를 변경 시, 아래 사진과 같이 PAGE_EXECUTE 권한이 존재하지 않더라도 코드 실행이 가능합니다. VAD에는 변경 전 정보가 남아 있기...
Hyper-V Hyper-V는 Windows 10 이상부터 OS에서 지원하는 가상 머신입니다. 가상화 타입1(Bare-Metal)에 해당하기 때문에 높은 성능, 빠른 속도를 자랑합니다. 다음과 같이 [Windows 기능 켜기/끄기]를 통해 Hyper-V를 활성화하여 사용합니다. Create a virtual machine in Hyper-V Hy...
Intel 4-level paging 해당 글에서는 Intel x86-64 프로세서에서 가상 주소가 물리 주소로 변환되는 상세과정을 리뷰합니다. 가상 메모리는 다음과 같이 4단계를 거쳐서 물리 메모리 주소로 변환되며, 이러한 과정을 Intel 4-level paging이라고 표현합니다. DirBase (DirectoryTableBase) 가장 ...
Converting Virtual Addresses to Physical Addresses 해당 글에서는 Windbg를 통해 가상 메모리 주소를 물리 메모리 주소로 변환하는 방법을 리뷰합니다. 물리 메모리를 확인하기 위해서는 전체 메모리 덤프 파일이 필요합니다. 다음과 같은 시스템 설정을 통해 전체 메모리를 덤프합니다. Virtual addres...
HyperDbg HyperDbg는 Intel EPT를 활용하여 사용자에게 보이지 않는 Stealth hook을 실행가능한 오픈소스 디버거입니다. 커널 및 유저레벨 디버깅을 모두 지원합니다. Disable DSE HyperDbg는 vmm이라는 서명되지 않은 드라이버 파일을 로드합니다. 해당 파일을 실행하기 위해서는 테스트모드 또는 DSE 기능을 비활...
Hidden Files 해킹툴을 분석하다보면 탐색기를 통해 보이지 않는 파일이 종종 발견됩니다. 해당 글에서 소개하는 핵툴 또한 windir 경로에 숨겨진 파일(mrt100.dll)을 생성합니다. 해당 파일은 윈도우 탐색기에서 숨긴 항목 기능을 활성화하여도 보이지 않습니다. attrib.exe 생성된 경로로 이동하여 dir 명령을 통해 확인해보...
STATUS_UNSUCCESSFUL (0xC0000001) OpenProcess를 호출하면 0xC0000001를 반환하며 실패하는 해킹툴이 발견되었습니다. 다음과 같이 NtOpenProcess 시스콜 이후에 실패하고 있으며, 이를 봤을 때 커널 레벨에서 조작된 것을 추측할 수 있습니다. 해당 값은 MS-ERREF 문서에 나와있는데 요청이 실패한 ...
STATUS_PROCESS_IS_TERMINATING (C000010A) 해당 핵툴은 원격 스레드 생성 시, NtCreateThread 시스템콜 단계에서 0xC000010A를 반환하며 실패합니다. 또한 프로세스가 종료되지 않습니다. 해당 값은 MS-ERREF 문서에 나와있는데 이전에 프로세스가 종료를 시도했음을 나타냅니다. 현재 종료 중이거나, 이...
STATUS_OBJECT_TYPE_MISMATCH (C0000024) OpenProcess를 호출하면 0xC0000024를 반환하며 실패하는 해킹툴이 발견되었습니다. 다음과 같이 NtOpenProcess 시스콜 이후에 실패하고 있으며, 이를 봤을 때 커널 레벨에서 조작된 것을 추측할 수 있습니다. 해당 값은 MS-ERREF 문서에 나와있는데 요청...