본문 바로가기
study

악성코드 유사성 비교 방법

by ms-eo 2025. 11. 18.

인증된 정상 파일(rundll32.exe, windows update.exe, ...)과 비교해서 악성코드인지 아닌지 확인이 필요할 경우

악성 행위를 하는 부분만 빠르게 찾아낼 수 있음

예) user32.dll 정상 파일과 비교 중인 악성코드의 함수가 1개 빼고 모두 같을 경우 해당 함수가 악성이라고 빠르게 판단 가능

기분석된 악성코드와 비교하여 얼마나 비슷한지 확인이 필요한 경우

기분석된 내용은 재분석할 필요가 없음

예) xmrig.exe 정상 파일과 비교중인 악성코드가 95% 이상 유사할 경우 Mining 코드에 대한 함수 분석은 필요 없음

악성코드 분류가 안될 경우(어떤 악성코드인지 잘 모를 경우)

특정 악성코드로 분류된 다른 악성코드와 비교해 유사한 경우, 분석 중인 악성코드를 특정 악성코드로 분류한 후 분석 방향을 잡을 수 있음

예) Nanocore Rat 악성코드로 알려진 비교군1과 현재 분석중인 비교군2를 비교해 유사성이 높으면 Nanocore RAT 악성코드로 생각하고 분석 방향을 잡을 수 있다


[방법 1 : SSDEEP 사용]

SSDeep

  • Fuzzy Hash 값 확인 및 파일의 유사도를 측정할 수 있는 프로그램
  • Windows에서 윈도우용 ssdeep 프로그램 다운로드 후 사용 가능
  • Linux에서 apt-get으로 install 가능
  • Fuzzy Hash
  • 파일 전체의 해시값을 계산하지 않고, 파일을 일정 단위로 쪼개어 각 단위 블록에 대한 해시값을 만듬
  • 파일 내용 중 한 부분만 달라져도 전체 해시값이 바뀌는 md5, sha256,...과 달리, 바뀐 부분의 해시만 변경됨
  • 간략히 ssdeep 결과값 확인할 경우에는 VirusTotal 활용
  • SSDeep 프로그램을 이용해서 결과값 확인 및 유사도 측정 가능

[방법 2 : 파일 섹션 별 해시 값 비교]

  • pestudio 프로그램 사용 시 PE파일의 섹션 별 해시 값 확인 가능
  • 비교군의 섹션 별 해시 값이 같을 경우 동일한 코드나 데이터 등을 사용하고 있다고 해석할 수 있음 > 비교군이 기분석되어 있다면 재분석 필요 없음

[방법 3 : IDA 플러그인 : Diaphora 사용]

  • 디컴파일 도구인 IDA의 Diaphora 플러그인을 이용
  • 디컴파일된 함수 별 / 코드 별 동일한 부분과 다른 부분을 확인할 수 있음 > 가장 강력한 비교 방법

IDA 버전 6.95 ~ 7.3 (python 2.X 사용) : "https://github.com/joxeankoret/diaphora/releases/1.2.4" 다운로드

IDA 버전 7.4 이상 (python 3.X 사용) : "https://github.com/joxeankoret/diaphora/releases" 에서 그냥 최신 버전 다운로드

IDA에서 Diaphora 파이썬 스크립트로 실행

결과

함수 코드가 완벽히 일치할 경우 Ratio 부분이 1.0000

함수의 코드 부분이 달라지는 비율에 따라 Ratio 숫자가 점점 내려감