私はsshd
自分のコンピューター(Ubuntu-12.10)で、他のPC(let pc2)がローカルポート転送を介してゲストアカウントに接続できるようにしました。
では、PCからのそのpc2のトラフィック、つまり、開いているWebサイト、ダウンロードしているデータ、およびコンピューターを通過するその他のトラフィックをどのように監視できますか?
私はsshd
自分のコンピューター(Ubuntu-12.10)で、他のPC(let pc2)がローカルポート転送を介してゲストアカウントに接続できるようにしました。
では、PCからのそのpc2のトラフィック、つまり、開いているWebサイト、ダウンロードしているデータ、およびコンピューターを通過するその他のトラフィックをどのように監視できますか?
sshがトラフィックを暗号化するため、pc2から到着するトラフィックを「見る」ことはできません。ただし、これはローカルsshdによって生成されるため、使用中のトンネルトラフィックのアウトバウンド部分を確認できます。
lsofコマンドを使用して、pc2のユーザーがsshで接続したときに何が起こるかを確認します。lsof -i TCP|grep pc2
このようなものが表示されます:-
sshd 14466 root 3u IPv4 327724762 0t0 TCP pc1:ssh->pc2:40781 (ESTABLISHED)
sshd 19170 pc2user 3u IPv4 327724762 0t0 TCP pc1:ssh->pc2:40781 (ESTABLISHED)
最初の行はsshdサービス自体を表し、2番目の行はpc2ユーザーの接続を実行しているsshdの部分を表します(特権分離はデフォルトでUbuntuで使用され、できれば他のすべてのユーザーが使用するようになります)。
このビューからは、まだ使用されていないため、ポート転送を確認できません。ただし、ここでは19170であるpc2userのsshセッションのプロセスID(PID)を使用できます。これで、もう一度使用lsof
して、そのプロセスが何をしているかを確認できます。lsof -p 19170 -a -i TCP
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 19170 pc2user 3u IPv4 327724762 0t0 TCP pc1:ssh->pc2:40785 (ESTABLISHED)
これにより、上記の2行目と同じ出力が得られるはずです。ただし、ユーザーが宣言したポート転送トンネルの使用を開始すると、このPIDからフォームが表示されます...
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 19170 pc2user 3u IPv4 327724762 0t0 TCP pc1:ssh->pc2:40785 (ESTABLISHED)
sshd 19170 pc2user 10u IPv4 327873368 0t0 TCP localhost:55678->google.com:http (ESTABLISHED)
この2番目の接続を検出するとすぐに、接続のいずれかの端を指定することで、その接続のネットワークトラフィックの収集を開始できます。ここでは、ローカルホストの端を使用します:-
tcpdump -i lo src port 55678
sshを介してトンネリングされたトラフィックがどのように表示されるかを確認したので、それをトラップするためのより自動化された方法が必要になる場合があります。iptables
所有者一致機能を使用して、特定のユーザーからのすべてのトラフィックを一致させることができます。http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCHを参照してください。
pc2userのssh接続からのすべてのアウトバウンドネットワークトラフィックはpc2userによって所有されます-iptablesを使用して、これらすべてをどこかに記録したり、許可/拒否するものを決定したり、すべてのHTTPトラフィックを特定のプロキシにプッシュするなどの何かを行うことができますあなたが設定したこと。
また、ps2userのauthorized_keysファイルを確認する必要がある場合もあります。このファイルでは、permitopen = "host:port"ステートメントを使用して、ユーザーが最初に要求できるポート転送を制御できます。man sshd
そこでお手伝いします。
Secure Socket Shellのポイントは、接続するエンティティ間のトラフィックを暗号化することです。実際には、プロトコルレベルの暗号化を実装しています。これは、その使用率の利点の1つです。
SSHについて注意すべきことは、SSH自体がどのように機能するかです。
データを保護することが主な目的ですが、SSHを介して接続を相互に関連付ける最も簡単な方法は、一連のチューブのようなものです。これらのチューブには、開始、終了が含まれています。
このトンネルを作成するときは、アドレスとポートを指定します。これにより、ハンドシェイクが適切に行われると応答します。
ファイアウォールの背後にマシンがある場合は、接続の「リモート」側の「エントリ」ポイントを公開することにより、マシンが物理的に外部に接続する必要があります。
明らかに、このポートが公開されることの利点は、データを露骨に公開するプレーンな古いテキストを通じてより多くのアイテムが表示されるようになることです。
現在、このような情報を監視するためのさまざまなツールがあります。
プロキシサーバー:このすばらしい方法論は、ネットワークに到達するすべてのトラフィックを処理するように設計されています。フィルタリングし、監視し、それを渡します。したがって、ある意味で、すべての着信および発信トラフィック要求を監視できるようになります。
接続自体は安全である可能性があり、送信が隠されますが、プロキシは引き続き宛先または着信要求を公開します。
ネットワークおよびプロトコルアナライザー:これらはネットワークトラフィックを監視するように構成されているため、次の3つの目的に対応する各ポートおよびプロトコルを対象とします。
目標は、マシンから送信されるすべてのネットワークパケットを監視することです。そのため、そのパケットが入力されると、OSIモデルを下に移動します。これらのアナライザーの利点は、必要なすべての情報をIPから別のIPに公開することです。これらのビットが部分的に公開されています。
ペネトレーションテストの一般的な戦術は、ルーターテーブルを汚染することです。ルーターテーブルが公開されると、これらのパケットを傍受して、さまざまな情報を再注入することが非常に簡単になります。
ネットワークおよびプロトコルアナライザーは次のとおりです。
プロキシ:
セキュリティユーティリティ:
これを行うには多くの情報があります。私はSatishよりも親切なアプローチを取りましたが、さまざまなバリエーションの攻撃を使用して情報を取得することもできます。あなたが試したいと思うかもしれないもう一つのことは侵入テストです。それらのユーティリティのいくつかはまたあなたの要求に対応します。
うまくいけば、それは少なくともあなたを正しい方向に向けるのに役立ちます。
短い答えはできません。sshの要点は、安全な(暗号化された)接続を確立することです。唯一の方法は、pc1のrootアカウントを介してゲストアカウントを監視することです。これは、たとえばインターネット接続にプロキシを使用するようにゲストを構成し、プロキシのログにアクセスできるようにすることで実現できます。
しかし、これらのようなことを行うためのより簡単な方法があります。
あなたが本当にそれをする気があるなら、それをする唯一の方法はMan-In-The-Middle
(MITM)攻撃です。sshセッションは暗号化されていますが、スニファを使用してトラフィックを確認することはできないため、トラフィックをattacker machine
簡単にスニッフィングできるように、どういうわけかコンピュータとPC2の間に配置する必要があります。MITM攻撃の実装に役立つツールがいくつかあります。