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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SSH-Snake — SSH-Snake는 SSH 개인 키 및 호스트 탐색의 사후 침투(post-exploitation) 작업을 자동화하는 자가 전파, 자가 복제, 파일리스(file-less) 스크립트입니다. | Kitploit
도구/GitHubGitHub/megamansec/ssh-snake
Privilege EscalationReconnaissanceNetwork MappingLateral MovementInformation GatheringPost-ExploitationPenetration TestingRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snake는 SSH 개인 키 및 호스트 탐색의 사후 침투(post-exploitation) 작업을 자동화하는 자가 전파, 자가 복제, 파일리스(file-less) 스크립트입니다.

2.3k2214개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
웹사이트

SSH-Snake: 자동 SSH 기반 네트워크 탐색

🐍 SSH-Snake는 시스템에서 발견된 SSH 개인 키를 사용하여 자동 네트워크 탐색을 수행하고, 특정 시스템에서 시작하여 SSH와 SSH 개인 키를 사용하여 네트워크가 어느 정도까지 침해될 수 있는지 식별함으로써 네트워크와 그 종속성에 대한 포괄적인 지도를 생성하도록 설계된 강력한 도구입니다.

SSH-Snake는 SSH를 통해 연결된 시스템 간의 관계를 자동으로 드러낼 수 있으며, 이는 수동으로 수행하려면 엄청난 시간과 노력이 필요합니다.

즉, SSH-Snake는 다음 작업을 자동으로 반복적으로 수행합니다:

  1. 현재 시스템에서 SSH 개인 키를 찾습니다.
  2. 현재 시스템에서 개인 키가 수락될 수 있는 호스트 또는 대상(user@host)을 찾습니다.
  3. 발견된 모든 개인 키를 사용하여 모든 대상에 SSH 연결을 시도합니다.
  4. 대상에 성공적으로 연결되면 연결된 시스템에서 1~4단계를 반복합니다.

완전히 자가 복제 및 자가 전파되며, 완전히 파일리스(fileless) 방식입니다. 여러모로 SSH-Snake는 실제로 웜입니다: 스스로 복제하여 한 시스템에서 다른 시스템으로 최대한 멀리 퍼져 나갑니다.

수퍼 마리오 게임처럼 SSH 키를 사용하여 시스템 사이를 수동으로 이동하는 대신, SSH-Snake가 작업을 대신 수행하게 하세요.

이 도구는 해킹 목적으로 설계되었지만, 시스템 관리자도 인프라와 네트워크를 더 잘 이해하는 데 사용할 수 있습니다. 발견된 개인 키 출력을 비활성화하려면 이 코드 줄을 주석 처리하세요.

이 스크립트가 실제로 어떻게 작동하는지, 기술적 세부 사항, 흥미로운 발견, 설계 결정, 벤치마킹 및 배운 점에 대한 심층 분석은 이 블로그 게시물을 확인하세요. 이 소프트웨어는 Joshua Rogers가 작성했습니다.

스크린샷

매우 작은 네트워크에서 SSH-Snake 출력의 축소된 스크린샷입니다.

SSH를 사용한 시스템 간 관계를 시각화하는 그래프파란색 노드는 _대상_이 자신에게 연결할 수 있음을 나타냅니다(user@host<-->user@host). 빨간색 간선은 연결이 양방향임을 나타냅니다(user1@host1<-->user2@host2).

SSH를 사용한 시스템 간 관계를 시각화하는 그래프초록색 노드는 호스트(사용자 이름 없음)가 자신에게 연결할 수 있음을 나타냅니다(host1<-->host1). 초록색 간선은 연결이 양방향임을 나타냅니다(host1<-->host2). 오른쪽 상단의 회색 호스트는 스크립트가 처음 실행된 호스트입니다.

SSH를 사용한 시스템 간 관계를 시각화하는 그래프파란색 노드는 _대상_이 자신에게 연결할 수 있음을 나타냅니다(user@host<-->user@host). 빨간색 간선은 연결이 양방향임을 나타냅니다(user1@host1<-->user2@host2).

