
FLARE floss를 Malpedia의 모든 언패킹+덤프된 샘플에 적용하여, 추가 사용을 위해 전처리함.
이 저장소는 Malpedia에 있는 모든 압축 해제 및 덤프된 샘플에 FLARE FLOSS 도구를 적용한 결과를 포함하며, 추가 사용을 위해 전처리된 상태로 제공됩니다.
이 컬렉션은 정기적으로 업데이트될 예정입니다.
2026년 1월의 마지막 실행에서 2,136개의 악성코드 패밀리와 연관된 9,202개의 파일이 처리되었습니다.
FLOSSing 결과 61,135,522개의 원시 문자열이 생성되었고, 이는 정제 및 중복 제거 과정을 거쳐 5,666,515개의 고유 문자열로 축소되었습니다.
압축을 풀면 컬렉션의 크기는 약 1300MB입니다.
문자열 컬렉션은 JSON 사전(폴더 data 참조)으로 제공되며, 세 가지 섹션으로 구성됩니다:
about: 파일 헤더처럼, 이 컬렉션에 대한 메타데이터를 포함합니다.family_to_id: Malpedia에 있는 패밀리 ID와 패밀리 이름(일부 라이브러리 포함)의 매핑입니다.strings: 실제 데이터로, 키가 문자열이고 값이 추가 정보를 포함하는 사전입니다.간단히 말해, 데이터는 다음과 같습니다:
{
"about": {
"author": "Daniel Plohmann // daniel.plohmann<at>fkie.fraunhofer.de",
"date_flossed": "2026-01-06",
"date_published": "2026-01-06",
"floss_version": "floss v3.0.1-0-g3782dc9",
"info": "This collection contains the output of applying the FLARE team's floss tool to all unpacked+dumped samples in Malpedia, with additional information in which families the respective string was found, along with its extraction method and encoding. Processing has been applied to reduce the number of mistakenly extracted data strings with no real value to further analysis, FLOSS QUANTUMSTRAND and own tagging has been applied to enrich the output.",
"license": "Creative Commons BY-SA 4.0",
"num_input_strings": 61135522,
"num_filtered_input_strings": 26844200,
"num_malware_families": 2136,
"num_samples_flossed": 9202,
"num_tagged_strings": 2421776,
"num_unique_strings": 5666515,
"reference": "malpedia.caad.fkie.fraunhofer.de/",
"source": "https://github.com/malpedia/malpedia-flossed"
},
"family_to_id": {
"elf.anchor_dns": 1121,
"elf.angryrebel": 1393,
"elf.babuk": 899,
...
"win.zupdax": 1328,
"win.zxxz": 1732,
"win.zyklon": 689
},
"strings": {
...
"Mozilla/4.0 (compatible; MSIE 6.0; Win32)": {
"encodings": [
"ASCII"
],
"families": [
79,
272,
683,
914,
918,
1000,
1572
],
"family_count": 7,
"methods": [
"static"
],
"string": "Mozilla/4.0 (compatible; MSIE 6.0; Win32)",
"tags": [
"user-agent"
]
},
...
가능한 인코딩은 ASCII와 UTF-16LE이며, 메서드는 FLOSS 추출 메서드인 decoded, stack, static, tight, language를 의미합니다.
태그는 자체 휴리스틱 세트와 FLOSS의 QUANTUMSTRAND 개발 브랜치에서 발견된 메서드 및 데이터를 기반으로 파생되었습니다.
매번 거대한 JSON 파일을 파싱하는 대신, 조회를 가능하게 하는 도커화된 웹 서비스를 제공합니다.
API 백엔드로 falcon을 사용하며, waitress를 통해 WSGI로 동작하고, 배포를 위해 nginx로 프록시됩니다.
레이아웃은 awesome-compose를 기반으로 하지만 falcon과 waitress에 맞게 업데이트 및 조정되었습니다.
서비스는 GET 요청으로 단일 조회, POST 요청으로 다중 조회를 지원합니다:
$ curl https://strings.malpedia.io/api/query/FIXME
{"status": "successful", "data": [{"encodings": ["ASCII"], "families": ["win.kins", "win.vmzeus", "win.zeus_sphinx", "win.citadel", "win.ice_ix", "win.murofet", "win.zeus"], "family_count": 7, "methods": ["static"], "string": "FIXME", "tags": [], "matched": true}, {"matched": false, "string": "NOT_FLOSSED"}]}
$ curl -X POST https://strings.malpedia.io/api/query --data '"FIXME","NOT_IN_THE_DATABASE"'
{"status": "successful", "data": [{"encodings": ["ASCII"], "families": ["win.kins", "win.vmzeus", "win.zeus_sphinx", "win.citadel", "win.ice_ix", "win.murofet", "win.zeus"], "family_count": 7, "methods": ["static"], "string": "FIXME", "tags": [], "matched": true}, {"matched": false, "string": "NOT_IN_THE_DATABASE"}]}
서비스와 상호작용하는 방법은 데모 Python 스크립트를 확인하세요.
또한 strings.malpedia.io에서 이 서비스의 공개 인스턴스를 호스팅하고 있습니다.
웹 서비스에 대한 문서가 있습니다.
이 문자열 컬렉션의 좋은 사용 사례는 바이너리 분석 도구에서일 수 있으므로, IDA Pro, Ghidra, Binary Ninja와 호환되는 플러그인을 제작했습니다:
세 플랫폼을 동시에 지원하기 위해 gui-plugin-template을 사용하며, 이는 hyara를 기반으로 합니다.
플러그인 설치 및 구성 방법에 대한 문서가 있습니다.
Malcat용 인텔리전스 플러그인을 추가했습니다. 이 플러그인은 주어진 바이너리의 모든 문자열을 조회하고 결과를 사용자 정의 Kesakode 결과로 렌더링합니다.
설치하려면 ./plugins/malcat/MalpediaFlossed.py 파일을 Malcat의 data/intelligence 폴더에 넣기만 하면 됩니다.
기본적으로 공개 strings.malpedia.io 인스턴스를 조회에 사용하지만, 자체 엔드포인트를 정의할 수도 있습니다.
/api/query/<needle>의 적절한 디코딩, contains 쿼리 기능 추가데이터는 상업적 사용을 허용하는 CC BY-SA 4.0 라이선스에 따라 배포됩니다.