system hacking

System Hacking Advanced

[dreamhack] __environ

개념정리프로세스는 환경 변수 정보를 저장하고, 필요할 때마다 불러와서 사용한다. 환경 변수 (Environment Variable)는 매번 변할 수 있는 동적인 값들의 모임으로, 시스템의 정보를 갖고 있는 변수다. 사용자가 직접 추가 및 수정하거나 삭제할 수 있는 값으로 리눅스에서 제공하는 명령어들은 “/bin”, “/usr/bin” 등의 디렉터리에 위치한다. 명령어를 입력하면 환경 변수에 명시된 디렉터리에서 명령어를 탐색하고, 실행하기 때문에 명령어의 경로를 입력하지 않아도 된다. 환경 변수는 터미널 뿐만 아니라 프로그램에서도 참조한다. 프로그램에서도 명령어를 실행해야 하는 경우가 종종 있으며, 절대 경로를 입력하지 않아도 명령어를 실행할 수 있다. 이 또한 프로세스를 로드하면서 환경 변수를 초기화하기..

System Hacking Advanced

[dreamhack] Overwrite _rtld_global

개념정리프로그램이 실행되고 프로세스로 등록될 때, 프로그램에 명시된 코드 뿐만이 아니라 프로그램에서 쓰이는 변수를 관리하기 위한 영역을 할당하는 코드가 로더에 의해 실행된다. 프로세스를 종료하는 과정에서 실행되는 라이브러리 함수가 존재하는데, 그 중에서 _rtld_global 구조체와 관련된 라이브러리 함수를 알아보고 어떻게 취약점이 발생하는지 알아보자. return 명령으로 프로그램이 종료된다면 __run_exit_handlers()에 있는 _dl_fini()가 호출된다. ○ _dl_fini()#define __rtld_lock_lock_recursive(NAME) \ GL(dl_rtld_lock_recursive) (&(NAME).mutex)void_dl_fini (void){#ifdef SHARE..

System Hacking Advanced

[dreamhack] SECCOMP 개념

○ Sandbox샌드박스 (Sandbox)는 외부의 공격으로부터 시스템을 보호하기 위해 설계된 기법이다. 샌드박스는 Allow List와 Deny List 두 가지를 선택해 적용할 수 있으며, 애플리케이션의 기능을 수행하는데에 있어서 꼭 필요한 시스템 콜 실행, 파일의 접근만을 허용한다. sandbox는 웹 브라우저, 가상머신, OS (android, linux) 등의 환경에서 외부의 공격을 최소화하기위한 보안 기능이다. sandbox 매커니즘은 Seccomp, AppArmor, SELinux, Firejail 등 운영체제 또는 기능에 따라 여러가지가 존재한다. 이 중에서 리눅스 커널에서 제공하는 seccomp에 대해 알아보자. ○ seccompseccomp은 리눅스 커널에서 제공하는 샌드박스 매커니즘 ..

System Hacking Advanced

[dreamhack] SigReturn-Oriented Programming

개념정리○ SROP란?Sigreturn-oriented-programming의 약자로 SROP라고 부른다. Sigreturn system call을 사용하는 ROP 기법: Sigreturn system call은 시그널을 받은 프로세스가 kernel mode에서 user mode로 복귀할 때 사용하는 system call을 의미한다. sigreturn syscall 을 이용해 모든 레지스터값을 컨트롤해서 exploit한다. 기본적으로 ROP와 똑같은 개념이지만, ROP를 수행하기위한 가젯이 부족한 경우에 사용할 수 있는 방법이다. 운영체제는 보안, 자원 관리 등의 이유로 user mode와 kernel mode를 컨텍스트 스위칭하면서 프로세스를 실행한다. 만약, 시그널이 발생한다면 kernel mode로..

System Hacking Advanced

[dreamhack] Master Canary

Master Canary└─# checksec mc_thread[*] '/root/dream/Master Canary/mc_thread' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)SSP가 적용됐다. 카나리를 bypass하는 문제라고 예상할 수 있다. 코드를 분석해보자.#include #include #include #include void giveshell() { execve("/bin/sh", 0, 0); }int main() { pthread_t thread_t; if (pthread_create(..

System Hacking Advanced

[dreamhack] master_canary

checksec└─# checksec master_canary[*] '/root/dream/master_canary/master_canary' Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000)NX, SSP가 적용됐다. 문제분석// gcc -o master master.c -pthread#include #include #include #include #include char *global_buffer;void get_shell() { system("/bin/sh");}void *thread_routine() ..

keyme
'system hacking' 태그의 글 목록 (2 Page)