-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathDockerfile
More file actions
124 lines (114 loc) · 4.15 KB
/
Copy pathDockerfile
File metadata and controls
124 lines (114 loc) · 4.15 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile
FROM booyaabes/kali-linux-full
# 配置redsocks
RUN echo 'base {\n\
log_debug = on;\n\
log_info = on;\n\
log = "file:/var/log/redsocks.log";\n\
daemon = on;\n\
redirector = iptables;\n\
}\n\
redsocks {\n\
local_ip = 127.0.0.1;\n\
local_port = 12345;\n\
ip = 192.168.31.110;\n\
port = 2081;\n\
type = socks5;\n\
login = "";\n\
password = "";\n\
}\n' > /etc/redsocks.conf
# 创建目录和下载dns2socks
WORKDIR /root
RUN mkdir -p /home/004
WORKDIR /home/004
RUN wget https://github.com/tun2proxy/dns2socks/releases/download/v0.2.0/dns2socks-x86_64-unknown-linux-gnu.zip && \
unzip dns2socks-x86_64-unknown-linux-gnu.zip && \
chmod +x dns2socks && \
rm dns2socks-x86_64-unknown-linux-gnu.zip && \
ls -la /home/004
# 确保SSH服务器启动
RUN mkdir -p /run/sshd
# 设置root密码为kali
RUN echo 'root:kali' | chpasswd
# 允许root用户SSH登录
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 生成SSH密钥并配置免密登录
RUN mkdir -p /root/.ssh && \
chmod 700 /root/.ssh && \
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCsoJo7WJIHDQgmEdKwm6IqS61xaGWa/OVVMCrMwcVh13xvYbAD7wdMufzNhWRxSso3SKvTHbQjIszvYQgkVFjRPiJW5vGCU0847CX0zZytGLnKpKWDZ5ccShMPlIxVuy2+WUQlKNL7f+w59PMX+3BLcikhtwk0xwG7tpS4kAtXHlrwt1B1vFj3CoF8rBofGJAahOuPvruRh9i1i73i5JJHJFeDdJVfNnY5/8HnBvtWtJzbsbmlyaTODfrDCeYZ32zxDZdsPVEls3RDsfgUadyC71mpXloJ8JTiUU37H5DY+xtIuz3XICwA7DsVm9jiKaSR96DZyogYxx+UKdrDsIH4JQwBNs3RDCX+t7ivKj75KkhhrW2X2h90EOjwQPQOhuVU2FtMXbWlfbZL5UwXGgA7Efe3N0ZzrKac+RGM6vY/jsnESgZaTayF/N/BysMpjI18xy6Y12CyPXVYsvF3v04d2XR1Fs5rduERjpot7o9N+i5FcoTfUb5WP5nVU9X0b2s= hack004@DESKTOP-H4HRI73' > /root/.ssh/authorized_keys && \
chmod 600 /root/.ssh/authorized_keys
# 创建启动脚本
RUN echo '#!/bin/bash\n\
echo "正在启动透明代理..."\n\
# 确保dns2socks目录存在\n\
if [ ! -d "/home/004" ]; then\n\
echo "创建/home/004目录..."\n\
mkdir -p /home/004\n\
fi\n\
\n\
# 检查dns2socks文件是否存在\n\
if [ ! -f "/home/004/dns2socks" ]; then\n\
echo "dns2socks不存在,重新下载..."\n\
cd /home/004\n\
wget https://github.com/tun2proxy/dns2socks/releases/download/v0.2.0/dns2socks-x86_64-unknown-linux-gnu.zip\n\
unzip dns2socks-x86_64-unknown-linux-gnu.zip\n\
chmod +x dns2socks\n\
rm dns2socks-x86_64-unknown-linux-gnu.zip\n\
fi\n\
\n\
# 清除现有规则\n\
iptables -t nat -F\n\
iptables -t nat -X\n\
# 创建REDSOCKS链\n\
iptables -t nat -N REDSOCKS\n\
\n\
# 设置本地网络不使用代理\n\
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN\n\
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN\n\
\n\
# 将所有其他TCP流量重定向到redsocks\n\
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345\n\
# 将REDSOCKS链应用到OUTPUT链\n\
iptables -t nat -A OUTPUT -p tcp -j REDSOCKS\n\
\n\
# 启动redsocks并保留前台输出\n\
service redsocks restart\n\
echo "redsocks状态:"\n\
service redsocks status\n\
echo "iptables规则:"\n\
iptables -t nat -L -v\n\
\n\
# 启动SSH服务\n\
service ssh start\n\
echo "SSH服务已启动"\n\
\n\
# 列出当前目录和文件\n\
echo "检查/home/004目录:"\n\
ls -la /home/004\n\
\n\
# 启动dns2socks\n\
echo "启动dns2socks..."\n\
cd /home/004 && ./dns2socks -l 0.0.0.0:53 -d 8.8.8.8:53 -s socks5://192.168.31.110:2081 -f -c -v info > /var/log/dns2socks.log 2>&1 &\n\
echo "DNS服务已启动在0.0.0.0:53"\n\
\n\
# 配置系统DNS为127.0.0.1\n\
echo "配置系统DNS为127.0.0.1..."\n\
echo "nameserver 127.0.0.1" > /etc/resolv.conf\n\
cat /etc/resolv.conf\n\
\n\
# 测试代理连接\n\
echo "测试代理连接:"\n\
curl -v --socks5 192.168.31.110:2081 http://ifconfig.me\n\
echo "测试透明代理:"\n\
curl -v http://ifconfig.me\n\
\n\
# 保持容器运行\n\
tail -f /var/log/redsocks.log\n' > /root/start.sh && \
chmod +x /root/start.sh
# 暴露SSH端口
EXPOSE 22
# 启动服务
CMD ["/root/start.sh"]
# 注意:此容器需要以特权模式运行,否则iptables无法正常工作
# 使用以下命令启动容器:
# docker run --name kali-container -d --privileged -p 2222:22 kali-pentest-mcp