ウェブセキュリティ

36
Real Life Hacking Hacking 101 1

Transcript of ウェブセキュリティ

Page 1: ウェブセキュリティ

Real Life Hacking

Hacking 101

1

Page 2: ウェブセキュリティ

2

アジェンダ● 序論● 情報収集

● 間接 アクセス● 直接 アクセス

● システムのセキュリティ● 設定エラー● パスワードポリシー● パッチ

● Webセキュリティ

Page 3: ウェブセキュリティ

3

ハッキングとは ?

開発者の予期せぬ方法でアプリケーションやシステムにアクセスすることである。

Page 4: ウェブセキュリティ

4

攻撃手順情報収集

● 攻撃対象のシステムの情報を取得– 直接・間接 アクセス– フィンガープリント

● 攻撃手法● 脆弱性を発見する● 攻撃をするツールの選定● 攻撃の開始● 被害の拡散

Page 5: ウェブセキュリティ

5

情報収集情報収集

• 間接 アクセス

• 直接 アクセス

• フィンガープリント

Page 6: ウェブセキュリティ

6

情報収集● ハッキングの最初の段階は、情報収集を行うことある。

● 攻撃に使用できる情報をピックアップ– 誕生日、電話番号、勤務先、電話番号、メールアドレス

● 攻撃対象のサーバへ侵入するための情報を探す(例:ルータ、ゲートウェイ)

● サーバに進入するための情報を取得– (例:空きポート、ログインパスワード、使用ミドルウェアなど)

● 最も効果的な方法はソーシャル・エンジニアリング。– 対象者 (セキュリティ担当者など )にコンタクトを取り、機密情報を問い合わせる。(例:付箋に書かれたパスワード、電話による聞き出し)

Page 7: ウェブセキュリティ

7

間接 アクセス● « Whois » DB

● 登録処理の際に用いられた管理者情報など、すべての情報にアクセスを行う

● 名前 , 住所 , 電話番号– ネットワークの情報

● DNS サーバ● ソーシャル・エンジニアリングをするためのメールアドレス

● 対象者の IP レンジ● これらの情報はすべて公開されているものである

Page 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] [email protected][Web Page] [郵便番号 ] 530-0012[住所 ] 大阪府大阪市北区芝田 2-7-18 恵比寿 AMビル7F[Postal Address] Ebisu AM Bldg7F 2-7-18 Shiba-ta Kita-ku Osaka-shi 5300012,Japan[電話番号 ] 06-6374-9912[FAX番号 ] 06-6131-6470

Page 9: ウェブセキュリティ

9

直接 アクセス● セキュリティホールを探す方法

● ポートスキャン– 開いているポートの発見– いくつかのアクセス方法

● フィンガープリント– サービスに使用しているツール名 (apacheなど )– サービスツールのバージョン– OS

Page 10: ウェブセキュリティ

10

Nmap scanning

● Nmapで表示されるフィンガープリント● Nmap -A IP (コマンド )

Page 11: ウェブセキュリティ

11

その他の方法● SNMP(ネットワーク監視用のプロトコル)

● SNMP通信の発見– 対象マシンの情報を取得

● Netbios● Windows用の通信プロトコル

– ゲスト・ nobodyアカウントが有効になる場合がある● 共有フォルダの列挙● ユーザ /グループ /administratorの列挙

Page 12: ウェブセキュリティ

12

ソーシャル・エンジニアリング● 機密情報を公開させる技術

● なりすまし電話をかける● 電話を受け取った人は、危険性を認識できていないことが多い .e.g 電話でwindowsを使っていると伝えてしまうが、それが危険だとは気づいていない。

● ほとんどの場合、有益な情報へアクセスする最も有効な手段となる。

● 会社の情報を守ることは難しい(全員、 ITリテラシーが高いわけではない)

Page 13: ウェブセキュリティ

13

System vulnerabilities (セキュリティ・ホール )

• 設定ミス

• パスワード

• パッチ

Page 14: ウェブセキュリティ

14

セキュリティ・ホールとは

– 設定ミス– デフォルト設定が残ったままの状態– 権限の低いタスクを実行するために、管理者権限を使用している

● 悪いパスワード例– デフォルト パスワード– 弱いパスワード eg abc, 123など

● 悪いパッチ例– 新しい脆弱性が存在するが、OSが対応していない。– サポートが切れたOSを使用している

● そのため簡単にハッキングができてしまう

Page 15: ウェブセキュリティ

15

設定ミス● 開発用設定が、本番用成果物でも使われている

● 機器– アクセス制限の無い SNMP通信– 初回から設定されているパスワード

● アプリケーション– デフォルトパスワード– デバッグモードが有効のまま– アプリケーションの、サンプルソースから変更のないもの( e.g. ログインパスが test / test)

Page 16: ウェブセキュリティ

16

パスワード● セキュリティシステムの大半は、パスワードがシンプルになるほど弱くなる

