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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
penelope — Penelope 셸 핸들러 | Kitploit
도구/GitHubGitHub/brightio/penelope
Payload GenerationShellcodePost-ExploitationCTFPenetration TestingCommand and ControlRed TeamingRemote Access Tool
GitHubbrightio/penelope

penelope

Penelope 셸 핸들러

저장소 보기
2.0k2279시간 9분 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Logo


Black Hat Arsenal EU USA MEA
Kali Linux

Penelope는 침투 테스터와 CTF 플레이어를 위한 현대적인 쉘 핸들러입니다. 기본 netcat 리스너보다 더 강력한 대안을 제공하며, 자동 PTY 업그레이드, 세션 관리, 로깅, 파일 전송 및 헬퍼 모듈을 추가합니다.

목차

  • 📥 설치
  • ⚙️ 기능
    • 🖥️ 세션 기능
    • 🌍 전역 기능
    • 🧩 모듈
  • 💻 사용법
    • ▶️ 일반적인 사용 예
    • 🎬 랜덤 사용 시연
    • 🖲️ 메인 메뉴 명령어
    • ⚡ 명령줄 옵션
  • 🔒 보안 고려 사항
  • 📝 TODO
  • ❓ FAQ
  • 🙌 얼리버드 감사

설치

Penelope는 Linux, macOS, FreeBSD를 포함한 Unix 계열 시스템에서 실행되며 **Python 3.6+**이 필요합니다.

Kali Linux

Penelope는 Kali Linux에서 사용할 수 있습니다:

root@kitploit:~
sudo apt update
sudo apt install penelope

독립 실행

Penelope는 Python 표준 라이브러리만으로 구현되어 외부 의존성 없이 독립 스크립트로 실행할 수 있습니다:

root@kitploit:~
wget -q https://raw.githubusercontent.com/brightio/penelope/refs/heads/main/penelope.py && python3 penelope.py

pipx

GitHub에서 최신 업스트림 버전을 직접 설치하려면:

root@kitploit:~
pipx install git+https://github.com/brightio/penelope

버전이 지정되고 더 안정적인 릴리스 경로를 위해 Penelope는 PyPI에서도 사용할 수 있습니다:

root@kitploit:~
pipx install penelope-shell-handler

기능

세션 기능

(*) upgrade 명령으로 수동으로 PTY로 업그레이드 가능

⚠️ Windows 지원은 실험적이며 활발히 개발 중입니다.

전역 기능

  • 모듈을 통해 대상과의 상호작용 간소화
  • 여러 세션
  • 여러 리스너
  • HTTP를 통한 파일/폴더 제공 (-s 스위치)
  • python3 익스플로잇에서 가져와 동일한 터미널에서 쉘 획득 가능 (참조: extras/exploit_examples)
  • set DisablePayloadHandler True로 기본 핸들러를 비활성화하면 Metasploit 익스플로잇과 함께 작동 가능
  • --mcp 스위치로 로컬 HTTP(토큰 인증)를 통해 MCP 클라이언트(예: Claude Code)에 라이브 세션 노출, 사용자와 함께 동일한 쉘 구동

모듈

modules

Meterpreter 모듈 시연

meterpreter

사용법

일반적인 사용 예

root@kitploit:~
penelope                          # 0.0.0.0:4444에서 리버스 쉘 수신
penelope -p 5555                  # 0.0.0.0:5555에서 리버스 쉘 수신
penelope -p 4444,5555             # 0.0.0.0:4444 및 0.0.0.0:5555에서 리버스 쉘 수신
penelope -i eth0 -p 5555          # eth0:5555에서 리버스 쉘 수신
penelope -a                       # 0.0.0.0:4444에서 리버스 쉘 수신 및 샘플 리버스 쉘 페이로드 표시

penelope -c target -p 3333        # target:3333의 바인드 쉘에 연결

penelope ssh user@target          # 로컬 포트 4444를 통해 target에서 리버스 쉘 획득
penelope -p 5555 ssh user@target  # 로컬 포트 5555를 통해 target에서 리버스 쉘 획득
penelope -i eth0 -p 5555 -- ssh -l user -p 2222 target  # eth0, 로컬 포트 5555를 통해 target에서 리버스 쉘 획득 (ssh에 스위치가 필요하면 -- 사용)

penelope -s <File/Folder>         # HTTP로 파일 또는 폴더 공유

Penelope

HTTP 파일 서버 (-s)

