2024. 2. 19. 22:01ㆍInformation Security 정보보안/Reverse Engineering 리버스 엔지니어링
배울내용:
리버싱 엔지니어링
중앙처리장치 구조
Reversing Engineering
디버거
디어셈블러
OllyDBG
리버싱 엔지니어링 기초
사전 필요 지식 :
리눅스
네트워크 프로토콜
C언어
어셈블리어
이러한 사전 지식을 통해 역공학을 보다 효과적으로 학습할 수 있을 것이다.
리버스 엔지니어링 (Reverse Engineering)
또는 역공학 이라고도 불린다
이때 새로운 기능을 추가한다는 것은 변조 한다는 것이라고 볼수도있다
그 악성코드로 만들어낼수도, 크랙도 할수도있다
리버싱을 위해서는 중앙 처리장치의 구조와 작동원리를 알아야한다
빠른순서 1 (Register) 2 (Cache) 3 (RAM/ROM) 4 (HDD) 이렇지만 대신 가격은 역순이다
뿐만아니라 아래의 것들도 필요하다
RAM 과 ROM 이 어떤 구조로 어떻게 작동하는지
그리고 C 언어와 Assembly 같은 프로그래밍 언어를 알아야하고
프로그램의 구조와 작동원리를 알아야 할 필요가있다
그렇게 종합적으로 아래의 프로그램을 알게 될것이다
디 어셈블러 또는 디버거로 주로쓰이는 OllyDBG 가 있다
OllyDBG
OllyDBG와 GDB 가 있는데 주로 OllyDBG가 많이쓰인다
아스키 코드 (American Standard Code for Information Interchange)
ASCII 코드는 7비트로 구성되어 있으며, 0부터 127까지의 숫자로 표현된다. 이 코드는 다양한 특수 문자(예: !, @, # 등)와 알파벳(대소문자), 숫자, 제어 문자(예: 줄 바꿈, 탭 등)를 포함하고 있다.
ASCII 코드는 컴퓨터와 통신 장비 사이에 텍스트 데이터를 전송하거나 텍스트 파일을 읽고 쓸 때 사용된다. 또한 프로그래밍에서도 문자를 표현할 때 사용되며, 많은 프로그래밍 언어에서 문자열 데이터를 다룰 때 ASCII 코드를 기반으로 동작한다.
암호학, 해시함수
암호학 알고리즘 에는 2가지 키가 있다 (대칭키, 공개키)
대칭키 : AES,IDEA
공개키 : RSA
등이 있다
해시함수로는 MD5, SHA-1,SHA-2(224,256,384,512)) 등이 있다
128 160
해시함수는 컴퓨터에서 프로그램, 지문 이다
해시 함수는 입력 데이터를 받아서 고정된 길이의 출력 데이터로 변환하는 함수이기때문에 이러한 함수는 입력이 같으면 항상 동일한 출력을 생성하며, 입력이 조금만 변경되어도 출력이 크게 달라진다. 이러한 특성은 주어진 데이터의 "지문" 또는 "디지털 지문"을 생성하는 데 사용된다. 따라서 해시 함수는 일종의 디지털 지문 생성기로 볼 수 도있다.
리버싱을 활용하면 위에있는 4 가지를 할수있다
악성코드를 분석 , 취약점 분석 , 컴퓨터 포렌식, 그리고 프로그램 오류를 수정할수있다
이중 프로그램 오류 빼고 위에 3가지는 관제라는 부분에서 많이 쓰인다
중앙처리 장치(CPU)의 구조 및 작동원리
CPU (Central Processing Unit) : 중앙처리장치
역할: 명령어 해석 연산을 통해 다른 HW 제어
ALU, Control Unit, Register, Bus Interface 4개로 나뉜다
ALU :산술 논리장치(Arithmetic Logic Unit)
CPU연산담당
산술연산:사칙연산
논리연산 : and, or
Control Unit
CPU에게 전달되는 바이너리 명령어를 해석한다
Register
ALU에서 연산된 데이터를 저장하는곳, 저장공간 , CPU 내부의 저장장치 이다
용량은 적지만 데이터 접근거리가 가까워 속도가 가장 빠르고
리버싱에서 가장 중요하다
Bus Interface
HW간 데이터를 전송하고 입력하는 통신경로
장치간 통신하는 방법이 달라서 각각의 버스 인터페이스 존재
Address,data,control 3가지 버스가있고 이를 bus system이라고 한다
아래에는 3가지의 버스의 설명이다
위에 있는 4개의 CPU 구성요소중 Reversing에서는 Register 가 가장 중요하다
CPU 안에서있는 가장빠르면서 이번에 포스팅할 전체 과정에서
이안에 들어있는 값들이 어떻게 저장되고 출력이 되는지 계산을 하게 될것이고
가장 집중적으로 배우게 될것이다 .