Malicious Code Analysis DAY_002 정적분석 이란?, IAT 란?, 해시함수 란?, 악성코드에서 쇄도효과 란?, 패킹ASCII & UniCode, 난독화, PE 파일 분석도구, automatic analysis, Malicious Code Analysis

2024. 3. 10. 20:33Information Security 정보보안/Malicious Code Analysis 악성 코드 분석

728x90

배울내용:

정적분석 이란? 

IAT 란? 

해시함수 란? 

악성코드에서 쇄도효과 란? 

패킹

ASCII & UniCode

난독화

PE 파일 분석도구  

automatic analysis 

Malicious Code Analysis

 

 

 

 

 

지난 정적 분석을 마지막에 배웠고 그것에 대한 정의는 아래와 같다 

 

 

API 는 무엇일까? 

 

응용프로그램 인터페이스(API application Program Interface)
소프트웨어 개발에서 호환성을 위해 지켜야 하는 추상적인 원칙이다 
(오픈소스가 아니기때문에 API가 나옴) 

 

만약 모든 운영체제가 오픈소스라면 API가 필요없다 ! 

물론 다양한 이유에서 모든 운영체제가 오픈소스로 될수는 없다고 본다. 

 

 

시스템 관련 파일
EXE : 일반적인 파일 확장자로 컴퓨터 프로그램의 실행 파일을 가리킨다 
DLL : 내부에는 다른 프로그램이 불러서 사용할 수 있는 다양한 함수들을
가지고있다 (도서관에서 책이 있는 라이브러리 라고 생각하면된다 ) 
SYS : windows 와 MS-DOS 운영체제의 파일 확장자. 운영체제의 구성파일로 사용된다 


 

 

 

PE (Portable Executable) 

 

 

 

 

리눅스나 유닉스에서는 아래처럼 보이게 된다

 

 

 

 

 

 

IAT (Import Address Table) 은 뭘까?

 

 

 

 

쉽게 정리하자면  PE 파일을 로딩할떄 IAT를 이용해 API 를 참조하는것이다 

 

 

 

 

 

 

 

 

 

 

 

그러면이제 이러한파일중 정적 분석은 어떻게할까?

 

 

 

 

이전시간에 몇몇  안티바이러스 도구로 악성여부를 확인하는게 있었다 

그리고 해시를 사용해서 변조를 파악해 무결성을 따진다.

문자열,함수,헤더에서도 정보수집이 가능하다

그리고 다양한 방법, 도구를 사용해서 정보를 수집해야한다

 

 

 

 

 

 

 

 

 

 

 

그럼 저위에서 말한 해시값을 좀더 자세히 알아보자 

 

 

 

 

 

 


MD5(128bit), SHA-1(160) , SHA-2(224,256 ,384,512)
특징 : 동일한 메세지가 입력되면 동일한출력값 반환

 

그러면 이렇게 128... 224..256 점점 커진다 

 

왜그럴까?

 

바로 충돌을 방지하기 위해서이다 

 

그에대한 성질을 잘 설명한 "생일의 역설" 이 있다 

당신이라면 어디에 걸것인가? 

 

이미 알고있는사람이라면 "있다" 에 넣을것이다 

 

 

그이유가 궁금하면 아래의 링크를 찾아가보자 

 

https://m.ppomppu.co.kr/new/bbs_view.php?id=humor&no=516564 

 

생일의 역설

여기를 눌러 링크를 확인하세요

m.ppomppu.co.kr

 

해시함수의 특징과 활용은 아래와 같다

 

 
활용 : 데이터 무결성, 데이터 암호화, 해시테이블

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


쇄도효과(Avalanche Effect) 눈사태 효과

 

 

해시코드가 1개라도 바뀌면 전부 바뀐다 그걸우리는 
쇄도효과(Avalanche Effect) 눈사태 효과 라고 말한다 

즉 , 입력값의 작은 변화에도 결과 값이 큰 변화로 도출되는 효과.
변경되는 부분에서 어떠한 규칙성도 찾을 수 없다 .

 

 

 

 

 

 

 

 

