hacking

    [System][Dreamhack] RELRO - RELocation Read-Only

    [System][Dreamhack] RELRO - RELocation Read-Only

    Lazy binding은 ELF 바이너리에서 라이브러리 함수의 시작주소를 구하지 않다가, 함수를 처음 호출할 때 해당 주소를 구해 GOT에 저장하는 것을 말한다. Lazy binding을 하는 바이너리는 실행 중 GOT를 업데이트 해야하므로, GOT에 쓰기 권한이 부여된다. 이로 인해 GOT Overwrite 공격이 가능한 것이다. GOT 영역 외에도, ELF의 데이터 세그먼트에는 프로세스 초기화 및 종료와 관련된 .init_array, .fini_array가 있다. 해당 영역들은 프로세스 시작과 종료에 실행할 함수의 주소를 저장하고 있는데, 여기에 임의의 값을 쓸 수 있다면 프로세스 흐름 조작이 가능하다. 이런 overwrite로부터 데이터 세그먼트를 보호하고자 RELocation Read-Only(R..

    [System][Dreamhack] Exploit Tech : Return Oriented Programming(ROP)

    [System][Dreamhack] Exploit Tech : Return Oriented Programming(ROP)

    이전 실습은 system 함수를 호출하도록 하여 PLT에 system함수가 포함되어 있다. 하지만 실제로 system함수가 PLT에 포함될 가능성은 거의 없다. [system][hacking] Exploit Tech : Return to Library(RTL) NX를 우회하는 공격기법인 RTL에 대해 공부한 내용이다. RTL을 공부하기 전 NX가 무엇인지, PLT가 무엇인지 알아야 한다. 이에 대한 내용은 아래의 글에 정리되어 있다. [system][hacking] 메모리 보호기 3omh4.tistory.com 그래서 라이브러리 함수의 실행과 리턴가젯을 연결해 사용하는 ROP(Return Oriented Programming)와 GOT overwrite에 대해 드림핵으로 공부한 내용이다. ROP ROP는..

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    [System][Dreamhack] 메모리 보호기법 Mitigation: NX & ASLR

    지난 글(Return to shellcode)를 보면 쉘을 딸 수 있었던 이유는 다음과 같다. return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 버퍼의 주소 알아내기 가능 버퍼안의 쉘코드 실행 가능 공격을 막기 위해 시스템 개발자들은 여려 겹의 보호 기법을 적용해 공격당할 수 있는 표면(Attack Surface) 를 줄여나가려 한다. Attack surface를 줄이기 위한 메모리 보호기법에 대해 드림핵을 기반으로 작성하였다. 요약 return addr을 임의의 주소로 덮기 가능 → canary 도입 ⇒ canary leak 으로 우회 가능 버퍼의 주소 알아내기 가능 → ASLR 도입 버퍼안의 쉘코드 실행 가능 → NX-bit 도입 ASLR ( A..