Skip to content
이 페이지는 AI의 도움으로 작성 및 번역되었습니다. 부정확한 내용이 있으면 개선에 참여해 주세요. GitHub에서 편집

해시 매칭

해시 매칭은 PRX-SD 탐지 파이프라인의 첫 번째이자 가장 빠른 레이어입니다. 스캔된 모든 파일에 대해 PRX-SD는 암호화 해시를 계산하고 알려진 악성 해시의 로컬 데이터베이스에서 조회합니다. 매치는 해당 파일이 알려진 악성코드 샘플의 정확한 바이트 단위 복사본임을 의미합니다.

작동 방식

  1. 해시 계산 -- PRX-SD는 파일의 SHA-256 해시를 계산합니다. VirusShare 조회의 경우 MD5 해시도 계산됩니다.
  2. LMDB 조회 -- 해시는 메모리 매핑된 B+ 트리를 사용하여 LMDB 데이터베이스에서 확인됩니다. 이는 O(1) 평균 케이스 조회 시간을 제공합니다.
  3. 메타데이터 검색 -- 매치가 발견되면 연관된 메타데이터(소스, 악성코드 패밀리, 최초 발견 날짜)가 반환됩니다.
  4. 판정 -- 해시 매치는 즉시 MALICIOUS 판정을 낳고 나머지 탐지 레이어는 건너뜁니다.

성능

작업시간
SHA-256 계산 (1 KB 파일)~2마이크로초
SHA-256 계산 (10 MB 파일)~15밀리초
LMDB 조회~0.5마이크로초
파일당 총 시간 (작은 파일, 해시 히트)~3마이크로초

LMDB는 메모리 매핑 파일을 사용하므로 운영 체제의 페이지 캐시가 자주 접근하는 데이터베이스 부분을 RAM에 유지합니다. 충분한 메모리를 가진 시스템에서 조회는 거의 무료입니다.

지원 해시 유형

해시 유형크기사용
SHA-256256비트 (64개의 16진수 문자)모든 조회의 기본 해시. abuse.ch 피드 및 내장 블록리스트에서 사용.
MD5128비트 (32개의 16진수 문자)VirusShare 데이터베이스 호환성을 위해 사용. VirusShare 데이터가 있을 때만 계산.

MD5 한계

MD5는 암호학적으로 취약하며 충돌 공격에 취약합니다. PRX-SD는 VirusShare 데이터베이스와의 하위 호환성을 위해서만 MD5를 사용합니다. SHA-256이 다른 모든 소스의 기본 해시입니다.

데이터 소스

PRX-SD는 여러 위협 인텔리전스 피드에서 해시 시그니처를 집계합니다:

소스해시 유형무료내용업데이트 빈도
abuse.ch MalwareBazaarSHA-256최근 48시간 악성코드 샘플5분마다
abuse.ch URLhausSHA-256악성 URL에서 배포된 악성코드 파일시간별
abuse.ch Feodo TrackerSHA-256뱅킹 트로이목마 (Emotet, Dridex, TrickBot)5분마다
abuse.ch ThreatFoxSHA-256커뮤니티 IOC 공유 플랫폼시간별
VirusShareMD520M+ 악성코드 해시 (과거 데이터)주기적
내장 블록리스트SHA-256번들EICAR, WannaCry, NotPetya, Emotet 등릴리스와 함께

총 해시 커버리지

업데이트 모드해시 수데이터베이스 크기
표준 (sd update)~28,000개 SHA-256~5 MB
전체 (sd update --full)~28,000개 SHA-256 + 20M+ MD5~800 MB

해시 데이터베이스 업데이트

표준 업데이트

모든 abuse.ch 피드에서 최신 SHA-256 해시를 가져옵니다:

bash
sd update

이것은 PRX-SD가 처음 설치될 때 자동으로 실행되며 cron 또는 sd service로 지속적인 업데이트를 예약할 수 있습니다.

전체 업데이트

완전한 VirusShare MD5 데이터베이스를 포함합니다:

bash
sd update --full

전체 모드 사용 시기

VirusShare 데이터베이스에는 몇 년 전으로 거슬러 올라가는 20M+ 개의 MD5 해시가 포함되어 있습니다. 포렌식 조사 및 종합적인 스캔에 유용하지만 데이터베이스에 ~800 MB를 추가합니다. 일상적인 보호를 위해서는 표준 업데이트로 충분합니다.

수동 해시 가져오기

텍스트 파일(한 줄에 하나의 해시)에서 사용자 정의 해시 목록을 가져옵니다:

bash
sd import my_hashes.txt

import 명령어는 문자열 길이에 따라 해시 유형(SHA-256 또는 MD5)을 자동으로 감지합니다. 메타데이터도 지정할 수 있습니다:

bash
sd import my_hashes.txt --source "internal-ir" --family "custom-trojan"

LMDB 데이터베이스

PRX-SD는 해시를 LMDB(Lightning Memory-Mapped Database)에 저장합니다. 다음 특성으로 선택되었습니다:

특성이점
메모리 매핑 I/O제로 카피 읽기, 직렬화 오버헤드 없음
B+ 트리 구조O(1) 상각 조회
ACID 트랜잭션업데이트 중 안전한 동시 읽기
충돌 저항성카피-온-라이트가 손상 방지
컴팩트 크기해시 키의 효율적인 저장

데이터베이스는 기본적으로 ~/.local/share/prx-sd/signatures.lmdb에 저장됩니다. 경로를 사용자 정의할 수 있습니다:

toml
# ~/.config/prx-sd/config.toml
[database]
path = "/opt/prx-sd/signatures.lmdb"

데이터베이스 상태 확인

현재 해시 데이터베이스 통계를 봅니다:

bash
sd info
PRX-SD 시그니처 데이터베이스
=========================
SHA-256 해시:  28,428개
MD5 해시:      0개 (VirusShare의 경우 'sd update --full' 실행)
YARA 규칙:     38,800개
데이터베이스 경로:   /home/user/.local/share/prx-sd/signatures.lmdb
데이터베이스 크기:   4.8 MB
마지막 업데이트:    2026-03-21 10:00:00 UTC

파이프라인에서의 역할

해시 매칭이 첫 번째 방어선으로 설계된 이유:

  • 속도 -- 파일당 ~3마이크로초로 무시할 수 있는 오버헤드를 추가합니다. 백만 개의 깨끗한 파일을 3초 이내에 확인할 수 있습니다.
  • 오탐지 없음 -- SHA-256 매치는 파일이 알려진 악성코드 샘플과 동일하다는 암호학적 보장입니다.
  • 단락 -- 해시 매치가 발견되면 YARA 및 휴리스틱 분석을 완전히 건너뛰어 상당한 처리 시간을 절약합니다.

해시 매칭의 한계는 알려진 샘플의 정확한 복사본만 탐지한다는 것입니다. 한 바이트의 수정이 다른 해시를 생성하여 이 레이어를 회피합니다. 이것이 YARA 및 휴리스틱 레이어가 이후 방어로 존재하는 이유입니다.

다음 단계

Released under the Apache-2.0 License.