그럼 위와같이 계속바뀌는 파일을 찾으려면 

아래의 문자열을 잘 찾는게 중요하다 그럼 문자열이란 무엇일까? 

 

 

 

 

 

 

문자열에는 ASCII 와 UNICODE 포멧이 있다

 

 

 

ASCII 와 UNICODE 의 차이를 문자열 "BAD" 를이용해서 아래처럼 표현할수있다. 

 

 

ASCII 포맷은 각 문자를 1바이트로 표현하며, 문자열의 끝을 나타내기 위해 NULL 종결자인 00을 추가한다. "BAD" 문자열의 경우, 각 문자인 'B', 'A', 'D'는 각각 ASCII 값으로 42, 41, 44이며, 이후에 NULL 종결자 00이 추가된다.

 

UNICODE 포맷은 각 문자를 2바이트로 표현하며, 문자열의 끝을 나타내기 위해 두 개의 NULL 종결자 00 00을 추가한다. "BAD" 문자열의 경우, 각 문자는 'B', 'A', 'D'로, UNICODE 값으로는 0042, 0041, 0044이며, 이후에 두 개의 NULL 종결자 00 00이 추가된다.

 

 

 

 

 

 

 

 

 

 

 

 

우리가 이전 OllyDBG로 unpacking 을 한적이있다 

왜냐면 Packing 이 되어있으면 모든파일을 볼수 없었기 때문이다 

아래의 그림에서 그이유가 나온다 

 

 

 

 

 

 

 

 

 

이렇게 보기 힘들게 Packing을 하는게 있는데 난독화라는 것또한 소프트웨어 코드를 읽기 어렵게 만드는 기술이 있다.

주로 보안, 지적 재산권 보호, 소프트웨어의 역공학 방지 등의 목적으로 사용된다.

 

 

 

 

 

 

 

 

 

 

그리고 아래는 과정이다

 

 

 

그리고 어떻게 암호화가 되어있냐면 아래처럼 되어있다

 

 

 

 

예를 들어 AB 라는 글씨가 CD 로 바뀌는 것 이또한 ASCII 를 이용해 ASCII  값에서 특정값(2) 을 조금 더해서 

EF가 나오게 만드는 것또한 난독화라고 할수있다( 암호화도 이게 속할수있음 ) 

 

 

 

 

 

 

 

 

 

 

 

 

 

다시 윈도우즈 실행파일의 구조인 PE 로 돌아와서 더 자세히 보자 

 

 

 

 

 

 

 

 

이중에서 EXE 와 DLL 을 가장 많이 접하게 되고 나머지는 아주 가끔 접할수있을것이다 

 

 

 

 

 

 

 

 

 

도구로는 PEview 하고 PEid 로 가장많이 제일먼저쓰이고 패킹이 되어있는지 안되어있는지 그리고 구조를 보기위에서 위에 2 가지는 가장많이 쓰일것이다. 

 

 

 

 

 

 

 

 

 

생성과정은 아래와 같다

우리가 리버싱에서 배웠던거랑 익숙한게 보인다 

만약 실행파일에 있는 Header 와 Text, data 부분이 궁금하면 

아래에서 자세히 볼수있다

 

굉장히 중요하니 한번 보고 오는걸 추천한다 

 

https://sarimus.tistory.com/85

 

Reverse Engineering DAY_004 PE 파일 구조, 정적 분석, PEview, PE File 생성과정, DOS_Header, DOS_Stub, NT_Header, Li

배울내용: PE 파일 구조 정적 분석 PEview PE File 생성과정 DOS_Header DOS_Stub NT_Header Little Endian Big Endian 리틀 엔디안 빅엔디안 디버거 도구 PE 파일 Reversing Engineering 리버싱 엔지니어링 기초 지난 학습

sarimus.tistory.com

 

 

 

원래는 데이터가 비었지만 채우다 보면 아래처럼 다 채워지게 된다 

 

 

 

 

 

 

 

 

728x90