情報社会とセキュリティ(第...
TRANSCRIPT
2019/5/21 2
はじめに
◼ この講義のWWWページhttp://teched.kyokyo-u.ac.jp/~htada/class/security/
◼ 講義資料(PDF)を置いておきます
2019/5/21 3
今日の内容
◼ WWWでのその他の攻撃方法
◼ クロスサイトリクエストフォージェリ
◼ セッションフィクセーション
◼ SQLインジェクション
◼ SEOポイズニング
◼ ウィルスを利用した攻撃方法
◼ DoS攻撃
◼ ボット
2019/5/21 4
WWWでのその他の攻撃方法
2019/5/21 5
クロスサイトリクエストフォージェリ
◼ Cross Site Request Forgery(CSRF)
◼ forgeryは「偽造」という意味
◼ ログイン中の認証型WWWサイトに対してユーザの意図しない操作が知らない内に行われてしまう
◼ 勝手に日記を書き込まれる
◼ 勝手に買い物をされてしまう
2019/5/21 6
CSRFとは
認証の必要なサーバ
罠のWWWページHTMLメールなど
日記を書き込め
ユーザの意図しないリクエストを出してしまうすぐクリック!
クリックするログイン中
2019/5/21 7
どうやってリクエストを出させるか?
◼ スクリプトの利用◼ クロスサイトスクリプティングを利用した
CSRFというのもあり得る
◼ 自動転送(HTTPリダイレクト)の利用◼ あるページを訪れたユーザを自動的に別のペー
ジに飛ばす機能◼ 本来はWWWサイトを引っ越したときや一時的に他
のサイトに移動している場合などに用いる
◼ リダイレクト先のURLに不正な処理を書いておく
2019/5/21 8
CSRF対策の難しさ
◼ クロスサイトスクリプティングはサーバの脆弱性の問題だった
◼ サーバのプログラムを修正することで対応可能
◼ CSRFの場合,サーバからはログイン中の正規ユーザからの通常のリクエストにしか見えない
◼ 受理するのが当然
◼ サーバからは防ぎようがない
2019/5/21 9
セッションフィクセーション
◼ Session Fixation
◼ fixationは「固定」という意味
◼ 攻撃者が知っているセッションIDをユーザに使わせることにより,他人になりすます手法
2019/5/21 10
セッションIDとは
認証の必要なWWWサイトでユーザの識別に用いる番号
562684
482732
2019/5/21 11
セッションフィクセーションのしくみ
悪いユーザ
普通にアクセスしセッションIDを取得
666281
認証の必要なサーバ
2019/5/21 12
セッションフィクセーションのしくみ
悪いユーザ 罠じゃないよ
罠のサイトを用意
認証の必要なサーバ
2019/5/21 13
セッションフィクセーションのしくみ
パソコン
悪いユーザ 罠じゃないよ罠のサイトにアクセス
認証の必要なサーバ
2019/5/21 14
セッションフィクセーションのしくみ
パソコン
悪いユーザ 罠じゃないよ666281
攻撃者のセッションIDがクッキーにセットされる
認証の必要なサーバ
2019/5/21 15
セッションフィクセーションのしくみ
パソコン
悪いユーザ666281
攻撃者のセッションIDを使ってログイン
認証の必要なサーバ セッションIDとユーザが結びつく
田中:666281
2019/5/21 16
セッションフィクセーションのしくみ
悪いユーザ666281
認証の必要なサーバ
記録させたセッションIDを使ってユーザになりすます
田中:666281
買い物したいんだけど
ようこそ田中さん
セッションIDが一致するので本人だと思い込んでしまう
666281
2019/5/21 17
SQLインジェクション
◼ SQL injection
◼ injectionは「注入」という意味
◼ データベースの盲点をついた攻撃方法
◼ これが結構マニアック
2019/5/21 18
オンラインショッピング
データベース
オンラインショッピングのサイトでは顧客や商品の情報をデータベースで管理している
データベースサーバWWWサーバ
2019/5/21 19
データベース
顧客番号 顧客氏名 住所1 住所2 電話番号
1 相田孝之 東京都新宿区 歌舞伎町x-x-x 03-xxxx-xxxx
2 伊藤美香 神奈川県横浜市 中区山下町xx 045-xxx-xxxx
3 内田浩二 埼玉県さいたま市 高砂xx-xx 048-xxx-xxxx
データを表の形で管理する
顧客
販売
販売日 顧客番号 商品1 商品2 商品3
50115 2 吟醸灘一本 特選おつまみ
50116 1 神戸和牛セット
50116 3 特売・生ハム 粒マスタード マリーローランサン
50117 1 薩摩黒豚ハム
SQLとは?
2019/5/21 20
データベースを操作するための標準言語
一種のプログラミング言語とも言える
条件を指定して,データベースから必要なデータを取り出したりデータベースにデータを書き込んだりする
SQL文の例
2019/5/21 21
「顧客」から顧客氏名が「内田浩二」である行全体を抜き出す
SELECT * FROM 顧客 WHERE 顧客氏名 = '内田浩二'
顧客番号 顧客氏名 住所1 住所2 電話番号
1 相田孝之 東京都新宿区 歌舞伎町x-x-x 03-xxxx-xxxx
2 伊藤美香 神奈川県横浜市 中区山下町xx 045-xxx-xxxx
3 内田浩二 埼玉県さいたま市 高砂xx-xx 048-xxx-xxxx
顧客
3 内田浩二 埼玉県さいたま市 高砂xx-xx 048-xxx-xxxx
SQL文のコメント
2019/5/21 22
--から後ろの部分はSQL文とはみなされずに無視される
SQL文にはコメント(説明のための文)を入れることができる
SELECT uid FROM account --コメントです
2019/5/21 23
データベースを用いた認証
オンラインショッピングのサイトなどでは認証のためのデータベースが用いられている
id name uid pw
1 相田孝之 aida aidada
2 伊藤美香 itou itou0401
3 内田浩二 uchida uchi1988
account
このSQL文を実行して対応する行が出力されればログインできる
SELECT uid FROM accountWHERE uid='ログイン名' AND pw='パスワード'
実際にはハッシュ値が入っている
2019/5/21 24
SQLインジェクション
このときログイン名として「' OR 1=1--」と入力するとどうなるか(パスワードは何でもよい)
あなたはおそろしい瞬間を目撃することに...
SQLインジェクションのしくみ
2019/5/21 25
SELECT uid FROM accountWHERE uid='' OR 1=1--' AND pw='パスワード'
SELECT uid FROM accountWHERE uid=‘’ OR 1=1--' AND pw='パスワード'
SELECT uid FROM accountWHERE uid=‘’ OR 1=1
「--」から後ろはコメントとして無視される
2019/5/21 26
SELECT uid FROM accountWHERE uid='' OR 1=1
SQLインジェクション
○○ OR ××→○○か××のどちらか成り立っていればOK
常に成り立つ
「結果の出力があれば許可」としている場合パスワードを入力しなくてもログインできてしまう
結果としてすべての行のログイン名(uid)が出力される
2019/5/21 27
SEOポイズニング
◼ SEO poisoning
◼ poison: 毒を盛る,汚染する
◼ SEOを用いて,検索結果の上位に不正なサイトが表示されるようにする手法
2019/5/21 28
SEOとは
◼ Search Engine Optimization (検索エンジン最適化)の略◼ 検索エンジン(googleなど)で上位に登場する
ようにWWWページを作ること
◼ 専門に行う企業も存在する
◼ それ自体は必ずしも悪いことではない
2019/5/21 29
SEOのポイント
◼ 自分のWWWページをロボットに見つけてもらいやすいようにする
◼ ロボットって誰?
2019/5/21 30
ロボット型検索エンジンのしくみ
ロボットと呼ばれるプログラムが自動的にいろんなWWWサーバを回ってWWWページの情報を集めてくる
ロボットが集めたWWWページからキーワードを抜き出し,自動的にインデックス(索引)を作成する
キーワードの問い合わせが来たらインデックスを探して該当するWWWページへのリンクを表示する
2019/5/21 31
SEOの例
◼ 目的キーワードの分析
◼ ユーザが入力しそうなキーワードを書いておく
◼ キーワードに沿ったページの構成
◼ リンクの作成
◼ ロボットはリンクをたどってページを探す
◼ サイトマップの作成
◼ HTMLによる最適化
2019/5/21 32
SEOポイズニングの結果
http://www.itmedia.co.jp/enterprise/articles/0711/29/news010.html
googleの検索結果に怪しいサイトが...
2019/5/21 33
SEOポイズニングの影響
◼ 検索エンジンから悪質なサイトに誘導される
◼ 「検索エンジンに対する信頼」が崩れてしまう
◼ 上位に表示されるのは役に立つサイト
◼ 検索エンジンの提供者にとっては深刻な問題
◼ ユーザが離れてしまうことになる
2019/5/21 34
ウィルスを利用した攻撃
2019/5/21 35
DoS攻撃
サーバに攻撃をしかけて,サービスできない状態にしてしまう
Denial of Services(サービス不能)の略
2019/5/21 36
DoS攻撃のしくみ
◼ DoS攻撃のしくみを理解するには,TCPのしくみについて知らないといけません
2019/5/21 37
TCPコネクション
◼ インターネットで用いられるTCPというプロトコルでは,相手と通信可能であることを確認してから通信を行う
◼ TCPの通信手順
1. 相手との接続を確立
◼ 「TCPコネクションを張る」という
2. データ通信
3. 相手との接続を解除
2019/5/21 38
TCPでの確認の仕方
届いてる?
届いてるっす,そっちは?
よしOK!
こっちも届いてるっす
よしOK!
相手への返事と自分の確認メッセージをまとめて送信
この方法をスリーウェイハンドシェイク(3-way handshake)という
メッセージは全部で3つ送られる
2019/5/21 39
DoS攻撃の例
クライアントがサーバに接続要求を出す
届いてる?
2019/5/21 40
DoS攻撃の例
サーバがクライアントに返事を返す
届いてるよ,そっちは?
接続待ち
接続待ちであることをメモリに覚えておく
2019/5/21 41
DoS攻撃の例
返事を無視して新たな接続要求を出す
届いてる?
接続待ち
2019/5/21 42
DoS攻撃の例
サーバがクライアントに返事を返す
届いてるよ,そっちは?
接続待ち接続待ち
2019/5/21 43
DoS攻撃の例
返事を無視してまた新たな接続要求を出す
届いてる?
接続待ち接続待ち
2019/5/21 44
DoS攻撃の例
返事を無視してひたすら接続要求を出し続ける
届いてる?
接続待ち接続待ち接続待ち
接続待ち接続待ち接続待ち接続待ち接続待ち
接続待ち
接続待ちがたまってメモリを使い果たしてしまう
サーバが停止する
2019/5/21 45
DDoS攻撃
Distributed DoS(分散DoS)多数のクライアントが一斉にサーバにDoS攻撃をしかけること
2019/5/21 46
DDoS攻撃をしかけるのは?
DDoS攻撃をしかけるのはウィルスに感染した普通のユーザのパソコン
自分のパソコンが加害者にならないためにもウィルスには気を付けましょう
2019/5/21 47
ボットの恐怖
◼ ウィルスの中で最近特に問題になっている
◼ bot:robotの短縮形
2019/5/21 48
ボットとは
「遠隔操作できるウィルス」のこと
2019/5/21 49
ボットの特徴
◼ こっそりと活動する◼ パソコンに感染しても症状が現れないことが多
い◼ データの破壊
◼ 不安定な動作
◼ ユーザは自分のパソコンが感染したことになかなか気づかない
◼ ネットワークを通じて遠隔操作が可能◼ 知らないうちにパソコンが「乗っ取られる」
2019/5/21 50
ボットが行う悪事
DDoS攻撃をしかける
2019/5/21 51
ボットが行う悪事
スパムメールをまき散らす
2019/5/21 52
ボットの怖いところ
◼ 普通のユーザの普通のパソコンが「悪の手先」になる
◼ ユーザ本人はそのことに気づかない
◼ 対策をとろうとしない
◼ 長期間潜伏し続ける
2019/5/21 53
ボットへの指令
◼ ボットへの指令はIRCを使って送られる
◼ IRC(Internet Relay Chat)◼ インターネットでチャットをするためのシステ
ム◼ 世界中の人とチャットをすることができる
◼ 割と古くからある
◼ 現在はhttpやDNSを使ったり,独自の方法を使うものもある
2019/5/21 54
ボットの動作
感染したボットはIRCサーバに接続し「指示」を待つ
2019/5/21 55
ボットの動作
攻撃者がチャットの発言の形でボットに指示を送る
やれ
2019/5/21 56
ボットの動作
書き込みがボットに配信される
やれ
やれ
やれやれ
やれ
2019/5/21 57
ボットの動作
ボットが指示に従って一斉に動作する
イー
イー イー
イー
イー
2019/5/21 58
ボットネット
ボットに感染したパソコンは「悪のネットワーク」を構築する
ボットが構成するネットワークをボットネットという
2019/5/21 59
まとめ
◼ WWWにはいろいろな危険が
◼ クロスサイトリクエストフォージェリ
◼ セッションフィクセーション
◼ SQLインジェクション
◼ SEOポイズニング
◼ ウィルスを利用した攻撃もある
◼ 感染すると他人に迷惑をかける