이 영역을 누르면 첫 페이지로 이동
SH1R0_0의 기술블로그 블로그의 첫 페이지로 이동

SH1R0_0의 기술블로그

페이지 맨 위로 올라가기

SH1R0_0의 기술블로그

checksec으로 바이너리 보호기법 탐지하기

  • 2024.01.10 20:52
  • 📖 Study/Pwnable

1. checksec 이란?

리눅스에서는 다양한 바이너리 보호기법이 존재하며, 적용된 보호기법에 따라 익스플로잇 설계가 달라진다.

checksec을 통해 바이너리에 적용된 보호기법을 확인할 수 있다.

checksec은 pwntools 설치시 자동으로 설치되며 github를 통해서도 사용할 수 있다.

checksec을 통해 바이너리 보호기법 확인

usage: checksec [-h] [--file [elf [elf ...]]] [elf [elf ...]]

 

 

2. 보호기법

checksec에서 제시하고 있는 보호기법에 대해서 알아보자.

 

Arch (Architecture)

Arch는 해당 바이너리가 컴파일 된 환경을 나타낸다. 위 이미지에서 나타난 amd64-64-little은 해당 바이너리가 64비트 x86 아키텍처에서 실행되도록 컴파일되었고, little-endian 방식으로 데이터를 저장한다는 것을 나타낸다.

 

RELRO (RELocation Read-Only)

RELRO는 ELF 바이너리 또는 프로세스의 데이터 영역에 읽기 전용(Read-Only) 권한을 설정하여 메모리가 변경되는것을 막는 보호 기법이다. 아래 세 가지 설정이 존재한다.

  • NO RELRO : ELF 기본헤더, 코드영역을 제외한 거의 모든 부분에 RW 권한을 부여한다.
  • Partial RELRO : NO RELRO와 비슷하지만 .ctors(.init_array), .dtors(.fini_array), .jcr, .dynamic 
    영역이 Read-Only며, .got.plt, .data, .bss 영역에는 Write 할 수 있다.
  • Full RELRO : .data, .bss 영역을 제외한 모든 영역이 Read-Only로 설정된다.

 

Stack

Stack Canary 기법은 스택 버퍼 오버플로우 공격을 방어하기 위한 보호 기법 중 하나이다. 이 기법에서는 함수의 프롤로그에 카나리라는 작은 무작위 값(Canary)을 스택에 푸시하고, 함수의 에필로그에서 이 값을 확인하여 변경되었는지를 검사한다.

 

NX (No-eXecute)

NX는 메모리 페이지의 실행 여부를 제어하는 보호 기법이다. 스택이나 힙과 같은 영역에서 코드의 실행을 방지하여 메모리 기반 공격, 특히 쉘코드의 실행을 방지하는 데 사용된다.

 

PIE (Position Independent Executable)

PIE는 바이너리가 메모리 상의 임의의 위치에 로드될 수 있게 하는 기법이다. 이로 인해 각 실행 시마다 바이너리의 메모리 주소가 변경되며, 공격자가 메모리 주소를 예측하는 것을 어렵게 만든다.


참고 사이트
https://hackyboiz.github.io/2021/10/27/y00n_nms/linux-mitigation/

https://howd4ys.github.io/2019-01-02/RELRO-is-fun1

https://learn.dreamhack.io/99

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

다른 글 더 둘러보기

정보

SH1R0_0의 기술블로그 블로그의 첫 페이지로 이동

SH1R0_0의 기술블로그

  • SH1R0_0의 기술블로그의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (33)
    • 📖 Study (11)
      • Crypto (0)
      • WebHacking (3)
      • Reversing (0)
      • Pwnable (1)
      • Develop & CS (1)
      • Android (4)
      • Etc (2)
    • 🚩 CTF Writeup (14)
      • SSTF 2023 (8)
      • osu!gaming CTF 2024 (2)
      • WxMCTF '24 (4)
      • KalmarCTF 2024 (0)
    • 🎮 Dreamhack Writeup (8)
      • Web (7)
      • Pwnable (1)

최근 글

인기 글

댓글

공지사항

  • 공지 - 박민혁 (SH1R0_0)

아카이브

태그

나의 외부 링크

  • 관리자
  • 글쓰기
  • 공부

정보

SHIR0_0의 SH1R0_0의 기술블로그

SH1R0_0의 기술블로그

SHIR0_0

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © SHIR0_0.

티스토리툴바