목록전체 글 (63)
ZZoMb1E_PWN
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※이번엔 SMEP, SMAP와 함께 KPTI 보호 기법을 우회하는 KROP를 다뤄보겠다. #!/bin/shqemu-system-x86_64 \ -m 64M \ -nographic \ -kernel bzImage \ -append "console=ttyS0 loglevel=3 oops=panic panic=-1 nopti nokaslr pti=on" \ -no-reboot \ -cpu qemu64,+smep,+smap \ -smp 1 \ -monitor /dev/null \ -initrd debugfs.cpio \ -net nic,model=virtio \ -net user \..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 유저 영역에서 ROP는 NX-BIT 보호 기법을 우회하기 위해서 사용했었다. 커널 영역에서의 ROP 역시 SMEP라는 보호기법을 우회하기 위해서 사용하는 기법이다. ROP를 수행하기 위해서는 '코드 조각'이라고 불리는 gadget을 찾아야 한다. 이를 위해 ROPgadget 이라는 툴을 사용해왔다. 이 툴의 경우 바이너리를 인자로 필요로 하고 있다. 하지만 지금까지 해온 커널 영역을 다루는 것은 .cgio 파일을 이용해서 실행 및 접속하는 것이다. 때문에 우리는 먼저 커널 바이너리를 추출해야 한다. #!/bin/sh# SPDX-License-Identifier: GPL-2.0-only# ------------------------..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ https://whrdud727.tistory.com/entry/KERNEL-Holstein-Module [KERNEL] Holstein Module※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Holsteinhttps://whrdud727.tistory.com/entry/KERNEL-Environment-Setting [KERNEL] Environment Setting※ 잘못된 부분이 있으면 알려주세요.whrdud727.tistory.com이전 게시글에서 Holstein 모듈을 활용하여 코드 분석 및 취약점을 확인했다. 취약점으로 RIP 를 조작할 수 있다는 사실을 활용하여 Exploit을 해보겠다..
보호되어 있는 글입니다.
Use After Free(UAF) 취약점은 메모리 할당 후 해제된 포인터를 여전히 사용할 때 발생하는 보안 취약점이다. 이는 메모리 관리에서 발생하는 오류로, 공격자는 이를 악용하여 프로그램의 비정상적인 동작을 유발하거나 임의의 코드를 실행할 수 있다. 메모리는 malloc 등을 통해 할당되고, free를 통해 해제된다. 해제된 메모리는 다른 용도로 재사용될 수 있다. 하지만 해제된 포인터가 계속 사용된다면, 이를 Dangling Pointer라고 한다. • 1단계: 메모리 할당 (malloc) • 2단계: 메모리 해제 (free) • 3단계: 해제된 포인터가 다시 사용됨 (Dangling Pointer) 할당된 청크의 data영역이 freed된 청크의 헤더 부분에 해당이 된다.즉, freed된 청크..
Memorry Allocator : 한정된 메모리 자원을 각 프로세스에 효율적으로 배분하는 작업을 한다.- 실행중에 메모리를 동적으로 할당 및 해제한다.- 구현에 따라 사용된 알고리즘의 종류가 달라진다 - ptmalloc2은 ubuntu에서 사용한다 ptmalloc2의 특징으로는 해제된 메모리에 대한 데이터를 지우지 않고 가지고 있다가비슷한 요청이 오면 반환해주는 특징이 있다. - 메모리 낭비 방지- 빠른 메모리 재사용 tcache 혹은 bin이라는 리스트를 사용한다.- 메모리 단편화 방식 단편화를 줄이기 위해 정렬, 병합, 분할을 사용한다. chunkptmalloc에 의해 할당된 공간으로 헤더 + 데이터 영역으로 구성되어 있다. 헤더에는 청크의 상태와 크기를 가리키기 때문에 사용중인 청크와 해제된..
FSOPFile Stream Oriented ProgrammingC의 표준 라이브러리인 libc에서 file stream의 내부 필드를 조작하여 악의적인 코드를 수행하는 공격 기법이다. libc에서 파일 스트림은 FILE 구조체로 관리되며, 이 구조체의 필드들은 파일 입출력 작업을 추상화한다.file stream 구조체 이해 : libc의 FILE 구조체를 분석하여 필드를 파악해야 한다. _IO_FILE : 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체이다.struct _IO_FILE_plus{FILE file; const struct _IO_jump_t *vtable;};struct _IO_FILE{ int _flags; char *_IO_read_ptr; char *_..