[Dreamhack] DreamSanta's Present
문제 링크 https://dreamhack.io/wargame/challenges/404 문제 설명 크리스마스 기념 드림산타가 선물을 준비했어요!! 취약점, 플래그, 쉘도 맘대로 준다던데..? 문제 분석 1번 메뉴를 이용하면 gets 함수를 이용하여 입력할 수 있어 스택 버퍼 오버플로우가 발생한다. 하지만 canary, l...
문제 링크 https://dreamhack.io/wargame/challenges/404 문제 설명 크리스마스 기념 드림산타가 선물을 준비했어요!! 취약점, 플래그, 쉘도 맘대로 준다던데..? 문제 분석 1번 메뉴를 이용하면 gets 함수를 이용하여 입력할 수 있어 스택 버퍼 오버플로우가 발생한다. 하지만 canary, l...
윈도우는 디바이스 가드와 자격증명 가드 같은 새로운 가상화 기반의 보안 기능을 가진다. 이들은 하이퍼바이저를 이용해 운영체제와 유저 데이터의 안전성을 향상시킨다. 이러한 환경은 여전히 비특권 상태(Ring 3)이지만 가상 신뢰 레벨 1(VTL 1)을 가지며, NT 커널(Ring 0)과 애플리케이션(Ring 3) 둘 다가 살아가는 일반적인 VTL 0...
윈도우 보안 모델에서 디버그 특권(관리자 계정 등)을 가진 토큰으로 실행하는 프로세스는 해당 머신에서 실행 중인 다른 프로세스에게 자신이 원하는 어떤 접근 권한이든 요청할 수 있다. 다른 프로세스의 메모리에 접근해 읽기/쓰기 코드 인젝션 스레드 일시 중지/재실행 프로세스 정보 얻기 ...
최소 프로세스 NtCreateProcessEx 함수에 특별한 플래그가 지정되어 있고, 호출자가 커널 모드에 있으면 이 함수는 조금 다르게 동작해 PsCreateMinimalProcess API의 실행을 유발한다. PsCreateMinimalProcess는 다음과 같은 부분 없이 프로세스를 생성한다. 유저 모드 주소 공간이 ...
_IO_FILE 구조체 _IO_FILE 구조체는 리눅스 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체이며, 파일을 열기 위한 fopen 함수를 호출했을 때 힙 영역에 할당된다. struct _IO_FILE_plus { FILE file; const struct _IO_jump_t *vtable; }; struct _IO...
RELRO 메모리 보호 기법 중 RELRO(RELocate Read-Only)라는 것이 있다. 이는 쓰기 권한이 불필요한 데이터 영역에 쓰기 권한을 제거한다. RELRO 적용 대상 중 유심히 여겨봐야 할 것은 GOT(Global Offset Table)이다. 현대의 바이너리 실행 환경에서는 ASLR(Address Space...
커널 커널은 기본 메커니즘을 제공하는 ntoskrnl.exe 내의 함수 집합으로 구성된다. 이들 함수에는 익스큐티브 컴포넌트에 의해 사용되는 스레드 스케줄링과 동기화 서비스 및 각 프로세서 아키텍처별로 다른 인터럽트와 예외 디스패칭 같은 저수준 하드웨어 아키텍처 종속적인 지원이 해당된다. 커널 코드는 주로 C로 작성...
유저 모드와 커널 모드 간의 구분은 유저 모드로부터 OS에 대한 보호를 제공한다. == 모든 커널 코드는 전체 시스템에 완전히 접근할 수 있다. 바람직하지 않은 커널 모드 코드가 시스템에 침투한다면 시스템은 기본적으로 위태롭게 된다. 패치가 이뤄지지 않은 커널이나 드라이버 취약점 등. 공격에 ...
핵심 윈도우 시스템 아키텍처와 컴포넌트에 대한 좀 더 상세하고 완전한 다이어그램 환경 서브시스템과 서브시스템 DLL 환경 서브시스템의 역할은 기본 윈도우 익스큐티브 시스템 서비스의 일부분을 애플리케이션에 공개하는 것이다. 각 서브시스템은 윈도우의 네이티브 서비스에 대한 다른 부분집합을 제공할 수 있다. ...
아키텍처 개요 아키텍처의 단순화된 버전을 살펴보자. 윈도우 OS의 유저 모드와 커널 모드를 선으로 구분하고 있다. 유저 모드 스레드는 개별 프로세스 주소 공간에서 실행된다. 시스템 프로세스와 서비스 프로세스, 유저 애플리케이션, 환경 서브 시스템은 각기 고유한 개별 프로세스 주소 공간을 가진다. ...