10. 악성코드 정적, 동적 분석

SJH·2024년 6월 14일
0
post-thumbnail

정적분석과 동적분석의 특징

악성코드 분석은 시스템 보안을 유지하는 데 필수적인 과정
따라서 악성코드의 작동 방식을 이해하고 이를 탐지 및 제거하기 위해서는
정적분석동적분석이라는
두 가지 주요 분석 방법을 활용해야 함

정적분석

  • 악성코드를 직접 실행하지 않고 코드, 데이터 구조, API 호출 등을 분석하여 악의적인 행위를 추론하는 분석방법
  • Ex) 패킹 여부 확인 Tool / 언패킹 Tool / String 분석 Tool / PE 분석도구 Tool

동적분석

  • 실제 환경에서 악성코드를 실행하여 악의적인 행위를 직접 관찰하고 분석하는 방법
  • 실행 환경 및 상호작용에 대한 정보를 포함하여 악성코드의 전체적인 행동 파악 가능
  • Ex) 프로세스 변화 / 파일시스템 변화 / 레지스트리 변화 / 네트워크 변화

정적분석과 동적분석의 주요 차이점

정적분석동적분석
실행 여부실행 X실행 O
분석 속도빠름느림
시스템 안전안전감염 가능성 존재
활용 분야코드 분석 / 구조 분석프로세스 분석 / 파일, 레지스트리 분석 / 네트워크 분석

정적분석 Tool - Exeinfo PE

