Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
stringsifter — 악성코드 분석과의 관련성을 기준으로 문자열의 순위를 매기는 머신러닝 도구입니다. | Kitploit
도구/GitHubGitHub/mandiant/stringsifter
Reverse EngineeringMalware AnalysisBinary AnalysisMachine Learning
GitHubmandiant/stringsifter

stringsifter

악성코드 분석과의 관련성을 기준으로 문자열의 순위를 매기는 머신러닝 도구입니다.

저장소 보기
7611261개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

StringSifter는 악성코드 분석을 위해 문자열의 관련성을 기준으로 자동으로 순위를 매기는 머신러닝 도구입니다.

빠른 링크

  • 기술 블로그 게시물 - 더 빠른 악성코드 분석을 위한 문자열 출력 순위 학습
  • 공지 블로그 게시물 - StringSifter 오픈소스 공개
  • DerbyCon 발표 - StringSifter: 더 빠른 악성코드 분석을 위한 문자열 출력 순위 학습
  • PyPi의 StringSifter 릴리스

사용법

StringSifter는 Python 3.9 이상 버전이 필요합니다. 다음 명령을 실행하여 코드를 받고, 단위 테스트를 실행하고, 도구를 사용하세요:

설치

root@kitploit:~
pip install stringsifter

개발용으로는 poetry를 사용하세요:

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

단위 테스트 실행

StringSifter 설치 디렉터리에서 단위 테스트를 실행하려면:

root@kitploit:~
poetry run tests -v

명령줄에서 실행

pip install 명령은 flarestrings와 rank_strings라는 두 개의 실행 가능한 스크립트를 Python 환경에 설치합니다. 소스에서 개발할 때는 pipenv run flarestrings 및 pipenv run rank_strings를 사용하세요.

flarestrings는 GNU binutils의 strings 기능을 모방하며, rank_strings는 파이프된 입력을 받아들입니다. 예:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings는 여러 명령줄 인수를 지원합니다. 위치 인수 input_strings는 순위를 매길 문자열이 담긴 파일을 지정합니다. 선택적 인수는 다음과 같습니다:

OptionMeaning

--batch 옵션을 지정하지 않으면 순위가 매겨진 문자열은 표준 출력으로 작성되며, 지정하면 순위가 매겨진 출력이 <input_file>.ranked_strings라는 이름의 파일로 작성됩니다.

flarestrings는 -n(또는 --min-len) 옵션을 지원하며, 기본값 4 대신 최소 min-len 길이의 문자 시퀀스를 출력합니다. 예:

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

길이가 8 이상인 문자열만 출력하고 순위를 매깁니다.

Docker 컨테이너에서 실행

  • 저장소를 클론한 후 컨테이너를 빌드합니다. 패키지 최상위 디렉터리에서:
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • 컨테이너를 flarestrings 또는 rank_strings 인수와 함께 실행하여 해당 명령을 사용합니다. 컨테이너화된 명령은 파이프라인에서 사용할 수 있습니다:
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • 또는 인수 없이 컨테이너를 실행하여 셸 프롬프트를 얻고, -v 플래그로 호스트 디렉터리를 컨테이너에 노출합니다:
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

여기서 <my_malware>는 분석 대상 샘플이 포함된 디렉터리입니다. 예:

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • 컨테이너 프롬프트에서:
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

모든 명령줄 인수는 컨테이너화된 스크립트에서 지원됩니다.

FLOSS 출력에 실행

StringSifter는 임의의 문자열 목록에 적용할 수 있으므로, 라이브 메모리 덤프, 샌드박스 실행 또는 난독화된 문자열을 포함하는 바이너리와 같은 대체 인텔리전스 수집 소스에서 통찰을 얻고자 하는 실무자에게 유용합니다. 예를 들어, FireEye Labs Obfuscated Strings Solver (FLOSS)는 Strings와 마찬가지로 인쇄 가능한 문자열을 추출하지만, 인코딩, 패킹 또는 스택에 수동으로 구성된 난독화된 문자열도 추가로 드러냅니다. Strings의 인라인 대체품으로 사용할 수 있으므로 StringSifter도 다음 명령을 사용하여 FLOSS 출력에 유사하게 호출할 수 있습니다:

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

