Security
[Reversing] 04. IA-32 Register 기본 설명
1. CPU 레지스터란? 레지스터란 CPU 내부에 존재하는 다목적 저장 공간이다. CPU가 RAM에 있는 데이터를 액세스하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸린다. 하지만 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다. 1.1 레지스터에 대해 알아야 하는 이유 IA-32(Intel Architecture 32비트)에서 제공하는 어셈블리 명령어 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하기 떄문에 레지스터를 모르면 명령어 자체도 이해하기 힘들다. 2. IA-32의 레지스터 애플리케이션의 디버깅의 초급 단계에서는 Basic program executio register에 대해 알아두어야 한다. 2.1 Basic program exe..
[Reversing] 03. 리틀 엔디언 표기법
1. 바이트 오더링 바이트 오더링이란 컴퓨터에서 메모리에 데이터를 저장하는 방식을 의미 바이트 오더링 방식에는 크게 빅 엔디언(Big Endian)과 리틀 엔디언(Litle Endian) 방식이 있다. 총 4개의 (크기가 다른) 자료형은 각 엔디언 방식에 따라서 저장하는 방식이 다르다. Type Name Size 빅 엔디언 리틀 엔디언 BYTE b 1 [12] [12] WORD w 2 [12][34] [34][12] DWORD dw 4 [12][34][56][78] [78][56][34][12] char [] str 6 [61][62][63][64][65][00] [61][62][63][64][65][00] 📌 ASCII 문자 'a'는 0x61과 같고, 'e'는 0x65와 같다. 그리고 문자열 마지막은 ..
[Reversing] OllyDbg 기초 사용법
디버거 동작 명령(Code Window에서 동작함) 명령어 단축키 설명 Go to Ctrl+G 원하는 주소로 이동(코드/메모리를 확인할 때 사용, 실행되는 것은 아님) Execute till Cursor F4 커서 위치까지 실행(디버깅하고 싶은 주소까지 바로 갈 수 있음) Comment ; comment 추가 User-defined commnet 마우스 우측 메뉴 Label : 라벨 추가 User-defined label 마우스 우측 메뉴 Set/Reset Breakpoint F2 BP 설정/해제 Run F9 실행(BP가 걸려있으면 그곳에서 정지됨) Show the currnet EIP * 현재 EIP 위치를 보여줌 Show the previous Cursor - 직전 커서 위치를 다시 보여줌 Previ..
[Reversing] 02장. Hello World! 리버싱
1. Hello World 프로그램 1.1 디버거와 어셈블리 언어 소스코드(.cpp) ➜ 빌드 ➜ 실행 파일(.exe) 생성 사람이 이해하기 쉬운 소스코드를 기계가 이해하기 쉬운 기계어로 변환하는 것 기계어는 사람이 알아보기 어렵기 때문에 좀 더 편하게 보기 위해 디버거 유틸리티를 사용한다. 📌 실행 파일을 생성하는 어떠한 프로그래밍 언어라도 빌드 과정을 거치면 모두 기계어로 변환된다. 디버거를 통해 어떤 실행 파일이라도 어셈블리 언어로 번역해서 볼 수 있기 때문에 리버서는 기본적으로 어셈블리 언어를 잘 알아야 한다. 어셈블리 언어는 CPU에 종속됨 - 일반 PC 多 사용 : Intel x86 계열 - 모바일 제품 多 사용 : ARM 계열 ➜ 서로 어셈블리 명령어의 형태가 다름 2. HelloWorld...
[Reversing] 01장. 리버싱 스토리
👆 위 책을 읽고 정리한 내용입니다. 1. 리버스 엔지니어링 리버스 엔지니어링(Reverse Engineering, Re: 역공학) : 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업 2. 리버스 코드 엔지니어링 리버스 코드 엔지니어링(Reverse Code Engineering, RCE) : 소프트웨어 분야의 리버스 엔지니어링 2.1 리버싱(분석) 방법 1) 정적 분석 파일의 겉모습을 관찰하여 분석하는 방법 정적 분석 단계에서는 파일을 실행하지 않음 파일의 종류, 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한..
[ELK] Logstash/Filebeat
1. 로그스태시 개요 오픈 소스 서버측 데이터 처리로 파이프 라인 다양한 소스에서 동시에 데이터를 수집하여 변환 그 다음 자주 사용하는 엘라스틱서치에 전달 로그스태시 파이프라인 로그스태시의 필터 Input : Logstash로 데이터를 가져옴 file : UNIX 명령 tail -0F와 비슷하게 파일 시스템의 파일에서 읽음 syslog : RFC3164 형식에 따라 syslog 메시지 및 구문 분석을 위해 잘 알려진 포트 514를 수신 redis : redis 채널과 redis 목록을 모두 사용하여 redis 서버에서 읽음 beat : Filebeat에서 보낸 이벤트를 처리 Filter : Logstash 파이프 라인의 중간 처리 장치 grok : 임의의 텍스트를 구성, 현재 구조화되지 않은 로그 데이터..