The Standoff2020へのRBK.moneyの参加の大きな回顧

...またはハッカーがサイバー都市でのオープンソースの支払い処理をどのように破ったか。



こんにちは!最近、RBK.money処理を使用して、スタンドオフサイバーポリゴンに積極的に参加しましたこれは、インフラストラクチャ、発電所、ショップ、その他の重要な要素をすべて備えた大都市全体の仮想モデルを作成するときです。そして、彼らは青いチーム(今年は6チーム)と赤いチーム(今年はそれぞれ29チーム)をこの街のデジタルツインに入れました。最初はこのインフラストラクチャ全体を保護し、2番目は積極的に何かを壊そうとしています。





映画「BladeRunner2049」より



もちろん、イベントに処理を取り入れました。これについては、ブログの以前の投稿で読むことができます。処理は銀行の一部でしたサイバーシティの住民に金融サービスと支払いサービスを提供し、支払いカードの発行にサービスを提供し、商品とサービスの販売を可能にしました。



この投稿では、ハッカーがどのように私たちを壊したか(ネタバレ注意:そしてしなかった)、そして私たち自身がソリューションの準備と展開の過程で2、3回足を撃った方法をお伝えしたいと思います。そして、はい、重要なことは、私たちにとって最初は双方にとって有利な状況であったということです。つまり、彼らは私たちを壊すことはありません。つまり、私たちが処理に自信を持ってオープンソースに入れ、今ではハッカーに提供しているのです。彼らはそれを壊します-一般的に素晴らしいです、私たちは弱点がどこにあったかを見るでしょう、そして私たちは私たちのクライアントのセキュリティの観点からさらに保護されるでしょう。



私たちは具体的な急いでサイバーシティに侵入しました。これはKubernetesでの最初の展開の1つであり(以前はすべてをSalt状態で展開しました)、新しいインストールアプローチを使用する必要がありました。そして、このラッシュの結果はすぐに来ました。



ハッカーのためのヒント







処理がサイバーシティに拡大する前でさえ、私たちは意図的にそこに2つのかなり弱い点を残しました。



1つは、カードのトークン化方法に関連する脆弱性です。これらの方法は、リプレイ攻撃の形で脆弱性の影響を受けやすくなりました。つまり、カードは1つのストアで正常にトークン化され、このトークンを使用して別のストアに移動し、そこで再利用できます。脆弱性が見つかることを臆病に望んでいましたが、残念ながら。



2つ目は、主要な商人の簡単な説明です。オリガルヒ商人を1人だけ作成しました。これは、サイバーシティでオンラインストアを所有する法的エンティティでした。そして、このマネーバッグはかなり単純な資格情報を持っていましつまり、原則として、Parolec0のようなパスワードが傷つけられた可能性があります。しかし、それも離陸しませんでした。



しかし、私たち自身のわき柱が現れました。



急いで-すべてを保護することはできません







注意深い読者は、主要な商人についてのポイントから結論を下します-ちょっと待ってください、あなたはすべてのオンラインストアを所有する唯一のオリガルヒを持っています、それはそのようなオンラインストアをハックするのに十分です、そしてあなたは残りにアクセスすることができます。ええ、そうです、彼らは急いでこの瞬間について考えませんでした..



そして実際、この商人をハッキングした後、私たちの処理のために彼のAPIキーを取得し、この処理を完全に管理することができました。実際、これが起こったのです。攻撃者は、市内のオンラインエンターテインメントストアであるサードパーティソリューションをハッキングし、そこからマーチャントのAPIキーを取得し、それを処理に持ち込み、オンラインストアのオン/オフを切り替えるメソッドを呼び出しました。そして、1つの法人が市内のすべての小売店を所有していたため、それらはすべてオフになりました。



原則として、これは正しいです。あなたが自分のためにすべてをつかんだ、貪欲なオリガルヒなら、苦しんでください。私たちは結論を導き出し、さらに5つの独立した法的エンティティを作成し、「ログイン-パスワード」とAPI-キーのペアを個別に作成することで、マネーバッグを迅速に処分することにしました。次のこのような大会では、ビジネスの面で状況をさらに現実に近づけるように努めると思います。



