소개
shellz는 Simone Margaritelli가 개발한 소형 유틸리티로, SSH, Telnet, Kubernetes, WinRM, 웹 또는 커스텀 셸을 하나의 도구에서 관리할 수 있게 해줍니다. 단일 명령줄 인터페이스를 통해 다양한 시스템에 투명하게 셸 명령을 실행할 수 있어, 예를 들어 Windows 머신, Kubernetes 포드, SSH 서버 또는 라즈베리 파이의 가동 시간을 확인하는 작업이 가능합니다. 이 도구는 Go 언어로 작성되었으며, GPL-3.0 라이선스 하에 배포됩니다.
상세정보
프로그램 소개/무엇인지
shellz는 SSH, Telnet, Kubernetes, WinRM, 웹 또는 커스텀 셸을 하나의 도구에서 관리할 수 있게 해주는 소형 유틸리티입니다. Simone Margaritelli가 개발했으며, 단일 명령줄 인터페이스를 통해 다양한 시스템에 투명하게 셸 명령을 실행할 수 있습니다. 예를 들어 Windows 머신, Kubernetes 포드, SSH 서버 또는 라즈베리 파이의 가동 시간을 확인하는 작업이 가능합니다.
주요 기능다중 셸 유형 지원
shellz는 SSH, Telnet, WinRM, Kubernetes 및 웹 셸을 기본으로 지원하며, 커스텀 셸 타입을 위한 플러그인 시스템도 제공합니다. 이를 통해 사용자는 하나의 도구로 다양한 원격 시스템에 접근하고 명령을 실행할 수 있습니다.
아이덴티티 및 셸 관리
사용자는 ~/.shellz 폴더에 아이덴티티(JSON)와 셸(JSON) 파일을 생성하여 관리할 수 있습니다. 아이덴티티는 사용자 이름, SSH 키 또는 비밀번호, SSH 에이전트 참조 등을 포함할 수 있으며, 셸은 호스트, 포트, 타입, 그룹 및 연결 설정을 정의합니다.
그룹 및 터널링 기능
셸은 그룹으로 조직화할 수 있으며, 기본 ‘all’ 그룹이 모두 포함됩니다. 또한 reverse SSH 터널링을 지원하여 로컬 포트를 원격 호스트의 서비스로 forwarding할 수 있습니다.
플러그인 확장성
내장되지 않은 셸 타입의 경우, 사용자는 JavaScript 플러그인을 개발하여 shellz에 통합할 수 있습니다. 플러그인은 Create, Exec 및 Close 함수를 구현해야 하며, HTTP, TCP 및 프록시 지원을 위한 API를 제공받습니다.
다운로드·설치 방법
shellz의 사전 컴파일된 버전은 GitHub 릴리스 페이지에서 각 릴리스별로 제공됩니다. 소스 코드로부터 직접 빌드하려면 Go 1.8 이상이 설치되어 있어야 하며, $GOPATH/bin이 $PATH에 포함되어 있어야 합니다. 그런 다음 다음 명령을 실행하여 설치할 수 있습니다:
go get -u github.com/evilsocket/shellz/cmd/shellz이 명령은 shellz를 다운로드하고 의존성을 설치하며 컴파일한 후, $GOPATH/bin에 shellz 실행 파일을 배치합니다.
기본 사용법/명령어
첫 번째 실행 시 shellz는 ~/.shellz 폴더와 idents, shells 하위 폴더를 자동으로 생성합니다. 사용자는 먼저 아이덴티티 파일을 생성한 다음 셸 파일을 만들어야 합니다. 예를 들어 기본 SSH 아이덴티티는 다음과 같이 생성할 수 있습니다:
{ "name": "default", "username": "evilsocket", "key": "~/.ssh/id_rsa" }그리고 미디어 서버에 연결하는 셸은 다음과 같이 정의할 수 있습니다:
{ "name": "media-server", "host": "media.server", "groups": ["servers", "media", "whatever"], "port": 22, "identity": "default" }설정이 완료되면 다음 명령으로 셸 목록을 확인할 수 있습니다:
shellz -list특정 그룹의 셸만 보려면:
shellz -list -on web셸을 활성화하거나 비활성화하려면:
shellz -enable machineA, machineB shellz -disable machineA모든 셸에서 명령을 실행하려면 -run 플래그를 사용합니다. 예를 들어 모든 셸에서 'id' 명령을 실행하려면:
shellz -run id특정 셸에서만 실행하려면 -on 옵션을 추가합니다:
shellz -run id -on machineA출력을 파일에 저장하려면 -to 옵션을 사용하며, 셸의 필드를 참조할 수 있습니다:
shellz -run uptime -to "{{.Identity.Username}}_{{.Name}}.txt"역방향 터널을 시작하려면 터널 정의를 포함한 셸 파일을 만든 후 다음 명령을 실행합니다:
shellz -tunnel -on my.tunnel사용 가능한 모든 플래그와 예시를 보려면 인수 없이 shellz를 실행합니다:
shellz이런 경우에 유용합니다
다양한 원격 시스템(SSH, Telnet, WinRM, Kubernetes 등)을 정기적으로 관리해야 하는 시스템 관리자나 개발자에게 유용합니다. 하나의 도구로 여러 환경에 접근하여 명령을 실행함으로써, 별도의 클라이언트를 설치하거나 전환하는 번거로움을 줄일 수 있습니다. 예를 들어, 여러 서버의 가동 시간을 확인하거나 Kubernetes 포드에서 디버깅 명령을 실행하는 작업이 간편해집니다.
지원 환경·시스템 요구사항
shellz는 Go 언어로 작성되어 Go 1.8 이상이 설치된 환경에서 소스 코드로부터 빌드할 수 있습니다. Windows, Linux, macOS 등 Go가 지원하는 플랫폼에서 실행 가능하며, 사전 컴파일된 바이너리는 GitHub 릴리스에서 제공됩니다. 실행 시 ~/.shellz 폴더에 대한 쓰기 권한이 필요합니다.
최신 버전·업데이트
현재 버전은 1.6.0이며, 최신 릴리스 정보 및 다운로드는 GitHub 저장소의 releases 페이지에서 확인할 수 있습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


