Without a Break

기초 정적 분석 본문

Reversing/윈도우즈보안과악성코드기초

기초 정적 분석

와븨 2024. 4. 6. 17:30

안티바이러스 스캐닝

  • 악성코드 탐지(기본)
    • 패턴 매칭 분석 : file signatures
    • heuristic : 변조, 신종 등
  • 악성코드 실행 및 탐지

 

VirusTotal 실습

 

해시

  • 해시 : 악성/정상 코드의 고유 값
    • SHA-1, MD5
    • Md5deep(CUI), WinMD5(GUI)
      • http://md5deep.sourceforge.net/
      • http://www.winmd5.com/
  • 해시 검증
    • 해시를 이름으로 사용
    • 악성코드 식별을 위해 해시 공유
    • 식별여부를 온라인에서 검색

 

https://www.virustotal.com/gui/home/upload

 

VirusTotal

 

www.virustotal.com

 

 

PracticalMalwareAnalysis-Lab의 Lab01-01.exe를 넣어 분석해보자.

  • 72개 중 52개가 악성 코드
  • 각 보안 회사의 분석
    • AhnLab V3 : Trojan/Win32.Agent.C957604
    • AliCloud : Backdoor
    • 대체적으로 Trojan이 많은 것을 확인할 수 있다.
  • VirusTotal 이용 시, 백신 여러 개 돌릴 수 있음
    • 여기에 파일을 넣고 악성코드인지 확인 후, 분석을 진행

 

WinMD5Free 실습

  • md5 해시 값을 아래에 붙여넣고 Verify를 누르면 WinMD5Free에 있는 해시 값과 비교
    • 해시 값이 동일한지 확인
  • 태생부터 악성 코드인 경우는 해시 정보 자체가 없지만, 정상 파일이 악성코드로 변조된 경우 이를 사용할 수 있음.
  • winmd5free는 단순히 악성 유무만 판단을 해준다.

 

Strings 실습

문자열 검색

 

문자열 - Sysinternals

이진 이미지에서 ANSI 및 UNICODE 문자열을 검색합니다.

learn.microsoft.com

 

cmd창에서만 실행되는 프로그램이므로 strings.exe 파일이 있는 위치에서 cmd를 켜준다.

 

 

cmd창에서 strings를 실행한 모습 (.exe를 쓰던 말던 결과는 같다)

 


*참고

명령어

  • dir : 목록보기
  • cd : 폴더 이동


 

Lab-01-02.exe를 분석해보자

  • 바이너리를 검색할 경우 확장자를 붙여야 함
  • 대소문자는 구분 X
  • strings 통해 알고자 하는 정보는 API 함수, 사용하고 있는 dll이다.
  • 마지막에 warning_this_will_destroy_your_machine으로 악성코드임을 알리기도 한다.

 

UPX 패킹 실습

패킹 난독화

  • 악성코드 은폐 목적, 문자열 검색 안됨
    • LoadLibrary, GetProcAddress 함수 포함
  • 패킹 파일
    • 원본 실행 파일 → 래퍼프로그램 + 패킹된 실행 파일

 

패커 탐지 : PEiD

  • UPX(http://upx.github.io) : Upx -d PackedProgram.exe
  • FSG paker

 

  • 왼쪽은 패킹되지 않은 파일이다.
  • 오른쪽은 EP section에 아무것도 뜨지 않고, FSG 1.0이 적혀있는 것을 보아 패킹된 파일임을 알 수 있다.

 

upx.exe 파일이 있는 위치에서 cmd 창을 켜준다.

이 때, 분석을 원하는 파일도 같은 위치에 있어야 한다.

 

upx [파일명]으로 파일을 패킹할 수 있다.

 

패킹한 lab01-01.exe peid로 확인해보면 EP section에서 UPX로 패킹되었음을 확인할 수 있다.

  •