Aim and flow of the Hacking

Date : 2005-03-10
Author : Defolos

CONTENTS

(1.) ハッキングの目的
(2.) 基本的な流れ
- 大まかな流れ
(3.) 流れの詳細
- Targetting
- Scan
- Direct attack
- User acount rob
- Local attack
- Remote attack
- Explor
- Log erace/Backdoor set up
- Logout

ハッキングの目的

 サーバハッキングの目的はrootを奪取することです。rootはUNIXで管理者権限のことをいい、ありとあらゆるコントロール権を与えられているアカウントです。この権限があれば一般ユーザのファイルを読んだり書いたり、実行したりできるので結果的にほしいファイルも手に入れることができます。
 しかし、もし目的のファイルが一般ユーザでも読み込み、書き込み可能であったなら、わざわざrootを奪取しなくても一般ユーザ権限を奪取できれば目的は達成されます。一般にrootは厳重な保護がかかっており、ユーザアカウントよりもハックが難しいとされています。


基本的な流れ

 流れの説明に入る前に一つ注意すべき点があります。よく映画などで試行されるハッキングはいわゆるサーバハッキングで、一般的にサーバにしかハッキングできません。サーバはサーバプログラムを動かしているコンピュータのことで、通常24時間年中無休で動き続けてます。つまり、ネットワークからの入力を受け付けるプログラムが起動していない一般ユーザーのPCには侵入できません。一般ユーザのPCに侵入したいときはサーバプログラムやネットワークへアクセスするプログラムを対象のPC上で動かさなくてはいけません(有名なトロイの木馬もサーバプログラムの一種)。

(※)root権限で動いており、なおかつバッファオーバーフローの危険性があるプログラムはサーバプログラムに限らずroot権限が奪取される恐れがあります。
 また、Windowsの場合でもサーバプログラム以外のプログラムであってもアドミニストレーター権限が奪取されたり、リモートからVCNをインストールされたり、Telnetサーバを仕掛けられたりする恐れはあります。

● 大まかな流れ

ターゲッティング
↓
スキャン----------------------------.
↓                 ↓
↓----------------.     ディレクトアタック
↓        ↓        ↓
リモートアタック 一般権限奪取←----↓
↓        ↓        ↓
↓        ローカルアタック ↓
↓        ↓        ↓
↓----------------'         ↓
↓                 ↓
root権限奪取←----------------------'
↓
探索
↓
ログ消し/バックドア設置
↓
切断

流れの詳細

● ターゲッティング(Targetting)

 どのサーバをハッキングの対象とするかを決定する過程です。一部スキャンと重複する部分もあります。また、スキャンの結果脆弱性を抱えているバージョンのサーバプログラムを稼動させているサーバを発見できたとしたら、それを元にターゲッティングする可能性もあります。

● スキャン(Scan)

 サーバについての情報を集める過程です。スキャンにも様々な種類があります。Pingによってネットワークで稼動しているサーバを検出するPingスイープ、対象サーバの稼動中のサービスを特定するポートスキャン、OSの特定、ユーザ/グループの列挙などが主です。スクリプトキディは持ってるハックツールで効果があるなしを無視してとりあえずアタックをかけます。慎重な人はスキャン/ターゲッティングにより十分な情報を集めてからアタックをしかけます。
 また、セキュリティ管理者の立場として考えると、あえてスキャンによって検知される脆弱性を残したフェイクサーバを用意することが重要になってきます。それによりスキャン時にアタッカーの気をフェイクに逸らすことができるからです。

● ディレクトアタック(Direct Attack)

 インターネットを介さず直接ターゲットのコンピュータにアクセスできることが条件です。直接コンピュータに接触し、セーフモードで再起動するなりして一般ユーザの権限を奪取します。詳細は他のテキストで解説することとします。

● 一般権限奪取(User acount rob)

 一般的にサーバはひとつのrootアカウントと、ひとつ以上の一般ユーザアカウントで成り立っています。この一般ユーザアカウントを奪取することを目的としています。
 rootアカウントは一般的にひとつしかなく、複雑なパスワードなどのセキュリティ対策がなされています。しかし、一般ユーザアカウントは複数あることもあり、中にはセキュリティ意識の弱いユーザも含まれています。セキュリティ意識の弱いユーザはjowアカウント(ユーザIDとパスがいっしょ)を設定している可能性もあり、これを検出することで一般権限を奪取できるかもしれません。
 Sniffer[スニッファー]や、Trojan[トロイの木馬]を利用する手も考えられます。管理者はツールなどを使ってjowアカウントを設定しているユーザを早急に検出し、アカウントを凍結させる処置が必要になってきます。また、一定日数でパスワードを変更させるシステムも有効です。