참고:

  1. –q 인수는 헤더와 형식을 생략하고 추출된 문자열만 표시합니다. 추가 FLOSS 옵션에 대한 자세한 내용은 사용법 문서를 참조하세요.
  2. FLOSS는 Python 2가 필요하지만 StringSifter는 Python 3이 필요합니다. 예제 명령에서 floss 또는 rank_strings 중 적어도 하나는 Python 가상 환경을 참조하는 상대 경로를 포함해야 합니다.
  3. FLOSS는 독립 실행형 실행 파일로 다운로드할 수 있습니다. 이 경우 실행 파일이 Python 인터프리터에 의존하지 않으므로 Python 환경을 지정할 필요가 없습니다.

strings 실행에 관한 참고 사항

이 배포판에는 플랫폼 간 예측 가능한 출력을 보장하기 위해 flarestrings 프로그램이 포함되어 있습니다. 시스템에 설치된 strings를 실행하려는 경우 해당 옵션은 버전과 플랫폼에 따라 일관되지 않습니다:

Linux

대부분의 Linux 배포판에는 GNU Binutils의 strings 프로그램이 포함되어 있습니다. "와이드" 문자열과 "내로우" 문자열을 모두 추출하려면 프로그램을 두 번 실행하여 출력 파일로 파이프해야 합니다:

root@kitploit:~
strings <my_sample>       > strs.txt   # narrow strings
strings -el <my_sample>  >> strs.txt   # wide strings.  note the ">>"

MacOS

MacOS에 포함된 일부 BSD strings 버전은 와이드 문자열을 지원하지 않습니다. 또한 전체 파일을 스캔하는 strings의 -a 옵션은 기본 구성에서 비활성화될 수 있습니다. -a가 없으면 유용한 문자열이 손실될 수 있습니다. 와이드 문자를 지원하는 strings 버전을 얻으려면 Homebrew 또는 MacPorts를 통해 GNU Binutils를 설치하는 것이 좋습니다. 올바른 버전의 strings를 호출하도록 주의하세요.

Windows

strings는 Windows에 기본적으로 설치되지 않습니다. 작동하는 strings를 얻으려면 Windows Sysinternals, Cygwin 또는 Malcode Analyst Pack을 설치하는 것이 좋습니다.

토론

이 버전의 StringSifter는 첫 번째 EMBER 데이터 세트와 연관된 샘플 악성코드 바이너리의 Strings 출력을 사용하여 훈련되었습니다. 순서형 레이블은 약한 지도 방식으로 생성되었으며, 지도 학습은 순위 학습 목적 함수를 사용하는 그라디언트 부스팅 결정 트리로 수행됩니다. 자세한 기술적 내용은 빠른 링크를 참조하세요. 현재 레이블 데이터와 훈련 코드는 제공되지 않으며, 향후 릴리스에서 이 접근 방식을 재검토할 수 있습니다.

이슈

버그 및 기능 요청은 GitHub Issues를 사용합니다.

감사의 글

  • 검토와 피드백을 제공한 FireEye Data Science (FDS) 및 FireEye Labs Reverse Engineering (FLARE) 팀에 감사드립니다.
  • StringSifter는 Philip Tully (FDS), Matthew Haigh (FLARE), Jay Gibble (FLARE), Michael Sikorski (FLARE)에 의해 설계 및 개발되었습니다.
  • StringSifter 로고는 Josh Langner (FLARE)가 디자인했습니다.
  • flarestrings는 훌륭한 도구인 FLOSS에서 파생되었습니다.
도구 다운로드
--scores (-s)출력에 순위 점수 포함
--limit (-l)상위 limit개의 순위가 매겨진 문자열로 출력 제한
--min-score (-m)점수가 min-score 이상인 문자열로 출력 제한
--batch (-b)일괄 처리를 위한 strings 출력 폴더 지정