「また、ショー?」またはシティカードの交通カードをハッキングする(ニジニ・ノヴゴロド)

読者に警告します: この記事は情報提供のみを目的として書かれており、ロシア連邦刑法第327条と矛盾するため、チケットを偽造することを決して勧めません。 著者は、この記事の情報を使用して人々が犯した違法行為について責任を負いません。



私は普通の女の子で、比較的最近ITの分野で働いていますが、ハッキングやハッキングの知識はありません。 しかし、 トロイカポドロジュニクの交通カード(もはや利用できなくなった、 Ammoniaantooの著者)のハッキングに関するHabréの記事に触発されて、ニジニノヴゴロドで動作するCitycard交通カードをハッキングした経験について話すことにしました。







私はハッカーでもハッカーでもないことをすぐに言わなければなりませんが、単純なフロントエンド開発者であり、PCでの作業に関する私の知識は、フロントエンド開発の知識を捨てた場合、「経験豊富なユーザー」と言えます。



前述の記事の著者が行ったような特別なアプリケーションは開発しませんでしたが、手頃な価格の手段で交通カードを簡単に破ることができることを示します。 ハッキング方法は長い間知られています(確かに5〜7年)。



開発者として、既知の脆弱性を持つ古いバージョンのフレームワークを使用した場合、雇用主は長い間頭を痛めていましたが、これは、私の意見では、輸送システムの開発者には当てはまりません。 おそらくこれは、開発者自身の知識が低いためです。



しかし、ハッキングに戻ります。 だから、まず最初に。



私が説明したすべてのアクションは昨年の秋に実行されましたが、私が知る限り、すべてが今では機能しています。



だから、私はNFCを備えた安価なスマートフォンを持っています。 以前、Citycardの交通カードを購入していました(たまたまいくつかのカードを持っていることがありました。時々、自宅や職場でカードを忘れて新しいカードを購入しなければなりませんでした)。







公式のMifare NXP Taginfoマップメーカーアプリをダウンロードし、トランスポートカードをスキャンしました。







カードはMifare Plus Sチップに基づいていることが判明しましたが、最も重要なことは、セキュリティモードNo. 1で動作することです。つまり、本質的に簡単に解読できるシンプルなMifare Classicカードであることを意味します。



Google PlayですばらしいMifare Classic Toolアプリケーションをダウンロードし、トランスポートカードを標準キーでスキャンしました。







それから私は失望しました-よく知られたキーのどれも出てきませんでした。 したがって、「Plantain」に関する記事で説明されているように、ハッキング方法を使用することはできませんでした。

「ちょっと待ってください」と思ったのですが、「トロイカのハッキングに関する記事で説明されているように、この方法を試すことができます。」



実際、CiticardにはGoogle Playのアプリケーションもあり、これを使用してカードの残高を確認し、その後機会を台無しにしてカードを補充することができます。









このアプリケーションをダウンロードしてインストールしました。 しかし、私の前にジレンマが生じました。カードへの鍵は、アプリケーション自体に配線されるか、サーバーから「到着」します。 Androidアプリの逆コンパイルは非常に簡単ですが、私はあまり得意ではありません。



確かに、多かれ少なかれ思慮深い開発者なら簡単にこれを行うことができます。 私はそのようなスキルを持っていなかったので、インターホンを修理している兄に頼りました。彼には使い慣れたプログラマーがいると思いましたが、彼はよりエレガントでシンプルなソリューションを提案しました。



その時までに、彼はKickstarterから支払いを受け取りました 。これにより、リーダーとカードの間でプロトコルを覗くことができます。 インターホンでキーチェーンを使用し始め、その内部に同じMifareチップが縫い付けられ、これらのキーリングに関連するいくつかのタスクにこのボードが必要だったことがわかりました(詳細には触れませんでした)。



そこで、彼はボードを取り、それをリーダーとして機能するスマートフォンに置き、トランスポートカード自体がカードとして機能し、リーダーとカードの間のデータ交換ログを削除しました。



次に、受信したログをどう処理するかという質問が発生しました。 しかし、インターネットでの短い検索により、crapto1guiというユーティリティが作成されました。 リンクはつながっていません。見つけるのは簡単です。



以下にユーティリティのスクリーンショットを示します(インターネット上のサイトの1つから取得したため、そこにあるデータは実際に使用したものではありません)。









一般に、必要なログの断片をこのユーティリティに挿入するだけで十分で、6バイトのキーが即座に計算されます。 私自身、それがどれほど簡単か、驚きました。最も難しいのは、必要な部分をログからコピーして、適切なプログラムフィールドに貼り付けることでした。



次に、Mifare Classic Tool(MCT)アプリケーション全体を開き、受信したキーをアプリケーションに挿入しました。今回は、0番目と8番目のセクターの内容が表示されました。









基本的に、ゼロセクターにはゼロしかありませんでしたが、8番目にはいくつかのデータがあり、そこからトランスポートカード上のデータは8番目のセクターに格納されていると結論付けました(トロイカカードのように、本当に同じですか?開発者?)、および受信したキーはキーBであることが判明しました(セクターには2つのキーAとBがあります)。