そして、それはまた、kuberの特性のために「通り過ぎた」。



Kubernetesでは、クラスターの状態のメインリポジトリはETCDです。これは、非常に信頼性の高いものを構築できる便利な分散システムです。しかし、ハードドライブの待ち時間についてはあまりにも重要です。



私が書いたように、仮想サイバー都市環境で処理を展開しました。私たちに隣接するオブジェクトに対して非常に活発な攻撃があり、そのような「ノイズの多い」オブジェクトの1つがデータストアに移動されると、参加者の1人のインフラストラクチャが長期間、永続的に壊れていました。そして、この場合、事実上私たちはターゲットではなく、その時点で誰も処理を中断しませんでしたが、それは正常に動作し続けましたが、クラスター自体が激しく減速し始め、ハードドライブは単に対処できませんでした(彼らはls-lコマンドの出力に約19がかかったことに気づきました秒)。ある種のDoSが出てきたことが判明し、ある夜、私たちはすべてのリクエストに標準の猫を送りました。







この状況の後、The Standoffの主催者は私たちを他のディスクに移動しました。つまり、ある仮想マシンをオフにし、別の場所で別の仮想マシンをオンにしました。その後、分散DBMSは喜んでスプリットブレインをキャッチし、ノードの半分には1つの情報が含まれ、残りの半分には別の情報が含まれ、実際には同意できませんでした。もちろん、戦闘では、移行ともっと混乱し、これを許可しなかったでしょう。そして、テスト環境では、利用可能なすべてのものをクラッシュさせて再インストールする方がはるかに簡単でした。ちなみに、2時間かけて行いました。これを強調する理由-すべてのコンポーネントを含む本格的なワークフローを2時間で展開しました。これは、社内での戦闘での処理で実行できます。従来の処理は通常、3か月の企業に導入されます。



だから、スプリットブレインについては、それはすべて急いでいます。ルートの下のノードの1つで/ tmpを停止しましたローカルボリュームをハードウェアからポッドに配布するCSILVMモジュールが密かに(!)永続的なKuberボリュームを/ tmpにマウントすることを誰が知っていましたかしたがって、自分の手で、回転しているDBMSの足元にあるデータを破棄したことがわかりました。さらに、ベースクラスター内の一部のノードのストレージを破棄したにもかかわらず、仮想マシンが最初に再起動されるまですべてが機能し続けました。これは、仮想マシンが新しい側に転送され始めたときに発生しました。



ブルーチームはゆっくりと防御をオフにしています...







ある日、ブルーチームは外部保護(防火壁など)をオフにすることを決定しました。つまり、最初の数日間、ハッカーはこの種の保護を有効にしてから無効にしてシステムを破壊しようとしました。また、サードパーティのWAFもありました。これは、モジュールとしてnjinksを使用した入力でロードされ、トラフィックを保護しました。



そしてその日が来ると、WAFをオフにして、すでにオフになっていることに気づきました。二日前。私たちは素晴らしく、急いでいるので(はい、はい)、WAFインスタンスを持つ入力kubernetesをセットアップしていました。そして、すべてがうまくいくでしょうが、WAFは単に制御サーバーに到達せず、そこからライセンスファイルをダウンロードできず、肩をすくめて、単に罪から離れました。そして、この2日間、私たちが「含まれている保護を破る」ことは、実際、この保護なしで座っていたことがわかりました。



しかし、それでも私たちは壊れていませんでした。



急いでいることは有害であるという論文の別の確認(前のものが十分にない場合)-私たちの詐欺防止の状況。以前の ブログ投稿説明しましたが、一連のルールが記載されたマジックボックスがあります。不正防止は、銀行カードの破損、さまざまな場所/ IP /電子メールからのある時点での支払いの試み、およびその他の不親切な行動から保護します。私たちは防衛チームに、これらすべてのルールを自分たちで慎重に設定することを伝えました。



