晴耕雨読

working in the fields on fine days and reading books on rainy days

K-SEC 2018 in 小山高専

「2018 K-SEC セキュリティ合宿 in 小山」に参加したので、実習内容について書いていきます。 スケジュールは次の通りに行われました。

  • 9/4(火)
    • 9:50-12:00「Webアプリケーションの脆弱性を考えてみよう!」木更津
    • 13:00-16:50「ネットワーク実習で学ぶサイバー攻撃の手法とそのセキュリティ対策技術」小山
  • 9/5(水)
    • 8:50-15:00「デジタルフォレンジック実習」警察


当日までの準備

K-SEC に参加希望する人はメールください、というのが学校のメーリングリストで連絡されるので、すぐに興味がある旨を返信します。すぐに返信しないと定員オーバーになったときに、学校内の参加希望順に優先度が割り与えられ、遅く返信した人は抽選落ちになります(実際に K-SEC in 岐阜高専で抽選落ちした経験より)。

うちの高専からはI先生が引率してくれるとのことで、宿泊施設の予約とかバスの時間とか調べてくれて助かりました。自分で用意したのは、長野小山間の新幹線を学割で買うということだけでした。

移動費と宿泊代は高専機構から支払われるので、お金の心配はほとんどないです。 自費の分は小山駅と小山高専間のバス¥200 x 4 と昼食代¥500 x 2(現地で集金)と晩飯代になります。


Day 1

(1) Webアプリケーションの脆弱性を考えてみよう!

CTFやったことあるなら既知ですが、下の内容ができる環境を講師の木更津高専の先生が作ってくれたので、XAMPPを使ってlocalでサーバを立ち上げて攻撃してみよう、ということをやりました。

  • SQLインジェクション
  • ディレクトリトラバーサル
  • クロスサイトスクリプティング(XSS)

前半の1時間で XAMPP のインストールと各種設定(Apache, MariaDB など)を行い、後半の1時間で攻撃方法を考えて実行するということをやりました。

個人的につまづいたのは、ディレクトリトラバーサルするときに ../../password.txt みたいな感じでやってうまくいかないな〜となっていたのですが、Windowsでは / の代わりに ¥ を使うことを失念していて、なるほどー、と思っていました。 普段Linux系を使っているのが仇になりました。

あとは CGI が perl だったので、open(FILE, "| 任意のコマンド") と書くと任意のコマンドが実行されることを利用して、Windowsのメモ帳を起動するということも実演されてました(具体的にどんな風に入力したかは隠していましたが勉強すればわかってしまう内容です)。

素晴らしいことに本も貰いました👏👏。1ヶ月くらい前に改訂版が出た「安全なwebアプリケーションの作り方 第2版」を頂きました。

上の写真はホテルにチェックインしてから撮影したやつです。時間いっぱいあったのでホテルで読んでました。


(2) ネットワーク実習で学ぶサイバー攻撃の手法とそのセキュリティ対策技術

内容はサイバー攻撃の手法を座学 + 実習で体験してもらうという感じです。 講師は小山高専の先生で、2018 K-SEC in 岐阜 でも講師をして、その時は座学だけだったのを実習込みにしたと言っていました。 座学の方は旧セキュリティスペシャリスト試験の内容に沿った形だったので、それなりに理解できました。 話としては、〜 Flood 攻撃についてでしたが、実習として行ったのは、

  • HTTP GET Flood (HTTP GET を大量に送る攻撃。詐称不可)
  • ICMP Flood (ICMP を大量に送りつける攻撃。詐称可能)
  • SYN Flood (大量の SYN を送って ACK しないことでサーバのコネクションを消費させる攻撃。詐称可能)

を受講者全員で行う DDoS 攻撃を行いました。 環境としては下図のような感じです。Rがルータ、L2SWはレイヤー2のスイッチを表しています。


    [VideoServer]----[R]----[WebServer]
                     / \
                    /   \
          [L2SW]---+     +---[L2SW]
            *                  *
           /|\                /|\
      [Raspberry pi]       [Windows]

VideoServer からストリーム配信されている動画を WebServer がサイトの中で表示している、というサービスがあります。このサービスに対して Windows から ssh でログインした Raspberry pi 端末およそ20台からサーバへ攻撃を仕掛けるという具合です。

  • HTTP GET Flood は単純にウェブサイト全体を wget するコマンドをスクリプトで何回も実行してそれを並列で行うという感じでしたが、サーバを落とすことは出来ませんでした。

  • ICMP Flood は ping コマンドで送信間隔を短くしてパケットのサイズを大きくする、という感じで行いました。 脆弱性がある古いOSだと ping のパケットサイズの最大値を超えても受理されてバッファオーバーフローが出来てしまうらしいですが、今はそういう問題はほとんどないという話もありました。

  • SYN Flood では hping コマンドを使いました。使い方は省略します。