Penelope는 빠른 HTTP 파일 서버로도 사용할 수 있습니다.

root@kitploit:~
penelope -s file.txt                 # 0.0.0.0:8000에서 단일 파일 제공
penelope -s /path/to/dir             # 전체 폴더 제공
penelope -s a.sh b.elf notes.txt     # 여러 항목을 한 번에 제공
penelope -s . -p 80                  # 현재 디렉토리를 80번 포트에 제공
penelope -s secret.txt -prefix xk9   # URL 접두사 뒤에 숨기기: /xk9/secret.txt
penelope -s -u                       # 업로드 모드: CWD로 PUT/POST 수락
penelope -s -u -ud /tmp/loot         # 업로드 모드, 수신 파일을 /tmp/loot에 저장

시작 시 Penelope는 인터페이스별로 바로 사용 가능한 링크(및 -u가 설정된 경우 업로드 힌트)를 출력하므로 대상 쉘에 바로 복사하여 붙여넣을 수 있습니다.

랜덤 사용 시연

아래 동영상에서 볼 수 있듯이, 단 몇 초 안에 다음을 수행할 수 있습니다:

  1. 대상과의 모든 상호작용을 로깅하면서 완전히 작동하는 자동 크기 조정 PTY 쉘 확보
  2. 디스크를 건드리지 않고 대상에서 최신 버전의 LinPEAS 실행 및 출력을 실시간으로 로컬 파일에 저장
  3. 다른 탭에서 PTY 쉘 하나 더 열기
  4. 최신 버전의 LinPEAS 및 linux-smart-enumeration 업로드
  5. 사용자 정의 스크립트가 포함된 로컬 폴더 업로드
  6. URL에서 직접 exploit-db 익스플로잇 업로드
  7. 원격 파일을 로컬에 다운로드 및 열기
  8. 원격 /etc 디렉토리 다운로드
  9. 기존 쉘이 종료되면 자동으로 새 쉘 생성, 불안정한 쉘 세션 중에도 액세스 유지 지원

https://github.com/brightio/penelope/assets/65655412/7295da32-28e2-4c92-971f-09423eeff178

메인 메뉴 명령어

참고 사항:

  • 기본적으로 PTY 쉘에서 분리하여 메인 메뉴로 이동하려면 F12를 눌러야 합니다. 업그레이드가 불가능하여 기본 쉘로 끝난 경우 Ctrl+C로 분리할 수 있습니다. 이는 실수로 쉘을 종료하는 것을 방지합니다.
  • 메인 메뉴는 TAB 완성을 지원하며 짧은 명령어도 지원합니다. 예를 들어 interact 1 대신 i 1을 입력할 수 있습니다.

Main Menu

명령줄 옵션

root@kitploit:~
positional arguments:
  args                          -s/--serve 및 SSH 리버스 쉘 모드에 대한 인수

options:
  -p, --ports                   -i/-c/-s 옵션에 따라 수신/연결/제공할 포트(쉼표로 구분)
                                (기본값: 4444/5555/8000)

Reverse or Bind shell?:
  -i, --interface               수신할 로컬 인터페이스/IP (기본값: 0.0.0.0)
  -c, --connect                 바인드 쉘 호스트
  -j, --jump                    리버스 쉘 점프 엔드포인트

Hints:
  -a, --payloads                활성 리스너에 대한 샘플 리버스 쉘 페이로드 표시
  -l, --interfaces              사용 가능한 네트워크 인터페이스 목록
  -h, --help                    이 도움말 메시지를 표시하고 종료

Session Logging:
  -L, --no-log                  세션 로그 파일 비활성화
  -T, --no-timestamps           로그의 타임스탬프 비활성화
  -CT, --no-colored-timestamps  로그의 색상 타임스탬프 비활성화

Misc:
  -M, --menu                    메인 메뉴에서 시작
  -m, --maintain                대상당 N개의 세션 유지
  -S, --single-session          처음 생성된 세션만 수용
  -ms, --max-sessions           호스트당 최대 활성 세션 (기본값 5, 0 = 모든 새 연결 거부)
  -C, --no-attach               새 세션에 자동 연결 안 함
  -U, --no-upgrade              쉘 자동 업그레이드 비활성화
  -H, --keep-history            대상 쉘 기록 유지 (HISTFILE=/dev/null 설정 안 함)
  -O, --oscp-safe               OSCP 안전 모드 활성화
  --no-disk                     모든 상태를 RAM(tmpfs)에 유지, 디스크에 저장 안 함

