forked from Hackplayers/evil-winrm
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
112 lines (92 loc) · 2.98 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# Evil-WinRM Dockerfile
# Base image
FROM alpine:3.14 AS final
FROM alpine:3.14 AS build
# Credits & Data
LABEL \
name="Evil-WinRM" \
author="CyberVaca <[email protected]>" \
maintainer="OscarAkaElvis <[email protected]>" \
description="The ultimate WinRM shell for hacking/pentesting"
#Env vars
ENV EVILWINRM_URL="https://github.com/Hackplayers/evil-winrm.git"
# Install dependencies for building ruby with readline and openssl support
RUN apk --no-cache add cmake \
clang \
clang-dev \
make \
gcc \
g++ \
libc-dev \
linux-headers \
readline \
readline-dev \
yaml \
yaml-dev \
libffi \
libffi-dev \
zlib \
zlib-dev \
openssl-dev \
openssl \
bash
# Make the ruby path available
ENV PATH=$PATH:/opt/rubies/ruby-3.2.2/bin
# Get ruby-install for building ruby 3.2.2
RUN cd /tmp/ && \
wget -O /tmp/ruby-install-0.8.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.1.tar.gz && \
tar -xzvf ruby-install-0.8.1.tar.gz && \
cd ruby-install-0.8.1/ && make install && \
ruby-install -c ruby 3.2.2 -- --with-readline-dir=/usr/include/readline --with-openssl-dir=/usr/include/openssl --disable-install-rdoc
# Evil-WinRM install method 1 (only one method can be used, other must be commented)
# Install Evil-WinRM (DockerHub automated build process)
RUN mkdir /opt/evil-winrm
COPY . /opt/evil-winrm
# Evil-WinRM install method 2 (only one method can be used, other must be commented)
# Install Evil-WinRM (manual image build)
# Uncomment git clone line and one of the ENV vars to select branch (master->latest, dev->beta)
#ENV BRANCH="master"
#ENV BRANCH="dev"
#RUN git clone -b ${BRANCH} ${EVILWINRM_URL}
# Install Evil-WinRM ruby dependencies
RUN gem install winrm \
winrm-fs \
stringio \
logger \
fileutils
# Clean and remove useless files
RUN rm -rf /opt/evil-winrm/resources > /dev/null 2>&1 && \
rm -rf /opt/evil-winrm/.github > /dev/null 2>&1 && \
rm -rf /opt/evil-winrm/CONTRIBUTING.md > /dev/null 2>&1 && \
rm -rf /opt/evil-winrm/CODE_OF_CONDUCT.md > /dev/null 2>&1 && \
rm -rf /opt/evil-winrm/Dockerfile > /dev/null 2>&1 && \
rm -rf /opt/evil-winrm/Gemfile* > /dev/null 2>&1
# Rename script name
RUN mv /opt/evil-winrm/evil-winrm.rb /opt/evil-winrm/evil-winrm && \
chmod +x /opt/evil-winrm/evil-winrm
# Base final image
FROM final
# Install readline and other dependencies
RUN apk --no-cache add \
readline \
yaml \
libffi \
zlib \
openssl
# Make the ruby and Evil-WinRM paths available
ENV PATH=$PATH:/opt/rubies/ruby-3.2.2/bin:/opt/evil-winrm
# Copy built stuff from build image
COPY --from=build /opt /opt
# Create volume for powershell scripts
RUN mkdir /ps1_scripts
VOLUME /ps1_scripts
# Create volume for executable files
RUN mkdir /exe_files
VOLUME /exe_files
# Create volume for data (upload/download)
RUN mkdir /data
VOLUME /data
# set current working dir
WORKDIR /data
# Start command (launching Evil-WinRM)
ENTRYPOINT ["evil-winrm"]