3つの中で一番効果が高かったのは SYN Flood でした。 WebServer に攻撃したり、VideoServer に攻撃したりして無事(?) DoS 攻撃が成功したというところまでが前半です。 後半は主に座学で、DNS攻撃とかについての話がありました。負荷テストを行うためのツールとしては、次のようなものを使っているという話もありました。

  • Apache Bench (手軽なベンチマークツール. Apache HTTP Serverに同梱されている)
  • Apache JMeter (負荷テストとパフォーマンスを測定するためのオープンソースのJavaアプリ)
  • HAMMER IP (エンピレックスのVoIP・IVRネットワーク負荷・音声品質テストツール)

最後に小テストをやりました。内容はセキュリティスペシャリストの試験の過去問から持ってきたとのことだったので、過去問解いたことある人は楽だったと思います(と言いつつ15点満点で12点でしたが…)


Day 2

デジタルフォレンジック実習

関東管区警察局 情報通信部 情報技術解析課から6,7人くらい来て(数えていないのでわからない)、デジタルフォレンジックについて実習を行いました。 デジタルフォレンジックのフォレンジック(Forensic)とは「科学捜査の」という意味があるので、デジタルな分野で科学調査を行うことをデジタルフォレンジックといいます。 情報技術解析課ではサーバのログを調べたり、押収したHDDやUSBなどを解析するといったことを行っているようです。

CTFやったことある人ならいくつか知っていると思いますが、今回Windowsで使用したツール群を下に示します。

  • FTK Imager (イメージファイルの中身を見るツール)
  • PikaZip (zipファイルのパスワードを総当たり攻撃するツール)
  • Recuva (ファイル復元ツール)
  • Stirling (バイナリエディタ)
  • UNIXTIME CONVERTER (Unix時間を yy/mm/dd hh:mm:ss 形式に変換するツール)
  • USB Write Protect (USBへの書き込みを禁止するツール)

捜査においては証拠品を書き換えてはいけないので書き込みを禁止するためのツールが必要になるという話とか、 自分に都合の悪いことを隠すために破壊された記憶媒体を修理するときは鑑定という形で裁判所に申し出ないといけないみたいな話もありました(うろ覚え)。

実習の方はストーリー(寸劇あり)と共に進んでいき、Webサーバのアクセスログやプロキシサーバのログを調べたり、USBやイメージファイルを調査したり、といったことを行いました。grep使えない環境だったので若干苦痛でした。 イメージの中に not_read_mexe.txt というファイルがあって実行したら「感染しました」と表示されて、わー、となる小ネタもありました(RLO制御コード)。 ちなみに実習で使われたストーリがどんなのだったかは、この場で言うことはできません。

デジタルフォレンジックするときに注意するところを雑に列挙しておきます。

  • 投稿であればログに書かれているメソッドはPOSTになる
  • 日付で絞り込む時はサーバの時間が正しいか(遅れていないか)を確認する
  • ログには通信バイト数が表示される
    • Webサーバのログとプロキシサーバのログでバイト数が一致しているか
    • 画像が添付されていれば通信バイト数も増える
  • 十分な証拠が集まるまでは、このIPアドレスだと断言してはいけない
  • 証拠品を書き換えてはいけない

あとは、警察庁技官は警察官とは違うので、国家公務員試験の他に第1級陸上無線技術士の資格がある人も採用されるとのことで、僕(たち)がお話した方で、第1級陸上無線技術士で採用されたという方が結構いました。


まとめ

事前学習があれば & Linux環境だったら & インターネットが使える環境だったらもっと効率良くできたような気がしますが、自称セキュリティ初心者🔰は初心者なりに勉強できました。 個人的に印象的だったのは、hping コマンドで SYN Flood ができたあたりと、デジタルフォレンジック実習のストーリとか寸劇が面白かったというあたりです。

国は情報セキュリティの人材がN万人不足している、という認識なのでしばらくの間(少なくとも2020年までは)はセキュリティ人材育成事業に予算が出るらしいです(多分)。友達とかクラスメイトとかを誘ってこういうイベントに参加してもらいたい、みたいな話があったので興味のある高専生(本科・専攻科両方ともOK)は是非参加して欲しいと思っています。