Go 단일 바이너리 기반 펜테스트 명령 런처, 2872 커맨드 탑재
Go로 작성된 단일 바이너리 TUI 런처로 242개 도구와 2872개 명령을 YAML 치트시트로 관리하며 터미널 입력 버퍼에 명령을 자동 채워준다.
TL;DR
arsenal-ng는 Go로 작성된 단일 바이너리 기반의 TUI 명령 런처로, YAML 치트시트로 정의된 242개 도구와 2872개 명령을 다중 필드 퍼지 검색으로 즉시 찾아 플레이스홀더와 전역 변수를 결합해 터미널 입력 버퍼에 명령을 자동으로 채워주는 워크플로를 제공한다. 사용자는 `go install` 또는 소스 빌드로 빠르게 배포해 키보드 중심의 탐색으로 원하는 명령을 찾아 인자를 채운 뒤 바로 편집·실행할 수 있으며 도움말과 페이지네이션된 도구 테이블이 운영 편의성을 높인다. 터미널 입력 버퍼 자동 채우기는 TIOCSTI 활성화 또는 바이너리에 CAP_SYS_ADMIN 권한 부여로 동작하며 이 설정은 보안 트레이드오프를 수반한다. Windows는 네이티브 미지원으로 WSL을 통해 사용해야 하고 macOS와 Linux에서 주 기능이 정상 동작한다.
주요 기능
- 즉시 실행이 가능한 단일 바이너리 구조를 제공해 별도 런타임 의존성 없이 밀리초 단위로 시작하며 설치 후 곧바로 사용 가능한 환경을 보장한다. 이 아키텍처 때문에 배포와 업데이트가 간결하며 컨테이너화 또는 패키지화가 비교적 수월하다. README에 제시된 `go install`과 `make build` 절차로 로컬에 빠르게 배포할 수 있다.
- 다중 키워드 퍼지 검색을 통해 툴 이름·제목·태그·설명·명령을 동시에 탐색하며 결과 목록에서 화살표 키로 빠르게 이동해 선택할 수 있다. 검색 결과는 실시간으로 필터링되어 수천 개 명령 중에서도 원하는 항목을 빠르게 찾을 수 있다. 검색 UI는 사용자가 입력한 글로벌 변수를 기준으로 플레이스홀더를 자동 채우는 흐름과 연동된다.
- 명령 템플릿에 구문 강조(Syntax Highlighting)를 적용하고 태그별 색상을 고정해 시각적 구분을 제공하며, 플레이스홀더와 기본값 `{{arg|default}}` 문법을 통해 인자 채우기 흐름을 단순화한다. 플레이스홀더는 대화형 인자 입력 화면에서 탭으로 이동 가능하며 기본값은 즉시 편집할 수 있는 형태로 제공된다. 이런 조합은 실전 펜테스트 상황에서 반복 입력을 최소화하는 데 기여한다.
- 전역 변수를 한 번 설정하면 해당 세션 내 모든 명령 템플릿에서 자동으로 해당 변수를 채워주며 `set`, `unset`, `variables` 같은 내장 명령으로 상태를 관리할 수 있다. 전역 변수는 선택한 명령의 플레이스홀더에 우선 적용되어 수동 입력을 줄이고 실수 가능성을 낮춘다. 변수는 세션이 유지되는 동안 지속되므로 여러 명령을 연속 실행할 때 편의성이 증가한다.
어떻게 동작하는가
arsenal-ng는 Bubble Tea 기반의 TUI를 통해 사용자의 검색 입력을 받아 내부에 로드된 YAML 치트시트들을 인덱싱하고 다중 필드 퍼지 검색으로 일치 항목을 빠르게 찾는다. 선택한 명령은 플레이스홀더 문법(`{{arg}}`, `{{arg|default}}`)에 따라 인자 입력 뷰로 이동하며 전역 변수와 결합해 자동으로 값이 채워진 상태로 터미널 입력 버퍼에 적재된다. 터미널 입력 버퍼 사전채우기는 TIOCSTI ioctl을 활성화하거나 바이너리에 CAP_SYS_ADMIN을 부여하는 방식으로 구현 가능하며 이 점은 README에 구체 명령으로 안내되어 있다.
해결 문제
중복되는 펜테스트 명령을 검색하고 즉시 편집 가능한 형태로 터미널에 재현하는 과정을 자동화해 손으로 명령을 일일이 재작성하는 비용을 줄인다. 중앙화된 YAML 치트시트 포맷으로 팀 또는 개인의 툴셋을 표준화하고 쉽게 확장할 수 있게 한다. TUI 기반 검색과 전역 변수 자동 채움은 대화형 작업 흐름에서 명령 탐색·준비·실행 시간을 단축한다.
차별점
- 원본 arsenal에서 영감을 받았으나 코드베이스를 처음부터 다시 작성해 Go 단일 바이너리와 낮은 런타임 의존성에 초점을 맞춘 점이 차별화된다. 이로 인해 설치와 배포가 간결하며 실행 속도가 빠른 장점이 있다. README가 명시한 대로 즉시 시작 가능한 단일 파일 배포를 목표로 설계되었다.
- 명령 템플릿을 단순한 YAML 형식으로 관리하도록 설계해 사용자가 새로운 툴을 추가하거나 기본값을 설정하는 작업이 로컬 파일 편집으로 직관적이며, 이는 반복적인 도구 추가·공유 과정의 진입 장벽을 낮춘다. 치트시트 포맷은 플레이스홀더와 기본값 문법을 명확하게 지원해 재사용성을 높인다.
- 전역 변수와 터미널 입력 버퍼 사전채우기 조합으로 선택한 명령을 즉시 셸에 적재해 편집·실행할 수 있는 흐름을 제공하며, 이는 단순한 명령 목록 뷰어와 구별되는 실전 중심의 워크플로이다. 전역 변수는 세션 단위로 유지되어 연속된 공격 시퀀스에서 입력 반복을 줄인다.
사용 사례
- 빠르게 다양한 오픈소스 보안 툴의 명령을 찾아 실행 인자를 채워 실전 펜테스트 절차를 단축하는 작업에 적합하다. TUI 검색과 플레이스홀더 자동 완성으로 라이브 세션에서 명령 준비 시간이 줄어든다. 전역 변수와 결합하면 동일 타깃에 대한 연속 명령 실행이 편해진다.
- 레드팀이나 침투 테스트 시나리오에서 흔히 쓰는 nmap, ffuf 같은 도구 명령을 표준화된 치트시트로 유지해 실수와 옵션 누락을 감소시키는 데 사용할 수 있다. YAML로 팀 표준을 관리하면 팀원 간 명령 템플릿 공유가 단순해진다. 운영 중인 쉘에 명령을 바로 채워 편집할 수 있어 현장 대응이 유연해진다.
- 학습용 환경이나 워크숍에서 기본 명령 템플릿을 미리 정의해 입문자가 명령 구조와 주요 옵션을 빠르게 익히도록 지원하는 데 활용할 수 있다. 플레이스홀더와 기본값은 교육 예제 구성에 유리하다. 로컬에서 파일 추가만으로 예제를 확장할 수 있다.
시작하기
Go 1.24 이상이 설치된 환경에서는 `go install -v github.com/halilkirazkaya/arsenal-ng/cmd/arsenal-ng@latest` 명령으로 최신 바이너리를 GOPATH에 설치하고 PATH에 추가하면 곧바로 실행할 수 있다. 소스에서 빌드하려면 리포지토리를 클론한 뒤 `make build`를 실행하면 `./bin/arsenal-ng`가 생성되어 바로 실행할 수 있다. Zsh 또는 Bash에 alias를 등록하면 단축키로 빠르게 접근할 수 있다.
요구사항
- Go 1.24.0 이상이 필요하며 README가 이 버전을 명시하고 있다.
- Linux와 macOS를 정식으로 지원하며 Linux에서 터미널 prefill 기능은 커널 6.2+ 설정이 필요하다고 안내되어 있다.
- Windows는 네이티브 CMD/PowerShell을 통한 실행을 지원하지 않으며 WSL을 통해 사용해야 한다.
이미지 분석




477
Stars
60
Forks
+208
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.