한땀한땀 정성들인 코딩

bof 방지기법 그외(objdump 사용,rtl chain) 본문

자격증/정보보안기사

bof 방지기법 그외(objdump 사용,rtl chain)

romance penguin 2017. 2. 9. 17:56
반응형

1. GS

- 윈도우 상에서 스택을 보호하는 기법

- 함수 상세 로컬 문자열 버퍼

- buffer와 ret 사이에 stack cookies를 추가

- return 주소를 보호 

- .data영역에 저장된 cookie 값과 비교

- 변조된것으로 판명되면 abort()


2. SAFE SEH

-window 예외 처리 기법

-에러처리 레코드를 덮어 쓰는 것을 방지

-링커에서 안전한 예외처리 목록 생성


3. CANARY

-리눅스상에서 보호기법

-윈도우의 stack cookie개념과 비슷

-termiator canaries : 문자열의 끝문자로 구성하는 방법. null,cr,lf,0xff 값의 조합

-random canary : 임의의 canary값 지정

-null canary : null로 구성


objdump

-역어샘블

-기계어(헥사코드)로 이루어진 바이너리 파일을 역 어샘블


objdump -d -S (오브젝트파일.o 혹은 실행파일)

-S : 소스 출력, -g옵션컴파일이 아니면 소스출력되지않음

-I  : 소스코드의 라인



RTL CHAIN

-rop의 기본

-계속된 라이브러리 함수들의 호출

-즉 rtl을 연속적으로 사용

#include <stdio.h>

void func1(int val1){

printf("func1 %d \n",val1);

}

void func2(int val2){

printf("func2 %d \n",val1);

}

void func3(int val3){

printf("func3 %d \n",val1);

}

int main(int argc, char *argv[]){

char buf[16];

strcpy(buf,argv[1]);

return 0;

}


입력 인자(32bit기준)

buf[16] + sfp[4] + func1주소(ret[4])+func2주소+func3주소(func1의 인자)


-func1의 인자 같은 경우는 시스템환경에 따라 달라질수 있으니 gdb로 확인하자.


gadget기법

-필요한 어셈블리 명령어를 사용


pop ebp

ret

를 사용

obj dump를 써서 저 명령어가 시작되는 주소를 찾는다, = pop ebp의 주소

*eip는 코드가 실해되면 다음 어샘 명령어로 넘어간다.


-esp의 위치를 잘 파악하자


leave

-mov esp,ebp

-pop ebp


ret

-pop eip

-jmp eip


반응형

'자격증 > 정보보안기사' 카테고리의 다른 글

리눅스 계정관리  (0) 2017.02.10
취약점 진단도구(시스템)  (0) 2017.02.09
bof방지 기법 ASCII-Armor  (0) 2017.02.09
bof방지 기법 ASLR  (0) 2017.02.09
bof방지 기법 non-executable  (0) 2017.02.09