기초 정적 분석
Hashing
virustotal과 같은 백신 혹은 악성코드 탐지 소프트웨어는 대부분 hash를 이용해서 악성코드를 식별합니다. 이때 파일의 내용을 기반으로 생성된 암호 해쉬를 이용합니다.
왜 해싱을 이용할까?
근데 왜 굳이 해싱이라는 알고리즘을 이용해서 악성코드를 분별할까요?
md5sum <파일 이름>FLOSS
정적분석에서 중요한 것은 바이너리 분석입니다. 해당 프로그램이 어떤 문자열이 사용되었는지, 어떤 API를 불러오고 어떤 실행파일로 만들어졌는지를 알수 있습니다. Floss는 CLI 기반의 프로그램 정적분석 문자열 출력 프로그램입니다.
floss <program name>MalAPI.io
WindowAPI를 보면 쉽게 해당 프로그램이 악성프로그램인지 아닌지를 판단할수 있습니다. 이때 어떤 Window API가 악성코드로 사용되는지 알아야합니다. 이런 악성코드에 자주 사용되거나 사용된적 있는 Window API 알려주는 사이트가 MalAPI.io입니다.

처음 사이트에 들어오면 다음과 같이 각종 window api의 악성코드 사용 사례가 분류별로 나눠져 있습니다.
CreateToolhelp32Snapshot을 기준으로 한번 정보를 알아보겠습니다.

- Function Name : Window API 함수 이름
- Description : 어떻게 악성코드에서 사용되는지 설명
- Library : 어디 라이브러리에 속한 함수인지 알려줍니다.
- Associated Attacks : MITRE&ACK기준 분류
- Documentation : 해당 Window API에 대한 Microsoft사의 공식 문서
Packing
악성코드의 경우 일반적으로 자신을 숨기기 위해서 packing이라는 작업을 합니다. packing의 경우 정적 분석 과정에서 window api를 숨길수 있을 뿐더러 경우의 따라 백신 프로그램을 우회하고, 분석가들의 분석을 어렵게 합니다.
UPX
UPX는 악성코드 패킹에 많이 사용됐던 압축 프로그램입니다.
pestudio
pestudio는 악성코드에 대한 기본적인 정보, Virustotal, PE, String를 쉽게 확인할 수 있는 도구입니다.
특징은 libraries 기능에서 해당 함수가 악성코드로써 가능성이 있는 함수인지 찾아줍니다.

CAPA
https://github.com/mandiant/capa
capa는 실행 파일을 분석해서 해당 실행 프로그램이 악성코드로 가능성이 있는지 기본 프로그램의 함수 정보와 함께 제공해줍니다. 이전까지 저희는 peview에서 악성 함수로 의심되는 함수를 직접 malAPI.io 검색해 가면서 사용했다면 CAPA는 직접 이런 정보를 찾아줍니다. (악성코드 판별 외에도 난독화, 패킹과 같은 여부도 검사해줍니다.)
capa <file name>