さらに、興味のために、オープンソースのlibnfcユーティリティと非接触型カードリーダーの助けを借りて、カードから他のすべてのキーを受け取りました(詳細については、「Plantain」の記事を参照してください。この方法も使用しました。



受け取ったキーを使用して、別のトランスポートカードの内容を読み取ろうとしました。 キーAは同じですが、キーBは同じではないことが判明しました。 しかし、前述のユーティリティを使用すると、簡単に入手できました。



それから、私は交通カードの内容を調べ始めました。 8番目のセクターは、16バイトの4ブロックで構成されています。 MCTの助けを借りて、最初のブロックがいわゆるものであることが明らかになりました。 値ブロック。 最初に出てきたのは、カードの残高がこのブロックに保存されるという考えでした。 MCTの助けを借りて、それをデコードすることができました-番号2147483647が含まれていました。たとえそれがペニーであっても、明らかにカード残高のようには見えませんでした。



それから私はこのマップを見て、セクターの内容を読んで、値は変わっていないが、他のブロックの内容は変わっていることを発見した。 カードの残高はそれらに保存されていると結論付けられました。



いわゆるリプレイ攻撃を試したかったので、カードの内容を分解するという特定の欲求はありませんでした(後で正確に呼ばれるものを見つけました)。



地下鉄旅行の前の朝、私は第8セクターの内容を保存し、カードを回転式改札口に置いて仕事に行きました。 午後、ビジネスに出発し、MCTを使用して、地図の前の状態を記録し、地下鉄に乗ろうとしました...そして、私はそれをしました!





(写真は私のものではありません-私はまったく注意を引きたくありませんでした)



だから私はこの方法で「永遠の旅行カード」ができることに気付きました。 私は少し楽しみ、インターホンキーチェーンのトランスポートカードセクターの内容を書き留めることにしました。









(トランスポートカードを記録するために同じキーチェーンを使用しました)



私はキーチェーンでターンスタイルを通過しようとしましたが、その後失望しました-キーチェーンは、驚いたことに、機能しませんでした。 トランスポートカードがブロックされていると思いました(結局、キーチェーンはそのクローンでした)が、「オリジナル」(トランスポートカード)を適用すると、なんとかターンスタイルを通過できました。



私は兄と話をしましたが、彼がこれについてどう思うか知りたいと思ったので、彼はそれぞれのカードとキーチェーンには独自の識別番号があると言っていました。 どうやら、私の「クローン」は完全ではなく、カードの内容はどういうわけかその番号に結び付けられていました。



しかし、この状況から抜け出す方法があることが判明しました。まったく同じように見えるいくつかのタイプの装身具がありますが、それらは番号を変更できます(従来のトランスポートカードではこれは機能しません)。 さらに、MCTはゼロセクタの最初のブロックに格納されるため、数値を書き換える機能を備えています。



ただし、何らかの理由で、MCTを使用して番号を変更しても機能しませんでした。 しかし、それは読者とすべて同じlibnfcの助けを借りて行われたことが判明しました。



今回は、キーチェーンの形でトランスポートカードの完全なクローンを取得しました。これは、番号さえ一致したためです。 インターホンキーチェーンのターンスタイルを試してみましたが、簡単に成功しました。 叔母の指揮者は非常に驚いたかもしれないので、私はバスにキーチェーンを置くことを敢えてしませんでしたが、「永遠の」トランスポートカードも問題なく機能しました。



要約すると、次のように言えます。ニジニノヴゴロドの旅行代金を支払う交通カードは、 トロイカ (モスクワ)やポドロジュニク (サンクトペテルブルク)と同じくらい簡単にハッキングされます。



特別な知識はないが、Androidアプリケーションをダウンロードし、GoogleとYandexで検索を使用できる少女でさえ、即興のツールを使用してこれを行うことができ、パブリックドメインプログラムとユーティリティで利用できました(開発者であれば、おそらくもっと簡単です、それははるかに簡単ですが...)はい、インターネットを検索してフォーラムを勉強するのに時間がかかりましたが、すべてが非常に簡単であることが判明しました。



私はすぐに注意して、地下鉄に損傷はなかったという質問を予想します-「永久旅行カード」で行われたすべての旅行を考慮に入れたので、そのような旅行の回数のためにカードに残高を費やさず、カード自体を破壊しました。



しかし、攻撃者はそれほど意識しておらず、おそらくこの脆弱性を利用して、都市の交通機関に損害を与えています。 しかし、運賃は定期的に増加します(交通カードの偽造による損失を含む場合があります)。 ところで、交通カードのデポジットは50ルーブルです。 しかし、Mifare Classicとまったく同じセキュリティカードの価格は 12.5ルーブル以下です。



トランスポートカードが使用されているすべてのトランスポートシステムは安全ではないと感じます。 私はこれがなぜ起こるのかについて議論したくありません(このトピックはHabr向けではありません)。質問は次のとおりです。誰(どの都市)が次に、Habrに関する記事をいつ待つか?



PSこの物語は、もちろん架空のものです。 すべてのキャラクターは架空のものであり、すべての偶然はランダムです。 さて、あなたはポイントを得る...



All Articles