サイト内の現在位置

ペネトレーションツールの紹介 ~ProxyChains~

NECセキュリティブログ

2021年1月29日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの長浜です。
今回は、ペネトレーションテストツールとして便利な「ProxyChains」について紹介いたします。

ProxyChainsとは

ProxyChains(new windowhttps://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(new windowhttps://github.com/Hackplayers/evil-winrm)
「evil winrm」は、Windows Remote Managementのサービスをリモートから実行し、任意コマンドが実行できるプログラムです。

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

使用例

今回は以下の2つの例についてご紹介いたします。

  1. Proxy先のサーバにSSH接続
  2. 多段の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(new windowhttps://www.geeksforgeeks.org/port-scanner-using-python/)

このように、複数のネットワークセグメントをまたがり、検査対象の端末に接続できることが確認できました。この際、個別にProxy設定をせずに接続することができました。

最後に

今回はペネトレーションツールとして、ProxyChainsをご紹介いたしました。本ツールを利用することで、踏み台サーバに追加の設定やツールの配置をすることなく、複数のネットワークセグメントにまたがる端末の検査が可能となります。ぜひともご利用ください。

参考資料

執筆者プロフィール

長浜 佑介(ながはま ゆうすけ)
セキュリティ技術センター リスクハンティングチーム

主にペネトレーションテスト、脆弱性診断などを担当しNECグループのセキュア開発・運用を推進。
2020年6月にIPA 産業サイバーセキュリティセンター中核人材育成プログラムを修了。
情報処理安全確保支援士(RISS)を保持。