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.
Real Life Hacking
Hacking 101
1
2
アジェンダ
● 序論
● 情報収集
● 間接 アクセス
● 直接 アクセス
● システムのセキュリティ
● 設定エラー
● パスワードポリシー
● パッチ
● Web セキュリティ
3
ハッキングとは ?
開発者の予期せぬ方法でアプリケーションやシステム
にアクセスすることである。
4
攻撃手順
情報収集
● 攻撃対象のシステムの情報を取得
– 直接・間接 アクセス
– フィンガープリント
● 攻撃手法
● 脆弱性を発見する
● 攻撃をするツールの選定
● 攻撃の開始
● 被害の拡散
5
情報収集
情報収集
•
間接 アクセス
•
直接 アクセス
•
フィンガープリント
6
情報収集
● ハッキングの最初の段階は、情報収集を行うことある。
● 攻撃に使用できる情報をピックアップ
– 誕生日、電話番号、勤務先、電話番号、メールアドレ
ス
● 攻撃対象のサーバへ侵入するための情報を探す(例:
ルータ、ゲートウェイ)...
7
間接 アクセス
● « Whois » DB
● 登録処理の際に用いられた管理者情報など、すべて
の情報にアクセスを行う
● 名前 , 住所 , 電話番号
– ネットワークの情報
● DNS サーバ
● ソーシャル・エンジニアリングをするた...
8
WHOIS  (ツール)
● « whois » のツール
● whois ドメイン名 か whois IP アドレス
Domain Information: [ ドメイン情報 ]
[Domain Name] COOKBIZ.JP
[ 登録...
9
直接 アクセス
● セキュリティホールを探す方法
● ポートスキャン
– 開いているポートの発見
– いくつかのアクセス方法
● フィンガープリント
– サービスに使用しているツール名 (apache など )
– サービスツールのバージョ...
10
Nmap scanning
● Nmap で表示されるフィンガープリント
● Nmap -A IP ( コマンド )
11
その他の方法
● SNMP (ネットワーク監視用のプロトコ
ル)
● SNMP 通信の発見
– 対象マシンの情報を取得
● Netbios
● Windows 用の通信プロトコル
– ゲスト・ nobody アカウントが有効になる場合があ...
12
ソーシャル・エンジニアリング
● 機密情報を公開させる技術
● なりすまし電話をかける
● 電話を受け取った人は、危険性を認識できていない
ことが多い .e.g 電話で windows を使っていると伝え
てしまうが、それが危険だとは気づ...
13
System vulnerabilities ( セキュリティ・ホール )
•
設定ミス
•
パスワード
•
パッチ
14
セキュリティ・ホールとは
– 設定ミス
– デフォルト設定が残ったままの状態
– 権限の低いタスクを実行するために、管理者権限を使用し
ている
● 悪いパスワード例
– デフォルト パスワード
– 弱いパスワード eg abc, 123 ...
15
設定ミス
● 開発用設定が、本番用成果物でも使われて
いる
● 機器
– アクセス制限の無い SNMP 通信
– 初回から設定されているパスワード
● アプリケーション
– デフォルトパスワード
– デバッグモードが有効のまま
– アプリ...
16
パスワード
● セキュリティシステムの大半は、パスワードがシンプルになるほど弱くなる
●
システムが簡単なパスワードを受け入れる作りになっていれば , 簡単なパス
ワードを入力してしまいがちになってしまう .e.g) システムがパスワード...
17
パスワード攻撃
● 暗号化パスワードを平文に変換
● Online
– Medusa (ツール名)
– Hydra (ツール名)
– ブルートフォース
● Offline
– John The Ripper (ツール名)
– Cain (...
18
デモ 1
● 対象 : http://192.168.1.3
● 目的
● ログイン後の画面へのアクセス権を得る
● Medusa と 辞書 の組み合わせの実践
19
パッチ
● アップデートサービス
● 会社にセキュリティルールが必要である
● 最新版のパッチはすべてのマシンに適応さ
れているべきである
● 脆弱なマシンが一つでもあれば、社内ネットワーク
全体の侵入口となりえてしまう
● 脆弱なマシン...
20
問題
● 脆弱性情報は公開されていることが多い
● 誰でもアクセスすることができる
● 脆弱性情報を使って、アクセス先の情報を取得する
自動スクリプトが使える
● ゼロデイ攻撃
● 脆弱性の利用
● 脆弱性を通してセキュリティホールを見つ...
21
デモ 2
● 対象 : 192.168.1.4
– 目的
– Discover information about the target
– Compromise entirely the target
– Windows 2003 Se...
22
アプリケーションの脆弱性
• Cross-Site Scripting
• SQL Injection
23
アプリケーションの脆弱性
● 対象となるアプリケーションの特徴
● システム管理者の管理不足
● 開発時の不具合、セキュリティテスト不足
● ハッカーがアプリケーションの動作を変更
できる
● 開発者の予期せぬアプリケーションの使用方法を...
24
パラメータ
● アプリケーションメソッド :
● GET : URL にパラメータを付加
– search.php?query=toto
● POST : メッセージの body にパラメータを付加
– Usually for forms...
25
XSS
● ブラウザ上で任意の JavaScript コードが実
行される
● ユーザの入力に応じて、クライアントサイドのソー
スコードが実行される際に問題が発生する
● ハッカーが web ページ内に HTML/Javascript を...
26
デモ 3
● 対象 : http://192.168.1.2/7/
– 目的
– Display Cookbiz in a popup message
<form action="index.php?p=search" method="G...
27
XSS - 例
● 脆弱なソースコード
● 正常動作 異常動作
28
SQL インジェクション
● SQL クエリ
● SELECT 文  :
– SELECT column_name FROM table WHERE condition
● 例
– SELECT contenu FROM news WHE...
29
SQL Injection examples
● 正常動作  :
● http://site/news.php?id=1
– SELECT * FROM news WHERE id = 1
– id=1 のデータだけが取得される
● 異常...
30
デモ 4
● 対象 : http://192.168.1.2/11/
● 目的
● 管理者権限のエリアにアクセス
require_once("config.php");
mysql_connect($dbhost,$dblogin,$db...
31
SQL Injection example
● 脆弱なソースコード
● 正常動作 異常動作
32
ハッカーの目的
● 権限プロセスのハイジャック
● データベースの検索
● 機密情報の取得
– ユーザ、アドミンのパスワードなど
– 個人情報
● DB を通してシステムの操作
● ファイルの読み取り
● ファイルの書き込み
● コマンド...
33
MSSQL Server
● MSSQL サーバでは、 DB から xp_cmdshell
を使ってコマンドを実行できる
● MSSQL サーバは管理者権限で動いていることが多
いので、コマンドが実行されやすい
● DB を通してシステム...
34
デモ 5
● 対象 : http://192.168.1.2/12/
● 目的
● 管理者のログインパスワード取得
require_once("config.php");
mysql_connect($dbhost,$dblogin,$d...
35
便利な Hacking のツール
Web Scanner :
● Nikto
● SkipFish
● W3af
● OWASP WebScarab
XSS Scanner :
● Xsser
● BurpSuite
● OWASP ZA...
36
質疑応答
•
質問がありますか ?
Upcoming SlideShare
Loading in …5
×

ウェブセキュリティ

394 views

Published on

Web Security presentation in Japanese

Published in: Software
  • Be the first to comment

ウェブセキュリティ

  1. 1. Real Life Hacking Hacking 101 1
  2. 2. 2 アジェンダ ● 序論 ● 情報収集 ● 間接 アクセス ● 直接 アクセス ● システムのセキュリティ ● 設定エラー ● パスワードポリシー ● パッチ ● Web セキュリティ
  3. 3. 3 ハッキングとは ? 開発者の予期せぬ方法でアプリケーションやシステム にアクセスすることである。
  4. 4. 4 攻撃手順 情報収集 ● 攻撃対象のシステムの情報を取得 – 直接・間接 アクセス – フィンガープリント ● 攻撃手法 ● 脆弱性を発見する ● 攻撃をするツールの選定 ● 攻撃の開始 ● 被害の拡散
  5. 5. 5 情報収集 情報収集 • 間接 アクセス • 直接 アクセス • フィンガープリント
  6. 6. 6 情報収集 ● ハッキングの最初の段階は、情報収集を行うことある。 ● 攻撃に使用できる情報をピックアップ – 誕生日、電話番号、勤務先、電話番号、メールアドレ ス ● 攻撃対象のサーバへ侵入するための情報を探す(例: ルータ、ゲートウェイ) ● サーバに進入するための情報を取得 – (例:空きポート、ログインパスワード、使用ミドル ウェアなど) ● 最も効果的な方法はソーシャル・エンジニアリング。 – 対象者 ( セキュリティ担当者など ) にコンタクトを取 り、機密情報を問い合わせる。(例:付箋に書かれた パスワード、電話による聞き出し)
  7. 7. 7 間接 アクセス ● « Whois » DB ● 登録処理の際に用いられた管理者情報など、すべて の情報にアクセスを行う ● 名前 , 住所 , 電話番号 – ネットワークの情報 ● DNS サーバ ● ソーシャル・エンジニアリングをするためのメールアド レス ● 対象者の IP レンジ ● これらの情報はすべて公開されているものである
  8. 8. 8 WHOIS  (ツール) ● « whois » のツール ● whois ドメイン名 か whois IP アドレス Domain Information: [ ドメイン情報 ] [Domain Name] COOKBIZ.JP [ 登録者名 ] 藪ノ 賢次 [Registrant] kenji yabuno [Name Server] ns-1253.awsdns-28.org [Name Server] ns-1824.awsdns-36.co.uk [Name Server] ns-412.awsdns-51.com [Name Server] ns-608.awsdns-12.net [Signing Key] [ 登録年月日 ] 2007/12/11 [ 有効期限 ] 2015/12/31 [ 状態 ] Active [ 最終更新 ] 2015/01/01 01:05:11 (JST) Contact Information: [ 公開連絡窓口 ] [ 名前 ] 藪ノ 賢次 [Name] kenji yabuno [Email] info@cook- biz.jp [Web Page] [ 郵便番号 ] 530-0012 [ 住所 ] 大阪府大阪市北 区芝田 2-7-18 恵比寿 AM ビル 7F [Postal Address] Ebisu AM Bldg 7F 2-7-18 Shiba- ta Kita-ku Osaka-shi 5300012,Japan [ 電話番号 ] 06-6374-9912 [FAX 番号 ] 06-6131-6470
  9. 9. 9 直接 アクセス ● セキュリティホールを探す方法 ● ポートスキャン – 開いているポートの発見 – いくつかのアクセス方法 ● フィンガープリント – サービスに使用しているツール名 (apache など ) – サービスツールのバージョン – OS
  10. 10. 10 Nmap scanning ● Nmap で表示されるフィンガープリント ● Nmap -A IP ( コマンド )
  11. 11. 11 その他の方法 ● SNMP (ネットワーク監視用のプロトコ ル) ● SNMP 通信の発見 – 対象マシンの情報を取得 ● Netbios ● Windows 用の通信プロトコル – ゲスト・ nobody アカウントが有効になる場合がある ● 共有フォルダの列挙 ● ユーザ / グループ /administrator の列挙
  12. 12. 12 ソーシャル・エンジニアリング ● 機密情報を公開させる技術 ● なりすまし電話をかける ● 電話を受け取った人は、危険性を認識できていない ことが多い .e.g 電話で windows を使っていると伝え てしまうが、それが危険だとは気づいていない。 ● ほとんどの場合、有益な情報へアクセスす る最も有効な手段となる。 ● 会社の情報を守ることは難しい (全員、 IT リテラシーが高いわけではない)
  13. 13. 13 System vulnerabilities ( セキュリティ・ホール ) • 設定ミス • パスワード • パッチ
  14. 14. 14 セキュリティ・ホールとは – 設定ミス – デフォルト設定が残ったままの状態 – 権限の低いタスクを実行するために、管理者権限を使用し ている ● 悪いパスワード例 – デフォルト パスワード – 弱いパスワード eg abc, 123 など ● 悪いパッチ例 – 新しい脆弱性が存在するが、 OS が対応していない。 – サポートが切れた OS を使用している ● そのため簡単にハッキングができてしまう
  15. 15. 15 設定ミス ● 開発用設定が、本番用成果物でも使われて いる ● 機器 – アクセス制限の無い SNMP 通信 – 初回から設定されているパスワード ● アプリケーション – デフォルトパスワード – デバッグモードが有効のまま – アプリケーションの、サンプルソースから変更のないもの ( e.g. ログインパスが test / test )
  16. 16. 16 パスワード ● セキュリティシステムの大半は、パスワードがシンプルになるほど弱くなる ● システムが簡単なパスワードを受け入れる作りになっていれば , 簡単なパス ワードを入力してしまいがちになってしまう .e.g) システムがパスワードの 長さを指定しなければ、 abc など短いパスワードが使われてしまいがち . 記 号を含めるとパスワードは強くなる . ● パスワードはアプリケーション内で暗号化されるべきである – ハッカーが DB に侵入した場合、暗号化されていなければ簡単にパスワー ドを抜き取られてしまう – 暗号化しても、簡単なパスワードだとハッシュの逆引きで解析される。ソ ルトつきハッシュを使用するのがよい – デモ ● https://crackstation.net/ ● 711761afb4d338578b0de251c1a39b4d
  17. 17. 17 パスワード攻撃 ● 暗号化パスワードを平文に変換 ● Online – Medusa (ツール名) – Hydra (ツール名) – ブルートフォース ● Offline – John The Ripper (ツール名) – Cain (ツール名) – L0phtcrack (ツール名) ● 早くて気づかれにくいが 常に可能ではない
  18. 18. 18 デモ 1 ● 対象 : http://192.168.1.3 ● 目的 ● ログイン後の画面へのアクセス権を得る ● Medusa と 辞書 の組み合わせの実践
  19. 19. 19 パッチ ● アップデートサービス ● 会社にセキュリティルールが必要である ● 最新版のパッチはすべてのマシンに適応さ れているべきである ● 脆弱なマシンが一つでもあれば、社内ネットワーク 全体の侵入口となりえてしまう ● 脆弱なマシンはハッキングするのに最適なため、最 初の対象となってしまう
  20. 20. 20 問題 ● 脆弱性情報は公開されていることが多い ● 誰でもアクセスすることができる ● 脆弱性情報を使って、アクセス先の情報を取得する 自動スクリプトが使える ● ゼロデイ攻撃 ● 脆弱性の利用 ● 脆弱性を通してセキュリティホールを見つけること ができる ● Metasploit を使って脆弱性を利用できる。 ● 結果的に、対象をコントロールできるようになる
  21. 21. 21 デモ 2 ● 対象 : 192.168.1.4 – 目的 – Discover information about the target – Compromise entirely the target – Windows 2003 Server SP1 – CVE : MS08_67 vulnerability
  22. 22. 22 アプリケーションの脆弱性 • Cross-Site Scripting • SQL Injection
  23. 23. 23 アプリケーションの脆弱性 ● 対象となるアプリケーションの特徴 ● システム管理者の管理不足 ● 開発時の不具合、セキュリティテスト不足 ● ハッカーがアプリケーションの動作を変更 できる ● 開発者の予期せぬアプリケーションの使用方法を行 う ● WEB アプリケーションでは頻繁に起こって いる
  24. 24. 24 パラメータ ● アプリケーションメソッド : ● GET : URL にパラメータを付加 – search.php?query=toto ● POST : メッセージの body にパラメータを付加 – Usually for forms submission ● パラメータを使って攻撃ができてしまう → BurpSuite
  25. 25. 25 XSS ● ブラウザ上で任意の JavaScript コードが実 行される ● ユーザの入力に応じて、クライアントサイドのソー スコードが実行される際に問題が発生する ● ハッカーが web ページ内に HTML/Javascript を埋め 込むことができる – Web ページの画面をコントロール ● 画像表示 ● JavaScript の実行
  26. 26. 26 デモ 3 ● 対象 : http://192.168.1.2/7/ – 目的 – Display Cookbiz in a popup message <form action="index.php?p=search" method="GET"> <input type="text" name="query" style="width: 250px;"/> <input type="submit" value="Search"/> </form> <?php if(isset($_GET['query'])) echo "0 Results for <b>" .$_GET['query']. "</b>!"; ?>
  27. 27. 27 XSS - 例 ● 脆弱なソースコード ● 正常動作 異常動作
  28. 28. 28 SQL インジェクション ● SQL クエリ ● SELECT 文  : – SELECT column_name FROM table WHERE condition ● 例 – SELECT contenu FROM news WHERE id=1 ● データベースの情報を取得するため に、 Web サイトの脆弱性を利用する
  29. 29. 29 SQL Injection examples ● 正常動作  : ● http://site/news.php?id=1 – SELECT * FROM news WHERE id = 1 – id=1 のデータだけが取得される ● 異常動作  : ● http://site/news.php?id=1 OR 1=1 – SELECT * FROM news WHERE id = 1 OR 1=1 // > TRUE – 全部のデータが取得される!
  30. 30. 30 デモ 4 ● 対象 : http://192.168.1.2/11/ ● 目的 ● 管理者権限のエリアにアクセス require_once("config.php"); mysql_connect($dbhost,$dblogin,$dbpass); mysql_select_db($dbname); $login = $_POST['login']; $pass = $_POST['pass']; $query = "SELECT pass FROM users WHERE login = '$login' AND pass = md5('$pass')"; $result = mysql_query($query) or die("Error SQL : " . mysql_error()); f(mysql_num_rows($result) > 0) { echo "Connected."; } else { echo "Wrong user/ password"; }
  31. 31. 31 SQL Injection example ● 脆弱なソースコード ● 正常動作 異常動作
  32. 32. 32 ハッカーの目的 ● 権限プロセスのハイジャック ● データベースの検索 ● 機密情報の取得 – ユーザ、アドミンのパスワードなど – 個人情報 ● DB を通してシステムの操作 ● ファイルの読み取り ● ファイルの書き込み ● コマンドの実行
  33. 33. 33 MSSQL Server ● MSSQL サーバでは、 DB から xp_cmdshell を使ってコマンドを実行できる ● MSSQL サーバは管理者権限で動いていることが多 いので、コマンドが実行されやすい ● DB を通してシステム全体が破壊される ● ネットワークの検索に使用される
  34. 34. 34 デモ 5 ● 対象 : http://192.168.1.2/12/ ● 目的 ● 管理者のログインパスワード取得 require_once("config.php"); mysql_connect($dbhost,$dblogin,$dbpass); mysql_select_db($dbname); $id = addslashes($_GET['id']); $query = "SELECT * FROM news WHERE id=$id"; $result = mysql_query($query) or die('Error Sql : ' . mysql_error()); $row = mysql_fetch_array($result,MYSQL_BOTH);
  35. 35. 35 便利な Hacking のツール Web Scanner : ● Nikto ● SkipFish ● W3af ● OWASP WebScarab XSS Scanner : ● Xsser ● BurpSuite ● OWASP ZAP Vulnerability scanner : ● Metasploit ● OpenVAS ● Nessus ● NMAP SQL Injection Scanner : ● Sqlmap ● Sqlninja ● Sqlsus セキュリティテストに特化した Linux Kali Linux
  36. 36. 36 質疑応答 • 質問がありますか ?

×