中学生がTorのHidden Serviceを構築してみた
最終更新 2022/12/31 12:50
こんにちは。ActiveTK.と申します。
軽く自己紹介させて頂きますと、私は趣味でサイバーセキュリティやダークウェブなどの研究をしており、同時にWeb開発も行っております。
本記事では、「中学生がTorのHidden Serviceを構築してみた」というタイトルで、TorのHidden Serviceを構築する方法について解説させて頂きます。
執筆対象者
・ダークウェブ上でウェブサイトを運営してみたい方
・Onionサービスのサーバー側に興味がある方
注意事項
自己責任、CP禁止
システム構成
CPU 2コア・メモリー 2GB・トラフィック無制限のVPSを契約しました。
もちろんKYC有りのサーバーを契約してしまうと、あえてHSを運営する意味が無くなってしまいますので、スウェーデンの防弾VPSサービスをBitcoinで契約しました。
[root@localhost ~]# cat /etc/os-releaseNAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
下準備
とりあえず普段通りApacheとPHPを入れます。
Nginxやnodejs等各自でお好きなものをお使い下さい。
コマンドラインで以下のコマンドを実行します。
# root権限よこせ sudo su # レポジトリ変更 yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # パッケージ管理を最新バージョンへ yum upgrade yum update # Apacheを入れる yum -y install httpd # 起動時に自動でApacheが起動するように設定 systemctl enable httpd.service # 古いバージョンのPHPが入っていると厄介なので抹殺 yum -y remove php* # PHP7と関連ライブラリを入れる yum -y install --enablerepo=remi,remi-php74 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql # ポート80(http)を開放 firewall-cmd --add-service=http --zone=public --permanent firewall-cmd --reload # Apache起動 systemctl start httpd.service # テスト用PHPファイル echo "<?php phpinfo(); " > /var/www/html/index.php
HS構築
Hidden Serviceの構築方法は至って簡単です。
お馴染みの「torrc」ファイルを2行変更するだけ。
以下のコマンドからTorをインストールして下さい。
yum -y install tor
次に、torrcを編集します。
torrcの標準パスは「/etc/tor/torrc」です。
今回はnanoで編集しますが、viでも十分代用できます。
nano /etc/tor/torrc
This section is just for location-hidden services という項目を編集します。
以下のように、この2行の先頭の「#」(コメントアウト)を削除して下さい。
HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80
Torを起動します。
systemctl start tor
数秒後、自動でOnionの秘密鍵と公開鍵が生成されるので取りに行きます。
cd /var/lib/tor/hidden_service/ # 生成されたOnionドメインを表示 cat hostname # 適当に秘密鍵のバックアップを取っておく事をオススメします # バックアップ処理は省略
生成されたドメインが表示されたかと思います。
表示されたドメインへTor経由でアクセスしてみましょう。
このように、PHPinfoの結果が出力されていれば成功です。
任意の文字を含むOnionドメイン
これは完全にロマンの世界ですね。
Onionドメインは、ランダムに生成した秘密鍵のハッシュ値の先頭一部を切り取ったものですので、無数の秘密鍵を生成することにより「Onionドメインの総当たり」を行う事が可能です。
とりあえずライブラリに頼って総当たりしてみます。
著名なライブラリはいくつか存在していますが、Onion v2のアドレスしか総当たりできないものが多い印象です。
今回は、少々マイナーな総当たりスクリプト「mkp224o」に頼ります。
とりあえずビルドします。
git clone https://github.com/cathugger/mkp224ocd mkp224o ./autogen.sh yum -y install libsodium-dev ./configure make
そして実行。
今回は「hoge」から始まるOnionドメインを生成してみます。
./mkp224o hoge
文字の桁数に応じて指数関数のように所要時間が増加します。
VPSのスペックが低いのであれば、自分のPCで行われる事を推奨します。
VPSのCPUが100%に張り付くと管理者に怒られる可能性がありますし、下手に暴走するとsshすら繋がらなくなります。
hogeは4文字とかなり短いので、一瞬で大量に表示されるかと思います。
良いと思ったドメインがあれば、Ctrl+Cして下さい。
生成されたドメインの秘密鍵と公開鍵は「mkp224o」のディレクトリ直下にフォルダーとして配置されます。
このフォルダーを /var/lib/tor/hidden_service/ にリネームしてTorを再起動すれば数秒で反映されます。
最後に
好きな名言を一つご紹介します。
On the Internet, no-one knows you're a dog. - The New Yorker 誌
これは、直訳すると 「インターネットでは、あなたが犬だとしても誰も知りえない。」 という意味となります。
インターネット上に年齢という概念は通用しません。
ごく普通のどこにでもいる中学生がダークウェブ上のアングラサービスを運営している時代です。
・・なんて最後は少し中学生らしく厨二病チックに締めさせて頂きました笑
最後までご覧頂き、誠にありがとうございました。 ご興味があれば他の記事もご覧ください。