Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dendai is Secure?

1,514 views

Published on

TDU FENで話したLT(LongTalk)のスライド,自分が考えうる最悪な状態のサーバーを攻撃するというテーマのスライド

Published in: Technology
  • Did u try to use external powers for studying? Like ⇒ www.HelpWriting.net ⇐ ? They helped me a lot once.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Dendai is Secure?

  1. 1. Dendai is Secure? at “TDU FEN #4” - #TDUFEN Dendai is Secure? 〜実際にあった脆弱性から仮想的に再現したマシンを攻撃する〜 @nomuken - Nomuken
  2. 2. Dendai is Secure? at “TDU FEN #4” - #TDUFEN Agenda 1. 自己紹介 2. 今日話す事の前に 3. CTFを含めた話 4. ターゲットと予備知識 5. ぶっ潰す 6. 解説
  3. 3. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 1.自己紹介
  4. 4. Dendai is Secure? at “TDU FEN #4” - #TDUFEN _人人人人人人人_ > さっき見た <  ̄Y^Y^Y^Y^Y^Y ̄
  5. 5. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 自己紹介 ● Twitterは@nomuken ● 13なEのC(工学部,情報通信工学科) ● 宗派はArchLinuxとvim ● コンピュータ初心者 ● ご注文はうさぎですか?のために生きている ● CTFの運営をやりました(TDU CTF) ● あとEnlightenedです
  6. 6. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 2.今日話す事の前に
  7. 7. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 今日話す事の前に ● あまり表に出せない系の話かもしれないです →実際にあった脆弱性で,結構クリティカルでした ● 今日は実際に攻撃を行います →言わずともがな真似しないでください
  8. 8. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 今日話す事の前に ● 後でブログにも公開しますが一部非公開にするかもです ● 攻撃じゃなくて対策に目を向けてください →次の話につながりますが気にするべく場所は違います
  9. 9. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 今日話す事の前に ● 今日は最悪な場合の例です →なので現実では今日ほどうまくいきません →し,大部分は後付で作り話をしています
  10. 10. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 3.CTFに絡めた話
  11. 11. Dendai is Secure? at “TDU FEN #4” - #TDUFEN の前に「TDU CTF 2014 Satellite in ConoHa」の話 ● ご参加いただいた方ありがとうございます! ● 大盛況で81名のご参加いただきました ● 非常に大変でした ● まとめはこちらから → https://spica.bz/blog/?p=399
  12. 12. Dendai is Secure? at “TDU FEN #4” - #TDUFEN そもそもCTFって何?
  13. 13. Dendai is Secure? at “TDU FEN #4” - #TDUFEN CTFとは? ● Capture The Flag の略 ● セキュリティがメインの一種の競技 ● 侵入,解析,防衛等がメイン ● 特定のキーワードである"flag"を探す ● flagは侵入を行ったサーバー内,解析した結果から得られる ● 防衛は本戦でのみ(予選参加者分の鯖を立てるのは無理な話)
  14. 14. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ……つまり ハッキングを楽しむ競技(?)
  15. 15. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 対象となるジャンル(知識) ● 非常に多岐にわたっていて常人じゃ無理 リバースエンジニアリング,Forensics(解析),Pwnable(脆弱性攻撃), Web(XSSやSQLインジェクション),Network(パケット解析), Miscellaneous(その他) - Wikipediaより ● なので,基本的にチーム戦として行う
  16. 16. Dendai is Secure? at “TDU FEN #4” - #TDUFEN _人人人人人人_ > 使い回し <  ̄Y^Y^Y^Y^Y ̄
  17. 17. Dendai is Secure? at “TDU FEN #4” - #TDUFEN CTF ……は楽しいけど ● なんか最近雰囲気的に大丈夫なのかなぁと心配することが多い ● ツール使って俺つえぇぇと言うおじさん ● CTFじゃないサイトに攻撃するツールを使うおじさん ● CTFを解くことばかり考えて他のことを勉強しないおじさん
  18. 18. Dendai is Secure? at “TDU FEN #4” - #TDUFEN CTF ……は楽しいけど ● ちょっと待ってそれでいいの? →それで捕まる事象が出てしまうとCTF界隈が後ろ指刺される →セキュリティ界隈は後ろ指を刺されてしまうことが多い ● CTF……の前に →それ以前を勉強するべきでは? ……→基礎知識,プログラミング →CTFは応用,基本を勉強するべきでは?
  19. 19. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ではCTFを何につなげるべき? ● 自分の作るものにつなげるべき →CTFはある意味で脆弱性の例 →それを作らないように攻撃を知るべき ● それを周知しよう ……→友人を助ける意味でも
  20. 20. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 閑話休題
  21. 21. Dendai is Secure? at “TDU FEN #4” - #TDUFEN で,今回の目的 ● 「これくらいの脆弱性大丈夫だよね」を殺す ● 脆弱性はむっちゃ身近に存在することを伝えたい ● ……脆弱性の対策もできれば
  22. 22. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ともあれ ● 今日は身近な脆弱性をご紹介します
  23. 23. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 4.ターゲットと予備知識
  24. 24. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 本日のターゲット 見せられないよ ><
  25. 25. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 本日のターゲット ● よくあるウェブサイト ● ファイルのダウンロードページに脆弱性 ● 去年の終わりに報告,現在では修正済み
  26. 26. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ……本題に入る前に ● 攻撃者は何がしたい?
  27. 27. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 攻撃者の目的(Web関連において) ● サーバーを奪取する →自分の操作を増幅してくれるbotにしたい,bitcoinマイニング ……に使いたい ● 情報を奪いたい ……→クレジットカード番号,個人情報,パスワード ● 実力誇示 →これをする実力があると見せつける(過激派組織に多い?)
  28. 28. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ……目的のために ● こういった残った脆弱性を利用して達成することがある
  29. 29. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 今回攻撃するサーバに存在する脆弱性 ● ディレクトリトラバーサル ● 脆弱なパスワード ● ポート管理の不備 ● 設定ミス
  30. 30. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ディレクトリトラバーサル ● 本来公開されていないファイルを表示してしまう脆弱性 ● 例えば,「/var/www/html」以下しか公開していないのに 「/etc/passwd」が読めてしまう ● 親ディレクトリに遡る文字列で,ディレクトリを横断(トラ バーサル)してファイルにアクセスできてしまう脆弱性
  31. 31. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 脆弱なパスワード ● 簡単に想像できてしまう単純なパスワード →User.chino Password.chino ● 初期設定のままのパスワード →User.pi Password.raspberry ● 流失してしまったパスワード →PSNなど
  32. 32. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 【余談】パスワードを定期的に変更するべきか ● 専門家の皆様方でも意見が分かれる →定期的に変更することは漏れた後の対策 →定期的に変えると覚えられにくくなり簡単なパスワードへ (書ききれない考察が沢山あるが割愛) ● ……パスワードの定期変更より別の対策が必要 ? →複数回のミスでアカウントロック,2 ……段階認証 ● 徳丸さんの記事 http://blog.tokumaru.org/2013/08/2.html
  33. 33. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 【余談】パスワードを定期的に変更するべきか ● 本学では教職員のシステムは定期的な変更を強制(要出典) ● 2 ……段階認証をするにも既存のシステムを変更するのは ……→コスト的にそれは無理 では? ……→なれば,定期変更 ?うーん ● これだけで30分話せそう?
  34. 34. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ポート管理の不備 ● 人為的なミスによってポートが空いていた →設定項目の意味がつかめなかった →デバッグ環境のままだった →ファイアウォールの設定をミスった
  35. 35. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 設定ミス ● httpで,ディレクトリインデックスが見える →「Option Indexes」が設定されている ● sshで,rootログインができる →「PermitRootLogin yes」が設定されている
  36. 36. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ともあれ攻撃
  37. 37. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 5.ぶっ潰す
  38. 38. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 攻撃対象の仮想マシン ● お世話になっているConoHaに立てました →2C/1GBプラン,CentOS 7のLAMP環境 ● みなさんは何もしないでね! →アドレスは「tdufen.spica.bz」 ● あとこの仮想マシンは即削除します →お財布的な関係
  39. 39. Dendai is Secure? at “TDU FEN #4” - #TDUFEN やってやるデース
  40. 40. Dendai is Secure? at “TDU FEN #4” - #TDUFEN
  41. 41. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 攻撃のシナリオ 1. ディレクトリトラバーサルを発見 2. とりあえずポートスキャン 3. Linuxのユーザリストを取得 4. 攻撃対象の情報を入手する 5. データベースのパスワードが書いてそうなファイルを入手 6. データベースのユーザ名とLinuxのユーザ名が同じ 7. sshでPassword認証を受け付けているので接続 8. シェルを奪取 9. データベースのroot権を入手 10.bash_historyから他のサーバへの接続を入手
  42. 42. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ディレクトリトラバーサル ● 「../」という文字列は親ディレクトリに遡る →任意の個数続けて,「/」に達したらよくあるファイルのパス を入れる ● Linuxシステムなら「/etc/passwd」は絶対にあるはず →しかも,全ユーザから参照できないといけないので確実に読 める
  43. 43. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 脆弱なコード
  44. 44. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 注目するのはここ
  45. 45. Dendai is Secure? at “TDU FEN #4” - #TDUFEN readfile関数
  46. 46. Dendai is Secure? at “TDU FEN #4” - #TDUFEN readfile関数 ● filenameを指定するとそのファイルを出力する ● パスはそのファイルからの相対指定となる ● 今回攻撃で用いた絶対パス 「/var/www/html/album/../../../../../etc/passwd」
  47. 47. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ポートスキャン ● どのポートでどのサービスが待ち受けているのかを調べる ● 俺達のnmapの出番!! →nmap -O -F tdufen.spica.bz
  48. 48. Dendai is Secure? at “TDU FEN #4” - #TDUFEN /etc/passwdを奪う意味 ● 大抵は総当り攻撃に非常に役に立ちます ● sshは標準設定だと存在しないユーザでも認証を受け付けます →ので,存在しないユーザで総当りは無駄 ● どのユーザが有効なのかが分かれば,そのユーザで無限に認証 すればいつかは見つかるはず
  49. 49. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 【余談】総当り攻撃 ● ぶっちゃけ無理かもしれない →各VPS,クラウドサービスではそのようなリクエストがある と遮断するらしい(全てを試せない) ● 短いパスワードを強制しているサービスでは有効 →もちろん総当り対策されていないことが前提 ● 参考,8文字の大文字小文字の英字と数値によるパスワードの 総数 → 62^8 = 218340105584896
  50. 50. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 攻撃対象の情報 ● 攻撃対象から情報を得ることは極めて重要 →バージョンを知れることはとても有用 ● 今回はapacheのバージョンとディストリビューションの情報を 得ました.
  51. 51. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ディストリビューションを調べる ● 大体は「*release」というファイル名に記述されている →サーバでよく使われているのはCentOSと考え,今回は centos-releaseをチェック ● 「/etc/issue」を見るのも良い →ここにバージョンを書いてあるディストリビューションもあ る
  52. 52. Dendai is Secure? at “TDU FEN #4” - #TDUFEN データベースの情報を入手する ● せっかくなので今回はデータベースの情報も奪った ● データベース接続をしているところにパスワードが平で別ファ イルに書いてあることが多い ● データベースの接続を行うと思われるページのソースファイル を見る
  53. 53. Dendai is Secure? at “TDU FEN #4” - #TDUFEN データベースの情報を入手する ● 設定ファイルはphpでロードしなくてはいけないので,大抵は 読める権限が設定されている
  54. 54. Dendai is Secure? at “TDU FEN #4” - #TDUFEN データベースの情報をpasswdと照合する ● 管理を楽にするためユーザ名とパスワードをデータベース,シ ステムと合わせている場合がある
  55. 55. Dendai is Secure? at “TDU FEN #4” - #TDUFEN sshでのログインを試みる ● ポートスキャンの結果から22番でsshが待ち受けているのでそ こから認証を試みる ● 秘密鍵,公開鍵認証ではないのでパスワードによる認証が可能 →やろうと思えば総当りも可能?(設定による)
  56. 56. Dendai is Secure? at “TDU FEN #4” - #TDUFEN シェルを奪取 ● このサーバは完全に自分の物へ →自分の権限を確認するとsudoが使え権限昇格可能 ● ホームディレクトリや「.ssh」,「.bash_history」からユーザ の行動を調査
  57. 57. Dendai is Secure? at “TDU FEN #4” - #TDUFEN データベースのrootを入手 ● 作業用として保存された,パスワードが書いてそうなファイル を覗く ● データベースに関しても全権限を奪取 →個人情報を扱っていれば,データを抽出して売ることも可能
  58. 58. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 内部ネットワークに侵入 ● ユーザの行動から外部からだとアクセスできないサーバへのア クセスを行っている部分を発見 ● ……サーバを踏み台にもっと多くのサーバを自分の物へ
  59. 59. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 【ボーナスステージ】対策
  60. 60. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 脆弱性ってむっちゃ危ない ● 今までの通り1つの攻撃をきっかけにサーバを奪取出来てしま う可能性がある ……→(もちろんそうなるように環境を作ったのですが ) ● 開発者としては脆弱性を作らない開発をしていこう!
  61. 61. Dendai is Secure? at “TDU FEN #4” - #TDUFEN 脆弱性の対策 ● Webに関して言えばエスケープが重要なキーワード ● 危険な文字列を無毒化をし安全なWebアプリケーション開発 を! →"無毒化"は不適切 ……という言葉もありますが →その文字自体は毒ではないし,毒のように感じる開発者の設 ……計が悪いとも ?
  62. 62. Dendai is Secure? at “TDU FEN #4” - #TDUFEN エスケープ ● 例えば,「../」が今回は危険な文字列ですね …→ぶっちゃけ,このような作りをするべきではないのですが ● これを置換したり(不完全),そもそもfilepathをGETに入れな い設計したり,dir ……の設定を変えたり(強制したり)
  63. 63. Dendai is Secure? at “TDU FEN #4” - #TDUFEN ……もっと,書きたいけど ● 時間がない(本当に申し訳ない)
  64. 64. Dendai is Secure? at “TDU FEN #4” - #TDUFEN まとめ ● 脆弱性を軽く見たやつ滅んでしまえ ● 開発者の人は,脆弱性の少ないWebアプリ開発を! ……→そして作ってしまった場合は速やかに修正を

×