
StringsIfter는 맬웨어 분석과 관련성을 기반으로 문자열을 자동으로 순위를 매기는 기계 학습 도구입니다.
StringsIfter에는 Python 버전 3.9 또는 최신이 필요합니다. 다음 명령을 실행하여 코드를 얻고 단위 테스트를 실행하고 도구를 사용하십시오.
pip install stringsifter개발을 위해시를 사용하십시오.
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with devstringsifter 설치 디렉토리에서 단위 테스트를 실행하려면 :
poetry run tests -v pip install 명령은 2 개의 런닝 가능한 스크립트 flarestrings 과 rank_strings 파이썬 환경에 설치합니다. 소스에서 개발할 때 pipenv run flarestrings 및 pipenv run rank_strings 사용하십시오.
flarestrings GNU Binutils strings 의 특징을 모방하고 rank_strings 파이프 입력을 수용합니다.
flarestrings < my_sample > | rank_strings rank_strings 여러 명령 줄 인수를 지원합니다. 위치 인수 input_strings 순위를 매길 문자열 파일을 지정합니다. 선택적 인수는 다음과 같습니다.
| 옵션 | 의미 |
|---|---|
| -점수 (-s) | 출력에 순위 점수를 포함하십시오 |
| -limit (-l) | 제한 출력을 상단 limit 순위 순위로 향합니다 |
| -Min-score (-m) | 점수> = min-score 사용하여 출력을 문자열로 제한합니다 |
| -배치 (-B) | 배치 처리를 위해 strings 출력 폴더를 지정하십시오 |
순위는 --batch 옵션이 지정되지 않는 한 표준 출력에 기록되어 <input_file>.ranked_strings 라는 파일에 순위 출력이 작성됩니다.
flarestrings 기본 4 대신 최소 최소 min-len 문자 인 문자 시퀀스를 인쇄하는 옵션 -n (또는 --min-len )를 지원합니다.
flarestrings -n 8 < my_sample > | rank_strings길이 8 이상의 문자열 만 인쇄하고 순위를 매 깁니다.
docker build -t stringsifter -f docker/Dockerfile .flarestrings 또는 rank_strings 인수로 컨테이너를 실행하여 각 명령을 사용하십시오. 컨테이너화 된 명령은 파이프 라인에서 사용할 수 있습니다. cat < my_sample > | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings-v 플래그를 사용하여 호스트 디렉토리를 컨테이너에 노출시키기 위해 쉘 프롬프트를 얻으려면 컨테이너를 실행하십시오. docker run -v < my_malware > :/samples -it stringsifter 여기서 <my_malware> 분석용 샘플이 포함되어 있습니다.
docker run -v $HOME /malware/binaries:/samples -it stringsifterflarestrings /samples/ < my_sample > | rank_strings < options >모든 명령 줄 인수는 컨테이너화 된 스크립트에서 지원됩니다.
StringsIfter는 임의의 문자열 목록에 적용될 수 있으므로 라이브 메모리 덤프, 샌드 박스 런 또는 난독 화 된 문자열이 포함 된 이항과 같은 대체 인텔리전스 수집 소스에서 통찰력을 얻는 실무자에게 유용합니다. 예를 들어, Fireeye Labs Offuscated Strings Solver (Floss)는 문자열 과 마찬가지로 인쇄 가능한 문자열을 추출하지만 스택에 인코딩, 포장 또는 수동으로 구성된 난독 화 된 문자열을 추가로 보여줍니다. 문자열의 인라인 교체로 사용될 수 있습니다. 즉, 다음 명령을 사용하여 Floss Output에서 StringsIfter를 유사하게 호출 할 수 있습니다.
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >참고 :
–q 인수는 헤더와 서식을 억제하여 추출 된 문자열 만 표시합니다. 추가 FLOSS 옵션에 대한 자세한 내용은 사용 문서를 참조하십시오.floss 또는 rank_strings 중 하나 이상은 Python Virtual Enviroment를 참조하는 상대 경로를 포함해야합니다.strings 에 대한 메모 이 분포에는 플랫폼 전체에 걸쳐 예측 가능한 출력을 보장하기위한 flarestrings 프로그램이 포함됩니다. 시스템의 설치된 strings 실행하기로 선택한 경우 해당 옵션이 버전 및 플랫폼에서 일관되지 않습니다.
대부분의 Linux 분포에는 GNU Binutils의 strings 프로그램이 포함됩니다. "넓은"및 "좁은"문자열을 모두 추출하려면 프로그램을 두 번 실행하고 출력 파일로 배관해야합니다.
strings < my_sample > > strs.txt # narrow strings
strings -el < my_sample > >> strs.txt # wide strings. note the ">>" MACOS로 포장 된 일부 버전의 BSD strings 넓은 문자열을 지원하지 않습니다. 또한 전체 파일을 스캔하기 위해 -a 옵션은 기본 구성에서 비활성화 될 수 있습니다. 유익한 문자열이 -a 손실 될 수 있습니다. 홈 브루 또는 맥 포트를 통해 GNU Binutils를 설치하여 넓은 문자를 지원하는 strings 버전을 얻는 것이 좋습니다. 치료를 사용하여 올바른 버전의 strings 을 호출하십시오.
strings 기본적으로 Windows에서 설치되지 않습니다. 작업 strings 얻으려면 Windows Sysinnals, Cygwin 또는 Malcode Analyst Pack을 설치하는 것이 좋습니다.
이 버전의 StringsIfter는 첫 번째 EMBER 데이터 세트와 관련된 샘플링 맬웨어 바이너리의 문자열 출력을 사용하여 훈련되었습니다. 서수 라벨은 약한 감독 절차를 사용하여 생성되었으며, 학습 대상 객관적인 기능을 갖춘 그라디언트 강화 의사 결정 트리에 의해 감독 학습을 수행합니다. 추가 기술 세부 사항은 빠른 링크를 참조하십시오. 향후 릴리스 에서이 접근 방식을 재고 할 수는 있지만 현재 레이블이 지정된 데이터 나 교육 코드를 사용할 수는 없습니다.
버그 및 기능 요청을 게시하는 데 GitHub 문제를 사용합니다.
flarestrings 우수한 도구 치실에서 파생됩니다.