Exeinfo PE는 프로그램의 구조, 섹션 정보, 함수 목록, 문자열, 패킹 정보 등을 확인할 수 있는 대표적인 패킹 여부 확인 툴
(주소 : http://www.exeinfo.byethost18.com/)

홈페이지에 들어가서 exeinfope.zip 파일을 다운받고 exeinfope.exe 파일을 실행해주면 밑 이미지처럼 나온다

이후 아무.exe 파일을 선택해 Exeinfo PE 창에 드래그하면

위의 창처럼 뜨는데, 위는 exeinfo.exe 파일을 드래그한 결과
밑에 하늘색 텍스트박스에 정보가 표시되는데 UPX 로 패킹되어있다는 정보가 나타나고,
또한 패킹이 되었다면 뭐에 의해 패킹되었는지, 또 언패킹 방법은 무엇인지 텍스트박스에 제공

여기서 실행파일을 압축하는 것을 패킹이라고 하는데
압축파일과 패킹의 차이점은 파일이 있을 때 압축을 하게되면 .zip 등의 확장자명으로 변환되고 실행이 되지 않지만, 패킹된 파일은 동일한 .exe 확장자명을 가지면서 실행이 가능

정적분석 Tool - UPX

UPX는 대표적인 언패킹 툴
언패킹이란 패킹의 반대되는 개념으로, 패킹했던 파일의 패킹을 푸는 것을 의미
대표적인 언패킹 툴로 UPX 존재
(주소 : https://github.com/upx/upx/releases/tag/v3.95)

주소에 들어가면 위의 사진처럼 뜨는데 자기 컴퓨터에 맞는 버전으로 다운받은 후, 다운 받았으면 명령 프롬프트에 들어가 명령 프롬프트 창에 upx라고 입력하면 밑의 사진처럼 뜸

이후
upx 된 프로그램을 언패킹하고 싶으면 ‘-d (언패킹할 프로그램)’ 을 입력
밑 사진은 언패킹한 결과

정적분석 Tool - Bintext

Bintext는 파일에 포함된 문자열들을 GUI(Graphic User Interface)의 형태로 보여주는 툴
해당 툴을 사용할 때는 패킹이 된 파일을 스캔할 경우에는 정보가 제대로 나오지 않기 때문에, 반드시 언패킹을 진행 한 후에 사용해야 함
(주소 : https://softfamous.com/bintext/)

사용방법은
1. Bintext 실행 후
2. 우측 상단에 Browse 박스를 클릭해 스캔하고 싶은 파일을 불러온 후 Go클릭
3. 해당 파일에 import한 DLL 정보와 사용된 함수 확인
4. 네트워크 행위를 하는 파일의 경우에는 IP주소와 URL정보도 확인 가능

정적분석 Tool - PEview

PEview는 Windows용 실행 파일인 PE( Portable Executable )의 구조를 분석할 수 있는 프로그램
PE File Header의 내용을 볼 수 있고 여러 정보들을 얻을 수 있음
(주소 : http://wjradburn.com/software/)

빨간 네모박스에 표시된 Virtual Size (가상 크기)와 Size of Raw Data (원래 데이터 크기)가 다르다면, 패킹이 되어있다는 뜻

따라서 위 이미지를 보면 해당 파일은 가상크기와 원래 데이터 크기가
다르기 때문에 패킹이 되어있다는 것을 확인 가능

동적분석 Tool - Process Explorer

Process Explorer은 프로세스 스레드, 권한, 네트워크, 메모리 등 다양한 정보를 확인할 수 있는 동적분석 툴
프로세스 내부에서 호출하는 DLL(동적 링크 라이브러리) 내용 검색 가능

위 사진을 보면 알 수 있듯이 시스템에서 실행 중인 프로세스들을 확인 가능함

동적분석 Tool - Process Moniter

Process Moniter은 특정 레지스트리, 파일 시스템, 네트워크, 프로세스, 스레드 행위들을 실시간으로 모니터링할 수 있는 동적분석 툴

동적분석 Tool - RegShot

RegShot은 악성코드 실행 전후의 레지스트리의 스냅샷을 찍고 비교하는 방법의 동적분석

사용방법
악성코드 실행파일을 실행하기 전의 상태를 스냅샷을 찍음 - 1st shot

악성코드 실행파일을 실행시킨 후 스냅샷을 찍음 - 2nd shot

이후, Compare 버튼을 눌러 실행 전 후의 레지스트리 상태를 비교

동적분석 Tool - WireShark

WireShark네트워크 패킷을 캡처하고 분석하는 오픈소스 LAN 분석 도구
이 도구를 사용하여 악성코드 실행 시 어떤 네트워크 행위를 하는지 확인 가능

위쪽 부분은 시작, 종료, 다시시작 기능을 할 수 있는 부분
중간 부분은 호스트간에 주고받은 패킷을 나열해 놓은 부분
오른쪽 밑 부분은 실제 주고받은 내용은 16진수로 표현한 것

보완점

  • 정적분석을 진행하던 동적분석을 진행하던 항상 가상환경 내에서 실행하기

  • 정적분석, 동적분석 정보 범위 - 각각마다 활용할 수 있는 유형이 존재

  • 정적분석 시 가장 먼저 확인해야 할 점 - 패킹 여부 확인 - Exeinfo pe
    만약 패킹이 되어있으면 무조건 언패킹 시행

  • UPX는 여러 언패킹 도구 중 가장 흔한 툴 - 구글 검색으로 쉽게 구할 수 있음

  • Bintext 수행 시 중요하게 봐야할 요소 - IP주소 / URL 도메인 주소 / 실행 파일 / 명령어 사용 이력 / 그 외 함수에 대한 정보

  • PEview를 통해 복합적인 정보 확인 가능 (Exeinfo, Bintext에서 확인한 내용 크로스체크 목적)
    패킹에 대한 유무, 분석하고자 하는 파일의 원래 확장자, 어떠한 함수를 포함하고 있는지, 언제 생성된 파일인지 등을 확인 가능

  • 동적분석 진행 시 스냅샷을 활용
    동적분석으로 분석할 때는 2~3번 진행하면서 이상현상이 악성코드로 인해 발생한 이상현상인지 여러번 다시 확인 (시간적으로 많이 소요)

  • Process Moniter 이용 시 필터링 기능 반드시 활용, 노가다성이 짙은편

  • 하나의 툴을 사용하더라도 정확하게 툴에 대한 사용법을 익히고 다음 툴로 넘어가기

  • WireShark를 해석하기 위해선 TCP/UDP, 프로토콜, 6개의 플래그 비트, 3way 4way handshaking 등 네트워크에 대한 지식을 인지하고 있어야 해석가능

profile
보안, 클라우드 공부정리 블로그

0개의 댓글