Find Hidden Process with windbg
Rootkit 최근 발견되는 해킹툴 대부분은 루트킷 기능을 포함하고 있습니다. 루트킷은 ActiveProcessLinks와 같은 커널 오브젝트를 수정하여 사용자로부터 프로세스를 숨기는 행위입니다. Windows 10 버전에서는 서명되지 않은 드라이버는 허용하지 않습니다. 그렇기에, 해킹툴 개발자들은 kdmapper와 같은 잘 알려진 드라이버 취약점...
Rootkit 최근 발견되는 해킹툴 대부분은 루트킷 기능을 포함하고 있습니다. 루트킷은 ActiveProcessLinks와 같은 커널 오브젝트를 수정하여 사용자로부터 프로세스를 숨기는 행위입니다. Windows 10 버전에서는 서명되지 않은 드라이버는 허용하지 않습니다. 그렇기에, 해킹툴 개발자들은 kdmapper와 같은 잘 알려진 드라이버 취약점...
Thread Environment Block TEB는 스레드에 대한 정보를 포함하고 있는 구조체입니다. 프로세스 가상 메모리 영역에 존재하며, NtCurrentTEB 함수를 통해 획득할 수 있습니다. 함수 내부에서는 Segment Register를 통해 TEB 주소를 획득합니다. // x86 architecture ntdll!NtdllNtCurren...
Process Environment Block PEB는 프로세스에 대한 정보를 포함하고 있는 구조체입니다. 프로세스 가상 메모리 영역에 존재하며, 다음과 같이 EPROCESS를 통해 PEB 주소 확인이 가능합니다. 19: kd> dt_eprocess nt!_EPROCESS +0x550 Peb : Ptr64 _PEB ...
RamMap 물리 메모리 영역에 대한 정보는 SysInternals RAMMap를 통해 확인할 수 있습니다. 현재 제 테스트 PC에서 사용 중인 물리 메모리 영역 정보는 다음과 같습니다. Start End Size 0x1000 0x9F000 ...
STATUS_SINGLE_STEP 최근 진행했던 과제에서 디버깅 시 프로세스가 종료되는 Anti-Debugging 기법을 확인하였습니다. 당시에 Debug Register를 통해 디버깅을 시도하였습니다. DebugAcitveProcess를 통해 Debug Object 또한 정상적으로 생성되는 부분을 확인하였고, 디버깅 과정에서 문제될 요소가 없었습니...
MDL (Memory Descriptor List) 가상 메모리 주소는 항상 연속적인 반면, 물리 메모리 주소는 연속성이 보장되지 않습니다. MDL은 이러한 불연속적인 물리 메모리 주소를 추적하는데 사용됩니다. 아래는 MSDN에서 설명하는 MDL에 대한 내용입니다. An I/O buffer that spans a range of contiguou...
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) 가장 ...