サイバー攻撃
- 中島明日香:「サイバー攻撃〜ネット世界の裏側で起きていること〜」、講談社Blue Backs、'18を読む。ビットコイン取引所「コインチェック」が580億円相当の仮想通貨を流出させた(「正月〜3月の概要」(2018))。TVはその後について、正義のハッカー集団がその追跡をしたが、盗まれた仮想通貨は別の仮想通貨に次ぎ次と細分移し替えされて追跡困難となり、プロジェクト終了となったという話を出していた。ハッカーの世界の物語を一度読んでみたいと思っていた。
- 本書はC言語の知識が土台になっている。OSなどのシステムソフトはC言語で開発する場合が多いから当然だ。私の現役最後の論文はC言語によるシミュレーション実験だった。でももう20年は昔の話だ。C言語文法の詳細は殆ど忘れてしまっている。プログラム作成に「乗っ取り」を意識したこともない。そこでもう一度当時の参考書を斜交い読みするところから始めた。
- 第2章に'16年の製品別脆弱性発見数ランキングのトップはAndroidだったとある。先日私のスマホはAndroid更新プログラムをインストールした。脆弱性改良だけではないだろうが、なんと終了までに小1時間かかる膨大なファイルだった。その前の年のランキング1位はMac OS X、前々年度ではInternet Explorer。汎用ソフトではことに脆弱性攻防が激しいようだ。
- 第3章にC言語プログラムの簡単なプログラムで、スタックバッファオーバーフローを起こさせて管理者権限を奪う方法が具体的に示してある。スタック領域はデータ型変数を一時記憶する領域。乗っ取られるとサーバーはやられ放題になる。C言語はBASICなら数値のオーバーフローなど常識として行っている数々のチェックをコンパイラが行っていない。これはC言語の良さと裏腹だ。
- さらに詳しくは、スタックのバッファメモリーを無意味のデータでいっぱいとし、戻りアドレスへシェルコードの先頭アドレスをオーバフローさせる。するとシェルが立ち上がり、攻撃者はコマンドの入力が可能になると云う寸法になっている。攻撃コードはPythonと言うプログラミング言語を利用して作成され、それを元のプログラムのコマンドライン引数として直接渡す。Pythonは古くからあるが、最近注目の汎用プログラム言語で、WebサービスたとへばYouTubeへの応用などで有名だそうだ。
- 章の終わりに実際にあったPHPと呼ばれるプログラミング言語(ソースコードを解釈して実行するためのプログラムは、C言語で書かれていた。C言語は、他のコンパイラ型言語で書かれたプログラムとリンクしやすい。)に潜んでいた典型的なバッファオーバーフローの脆弱性を説明している。受け取り領域のメモリーサイズが固定されていたためにPHP不正終了が起こる。
- 第4章には書式指定文字列の脆弱性を悪用する攻撃を概説している。コマンドライン引数に書式指定子を入れて、例えばprintfの入力データになるようにするとprintfは混乱を起こす。書式指定子%nは出力文字数を指定した変数に格納せよという命令であるが、これと最小フィールド幅、ダイレクトパラメータアクセスの書式指定子を組み合わせた変数書き換えの例文が出ている。
- 書式指定文字列による書き換え例もある。strncpyなる文字列操作関数を使って出力を操る。思い通りの出力を得るためには、コマンドライン引数にPythonを埋め込んでいる。シェルコードの実行にいたるには、第3章同様に戻りアドレスをシェルコードの先頭アドレスに書き換えねばならぬ。このときキーになるのが%nの使い方である。例題では乗っ取り結果としてシェルのプロンプトが画面に出ている。こうなれば攻撃者はシェルを好き勝手に扱える。
- 実例にはUNIXやLINUX系のOS上で利用されるプログラム(コマンド)sudoの脆弱性(不正終了)が取り上げられている。他の脆弱性に比べて書式指定文字列による脆弱性攻撃は作りにくいらしく、あまり悪用の例はないという。
- 第5章はWebサイトに悪意あるコードを埋め込む方法を採り上げた。Web関連の脆弱性は、クロスサイト・スクリプティングXSSに対するものが多い。閲覧者がHTMLやJavaScriptを自由に埋め込めるようなアプリケーションが問題だ。コメント欄や注文欄などに悪意あるプログラムを書き込まれ時、それをプログラムとしてアプリケーションが取り込んでしまうと、次のユーザーが被害に遭う。XSSには3種あるが、もっともポピュラーなのが反射型らしい。
- 会員ユーザーと例えば通販(ツイッターでもラインでもフェースブックでも原理は同じだろう)Webサイトの会話では、認証機能が働いている。ユーザーがこのWebサイトを彷徨いてもログアウトするまで(セッション)は、会員と認識されている。このためにセッションIDがブラウザのCookieに保存されている。このセッションを途中で乗っ取り、攻撃者がユーザーになりすますことを、「セッション・ハイジャックによるなりすまし」という。反射型XSSでブラウザのCookieを攻撃者に送信するようなプログラムを仕込むことが出来たら、攻撃者はなりすましが可能になるだろう。
- 持続型XSSはWebサイトの欠陥から悪意のあるプログラムを埋め込まれた場合で、ひところ新聞を賑わせた、公共機関HPへの反日団体の書き込み事件はこの分類に入るのだろう。
- ユーザー名とパスワードを打ち込んで、Webサービスを利用する活動はもう生活の一部になっている。Webサーバー側に一覧表があって、送られたデータと照合し、サービスを許可する認証システムが介在する。リレーショナルデータベース管理システムはSQL言語を使う。そのプログラムの不備を突く「SQLインジェクション」という攻撃がある。
- ユーザー名がバレていたとする。プログラムに脆弱性があるとユーザー名の最後にあるいはパスワードにSQL語を仕込んで、認証の回避をやる例文が出ている。データの窃取方法も出ている。個人情報流出事件はあとを絶たない。脆弱性の診断と対策についても1節儲けられている。無料の自動診断ソフトがあるし、有償のセキュリティ専門会社による診断も行われている。
- 薄々は知っていたが、サイバー攻撃用のツールキット「Exploit Kit」があって闇市場に出回っているとは驚いた。数万〜数10万円するという。その貸し出し業があって、月5万円というのがあったという。サイバー攻撃者業務代行業もあり、このときは感染成功数に応じて攻撃者が代行業者に対価を支払うのだそうだ。別段高級な技術者でなくても、このキットを使えば悪性Webサイトが構築できる。脆弱性のあるWebサイトからアプローチしたユーザーは、自動的にマルウェアに感染する。
- バンキングマルウェアが送り込まれると、ユーザーが銀行取引したとき、偽の認証画面を表示して、決済に必要な情報を盗み取られる。身代金要求型マルウェアは、ユーザーのデータを読めない状態にし、その修理代を払わせるというもので、最近話題になった。Exploit Kitもソフト側の対策に呼応して日進月歩している。
- 有力な対策に脆弱性報奨金制度がある。未知の脆弱性を防衛側が買い取る。GoogleはWebサービスのそれに最高2万ドルを払うと公告している。脆弱性買い取り企業も現れた。ネットワーク或いはコンピュータを常時監視していて会員にセキュリティ情報を流すものや、攻撃コードを多数蓄積して脆弱性検証ツールを販売するものなどがある。非正規市場があって、Google検索などでは出て来ないDeep Webで、捜索の目を眩ませている場合もあるという。
- 最後にサイバー戦争に触れている。大量通信でネットやコンピュータを麻痺状態にするDDoS攻撃の例が、エストニア共和国選挙で起こった。グルジア紛争では、グルジアの政府機関などが機能麻痺に陥った。少なくとも後者は、侵略してきたロシアの仕業だろう。
- イランの核施設の遠心分離器8400台を操業不能にしたサイバー兵器Stuxnetについては、このマルウェアを入れたUSBが拾われて施設のコンピュータに乗ったあたりから、その驚くべき行動の逐一解説があって面白い。日本にも「第五の戦場」サイバー空間に対するサイバー防衛隊が'14年に発足した。
('18/04/23)