O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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
質疑応答
•
質問がありますか ?
Próximos SlideShares
Carregando em…5
×

ウェブセキュリティ

389 visualizações

Publicada em

Web Security presentation in Japanese

Publicada em: Software
  • Seja o primeiro a comentar

ウェブセキュリティ

  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 質疑応答 • 質問がありますか ?

×