第六話 防御と攻撃
学校からの依頼を受けてから1週間が経過した。
結局、毎日パソコン実習室でいろいろ教えている。
やっと、俺が目標としていた、2時間でのサービス起動が出来るようになってきた。
変則的な設定の場合には、考えて手が止まってしまったり、手間取ったり、躊躇したりしてしまう。しかし、CentOSを試しにDVDから標準的な構成を、手順に従って設定とセットアップをしてもらった時間と、同程度の時間でサービスが起動できる。
時間短縮の方法は至って簡単だ。
最小構成でOSをセットアップする。そのときに、SSHのポート番号を変えて起動する。あとは、Windows から接続して各種設定を行う。効率よく分けてセットアップを行えば、2時間でのサービス起動が成功する。待ち時間が発生しないように動けば、それだけ時間が短縮出来る。Windowsも、最初のOSセットアップ中に設定を終わらせれば作業が行える。
皆の戸惑いは大きいが、1週間で形になったのは嬉しい。
来週からは防御と攻撃を行ってもらう。
まずは、1週間は防御を中心に作業をしてもらう。
一通りの手順で皆が作業を行ってからは、質問タイムとしている。くだらない質問にも答えるようにしている。
「篠崎先輩」
「なに?」
「作戦はどうするのですか?」
「まずは、どういう行為が攻撃になるのかを把握しないと駄目だと考えている」
「行為?」
「極端な話、”F5アタック”も攻撃でしょ?」
「えぇ」
「今回のレギュレーションでは、データを盗み出す必要はない。勝利条件でもないから、必須ではない」
「そうですね」
「勝つためには、誰よりも早く、相手よりも堅牢なサーバを構築する。サービスがどんな
「え?それは・・・」
「サーバの負荷はわからないけど、サーバが攻撃を受けるタイミングで、データの送信やサービスが停止しないようにするには、負荷を軽減しておく必要がある」
「はい。それで、サーバのセットアップを行っていたのですか?」
「ん?それもあるが、レギュレーションは読んだ?」
「はい。読みました」
「ネットワーク帯はどうなっている?」
「え?」
「単一のネットワークで構築されているよね?」
「・・・」
「各チームに割り当てられるIPアドレスは決まっている」
「はい。本部から、そこにアクセスが来るので、当然ですよね?」
「うん。当然だね。ルータを使わなくても、接続は可能だ」
「え?あっ」
「そう。ルータを止めてしまってもいいし、直接繋がっているのなら、サーバに連続攻撃を仕掛ければいい。サーバに使う以外のIPはDHCPで付与されるようだからね」
「・・・」
「自分たちが作ったサーバへの攻撃を行って、攻撃方法や利点や欠点を学んで、来週はサーバを落とす方法やスクリプトの準備をしよう」
「わかりました」
「状況を把握する為のツールとかも用意しないとね。自分で作ったスクリプトは持っていっても問題は無いようだから、準備して持っていけばいい」
別の所からも質問が飛んでくる。
「こちらの素性がバレたりしませんか?」
「バレてもいいと思っているけどね。コマンドラインに慣れてもらっているのは、USBに入れて持っていく物の中に、バーチャル環境の為のイメージを持っていこうと思っている」
「え?」
「ノートパソコンのOSが、Windows 10 Pro なのは知っているよね?」
「はい」
「ノートパソコンだと、OSのセットアップイメージが中に入っているよね?」
「そうですね。通常なら、そうなっています」
「Windows の機能を追加するで、Hyper-Vを使えるようにして、イメージをセットアップすれば、攻撃手段が楽に手に入る」
「え?あっそうですね。Hyper-Vで作ったイメージを持っていけばいいだけですからね」
「そう、USBを圧迫しないように、4チームで別々に持っていって、ファイルを交換してもいい。攻撃専用のチームにFTPでも立ち上げさせて、そこで共有してもいい」
「・・・」
「そうしたら、ノートパソコンのリソースの許す限り、バーチャル環境を立ち上げて、スクリプトを流し続ければいい。定期的に、MACアドレスを変更して、DHCPから新しいIPを取得すればごまかしは出来る」
皆が呆れた顔で俺を見るが、このくらいならレギュレーションに違反じゃなければ普通に考えるだろう?
攻撃と防御の両方を行うのなら、防御に重点を置く必要がある。それなら、攻撃はスクリプトを開発しておくのがベターだろう。
相手の数がわからないけど、ハッキングしてデータを盗み出すよりは、相手にサーバの運用をさせない方法を考えたほうが楽で確実だ。
リソースを攻撃で食いつぶせばいいだけだ。
攻撃の趣旨を説明して、攻撃の方法を考える。
皆が防御よりも、攻撃主体で考えていたようだ。
元パソコン倶楽部の女子が主導して、攻撃の方法を考えていく、どうしてもハッキングが主体になってしまっている。
そんな方法では、簡単に防げてしまう。
脆弱性を突く攻撃は、サービスの限定とプログラムの問題を解決しておけば大丈夫だろう。運営委員会が何かしらの仕込みをしていない限りは大丈夫だと思いたい。特に、SQLインジェクションやクロスサイトスクリプティングは考えないでいいだろう。ディレクトリトラバーサルもどうだろう。無視は出来ないが、設定をしっかりしておけば大丈夫だろう・・・。だといいな。
不正アクセスの方が問題になりそうだ。パスワードリスト攻撃は、簡単にできるだろう。俺もやろうとは思っている。同じようにブルートフォース攻撃も考慮しよう。パスワード強度をあげるのは当然として、外部からの決められたアクセス以外を全部排除する方法で対応しよう。
問題は、DDoS攻撃だな。
元パソコン倶楽部の女子は、教えられていないようだ。攻撃としては、よくある方法なので対策が簡単だと思っているようだ。北山が言うには、『DDoS攻撃はデータが盗まれるような攻撃ではないから驚異ではない』と教えられたようだ。サービス停止の方が怖いのに、アイツは派手にデータを盗んで自分の優秀さをアピールしたいようだ。そうだ、当日ユウキを連れて行こう!最高の嫌がらせになるかもしれない。
攻撃の手順を確認しながら、防御の手順を確認していく。
やはり、DDoS攻撃がいやらしい感じだ。サービスの停止までには至らないが、数が増えてきたらわからない。
いくつかのスクリプトとプログラムを作ろう。
ネットワーク資源消費型は、大量にトラフィックを送りつける形になるから、それほど難しいプログラムではない。Cで作ってソースを持っていって、現地でコンパイルをすればいいかな。UDPに対する攻撃やPingフラッド攻撃も付け足しておこう。空いているポートに連続で接続を繰り返すような、スロー攻撃も同じだな。TCPセッションを長時間保持するようにすれば、それだけ資源が少なくなっていくだろう。サービスが立ち上がっているポートには、リフレクション攻撃を行えるようにしよう。送信元のIPを偽装して、パケットを大量に送りつければ、サービスが停止するだろうし、ディクショナリアタックと組み合わせたら、リソースが足りなくなりそうだな。
ネットワーク走査も必要だな。攻撃の端末を攻撃するのも常套手段だろう。ルータに全部をぶら下げるような設定はしないだろうから、攻撃用の端末は直接繋がっていると考えたほうがいいだろうからな。
俺たちは、提供されるルータは攻撃にしか使わない。公開サーバは、もう一台のデスクトップパソコンをルータに設定して使う。
ルータの外側では本部からの接続以外を弾くようにしておけばいい。SSHも、設定が終了したら、コンソール以外からのログインを拒否するように設定する。
ポートも必要な物しかオープンしない。
これらの説明と攻撃と防御の手順確認が一通り終わった。
来週からは、スクリプトの開発と
そろそろ、持っていくソフトウェアの選別とUSBサイズへのコピー方法を考えなければならない。