ハッキング

ハッキングについて語ろう

今日はみんな大好きハッキングの話にしようと思います。 

ハッカーとクラッカー

まず前提ですが、「ハッカー」とは「システムを自分の考えで便利にする技術ある人」のような意味で、良い意味も悪い意味も無く、よく漫画に登場するような悪意があるのは「クラッカー」と呼びます。
例えば有償のパッケージソフトのセキュリティを破壊して不正コピーを売るような人はクラッカーにあたります。
現在はそれもハッカーのイメージがついているので、ここではまとめてハッカーと呼ぶようにします。
ハッカーというと「すごい技術を持った個人が企業のサーバに侵入する」というようなイメージが強かったかと思いますが、現在はミドルウェアの脆弱性を突くようなソフトも出回っているので、結果的にそれを使えるだけのフリーソフト使いのハッカーなどもいます。こういう人を「スクリプトキディ」と呼びます。どちらかというと蔑称ですが、一応ハッカーに分類されます。彼らは有名企業のサーバに侵入すると、闇サイト(IPアドレスの特定できないWebサイト)に投稿して自慢しあったりしています。 

この闇サイトを紹介すると多分スゲエ怒られるので、割愛します。

ルートキット

侵入者がシステムへ不正侵入した後に、痕跡を隠蔽したり再び侵入するためのバックドアを設置するための機能をまとめたソフトウェア群です。ルートキットにはキーロガー、パスワード窃盗ツール、クレジットカードやオンラインバンキングの情報を盗むモジュール、DDoS攻撃用のボット、セキュリティソフトウェアを無効にする機能など、多数の悪意あるツールが含まれているのだそうですよ。

ハッカーの戦いというのは、あらかじめ用意したツール群を起動したり、それにリアクションしたプログラムが動作することなので、テレビで見るみたいに四ツ目同士がキーボードでカチャカチャやってリアルタイムに戦う場面はあんまり無いのではと思います。

大雑把に分類すると、ハッカーにとってウィルスには以下の目的があります。

  1. 金銭目的

    そのまんまです。コンピュータをロックして身代金などを取ったり、架空請求をします。

  2. ハクティビズム

    ハックとアクティビズムの造語。なんか政治的社会的なアクティビティをサイバー攻撃を通して行う事です

  3. サイバーテロリズム

    インターネット上でテロリズムを行うことです。

ファイヤーウォール

さてハッキングの話をするには、前提にファイヤーウォールの話が必要になります。これは日本語に直訳すれば「防火壁」の意味になります。
自社サーバと外界のインターネットを分けて考えて、パケットフィルタリングやステートフルパケットインスペクション、アプリケーションゲートウェイなどのアクセス制御を利用して、悪意のあるパケットは遮断し、LANからインターネットへのアクセスは通信は許可します。そのほかインターネット側からLAN内のホストを隠したりします。
ファイヤーウォールの誕生は1990年代の初頭で、当初はインターネットとLANの間に設置されるゲートウェイに搭載する専用ソフトでした。常時接続、ブロードバンドが常識になると、特別なソフトウェアではなくなり、個人向けOSにもファイヤーウォールが標準搭載されるようになりました。

ファイヤーウォールは万能ではない

ファイヤーウォールの機能はIPアドレスやプロトコルを条件にパケットを許可したり、遮断する事なので、ブラウジングやメールの送受信など一般的に使う通信は防ぎません。Webアプリケーションに対する攻撃や、大量無駄データを送る攻撃も防ぐのは難しいことになります。さらに多くの場合でウィルスにも対処できません。

Secure通信

これら不正アクセスは、サイト運営者がSSLを導入する事で多少防御策を講じることができます。例えばショッピングサイトの画面で「このページはSSL通信で保護されています」というような表示を見たことがありますでしょうか。SSL(Secure Sockets Layer)はサーバ側に電子証明書を発行し、通信する相手の認証とデータの暗号化することができます。
SSLで保護されたサイトは比較的安全ですが、暗号化の処理に負荷がかかりレスポンスが遅くなることや、電子証明書の取得にも年間2万円くらい費用がかかるので、全てのサイトに導入されているわけではありません。ちなみに2017年ごろからiOSアプリはSSL必須になっています。 

コンピュータウィルス

ここから、いわいるコンピュータウィルスの話になります。コンピュータウィルスという言葉を定義するなら「悪意のある振る舞いし、自分のコピーをばらまくプログラム」となります。定義的には、次の3つの機能のうち1つ以上を持ったプログラムをウィルスと呼びます。

  1. 自己伝染機能
  2. 潜伏機能
  3. 発病機能

これらの機能のあるプログラムをmalicious software略してマルウェアと呼びます。
その昔は、他プログラムに隠れて活動するものを「ウィルス」単体で他のコンピュータに侵入するプログラムを「ワーム型」、普通のプログラムと見せかけて内部にウィルスが潜んでいるのを「トロイの木馬型」と分類していたのですが、最近はすべて「ウィルス」と呼ぶかと思います。 ウィルスという言葉が一般的になったのは1980年代後半ごろで、アニメ「機動警察パトレイバーに登場したトロイの木馬型ウィルスを混入させたOS「HOS」で認知度が上がりましたよね。
1990年代後半ごろからネットの普及で、インターネットから侵入するウィルスが増えました。
ウィルスの種類で多くを占めているのが「スパイウェア」や「ボット」です。スパイウェアはPCに侵入して機密情報を持ち出したりします。これに対しボットはハッカーのプログラムによって動くリモートプログラムで、企業などのコンピュータに侵入し、他サイトへのDDoS攻撃やスパムメールの送信などの動作をします。

