System Hacking Advanced

System Hacking Advanced

kernel 해킹 초심자를 위한 KernelTool

kernel 해킹 초심자를 위한 KernelTool안녕하세요. 오랜만에 블로그 글로 돌아온 keyme입니다~! 최근에 워게임/CTF 푸는 빈도가 많이 줄긴 했지만.. 그래도 kernel exploit 관련해서 관심이 생겨서 개인적으로 시간을 투자해서 공부했었는데요. 저처럼 커널 익스에 관심이 있거나 이제 막 시작하시는 분들을 위한 툴을 소개하고자 합니다. KernelTool이라는 프로그램인데요. 커널 익스 관련 문제를 풀다보면 환경 구축 과정에서 귀찮음이 많이 따릅니다.주어진 파일 시스템 추출/병합gdb로 심볼과 함께 attach하여 분석vmlinux가 없는 경우 bzImage를 통해 vmlinux(심볼 없는)를 획득등등..https://github.com/kmm2003/KernelTool GitHub ..

System Hacking Advanced

SSP(Stack Smashing Protector)

SSP(Stack Smashing Protector)SSP는 BOF를 방어하기 위한 보호기법 중 하나로 함수를 실행할 때, canary라는 랜덤 값을 스택에 추가하여 BOF로 스택 데이터가 변조됐는지 확인하는 방법이다. canary가 변조된 경우는 스택 데이터가 변조됐다고 판단하고 프로그램을 종료한다. └─# checksec ssp_chk [*] '/root/ssp_chk' Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)SSP가 바이너리에 적용됐는지 확인하는 방법은 checksec 명령을 이용하는 방법이다.“..

System Hacking Advanced

ROP(Return Oriented Programming)

ROP(Return Oriented Programming)ROP는 ASLR과 같은 메모리 보호기법을 우회하기 위한 공격기법으로 return이 포함된 코드 조각들인 가젯들을 이용해 system(“/bin/bash”)를 실행하는 프로그램을 해커가 임의로 만들어서 root의 권한을 얻어내는 해킹 기법이다. ROP 이해를 위한 예제를 준비했다. ROP 체인으로 setresuid(0,0,0)와 system("/bin/sh")를 연속으로 실행하는 예제를 이해해보자. 대표적으로 자주 사용하는 pop rdi; ret 가젯과 pop rsi; pop rdx; ret 가젯을 활용한 예제다. BOF로 스택에 가젯과 인자들을 덮어썼다는 전제로 만든 메모리 구조다. 가젯이 실행될 때마다 스택이 어떻게 바뀌는지 확인해보자. 함수가..

System Hacking Advanced

Tcache Poisoning

Tcache PoisoningDouble Free Bug를 이용하여 tcache_entry를 조작하고 이미 할당된 메모리에 다시 힙 청크를 할당하는 공격 기법이다. tcache에서 사용하는 tcache_put과 tcache_get 함수에서는 old와 p를 검증하지 않기 때문에 한 개의 청크를 연속으로 해제할 수 있다.참고로 GLIBC 2.26과 2.29 이상의 버전에서는 DFB를 검증하는 로직이 추가됐다. 기본적으로 크기가 32byte ~ 1040byte 크기를 갖는 청크들의 경우에는 tcache에 보관한다. tcache poisoning을 이해하기 위해서는 청크 개념을 알아야 한다. [사진]의 왼쪽은 alloc 청크, 오른쪽은 free 청크다. 차이점은 alloc 청크에서는 data를 담는 부분이 fr..

System Hacking Advanced

Use After Free (UAF)

Use After Free (UAF)Use After Free (UAF) 취약점은 프로그램이 메모리를 해제한 후에도 해당 메모리 위치를 계속 사용하는 경우 발생하는 보안 취약점이다. 운영 체제는 메모리를 효율적으로 사용하기 위해 동일한 크기의 메모리를 재할당할 때 종종 이전에 해제된 메모리 영역을 재사용한다. 만약 메모리를 해제하는 과정에서 데이터가 제대로 지워지지 않으면, 재할당된 포인터가 이전 데이터를 참조하게 되어 문제가 발생한다. 다음은 UAF 취약점을 설명하는 간단한 C++ 예제다.#include #include class Vulnerable {public: char* data; Vulnerable(size_t size) { data = new char[size]; ..

System Hacking Advanced

시스템 해킹 유저를 위한 PwnDocker

시스템 해킹 유저를 위한 PwnDocker안녕하세요. 오랜만에 게시글로 돌아온 "keyme"입니다. 요즘 pwnable에 빠져서 열심히 학습하고 있는데요. pwnable을 공부하면서 느낀점은 ubuntu 환경을 구축해서 동적디버깅하는 것이 필수라는 것입니다. 따라서 ubuntu 버전 별로 환경을 구축하는 방법을 고민했고 Docker로 구축하는 것이 가장 간편하다는 것을 깨달았습니다. 이번 글은 pwnable을 공부하시는 분들을 위해 ubuntu 버전 별로 Dockerfile을 공유하고자 작성했습니다. 다른 분들의 글도 참고했으나, 과거에 쓰신 것들이라 에러가 발생하는 경우도 있었고 개인적으로 추가하고 싶은 툴들도 있어서 추가/수정해서 신규 버전으로 업데이트 했습니다. 추가로 docker 명령어로 buil..

keyme
'System Hacking Advanced' 카테고리의 글 목록