본문 바로가기

4-3. 2023-2 심화 스터디/윈도우 악성코드 분석

[2023.10.14] 인프런 윈도우 악성코드(malware) 분석 입문 과정 강의 수강 - 섹션 2

3.1 악성코드 분석 방법

01 기초 정적 분석

비실행 실행
간략분석 기초 정적 분석 기초 동적 분석
상세분석 고급 정적 분석 고급 동적 분석

악성코드 분석의 네 가지 접근 방법

  1. 완전 자동화 분석
  • 정적 분석 및 동적 분석을 통해 악의적인 행위를 판단
  • 자동 분석 수행(파일 생성 수정 과정의 분석, 레지스트리 분석, 네트워크 분석 등)
  • 전문가에 의해 분석되는 만큼 상세하거나 정확하지 않을 수 있음
  • 악성코드 분석 제공 서비스

 

  1. 정적 속성 분석
  • 악성코드의 추가 분석을 위해 필요한 단계
  • 문자열 헤더 정보, 해시 값, 리소스 정보, 패킹 여부 등 신속하게 정보 획득
  • 정보들을 활용해 실행 파일 간의 비교 데이터베이스를 구성
  • 바이러스 토탈 서비스
  1. 대화형 동적 분석
  • 레지스트리, 파일시스템, 프로세스. 네트워크 활동을 이해하기 위해 분리된 가상 머신 환경에서 실행하며 분석
  • 메모리 분석을 위해 다른 행위를 추가적으로 분석
  • 악의적인 행위의 상세한 과정들을 확인
  • 분석가들의 분석 시간이 많이 소요
  1. 수동 코드 역공학 분석
  • 위 과정이 완료된 후에 추가적인 정보를 획득하기 위해 분석하는 행위
  • 수동 코드 역공한 분석이 필요한 예
    • 특정 루틴에 난독화가 되어서 복호화가 이루어지는 부분을 더 분석해 추가적인 정보를 획득
    • 악의적인 도메인 이름 생성 과정의 알고리즘 분석
    • 행동 분석 과정에서 자신을 숨기고 보여주지 않았던 부분으로 발생되는 다른 기능 이해

3.2.1 기초 정적 분석

  • 기초 정적 분석이란?
    • 악성코드 분석 시 가장 먼저 진행(악성코드 연구의 시작 단걔)
    • 프로그램의 기능을 파악하기 위해 코드나 프로그램의 구조를 분석(프로그램을 실행시키지 않음)
  • 분석방법
    • 악성 여부를 판단하는 안티바이러스 도구 사용
    • 악성코드 판별 해시 사용
    • 파일의 문자열, 함수, 헤더에서 개략적인

02 기초 정적 분석 도구

  • 악성코드의 지문 확인
    • 해시를 이름으로 사용
    • 악성코드 식별을 위해 해시 공유
    • 식별 여부를 위해 해시 검색
  • 문자열 검색
    • 프로그램 메시지 출력
    • URL 접속
    • 특정 위치로 파일 복사
  • 패킹 확인
    • 패킹 여부를 확인하고 언패킹하여 리버싱을 보다 쉽게 하기 위한 단계
  • PE세부 구조를 확인
    • 패킹징후
      • size of Raw Data(원래 데이터 크기)보다 Virtual Size(가상크기)가 월등히 크다면 다른 파일을 올리기 위함으로 의심해 볼 수 있다.
      • 섹션의 이름이 변경됨
  • DLL 의존성 조사
    • Dependency Walker
      • Kernel32.dll : 메모리, 파일, 하드웨어 접근과 조작
      • Advapi32.dll: 서비스 관리자, 레지스트리 같은 추가 윈도우 핵심 컴포넌트
      • User32.dll: 유저 인터페이스(버튼, 스크롤바, 사용자 행위 제어, 반응 컴포넌트)
      • Gdi32.dll: 그래픽 보기 및 조작
      • Ntdll.dll: 윈도우 커널 인터페이스
      • WS2_32.dll: 윈도우 소켓 네트워크
      • Wininet.dll: FTP, HTT
      • P, NTP와 같은 상위 수준 프로토콜 구현
  • 리소스 확인
  • 리소스 해커 사용
    • 아이콘 섹션
    • 메뉴 섹션
    • 대화상자 섹션
    • 문자열 테이블
    • 버전정보 세션

3.2.2 기초 정적 분석 실습

1. virustotal에 분석할 샘플 파일을 올린다.

VirusTotal 결과

2. winmd5free를 통해서 해시값을 알아낼 수 있다. (파일끌어오기)

 

질문2: 이 파일은 언제 컴파일 되었는가?

 

3. PEview를 확인한다. 2010년 12월 19일을 확인할 수 있다.

질문3: 이 파일이 패킹되거나 난독화 징후가 있는기? 그렇다면 무엇으로 판단했는가?

 

