Japan
サイト内の現在位置
ペネトレーションツールの紹介 ~ProxyChains~
NECセキュリティブログ2021年1月29日
NECサイバーセキュリティ戦略本部セキュリティ技術センターの長浜です。
今回は、ペネトレーションテストツールとして便利な「ProxyChains」について紹介いたします。
ProxyChainsとは
ProxyChains(https://github.com/haad/proxychains)は、AdamHamsik氏が作成したツールです。本ツールを利用することで、多段のプロキシサーバを経由して、接続したい端末と任意のプログラムの通信をすることができます。この機能を用いることで、複数のネットワークセグメントにまたがる端末の検査が可能となります。
ProxyChains単体で利用する場合、踏み台サーバにProxyサーバの機能をインストールする必要があります。そのため、検査の際の設定項目が増加してしまいます。そこで今回は、ProxyChains単体での利用方法ではなく、SSHのポートフォワーディングと組み合わせた利用方法についてご紹介いたします。
ProxyChains と SSHの組み合わせのメリット・デメリット
メリット
- ProxyChains経由で検査対象の端末とTCP通信が可能となります。
- 接続元の端末のツールをそのまま利用可能となります。
- ファイアウォールの監視下においてSSHの許可のみで複数のポートへの検査が可能となります。
デメリット
- 接続元の端末にてSSHサーバを起動する必要があります。
- スキャンのレスポンスが遅く、通常の検査より時間がかかります。
ProxyChains と SSHの組み合わせの仕組み

上図を用いて接続手順をご紹介いたします。
- ①接続元サーバにProxyChainsをインストールします。
- ②踏み台サーバから接続元サーバに対し、SSHのリモートポートフォワードを実行し、SSH Tunnelを作成します。
- ③接続元サーバにて、接続先サーバに対し実行したいコマンドの前にproxychainsを付けて実行します。
ここでは、2つの例を用いて使い方をご紹介いたします。どちらの例でも、接続元サーバのProxyChainsを実行し、接続先サーバに対して検査プログラムを実行しています。
例1 . evil winrm(https://github.com/Hackplayers/evil-winrm)
「evil winrm」は、Windows Remote Managementのサービスをリモートから実行し、任意コマンドが実行できるプログラムです。

ProxyChainsにより、複数のネットワークセグメントをまたいで接続できていることが確認できます。
例2. smbclient
「smbclient」は、Sambaに接続するためのプログラムです。

使用例
今回は以下の2つの例についてご紹介いたします。
-
Proxy先のサーバにSSH接続
-
多段のProxy先のサーバへの検査
1.踏み台サーバ先のサーバにSSH接続
今回は、VMware上に検証環境を以下の図のように用意し、ProxyChainsの動作を確認します。

① 接続元サーバにてProxyChainsのインストールおよびコンフィグの設定を行います。

② SSHでトンネルを作成します。

③ 接続元サーバから接続先サーバにSSHで接続を行います。

このように、ネットワークセグメントをまたがる端末に対し、個別にProxy設定をせずに接続することができました。
2.多段のProxy先のサーバへの検査
今回も、VMware上に検証環境を以下の図のように用意し、ProxyChainsの動作を確認します。

今回は、接続元サーバにProxyChainsを構築する方法についてご紹介いたします。
- ①「Proxy先のサーバにSSH接続」の手順を実施し、踏み台サーバ2にSSH接続します。
- ②踏み台サーバ2から踏み台サーバ1にSSHでトンネルを作成します。

- ③接続元サーバで新しいターミナルを起動し、接続元サーバのProxyChainsの設定を変更します。ここでは、「sockes5 127.0.0.1 7777」を追加します。

接続元サーバから複数のネットワークセグメントをまたがる接続先サーバへ検査を実施します。今回は、pythonのスキャンツールを用いてポートスキャンを実施します。また、今回はWeb上に公開されているソースの一部を変更して利用しています。
Python_scanner(https://www.geeksforgeeks.org/port-scanner-using-python/)

このように、複数のネットワークセグメントをまたがり、検査対象の端末に接続できることが確認できました。この際、個別にProxy設定をせずに接続することができました。
最後に
今回はペネトレーションツールとして、ProxyChainsをご紹介いたしました。本ツールを利用することで、踏み台サーバに追加の設定やツールの配置をすることなく、複数のネットワークセグメントにまたがる端末の検査が可能となります。ぜひともご利用ください。
参考資料
ProxyChains(https://github.com/haad/proxychains)
ProxyChains-ng(https://github.com/rofl0r/proxychains-ng)
evil winrm(https://github.com/Hackplayers/evil-winrm)
Python_scanner(https://www.geeksforgeeks.org/port-scanner-using-python/)
執筆者プロフィール
長浜 佑介(ながはま ゆうすけ)
セキュリティ技術センター リスクハンティングチーム
主にペネトレーションテスト、脆弱性診断などを担当しNECグループのセキュア開発・運用を推進。
2020年6月にIPA 産業サイバーセキュリティセンター中核人材育成プログラムを修了。
情報処理安全確保支援士(RISS)を保持。

執筆者の他の記事を読む
アクセスランキング
2025年3月30日~4月5日に読まれた記事のランキング