● システムが簡単なパスワードを受け入れる作りになっていれば , 簡単なパスワードを入力してしまいがちになってしまう .e.g) システムがパスワードの長さを指定しなければ、abcなど短いパスワードが使われてしまいがち. 記号を含めるとパスワードは強くなる .

● パスワードはアプリケーション内で暗号化されるべきである– ハッカーがDBに侵入した場合、暗号化されていなければ簡単にパスワードを抜き取られてしまう

– 暗号化しても、簡単なパスワードだとハッシュの逆引きで解析される。ソルトつきハッシュを使用するのがよい

– デモ● https://crackstation.net/● 711761afb4d338578b0de251c1a39b4d

Page 17: ウェブセキュリティ

17

パスワード攻撃● 暗号化パスワードを平文に変換● Online

– Medusa(ツール名)– Hydra(ツール名)– ブルートフォース

● Offline– John The Ripper(ツール名)– Cain(ツール名)– L0phtcrack(ツール名)

● 早くて気づかれにくいが 常に可能ではない

Page 18: ウェブセキュリティ

18

デモ 1

● 対象 : http://192.168.1.3

● 目的● ログイン後の画面へのアクセス権を得る● Medusa と 辞書 の組み合わせの実践

Page 19: ウェブセキュリティ

19

パッチ● アップデートサービス

● 会社にセキュリティルールが必要である● 最新版のパッチはすべてのマシンに適応されているべきである

● 脆弱なマシンが一つでもあれば、社内ネットワーク全体の侵入口となりえてしまう

● 脆弱なマシンはハッキングするのに最適なため、最初の対象となってしまう

Page 20: ウェブセキュリティ

20

問題● 脆弱性情報は公開されていることが多い

● 誰でもアクセスすることができる● 脆弱性情報を使って、アクセス先の情報を取得する自動スクリプトが使える

● ゼロデイ攻撃● 脆弱性の利用

● 脆弱性を通してセキュリティホールを見つけることができる

● Metasploitを使って脆弱性を利用できる。● 結果的に、対象をコントロールできるようになる

Page 21: ウェブセキュリティ

21

デモ 2

● 対象 : 192.168.1.4

– 目的– Discover information about the target– Compromise entirely the target– Windows 2003 Server SP1– CVE : MS08_67 vulnerability

Page 22: ウェブセキュリティ

22

アプリケーションの脆弱性

• Cross-Site Scripting

• SQL Injection

Page 23: ウェブセキュリティ

23

アプリケーションの脆弱性● 対象となるアプリケーションの特徴

● システム管理者の管理不足● 開発時の不具合、セキュリティテスト不足

● ハッカーがアプリケーションの動作を変更できる

● 開発者の予期せぬアプリケーションの使用方法を行う

● WEBアプリケーションでは頻繁に起こっている

Page 24: ウェブセキュリティ

24

パラメータ

● アプリケーションメソッド :● GET : URLにパラメータを付加

– search.php?query=toto● POST : メッセージの bodyにパラメータを付加

– Usually for forms submission● パラメータを使って攻撃ができてしまう →

BurpSuite

Page 25: ウェブセキュリティ

25

XSS

● ブラウザ上で任意の JavaScriptコードが実行される

● ユーザの入力に応じて、クライアントサイドのソースコードが実行される際に問題が発生する

● ハッカーがwebページ内にHTML/Javascriptを埋め込むことができる

– Webページの画面をコントロール● 画像表示● JavaScriptの実行

Page 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>!";

?>

Page 27: ウェブセキュリティ

27

XSS -例

● 脆弱なソースコード

● 正常動作 異常動作

Page 28: ウェブセキュリティ

28

SQL インジェクション● SQLクエリ

● SELECT文  :– SELECT column_name FROM table WHERE condition

● 例– SELECT contenu FROM news WHERE id=1

● データベースの情報を取得するために、Webサイトの脆弱性を利用する

Page 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– 全部のデータが取得される!

Page 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";}

Page 31: ウェブセキュリティ

31

SQL Injection example

● 脆弱なソースコード

● 正常動作 異常動作

Page 32: ウェブセキュリティ

32

ハッカーの目的● 権限プロセスのハイジャック● データベースの検索

● 機密情報の取得– ユーザ、アドミンのパスワードなど– 個人情報

● DBを通してシステムの操作● ファイルの読み取り● ファイルの書き込み● コマンドの実行

Page 33: ウェブセキュリティ

33

MSSQL Server

● MSSQLサーバでは、DBから xp_cmdshellを使ってコマンドを実行できる

● MSSQLサーバは管理者権限で動いていることが多いので、コマンドが実行されやすい

● DBを通してシステム全体が破壊される● ネットワークの検索に使用される

Page 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);

Page 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

Page 36: ウェブセキュリティ

36

質疑応答

• 質問がありますか ?