[리팩토링] #11 정적 분석, 동적 분석, tools

Hyungjun·2024년 11월 10일

리팩토링-보안

목록 보기
5/11

Mission

  • 악성코드의 동적분석과 정적분석의 특징 및 차이점
  • 동적분석, 정적분석을 위한 Tool 조사 및 간단한 사용법

#1 악성코드 분석방법

정적분석

정적분석은 악성코드를 실행하지 않고 코드 자체를 분석하는 방법이다.

특징:

  • 악성코드를 실행하지 않고 분석하므로 안전하다.
  • 소스 코드, 바이너리 코드, 또는 역어셈블된 코드를 대상으로 한다.
  • 코드의 구조, 사용된 문자열, API 호출 등을 분석한다.
  • 악성코드의 전체적인 구조와 기능을 파악하는 데 유용하다.

동적분석

동적분석은 악성코드를 실제로 실행하면서 그 동작을 관찰하고 분석하는 방법이다.

특징:

  • 악성코드를 실행 환경에서 직접 실행하여 분석한다.
  • 실제 동작, 네트워크 통신, 파일 시스템 변경 등을 관찰할 수 있다.
  • 런타임 문제, 메모리 누수, 경쟁 조건 등을 발견할 수 있다.
  • 악성코드의 실제 영향과 행동을 직접 확인할 수 있다.

주요 차이점

항목정적분석동적분석
실행 여부실행하지 않음실행함
안전성높음낮음 (격리된 환경 필요)
분석 대상코드 자체실행 중 동작
분석 깊이전체 코드 구조 파악 가능실제 동작만 관찰 가능
은닉 기법 대응어려움효과적
시간 소요상대적으로 빠름상대적으로 느림

#2 분석 도구 및 사용법

정적분석 도구

  • Virustotal(기초 분석) : 백신에 따른 악성코드 확인과 해시값 조회를 통한 과거 검사 이력 확인

  • Exeinfo(패킹 여부 확인) : PE파일 생성에 사용했던 패커나 컴파일러를 확인할 수 있다
    (*PE : 악성코드의 실행 파일이나 악성 라이브러리 등을 포함하는 형식)

Exeinfo 사용법

좌측 그림에서 우측 상단에 체크된 파일 모양 박스를 클릭해 파일을 불러 올 수 있다.
파일을 스캔하게 되면 우측과 같은 모습을 확인할 수 있음
상단부터 체크된 곳은 알아둬야 할 것 으로 보여집니다.
상단에 스캔한 파일의 이름
Image is 32 bit executable 의 경우 32 bit 로 구동이 된다 라는 것을 알려주는 것
UPX 0.89 - 3.xx 의 경우 ' UPX ' 라는 패킹 툴로 패킹이 된 것을 확인 할 수 있다.
unpack "upx.exe -d" from http:// ........... 의 경우 해당 UPX 로 패킹처리 된 것을 언패킹 하기 위한 정보가 담겨져 있다.

  • Bin Text(문자열 확인) : 악성코드 파일로부터 문자열 정보를 추출
    -> 파일 내의 문자열을 분석하여 IP주소, 도메인 주소, 명령어를 사용하는 경로 검사 등을 알 수 있다.


BinText 는 파일에 포함된 문자열들을 GUI 의 형태로 보여주는 툴이다.
해당 툴의 경우 패킹이 된 파일을 스캔할 경우에는 제대로된 정보가 나오지 않기 때문에 언패킹을 꼭 진행한 후에 사용을 해야한다.

BinText 사용법

Bintext 를 실행한다.
우측 상단 Browse 박스를 클릭해 스캔하고 싶은 파일을 불러온 후 우측에 Go 박스를 클릭한다.
해당 파일에 포함된 문자열들이 우측 그림과 같이 아래에 나열된다.
해당 파일의 문자열을 확인해 해당 파일에 Import 한 DLL 의 정보와 함께 사용된 함수를 확인할 수 있다.
네트워크 행위를 하는 파일의 경우에는 해당 파일에 포함된 IP 주소와 URL 정보 등도 확인이 가능할 것으로 보인다.

동적분석 도구

Process Explorer(프로세스) : 현재 동작중이거나 새로 실행, 종료 되는 process들에 대해서 트리형식을 실시간으로 볼 수 있다
-> 현재 사용되는 시스템의 리소스를 알 수 있고, 프로세스의 상세정보를 확인할 수 있다

<그림 1> 모습의 경우 Process Explorer 를 실행을 하였을 때 모습이다.
현재 실행되고 있는 프로세스들을 관리하고 분석할 수 있는 툴이다.
현재 실행되는 프로세스를 트리 형식으로 보여주는 것이 특징이다.
현재 사용되는 시스템의 리소스를 알 수 있고, 실행중인 프로세스의 상세정보를 파악할 수 있다.

분석하고 싶은 프로세스를 우클릭하게 될 경우 좌측 사진과 같이 여러 메뉴들이 나오는 것을 확인할 수 있다.
좌측 메뉴를 보면 프로세스 종료, 재시작, 정지 기능도 가능하고, Create Dump 를 이용해 덤프파일을 생성해메모리를 분석하는 등의 작업도 할 수 있을 것으로 보인다.
그아래 Properties 라는 메뉴를 볼 수 있는데 말 그대로 ' 속성 ' 이라는 뜻이다.
해당 메뉴를 들어갈 경우 우측과 같은 모습을 확인할 수 있는데 상단에 상당히 다양한 탭을 이용해 해당 프로세스가 리소스를 얼마나 사용하는지 네트워크 통신을 하는지 해당 프로세스에 포함된 문자열 등을 손쉽게 확인할 수 있음

Autoruns(파일 및 레지스토리) : 시스템에서 실행되고 있는 프로그램 및 서비스를 볼 수 있고 관리할 수 있게 해준다
-> 악성코드가 시스템에 설치되었거나 실행되었는지 확인할 수 있다

Autoruns 는 윈도우가 부팅 후 자동으로 시작되는 서비스 또는 프로그램을 모니터링 할 수 있는 툴이다.
해당 툴은 보통 악성 코드 분석 시 해당 악성 파일을 실행하기 전 스냅샷을 촬영하고 실행 후 스냅샷을 촬영해 두 개를 비교하는 것으로 사용한다.
스냅샷을 촬영 후 비교하는 방법

파일 실행 전 좌측 상단 플로피 디스크 버튼을 클릭 해 저장한다.
분석할 파일을 관리자 권한으로 실행한다.
아래 <그림 2>와 같이 좌측상단에 File 탭에서 Compare 버튼을 클릭해 이전에 저장한 파일을 불러오게 되면 두 개의 스냅샷을 비교해 프로그램에 어떤 부분이 변경되었는지 확인할 수 있게된다.

WireShark(네트워크) : 네트워크 패킷 캡쳐 및 분석 도구
-> 악성코드가 네트워크 트래픽을 생성하는 경우, 이를 캡쳐하여 분석한다
-> 모든 패킷에 대한 정보를 실시간으로 기록하며 패킷 내의 프로토콜 정보를 세부적을 파악이 가능하다.

출처: https://maker5587.tistory.com/18

profile
Cloud Security / DevSecOps / AWS

0개의 댓글