
Stringsifter是一種機器學習工具,可以根據其與惡意軟件分析的相關性自動對字符串進行排名。
Stringsifter需要Python版本3.9或更新。運行以下命令以獲取代碼,運行單元測試並使用該工具:
pip install stringsifter為了發展,使用詩歌:
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev從Stringsifter安裝目錄運行單元測試:
poetry run tests -vpip install命令將兩個可運行的flarestrings rank_strings在您的Python環境中。從源開發時,請使用pipenv run flarestrings和pipenv run rank_strings 。
flarestrings模仿gnu binutils strings的特徵,而rank_strings接受管道輸入,例如:
flarestrings < my_sample > | rank_strings rank_strings支持許多命令行參數。位置參數input_strings指定一個字符串文件進行排名。可選論點是:
| 選項 | 意義 |
|---|---|
| - 得分(-s) | 在輸出中包括等級分數 |
| - 限制(-l) | 將輸出限制為最高limit的字符串 |
| - 米爾得分(-m) | 將輸出限制為帶有得分> = min-score字符串 |
| - 批處理(-b) | 為批處理處理指定strings輸出的文件夾 |
除非指定--batch選項,從而將排名的字符串寫入標準輸出,從而導致排名輸出寫入名為<input_file>.ranked_strings的文件。
flarestrings支持一個選項-n (或--min-len ),以打印至少min-len的字符序列,而不是默認的4。例如:例如:
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 >所有命令行參數均在容器化腳本中支持。
弦樂器可以應用於任意列表的字符串列表,這對於希望從替代智能收集來源(例如Live Memory轉儲,沙盒運行)或包含混淆字符串的二進製文件等替代智能收集來源中獲得見解的從業者有用。例如,FireEye Labs混淆了字符串求解器(牙線),就像字符串一樣提取可打印的字符串,但另外揭示了在堆棧上編碼,包裝或手動構建的混淆的字符串。它可以用作字符串的在線替換,這意味著可以使用以下命令在牙線輸出上類似地調用字符串:
$PY2_VENV /bin/floss –q < options > < my_sample > | rank_strings < options >筆記:
–q參數抑制標題並格式化以顯示僅提取的字符串。要了解有關其他牙線選項的更多信息,請參閱其用法文檔。floss或rank_strings必須包括一個相對路徑,引用了python 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 ">>"包裝帶有MACO的BSD strings的某些版本不支持寬字符串。另請注意,掃描整個文件的-a選項可以在默認配置中禁用。沒有-a可能會丟失信息的字符串。我們建議通過自製或MacPorts安裝GNU Binutils,以獲取支持寬字符的strings 。使用護理調用正確的strings版本。
默認情況下, strings未安裝在Windows上。我們建議安裝Windows Sysinternals,Cygwin或Malcode Analyst Pack以獲取工作strings 。
使用與第一個Ember數據集相關的採樣惡意軟件二進製文件的字符串輸出對此版本的弦樂器進行了訓練。使用弱監督程序生成序數標籤,並通過具有學習對目標功能的梯度提升決策樹來執行監督學習。有關更多技術細節,請參見快速鏈接。請注意,儘管我們可以在將來的版本中重新考慮這種方法,但目前均未可用標記的數據和培訓代碼。
我們使用GitHub問題來發布錯誤和功能請求。
flarestrings源自出色的工具牙線。