악성코드 정적 분석 방법
기초 정적 분석이란?
- 악성코드 분석 시 가장 먼저 진행
- 악성코드 연구의 시작 단계
- 프로그램의 기능을 파악하기 위해 코드나 프로그램의 구조를 분석
- 프로그램을 실행시키지 않음
분석 방법
- 악성 여부를 판단하는 안티바이러스 도구 사용(Virstotal 등)
- 악성코드 판별 해시 사용
- 파일의 문자열, 함수, 헤더에서 개략적인 내용 확인 (PEview, pestudio, Bin Text, Strings)
Virustotal 이란?
바이러스 토탈은 구글의 자회사로, 바이러스나 웜 트로이 등을 검사하고 막는 사이트이다.
여러 개의 백신 엔진으로 검사하여 그 결과를 투명하게 보여주며, 여러 개의 파일 검사도 가능하다.
파일 형식에 따라 해당 파일을 분석한 결과를 보여주기도 한다.
인터넷에 바이러스 토탈 또는 virustotal을 검색하여 접속하거나, 브라우저 주소창에 virustotal.com을 입력하여 접속할 수 있다.
사용자의 취향에 따라 라이트 모드와 다크 모드를 선택하여 사용할 수 있다.
우측 상단에 달 모양을 클릭하면 다크 모드로 변환이 가능하다.
Virustotal 의 기능
바이러스 토탈은 파일, URL, 도메인, IP, Hash 등을 검사하는 기능을 가진 웹 페이지이다.
- 악성코드 기초 분석에 자주 사용되는 툴
- 약 70 여 개의 백신 엔진으로 의심되는 File, URL, Domain, IP, Hash 등을 무료로 분석
- 다양한 악성코드 및 파일 시그니처 DB를 보유하고 있으므로 파일 Hash 값을 통해 이전 악성코드 검사 기록 확인 가능
- 파일이나 URL에 대한 결과를 Community를 통해 서로에게 의견을 공유하는 기능이 있음
Virustotal 사용법
초기화면에 접속하면 File Tab이 보여진다.
File Tab은 의심스러운 파일을 직접 드래그 앤 드랍으로 업로드하여 파일을 분석하거나, Choose file을 눌러 파일을 업로드하여 분석해주는 기능이다.
윈도우의 기본 그림 파일 중 하나를 분석해보았다.
좌측 상단의 Score를 통해 몇 개의 엔진에서 악성으로 판단하는지 확인할 수 있으며, 악성개수/총 엔진개수로 표현한다.
그림4와 같이 악성이력이 확인되지 않은 경우 0/63으로 표현한다.
하단의 여러 엔진 이름과 'Undetected' 라고 기재된 것은 해당 엔진이 정상 파일로 인식했다고 볼 수 있다.
물론 바이러스 토탈의 결과는 절대적인 수치가 아니므로 맹신해서는 안되며, 설령 악성으로 나왔다고 해도 실제 악성 여부는 상세 분석을 통해 확인해야 한다. (대체로 중국 파일들이 악성으로 판단되는 경우가 종종 있다.)
악성코드 파일 샘플 중 하나를 분석해보았다.
좌측 상단을 보면 Score가 66/74로 74개의 엔진 중 66개의 엔진이 해당 파일을 악성으로 탐지했다는 의미이다.
악성코드로 진단된 경우 해당 엔진이 검사한 진단명이 확인이 되는데, AhnLab-V3의 경우 Trojan/Win.DownLoader로 진단한것으로 확인된다. Trojan은 트로이목마로, 정상적인 프로그램으로 위장한 악성 코드로 대부분의 악성코드에 포함된 경우가 많다.
우측 상단을 보면 Last Analysis Date를 확인할 수 있는데, 2 days ago 로 2일전에 동일 파일을 분석했다는 의미이다.
상단의 DETALS를 눌러보면 더 자세한 정보들을 확인 할 수 있다.
Basic properties를 보면 MD5, SHA-1, SHA-256 등과 같은 해시함수로 해당 파일의 해시값을 확인 할 수 있다.
File type으로 해당 파일이 Win32의 EXE 파일이라는 것을 확인할 수 있다.
PEiD packer 로 해당 파일이 패킹되지 않은 Microsoft Visual C++ 이라는 것을 확인할 수 있다.
DETALS 탭에서 밑으로 내려가보면 History와 Names를 확인할 수 있다.
History는 파일의 생성시간, 첫번째 제출시간, 마지막 분석 시간 등을 확인할 수 있다.
Names는 파일이 사용했던 파일명을 확인할 수 있으며, 파일 분석은 해시값으로 분석하기 때문에 파일명이 달라도 동일 해시값을 가진 경우 동일 파일로 판단한다.
DETALS 탭에서 밑으로 내려가보면 Sections와 Imports를 확인할 수 있다.
Sections는 PE 파일에서 프로그램의 실제 내용을 담고 있는 블록으로, PE 파일이 가상 주소 공간에 로드된 후 섹션 내용이 참고되고 실행된다. 여기서 PE 파일이란 윈도우의 실행 파일(exe)을 의미한다.
Sections의 종류는 다음과 같다.
.text - 코드 섹션 → 프로그램을 실행하기 위한 코드를 담는 섹션
.rdata - 읽기 전용 데이터 섹션 → 문자열 상수나 C++ 가상 함수 테이블 등을 배치
.data - 데이터 섹션 → 초기화된 전역 변수들을 담고 있는 읽고 쓰기가 가능한 섹션
.rsrc - 리소스 섹션 → 대화상자, 아이콘, 커서, 버전 정보 등의 윈도우 PE 파일이 담고 있는 리소스 관련 데이터들이 배치
Imports는 Import Address Table로 파일 내에 어떤 DLL파일, API 함수를 사용하는지 확인하여 해당 프로그램이 어떤 행위를 할 수 있는지 대략적으로 추측이 가능하다. DLL 파일의 좌측의 + 을 눌러서 어떤 API 함수를 사용하는지 확인이 가능하다.
URL Tab을 클릭한다.
URL Tab에서는 악성 도메인을 검색하여 해당 URL의 악성 여부를 확인할 수 있다.
실무에서는 특정 사이트의 악성 여부를 확인할 때 자주 사용한다.
한국인의 대표 사이트 네이버를 검사해보았다.
그림10과 같이 악성이력이 확인되지 않는 사이트로 결과가 나온다.
File Tab과 마찬가지로 여러 개의 백신 엔진들이 해당 사이트의 악성 여부를 판단한다.
실무에서는 피싱 사이트 또는 C&C (Command & Control) 서버 여부를 확인할 때 자주 사용한다.
위에서 언급했듯이, 여기서 악성 이력이 확인되어도 해당 결과를 맹신해서는 안되지만 특정 사이트에 접속하거나 다운로드를 받을 때 의심되는 부분이 있다면 참고하는 정도로 보면 될 것 같다.
Search Tab을 클릭한다.
Search Tab은 URL의 확장 버전으로, 종합적으로 검사할 수 있는 Tab으로 보면 될 것 같다.
URL, IP, Domain, Hash 등을 검사할 수 있으며, 바이러스 토탈의 DB로 이전에 검사한 기록을 확인 할 수도 있다.
8.8.8.8은 구글의 DNS 서버 주소이며, 그림12와 같이 악성 이력이 확인되지 않는 IP로 나온다.
상단에는 IP 주소와 해당 IP의 정보를 확인할 수 있다.
Virustotal 주의 사항
- 파일 업로드 시 압축된 파일보다는 원본 파일로 검사하는 것이 좋다.
- 압축 파일 업로드 시 ZIP 확장자 파일 업로드를 권장한다.
- 바이러스 토탈의 검사 결과를 맹신하지 않는다.
- 바이러스 토탈에 업로드된 파일은 커뮤니티에 공개되므로 기밀 또는 개인정보가 포함된 파일은 절대 업로드 하지 않는다.
악성코드 분석 시 활용 방법
악성코드 분석에는 크게 3가지 방법이 있다.
1. 기초 분석
2. 정적 분석
3. 동적 분석
바이러스 토탈의 경우 기초 분석에 해당하며, 악성코드의 기초 정보를 확인한다.
기초 정보 확인 후, 정적 분석, 동적 분석을 통해 해당 파일의 악성 여부를 판단해야 한다.
바이러스 토탈의 결과를 맹신하지 않아야 하며 악성코드 분석 시 참고자료 정도로 생각하며 상세 분석을 한다.
'보안 > 악성코드 분석' 카테고리의 다른 글
PE 헤더 분석 도구 (PEview, pestudio) 기능 및 사용법 (4) | 2024.07.23 |
---|---|
악성코드 분석 시 파일 내 문자열 확인 도구 (BinText, Strings) 기능 및 사용법 (3) | 2024.07.22 |
정적 분석 도구 PEiD, Exeinfo PE 및 UPX 기능 및 사용법 (0) | 2024.07.21 |
악성코드 분석 업무 설명 (0) | 2024.07.02 |
침해사고 분석 이해 (0) | 2024.07.01 |