악성코드 분석은 시스템 보안을 유지하는 데 필수적인 과정
따라서 악성코드의 작동 방식을 이해하고 이를 탐지 및 제거하기 위해서는
정적분석과 동적분석이라는
두 가지 주요 분석 방법을 활용해야 함
정적분석
동적분석
정적분석 | 동적분석 | |
---|---|---|
실행 여부 | 실행 X | 실행 O |
분석 속도 | 빠름 | 느림 |
시스템 안전 | 안전 | 감염 가능성 존재 |
활용 분야 | 코드 분석 / 구조 분석 | 프로세스 분석 / 파일, 레지스트리 분석 / 네트워크 분석 |
Exeinfo PE는 프로그램의 구조, 섹션 정보, 함수 목록, 문자열, 패킹 정보 등을 확인할 수 있는 대표적인 패킹 여부 확인 툴
(주소 : http://www.exeinfo.byethost18.com/)
홈페이지에 들어가서 exeinfope.zip 파일을 다운받고 exeinfope.exe 파일을 실행해주면 밑 이미지처럼 나온다
이후 아무.exe 파일을 선택해 Exeinfo PE 창에 드래그하면
위의 창처럼 뜨는데, 위는 exeinfo.exe 파일을 드래그한 결과
밑에 하늘색 텍스트박스에 정보가 표시되는데 UPX 로 패킹되어있다는 정보가 나타나고,
또한 패킹이 되었다면 뭐에 의해 패킹되었는지, 또 언패킹 방법은 무엇인지 텍스트박스에 제공
여기서 실행파일을 압축하는 것을 패킹이라고 하는데
압축파일과 패킹의 차이점은 파일이 있을 때 압축을 하게되면 .zip 등의 확장자명으로 변환되고 실행이 되지 않지만, 패킹된 파일은 동일한 .exe 확장자명을 가지면서 실행이 가능
UPX는 대표적인 언패킹 툴
언패킹이란 패킹의 반대되는 개념으로, 패킹했던 파일의 패킹을 푸는 것을 의미
대표적인 언패킹 툴로 UPX 존재
(주소 : https://github.com/upx/upx/releases/tag/v3.95)
주소에 들어가면 위의 사진처럼 뜨는데 자기 컴퓨터에 맞는 버전으로 다운받은 후, 다운 받았으면 명령 프롬프트에 들어가 명령 프롬프트 창에 upx라고 입력하면 밑의 사진처럼 뜸
이후
upx 된 프로그램을 언패킹하고 싶으면 ‘-d (언패킹할 프로그램)’ 을 입력
밑 사진은 언패킹한 결과
Bintext는 파일에 포함된 문자열들을 GUI(Graphic User Interface)의 형태로 보여주는 툴
해당 툴을 사용할 때는 패킹이 된 파일을 스캔할 경우에는 정보가 제대로 나오지 않기 때문에, 반드시 언패킹을 진행 한 후에 사용해야 함
(주소 : https://softfamous.com/bintext/)
사용방법은
1. Bintext 실행 후
2. 우측 상단에 Browse 박스를 클릭해 스캔하고 싶은 파일을 불러온 후 Go클릭
3. 해당 파일에 import한 DLL 정보와 사용된 함수 확인
4. 네트워크 행위를 하는 파일의 경우에는 IP주소와 URL정보도 확인 가능
PEview는 Windows용 실행 파일인 PE( Portable Executable )의 구조를 분석할 수 있는 프로그램
PE File Header의 내용을 볼 수 있고 여러 정보들을 얻을 수 있음
(주소 : http://wjradburn.com/software/)
빨간 네모박스에 표시된 Virtual Size (가상 크기)와 Size of Raw Data (원래 데이터 크기)가 다르다면, 패킹이 되어있다는 뜻
따라서 위 이미지를 보면 해당 파일은 가상크기와 원래 데이터 크기가
다르기 때문에 패킹이 되어있다는 것을 확인 가능
Process Explorer은 프로세스 스레드, 권한, 네트워크, 메모리 등 다양한 정보를 확인할 수 있는 동적분석 툴
프로세스 내부에서 호출하는 DLL(동적 링크 라이브러리) 내용 검색 가능
위 사진을 보면 알 수 있듯이 시스템에서 실행 중인 프로세스들을 확인 가능함
Process Moniter은 특정 레지스트리, 파일 시스템, 네트워크, 프로세스, 스레드 행위들을 실시간으로 모니터링할 수 있는 동적분석 툴
RegShot은 악성코드 실행 전후의 레지스트리의 스냅샷을 찍고 비교하는 방법의 동적분석
사용방법
악성코드 실행파일을 실행하기 전의 상태를 스냅샷을 찍음 - 1st shot
악성코드 실행파일을 실행시킨 후 스냅샷을 찍음 - 2nd shot
이후, Compare 버튼을 눌러 실행 전 후의 레지스트리 상태를 비교
WireShark네트워크 패킷을 캡처하고 분석하는 오픈소스 LAN 분석 도구
이 도구를 사용하여 악성코드 실행 시 어떤 네트워크 행위를 하는지 확인 가능
위쪽 부분은 시작, 종료, 다시시작 기능을 할 수 있는 부분
중간 부분은 호스트간에 주고받은 패킷을 나열해 놓은 부분
오른쪽 밑 부분은 실제 주고받은 내용은 16진수로 표현한 것
정적분석을 진행하던 동적분석을 진행하던 항상 가상환경 내에서 실행하기
정적분석, 동적분석 정보 범위 - 각각마다 활용할 수 있는 유형이 존재
정적분석 시 가장 먼저 확인해야 할 점 - 패킹 여부 확인 - Exeinfo pe
만약 패킹이 되어있으면 무조건 언패킹 시행
UPX는 여러 언패킹 도구 중 가장 흔한 툴 - 구글 검색으로 쉽게 구할 수 있음
Bintext 수행 시 중요하게 봐야할 요소 - IP주소 / URL 도메인 주소 / 실행 파일 / 명령어 사용 이력 / 그 외 함수에 대한 정보
PEview를 통해 복합적인 정보 확인 가능 (Exeinfo, Bintext에서 확인한 내용 크로스체크 목적)
패킹에 대한 유무, 분석하고자 하는 파일의 원래 확장자, 어떠한 함수를 포함하고 있는지, 언제 생성된 파일인지 등을 확인 가능
동적분석 진행 시 스냅샷을 활용
동적분석으로 분석할 때는 2~3번 진행하면서 이상현상이 악성코드로 인해 발생한 이상현상인지 여러번 다시 확인 (시간적으로 많이 소요)
Process Moniter 이용 시 필터링 기능 반드시 활용, 노가다성이 짙은편
하나의 툴을 사용하더라도 정확하게 툴에 대한 사용법을 익히고 다음 툴로 넘어가기
WireShark를 해석하기 위해선 TCP/UDP, 프로토콜, 6개의 플래그 비트, 3way 4way handshaking 등 네트워크에 대한 지식을 인지하고 있어야 해석가능