SSH-Snake 사용 및 실행

SSH-Snake는 다운로드하거나 bash로 파이프할 수 있습니다:

root@kitploit:~
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

또는

root@kitploit:~
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

SSH-Snake 정보

SSH-Snake는 인간 공격자가 SSH 개인 키를 발견하고 연결에 사용할 수 있는 대상을 찾기 위해 수행하는 작업을 완벽하게 에뮬레이트합니다. 전적으로 Bash로 작성되었으며, 주요 Linux(및 MacOS) 시스템에서 일반적으로 사용할 수 있는 최소한의 의존성 세트로 작동합니다: bash, ssh, coreutils, awk, uniq, sort, grep, tr, find, cat. getent 또는 dscacheutil이 필요합니다. sed는 첫 번째 시스템에서만 필요합니다. 마찬가지로 sudo, hostname, , , , , , 도 사용될 수 있지만 필수는 아닙니다(스크립트는 없는 경우를 정상적으로 처리합니다). 필요한 패키지가 없는 시스템이 발견되면 정상적으로 실패하여 해당 시스템에서 검색을 계속할 수 없음을 사용자에게 알리고(이전 시스템으로 돌아가서 계속 진행합니다).

SSH-Snake는 완전히 파일리스입니다: 사용자가 스크립트를 실행하면 stdin과 bash 인수(SSH를 통해)를 통해 대상의 bash로 전달됩니다. 검색된 시스템에는 스크립트의 물질적 증거가 남지 않습니다: 스크립트 실행의 유일한 증거는 프로세스 트리와 필연적으로 발생하는 상당한 양의 유효하지 않은 SSH 시도뿐입니다.

SSH-Snake는 깊이 우선 접근 방식을 사용하여 탐색합니다: 한 시스템에 연결되면 해당 시스템에서 더 연결을 시도한 후 역추적합니다.

SSH-Snake라는 이름은 스크립트의 출력이 네트워크를 위아래로 기어다니는 뱀처럼 보이기 때문에 붙여졌습니다. 그러나 게임 Snake와 달리 SSH-Snake는 자신의 꼬리를 물 때(이미 검색했거나 현재 검색 중인 시스템에 연결) 죽지 않습니다: 단지 정상적으로 연결 방법을 출력하고, 다시 검색하지 않고 반환합니다(무한 재귀를 피하기 위해).

SSH-Snake는 다양한 Linux 배포판과 MacOS(Homebrew Bash 설치)에서 테스트되었습니다. 호환되지 않는 Linux 기반 OS를 발견하면 보고서를 제출해 주세요.

기능

  • 로컬 SSH 개인 키를 사용하여 한 시스템에서 다른 시스템으로 재귀적으로 SSH,
  • stdin과 원격 시스템의 bash 인수만 사용하여 SSH-Snake 스크립트의 파일리스 탐색 및 전파/복제,
  • 가능한 경우 sudo를 사용하여 루트로 권한 상승 자동화,
  • .bash_history 항목에서 SSH 개인 키 파일 발견,
  • 일반적으로 사용되는 파일 및 폴더에서 SSH 개인 키 발견,
  • 스크립트 출력으로 SSH 개인 키 유출,
  • 각 시스템에서 사용자 정의 명령 실행 가능,
  • 개인 키 및 시스템 발견을 위한 플러그 앤 플레이 모듈식 시스템,
  • IP 범위, 마지막 로그인, known_hosts, SSH 구성 파일 등에서 호스트 감지,
  • 이미 검색되었거나 검색 중인 시스템을 감지하여 A->B->C와 같은 네트워크가 C->A도 발견할 수 있지만 A->B->C-A->B->C->A->B->...로 퇴행하지 않도록 하는 기능,
  • 스크립트 출력에서 네트워크의 그래픽 시각화 생성 기능,
  • ... 그 외 다수.

설정

SSH-Snake에는 구성 가능한 몇 가지 일반 설정이 있습니다. 이 설정은 SETTINGS.md#general-settings에 문서화되어 있습니다.

