악성코드 샘플은 어디서 구하나? 보안 연구용 멀웨어 수집처와 안전한 분석 환경 구축법
TL;DR — 백신 룰 검증, 멀웨어 분석, 탐지 엔진 테스트에 필요한 실제 악성코드 샘플을 합법적으로 구하는 신뢰성 있는 사이트와, 감염 없이 다루기 위한 격리 환경 구축법을 정리했습니다.
보안 엔지니어로 일하다 보면 "진짜 악성코드"가 필요한 순간이 옵니다. 안티바이러스 시그니처를 검증하거나, EDR 탐지 룰을 테스트하거나, 새로운 멀웨어 패밀리의 동작을 리버싱할 때 말이죠. 그런데 막상 샘플을 구하려고 하면 막막합니다. 일반 검색엔진에는 "바이러스 다운로드" 같은 키워드로 진짜 샘플이 나오지 않고, 어쩌다 나오는 링크는 그 자체가 또 다른 멀웨어 배포처인 경우가 많습니다.
이 글에서는 보안 연구자와 분석가가 합법적이고 신뢰할 수 있는 경로로 악성코드 샘플을 확보하는 방법, 그리고 그 샘플을 자신과 회사를 위험에 빠뜨리지 않고 다루는 격리 환경 구축법을 정리합니다.
1. 왜 "진짜 샘플"이 필요한가
탐지 솔루션을 만들거나 운영하는 입장에서는, 깨끗한 파일만으로는 검증이 불가능합니다. 다음 같은 작업에는 실제 악성 바이너리가 필요합니다.
- 시그니처/YARA 룰 검증: 내가 작성한 룰이 실제 변종을 잡는지 확인
- 샌드박스 동작 분석: C2 통신, 파일 드롭, 레지스트리 변조 등 행위 관찰
- EDR/안티바이러스 회피 연구: 방어 관점에서 우회 기법 이해
- 인시던트 대응 훈련: 실제 침해 상황을 재현한 블루팀 훈련
다만 전제가 하나 있습니다. 이런 샘플을 다루는 것은 명확한 연구·방어 목적일 때만 정당화되며, 배포·재사용·테스트망 외부 유출은 법적 문제로 직결됩니다.
2. 신뢰할 수 있는 멀웨어 샘플 수집처 6선
원본 글이 소개한 MalwareBazaar를 포함해, 현업에서 실제로 쓰이는 신뢰 가능한 출처를 정리했습니다.
1) MalwareBazaar (abuse.ch)
- URL:
https://bazaar.abuse.ch/ - abuse.ch가 운영하는 커뮤니티 기반 샘플 공유 플랫폼입니다. 인포섹 커뮤니티, 백신 벤더, 위협 인텔리전스 제공자들이 샘플을 공유합니다.
- 해시(SHA256), 태그, 시그니처, 파일 타입으로 검색이 가능하고 API도 제공합니다. 입문자에게 가장 추천.
2) MalShare
- URL:
https://malshare.com/ - 무료 API 키 발급 후 일일 다운로드 한도 내에서 샘플을 받을 수 있습니다. 데일리 피드(최근 수집 해시 목록)가 강력합니다.
3) VirusShare
- URL:
https://virusshare.com/ - 초대 기반의 대형 아카이브로, 수천만 개 규모의 샘플을 보유합니다. 대량 데이터셋이 필요한 머신러닝 기반 탐지 연구에 적합합니다.
4) Hybrid Analysis (CrowdStrike)
- URL:
https://www.hybrid-analysis.com/ - 샌드박스 분석 리포트와 함께 샘플 다운로드를 제공합니다. 다운로드는 검증된(vetted) 연구자 계정에 한정됩니다.
5) VirusTotal
- URL:
https://www.virustotal.com/ - 무료 계정은 검색·스캔만 가능하고, 샘플 다운로드는 유료 엔터프라이즈(Intelligence) 라이선스가 필요합니다. 멀티엔진 스캔 결과 확인용으로는 표준입니다.
6) theZoo (GitHub)
- URL:
https://github.com/ytisf/theZoo - 교육·연구 목적으로 정리된 멀웨어 저장소입니다. 패스워드로 보호된 압축본으로 제공되어 실수 실행을 어느 정도 막아줍니다.
3. 샘플을 받기 전에 반드시 갖춰야 할 분석 환경
샘플을 받기 전에 환경부터 만드는 것이 순서입니다. 분석용 호스트는 다음 조건을 갖춰야 합니다.
- 전용 가상머신: 물리 PC가 아닌 VirtualBox/VMware/Hyper-V 같은 VM. 스냅샷을 찍어두고 분석 후 즉시 되돌립니다.
- 네트워크 격리: 기본은 호스트-온리(host-only) 또는 완전 차단. C2 통신 관찰이 필요하면 INetSim/FakeNet 같은 가짜 인터넷으로 응답을 흉내냅니다.
- 공유 폴더·클립보드 비활성화: VM 탈출(escape) 경로를 줄입니다.
- 호스트 백신 예외 설정 주의: 샘플 압축을 풀 때 호스트 백신이 격리/삭제하므로, 분석 VM 안에서만 작업합니다.
4. 안전한 다운로드와 취급 절차 (명령 예제)
아래는 MalwareBazaar API로 해시 기반 샘플을 받는 예시입니다. 모든 작업은 격리된 분석 VM 안에서 수행한다고 가정합니다.
# 1) 환경 변수에 API 키 보관 (코드에 직접 하드코딩 금지)
export MB_API_KEY="여기에_발급받은_키"
# 2) SHA256 해시로 샘플 요청 (zip으로 묶여 반환됨)
TARGET_HASH="알아낸_샘플_해시값"
curl -s -X POST https://mb-api.abuse.ch/api/v1/ \
-H "Auth-Key: ${MB_API_KEY}" \
-d "query=get_file&sha256_hash=${TARGET_HASH}" \
-o sample_bundle.zip
# 3) 받은 압축본 자체 무결성부터 확인 (실행하지 않고 해시만 비교)
sha256sum sample_bundle.zip
압축은 관례적으로 infected 비밀번호로 보호됩니다. 압축을 풀 때도 실행은 절대 금지이며, 정적 정보부터 수집합니다.
# 4) 비밀번호 보호 압축 해제 (분석 VM 안에서만!)
7z x sample_bundle.zip -p"infected" -o./quarantine
# 5) 파일 타입 식별 — 확장자가 아니라 매직바이트로 판단
file ./quarantine/*
# 6) 정적 지표 수집: 문자열, 임포트 테이블, 엔트로피 등
strings -n 8 ./quarantine/payload.bin | head -n 40
여기까지는 모두 "정적 분석"으로, 샘플을 실행하지 않습니다. 동적 행위 분석이 필요하면 스냅샷을 찍은 뒤 네트워크가 차단(또는 FakeNet으로 흉내)된 상태에서만 실행하고, 끝나면 스냅샷으로 즉시 롤백합니다.
5. 흔히 저지르는 치명적 실수
- 실수 1 — 호스트에서 압축을 푼다: 가장 흔하고 가장 위험합니다. 샘플 취급은 처음부터 끝까지 VM 안에서.
- 실수 2 — 더블클릭으로 "파일 타입만 확인": 윈도우 탐색기 미리보기나 더블클릭이 실행으로 이어질 수 있습니다. 반드시
file명령 같은 정적 도구로 식별하세요. - 실수 3 — 인터넷이 연결된 채 동적 분석: 진짜 C2에 연결되어 추가 페이로드를 받거나, 내 IP가 공격자에게 노출됩니다.
- 실수 4 — 스냅샷 없이 실행: 되돌릴 수 없으면 VM은 한 번 쓰고 버려야 합니다. 분석 전 클린 스냅샷은 필수.
- 실수 5 — 샘플을 사내 공유망에 둔다: 분석본은 격리 스토리지에만. 메일·슬랙·공유드라이브 업로드는 사고로 직결됩니다.
- 실수 6 — 출처 불명 사이트 이용: "무료 바이러스 다운로드"를 표방하는 비공식 사이트 다수는 그 자체가 배포처입니다. 위에 정리한 평판 있는 출처만 사용하세요.
6. 요약
- 악성코드 샘플은 MalwareBazaar, MalShare, VirusShare 등 평판 있는 출처에서만 받습니다.
- 샘플을 받기 전에 스냅샷·네트워크 격리가 된 전용 VM부터 준비합니다.
- 다운로드 → 무결성 확인 → 정적 분석 → (필요 시) 격리 동적 분석 → 스냅샷 롤백 순서를 지킵니다.
- 모든 작업은 명확한 방어·연구 목적에 한정하고, 외부 유출·재배포는 금지입니다.
AI에게 물어볼 때 (프롬프트 팁)
악성코드 분석 환경 구성이나 절차를 AI에게 물을 때는, "막연한 요청"보다 역할·환경·제약을 명시하면 훨씬 실용적인 답을 받습니다. Prompt Architect의 프롬프트 설계 관점에서 예시를 드립니다.
너는 멀웨어 분석 랩을 운영하는 시니어 보안 엔지니어다.
VirtualBox 기반 Windows 10 분석 VM을 만들려고 한다.
조건: 호스트-온리 네트워크, 클린 스냅샷, INetSim으로 가짜 인터넷 구성.
이 환경을 단계별 체크리스트로 정리하고, 각 단계에서 "VM 탈출/유출 위험"을
줄이는 설정을 함께 표로 제시해줘.
나는 YARA 룰을 작성 중이고, 방어 목적의 탐지 검증만 한다.
다음 정적 지표(문자열, 임포트 함수, 섹션 엔트로피)를 입력으로 줄 테니,
오탐을 줄이면서 패밀리를 특정하는 YARA 룰 작성 전략을 설명하고,
규칙별로 false positive 위험을 함께 표기해줘.
나는 보안 학습자다. 악성코드 "정적 분석"과 "동적 분석"의 차이를
실습 절차 관점에서 비교하고, 각 단계에서 절대 하면 안 되는 행동을
"위험도 순서"로 정리해줘. 실제 샘플 실행을 권하는 답변은 하지 마라.
핵심은 목적(방어/학습)·제약(실행 금지·격리)·출력형식(체크리스트/표) 을 프롬프트에 박아 넣는 것입니다. 이렇게 하면 AI가 위험한 실행 단계를 권하는 대신, 안전한 절차 중심으로 답을 구성합니다.