2014 年における BGP ハイジャックの検出ギョーム・バラドン - Guillaume Valadonニコラス・ヴィヴェ- Nicolas Vivet
Agence nationale de la sécurité des systèmes d’informationhttp://www.ssi.gouv.fr/enPacSec - November 12th, 2014
ANSSI - 2014 年における BGP ハイジャックの検出 1/53
暗号通貨取得のための BGP ハイジャッキング2014/8/7 Dell SecureWorks のレポートより
« 2014 年の 2 月から 5 月で、一人のハイジャック犯によって暗号通貨がマイナーから自分のプールにリダイレクトされた。その金額はおよそ 83,000$ にのぼる »
攻撃要件
• マイナーとプールの間に認証が無い• BGP のプレフィックスハイジャックを利用したトラフィックのリダイレクト
ANSSI - 2014 年における BGP ハイジャックの検出 2/53
BGP 101
BGP とは (Border Gateway Protocol) ?すべてのインターネット事業者によって使用されるルーティングプロトコル
いくつかの BGP の特徴• 179/TCP を使用• オペレータが IP プレフィックスを担当していることを通知
• オペレータが嘘をついている場合はそれを保証できない
• インターネット事業者を相互接続
ANSSI - 2014 年における BGP ハイジャックの検出 4/53
BGP とは (Border Gateway Protocol) ?すべてのインターネット事業者によって使用されるルーティングプロトコル
いくつかの BGP の特徴• 179/TCP を使用• オペレータが IP プレフィックスを担当していることを通知
• オペレータが嘘をついている場合はそれを保証できない
• インターネット事業者を相互接続
ANSSI - 2014 年における BGP ハイジャックの検出 4/53
BGP とは (Border Gateway Protocol) ?すべてのインターネット事業者によって使用されるルーティングプロトコル
いくつかの BGP の特徴• 179/TCP を使用• オペレータが IP プレフィックスを担当していることを通知
• オペレータが嘘をついている場合はそれを保証できない
• インターネット事業者を相互接続
ANSSI - 2014 年における BGP ハイジャックの検出 4/53
BGP とは (Border Gateway Protocol) ?すべてのインターネット事業者によって使用されるルーティングプロトコル
いくつかの BGP の特徴• 179/TCP を使用• オペレータが IP プレフィックスを担当していることを通知
• オペレータが嘘をついている場合はそれを保証できない
• インターネット事業者を相互接続
ANSSI - 2014 年における BGP ハイジャックの検出 4/53
オペレータは数字!
オペレータと BGP:• 自律システム• 固有の番号をもっている
3215 47256939
ANSSI - 2014 年における BGP ハイジャックの検出 5/53
オペレータは数字!
オペレータと BGP:• 自律システム• 固有の番号をもっている
3215 47256939
ANSSI - 2014 年における BGP ハイジャックの検出 5/53
BGP を使用するのに何が必要?
• ネットワーク
• AS 番号• IP プレフィックス• BGP ルーター• BGP の相互接続
AS transit
ISP providing BGP
Internet
AS42
AS42
2.0.0.0/16
ANSSI - 2014 年における BGP ハイジャックの検出 6/53
BGP を使用するのに何が必要?
• ネットワーク• AS 番号• IP プレフィックス
• BGP ルーター• BGP の相互接続
AS transit
ISP providing BGP
Internet
AS42AS42
2.0.0.0/16
ANSSI - 2014 年における BGP ハイジャックの検出 6/53
BGP を使用するのに何が必要?
• ネットワーク• AS 番号• IP プレフィックス• BGP ルーター
• BGP の相互接続
AS transit
ISP providing BGP
Internet
AS42AS42
2.0.0.0/16
ANSSI - 2014 年における BGP ハイジャックの検出 6/53
BGP を使用するのに何が必要?
• ネットワーク• AS 番号• IP プレフィックス• BGP ルーター• BGP の相互接続
AS transit
ISP providing BGP
InternetAS42AS42
2.0.0.0/16
ANSSI - 2014 年における BGP ハイジャックの検出 6/53
インターネットのリソース割り当て
AS とプレフィックスは各地域のインターネットレジストリで割り当てられる:
ヨーロッパ
アジア
アフリカ
北アメリカ
ラテンアメリカ & カリブ海
ヨーロッパでは ASN のコストは年間 50 ユーロか /22 50 ユーロ
ANSSI - 2014 年における BGP ハイジャックの検出 7/53
インターネットリソース割り当ての確認WHOIS プロトコル
$ whois AS4713
aut-num: AS4713as-name: OCNdescr: NTT Communications Corporation[..]country: JPadmin-c: AY1361JPtech-c: TT10660JPtech-c: TT15086JPchanged: [email protected] 19960911changed: [email protected] 20091113source: JPNIC
ANSSI - 2014 年における BGP ハイジャックの検出 8/53
インターネットリソース割り当ての確認WHOIS プロトコル
$ whois AS4713
aut-num: AS4713as-name: OCNdescr: NTT Communications Corporation[..]country: JPadmin-c: AY1361JPtech-c: TT10660JPtech-c: TT15086JPchanged: [email protected] 19960911changed: [email protected] 20091113source: JPNIC
ANSSI - 2014 年における BGP ハイジャックの検出 8/53
AS 通知 & プレフィックスの削除
BGP では、オペレータが使う:
• UPDATE メッセージで IP プレイフィックスを通知• WITHDRAW メッセージで IP プレフィックスを削除
InternetAS43515 AS4713
AS3215
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16208.117.252.0/22
208.117.252.0/22
ANSSI - 2014 年における BGP ハイジャックの検出 10/53
AS 通知 & プレフィックスの削除
BGP では、オペレータが使う:• UPDATE メッセージで IP プレイフィックスを通知
• WITHDRAW メッセージで IP プレフィックスを削除
InternetAS43515 AS4713
AS3215
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16
208.117.252.0/22
208.117.252.0/22
ANSSI - 2014 年における BGP ハイジャックの検出 10/53
AS 通知 & プレフィックスの削除
BGP では、オペレータが使う:• UPDATE メッセージで IP プレイフィックスを通知• WITHDRAW メッセージで IP プレフィックスを削除
InternetAS43515 AS4713
AS3215
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16
208.117.252.0/22 61.28.192.0/24
2.0.0.0/16208.117.252.0/22
208.117.252.0/22
ANSSI - 2014 年における BGP ハイジャックの検出 10/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2 AS3 Internet
192.0.2.0/24 192.0.2.0/24
192.0.2.0/24 AS1BGP
192.0.2.0/24 AS1 AS2BGP
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2 AS3 Internet
192.0.2.0/24
192.0.2.0/24
192.0.2.0/24 AS1BGP
192.0.2.0/24 AS1 AS2BGP
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2 AS3 Internet
192.0.2.0/24 192.0.2.0/24
192.0.2.0/24 AS1BGP
192.0.2.0/24 AS1 AS2BGP
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4 Internet
192.0.2.0/24 AS1192.0.2.0/24 AS1 AS3
BGP
192.0.2.0/24 AS1192.0.2.0/24 AS1 AS3
BGP192.0.2.0/24 AS1 AS2
BGP
192.0.2.0/24
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4 Internet
192.0.2.0/24 AS1192.0.2.0/24 AS1 AS3
BGP192.0.2.0/24 AS1192.0.2.0/24 AS1 AS3
BGP192.0.2.0/24 AS1 AS2
BGP
192.0.2.0/24
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4
Internet
192.0.0.0/16
192.0.2.0/24
192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP
192.0.2.42
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4
Internet
192.0.0.0/16
192.0.2.0/24
192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP
192.0.2.42
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4
Internet
192.0.0.0/16
192.0.2.0/24
192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP
192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP
192.0.2.42
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
3 つのシンプルな BGP ルール
1. メッセージは、ASN を追加した後に、ネイバー(Neighbor)に転送される
2. 最短のパスのみが転送される3. パケットは最も特徴的なプレフィックスに送信される
AS1 AS2
AS3
AS4
Internet
192.0.0.0/16
192.0.2.0/24
192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP192.0.0.0/16 AS4 AS1192.0.2.0/24 AS3 AS1
BGP
192.0.2.42
ANSSI - 2014 年における BGP ハイジャックの検出 11/53
ハイジャック 101
プレフィックスのハイジャックとは?アクション上の BGP のルール #2
ハイジャック: BGP アナウンスの競合
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/23 AS1 AS0
192.0.2.0/23 AS3
BGP
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
BGP
トラフィックは AS3 にリダイレクト (転送) される!
ANSSI - 2014 年における BGP ハイジャックの検出 13/53
プレフィックスのハイジャックとは?アクション上の BGP のルール #2
ハイジャック: BGP アナウンスの競合
AS0 AS1 AS2
AS3
192.0.2.0/23192.0.2.0/23192.0.2.0/23 AS1 AS0
192.0.2.0/23 AS3
BGP
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
BGP
トラフィックは AS3 にリダイレクト (転送) される!
ANSSI - 2014 年における BGP ハイジャックの検出 13/53
プレフィックスのハイジャックとは?アクション上の BGP のルール #2
ハイジャック: BGP アナウンスの競合
AS0 AS1 AS2
AS3
192.0.2.0/23192.0.2.0/23192.0.2.0/23 AS1 AS0
192.0.2.0/23 AS3
BGP192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
BGP
トラフィックは AS3 にリダイレクト (転送) される!
ANSSI - 2014 年における BGP ハイジャックの検出 13/53
積極的な対策BGP ルール #3 の利用!
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/24192.0.3.0/24
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
BGP
オリジンの AS は特徴的なプレフィックスを通知する
トラフィックは AS0 に送られる!
ANSSI - 2014 年における BGP ハイジャックの検出 14/53
積極的な対策BGP ルール #3 の利用!
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/24192.0.3.0/24
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
BGP
オリジンの AS は特徴的なプレフィックスを通知する
トラフィックは AS0 に送られる!
ANSSI - 2014 年における BGP ハイジャックの検出 14/53
積極的な対策BGP ルール #3 の利用!
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/24192.0.3.0/24
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
192.0.2.0/24 AS1 AS0
192.0.3.0/24 AS1 AS0
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
BGP
オリジンの AS は特徴的なプレフィックスを通知する
トラフィックは AS0 に送られる!
ANSSI - 2014 年における BGP ハイジャックの検出 14/53
積極的な対策BGP ルール #3 の利用!
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/24192.0.3.0/24
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3
192.0.2.0/24 AS1 AS0
192.0.3.0/24 AS1 AS0
192.0.2.0/23 AS1 AS0192.0.2.0/23 AS3192.0.2.0/24 AS1 AS0192.0.3.0/24 AS1 AS0
BGP
オリジンの AS は特徴的なプレフィックスを通知する
トラフィックは AS0 に送られる!
ANSSI - 2014 年における BGP ハイジャックの検出 14/53
10/16 におこった最近の事例フランスの AS に対してのハイジャック
x
ANSSI - 2014 年における BGP ハイジャックの検出 15/53
10/16 におこった最近の事例フランスの AS に対してのハイジャック
ANSSI - 2014 年における BGP ハイジャックの検出 15/53
消極的な対策相互接続上の厳格なフィルタ
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23
192.0.2.0/23 64501 64500BGP
• BGP ルータは「UPDATE」メッセージ中のプレフィックスをフィルタリングする
• 便利なフィルタは上位のプロバイダーのみ使用できる
ANSSI - 2014 年における BGP ハイジャックの検出 16/53
消極的な対策相互接続上の厳格なフィルタ
AS0 AS1 AS2
AS3
192.0.2.0/23
192.0.2.0/23192.0.2.0/23 64501 64500BGP
• BGP ルータは「UPDATE」メッセージ中のプレフィックスをフィルタリングする
• 便利なフィルタは上位のプロバイダーのみ使用できる
ANSSI - 2014 年における BGP ハイジャックの検出 16/53
消極的な対策フィルタのメンテナンスの自動化
ルートオブジェクト:• IP プレフィックスを担当している AS によって宣言されている
• 誰が BGP のプレフィックスを通知するか問い合わせる• オペレータ, DDoS を緩和させるプロバイダ, クライアント,
…
$ whois -T route 185.50.64.0/22
route: 185.50.64.0/22descr: Observatory IPv4 prefix.origin: AS202214mnt-by: ASOBS-MNTsource: RIPE # Filtered
ANSSI - 2014 年における BGP ハイジャックの検出 17/53
オフラインのハイジャック検知
BGP messages
ANSSI - 2014 年における BGP ハイジャックの検出 19/53
BGP アーカイブの収集https://www.ris.ripe.net
AS1 AS2 AS3
AS4
AS5
AS6 AS666
192.168.0.0/16 192.168.0.0/24
BGP collector
Routing Information Service (RIS)• 13 の BGP 世界中のコレクター
• 263 の BGP ピア• BGP メッセージをバイナリファイルにダンプ
• 年間 550 GBANSSI - 2014 年における BGP ハイジャックの検出 20/53
BGP アーカイブの解析https://github.com/ANSSI-FR/parsifal
Raw BGP BGP parser
専用の BGP パーサーが必要• 速く & 信頼できるパーサ
• OCaml で記述されている• BGP メッセージを JSON に変換
• 人間が読み書きできるフォーマット
ANSSI - 2014 年における BGP ハイジャックの検出 21/53
BGP アーカイブの解析https://github.com/ANSSI-FR/parsifal
{ "timestamp":1409750436, "collector": "rrc07","as_path":"25152 6939 17922 7862 4761 9957 7500 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
{ "timestamp":1409782437, "collector": "rrc07","as_path":"25152 6939 667 666 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
専用の BGP パーサーが必要• 速く & 信頼できるパーサ
• OCaml で記述されている• BGP メッセージを JSON に変換
• 人間が読み書きできるフォーマット
ANSSI - 2014 年における BGP ハイジャックの検出 21/53
BGP アーカイブの解析https://github.com/ANSSI-FR/parsifal
{ "timestamp":1409750436, "collector": "rrc07","as_path":"25152 6939 17922 7862 4761 9957 7500 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
{ "timestamp":1409782437, "collector": "rrc07","as_path":"25152 6939 667 666 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
専用の BGP パーサーが必要• 速く & 信頼できるパーサ
• OCaml で記述されている• BGP メッセージを JSON に変換
• 人間が読み書きできるフォーマット
ANSSI - 2014 年における BGP ハイジャックの検出 21/53
BGP アーカイブの解析https://github.com/ANSSI-FR/parsifal
{ "timestamp":1409750436, "collector": "rrc07","as_path":"25152 6939 17922 7862 4761 9957 7500 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
{ "timestamp":1409782437, "collector": "rrc07","as_path":"25152 6939 667 666 ","announce":[" 192.50.44.0/24 "], "withdraw":[] }
専用の BGP パーサーが必要• 速く & 信頼できるパーサ
• OCaml で記述されている• BGP メッセージを JSON に変換
• 人間が読み書きできるフォーマット
ANSSI - 2014 年における BGP ハイジャックの検出 21/53
競合の検出方法は?
1. BGP ルーターのエミュレート
2. フローにそってメッセージを処理
UPDATE WITHDRAW UPDATE UPDATE WITHDRAW
Time
ANSSI - 2014 年における BGP ハイジャックの検出 22/53
BGP ルータのエミュレートhttps://code.google.com/p/py-radix/
192.0.0.0/8 AS1
192.28.0.0/22 AS2 AS3 192.128.0.0/10 AS4 AS5
192.160.0.0/11 AS7 192.168.128.0/22 AS42
ルーティングテーブルを構築
• 高速に IP を探し出すライブラリ• ルーターと Linux カーネルに似ている
• それぞれの BGP メッセージでツリーが更新される• 重複エントリーが競合のもの
ANSSI - 2014 年における BGP ハイジャックの検出 23/53
BGP ルータのエミュレートhttps://code.google.com/p/py-radix/
192.0.0.0/8 AS1
192.28.0.0/22 AS2 AS3 192.128.0.0/10 AS4 AS5
192.160.0.0/11 AS7 192.168.128.0/22 AS42
「UPDATE」メッセージの処理{ "timestamp":1409750436, "peer_as":25152,"as_path":"1234 666 ","announce":[" 192.168.128.0/24 "], "withdraw":[] }
ANSSI - 2014 年における BGP ハイジャックの検出 23/53
BGP ルータのエミュレートhttps://code.google.com/p/py-radix/
192.0.0.0/8 AS1
192.28.0.0/22 AS2 AS3 192.128.0.0/10 AS4 AS5
192.160.0.0/11 AS7 192.168.128.0/22 AS42
「UPDATE」メッセージの処理{ "timestamp":1409750436, "peer_as":25152,"as_path":"1234 666 ","announce":[" 192.168.128.0/24 "], "withdraw":[] }
ANSSI - 2014 年における BGP ハイジャックの検出 23/53
BGP ルータのエミュレートhttps://code.google.com/p/py-radix/
192.0.0.0/8 AS1
192.28.0.0/22 AS2 AS3 192.128.0.0/10 AS4 AS5
192.160.0.0/11 AS7 192.168.128.0/22 AS42
「UPDATE」メッセージの処理{ "timestamp":1409750436, "peer_as":25152,"as_path":"1234 666 ","announce":[" 192.168.128.0/24 "], "withdraw":[] }
ANSSI - 2014 年における BGP ハイジャックの検出 23/53
すべてを一緒にする
Raw BGP BGP parser Emulate BGP{ }JSON
シンプルな処理チェイン
• 月ごとに分けて処理• いくつかの AS を監視するには充分な速度
ANSSI - 2014 年における BGP ハイジャックの検出 24/53
すべてを一緒にする
Raw BGP BGP parser Emulate BGP{ }JSON
5 万の AS を処理する場合• エミュレートしたルータは異なる AS として振る舞う• 8 コアで、1ヶ月分は 10 時間の処理量
13 のコレクタで、年間 156ヶ月分の処理をしなければならない!
ANSSI - 2014 年における BGP ハイジャックの検出 24/53
より速い競合の検知コアを追加してスケールさせる
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
競合検知
• 1 週間分は 5 つのサーバで 120 コアで処理できる• 年間で 130 GB のデータを生成
• 11 536 345 959 の競合
ANSSI - 2014 年における BGP ハイジャックの検出 25/53
より速い競合の検知コアを追加してスケールさせる
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
Raw BGP BGP parser Emulate BGP{ }JSON
競合の例
{ "timestamp":1409782437, "collector": "rrc07","announce": { "prefix": " 192.50.44.0/24 ", "asn": 666 ,
"as_path": "25152 6939 667 666"},"conflict_with": {"prefix": " 192.50.44.0/24 ", "asn": 7500 }}
ANSSI - 2014 年における BGP ハイジャックの検出 25/53
データへのアクセスhttp://discoproject.org
ディスコ?• 自動データ配信と分配
• HDFS のように• Python による MapReduce フレームワーク
• Hadoop のように
ANSSI - 2014 年における BGP ハイジャックの検出 26/53
データへのアクセスhttp://discoproject.org
ビックデータからスモールデータへ
• 1 時間で 1000 の AS の競合を抽出する• フランスと日本の AS は似ている物がいくつかある
• 7000 万の競合が 1 カ国である• 200MB
ANSSI - 2014 年における BGP ハイジャックの検出 26/53
競合のクラスタ分類 - 1/3ルートオブジェクトを使用
単一競合の検証
{ "timestamp": 1409782437, "collector": "rrc07","announce": { "prefix": " 192.50.44.0/24 ", "asn": 666 ,
"as_path": "25152 6939 667 666"},"conflict_with": {"prefix": "192.50.44.0/24", "asn": 7500}}
ANSSI - 2014 年における BGP ハイジャックの検出 27/53
競合のクラスタ分類 - 1/3ルートオブジェクトを使用
単一競合の検証
{ "timestamp": 1409782437, "collector": "rrc07","announce": { "prefix": " 192.50.44.0/24 ", "asn": 666 ,
"as_path": "25152 6939 667 666"},"conflict_with": {"prefix": "192.50.44.0/24", "asn": 7500}}
$ whois -T route 192.50.44.0/24
route: 192.50.44.0/24descr: Example prefixorigin: AS666mnt-by: AS666-MNT
ANSSI - 2014 年における BGP ハイジャックの検出 27/53
競合のクラスタ分類 - 1/3ルートオブジェクトを使用
単一競合の検証
{ "timestamp": 1409782437, "collector": "rrc07","announce": { "prefix": " 192.50.44.0/24 ", "asn": 666 ,
"as_path": "25152 6939 667 666"},"conflict_with": {"prefix": "192.50.44.0/24", "asn": 7500}}
$ whois -T route 192.50.44.0/24
route: 192.50.44.0/24descr: Example prefixorigin: AS666mnt-by: AS666-MNT
ANSSI - 2014 年における BGP ハイジャックの検出 27/53
競合のクラスタ分類 - 1/3ルートオブジェクトを使用
7000 万の競合の検証• 全てが検証されなければならない• オンラインクエリーは遅すぎる
• WHOIS データベースは毎日 PostgreSQL にロードされる• ip4r タイプは高速プレフィックス検索に使用される
>>> client = Client("ripe")>>> client.check("210.158.206.0/24", 17676, "2014/07/28")True
0.01% の競合を削除32% の競合を削除
ANSSI - 2014 年における BGP ハイジャックの検出 27/53
競合のクラスタ分類 - 2/3AS オブジェクト間の関連を使用
$ whois AS15557aut-num: AS15557as-name: LDCOMNETdescr: SFRorg: ORG-LA7-RIPEadmin-c: LD699-RIPEtech-c: LDC76-RIPEstatus: ASSIGNEDmnt-by: LDCOM-MNTmnt-routes: FMCF-MNTmnt-routes: LDCOM-MNTsource: RIPE
$ whois AS41272aut-num: AS41272as-name: MOSELLE-TELE-ASdescr: MOSELLE TELECOMorg: ORG-MT18-RIPEadmin-c: LD699-RIPEtech-c: LDC76-RIPEstatus: ASSIGNEDmnt-by: MOSELLE-TELE-MNT
mnt-routes: MOSELLE-TELE-MNTsource: RIPE
2% の競合を削除54% の競合を削除
ANSSI - 2014 年における BGP ハイジャックの検出 28/53
競合のクラスタ分類 - 3/3クライアント/プロバイダーの接続性を使用
{ "timestamp": 1409750436,"announce": { "prefix": "192.0.2.0/24", "asn": 666,
"as_path": "... 1000 666" },"conflict_with": {"prefix": "192.0.0.0/16", "asn": 1000 } }
Client/Provider relation
Internet AS1000 AS666
192.168.0.0/16 1000192.0.2.0/24 1000 666
BGP
5% の競合を削除3% の競合を削除
ANSSI - 2014 年における BGP ハイジャックの検出 29/53
競合のクラスタ分類 - 3/3クライアント/プロバイダーの接続性を使用
{ "timestamp": 1409750436,"announce": { "prefix": "192.0.2.0/24", "asn": 666,
"as_path": "... 1000 666" },"conflict_with": {"prefix": "192.0.0.0/16", "asn": 1000 } }
Client/Provider relation
Internet AS1000 AS666
192.168.0.0/16 1000192.0.2.0/24 1000 666
BGP
5% の競合を削除3% の競合を削除
ANSSI - 2014 年における BGP ハイジャックの検出 29/53
競合のクラスタ分類 - 3/3クライアント/プロバイダーの接続性を使用
{ "timestamp": 1409750436,"announce": { "prefix": "192.0.2.0/24", "asn": 666,
"as_path": "... 1000 666" },"conflict_with": {"prefix": "192.0.0.0/16", "asn": 1000 } }
Client/Provider relation
Internet AS1000 AS666
192.168.0.0/16 1000192.0.2.0/24 1000 666
BGP
5% の競合を削除3% の競合を削除
ANSSI - 2014 年における BGP ハイジャックの検出 29/53
競合のクラスタ分類要約
Validated Related Connected Abnormal0 %
30 %
60 %
90 %
32
54
311
0 2 5
93
Perc
enta
geof
confl
icts
France Japan
4200 万の異常な競合800 万の異常な競合
ANSSI - 2014 年における BGP ハイジャックの検出 30/53
計算期間競合からイベントまで
Time| | | | | | | | | | | |
集約後集約前{ "timestamp": 20141111.0, "collector": "rrc99" ,
"type": "RELATION","announce": { "prefix": "1.6.28.0/24", "asn": 666 }"conflict_with": {"prefix": "1.6.0.0/18", "asn": 1000 } }
{ "timestamp": 20141231.0, "collector": "rrc66" ,type": "RELATION","announce": { "prefix": "1.6.28.0/24", "asn": 666 }"conflict_with": {"prefix": "1.6.0.0/18", "asn": 1000 } }ANSSI - 2014 年における BGP ハイジャックの検出 31/53
計算期間競合からイベントまで
Time| | | | | | | | | | | |
集約後集約後{ "conflict_with" : { "prefix" : "1.6.0.0/18", "asn" : 1000 },
"origin" : { "prefix" : "1.6.28.0/24", "asn" : 666 },"begin": 20141111.0,"end" : 20141231.0,"peers" : [ "rrc99", "rrc66" ],"type" : "RELATION" }
74 084 イベント73 902 イベントANSSI - 2014 年における BGP ハイジャックの検出 31/53
イベントの可視化フランスの AS
10/28/2014 localhost:2807/timeslots/AS3215
http://localhost:2807/timeslots/AS3215 1/1
2014 February March April May June July August September October November December
ANSSI - 2014 年における BGP ハイジャックの検出 32/53
イベントの可視化日本の AS
10/28/2014 localhost:2807/timeslots/AS2706
http://localhost:2807/timeslots/AS2706 1/1
2014 February March April May June July August September October
ANSSI - 2014 年における BGP ハイジャックの検出 32/53
イベントの数を減らす自動的に
簡単なルール
• カテゴリを変更するイベントを削除• AS が同じ国に属しているイベントを削除• 6ヶ月より長いイベントを削除
2154 のプレフィックスから 557 の競合4519 のプレフィックスから 289 の競合
ANSSI - 2014 年における BGP ハイジャックの検出 33/53
ハイジャックを探して
ANSSI - 2014 年における BGP ハイジャックの検出 34/53
イベントの数を減らす手動的に
興味深い結果
• 似たような AS 名• PACNET-MY Pacnet MY や PACNET Pacnet Global Ltd
• DDoS 攻撃から守られた AS• DDoS 攻撃を緩和する会社のアナウンス /24
• AS 番号のミスタイプ• 2208 や 208
• ビットコインを盗むためにハイジャックされたもの• ...
ANSSI - 2014 年における BGP ハイジャックの検出 35/53
閉会挨拶
もしかすると
69 の疑わしいイベント102 の疑わしいイベント
ANSSI - 2014 年における BGP ハイジャックの検出 36/53
リアルタイム BGP ハイジャックの検知
Targeted Internet Traffic MisdirectionRenesys が 2013/11/19 に報告している
ANSSI - 2014 年における BGP ハイジャックの検出 38/53
リアルタイム検知のゴール
BGP messages Hijacks
Alerts
Measurements
ANSSI - 2014 年における BGP ハイジャックの検出 39/53
検知に必要なものhttps://github.com/spotify/luigi
{ }
タスク 1/2
• インターネットレジストリ
• すぐに利用できる生のBGP データを取得
タスク 2/2
• WHOIS データベースと同期• BGP データを JSON に整形• IPプレフィックスから ASの位置マップを生成
ANSSI - 2014 年における BGP ハイジャックの検出 40/53
検知に必要なものhttps://github.com/spotify/luigi
{ }
タスク 1/2
• インターネットレジストリ
• すぐに利用できる生のBGP データを取得
タスク 2/2
• WHOIS データベースと同期• BGP データを JSON に整形• IPプレフィックスから ASの位置マップを生成
ANSSI - 2014 年における BGP ハイジャックの検出 40/53
BGP ハイジャックの報告
報告
• 疑わしいハイジャックだけ• 50 のイベントについて毎週
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
ANSSI - 2014 年における BGP ハイジャックの検出 41/53
BGP ハイジャックの報告IRC は 2014
報告
• 疑わしいハイジャックだけ• 50 のイベントについて毎週
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
ANSSI - 2014 年における BGP ハイジャックの検出 41/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
$ whois 2a04:8000::/29inet6num: 2a04:8000::/29netname: UA-UAHOSTINGdescr: Hosting Ukrainecountry: UAorg: ORG-HUL6-RIPE
$ whois -i org ORG-HUL6-RIPEaut-num: AS200000as-name: Ukraine-ASdescr: Hosting Ukraineorg: ORG-HUL6-RIPE
ANSSI - 2014 年における BGP ハイジャックの検出 42/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
$ whois 2a04:8000::/29inet6num: 2a04:8000::/29netname: UA-UAHOSTINGdescr: Hosting Ukrainecountry: UAorg: ORG-HUL6-RIPE
$ whois -i org ORG-HUL6-RIPEaut-num: AS200000as-name: Ukraine-ASdescr: Hosting Ukraineorg: ORG-HUL6-RIPE
ANSSI - 2014 年における BGP ハイジャックの検出 42/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
$ whois 2a04:8000::/29inet6num: 2a04:8000::/29netname: UA-UAHOSTINGdescr: Hosting Ukrainecountry: UAorg: ORG-HUL6-RIPE
$ whois -i org ORG-HUL6-RIPE
aut-num: AS200000as-name: Ukraine-ASdescr: Hosting Ukraineorg: ORG-HUL6-RIPE
ANSSI - 2014 年における BGP ハイジャックの検出 42/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
$ whois 2a04:8000::/29inet6num: 2a04:8000::/29netname: UA-UAHOSTINGdescr: Hosting Ukrainecountry: UAorg: ORG-HUL6-RIPE
$ whois -i org ORG-HUL6-RIPEaut-num: AS200000as-name: Ukraine-ASdescr: Hosting Ukraineorg: ORG-HUL6-RIPE
ANSSI - 2014 年における BGP ハイジャックの検出 42/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
$ whois 2a04:8000::/29inet6num: 2a04:8000::/29netname: UA-UAHOSTINGdescr: Hosting Ukrainecountry: UAorg: ORG-HUL6-RIPE
$ whois -i org ORG-HUL6-RIPEaut-num: AS200000as-name: Ukraine-ASdescr: Hosting Ukraineorg: ORG-HUL6-RIPE
ANSSI - 2014 年における BGP ハイジャックの検出 42/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
Analysis Result• 2a04:8000::/29 ウクライナのオペレータのプレフィックス
• 2a04:0800::/29 フランスのオペレータのプレフィックス• フランスのオペレーターからの返事には矛盾があった
とても疑わしいハイジャックイベントはフォールスポジティブであった route6 オブジェクトはウクライナのオペレーターに
よって数日後に作成された
ANSSI - 2014 年における BGP ハイジャックの検出 43/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
Analysis Result• 2a04:8000::/29 ウクライナのオペレータのプレフィックス
• 2a04:0800::/29 フランスのオペレータのプレフィックス• フランスのオペレーターからの返事には矛盾があった
とても疑わしいハイジャックイベントはフォールスポジティブであった route6 オブジェクトはウクライナのオペレーターに
よって数日後に作成された
ANSSI - 2014 年における BGP ハイジャックの検出 43/53
BGP ハイジャックのトラブルシューティング
< hadron> 2a04:8000::/29 is announced from multiple origins:< hadron> SFR-BUSINESS-TEAM (AS12566)< hadron> Ukraine-AS (AS200000)< hadron> First originated from SFR-BUSINESS-TEAM (AS12566)
Analysis Result• 2a04:8000::/29 ウクライナのオペレータのプレフィックス
• 2a04:0800::/29 フランスのオペレータのプレフィックス• フランスのオペレーターからの返事には矛盾があった
とても疑わしいハイジャックイベントはフォールスポジティブであった route6 オブジェクトはウクライナのオペレーターに
よって数日後に作成された
ANSSI - 2014 年における BGP ハイジャックの検出 43/53
Malicious BGP Hijack
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)
ANSSI - 2014 年における BGP ハイジャックの検出 44/53
https://stat.ripe.net/AS198596
Announces from September to October 2014
ANSSI - 2014 年における BGP ハイジャックの検出 45/53
Malicious BGP HijackInfected AS_PATH
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
ANSSI - 2014 年における BGP ハイジャックの検出 46/53
Malicious BGP HijackInfected AS_PATH
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Definition• コレクターのピアまでアナウンスを転送するすべての ASを含む
• このゾーンから送信されたトラフィックはハイジャックネットワークまで到達しなけれ
ANSSI - 2014 年における BGP ハイジャックの検出 46/53
Malicious BGP HijackInfected AS_PATH
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Definition• コレクターのピアまでアナウンスを転送するすべての ASを含む
• このゾーンから送信されたトラフィックはハイジャックネットワークまで到達しなけれ
ばならないどのようにこのゾーンの内側からアクティブな測定ができるか?
ANSSI - 2014 年における BGP ハイジャックの検出 46/53
RIPE Atlas プロジェクトhttps://atlas.ripe.net/
• 7100 probes in around 2000 ASes• コミュニティがホストする調査• ユーザー定義済みの測定• ping, traceroute, HTTP, TLS and DNS• パブリックな API
ANSSI - 2014 年における BGP ハイジャックの検出 47/53
ANSSI - 2014 年における BGP ハイジャックの検出 48/53
Atlas は我々の要件を満たしている
We always found a probe to launch our measurements!• 250 possible hijacks from september to november 2014• AS_PATH are from the London based RIPE collector
Number of probes found in infected ASes:
2 4 6 8 10 12 140 %
5 %
10 %
15 %
20 %
Num of probes
Hija
cks
ANSSI - 2014 年における BGP ハイジャックの検出 49/53
Atlas は我々の要件を満たしている
We always found a probe to launch our measurements!• 250 possible hijacks from september to november 2014• AS_PATH are from the London based RIPE collector
Number of probes found in infected ASes:
2 4 6 8 10 12 140 %
5 %
10 %
15 %
20 %
Num of probes
Hija
cks
ANSSI - 2014 年における BGP ハイジャックの検出 49/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Traceroute to185.73.204.1
1. 10.10.10.12. 82.118.96.13. 188.124.228.14. 95.215.3.785. * * *
ANSSI - 2014 年における BGP ハイジャックの検出 50/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Traceroute to185.73.204.1
1. 10.10.10.12. 82.118.96.13. 188.124.228.14. 95.215.3.785. * * *
ANSSI - 2014 年における BGP ハイジャックの検出 50/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Traceroute to185.73.204.1
1. 10.10.10.12. 82.118.96.13. 188.124.228.14. 95.215.3.785. * * *
ANSSI - 2014 年における BGP ハイジャックの検出 50/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Traceroute to185.73.204.1
1. 10.10.10.12. 82.118.96.13. 188.124.228.14. 95.215.3.785. * * *
ANSSI - 2014 年における BGP ハイジャックの検出 50/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Traceroute to185.73.204.1
1. 10.10.10.12. 82.118.96.13. 188.124.228.14. 95.215.3.785. * * *
ANSSI - 2014 年における BGP ハイジャックの検出 50/53
Traceroute Example
< hadron> 185.73.204.0/22 is announced from multiple origins:< hadron> ALPHALINK-AS (AS25540)< hadron> TEHNOGRUP (AS198596)< hadron> AS_PATH: 8607 39792 44050 131788 198596
Closing Remarks• traceroute stops at AS44050 (PIN-AS)• AS131788 and AS198596 are most certainly placeholders• AS44050 (PIN-AS) is already known for previous hijacks
ANSSI - 2014 年における BGP ハイジャックの検出 51/53
結論
• 大規模な BGP ハイジャックの自動検出• フランスと日本に関しては年間わずかなハイジャック• 早期発見と報告• トラフィックのリダイレクトの識別を継続的に調査
メッセージの窃取
1. インターネット上のパケットはリダイレクト可能2. トラフィックは暗号化と認証される必要がある3. オペレータはプレフィックスを監視し、具体的なアナウンスの準備をする必要がある
4. ネットワーキングのベストプラクティスを実施しなければならない
ANSSI - 2014 年における BGP ハイジャックの検出 52/53
質問?
関連研究
• BGP 設定のベストプラクティス (英語とフランス語)
ANSSI - 2014 年における BGP ハイジャックの検出 53/53