MCP:
  --mcp                         로컬 HTTP를 통한 MCP 서버 활성화
  --mcp-host                    바인딩할 호스트/IP (기본값: 127.0.0.1)
  --mcp-port                    바인딩할 포트 (기본값: 저장된 포트, 없으면 무작위 여유 포트를 생성하여 ~/.penelope/mcp.json에 저장)
  --mcp-token                   Bearer 토큰 (기본값: 저장된 토큰, 없으면 자동 생성하여 저장)

File server:
  -s, --serve                   HTTP 파일 서버 모드 실행
  -prefix, --url-prefix         URL 경로 접두사
  -u, --upload                  파일 업로드(PUT/POST)를 서버에 활성화
  -ud, --upload-dir             업로드 저장 디렉토리 (기본값: CWD)

Debug:
  -N, --no-bins                 대상에서 누락된 바이너리 시뮬레이션 (쉼표로 구분)
  -v, --version                 버전 출력 후 종료
  -d, --debug                   디버그 출력 활성화
  -dd, --dev-mode               개발자 모드 활성화
  -cu, --check-urls             하드코딩된 URL 상태 확인 후 종료

보안 고려 사항

Penelope는 원격 쉘과의 직접적이고 유연한 상호작용을 위해 설계되었습니다. 사용 시 다음 사항에 유의하십시오:

  • 터미널 이스케이프 시퀀스: Penelope는 원격 시스템의 터미널 출력을 로컬 터미널 에뮬레이터로 직접 전달합니다. 악성 원격 프로세스는 터미널 이스케이프 시퀀스를 사용하여 화면을 조작하거나, 오해의 소지가 있는 링크를 만들거나, 클립보드와 같은 기능과 상호작용할 수 있습니다. 이러한 노출은 원격 쉘을 로컬 터미널에 중계하는 모든 도구(SSH, telnet, netcat 등)에 내재된 위험이며 Penelope만의 문제는 아닙니다. 신뢰할 수 없는 시스템에 연결할 때는 적절한 보안 설정이 적용된 터미널을 사용하십시오.

  • 세션 로그: 세션 로그에는 대상에서 수신한 자격 증명, 토큰, 명령 및 기타 민감한 정보가 포함될 수 있습니다. 안전하게 보관하고 로깅이 필요하지 않은 경우 --no-log를 사용하십시오.

  • 암호화되지 않은 연결: 표준 리버스 및 바인드 쉘 연결은 암호화되지 않습니다. 트래픽이 안전한 터널 또는 VPN으로 보호되지 않는 한 신뢰할 수 없는 네트워크를 통한 사용을 피하십시오.

  • MCP 서버 (--mcp): 활성화되면 MCP 서버는 Bearer 토큰을 보유한 모든 클라이언트에게 모든 활성 세션(명령 실행, 파일 전송)에 대한 전체 제어 권한을 부여합니다. 이 토큰은 ~/.penelope/mcp.json(0600 권한)에 저장됩니다. 127.0.0.1에 바인딩되고 토큰 인증을 사용합니다. 토큰을 비밀로 유지하고 신뢰할 수 없는 네트워크에 서버를 노출하지 마십시오.

⚖️ 면책 조항: Penelope는 승인된 보안 테스트, 연구 및 교육 목적으로만 사용해야 합니다. 명시적 허가 없이 시스템에 대해 사용하지 마십시오.

TODO

기능

  • 암호화
  • 원격 포트 포워딩
  • socks 및 http 프록시
  • 팀 서버
  • HTTPs 및 DNS 에이전트

알려진 문제

  • 세션 로깅: nano와 같은 대체 버퍼를 사용하는 명령이 비정상적으로 종료되면 로그에 이스케이프 시퀀스가 남을 수 있습니다. 데이터는 유지되지만 cat 같은 도구로 로그 파일을 보면 손상된 것처럼 보일 수 있습니다. 이러한 이스케이프 시퀀스를 필터링하여 로그 출력을 더 깔끔하게 만드는 것이 계획되어 있습니다.

FAQ

► OSCP 시험에서 Penelope를 사용할 수 있나요?

Penelope의 핵심 쉘 처리 기능은 자동 익스플로잇을 수행하지 않으므로 OSCP 스타일 사용에 적합합니다. 그러나 시험 규칙은 변경될 수 있으므로 시험 중 도구를 사용하기 전에 항상 최신 OffSec 공식 규칙을 확인하십시오.