そして、私たちはそれを行いました-私たちはすべての不正防止ルールを注意深く設定しました。 The Standoffにインストールする代わりに、本番サーバーRBK.moneyに。ブラウザのアドレスバーのUIURLは角質です。つまり、この時の詐欺防止は、静かで不思議な空虚な箱でした。



これは、編集者にとって成功したベクトルの1つになりました。

たとえば、彼らは以前にサードパーティのインターネットバンクをハッキングし、カードのPANコード(番号自体、プライマリアカウント番号)、カード所有者の名前を盗み、有効期限を取得していました。その後、すでにこのPANでの処理中に、CVVの整理を開始しました。そして、すべてがうまくいくでしょう、カードを破裂させようとした3回の試みの後、それらは私たちの詐欺防止によってブロックされます。場合のみ...上記を参照してください。



一般的に、そのような面白い話はたくさんありました。ある時点で、私たちのサービスは解決を停止し、ノード上の時間は、いくつかのホストから、そしてどういうわけかランダムに同期されなくなりました。



もちろん、彼らが最初にしたことは、誤った構成、つまりクラスターの理解できない作業でした。



DNSの場合、このトラフィックが発生しなかったノードにCoreDNSポッドを直接移動することで問題はすぐに解決されましたが、NTPの場合は幸運でした。幸い、大きなクロックスキューは検出されず、クラスターを作成するときにノードは同期できました。



ファイアウォールレベルのある時点で、一部のノードで発信NTPおよびDNS要求が無効になっていることが判明しました。誰かがろ過ナットを締めすぎたようです。



その他の攻撃







サイバーシティの他の近くのサイトへの攻撃も、サイバーシティの金融システム内のサイトを含め、成功することがあります。



エラスティックの上とモニタリングでアラートURLを混同せず、非常に正確かつ迅速に確認できたのは良いことです。



たとえば、オリガルヒと撤回されたAPIキーをハッキングする場合のように。モスクワ時間22.17にハッキングされました。 22.22に私たちの側はこれに気づき、すぐに擁護者と主催者に報告しました。ちなみに、APIの不正使用(ハッカーが最初のリクエストでAPIのまれなメソッドと呼ばれる奇妙なコンテンツタイプヘッダーを渡した)やその他のニュアンスが原因で、アラートがトリガーされた理由であることに気付きました。



システムが正常かつ自動的に動作する場合、すべてが同時に一致することはめったにありません。しかし、そのようなことが起こった場合、それは誰かが自分の手でAPIで遊んでいることを意味します。これがアラートで、機能しました。

サイバーシティについてではなく、この種の実際の状況について話している場合、すべてがさらに速く発生します。そのような場合、システムは自動的に商人の行動をブロックするため、商人のアカウントから何も引き出されず、原則として、仕事やビジネスに害を及ぼすことはなく、パニックを引き起こし、すでに生きている従業員をつなぐ



将来のために



サイバーシティのハッキング形式は、冗談ではなく、情報セキュリティの未来です。私たちは間違いなくここに再び来て、すべての間違いを考慮に入れ、インフラストラクチャとビジネススキームを考えて、可能な限り現実に近づけます。理想的には、私は一般的に、中央銀行または州のサービスの人々が同じ結論に達することを望んでいます-戦いで彼らのインフラストラクチャをテストし、脆弱性を見つける機会を提供し、ユーザーとビジネスにとってさらに良く、より信頼できるようになります。



そして、それは実際にはとてもクールで楽しかったです。実際、本番環境で再現されるとは限らないカオスモンキーケースが大量に届きました。攻撃の処理をテストし、2日間で通常の6か月よりも多くの攻撃を受けました。



私たちは多くのことを学びました。そして最も重要なことは、私たち自身とあなたのために書いている私たちの製品がサイバーシティの参加者の間で人気があることを知りました。私たちのITにとって、それは強い動機でした。結局のところ、これでも人々があなたの仕事の結果を使用するのは素晴らしいことです。ケースと非常に特定の目的のため。



私たちは本当にそれが好きで、もっと欲しいです。



次のスタンドオフでは、さらに興味深いスキーム、より多くの支払い機能、新しい攻撃ベクトルで私たちを待ってください!



All Articles