2024. 3. 10. 20:33ㆍInformation Security 정보보안/Malicious Code Analysis 악성 코드 분석
배울내용:
정적분석 이란?
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
해시함수의 특징과 활용은 아래와 같다
활용 : 데이터 무결성, 데이터 암호화, 해시테이블
쇄도효과(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
원래는 데이터가 비었지만 채우다 보면 아래처럼 다 채워지게 된다