leejhstory
동적분석과 정적분석 본문
정적 분석
- 파일을 실행하지 않고 해당 프로그램에 관련된 정보를 얻는 방법
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 |