生成一个 .onion 域名并上线洋葱网络(Dark Web)

在渗透测试中,Tor(The Onion Router)是一个非常有用的工具,它可以帮助自己隐藏真实 IP 地址和位置,避免被发现或追踪。比如可以将 Nmap 的流量路由通过 Tor 网络,实现隐藏扫描的来源 IP 地址,Hydra 结合 Tor 使用可以实现匿名的密码爆破攻击,等等。

最近突发好奇心想知道如何获取 .onion 域名并把网站部署在 Tor 网络(暗网)中,于是去看了下相关文档,下面是总结的过程。

1. 安装 Tor

注意这里不是安装 Tor 浏览器。

  1. 添加软件源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Ubuntu 20.04
sudo sh -c 'cat >> /etc/apt/sources.list.d/tor.list << EOF
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org focal main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org focal main
EOF'

# Ubuntu 22.04
sudo sh -c 'cat >> /etc/apt/sources.list.d/tor.list << EOF
deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org jammy main
deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg, arch=amd64] https://deb.torproject.org/torproject.org jammy main
EOF'

# 添加 gpg 密钥
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

红帽系的 Linux 发行版添加 Tor 软件源的方式请参看官方说明:https://support.torproject.org/rpm/

  1. 安装 Tor
1
2
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring

2. 配置 Tor

1
2
3
4
5
6
7
sudo sh -c 'cat >> /etc/tor/torrc << EOF
HiddenServiceDir /var/lib/tor/my_website/ # 指定 Tor 服务的目录位置
HiddenServicePort 80 127.0.0.1:8080 # 指定 Web 服务器端口
EOF'

sudo systemctl restart tor # 重启 Tor 服务
sudo systemctl status tor # 查看 Tor 服务状态

注意
HiddenServicePort 80 127.0.0.1:8080 中的 80 端口是 Tor 服务在 Tor 网络中对外暴露的虚拟端口,而不是本地机器的物理端口,因此无需放行此端口也无需担心端口冲突。同时,Tor 服务也不需要配置 SSL 证书,因为 Tor 网络本身就提供了端到端的加密和匿名性。

当有人访问 Tor 服务时,Tor 会将这个请求从 Tor 网络中的 80 端口转发到本地机器的 8080 端口,因此还需要另外配置 Web 服务器使其监听在 8080 端口来处理 Tor 服务转发过来的请求。

3. 配置 Nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#  添加 server 块
sudo sh -c 'cat >> /etc/nginx/conf.d/tor.conf << EOF
server {
listen 127.0.0.1:8080;
server_name 127.0.0.1;

location / {
root /var/www/tor;
index index.html index.htm;
}
}
EOF'

# 创建站点目录及主页文件
mkdir /var/www/tor/
echo hello world > /var/www/tor/index.html

# 重启 Nginx
nginx -t
nginx -s reload

4. 测试

服务准备就绪后,需要访问下 Tor 站点来查看服务是否生效。
在此之前还需要查看下 Tor 自动生成的随机 .onion 域名:

1
2
root@ubuntu:~# cat /var/lib/tor/my_website/hostname 
rhpuou7uoy2mcul22ttu5b4jgfwb4djq6b7t4th4jdzb4dzxovsl4gid.onion

将域名复制,用 Tor 浏览器打开:

image.png

成功访问。接下来可以换掉 Tor 自动生成的随机 .onion 域名,自行生成一个带有标识的 .onion 域名。

5. 生成 .onion 域名

在生成 .onion 域名之前,需要知道一些基本概念:生成特定的 .onion 需要消耗大量的计算资源和时间,原因在于生成的过程是在尝试所有可能的公钥,直到找到一个可以生成自己想要的 .onion 域名的公钥,类似于暴力破解,因此自定义的词根越长,耗时就越久。如果只需要一个能够在 Tor 网络上提供服务的 .onion 域名,那么直接用 Tor 自动生成的 .onion 域名就已经足够了;Tor 域名有 V2 和 V3 两个版本,前者包含 16 个字符,由于安全性问题已被历史淘汰,后者包含 56 个字符,提供了更好的安全性和隐私性。下面演示使用 mkp224o 来生成 V3 版本的 .onion 域名。

1
2
3
4
5
6
7
8
9
git clone git@github.com:cathugger/mkp224o.git  # 克隆仓库
cd mkp224o
sudo apt update && sudo apt install gcc libc6-dev libsodium-dev make autoconf -y # 安装依赖
./autogen.sh # 生成配置脚本
./configure # 生成 Makefile
make # 开始构建

# 生成域名(指定前4个字符为 mkbk)
./mkp224o -n 1 -d /var/lib/tor/ mkbk # -n 和 -d 选项分别指定生成数量和生成路径

image-1.png

可以看到生成的域名为 mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion
接下来需要修改 Tor 配置文件,使新域名生效:

1
2
sed -i 's#/var/lib/tor/my_website/#/var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion/#' /etc/tor/torrc
chown -R debian-tor:debian-tor /var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion/

上面的命令会把 HiddenServiceDir 原来的 /var/lib/tor/my_website/ 目录改成新的 /var/lib/tor/mkbk34zveor7yb3yhddlfq4wxju5kw74yggiypnpnuh3pdodlugrjnyd.onion 目录,同时修改目录所有者为 debian-tor。
接下来再重启 Tor 服务,即可使用新域名访问洋葱站点了:

1
2
sudo systemctl restart tor  # 重启 Tor 服务
sudo systemctl status tor # 查看 Tor 服务状态

image-2.png

还有一个常见的误区,.onion 站点并不是只有 Tor 浏览器才能访问,Tor 浏览器只是捆绑了 FireFox 浏览器以及一些高隐私性的配置,核心还是 Tor,因此只要通过 Tor 核心的 9150 端口的 Socks5 代理接入 Tor 网络,任何浏览器都能访问(暗网)。比如 Chrome 浏览器可以通过 SwitchyOmega 扩展修改代理为 127.0.0.1:9150 来访问 .onion 站点:

image-4.png

image-3.png

6. 添加洋葱头

给HTTP首部添加洋葱头,使Tor浏览器优先访问.onion域名:https://community.torproject.org/onion-services/advanced/onion-location/

alt text

alt text

6. 参考

How to install Tor,Tor Project

Set up Your Onion Service,Tor Project

mkp224o - vanity address generator for ed25519 onion services,cathugger