4. text section을 통해서 확인할 수 있다. raw데이터나 virtual size를 통해서 판단한다. (정상)

 

5. PEiD로도 확인가능하다. 마이크로 비주얼 C++로 뜨는 것을 보아 패킹이 안되어있는 것을 알 수 있다.

 

질문5:임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?

 

6. import adress table로 들어간다. ws2_32→ 소켓통신을 통해서 프로세스를 만들기 떄문에 백도어일 가능성이 있다.

 

질문6: 감염된 시스템에서 검색할 수 있는 다른 파일이나 호스트 기반의 증거가 존재하는가?

7. strings를 통해 문자열 추출, 위장파일을 만들어서 백도어를 만들려는 것을 볼 수 있음

 

질문6: 감염된 장비에서 이 악성코드를 발견하기 위해 사용한 네트워크 기반의 증거는 무엇인가?

 

8. ip 주소를 통해서 탐지한다. 127로 시작하면 다 로컬호스트, 26.152.13가 들어있으면 악성코드 가능성을 판단할 수 있다.

질문7: 이 파일의 목적은 무엇인가: 백도어

 

 

3.3.1 기초 동적 분석

01 기초 동적 분석 개요

  • 기초 동적 분석이란?
    • 프로그램을 직접 실행하여 분석
    • 악성코드 분석에서 가장 프로그램의 영향을 쉽게 파악
    • 프로그램의 기능을 파악하기 위해 악성코드 실행 전후 상태를 조사 및 분석
  • 분석방법
    • 악성코드 실습 시 발생하는 호스트/네트워크 환경 구성
    • 파일, 프로그램 실행, 레지스트리, 서비스 등 관련 항목 변경 사항 확인
    • 실행 시 발생하는 네트워크 트래픽 분석

02 기초 동적 분석 도구

  • 프로세스 모니터 : 특정 레지스트리, 파일 시스템, 네트워크, 프로세스, 스레드 행위를 모니터링 하는 고급 도구
  • promon의 한계: 특정 gui와 장치 i/0 제어를 통한 루트킷 탐지 불가, 네트워크 행위에 대해 일관성 있는 탐지 불가
  • 프로세스 익스플로러 : 프로세스에 관련된 많은 내용을 확인 가능
  • RegShot: 두 레지스트리 의 스냅샷을 찍고 비교하는 툴, 악성코드는 자동실행을 위해 레지스트리를 자주 건드림
  • INetSim: 가짜 서비스를 제공하기에 최고의 도구, 일반적인 로깅 및 중앙 집중식 제어 기능을 사용하여 다양한 인터넷 서비스를 시뮬레이션 할 수 있음, 알려지지 않은 멀웨어 샘플의 네트워크 동작에 대해 런타임 분석을 수행하기 위한 도구, 실험실 환경에서 멀웨어가 일반적으로 사용하는 인터넷 서비스를 시뮬레이트, http, https, ftp, irc, dns, smtp 등 서비스를 실행
  • wireShark 개요 : 네트워크 분석 프로그램, 네트워크 상에서 캡처한 데이터에 대한 네트워크/상위 레이어 프로토콜의 정보를 제공, 패킷을 캡처하기 위해 pcap 네트워크 라이브러리를 사용, 설치가 쉽고, gui 인터페이스를 이용한 간단하게 사용할 수 있다. 다양한 기능 제공
  • 와이어샤크 화면

 

 

 

 

메뉴 설명

File 캡처 데이터를 열거나 저장
Edit 패킷을 찾거나 표시, 프로그램 전역적인 속성들을 설정
View wireshark 플랫폼의 보이는 모양을 설정
Go 캡처된 데이터의 특정 위치로 이동
Capture 캡처 필터 옵션을 설정하고 캡처를 시작
Analyze 분석 옵션을 설정
Statistics wireshark의 통계 데이터를 사용
Telephony  
Wireless  
Tools  
Help 오프라인 혹은 온라인 도움말 보기

3.3.2 기초 동적 분석 실습

와이어샤크 사용

 

 동적분석초기 스냅샷을 찍어둔다.

해당 악성 코드를 실행시킨 후 탐지되는 모습을 볼 수 있다. 두번째 샷을 찍고 compare(에러가 날 경우 데스크탑으로 경로 변경)

 

 레지스트에 추가된 부분과 변경된 부분을 확인할 수 있다.

 

 

 

네트워크는 특별히 별 반응 없어보인다.

 

파일을 불러와서 무언가 시도하는 것을 볼 수 있다.

vmx32to64.exe를 통해서 무언가 하는 것을 볼 수있음. 파일을 새로 써준 흔적과 레지스트리 오픈과 셋팅한 모습도 확인할 수 있다.

레그샷에 찍힌 흔적을 볼 수 있음

 

 

해쉬값이 같은 것을 통해 자기 자신을 자동실행하도록 설계 되어있다고 볼 수 있다.