● ローカルアタック(Local attack)

 一般ユーザ権限からrootアカウントを奪取することを目的としています。Buffur Overflowsを利用したExploitを対象マシン上でコンパイルして実行するローカルバッファオーバフローなどでrootを奪う方法や、suコマンドからrootになるときのパスワードをパスワードクラッカーを用いて破る方法などが挙げられます。/etc/passwdが閲覧可能かも確かめておいて損は無いでしょう。
 Suniffer、Trojanも有効です。ローカルアタック、リモートアタック共に言える対策はセキュリティホール情報に絶えず目を光らせておくことが挙げられます。自分の管理しているサーバで稼動しているプログラムにセキュリティホールが発表された場合すぐに修正パッチを当てるようにしましょう。また、リモートアタックにおいては適切なパーミッションを設定しているか、不適切なコマンドを許可していないか、パスワードがshadow化されているかを確認しましょう。

● リモートアタック(Remote attack)

 インターネットやLANなどのネットワークを介したアタックです。一般的なサーバハッキングではリモートアタックからroot権限の奪取を狙います。サーバはroot権限で動いていることが多いため、その場合exploitingによってroot権限を得ることが可能です。サーバのOSやサーバプログラムのバージョン、種類からセキュリティホール(脆弱性)を検索します。脆弱性を抱えるプログラムが稼動している場合、そのセキュリティホールをつくセキュリティ情報やExploitなどを使って侵入します。
 サーバは基本的にクライアントからの入力を受け付けるため、この場合のExploitはアタッカー側のPCでコンパイルして引数を指定して実行することでセキュリティホールをつく攻撃を仕掛ける場合が多いです。ゆえに、UNIX/LinuxやWindowsなどでプログラムソースのコンパイルができる環境でなければなりません。また、オンラインでパスワードをクラックする方法も考えられます。

● 探索(Explor)

 自由にサーバ内のディレクトリやファイルを探検しましょう。おもしろい物が保管されているかもしれません。ヽ(´¬`)ノ

● ログ消し/バックドア設置(Log erace/Backdoor set up)

 侵入後の後始末にあたります。侵入した形跡はログファイルとしてサーバに記録されています。これを元にどこのISP(プロバイダ)を通して、いつ誰が侵入したかが分かってしまいます。ですのでログファイルの消去、改竄が必要になります。このログファイルが無ければ証拠不十分になり、逮捕される率も低くなります。逆に、セキュリティ管理者はログファイルを消去されないように気を使う必要があります。具体的には、ログをリアルタイムに違うメディア(CD/DVDやプリントアウト、外部記憶装置など)に記憶し、アタッカーが物理的に削除できないようにするのがよいでしょう。
 タイムスタンプ、タイムゾーン、システムクロックの改竄も済ませておきましょう。通常サーバはファイル作成時刻、最終アクセス時刻、ログイン時刻などの時間情報を記録しています。侵入された後の追跡にはこの時間軸とアクセスログの照会が重要になるため、追跡を遅らせることができます。
 バックドアの設置は、これまでの手順を簡略化するために設置する裏口のようなものです。バックドアを設置することで次回からは以上の手順を踏むことなく、簡単にrootになることができます。UNIXには多くのバックドアに利用できる要素があります。
 例えば... ユーザアカウント、シェル設定ファイル(.login .profile、/etc/profileなど)、GNU.emacs、.exrc、.forwardや.procmailrc、inetd.confやエイリアス関係(/usr/lib/aliases/etc/aliases、/etc/sendmail/aliases、aliases.dir、aliases.pag)、/at/crontab、システム初期化ファイル(/etc/rc*、/etc/initd/*、/etc/rc?dなど)、共有ライブラリなどが挙げられます。

● ログアウト(Logout)

 以上のことを終えてからログアウトします。もしログが消去、改竄できないと分かっているなら侵入はあきらめてください。証拠を消せないようではすぐに捕まってしまいますので、自分のコンピュータにアタックするようにしましょう。また、ログが消せない状況にあっても、ファイルやWEBサイトの改竄を行わなければ通告される可能性はまだ低くなるといってもよいでしょう。企業や学校にとってサーバ内部に侵入されたことが公になるのは好ましくありませんが、WEBサイトが改竄された場合、侵入されたことが公になってしまうので追跡も厳しくなる可能性が高いといえます。
 それに対し、管理者はフェイクを作ってアタッカーの気を逸らし、フェイクにハッキングをさせて物理的に消去できないログを取り、公にならない破壊活動であってもログからIPSを割り出して警告メールを送るようにしましょう。


■参考文献


go back to the TOP page of Glazheim Lykeion.