일부 모듈은 추가 주의가 필요합니다:

  • meterpreter 모듈은 현재 시험 규칙을 준수하는 방식으로만 사용해야 합니다.
  • traitor 모듈은 자동 권한 상승을 수행하는 Traitor를 업로드합니다.

실수로 규칙을 위반하지 않으려면 -O / --oscp-safe 스위치를 사용하십시오.

► 원격 쉘에서 메인 메뉴로 어떻게 돌아가나요?

사용 중인 쉘 업그레이드 유형에 따라 다릅니다:

  • PTY: F12 누름
  • Readline: EOF 전송(Ctrl-D)
  • Raw: SIGINT 전송(Ctrl-C)

어떤 경우든 세션에 연결할 때 올바른 키가 항상 표시됩니다. 예:

F12

► Penelope를 어떻게 사용자 지정할 수 있나요? (기본 옵션 변경, 사용자 정의 모듈 생성 등)

peneloperc를 참조하십시오.

► 다운로드/업로드와 같은 메뉴 명령을 사용할 때 현재 작업 디렉토리 및/또는 사용자가 적용되지 않는 이유는 무엇인가요?

이는 일반적으로 다른 사용자로 새 대화형 쉘을 열었기 때문입니다. Penelope 에이전트는 초기 쉘의 디렉토리만 추적하고 첫 번째 쉘의 사용자 권한을 유지합니다. 가장 좋은 해결 방법은 새 쉘을 열기 전에 cd /tmp를 수행하거나, 사용자를 전환한 경우 새 사용자로 리버스 쉘을 생성하는 것입니다.

► 어떻게 기여할 수 있나요?

여러분의 기여는 매우 소중합니다! 도움을 주시려면 버그, 예상치 못한 동작을 보고하거나 새로운 아이디어를 공유해 주십시오. 또한 풀 리퀘스트를 제출할 수 있지만, PEP8을 강제하고 의도치 않게 전체 코드베이스를 재구성하는 IDE에서 커밋하는 것은 피해 주십시오.

► 이름은 어디서 유래했나요?

Penelope는 오디세우스의 아내로, 그가 돌아올 때까지 충성과 인내로 기다린 것으로 유명합니다. 이 도구는 기본 리스너를 넘어서는 워크플로를 위한 믿음직하고 안정적인 쉘 핸들러로 만들어졌기 때문에 그녀의 이름을 따서 명명되었습니다.

얼리버드 감사

  • Cristian Grigoriu - @crgr – PTY 업그레이드 프로세스를 자동화하도록 영감을 주셨습니다. 이 프로젝트가 탄생한 계기입니다.
  • Paul Taylor - @bao7uo – 바인드 쉘 지원 아이디어.
  • Longlone - @WAY29 – 이전 버전의 Python(3.6)과의 호환성 필요성 제기.
  • Carlos Polop - @carlospolop – 다른 시스템의 리스너에 쉘을 생성하는 아이디어.
  • @darrenmartyn – script 명령을 사용한 PTY 업그레이드 대체 방법 제시.
  • @bamuwe – SSH를 통한 리버스 쉘 아이디어.
  • @strikoder – 수많은 개선 아이디어.
  • @root-tanishq, @robertstrom, @terryf82, @RamadhanAmizudin, @furkan-enes-polatoglu, @DerekFost, @Mag1cByt3s, @nightingalephillip, @grisuno, @thinkslynk, @stavoxnetworks, @thomas-br, @joshoram80, @TheAalCh3m1st, @r3pek, @bamuwe, @six-two, @x9xhack, @dummys, @pocpayload, @anti79, , – 버그 신고.
도구 다운로드
기능Unix 계열 대상Windows 대상
자동 쉘 업그레이드PTYreadline(*)
실시간 터미널 크기 조정✅❌
쉘 활동 로깅✅✅
원격 파일/폴더 다운로드✅✅
로컬/HTTP 파일/폴더 업로드✅✅
실시간 출력 다운로드가 포함된 인메모리 로컬/HTTP 스크립트 실행✅❌
로컬 포트 포워딩✅❌
여러 탭 및/또는 호스트에 쉘 생성✅❌
호스트당 N개의 활성 쉘 자동 유지 (종료 시 재생성)✅❌
@strikoder
@bestutsengineer
  • 특별 감사 @Y3llowDuck – 홍보에 도움 주셨습니다!