
하이 옥탄 트라이지 분석
[][docs]
[
][tests]
[
][codecov]
[
][pypi]
__ __ High Octane Triage Analysis __
|| _||______ __ __________ _____ ||
|| \||___ \__| ____/ ______/___ / ____\ ||
==||=====|| | __/ |/ \ /==| / __ \ __\===]|
'======|| | \ | | \_ _| \ ___/| | ||
||____ /__|___|__/ / | \____]| | ||
=========''====\/=========/ /==|__|=====|__|======'
\ /
\/
Binary Refinery™는 압축 및 암호화와 같은 이진 데이터 변환을 구현하는 Python 스크립트 모음입니다.
우리는 종종 이를 간단히 _refinery_라고 부르며, 이는 해당 패키지의 이름이기도 합니다.
이 스크립트들은 입력을 오직 stdin에서만 읽고 출력을 stdout으로만 쓰도록 설계되었습니다.
주요 철학은 모든 스크립트가 하나의 작업을 수행한다는 의미에서 단위여야 하며,
개별 단위들은 명령줄에서 파이프 연산자 |를 사용하여 _파이프라인_으로 결합되어 더 복잡한 작업을 수행할 수 있다는 것입니다.
이 프로젝트의 주요 초점은 악성코드 트리아지이며,
명령줄에서 CyberChef와 같은 것을 구현하려는 시도입니다.
Python 가상 환경을 만드세요. Python 3.11 이상이 필요합니다. 다음과 같이 refinery를 설치하세요:
python -m pip install -U pip
python -m pip install -U binary-refinery[extended]
단위를 -h와 함께 실행하여 작동 방식을 알아보거나, [docs][]를 grep하거나, binref 명령을 사용하여 찾아보세요.
실제 작동 모습을 보고 싶다면 [최근 비디오][VOD3]를 시청하세요.
하지만 이 readme의 나머지 부분도 읽어보세요.
릴리스 일정은 없지만 릴리스는 매우 자주 발생하므로 주기적으로 업데이트하는 것이 좋습니다. 버그 수정은 GIT 외부에 문서화되지 않지만, 다른 모든 변경 사항(즉, 새로운 기능)은 변경 로그에 문서화됩니다. 특히 영향력이 큰 릴리스에 대한 업데이트는 [Mastodon][]에서 저를 팔로우하세요.
단위를 -h 또는 --help 스위치와 함께 실행할 때 표시되는 도움말 텍스트가 주요 문서입니다.
[자동 생성된 문서][docs]에는 최상위 수준의 각 단위에 대한 해당 출력의 편집본이 포함되어 있으며,
툴킷의 세 가지 기본 개념에 대한 사양도 포함되어 있습니다:
[프레이밍][frame], [멀티빈 인수][argformats], [메타 변수][meta].
모든 단위의 설명과 도움말 텍스트에 대한 전체 텍스트 검색은 제공된 binref 명령을 통해 명령줄에서도 사용할 수 있습니다.
참조 문서가 다소 건조할 수 있다는 점을 인식하여,
일련의 튜토리얼을 제작하기 위한 지속적인 노력이 진행 중입니다. 꼭 확인해 보시길 강력히 권장합니다.
그 위에, 아래에 추가 리소스(제3자가 제작한 일부 포함)를 수집했습니다.
[!NOTE]
Refinery는 아직 알파 버전이며 인터페이스가 때때로 변경될 수 있습니다, 즉, 단위와 매개변수가 제거되거나 이름이 변경될 수 있습니다. 따라서 이전 비디오 및 블로그 게시물의 특정 명령줄이 더 이상 작동하지 않을 수 있습니다.
2021/08] [OALabs][OA]에서 [기능 비디오에서 툴킷을 시연][VOD1]할 수 있도록 허락해 주었습니다.
비디오에서 저는 본질적으로
첫 번째 튜토리얼의 내용을 작업합니다.2021/11] [Johannes Bader][JB]가 binary refinery로 malspam을 분석하는 놀라운 [블로그 게시물][BLOG]을 작성했습니다.2024/03] [Malware Analysis For Hedgehogs][MH]가 refinery를 사용하여 [XWorm 샘플을 언패킹하는 비디오][VOD2]를 만들었습니다.2024/11] [the CyberYeti][CY]가 [스트림에서 refinery를 발표][VOD3]하도록 했습니다.2025/06] [the CyberYeti][CY]와 함께 [다시 스트림에 출연][VOD4]했는데, 이번 것은 좀 더 날것입니다.
여기서 볼 수 있는 모든 버그는 수정되었습니다. 😉쇼케이스에는 다시 아래 예제 섹션의 샘플과 튜토리얼이 포함됩니다.
Binary Refinery는 (c) 2019 Jesko Hüttenhain이며, [3-Clause BSD License][license]에 따라 게시되었습니다. 이 저장소에는 전체 라이선스 텍스트 사본도 포함되어 있습니다. 이 라이선스에 포함되지 않는 작업을 하고 싶다면 저자에게 연락하세요.
refinery는 최소 Python 3.11이 필요합니다. 자체 [가상 환경][venv]에 설치하는 것이 좋습니다: 패키지는 많은 의존성을 끌어올 수 있으며, 전역 Python에 설치하면 버전 충돌이 발생하기 쉽습니다. 또한 툴킷은 많은 수의 새로운 명령을 도입하므로, 일부 시스템에서 충돌할 가능성이 있으며, 별도의 가상 환경에 유지하는 것이 이를 방지하는 한 가지 방법입니다.
모든 refinery 명령을 셸에서 항상 사용할 수 있도록 하려면(즉, 사용자 지정 가상 환경으로 전환할 필요 없이),
설치에 _접두사_를 선택할 수 있는 옵션도 있습니다,
이는 설치된 모든 명령 심 앞에 붙습니다.
예를 들어 r.을 접두사로 선택하면 [emit][] 단위가 r.emit 명령으로 설치됩니다.
추가 이점은 r.을 입력하고 Tab을 두 번 누르면 사용 가능한 모든 refinery 명령 목록을 얻을 수 있다는 것입니다.
그러나 문서에서는 접두사가 가정되지 않으며 refinery의 개발 목표는 대부분의 시스템에서 충돌하지 않는 것입니다.
저자는 접두사를 사용하지 않으며 이 옵션을 안전 장치로 제공합니다.
refinery를 설치하고 업데이트하는 가장 간단한 방법은 pip를 사용하는 것입니다. 먼저 최신 버전을 실행했는지 확인하세요:
python -m pip install -U pip
그런 다음 refinery 패키지를 설치하세요:
pip install -U binary-refinery
모든 단위에 접두사를 선택하려면 환경 변수 REFINERY_PREFIX를 통해 지정할 수 있습니다.
예를 들어 다음 명령은 Linux에서 접두사 r.로 현재 Python 환경에 refinery를 설치합니다:
REFINERY_PREFIX=r. pip install -U binary-refinery
Windows에서는 다음 명령을 실행해야 합니다:
set REFINERY_PREFIX=r.
pip install -U binary-refinery
특수 접두사 !를 지정하면 셸 명령이 전혀 생성되지 않고,
binary refinery가 라이브러리로만 설치됩니다.
현재 refinery HEAD를 설치하려면 위의 모든 단계를 반복하되 pip 패키지 대신 이 저장소를 지정하면 됩니다.
예를 들어 다음은 최신 refinery 커밋을 설치합니다:
pip install -U git+git://github.com/binref/refinery.git
마지막으로 [REMnux][remnux-main]를 사용하는 경우 해당 [refinery docker 컨테이너][remnux]를 사용할 수 있습니다.
로컬 악성코드 분석 [claude][]가 binary refinery를 사용하도록 가르치려면 [Binary Refinery Skill][agent]을 확인하세요.
다음은 현재 다양한 셸 환경이 얼마나 잘 지원되는지에 대한 요약입니다:
| Shell | Platform | State | Comment |
|---|---|---|---|
| Bash | Posix | 🔵 Good | 저자가 가끔 사용합니다. |
| CMD | Windows | 🔵 Good | 저자가 광범위하게 사용합니다. |
| PowerShell | Windows | 🟡 Reasonable | [PowerShell 버전이 최소 7.4이면 그냥 작동합니다.][psh1] |
| Zsh | Posix | 🟠 Minor Issues | [논의][zsh1] 후 [수정][zsh2]이 있습니다. |
| Fish | Posix | 🟠 Minor Issues | 이슈 [#55][fsh1] 및 논의 [#22][fsh2]를 참조하세요. |
다른 셸을 사용 중이고 공유할 피드백이 있다면 알려주세요!
(때로는 큰) 외부 의존성을 가진 매우 상황별 단위가 있습니다.
예를 들어 [stego][]는 이미지 파싱 라이브러리 Pillow가 필요한 단위입니다.
일부 라이브러리는 첫 사용자를 위해 refinery 설치 시간을 합리적인 수준으로 유지하기 위해 기본적으로 설치되지 않습니다.
해당 단위는 의존성이 누락되었을 때 수행할 작업을 알려줍니다:
$ emit config.png | stego RG
(13:37:00) failure in stego: dependency Pillow is missing; run pip install Pillow
그런 다음 이러한 누락된 의존성을 수동으로 설치할 수 있습니다. 누락된 의존성에 신경 쓰지 않고 긴 refinery 설치를 괜찮다면 다음과 같이 패키지를 설치할 수 있습니다:
pip install -U binary-refinery[all]
이는 필수 의존성 위에 모든 의존성을 설치합니다. 더 정확히 말하면 다음과 같은 추가 범주가 있습니다:
| Name | Included Dependencies |
|---|---|
default | 합리적인 의존성의 권장 선택, 저자의 선택 |
extended | 가장 모호한 것만 제외한 확장된 선택 |
all | 모든 refinery 단위에 대한 모든 의존성 |
이들은 여기에 오름차순으로 나열되어 있습니다, 즉 extended는 default가 설치하는 모든 것을 설치합니다.
또는 이 저장소를 복제하고 update.sh(Linux) 또는 update.ps1(Windows) 스크립트를 사용하여 로컬 가상 환경에 refinery 패키지를 설치할 수 있습니다. 이 방법의 설치 및 업데이트 과정은 단순히 스크립트를 실행하는 것입니다:
binary-refinery를 제거하고,binary-refinery[all]을 설치합니다.모든 문서를 로컬에서 생성할 수도 있습니다.
이렇게 하려면 run-pdoc3.py 스크립트를 실행하세요.
이것은 binary refinery가 Python 패키지로 설치된 환경에서 실행하지 않으면 실패합니다.
실행하려면 run-pdoc3.py의 첫 번째 명령줄 인수로 가상 환경의 경로를 지정해야 하며,
그러면 스크립트가 해당 환경의 인터프리터를 사용하여 다시 실행됩니다.
run-pdoc3.py를 실행하고 싶다고 확신한다면,
스크립트를 현재 기본 Python 인터프리터로 강제 실행하는 명령줄 스위치가 있습니다.
스크립트는 [pdoc3 패키지][pdoc3]를 설치하고 이를 사용하여 refinery 패키지에 대한 HTML 문서를 생성합니다.
문서는 이 readme 파일 바로 옆의 html 하위 디렉터리에서 찾을 수 있습니다.
튜토리얼은 가상 환경에 [Jupyter가 설치되어 있으면][jupyter] 간단히 실행하고 실행할 수 있는 Jupyter 노트북입니다. [Visual Studio Code가 Jupyter를 매우 편리하게 지원한다는][jupyter-vscode] 점을 지적할 가치가 있습니다.