
Pupy
Pupy는 주로 Python으로 작성된 오픈소스, 크로스 플랫폼(Windows, Linux, OSX, Android) 다기능 RAT(Remote Administration Tool) 및 포스트 익스플로잇 도구입니다. 전체 메모리 내 실행 방식을 사용하며 매우 낮은 footprint를 남깁니다. Pupy는 다양한 전송(transport)을 이용해 통신할 수 있고, 프로세스로 마이그레이션(리플렉티브 인젝션)할 수 있으며, 원격 Python 코드, Python 패키지, Python C 확장을 메모리에서 로드할 수 있습니다.
Pupy 모듈은 rpyc를 사용하여 원격 Python 객체에 투명하게 접근할 수 있으므로 다양한 대화형 작업을 수행할 수 있습니다.
Pupy는 PE 실행 파일, 리플렉티브 DLL, 순수 Python 파일, powershell, apk 등 여러 형식으로 페이로드를 생성할 수 있습니다.
페이로드를 패키징할 때 실행기(connect, bind 등), 전송(ssl, http, rsa, obfs3, scramblesuit 등), 그리고 여러 "scriptlet"을 선택할 수 있습니다. Scriptlet은 세션 없이도 오프라인으로 다양한 작업(백그라운드 스크립트 시작, 지속성 추가, 키로거 시작, 샌드박스 탐지 등)을 수행하기 위해 임베드되는 Python 스크립트입니다.
Installation
git clone https://github.com/n1nj4sec/pupy.git pupy
cd pupy
git submodule init
git submodule update
pip install -r pupy/requirements.txt
또는 위키를 참조하세요
Features
- 멀티 플랫폼 (windows xp, 7, 8, 10, kali linux, ubuntu, osx, android에서 테스트됨)
- Windows에서 Pupy 페이로드는 리플렉티브 DLL로 컴파일될 수 있으며 전체 Python 인터프리터가 메모리에서 로드됩니다. Pupy는 디스크에 접촉하지 않습니다 :)
- pupy는 단일 .py 파일로 패킹될 수 있으며 모든 OS에서 Python 표준 라이브러리 외의 의존성 없이 실행될 수 있습니다
- pycrypto를 사용할 수 없을 때는 순수 Python aes 및 rsa 구현으로 대체됩니다
- Pupy는 다른 프로세스로 리플렉티브 마이그레이션할 수 있습니다
- Pupy는 메모리에서 순수 Python 패키지(.py, .pyc)와 컴파일된 Python C 확장(.pyd, .so)을 원격으로 임포트할 수 있습니다. 임포트된 Python 모듈은 디스크에 접촉하지 않습니다.
- Pupy는 쉽게 확장 가능하며, 모듈 작성은 비교적 간단하고 OS와 카테고리별로 정렬됩니다.
- 이미 수많은 멋진 모듈이 구현되어 있습니다!
- Pupy는 rpyc를 사용하며 모듈은 원격 클라이언트의 Python 객체에 직접 접근할 수 있습니다
- pupy 셸에서 원격 객체에 대화형으로 접근할 수도 있고 원격 속성에 대한 자동 완성까지 지원됩니다!
- 통신 전송은 모듈식이며, 스택 가능하고, 훌륭합니다. HTTP over HTTP over AES over XOR로 데이터를 유출할 수도 있습니다. 또는 사용 가능한 전송의 어떤 조합이든 가능합니다!
- Pupy는 obfsproxy 플러그 가능한 전송을 사용하여 통신할 수 있습니다
- 모든 비대화형 모듈은 한 명령으로 여러 호스트에 디스패치할 수 있습니다
- 원격 호스트에서 실행되는 명령과 스크립트는 중단할 수 있습니다
- 명령 및 인수에 대한 자동 완성
- 사용자 정의 구성 가능: 명령 별칭, 연결 시 자동 실행되는 모듈 등...
- 전체 메모리 내 원격 Python 인터프리터에 대한 자동 완성을 지원하는 대화형 Python 셸을 열 수 있습니다
- 대화형 셸(cmd.exe, /bin/bash 등)을 원격으로 열 수 있습니다. Unix 및 Windows 클라이언트의 원격 셸은 ssh 셸처럼 모든 키보드 신호가 정상적으로 작동하는 실제 tty를 갖습니다
- Pupy는 PE exe를 원격으로 그리고 메모리에서 실행할 수 있습니다 (mimikatz와 함께 사용하는 ex 참조)
- Pupy는 다양한 형식으로 페이로드를 생성할 수 있습니다: apk, lin_x86, lin_x64, so_x86, so_x64, exe_x86, exe_x64, dll_x86, dll_x64, py, pyinst, py_oneliner, ps1, ps1_oneliner, rubber_ducky
- Pupy는 pupygen.py의 python 또는 powershell 원라이너를 사용해 단일 명령줄로 메모리에 배포할 수 있습니다.
- "scriptlet"은 네트워크 연결 없이도 "오프라인"으로 일부 작업(예: 키로거 시작, 지속성 추가, 사용자 지정 Python 스크립트 실행, check_vm 등)을 수행하기 위해 생성된 페이로드에 임베드할 수 있습니다.
- 그 외에도 수많은 기능이 있습니다. 구현된 모듈을 확인해 보세요
Implemented Transports
pupy의 모든 전송은 스택 가능합니다. 즉, 사용자 지정 전송 conf(pupy/network/transport/<transport_name>/conf.py)를 생성하면 pupy 세션이 어떤 것이든 보이게 만들 수 있습니다. 예를 들어 HTTP over HTTP over base64 over HTTP over AES over obfs3으로 스택할 수도 있습니다 :o)
- rsa
- RSA와 AES256을 사용한 인증 및 암호화 레이어로, 종종 다른 레이어와 스택됩니다
- aes
- ssl (기본값)
- ssl_rsa
- http
- 트래픽을 HTTP 트래픽처럼 보이게 만드는 레이어. HTTP는 rsa 레이어와 스택됩니다
- obfs3
- scramblesuit
- udp
- UDP를 통한 rsa 레이어 (버그가 있을 수 있으며 아직 패킷 손실을 처리하지 않습니다)
- other
- 다른 레이어는 실제로 특별한 용도가 없으며 코드 예제용으로 제공됩니다: (dummy, base64, XOR, ...)
Implemented Launchers (not up to date, cf. ./pupygen.py -h)
실행기는 역방향 연결을 시작하기 전에 사용자 지정 작업을 실행할 수 있게 해줍니다
- connect
- bind
- auto_proxy
- 가능한 SOCKS/HTTP 프록시 목록을 가져와 각각을 시도합니다. 프록시 검색 방법: 레지스트리, WPAD 요청, gnome 설정, HTTP_PROXY 환경 변수
Implemented Modules (not up to date)
모든 플랫폼:
- 명령 실행
- download
- upload
- 자동 완성을 지원하는 대화형 python 셸
- 대화형 셸 (cmd.exe, powershell.exe, /bin/sh, /bin/bash, ...)
- tty 할당은 Windows와 *nix 모두에서 잘 지원됩니다. ssh 셸처럼 보입니다
- shellcode 실행
- 지속성
- socks5 프록시
- 로컬 및 원격 포트 포워딩
- 스크린샷
- 키로거
- 메모리에서 멋진 자격 증명 수집 도구 LaZagne 실행!
- 스니핑 도구, netcreds
- 프로세스 마이그레이션 (windows & linux, 아직 osx 제외)
- ...
- 그 외 많은 도구 (upnp 클라이언트, impacket을 원격으로 사용하는 다양한 정찰/피벗 도구, ...)
Windows 전용:
- migrate
- 프로세스 간 아키텍처 인젝션도 작동합니다 (x86->x64 및 x64->x86)
- PE exe의 메모리 내 실행, x86 및 x64 모두!
- 웹캠 스냅샷
- 마이크 녹음
- mouselogger:
- 각 클릭 시 마우스 주변의 작은 스크린샷을 찍어 서버로 전송합니다
- 토큰 조작
- getsystem
- creddump
- 수많은 유용한 powershell 스크립트
- ...
Android 전용
- Android용 텍스트 음성 변환으로 소리내어 말하기
- 웹캠 스냅샷 (전면 캠 & 후면 캠)
- GPS 추적기!
Documentation
위키를 참조하세요
몇 가지 스크린샷 (최신 아님)
위키의 스크린샷 섹션
FAQ
서버가 Windows에서 작동하나요?
Pupy 서버는 Linux에서 가장 잘 작동합니다. Windows의 서버는 실제로 테스트되지 않았으며 버그가 많을 것입니다. 이식 가능한 방식으로 코딩하기 위해 최선을 다하지만 항상 모든 것을 고칠 시간이 있는 것은 아닙니다. 비이식 코드를 패치할 용기가 있다면 풀 리퀘스트를 기꺼이 수락하겠습니다! :)
설치할 수 없는데, 어떻게 작동하나요?
위키의 Installation 섹션을 살펴보세요
pupy.sh를 시작할 때 다음 오류가 발생합니다: ImportError: No module named creddump.win32.domcachedump
위키의 설치 단계를 따르세요. git 서브모듈 초기화/업데이트를 빠뜨렸습니다
pupygen 사용 시 다음 오류가 발생합니다: IOError: [Errno 2] No such file or directory: '/full-path/pupy-master/pupy/payload_templates/pupyx86.exe'
위키의 설치 단계를 따르세요. git 서브모듈 초기화/업데이트를 빠뜨렸습니다
설치 중 다른 오류가 발생합니다
위키의 설치 단계를 따르세요 (네, 알고 있습니다)
저는 pupy를 좋아하는데, 맥주 한 잔 사드려도 될까요!
물론이죠! 감사합니다!
pledgie를 통해 :
BTC를 통해: 12BKKN81RodiG9vxJn34Me9ky19ArqNQxC
DDOS 모듈 좀 추가해 줄 수 있나요?
아니요.
이메일: [email protected]
Twitter: Twitter에서 팔로우하세요
여러분 중 일부가 pupy 개발에 참여하고 싶다면 망설이지 마세요! 모든 도움에 크게 감사드리며 모든 풀 리퀘스트를 검토하겠습니다.
이 프로젝트는 개인 발전입니다. 그 철학을 존중하고 악의적인 목적으로 사용하지 마세요!
Special thanks
pupy를 개선하고 더 나은 도구로 만드는 데 도움을 준 모든 기여자에게 특별한 감사를 드립니다! :)