2018/11/21

セキュリティ研究者への道:入門編

black gray white hacker
2018 年 11 月 21 日 Emil Hozan 著

セキュリティの研究者やアナリストにはさまざまな呼び方があり、「ホワイトハットハッカー」や「倫理的ハッカー」といった言葉がありますが、より一般的でよく使われるのは、「ペネトレーション(侵入)テスター」という呼び方でしょう。私自身が名乗るとしたら、「セキュリティ研究者」を使いたいと思います。最近は「ハッカー」という呼び方に否定的な響きがあるようですが、本来はそうではないはずであり、私も同じ意見です。私が考える、この言葉の基本的な定義は、Google の非公式の定義(「define hacker」で検索しました)である「an enthusiastic and skillful computer programmer or user(技術的知識を持ち、熱心に探求するコンピュータプログラマやユーザ」に近く、この定義に従って考えれば、私自身は大いにコンピュータを楽しみ、最高のハッカー(もちろん、ホワイトハットです)になりたいと思います。

ただし、この用語そのものは範囲がかなり広くて意味が曖昧であるため、正しい答えがあるわけではありません。この記事の目的は、セキュリティ研究者になるのに必要な基本を理解することであり、それは、セキュリティ研究においてハッカー(この場合はブラックハット)の最終目標を知るためにはハッカーになったつもりで考える必要があるからです。つまり、悪意のハッカーの思考を理解したいのであれば、自分がそういったハッカーになったつもりで考える必要があるということです。そうすることで、未発見、あるいはさらに問題の大きい未公開(すなわち、ゼロデイマルウェア)の脆弱性の革新的な方法での予測と保護が可能になります。

まず初めに、倫理的ハッカーあるいはペネトレーションテスターと呼ばれる人たちがどのような仕事をしているのかを簡単に見てみましょう。このプロセスの一般的な系統的アプローチは以下のとおりですが、この記事ではそれぞれの段階を以下に簡単にご紹介し、今後の記事でもこれらの段階を前提に説明を続ける予定です。
https://www.greycampus.com/opencampus/ethical-hacking/phases-of-hacking

次に、悪質のハッカーのいくつかの最終目標に注目してみることにしましょう。個人的には、ハッカーの最終目標を理解することが、彼らの行動の目的が何であり、彼らにとっての成功が何であるのか、彼らが使うプログラムやスクリプトの目的が何であるのかを理解することにもつながると考えています。悪意のハッカーの最終的な目標としては、次のようなものがあります(ただし、これらに限定されるわけではありません)。

  • ユーザ名やパスワードを盗む
  • 機密情報やファイルを入手する
  • ネットワークを探索する
  • ランサムウェア/金銭の要求
  • ネットワーク/ホストに常駐化するためのバックドアを作成する

具体的な最終目標が分かれば、始めるべきことが何であるかが明らかになります。それでは、すべてのハッカーの共通点は何でしょうか。誰もがネットワークに接続してそこでさまざまな活動を展開しようすることになり、これは、誰もが思い付きそうなことではありますが、できるだけ多くの手段を使ってネットワークへのアクセスを試みることが重要です。誰かのコンピュータをハッキングするには、ネットワークアクセスを手に入れる必要がありますが、厳密に言うと、必ずしもそうとは言い切れません。例外的な方法もいくつかあり、脅威を仕掛ける犯罪者/ハッカーに情報を送るためにはネットワーク接続が不可欠ですが、たとえば、不正ファイルを入れた USB/CD を落としておいたり、外部に公開されているロックされていないコンピュータがあることに気付いたりする場合(この場合は、持ち主に気付かれるまでコンピュータを利用できます)が考えられます。ここまでの努力が成功したと仮定して、次の段階へと進むことにしましょう。

具体的な活動の段階へと進むにあたり、標的と同じ場所ではなく、マシンやネットワークに物理的にアクセスできない離れた場所にいると仮定すると、直接アクセスできないコンピュータシステムにどのように侵入すれば良いのでしょうか。前述の各段階とペネトレーションテスター/セキュリティ研究者/悪意のハッカーの定義を思い出しながら、各段階の具体的な手順を説明することにしましょう。

偵察

最初は「偵察」の段階です。偵察は情報収集の段階と呼ぶこともできるもので、標的に関するいくつかの情報を見つける必要があります。これには、ホスティングされている Web サイト、IP アドレス、従業員(企業や事業所などの場合)、友人などの標的に関する情報が含まれます。この段階は、能動的な偵察と受動的な偵察に分かれ、前者は何らかの既知のネットワーク情報の探索が必要な侵入型の活動、後者は標的の Facebook や LinkedIn のプロフィールの調査が中心の非侵入型の活動です。

スキャン

次の「スキャンの段階」は、能動的な偵察作業に似ており、標的の IP アドレスのアクティブなスキャンが含まれます。企業には通常、メールのフローや社内でホスティングされている Web サーバ用のオープンポートが存在しますが、そうでない場合もあります。この段階の主な目標は、標的に関するできるだけ多くの情報を収集することであり、具体的には、使用しているオペレーティングシステム、よく利用されるソフトウェアアプリケーション、あるいはオープンポートといった情報の収集が中心になります。これらの情報に基づき、標的に関する既知の脆弱性をさらに調査したり、最低でも、OS の動作に関する詳しい情報を入手したりします。

ここまでの行動を見ると、それほど難しいことでもないようであり、次の段階へと簡単に勧めるように思えるかもしれません。そう考えるのは当然のことであり、なぜなら、これ以降の段階から処理が複雑になるからです。テレビドラマには、ハッカーがキーボードを使わずにハッキングする場面が登場しますが、正当なハッキング行為にはさまざまな形があります。OS、アプリケーション(Microsoft Word、Adobe Reader)、Web ブラウザ(Internet Explorer、Chrome)のエクスプロイトがこれに含まれ、これこそが、ハッカーの非公式の定義である「技術的知識を持つコンピュータユーザ」が得意とするところです。前述のハッカーやセキュリティ研究者の定義とそれぞれの行動を結び付けて考えてみましょう。ハッカーであれば、脆弱性を悪用して攻撃すること、セキュリティ研究者であれば、それらの脆弱性を見つけて解決する方法を探すこと、ペネトレーションテスターであれば、テストで見つかった脆弱性を顧客に報告することが目標です。

それでは、具体的に何を調べることで目標を達成できるのでしょうか。

ユーザ名とパスワードが OS で保存される場所は、Windows、Mac、Linux のどの OS を使用しているのか、OS のどのバージョンが動作しているのかによって異なります。悪意のハッカーであれば、その情報を手に入れる方法を知りたいと考え、セキュリティ研究者の場合であれば、それらの情報収集の活動から保護する方法を知りたいと考えます。

ローカルホストやインターネットのネットワーク接続を可能にする、ネットワークの動作を処理するサービス/デーモンについても同様で、悪意のハッカーであれば脆弱性を悪用する方法を、セキュリティ研究者であればそれらの処理を強化する方法を探します。

ユーザファイルとシステムファイルではどのような違いがあるのでしょうか。標的は、使用しているシステムの admin / root アクセス権限を持つユーザなのでしょうか。

このような特権昇格の攻撃を防ぐには、これらの対策をどのように強化すれば良いのでしょうか。OS から警告や通知がポップアップ表示されるのを防ぎ、さらなる侵入を可能にするための行動を要求できるようにするにはどうすれば良いのでしょうか。その方法の 1 つとして、ネットワークトラフィックのキャプチャがあります。ネットワークカードにアクセスしてネットワークトラフィックを「無差別に」待機するには、管理アクセス権限が必要です。当然ながら、ハッカーにとってこの警告はコンピュータ上のユーザに何かが通知されたことを示す警告であり、セキュリティ研究者にとってこのメッセージは歓迎されるものであり、本物であるそのような警告を確実に抑制する方法を知りたいと考えるはずです。

これらはいずれも解決する価値のある疑問ではありますが、これらの情報の格納方法には極めて多くの要素が関係することを考えれば、すべてを解明するのは容易なことではなく、おそらくは、コンピュータエンジニアの素養が必要でしょう。ただし、Google を利用するという手もあります。

標的となるソフトウェアに関する何らかの情報を収集した後に、得られた情報を結び付けるには、標的にする OS に合わせたさらなる調査を実施します。ハッカーやペネトレーションテスターであれば、構築方法を詳しく調査し、セキュリティ研究者であれば、強化すべき点を調査することになるでしょう。

アクセス権の取得

少なくとも私にとっては最も難しい部分である、その段階まで進んだら、方法論的アプローチを使ってさらなる調査を進めることができるでしょう。次の「アクセス権の取得」の段階では、ハッカーやペネトレーションテスターであれば、正規を装ったメールを(フィッシング、スピアフィッシング、ソーシャルエンジニアリングの手段として)作成して、標的が餌にかかるのを待つことになります。そして、この電子メールには、不正ドメインへのリンクが含まれていたり、マルウェアが隠された、Word 文書に見せかけたファイルが添付されていたりします。この作戦が上手くいった場合にホストへのアクセスを維持し、ネットワーク上のホストに侵入した状態を持続するには、標的の OS に合わせたバックドアを作成します。ただし、Linux で上手くいく方法が Windows でも成功するとは限らず、その逆も同様です。研究者の場合は、これらの調査をどのような方法で進めることになるのでしょうか。

痕跡の消去

最後の段階は「痕跡の消去」です。捕まることを願うハッカーやペネトレーションテスターはどこにもいません。そこで、この段階で気を付けなければならない点がいくつかあります。ハッキングしたシステムではログ情報がどのように収集され、どこに保存されているのでしょうか。ネットワークにどのように侵入し、VPN やプロキシを使用したのでしょうか。つまり、「セキュリティ研究者に発見されてしまう恐れのある何らかの痕跡がないか」考える必要があります。研究者の場合は、システムログが削除される恐れの少ない方法を見つけたいと考えます。

以上の説明は、結論として、悪意ある行動としてのハッキングを支持するためのものでも、ブラックハットになるよう勧めるためのものでもありません。しかしながら、我々の敵と同じように考えることなく、黙って相手の攻撃を待って、問題が発生してから対処するだけでよいのでしょうか。あるいは、このサイバー戦争に積極的に戦いを挑むべきなのでしょうか。どの立場であるかにかかわらず、戦いを優位に進めるには、より有効な戦術を知らなければなりません。ペネトレーションテスターやセキュリティ研究者は、セキュリティの強化につながるコンピュータシステムとその仕組みの開発において大きな役割を果たしますが、そのためには、実際にシステムを能動的にハッキングし、その方法を研究する必要があります。ホワイトハットはブラックハットとは異なり、発見した脆弱性を抱え込むのではなく、適切な方法で公開してセキュリティギャップを解消しようと努力します。この違いを前提としたとき、果たして皆さんはどちらになりたいと思われるでしょうか。

参考資料

Greycampus.com の寄稿者による投稿、
「Phases of Hacking(ハッキングの段階)」、
出展:https://www.greycampus.com/opencampus/ethical-hacking/phases-of-hacking