
해킹/침투 테스트를 위한 최고의 WinRM 셸
해킹/펜테스트를 위한 최고의 WinRM 셸

이 셸은 해킹/펜테스트를 위한 최고의 WinRM 셸입니다.
WinRM(Windows Remote Management)은 WS-Management 프로토콜의 Microsoft 구현입니다. 서로 다른 공급업체의 하드웨어와 운영 체제가 상호 운용될 수 있도록 하는 표준 SOAP 기반 프로토콜입니다. Microsoft는 시스템 관리자의 업무를 더 쉽게 만들기 위해 자사 운영 체제에 이를 포함했습니다.
이 프로그램은 이 기능이 활성화된(일반적으로 포트 5985) 모든 Microsoft Windows Server에서 사용할 수 있으며, 물론 이를 사용할 자격 증명과 권한이 있는 경우에만 가능합니다. 따라서 이는 사후 침투 해킹/펜테스트 단계에서 사용될 수 있다고 말할 수 있습니다. 이 프로그램의 목적은 해킹에 유용하고 사용하기 쉬운 기능을 제공하는 것입니다. 시스템 관리자가 합법적인 목적으로도 사용할 수 있지만, 대부분의 기능은 해킹/펜테스트에 초점을 맞추고 있습니다.
주로 WinRM Ruby 라이브러리를 기반으로 하며, 버전 2.0부터 작동 방식이 변경되었습니다. 이제 WinRM 프로토콜을 사용하는 대신 PSRP(Powershell Remoting Protocol)를 사용하여 런스페이스 풀을 초기화하고 파이프라인을 생성 및 처리합니다.
Usage: evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-a USERAGENT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r REALM] [-K TICKET_FILE] [--spn SPN_PREFIX] [-l] -S, --ssl Enable ssl -c, --pub-key PUBLIC_KEY_PATH Local path to public key certificate -k, --priv-key PRIVATE_KEY_PATH Local path to private key certificate -r, --realm DOMAIN Kerberos auth, it has to be set also in /etc/krb5.conf file using this format -> CONTOSO.COM = { kdc = fooserver.contoso.com } -K, --ccache TICKET_FILE Path to Kerberos ticket file (ccache or kirbi format, auto-detected) -s, --scripts PS_SCRIPTS_PATH Powershell scripts local path --spn SPN_PREFIX SPN prefix for Kerberos auth (default HTTP) -e, --executables EXES_PATH C# executables local path -i, --ip IP Remote host IP or hostname. FQDN for Kerberos auth (required) -U, --url URL Remote url endpoint (default /wsman) -u, --user USER Username (required if not using kerberos) -p, --password PASS Password -H, --hash HASH NTHash -P, --port PORT Remote host port (default 5985) -a, --user-agent Specify connection user-agent (default Microsoft WinRM Client) -V, --version Show version -n, --no-colors Disable colors -N, --no-rpath-completion Disable remote path completion -l, --log Log the WinRM session -h, --help Display this help message
## 요구 사항
Ruby 2.3 이상이 필요합니다. 일부 ruby gem도 필요합니다: `winrm >=2.3.7`, `winrm-fs >=1.3.2`, `stringio >=0.0.2`, `logger >= 1.4.3`, `fileutils >= 0.7.2`, `readline ~> 0.0.4`, `readline-ext ~> 0.2.0`.
설치 방법(4가지 가능)에 따라 이러한 항목을 수동으로 설치해야 할 수도 있습니다.
Kerberos 인증에만 사용되는 또 다른 중요한 요구 사항은 네트워크 인증에 사용되는 Kerberos 패키지를 설치하는 것입니다.
Debian 기반 Linux(Kali, Parrot 등)의 경우 `krb5-user`라고 합니다. BlackArch의 경우 `krb5`라고 하며, 다른 Linux 배포판에서는 다른 이름으로 불릴 수 있습니다.
원격 경로 자동 완성 기능은 네이티브 `readline-ext` 바인딩이 필요하며, 이는 Evil-WinRM 종속성으로 자동 설치됩니다. 일부 시스템에서는 이를 컴파일하기 위해 추가 개발 패키지가 필요합니다. 자세한 내용은 [아래 섹션](#Remote-path-completion)을 확인하세요.
## 설치 및 빠른 시작 (4가지 방법)
### 방법 1. ruby gem으로 직접 설치 (종속성은 시스템에 자동으로 설치됩니다)
- 1단계. 설치합니다 (종속성이 자동으로 설치됩니다): ```gem install evil-winrm```
- 2단계. 완료입니다. 바로 실행하세요!```
evil-winrm -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
sudo gem install winrm winrm-fs stringio logger fileutils readline readline-extgit clone https://github.com/Hackplayers/evil-winrm.git### 방법 3. bundler 사용 (시스템에 의존성을 설치하지 않고 evil-winrm만 사용)
- 1단계. bundler 설치: `gem install bundler`
- 2단계. 저장소 복제: `git clone https://github.com/Hackplayers/evil-winrm.git`
- 3단계. bundler로 의존성 설치: `cd evil-winrm && bundle install --path vendor/bundle`
- 4단계. bundler로 실행:```
bundle exec evil-winrm.rb -i 192.168.1.100 -u Administrator -p 'MySuperSecr3tPass123!' -s '/home/foo/ps1_scripts/' -e '/home/foo/exe_files/'
## 문서
### 일반 텍스트 비밀번호
비밀번호를 일반 텍스트로 입력하고 싶지 않다면, 선택적으로 `-p` 인자를 생략할 수 있으며, 그러면 비밀번호가 화면에 표시되지 않도록 프롬프트가 나타납니다.
### IPv6
IPv6을 사용하려면 주소를 /etc/hosts에 추가해야 합니다. `-i` 인자 뒤에 IP 주소 대신 이미 설정된 호스트 이름을 입력하면 됩니다.
### 기본 명령어
- **upload**: 로컬 파일은 탭 키를 사용하여 자동 완성할 수 있습니다.
- 사용법: `upload local_filename` 또는 `upload local_filename destination_filename`
- **download**:
- 사용법: `download remote_filename` 또는 `download remote_filename destination_filename`
__경로에 대한 참고 사항 (upload/download)__:
상대 경로는 download/upload에 사용할 수 없습니다. 현재 디렉터리의 파일 이름이나 절대 경로를 사용하세요.
Docker 환경에서 Evil-WinRM을 사용하는 경우, 모든 로컬 경로는 `/data`에 있어야 하며, 다운로드한 파일에 접근하거나 로컬 호스트 OS에서 파일을 업로드할 수 있도록 해당 경로를 볼륨으로 매핑했는지 확인하세요.
- **services**: 계정에 각 서비스에 대한 권한이 있는지 여부를 표시하며 모든 서비스를 나열합니다. 이 기능을 사용하는 데 관리자 권한은 필요하지 않습니다.
- **menu**: 아래에서 설명할 `Invoke-Binary`, `Dll-Loader` 및 `Donut-Loader` 함수를 로드합니다. ps1이 로드되면 해당 함수가 모두 표시됩니다.
- **clear** 또는 **cls**: 터미널 화면을 지웁니다. 화면을 지우려면 `Ctrl+L` 키보드 단축키를 사용할 수도 있습니다.
- **exit** 또는 **quit**: Evil-WinRM 세션을 종료합니다. `Ctrl+D` 키보드 단축키를 사용할 수도 있습니다.```
*Evil-WinRM* PS C:\> menu
,. ( . ) " ,. ( . ) .
(" ( ) )' ,' ( ' (" ) )' ,' . ,)
.; ) ' (( (" ) ;(, . ;) " )" .; ) ' (( (" ) );(, )((
_".,_,.__).,) (.._( ._), ) , (._..( '.._"._, . '._)_(..,_(_".) _( _')
\_ _____/__ _|__| | (( ( / \ / \__| ____\______ \ / \
| __)_\ \/ / | | ;_)_') \ \/\/ / |/ \| _/ / \ / \
| \\ /| | |__ /_____/ \ /| | | \ | \/ Y \
/_______ / \_/ |__|____/ \__/\ / |__|___| /____|_ /\____|__ /
\/ \/ \/ \/ \/
By: CyberVaca, OscarAkaElvis, Jarilaos, Arale61 @Hackplayers
[+] Dll-Loader
[+] Donut-Loader
[+] Invoke-Binary
[+] Bypass-4MSI
[+] services
[+] upload
[+] download
[+] clear
[+] cls
[+] menu
[+] exit
-s 인자에 설정된 경로에 있어야 합니다. menu를 다시 입력하면 로드된 함수들을 확인할 수 있습니다. 매우 큰 파일은 로드하는 데 오랜 시간이 걸릴 수 있습니다.```
Evil-WinRM PS C:> PowerView.ps1
Evil-WinRM PS C:> menu