이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

caputdraconis

네트워크 관점에서의 클라우드 컴퓨팅을 공부하는 중입니다 :)

지옥방 3주차 과제 라젠카 뿌시기(NX Bit)

  • 2020.04.24 03:31
  • Security/지옥방 스터디
글 작성자: caputdraconis
반응형

 

<NX Bit(MS : DEP)>

 

NX BIt(Nx bit, Never eXecute bit, 실행 방지 비트) 란?

  • 프로세스 명령어나 코드 또는 데이터 저장을 위해 메모리 영역을 따로 분리하는 CPU 기술
  • NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용 => 명령어가 들어갈 수 없다 => 악성코드가 실행되지 않도록 해준다.

DEP(Data Execution Prevention)

  • 윈도우 운영체제에 포함된 보안 기능, 악의적인 코드가 실행되는 것을 막기 위해 메모리를 추가로 확인하는 기술
  • DEP는 두가지 모드로 실행된다.
하드웨어 DEP 메모리에 명시적으로 실행 코드가 포함되어 있는 경우를 제외하고 모든 메모리 위치에서 실행 코드 실행 X    대부분의 최신 프로세서 지원
소프트웨어 DEP CPU가 하드웨어 DEP를 지원하지 않을 경우 사용

라젠카 Return to address에서도 봤듯이 Heap, Stack 영역에 Shellcode를 저장해서 실행하기 위해서는 해당 영역에 execute, 즉 실행권한이 있어야 한다.

DEP가 활성화 되어있을 경우 해당 메모리 영역의 실행권한을 얻지 못했으니 쉘코드 실행 안댐=> 프로그램은 해당 쉘코드를 예외처리하고 프로세스를 종료한다.

DEP가 비활성화 되었을 경우 쉘코드 아무 문제없이 실행

 

 

 

 

bof 취약점이 존재하는 프로그램 코드

DEP를 비활성화 하기 위해서는 gcc에 옵션을 추가해야한다.

gcc -z execstack -o DEP-disabled DEP.c

위의 코드에서 "execstack"이 DEP 비활성화 옵션

 

 

Checksec.sh    리눅스 보호기법 체크 ( 해당 바이너리에 어떤 보호기법이 적용되었는지 간단하게 체크할 수 있는 스크립트)

http://www.trapkit.de/tools/checksec.html <== 여기서 다운로드 가능

 

 

 

DEP 비활성화 옵션을 넣고 안넣고의 보안기능을 볼 수 있다.

비활성화하지 않은 파일은 NX 활성화, DEP도 활성화 되어있다

이에 반해 DEP가 비활성화된 파일은 NX, DEP 모두 비활성화 되어있음을 확인할 수 있다!

 

 

DEP가 활성화 되어있는 경우와 비활성화 되어있는 경우를 비교해봤을때 DEP disabled 쪽이 월등히 실행권한(--x-)를 더 많이 가지고 있음을 위의 그림에서 볼 수 있다.

 

 

Checksec.sh 를 이용해 NX 설정 여부 확인 방법 짜란~

 

Binary

바이너리의 NX 설정여부 확인

readelf 명령어를 이용해 파일의 세그먼트 헤더 정보에서 NX 설정 여부 확인

파일의 세그먼트 헤더 정보에서 "GNU_STACK"의 Flg 값이 'RWE'이라면 NX가 활성화 되어있음을 의미

 

 

 

DEP가 비활성화된 바이너리의 GNU_STACK의 Flg 값이 RWE?

뭐지 

GNU_STACK의 Flg를 보여주는 코드가 아닌가. 

몇 번을 읽어봐도 모르겠어서 삭님한테 구조요청!! 

답장오면 이해하고 업데이트하기 !!!!

오타 존재!

쪼기 RWE가 아까 권한들을 보면서 봤던 rwx와 같다. E가 Execute의 E더라구요~

그럼 NX가 켜져있으면? 실행권한을 얻지 못하니 RW

NX가 꺼져있으면? 실행권한을 얻을 수 있으니 RWE

 

 

 

 

Process

Binary에서 사용했던 확인 방식과 동일하지만, 전달되는 파일의 경로가 다음과 같아서,,

조금 다르다!

GNU_STACK의 Flg 값이 RWE라면 NX가 비활성화 되어있음을, 반대의 경우라면 활성화 되어있음을 의미한다.

 

 

CPU

nx 문자가 파일 내에 존재하나 안하나 if 문으로 확인

CPU의 NX 설정 여부를 확인하는 방법은 "/proc/cpuinfo"파일에서 'nx' 문자가 있는지 확인하는 것이다.

 

 

 

 

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 지옥방 3주차 과제 LOB 2,3번 뿌시기

    지옥방 3주차 과제 LOB 2,3번 뿌시기

    2020.04.28
  • 지옥방 포너블 3주차 과제 모음!

    지옥방 포너블 3주차 과제 모음!

    2020.04.24
  • 지옥방 3주차 과제 라젠카 뿌시기(Return to Shellcode)

    지옥방 3주차 과제 라젠카 뿌시기(Return to Shellcode)

    2020.04.24
  • 지옥방 3주차 과제 달고나 문서 뿌시기!

    지옥방 3주차 과제 달고나 문서 뿌시기!

    2020.04.23
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • 🥚고리즘 (13)
      • 겅부겅부🙃 (10)
        • Naver CS50 코칭스터디 (2)
        • Machine Learning (1)
        • Computing System (6)
      • 언어&프레임워크 (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • 지옥방 스터디 (22)
        • 여름방학 스터디 (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • 알고 있으면 도움되지 않을까,,? (23)
      • 일상다반사 (1)
      • 근황 정리 (1)
      • 42 Seoul (1)
        • Setting (1)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • Python
    • 리스트함수
    • old-16
    • 드림핵
    • 웹해킹.kr
    • 파이썬기초
    • 파이썬
    • 파이썬함수

    나의 외부 링크

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    정보

    caputdraconis의 caputdraconis

    caputdraconis

    caputdraconis

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

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

    티스토리

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

    티스토리툴바