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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pyrdp — RDP 몬스터-인-더-미들(mitm) 및 Python용 라이브러리, 연결을 실시간 또는 사후에 감시할 수 있는 기능 | Kitploit
도구/GitHubGitHub/gosecure/pyrdp
ExploitationNetwork ForensicsInformation GatheringNetwork SecurityMalware AnalysisCTFPenetration TestingLearning & EducationRed TeamingIncident ResponsePayload DevelopmentLabs & Practice
1.8k272244개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
GitHubgosecure/pyrdp

pyrdp

RDP 몬스터-인-더-미들(mitm) 및 Python용 라이브러리, 연결을 실시간 또는 사후에 감시할 수 있는 기능

저장소 보기웹사이트
공유

PyRDP

Tests Black Hat Arsenal 2019 Black Hat Arsenal 2021 Black Hat Arsenal 2022

PyRDP는 Python 원격 데스크톱 프로토콜(RDP) 중간자 공격(MITM) 도구 및 라이브러리입니다.

PyRDP Logo

다음과 같은 도구를 제공합니다:

  • RDP 중간자 공격(MITM)
    • 연결 시 사용된 평문 자격 증명 또는 NetNTLM 해시를 로깅합니다
    • 클립보드에 복사된 데이터를 가로챕니다
    • 네트워크를 통해 전송된 파일의 사본을 저장합니다
    • 백그라운드에서 공유 드라이브를 크롤링하여 로컬에 저장합니다
    • 연결의 리플레이를 저장하여 나중에 확인할 수 있습니다
    • 새 연결 시 콘솔 명령 또는 PowerShell 페이로드를 자동으로 실행합니다
  • RDP 플레이어:
    • MITM에서 들어오는 실시간 RDP 연결을 볼 수 있습니다
    • RDP 연결의 리플레이를 볼 수 있습니다
    • 작업을 숨기면서 활성 RDP 세션을 제어할 수 있습니다
    • 활성 세션 중 클라이언트의 매핑된 드라이브 목록을 확인하고 파일을 다운로드할 수 있습니다
  • 변환 도구:
    • RDP 리플레이를 비디오로 변환하여 공유를 용이하게 합니다
    • RDP 리플레이를 JSON 형식으로 직렬화된 저수준 이벤트 시퀀스로 변환합니다
    • PCAP를 리플레이, 비디오 또는 JSON 이벤트로 변환합니다
    • 복호화된 PCAP(L7 PDU)를 리플레이, 비디오 또는 JSON 이벤트로 변환합니다
  • RDP 인증서 클로너:
    • RDP 서버 인증서와 동일한 필드를 가진 자체 서명 X509 인증서를 생성합니다
  • PyRDP는 2018년에 소개되었으며 실제 위협 행위자를 잡을 수 있다는 것을 시연했습니다. 이 도구는 침투 테스트와 멀웨어 연구 사용 사례를 염두에 두고 개발되고 있습니다.

    PyRDP Player Replaying an RDP session

    목차

    • 지원 시스템
    • 설치
      • pipx 사용
      • Docker 이미지 사용
    • PyRDP 사용
      • PyRDP 중간자 공격 도구 사용
      • PyRDP 플레이어 사용
      • PyRDP 인증서 클로너 사용
      • PyRDP 변환 도구 사용
      • PyRDP 구성
      • 고급 사용법
      • Docker 전용 사용 지침
    • PyRDP 배경 이야기
    • PyRDP에 기여하기
    • 감사의 말

    지원 시스템

    PyRDP는 Python 3.7 이상에서 x86-64, ARM 및 ARM64 플랫폼에서 작동해야 합니다.

    이 도구는 Linux(Ubuntu 20.04, 22.04), Raspberry Pi 및 Windows의 Python 3.7에서 테스트되었습니다. macOS에서는 테스트되지 않았습니다.

    설치

    pipx를 사용하거나 Docker 컨테이너를 사용하는 두 가지 설치 방법이 권장됩니다. 소스에서 설치하거나 직접 Docker 컨테이너를 빌드하는 방법은 개발 문서에서 다룹니다.

    pipx 사용

    의존성

    Linux

    먼저, 필수 패키지를 설치해야 합니다(Ubuntu 22.04 기준 목록이며, 다른 배포판에 맞게 조정해야 할 수 있습니다). 전체 설치와 간소화 설치의 두 가지 유형을 제공합니다. 사용 사례에 맞게 의존성을 설치하세요.```sh

    Full install (GUI, convert captures to video)

    sudo apt install python3 python3-pip python3-venv
    build-essential python3-dev openssl
    libegl1 libxcb-cursor0 libxkbcommon-x11-0 libxcb-icccm4 libxcb-keysyms1
    libnotify-bin
    libavcodec58 libavdevice58

    Slim install (no GUI, no conversion to video possible)

    sudo apt install python3 python3-pip python3-venv
    build-essential python3-dev git openssl

    root@kitploit:~
    이것은 PyRDP 실행에 필요한 종속성을 설치합니다. GUI 또는 비디오 변환 종속성 없이 설치하기로 선택한 경우, 헤드리스 모드(`--headless`) 없이 `pyrdp-player`를 사용하거나 `pyrdp-convert`를 사용하여 비디오 출력을 생성할 수 없습니다.
    
    `pipx`가 설치되어 있는지 확인하세요. Ubuntu 22.04에서:```sh
    python3 -m pip install --user pipx
    python3 -m pipx ensurepath
    
    Windows

    Python이 설치되어 있는지 확인하세요. Windows Store Python은 Windows 11에서 작동하지 않았습니다. Scoop을 통해 Python을 설치하는 것을 권장합니다.```sh scoop install python # if not installed already scoop install pipx pipx ensurepath

    root@kitploit:~
    로그아웃한 후 다시 로그인하세요(PATH를 업데이트하려면).
    
    ##### 다른 OS
    
    다른 운영 체제에 `pipx`를 설치하려면 여기를 참조하세요: <https://github.com/pypa/pipx#install-pipx>
    
    #### 설치
    
    QT GUI와 캡처를 비디오로 변환하는 기능을 갖춘 완전한 PyRDP 경험을 원한다면:```sh
    pipx install pyrdp-mitm[full]
    

    헤드리스 환경(서버, 라즈베리파이)에서 실행하도록 설계된 컴팩트 버전의 경우:```sh pipx install pyrdp-mitm

    root@kitploit:~
    이제 준비가 되었습니다! [사용 지침](#using-pyrdp)을 참조하세요.
    
    ### Docker 이미지 사용
    
    도커가 설치되어 있고 작동 중이라면 가장 쉬운 설치 방법입니다.```sh
    docker pull gosecure/pyrdp:latest
    

    대안으로 GUI와 ffmpeg 종속성이 없는 더 슬림한 이미지를 제공합니다. 이것은 ARM 플랫폼에서 제공되는 유일한 이미지입니다.```sh docker pull gosecure/pyrdp:latest-slim

    root@kitploit:~
    모든 Docker 이미지 목록은 [gosecure/pyrdp DockerHub 페이지](https://hub.docker.com/r/gosecure/pyrdp/tags)에서 찾을 수 있습니다.
    `latest` 태그는 최신 릴리스 버전을 나타내고, `devel` 태그는 `main` 브랜치에서 빌드된 Docker 이미지입니다.
    
    ## PyRDP 사용하기
    
    ### PyRDP Monster-in-the-Middle 사용하기
    
    MITM을 실행하려면 `pyrdp-mitm <ServerIP>` 또는 `pyrdp-mitm <ServerIP>:<ServerPort>`를 사용하세요.
    
    `192.168.1.10`에서 RDP 서버가 실행 중이고 포트 3389에서 수신 대기 중이라고 가정하면 다음과 같이 실행합니다:
    
        pyrdp-mitm 192.168.1.10```sh
    pyrdp-mitm 192.168.1.10
    

    MITM을 처음 실행하면 pyrdp_output/ 디렉토리가 현재 작업 디렉토리 기준으로 생성됩니다. 해당 디렉토리의 예시 구조는 다음과 같습니다:```sh pyrdp_output/ ├── certs │   ├── WinDev2108Eval.crt │   └── WinDev2108Eval.pem ├── files │   ├── e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c │   ├── b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 ├── filesystems │   ├── romantic_kalam_8214773 │   │   └── device1 │   │   └── clipboard | └── priv-esc.exe -> ../../../files/b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 │   └── happy_stonebraker_1992243 │   ├── device1 │   └── device2 | └── Users/User/3D Objects/desktop.ini -> ../../../../../../e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c ├── logs │   ├── crawl.json │   ├── crawl.log │   ├── mitm.json │   ├── mitm.log │   ├── mitm.log.2021-08-26 │   ├── ntlmssp.log │   ├── player.log │   └── ssl.log └── replays ├── rdp_replay_20231214_01-20-28_965_happy_stonebraker_1992243.pyrdp └── rdp_replay_20231214_00-42-24_295_romantic_kalam_8214773.pyrdp

    root@kitploit:~
    * `certs/` - 인증서의 `CN`을 파일 이름으로 사용하여 생성된 인증서를 저장합니다.
    * `files/` - 캡처된 모든 파일을 포함하며, 콘텐츠의 SHA-256 해시를 파일 이름으로 사용하여 중복 제거하여 저장합니다.
    * `filesystems/` - 세션 ID별로 분류된 대상의 파일 시스템을 재생성하여 포함합니다.
       유사한 세션의 공간을 절약하기 위해 파일은 `files/` 아래의 실제 파일에 대한 심볼릭 링크입니다.
    * `logs/` - 대부분 JSON 및 일반 텍스트 형식으로 다양한 로그를 포함합니다:
      * `crawl`: 파일 크롤러 로그
      * `mitm`: 주요 MITM 로그
      * `ntlmssp.log`: 캡처된 NetNTLM 해시
      * `player.log`: 플레이어 로그
      * `ssl.log`: Wireshark와 호환되는 형식으로 저장된 TLS 마스터 시크릿
    * `replays/` - 타임스탬프와 세션 ID가 파일 이름에 포함된 이전에 기록된 모든 PyRDP 세션을 포함합니다.
    
    #### 개인 키와 인증서 지정
    
    키 생성이 작동하지 않거나 사용자 정의 키와 인증서를 사용하려면 `-c` 및 `-k` 인수를 사용하여 지정할 수 있습니다:```sh
    pyrdp-mitm 192.168.1.10 -k private_key.pem -c certificate.pem
    
    Monster-in-the-Middle 네트워크 수준 인증(NLA) 연결

    네트워크 수준 인증(NLA)은 Windows Vista부터 도입된 보안 기능으로, RDP 연결에 보안을 추가합니다. NLA는 새로운 보안 지원 공급자 CredSSP에 의존하며, 이 이름으로 불리기도 합니다. NLA를 적용하는 서버는 공격하기 더 어렵습니다. 사용할 수 있는 세 가지 전략이 있습니다:

    • 서버의 인증서 및 개인 키 획득
    • 호스트 리디렉션 기능 사용
    • 클라이언트의 NetNTLMv2 해시를 캡처하여 크랙
    Monster-in-the-Middle NLA

    서버의 인증서와 개인 키에 접근할 수 있다면, NLA가 적용되어 있어도 RDP MITM을 성공적으로 수행할 수 있습니다. 이 공격을 1.0 릴리스 블로그 게시물에 문서화했습니다. RDP 인증서 및 개인 키 추출 지침은 GitHub에서 확인할 수 있습니다.

    인증서와 개인 키에 접근할 수 있게 되면, pyrdp-mitm 명령줄에 다음을 추가하여 인증을 ssp로 설정하기만 하면 됩니다:```sh --auth ssp -c <certificate.pem> -k <private-key.pem>

    root@kitploit:~
    이는 NLA가 적용된 연결을 가로챌 수 있는 가능성을 제공합니다.
    
    ###### 서버에서 NLA가 적용된 경우의 대체 호스트 리디렉션
    
    ![NLA 리디렉션을 설명하는 다이어그램](https://assets.kitploit.com/production/public/readmes/2804/e74aa87cc1cfb892b9070fe387c9530e4e99973b2d780b72f6c118abf1ec8a5b.png)
    
    PyRDP가 대상 RDP 서버에 연결할 때 (1), 해당 서버가 NLA를 적용하면 PyRDP는 (2) 연결을 사용자가 선택한 다른 호스트로 대체합니다 (3).
    
    예를 들어, 이 기능을 사용하여 NLA를 적용하지 않는 것으로 알려진 서버로 리디렉션하거나 공격자가 제어하는 VM으로 리디렉션할 수도 있습니다.
    
    이 기능을 활성화하려면 대체 호스트의 주소와 포트를 다음과 같이 지정하십시오:```sh
    --nla-redirection-host 192.168.1.12 --nla-redirection-port 3389
    

    이 기능은 PyRDP 1.1.0에서 도입되었습니다.

    NetNTLMv2 해시 캡처

    NetNTLMv2 해시는 공격자에게 유용합니다. 비교적 쉽게 크랙되어 공격자가 합법적인 RDP 액세스를 활용하거나 자격 증명을 무차별 대입하는 데 사용할 수 있기 때문입니다. PyRDP 1.1.0부터 NLA(CredSSP) 연결을 통해 협상을 수행하고 NTLMSSP 인증 메시지를 캡처하여 클라이언트의 NetNTLMv2 해시를 캡처할 수 있습니다. 1.2.0에서는 서버의 인증서와 개인 키가 없어도 연결이 성공적으로 MITM되지 않도록 지원이 확장되었습니다. 이는 Responder가 RDP에서 수행하는 것과 유사합니다. 캡처된 NetNTLMv2 해시는 ntlmssp.log 로그 파일에서 찾을 수 있으며, John The Ripper 또는 hashcat과 같은 크래킹 도구가 처리할 수 있도록 형식이 지정됩니다.

    이 기법은 블로그 게시물에 자세히 설명되어 있습니다: RDP NetNTLMv2 해시 캡처: 공격 세부 정보 및 기술 방법 가이드

    이 기능은 --auth ssp와 호환되지만 --nla-redirection-host와는 호환되지 않습니다.

    PyRDP 플레이어에 연결

    PyRDP 플레이어를 통해 실시간 RDP 연결을 보려면 플레이어가 수신 대기 중인 IP 주소와 포트를 -i 및 -d 인수를 사용하여 지정해야 합니다. 참고: 포트 인수는 선택 사항이며 기본 포트는 3000입니다.```sh pyrdp-mitm 192.168.1.10 -i 127.0.0.1 -d 3000

    root@kitploit:~
    ##### 서버에서 MITM이 실행 중일 때 PyRDP 플레이어에 연결하기
    
    서버에서 MITM을 실행 중이고 여전히 실시간 RDP 연결을 보고 싶다면,
    [SSH 원격 포트 포워딩](https://www.booleanworld.com/guide-ssh-port-forwarding-tunnelling/)
    을 사용하여 서버의 포트를 사용자 머신의 플레이어 포트로 전달해야 합니다. 이 작업이 완료되면 `127.0.0.1`과 전달된
    포트를 MITM에 인수로 전달합니다. 예를 들어, 서버의 포트 4000이 사용자 머신의 플레이어 포트로 전달된 경우,
    사용할 명령은 다음과 같습니다:```sh
    pyrdp-mitm 192.168.1.10 -i 127.0.0.1 -d 4000
    

    새 연결에서 페이로드 실행

    PyRDP는 새 연결이 설정될 때 콘솔 명령 또는 PowerShell 페이로드를 자동으로 실행하는 기능을 지원합니다. RDP의 특성상 이 과정은 다소 해킹에 가깝고 항상 100% 신뢰할 수 있는 것은 아닙니다. 작동 방식은 다음과 같습니다:

    1. 사용자가 인증될 때까지 기다립니다.
    2. 페이로드를 숨기고 간섭을 방지하기 위해 클라이언트의 입/출력을 차단합니다.
    3. 가짜 Windows+R 시퀀스를 보내고 cmd.exe를 실행합니다.
    4. 페이로드를 콘솔 명령으로 실행하고 콘솔을 종료합니다. PowerShell 페이로드가 구성된 경우 powershell -enc <PAYLOAD>로 실행됩니다.
    5. 페이로드가 완료될 때까지 잠시 기다립니다.
    6. 클라이언트의 입/출력을 복원합니다.

    이 기능이 작동하려면 3개의 인수를 설정해야 합니다:

    • 페이로드
    • 페이로드 시작 전 지연 시간
    • 페이로드 지속 시간
    페이로드 설정

    다음 인수 중 하나를 사용하여 실행할 페이로드를 설정할 수 있습니다:

    • --payload, 콘솔 명령을 포함하는 문자열
    • --payload-powershell, PowerShell 명령을 포함하는 문자열
    • --payload-powershell-file, PowerShell 스크립트의 경로
    페이로드 시작 시점 선택

    현재 PyRDP는 사용자가 로그온한 시점을 감지하지 않습니다. 페이로드를 실행하기 전에 대기할 시간을 지정해야 합니다. 이 시간이 경과하면 가짜 키 시퀀스를 전송하고 페이로드가 제대로 실행될 것으로 예상합니다. 이를 위해 --payload-delay 인수를 사용합니다. 지연 시간은 밀리초 단위입니다. 예를 들어, 사용자가 처음 5초 이내에 로그인할 것으로 예상된다면 다음 인수를 사용합니다:```sh --payload-delay 5000

    root@kitploit:~
    이것은 RDPDR 초기화 중에 교환되는 일부 메시지를 활용하면 더 정확하게 만들 수 있습니다.
    이 작업을 더 잘 수행하는 데 관심이 있다면 [이 이슈](https://github.com/GoSecure/pyrdp/issues/98)를 참조하세요.
    
    ##### 정상 활동 재개 시점 선택
    
    콘솔 실행이 중지된 시점을 직접 알 수 있는 방법이 없기 때문에, PyRDP에 클라이언트의 입력/출력을 차단할 시간을 알려줘야 합니다. 페이로드를 실행 중인 콘솔이 표시될 것으로 예상되는 최대 시간으로 설정하는 것이 좋습니다. 즉, 페이로드가 완료될 것으로 예상되는 시간입니다.
    페이로드 기간을 설정하려면 `--payload-duration` 인수를 사용하여 시간(밀리초)을 지정합니다. 예를 들어, 페이로드 완료에 최대 5초가 걸릴 것으로 예상되는 경우 다음 인수를 사용합니다:```sh
    --payload-duration 5000
    

    이것은 클라이언트의 입력/출력을 5초 동안 차단하여 콘솔을 숨기고 간섭을 방지합니다. 5초 후 입력/출력이 정상으로 복원됩니다.

    기타 MITM 인수

    전체 인수 목록은 pyrdp-mitm --help를 실행하세요.

    --no-downgrade

    이 인수는 PyRDP를 Honeypot 시나리오에서 실행할 때 스캐너 핑거프린팅을 피하는 데 유용합니다. 스위치가 활성화되면 PyRDP는 지원되지 않는 확장을 다운그레이드하지 않고 트래픽을 투명하게 통과시킵니다. 플레이어는 비디오 트래픽을 성공적으로 재생하지 못할 수 있지만, 다음 지원 채널에는 여전히 접근할 수 있어야 합니다:

    • 키 입력 기록
    • 마우스 위치 업데이트
    • 클립보드 접근(수동)
    • 드라이브 접근(수동)

    이 기능은 아직 개발 중이며 연결을 설정하기 위해 일부 다운그레이드가 현재 불가피합니다. 다음은 현재 이 스위치의 영향을 받지 않으며 계속 비활성화됩니다:

    • FIPS 암호화
    • 비TLS 암호화 프로토콜
    • ClientInfo 압축
    • 가상 채널 압축

    참고: 전체 세션을 나중에 재생할 수 있는 것이 중요하다면, Wireshark를 사용하여 원시 RDP 트래픽을 기록하고 TLS 마스터 시크릿을 보관하는 것이 좋은 해결책입니다. PyRDP가 추가 확장을 지원하게 되면, 원시 네트워크 캡처에서 유효한 RDP 리플레이 파일을 추출할 수 있게 됩니다.

    --transparent

    PyRDP에게 클라이언트의 소스 IP 주소를 스푸핑하여 서버가 MITM 주소 대신 실제 IP 주소를 보도록 지시합니다. 이 옵션은 MITM이 물리적으로 클라이언트와 서버 사이의 게이트웨이 역할을 하여 모든 트래픽을 보는 특정 시나리오에서만 유용합니다. 구체적인 예는 여기에서 확인할 수 있습니다.

    참고: 이 작업은 루트 권한이 필요하며 Linux에서만 작동하고 트래픽이 올바르게 라우팅되도록 수동 방화벽 구성이 필요합니다.

    --no-gdi: 가속 그래픽 파이프라인 비활성화

    PyRDP는 비디오를 지원하는 가장 최신 그래픽 파이프라인으로 다운그레이드합니다. 이 스위치는 MITM이 비디오 스트리밍에 Graphics Device Interface Acceleration 확장을 사용하지 않도록 명시적으로 지시합니다. 이 모드의 장점은 고해상도 연결에 필요한 대역폭이 크게 감소한다는 점입니다.

    일부 GDI 드로잉 명령은 사용되지 않는 것으로 보여 현재 구현되지 않았습니다. 지원되지 않거나 테스트되지 않은 명령이 포함된 리플레이가 있다면 프로젝트 관리자에게 공유하여 필요에 따라 지원을 추가할 수 있도록 주저하지 마십시오. (추적에 민감한 정보가 포함되지 않도록 하십시오.)

    PyRDP 플레이어 사용하기

    pyrdp-player를 사용하여 플레이어를 실행합니다.

    리플레이 파일 재생하기

    메뉴를 사용하여 새 리플레이 파일을 열 수 있습니다: 파일 > 열기.

    플레이어를 실행할 때 리플레이 파일을 열 수도 있습니다:```sh pyrdp-player ...

    root@kitploit:~
    #### 실시간 연결 수신 대기
    
    플레이어는 항상 실시간 연결을 수신 대기합니다. 기본적으로 수신 대기 포트는 3000이지만 변경할 수 있습니다:```sh
    pyrdp-player -p <PORT>
    

    수신 주소 변경하기

    기본적으로 플레이어는 로컬 머신에서 오는 연결만 수신합니다. 플레이어를 다른 머신에 공개하는 것을 권장하지 않습니다. 그래도 수신 주소를 변경하려면 -b를 사용하여 변경할 수 있습니다:```sh pyrdp-player -b

    root@kitploit:~
    #### 기타 플레이어 인수
    
    전체 인수 목록을 보려면 `pyrdp-player --help`를 실행하세요.
    
    ### PyRDP 인증서 복제기 사용하기
    
    참고: 이 도구의 사용은 선택 사항입니다.
    버전 1.0부터 PyRDP는 이 도구가 하는 것과 동일하게 즉시 인증서를 생성합니다.
    
    PyRDP 인증서 복제기는 기존 RDP 서버 인증서의 값을 사용하여 완전히 새로운 X509 인증서를 생성합니다.
    RDP 서버에 연결하여 인증서를 다운로드하고, 새로운 개인 키를 생성한 후, 새로운 개인 키를 사용하여 인증서의 공개 키와 서명을 교체합니다.
    예를 들어, 합법적인 사용자를 속여 MITM을 통과하도록 하려는 경우 침투 테스트에서 사용할 수 있습니다.
    합법적인 인증서처럼 보이는 인증서를 사용하면 성공률을 높일 수 있습니다.
    
    #### 인증서 복제
    
    `pyrdp-clonecert`를 사용하여 인증서를 복제할 수 있습니다:```sh
    pyrdp-clonecert 192.168.1.10 cert.pem -o key.pem
    

    The -o parameter defines the path name to use for the generated private key.

    Using a custom private key

    If you want to use your own private key instead of generating a new one:```sh pyrdp-clonecert 192.168.1.10 cert.pem -i input_key.pem

    root@kitploit:~
    #### 기타 클로너 인수
    
    전체 인수 목록은 `pyrdp-clonecert --help`를 실행하세요.
    
    ### PyRDP Convert 사용하기
    
    `pyrdp-convert`는 다양한 입력 형식을 다양한 출력 형식으로 변환하는 여러 유용한 변환을 수행하는 도우미 스크립트입니다.
    이 스크립트는 중단되지 않은 연결에서 사용될 수 있는 지원되지 않는 RDP 프로토콜 기능으로 인해 PyRDP가 캡처한 트래픽에서 가장 잘 작동할 가능성이 높습니다.
    
    다음 입력이 지원됩니다:
    
    - TLS 마스터 시크릿이 포함된 네트워크 캡처(PCAP) (신뢰도 낮음)
    - 내보낸 PDU 레이어 7 형식의 네트워크 캡처(PCAP) (신뢰도 높음)
    - PyRDP로 생성된 재생 파일
    
    다음 출력이 지원됩니다:
    
    - MP4 비디오 파일
    - JSON: JSON 형식으로 직렬화된 저수준 이벤트 시퀀스
    - `pyrdp-player`와 호환되는 재생 파일
    
    암호화된(TLS) 네트워크 캡처는 `--secrets ssl.log`를 사용하여 TLS 마스터 시크릿을 제공해야 합니다.```sh
    # Export the session coming client 10.2.0.198 to a .pyrdp file.
    pyrdp-convert --src 10.2.0.198 --secrets ssl.log -o path/to/output capture.pcap
    
    # Or as an MP4 video
    pyrdp-convert --src 10.2.0.198 --secrets ssl.log -o path/to/output -f mp4 capture.pcap
    
    # List the sessions in a network trace, along with the decryptable ones.
    pyrdp-convert --list-only capture.pcap
    

    MP4 변환에는 libavcodec와 ffmpeg가 필요하므로 Windows에서 추가 단계가 필요할 수 있습니다.

    수동으로 복호화된 네트워크 트레이스는 Wireshark에서 File > Export PDUs를 선택한 다음 OSI Layer 7을 선택하여 내보낼 수 있습니다.

    먼저, Wireshark가 TLS 시크릿을 로드하도록 설정했는지 확인하세요:

    Configure TLS secrets log

    다음으로, OSI Layer 7 PDU를 내보냅니다:

    Export OSI Layer 7

    그리고 선택적으로, 디스플레이 필터를 적용하고 File > Export Specified Packets...를 클릭하여 관심 있는 대화만 포함하도록 트레이스를 필터링할 수 있습니다.

    Optionally filtering the exported trace

    이제 이 트레이스를 pyrdp-convert에서 직접 사용할 수 있습니다.

    PyRDP 구성

    PyRDP 구성의 대부분은 명령줄 스위치를 통해 수행되지만, 로그 구성과 같은 특정 설정에는 구성 파일을 사용할 수도 있습니다.

    PyRDP에서 사용하는 기본 구성 파일은 mitm.default.ini와 player.default.ini에 있습니다. 두 파일 모두 자세히 문서화되어 있으며 추가 구성의 기초로 사용할 수 있습니다.

    향후 이러한 구성 파일을 통해 PyRDP 구성의 다른 측면을 지원할 계획이 있습니다.

    고급 사용법

    PyRDP를 라이브러리로 사용하기

    RDP를 실험하고 자신만의 도구를 만드는 데 관심이 있다면, 문서 섹션에서 자세한 정보를 확인하세요.

    twistd와 함께 PyRDP 사용하기

    PyRDP MITM 구성 요소는 twistd 플러그인으로도 구현되었습니다. 이를 통해 디버그 모드로 실행할 수 있으며, twistd 프로세스에 SIGUSR2를 보내면 대화형 디버깅 repl(pdb)을 사용할 수 있습니다. 자세한 내용은 twistd 문서를 참조하세요.

    Bettercap과 함께 PyRDP 사용하기

    저희는 특정 LAN의 모든 RDP 연결을 중간자 공격하기 위해 자체 Bettercap 모듈인 rdp.proxy를 개발했습니다. 자세한 내용은 이 문서를 확인하세요.

    Docker 특정 사용 지침

    Docker는 호스트 시스템(파일 시스템 및 네트워크)과의 상호 작용을 제한하므로, PyRDP Docker 이미지는 사용 사례에 따라 일부 매개변수와 함께 실행되어야 합니다. 이 섹션에서는 이러한 매개변수를 설명합니다.

    공개적으로 제공되는 Docker 이미지를 참조하지만, 직접 빌드한 경우에는 gosecure/pyrdp를 로컬로 빌드한 이미지의 이름으로 바꾸세요.

    수신 포트 매핑

    대부분의 중간자 공격 사례에서는 호스트의 포트를 Docker 이미지에 매핑해야 합니다. 이는 docker run에 적용되는 --publish (-p) 매개변수로 수행됩니다.

    예를 들어, 모든 인터페이스에서 3389(RDP 기본 포트)를 수신하려면 다음을 사용하세요:```sh docker run -p 3389:3389 gosecure/pyrdp pyrdp-mitm 192.168.1.10

    root@kitploit:~
    #### 로그 및 아티팩트 저장
    
    PyRDP 출력(로그, 파일 등)을 영구적으로 저장하려면 이전 명령어에 `--volume` (`-v`) 옵션을 추가합니다. 이 예제에서는 현재 디렉토리 기준으로 `pyrdp_output`에 파일을 저장합니다.```sh
    docker run -v $PWD/pyrdp_output:/home/pyrdp/pyrdp_output -p 3389:3389 gosecure/pyrdp pyrdp-mitm 192.168.1.10
    

    대상 디렉터리의 소유자가 UID 1000의 사용자인지 확인하십시오. 그렇지 않으면 권한 거부 오류가 발생합니다. 시스템에서 유일한 비-root 사용자라면, 일반적으로 사용자에게 UID 1000이 할당됩니다.

    호스트 IP 주소 로깅

    PyRDP가 로그에 호스트 IP 주소를 기록하도록 하려면 docker run 사용 시 HOST_IP 환경 변수를 설정할 수 있습니다:```sh docker run -p 3389:3389 -e HOST_IP=192.168.1.9 gosecure/pyrdp pyrdp-mitm 192.168.1.10

    root@kitploit:~
    #### Docker에서 GUI 플레이어 사용하기
    
    플레이어를 사용하려면 호스트에서 도커로 `DISPLAY` 환경 변수를 내보내야 합니다.
    이렇게 하면 플레이어의 GUI가 호스트 화면으로 리디렉션됩니다.
    또한 호스트의 네트워크를 노출하고 Qt가 MIT-SHM X11 공유 메모리 확장을 사용하지 못하도록 해야 합니다.
    이를 위해 실행 명령에 `-e` 및 `--net` 옵션을 추가하세요:```sh
    docker run -e DISPLAY=$DISPLAY -e QT_X11_NO_MITSHM=1 --net=host gosecure/pyrdp pyrdp-player
    

    호스트의 네트워크를 docker에 노출하면 컨테이너와 호스트 간의 격리가 손상될 수 있음을 명심하세요. 플레이어를 사용할 계획이라면 SSH 연결을 통한 X11 전달이 더 안전한 방법입니다.

    Docker에서 비디오 변환

    비디오 변환 프로세스는 PyAV, ffmpeg 및 QT에 의존하므로 일반 도커 이미지(slim 버전이 아닌)가 필요합니다.

    볼륨 마운트(-v)를 사용하여 컨테이너와 파일을 공유해야 합니다. 여기서는 로컬 디렉토리를 컨테이너의 /shared/에 매핑합니다.```sh docker run -e QT_QPA_PLATFORM=offscreen -v $PWD/:/shared gosecure/pyrdp pyrdp-convert -f mp4 <filename-relative-to-volume-in-/shared/> -o /shared/

    root@kitploit:~
    `QT_QPA_PLATFORM=offscreen` 환경 변수는 [여기에 문서화된 버그](https://github.com/GoSecure/pyrdp/issues/428)로 인해 필요합니다.
    이는 디스플레이 환경을 사용할 수 없는 경우 QT에 올바르다는 것을 알려줍니다.
    
    ## PyRDP 이야기
    
    * [소개 블로그 게시글](https://www.gosecure.net/blog/2018/12/19/rdp-man-in-the-middle-smile-youre-on-camera)에서 실제 위협 행위자를 포착할 수 있음을 [시연했습니다](https://www.youtube.com/watch?v=eB7RC9FmL6Q)
    * [NorthSec 2019 발표](https://docs.google.com/presentation/d/1avcn8Sh2b3IE7AA0G9l7Cj5F1pxqizUm98IbXUo2cvY/edit#slide=id.g404b70030f_0_581)에서 두 가지 데모가 진행되었습니다:
      * [첫 번째 데모](https://youtu.be/5JztJzi-m48): 자격 증명 로깅, 클립보드 탈취, 클라이언트 측 파일 탐색 및 세션 탈취
      * [두 번째 데모](https://youtu.be/bU67tj1RkMA): 클라이언트가 성공적으로 인증될 때 cmd 또는 powershell 페이로드 실행
    * [PyRDP 로고](https://github.com/gosecure/pyrdp/blob/main/docs/pyrdp-logo.png)는 CC-BY-SA 4.0에 따라 라이선스가 부여됩니다.
    * [BlackHat USA Arsenal 2019 슬라이드](https://docs.google.com/presentation/d/17P_l2n-hgCehQ5eTWilru4IXXHnGIRTj4ftoW4BiX5A/edit?usp=sharing)
    * [DerbyCon 2019 슬라이드](https://docs.google.com/presentation/d/1UAiN2EZwDcmBjLe_t5HXB0LzbNclU3nnigC-XM4neIU/edit?usp=sharing) ([비디오](https://www.youtube.com/watch?v=zgt3N6Nrnss))
    * [블로그: PyRDP on Autopilot](https://www.gosecure.net/blog/2020/02/26/pyrdp-on-autopilot-unattended-credential-harvesting-and-client-side-file-stealing/)
    * [블로그: PyRDP 1.0](https://www.gosecure.net/blog/2020/10/20/announcing-pyrdp-1-0/)
    * [DefCon 2020 데모 랩](https://www.youtube.com/watch?v=1q2Eo3x3u0g)
    * [블로그: RDP NetNTLMv2 해시 캡처: 공격 세부 정보 및 기술 방법 가이드](https://www.gosecure.net/blog/2022/01/17/capturing-rdp-netntlmv2-hashes-attack-details-and-a-technical-how-to-guide/)
    * [BlackHat USA Arsenal 2021 슬라이드](https://gosecure.github.io/presentations/2021-08-05_blackhat-usa/BlackHat-USA-21-Arsenal-PyRDP-OlivierBilodeau.pdf)
    * [발표: I Watched You Roll the Die: Unparalleled RDP Monitoring Reveal Attackers' Tradecraft](http://i.blackhat.com/BH-US-23/Presentations/US-23-Bilodeau-I-Watched-You-Roll-the-Die-Unparalleled-RDP-Monitoring.pdf) at BlackHat USA 2023
    
    ## PyRDP에 기여하기
    
    [기여 가이드라인](https://github.com/gosecure/pyrdp/blob/main/CONTRIBUTING.md)을 참조하세요.
    
    ## 감사의 말
    
    PyRDP는 다음 오픈소스 소프트웨어의 코드를 사용합니다:
    
    - RC4 구현을 위한 [RC4-Python](https://github.com/bozhu/RC4-Python)
    - 비트맵 압축 해제를 위한 [rdesktop](https://github.com/rdesktop/rdesktop)
    - RC4 키, 비트맵 압축 해제 바인딩 및 PyRDP 플레이어의 기본 GUI 코드를 위한 [rdpy](https://github.com/citronneur/rdpy)
    - 스캔 코드 열거를 위한 [FreeRDP](https://github.com/FreeRDP/FreeRDP)
    
    도구 다운로드