leejhstory

동적분석과 정적분석 본문

악성코드 분석/악성코드 분석 강의 정리

동적분석과 정적분석

LeeJHstory 2019. 6. 7. 17:25

정적 분석

- 파일을 실행하지 않고 해당 프로그램에 관련된 정보를 얻는 방법

 

1. 파일의 종류 판별(엉뚱한 확장자인 파일이 있을 수 있음)

- 파일을 바이너리 상태로 열어보는 것

- 파일의 종류별로 자신만의 시그니처(signature)를 가짐

 (Ex. MZ)

2. 기존 컴퓨터 백신프로그램에서 진단되는지 확인

- 자신이 사용하는 백신프로그램에서 진단되지 않는다고 확실히 정상이라고 보장하지 못함.

- 백신에 따라 악성코드를 진단하지 못하는 회사도 존재(다양한 백신프로그램 사용)

 

3. 파일 구조를 확인

- PE 구조를 확인해서 섹션 명이 이상한 이름인지를 확인

- 지정된 규칙은 존재하지 않지만 일반적인 프로그램은 .text, .rsrc, .data 등 흔히 사용되는 섹션 명 사용

- 악성코드는 다른 이름을 사용하는 경우가 많음

 

4. 해당파일이 실행압축 여부 확인

- 악성코드는 90%이상이 실행압축

(실행코드를 알고리즘에 의해 압축을 하고 실행하면 메로리 상에서 실행코드의 압축을 해제하는 방식으로 압축해제 프로그램이 필요하지 않고 실행프로그램의 사이즈를 줄인다.)

- 실행압축 여부와 어떤 실행압축 알고리즘을 사용했는지 확인하면 정상과 악성을 구분하는데 도움이 됨.

 

5. 문자열 확인

- 프로그램에는 에러 메시지, 출력 메시지, 프로그램 처리와 관련된 메시지 등 다양한 문자열이 존재

- 이러한 문자열은 해당 파일의 특성을 판단하는데 도움

- 악성코드의 경우 제작자의 메시지 혹은 악성코드의 특징적인 문자열이 있는 경우도 있다.

 

6. 파일 비교

- 바이너리와 같이 해당 시스템의 파일을 변형하는 악성코드는 다른 시스템의 파일과 비교해보는 것으로 악성유무를 확인할 수 있다.

- 감염 시스템과 정상 시스템에서 같은 이름의 파일을 바이너리 상태에서 비교했을 떄 파일상에 차이가 있다면 악성파일에 의해 변조를 의심할 수 있다.

 

7. 디스어셈블링

- 실행브로그램은 컴퓨터에서 실행되기 위해 명령어 코드를 가지고 있다.

- 일반 파일 상태에서는 기계가 인식할 수 있도록 기계어인 0과 1로 이루어진 상태

- 디스어셈블링 : 기계어와 1대 1로 매치되는 어셈블리 언어로 변환해 주는 역할

- 어셈블리어로 변환된 상태에서는 사람이 해당 명령을 분석해서 어떤 명령을 수행하는지 확인하고 악성여부를 판단할 수 있다.

 

동적분석

- 해당 프로그램을 실행한 후 시스템에서 동작하는 형태를 분석

- 시스템의 상태 변화를 모니터링 하는 방법과 프로그램을 디버깅하는 방법이 있다.

 

모니터링 방법

- 해당 프로그램의 실행전 상태와 실행 후에 시스템에 어떤 변화가 발생했는지 확인하는 방법

- 확인할 요소 : 파일, 프로세스, 레지스트리, 네트워크

 

* 파일 

- 악성코드는 자신의 복사본을 생성

1) 윈도우즈 부팅 시 자동실행

2) 악성파일을 찾을 수 없도록 설정변경

3) 윈도우즈 방화벽 무력화

4) 윈도우즈 업데이트 무력화

5) 다양한 AV실행 방해

6) 다른 프로그램 실행 시 자신을 실행

7) 레지스트리 편집기, 작업관리자 실행 방해

 

- 다른 파일을 감염

1) 바이러스의 경우 파일을 감염시키는데 모니터링을 통해 많은 파일이 수정되고 있는 것을 확인한다면 바이러스에 감염되었다는 것을 의심.

 

- 파일 삭제

1) 대표적인 경우는 컴퓨터 백신프로그램과 악성코드 분석과 관련된 파일을 삭제하는 것, 악성코드의 분석 및 치료를 방해할 목적으로 해당 프로그램을 삭제

 

* 레지스트리

- 레지스트리는 윈도우즈 설정의 중요한 저장장소

- 악성코드는 레지스트리 변경을 통해 다양한 작업을 수행

1) 윈도우즈 부팅 시 자동실행

2) 악성파일을 찾을 수 없도록 설정변경

3) 윈도우즈 방화벽 무력화

4) 윈도우즈 업데이트 무력화

5) 다양한 AV실행 방해

6) 다른 프로그램 실행 시 자신을 실행

7) 레지스트리 편집기, 작업관리자 실행 방해

 

* 프로세스

- 프로세스 리스트를 확인해 보면 의심되는 프로세스를 찾을 수 있다.

- 악성코드의 경우 사용자의 조작과 무관하게 지속적으로 악성행위를 위해 동작을 수행

(일반적인 프로그램을 사용자의 조작이 없을 경우 CPU사용량이 지속적으로 나타나지 않는다.)

- 1개 이상의 악성프로세스가 함께 동작하는 경우도 존재

(하나의 프로세스를 사용자가 종료하면 다른 프로세스가 다시 실행)

 

* 네트워크

1) 다른 악성코드의 다운로드(다운로더)

2) 백도어 오픈

3) 정보유출

4) 좀비 시스템

 

분석 절차

- 정상/악성 판별

1) 백신 프로그램 진단

2) 파일 종류 및 파일명 확인

3) 파일 구조 및 실행압축 확인

4) 문자열 확인

5) 파일 비교

6) 실행 후 시스템 모니터링

- 상세 분석 및 치료

1) 실행 후 시스템 모니터링

2) 리버스 엔지니어링

요약

'악성코드 분석 > 악성코드 분석 강의 정리' 카테고리의 다른 글

동적분석  (0) 2019.06.08
정적분석  (0) 2019.06.08
악성코드 분석(PE 구조3)  (0) 2019.06.07
악성코드 분석(PE 구조2)  (0) 2019.06.06
악성코드 분석(PE 구조)  (0) 2019.06.06
Comments