본문 바로가기

Kitri_NCS3기 보안과정/시스템 해킹

[Reverse Engineering]PE-Section Table 참고 : http://zesrever.tistory.com ※ PE 파일이란 ? 윈도우즈 환경의 실행파일 포맷을 PE 라고 하며, Portable Executable의 약자. 굳이 EXE 파일만 일컫는것이 아니라 SCR,SYS,DLL,OCX등도 포함됨. PE의 이해는 API후킹, 압축실행파일 등과 같은 고급 리버싱기법의 기본 바탕이된다. PE파일은 디스크상의 모습과 메모리상의 모습이 거의 같다, 실행시 하드에 저장되어 있던 파일의 형태 그대로 메모리에 올라가는 모습을 보인다.PE를 파악하기위해서는 PE파일의 구성요소와 그 구성요소들의 시작점을 찾는 방법을 잘 숙지해야함. 실행파일 분석기를 만들어보는것이 PE를 연구하는데 가장 효과적인방법... PE구성요소 - DOS header- DOS stub code.. 더보기
[Reverse Engineering]PE-PE Header 참고 : http://zesrever.tistory.com ※ PE 파일이란 ? 윈도우즈 환경의 실행파일 포맷을 PE 라고 하며, Portable Executable의 약자. 굳이 EXE 파일만 일컫는것이 아니라 SCR,SYS,DLL,OCX등도 포함됨. PE의 이해는 API후킹, 압축실행파일 등과 같은 고급 리버싱기법의 기본 바탕이된다. PE파일은 디스크상의 모습과 메모리상의 모습이 거의 같다, 실행시 하드에 저장되어 있던 파일의 형태 그대로 메모리에 올라가는 모습을 보인다.PE를 파악하기위해서는 PE파일의 구성요소와 그 구성요소들의 시작점을 찾는 방법을 잘 숙지해야함. 실행파일 분석기를 만들어보는것이 PE를 연구하는데 가장 효과적인방법... PE구성요소 - DOS header- DOS stub code.. 더보기
[Reverse Engineering]PE-DOS Header 참고 : http://zesrever.tistory.com ※ PE 파일이란 ? 윈도우즈 환경의 실행파일 포맷을 PE 라고 하며, Portable Executable의 약자. 굳이 EXE 파일만 일컫는것이 아니라 SCR,SYS,DLL,OCX등도 포함됨. PE의 이해는 API후킹, 압축실행파일 등과 같은 고급 리버싱기법의 기본 바탕이된다. PE파일은 디스크상의 모습과 메모리상의 모습이 거의 같다, 실행시 하드에 저장되어 있던 파일의 형태 그대로 메모리에 올라가는 모습을 보인다.PE를 파악하기위해서는 PE파일의 구성요소와 그 구성요소들의 시작점을 찾는 방법을 잘 숙지해야함. 실행파일 분석기를 만들어보는것이 PE를 연구하는데 가장 효과적인방법... PE구성요소 - DOS header- DOS stub code.. 더보기
170519 힙영역 오버플로우 heap에 할당된 영역을 오버플로우하여 eip를 조작해보자. struct data{ a [32]} struct data *d d= malloc(sizeof(struct data) d->a a[32] *d → malloc 은 heap영역에 할당시켜주는 역할을 한다. #include #include struct data { char name[64]; }; struct fp { int (*fp)(); }; void winner() { system("cat flag"); } void nowinner() { printf("level has not been passed\n"); } int main(int argc, char **argv){ struct data *d; struct fp *f; d = malloc(s.. 더보기
170518 환경변수 변조 (export LD_PRELOAD) 1. LD_PRELOAD 사용 명령어 $env 현재 설정되어 있는 환경 변수들 확인 $env | grep PATH 환경변수중 PATH 확인 LD_PRELOAD 환경변수로 프로그램 실행시 로딩하는 라이브러리를 추가 할 수 있음. 동일한 이름의 함수의 경우 LD_PRELOAD에서 설정한 것이 우선순위가 더 높다. #include main(){sleep(1000); → 실행하면 잠시 멈춘다 } sleep는 정해진 시간동안 잠시 멈추는 기능을 한다. sleep와 같은 이름의 함수를만들어서 LD_PRELOAD 에 추가하여 우선순위를 높이고 우리가 만든 sleep가 실행되도록 해보자. sleep(){ system("ls -al");} "ls -al" 의 명령을 실행하도록 sleep() 을 만들었다. 라이브러리 파일.. 더보기
170516 오버플로우를 이용한 RET 변조 메모리 보호 옵션 sudo apt-get install g++-multilib libc6-dev-i386 sudo sysctl -w kernel.randomize_va_space=0 // 랜덤 스택, 라이브러리 해제 gcc -m32 -o a a.c -fno-stack-protector -mpreferred-stack-boundary=2 // SSP 기능 해제 , 더미없애기 참고 :http://bbolmin.tistory.com/81 1. 더미 value + 실행 코드 주소(ret)#include #include void print(){ printf("eip control success!\n"); ← 정상적인 동작이면 이 함수를 실행할 일이 없다. } 오버플로우를 이용하여 ret를 변조하고 이 함수가 출력.. 더보기
170515 시스템 해킹, 디버거(GDB)-오버플로우 이해하기 시스템 해킹: 시스템 프로그래밍의 취약점을 이용한 공격 기법 시스템 해킹 공격 분류 리모트 공격 : 물리적으로 떨어진 대상을 공격함. 로컬공격 : 대상 컴퓨터 안에서 이루어지는 공격. 공격프로그램으로 희생프로그램 공격. ex) ssh로 붙은 대상에서 공격, 워드 취약점(hwp, ms office등 ) 의 취약점을 공격해서 침투모든 프로그램은 입력을 받아서 작업을 처리하는 동작을 수행하는데 입력할 때 사용자가 인식하지 못하는 방법으로 공격을 수행한다.프로그램 시작 할때 또는 시작 중에 넘겨주는 시점적 유형 두가지악성코드(리모트 공격)의 경우 실행 파일(.exe)로 구분하기 쉽지만 로컬공격은 인식하기 어렵다는 점이 있다. 대표적인 취약점 스택 오버플로우 : 프로그램이 데이터를 받을때, 저장공간을 할당하고 데.. 더보기