SSH-Snake는 또한 시스템에서 SSH 개인 키를 발견하고 연결을 시도할 호스트 및 대상을 발견하는 데 사용할 수 있는 다양한 구성 가능/플러그 앤 플레이 전략(함수)을 제공합니다. 합리적인 기본값이 제공되지만, 가능한 한 철저하게 검색하려면 더 많은 발견 기술을 활성화하는 것이 도움이 될 수 있습니다. 검색 시간이 오래 걸리는 경우 일부 발견 기술을 비활성화하면 도움이 될 수 있습니다. 하나의 전략(find_ssh_keys)을 제외한 각 전략은 켜고 끌 수 있습니다. 이러한 내용은 SETTINGS.md#configurable-discovery-strategies에 문서화되어 있습니다.

출력 이해

SSH-Snake의 원시 출력에는 발견된 개인 키, 대상 및 오류 메시지에 대한 정보가 혼합되어 있습니다.

SSH-Snake 전체 출력에 대한 자세한 설명은 OUTPUT.md에서 확인할 수 있습니다.

출력 예시는 example-output.log에서 확인할 수 있습니다.

시스템 관계 시각화

SSH-Snake의 출력을 사용하여 스크립트가 탐색한 네트워크의 그래프/시각화를 생성할 수 있습니다.

SSH-Snake 출력에서 이미지/시각화를 생성하고 해석하는 방법에 대한 자세한 설명은 GRAPHICS.md에서 확인할 수 있습니다.

기타 도구

SSH-Snake가 탐색한 네트워크의 시각화를 생성하는 기능 외에도 세 가지 다른 도구가 제공됩니다. 즉:

  1. forward-lookup-host.py: 소스 호스트 또는 대상이 주어지면 직접 또는 간접적으로(즉, 3차 시스템을 통해) 액세스할 수 있는 모든 시스템을 결정합니다.
  2. reverse-lookup-host.py: 대상 호스트 또는 대상이 주어지면 직접 또는 간접적으로 액세스할 수 있는 모든 시스템을 결정합니다.
  3. shortest-path-create-chain.py: 호스트 또는 대상 A와 B가 주어지면 두 대상을 연결하는 최단 경로를 결정합니다.

세 번째 도구는 대상 A에서 대상 B로 연결하는 데 사용할 수 있는 명령도 생성합니다. 예:

root@kitploit:~
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Shortest path from [email protected] to [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh vs Snake.nocomments.sh

스크립트가 상당히 크기 때문에(실제로 Quine이기 때문에 자동으로 here-document로 로드할 때) bash가 임시 파일에 쓰게 됩니다(65535바이트보다 크기 때문).

크기를 줄여 100% 파일리스 상태를 유지하기 위해 Snake.nocomments.sh에는 모든 주석, 불필요한 공백 및 빈 줄이 제거된 버전이 포함되어 있습니다. 이렇게 하면 파일 크기가 줄어들어 bash가 임시 파일을 생성하지 않습니다.

버그 / 문제

스크립트 관련 버그나 문제가 발생하면 GitHub 이슈로 보고해 주세요. 구성 설정을 포함해 주세요.

특히 스크립트에서 포착되지 않은 오류와 관련된 흥미로운 [line] 출력에 관심이 있습니다.

제한 사항

  • IPv4 전용: 최고의 프로그램들처럼 이 스크립트는 IPv6를 지원하지 않습니다. 가까운 시일 내에 지원이 추가될 것 같지는 않습니다.

  • 포트 22 전용: SSH가 22번 포트에서 실행된다는 일반적인 가정이 있습니다.

  • GNU coreutils: 스크립트는 GNU coreutils에 크게 의존합니다. 스크립트에 GNU-ism이 얼마나 사용되었는지(사용되었다면) 확인하지 못했습니다.

  • 현재 스크립트는 SSH 에이전트 소켓을 찾지 않습니다.

도구 다운로드
ip
timeout
arp
ifconfig
ipconfig
xargs