
Java RMI 취약점 스캐너
remote-method-guesser (rmg)는 Java RMI 취약점 스캐너로, Java RMI 엔드포인트에서 일반적인 보안 취약점을 식별하고 확인하는 데 사용할 수 있습니다.

remote-method-guesser는 Black Hat USA2021의 Arsenal 세션에서 발표되었습니다. 해당 세션의 녹화 영상과 관련 슬라이드는 공개되어 있으며, 아래 링크에서 확인할 수 있습니다.
remote-method-guesser 저장소에는 Java RMI 열거 및 공격을 연습할 수 있는 세 가지 예시 서버가 포함되어 있습니다.
rmg-example-server는 remote-method-guesser를 사용하여 열거 및 공격할 수 있는 일반적인 RMI 서비스를 노출합니다.
rmg-ssrf-server는 SSRF 공격에 취약한 HTTP 서비스를 노출하며, localhost에서만 수신 대기하는 RMI 서비스를 실행합니다. 이는 remote-method-guesser의 --ssrf 및 --ssrf-response 옵션을 연습하는 데 사용할 수 있습니다.
spring-remoting-server는 Spring Remoting을 통해 생성된 RMI 인터페이스를 노출합니다. 이는 일반적인 Java RMI와 약간 다르며, remote-method-guesser의 관련 Spring Remoting 통합을 테스트하는 데 사용할 수 있습니다.
모든 서버는 GitHub Container Registry 내에서 컨테이너로 제공됩니다.
rmg는 maven 프로젝트이며 설치 과정은 간단합니다. maven이 설치된 상태에서 다음 명령어를 실행하면 실행 가능한 .jar 파일을 생성할 수 있습니다.```console
$ git clone https://github.com/qtc-de/remote-method-guesser
$ cd remote-method-guesser
$ mvn package
각 [릴리스](https://github.com/qtc-de/remote-method-guesser/releases)에 대해 미리 빌드된 패키지를 사용할 수도 있습니다.
개발 브랜치에 대한 미리 빌드된 패키지는 자동으로 생성되며 *GitHub* [actions 페이지](https://github.com/qtc-de/remote-method-guesser/actions)에서 찾을 수 있습니다.
*rmg*는 *ysoserial*을 종속성으로 포함하지 않습니다. *ysoserial* 지원을 활성화하려면 ``ysoserial.jar`` 파일의 경로를 추가 인수(예: ``--yso /opt/ysoserial.jar``)로 지정하거나 프로젝트를 빌드하기 전에 [rmg 설정 파일](https://github.com/qtc-de/remote-method-guesser/blob/master/src/config.properties) 내의 기본 경로를 변경해야 합니다.
*rmg*는 *bash*에 대한 자동 완성도 지원합니다. 자동 완성을 사용하려면 [completion-helpers](https://github.com/qtc-de/completion-helpers) 프로젝트가 설치되어 있어야 합니다. 올바르게 설정된 경우 [완성 스크립트](https://github.com/qtc-de/remote-method-guesser/blob/master/resources/bash_completion.d/rmg)를 ``~/.bash_completion.d`` 폴더에 복사하기만 하면 자동 완성이 활성화됩니다.```console
$ cp resources/bash_completion.d/rmg ~/bash_completion.d/
다음에서는 각 사용 가능한 작업에 대한 간단한 예제가 제공됩니다. 보다 자세한 설명을 원하시면, rmg 및 Java RMI에 대한 더 상세한 정보를 포함하는 문서 폴더를 읽어보는 것이 좋습니다. 제시된 모든 예제는 rmg-example-server와 rmg-ssrf-server를 기반으로 합니다. 두 서버 모두 이 저장소의 docker 폴더에 포함되어 있으며, Java RMI 열거를 연습하는 데 사용할 수 있습니다. 해당 컨테이너를 직접 빌드하거나 GitHub Container Registry에서 직접 로드할 수 있습니다.```console [qtc@devbox ~]$ rmg -h usage: remote-method-guesser [-h] action ...
rmg v4.0.0 - a Java RMI Vulnerability Scanner
positional arguments:
action
bind Binds an object to the registry thats points to listener
call Regulary calls a method with the specified arguments
codebase Perform remote class loading attacks
enum Enumerate common vulnerabilities on Java RMI endpoints
guess Guess methods on bound names
known Display details of known remote objects
listen Open ysoserials JRMP listener
objid Print information contained within an ObjID
rebind Rebinds boundname as object that points to listener
roguejmx Creates a rogue JMX listener (collect credentials)
scan Perform an RMI service scan on common RMI ports
serial Perform deserialization attacks against default RMI components
unbind Removes the specified bound name from the registry
named arguments: -h, --help show this help message and exit
#### bind, rebind and unbind