ウィルス以外の不正アクセス

盗聴」「なりすまし」「改竄」などがあります。
盗聴には正規のユーザーがタイプしたキーを記録する「キーロガー」などがあります。見たことあるかも知れませんが、UFJやアマゾンなど実在するメジャーサイトの偽物を作ってログインさせるのが「なりすまし」、FTP通信に侵入してWebサイトのコードを書き換えるのが「改竄」です。

Webサーバに対する攻撃

では、いよいよサーバに対する攻撃を見てみましょう。

バッファオーバーフロー攻撃

コンピューターがプログラムを実行する場合、3つのメモリ領域というのを使います。

  1. コード領域 実際にプログラムが動く領域

  2. スタック領域  ローカル変数やメソッドの情報がある領域

  3. ヒープ領域

    計算や操作のためのデータがある領域

 

このスタック領域とヒープ領域を合わせてバッファと言うのですが、メモリ内に確保してあるバッファのサイズを超えたデータを入れることで、プログラムの誤作動を起こさせる攻撃です。

後述のDDoSと違うのは、ただの無駄データではなくコードが含まれ、脆弱性を悪用して誤作動したコンピューターの乗っ取りなどを行う事をバッファーオーバーフロー攻撃と呼びます。乗っ取ったサーバを踏み台にして、別のコンピューターを攻撃することもあります。

バッファオーバーフロー攻撃は、攻撃する領域により3つの種類があります。

  1. スタック領域型

    データ領域とリターンアドレスが記載されている部分に対してオーバーフローを起こさせ、リターンアドレスを書き換える。

  2. ヒープ領域型

    未使用領域の管理に双方向リストが使われていることを悪用し、関数のリターンアドレス、例外ハンドラアドレス等を書き換える。

  3.  
  4. その他

    UNIX系統環境下で、rootのSUIDコマンドを悪用し、管理者権限を奪う。

 

バッファオーバーフローは、メモリ領域に本来想定している情報量以上の値が入力された場合、リターンアドレスなどの致命的な部分を上書きしてしまうという脆弱性を突いています。
それを悪用されると、他のサイバー攻撃の踏台にする侵入者が攻撃データに入れたコードで他のWEBサイトやサーバに対するサイバー攻撃を行う、なとの害を受けます。

乗っ取り

上で出てきた乗っ取りの話です。
管理者権限で動作しているプログラム侵入し、権限を奪取するのを乗っ取りと言います。 もしサーバ内に個人情報やクレジットカード情報があれば流失してしまいますので、重大な問題になります。

 

ディレクトリトラバーサル攻撃

 

次はディレクトリトラバーサルです。 本来、サイト管理者がブラウザに表示させたくないファイルやディレクトリのパスを掘り当てる不正アクセスです。
 WebサーバにはPCのようにフォルダによる階層構造があり、プログラムやブラウザはパスと呼ばれる位置の指定で通信したり画像を取ってくる動作を行います。
ここでパス指定を利用して、本来であればアクセス権のないディレクトリを参照し、ファイルを不正に閲覧するのをこう呼びます。
ディレクトリトラバーサルによってIDやパスワードを含むファイルや、あるいは本来公開しない予定の情報か流出しますし、場合によってはシステムや他サービスのアカウントを乗っ取られてしまう可能性があります。 例えば芸能だったら公開前情報が見られてしまいます。

サーバ攻撃でない不正アクセス

サーバを攻撃するわけではなく、パスワードをどうにかして入手する不正アクセスをパスワードクラックと呼びます。

方法はいくつかあります。

ブルートフォース攻撃

パスワードの文字数、文字種で設定される可能性のあるすべての組合せを試行して不正ログインする方法で「総当たり攻撃」などと呼ばれます。パスワードが短かかったり、使用可能な文字種が少ない場合に手法によって破られる可能性が高くなってしまいます。
現在、オンライン上での攻撃では数回の試行でロックアウトになってしまうことが多いですが、オフラインではいまだ使われるようです。

リバースブルートフォース攻撃

ブルートフォースとは逆に、パスワード1つにユーザーIDを総当りで試していくことで不正ログインを試行します。
昔のように数字4文字など少ないシステムに対しては、通常のブルートフォースよりも効率的に認証を突破できます。
パスワードを間違えるとロックアウトするシステムでも、ユーザーIDを変えていくとロックされにくいのを突いています。

辞書攻撃

総当たりに似ていますが、パスワードとして使用されやすい単語の辞書を作成してログインを試みる方法です。
人間は無規則な文字列よりも意味のある言葉をキーワードにするのを好むし覚えやすいという心理を突いています。

パスワードリスト攻撃

別のサイトから入手したIDパスワードを他サービスで試みる方法です。
うっかり、海外のいかがわしいサイトにアカウント登録すると、銀行やSNSなど他サイトでログインを試みられてしまう可能性があります。 複数のサイトで同様のID・パスワードの組合せを使用している利用者が多いことから発生しました。

この記事は僕が何か思い出したり調べたりしたら随時更新します。

梅木千世でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です