Security/Reverse Engineering, RE

Security/Reverse Engineering, RE

리눅스 환경 기반 스택 오버플로우 실습 (Trampoline Technique) -2

Return 주소 조작을 통한 스택 오버플로우 구현 절차 1. 예외를 발생 시키는 주입 지점 확인 2. 주입지점부터 Return Address 위치까지의 옵셋(거리)를 확인 3. 실행의 흐름 조작 가능 여부 확인 4. 간접 분기에 사용할 Register 확인 (전제 조건은 우리가 더럽힐 수 있는 스택을 포인팅 하고 있어야함) 5. 주입 지점부터 간접 분기에 사용할 레지스터가 가르키는 스택의 지점까지 거리 확인 6. Call Register 코드 확인 7. 익스플로잇 코드 제작 및 테스트 목표) 아래 소스코드로 컴파일된 실행파일의 스택 오버플로우 취약점을 찾고 쉘코드 실행 - bof.c #include #include #include void dovuln(const char *s) { char buf[10..

Security/Reverse Engineering, RE

리눅스 환경 기반 스택 오버플로우 실습 (Trampoline Technique) -1

쉘 코드 실행 및 제어 권한 획득 gcc -fno-stack-protector -z execstack -o : -fno-stack-protector = 스택 오버플로우를 감지하는 스택 쿠키 배치 및 검증 코드를 제거 : execstack -o = 스택 메모리에서의 코드 실행 권한 추가 열쇠없이 금고를 열때 유리막을 건들면 깨지게 설계하듯이 코딩 설계할때도 이와같이 구조를 확인할 수 없게하는 장치 리턴 주소를 조작한 쉘코드 실행 방법 2가지 1. 분기할 곳을 직접 지정하는 "직접 주소 참조 방식" 2. 레지스터를 이용하여 함수(루틴)을 실행하는 코드를 이용한 간접 참조 방식 Trampoline Technique 가상 주소 공간에 있는 스택 메모리의 주소가 무작위한 특성으로 인해 "직접 주소 참조" 방식 공..

Security/Reverse Engineering, RE

IA32 아키텍처의 레지스터와 기본 명령어 및 실습

1. 레지스터의 역할 (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP, EIP) 조사 레지스터 : 4바이트만큼의 데이터를 담거나 표현할수있음 EAX : 덧셈 혹은 뺄셈 같은 연산의 결과를 저장 혹은 어떤 함수가 실행이 된 결과 리턴값을 저장하는 역할 ECX : Count 레지스터 루프를 도는 값 즉, 루핑 카운터 레지스터(for문 10번 = ECX 10) EDX : EAX와 같이 쓰이고 부호 확장 명령 등에 쓰임 큰 수의 곱셈 또는 나눗셈 등의 연산이 이루어질 때, EDX 레지스터가 사용되어 EAX 레지스터와 함께 쓰임 EBX : ESI 레지스터나 EDI 레지스터와 결합 될 수 있으며, 메모리 주소를 저장하기 위한 용도로 사용 ESP : 스택 포인터, 스택 메모리의 최상단을 가르킴..

Security/Reverse Engineering, RE

리버스 코드 엔지니어링의 기본

실행 파일의 기본 구조 윈도우에서의 실행 파일인 경우 PE(Protable Executable) - EXE/DLL/SYS/SCR 리눅스에서의 실행 파일인 경우 ELF(Exectuable Linkable File) - SO 의 포맷으로 되어 있다. 컴파일러로 컴퓨터가 이해할 수 있는 변환하는것이 코딩이며, 코딩된 프로그램의 최종 실행은 CPU가 한다. 사람의 뇌에 동작방식에 가까운 언어 : 고급어 -> C , JAVA , C# 등등 컴퓨터에 동작방식에 가까운 언어 : 저급어 -> 기계어, 어셈블리어 사람의 코드를 컴파일하여 기계가 이해할 수 있게 하는것 : 컴파일러 실행 파일의 라이프 사이클 Address of Entrypoint(Offset) - 실행 파일이 메모리에 로드된 후 최초로 실행 되어야 할 코..

Security/Reverse Engineering, RE

PE 파일 구조

본 내용은 파이썬 오픈소스 도구를 활용한 악성코드 분석 책을 참고하였음을 알립니다. PE파일 포맷(Portable Executable File Format) : 파일이 이식 가능한 곳에도 실행 가능하도록 만든 포맷 1 . 윈도우에서 동작할수 있게하는 실행 파일, DLL 파일 등을 위한 파일 형식 2. 윈도우 로더가 실행 가능한 코드를 관리하는데 필요한 정보를 캡슐화한 데이터 구조체 3. Linking을 위한 동적 라이브러리 참조, API Export와 Import Table, 자원 관리 데이터 그리고 TLS 데이터를 포함 PE 파일 분석에 사용할 도구 : peframe.py , PEView, HxD IAT (Import Address Table) : 함수의 위치를 알려줌 IMAGE_DOS_HEADER :..

DevSecOps
'Security/Reverse Engineering, RE' 카테고리의 글 목록