2014年6月22日日曜日

tshark(wiresharkのCUI)でBasic認証の安全性(危険性?)を検証

Basic認証が安全ではないと言われる所以をパケットキャプチャにより実証したい気分な方へ
tsharkをインストールしてパケットキャプチャする手順をお届けします。
Digest認証についてもどの程度安全性が確保されているのかも確認します。
Basic認証/Digest認証の設定方法は前回記事をどうぞ。

OS: CentOS 6.5 (64-bit)
TShark: 1.8.10


■tsharkインストール
CUIだけでいいので、wireshark-gnomeはインストールせず、tsharkだけインストールしたい。
[root@centos65 ~]# yum install tshark
(中略)
No package tshark available.
Error: Nothing to do
[root@cent63 ~]#
無いらしい。wiresharkでインストールすればGUIはインストールされないとのこと。


■wiresharkインストール
[root@centos65 ~]# yum install wireshark
==========================================================================
 Package            Arch          Version             Repository     Size
==========================================================================
Installing:
 wireshark          x86_64        1.8.10-7.el6_5      updates        11 M
Installing for dependencies:
 libsmi             x86_64        0.4.8-4.el6         base          2.4 M

Transaction Summary
==========================================================================
Install       2 Package(s)

## version確認
[root@centos65 ~]# tshark -v
TShark 1.8.10 (SVN Rev Unknown from unknown)

Copyright 1998-2013 Gerald Combs  and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.26.1, with libpcap, with libz 1.2.3, without POSIX
capabilities, with SMI 0.4.8, without c-ares, without ADNS, without Lua, without
Python, with GnuTLS 2.8.5, with Gcrypt 1.4.5, with MIT Kerberos, without GeoIP.

Running on Linux 2.6.32-431.el6.x86_64, with locale ja_JP.UTF-8, with libpcap
version 1.4.0, with libz 1.2.3.

Built using gcc 4.4.7 20120313 (Red Hat 4.4.7-4).
[root@centos65 ~]#


■192.168.77.149宛てのhttp通信だけをキャプチャ
[root@centos65 ~]# tshark -l host 192.168.77.149 and port http
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
  0.000000 192.168.77.1 -> 192.168.77.149 TCP 74 45248 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSval=587734266 TSecr=0 WS=4
  0.000055 192.168.77.149 -> 192.168.77.1 TCP 74 http > 45248 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=13298595 TSecr=587734266 WS=128
  0.000307 192.168.77.1 -> 192.168.77.149 TCP 66 45248 > http [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSval=587734266 TSecr=13298595
  0.000338 192.168.77.1 -> 192.168.77.149 TCP 66 45248 > http [FIN, ACK] Seq=1 Ack=1 Win=5840 Len=0 TSval=587734266 TSecr=13298595
  0.000531 192.168.77.149 -> 192.168.77.1 TCP 66 http > 45248 [ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=13298596 TSecr=587734266
  0.000881 192.168.77.149 -> 192.168.77.1 TCP 66 http > 45248 [FIN, ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=13298596 TSecr=587734266
  0.001063 192.168.77.1 -> 192.168.77.149 TCP 66 45248 > http [ACK] Seq=2 Ack=2 Win=5840 Len=0 TSval=587734266 TSecr=13298596
  4.101061 192.168.77.1 -> 192.168.77.149 TCP 74 45252 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSval=587734676 TSecr=0 WS=4
  4.101095 192.168.77.149 -> 192.168.77.1 TCP 74 http > 45252 [SYN, ACK] Seq=0 Ack=1 Win=14480 Len=0 MSS=1460 SACK_PERM=1 TSval=13302696 TSecr=587734676 WS=128
  4.101334 192.168.77.1 -> 192.168.77.149 TCP 66 45252 > http [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSval=587734676 TSecr=13302696
  4.101372 192.168.77.1 -> 192.168.77.149 TCP 66 45252 > http [FIN, ACK] Seq=1 Ack=1 Win=5840 Len=0 TSval=587734676 TSecr=13302696
  4.101532 192.168.77.149 -> 192.168.77.1 TCP 66 http > 45252 [ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=13302697 TSecr=587734676
  4.101720 192.168.77.149 -> 192.168.77.1 TCP 66 http > 45252 [FIN, ACK] Seq=1 Ack=2 Win=14592 Len=0 TSval=13302697 TSecr=587734676
  4.101931 192.168.77.1 -> 192.168.77.149 TCP 66 45252 > http [ACK] Seq=2 Ack=2 Win=5840 Len=0 TSval=587734676 TSecr=13302697
^C14 packets captured
[root@centos65 ~]#
Router(192.168.77.1)からのリクエストに対して応答しているパケットをキャプチャできている。
[root@centos65 ~]# tshark -l host 192.168.77.150 and port http
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
^C0 packets captured
[root@centos65 ~]#
自サーバ(192.168.77.149)へ来るアクセスまたは、自サーバから出るアクセスについてパケットキャプチャできるが、
同一セグメントでも他サーバから他サーバへのパケットはキャプチャできない。


■Basic認証とDigest認証のパケット確認
[root@centos65 ~]# tshark -i eth0 port http -V -w packet.log
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
(以下すごい量のログが出るので省略)
上記でキャプチャしている間にPC(192.168.77.2)のブラウザから下記URLにアクセス。
あえて、ID/Passを間違えたうえでログインしてみる。

http://192.168.77.149/basic/
1回目: test/password でログイン失敗。
2回目: basic/password でログイン失敗。
3回目: basic/secret でログイン成功。

http://192.168.77.149/digest/
1回目: test/password でログイン失敗。
2回目: basic/serect でログイン失敗。
3回目: digest/secret でログイン成功。

## ログの確認
[root@centos65 ~]# tshark -r packet.log | head
Running as user "root" and group "root". This could be dangerous.
  1 0.000000000 192.168.77.2 -> 192.168.77.149 TCP 66 51701 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
  2 0.000083000 192.168.77.149 -> 192.168.77.2 TCP 66 http > 51701 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460 SACK_PERM=1 WS=128
  3 0.000397000 192.168.77.2 -> 192.168.77.149 TCP 60 51701 > http [ACK] Seq=1 Ack=1 Win=65700 Len=0
  4 0.000568000 192.168.77.2 -> 192.168.77.149 HTTP 317 GET /basic/ HTTP/1.1
  5 0.000621000 192.168.77.149 -> 192.168.77.2 TCP 54 http > 51701 [ACK] Seq=1 Ack=264 Win=15744 Len=0
  6 0.001667000 192.168.77.149 -> 192.168.77.2 HTTP 782 HTTP/1.1 401 Authorization Required  (text/html)
  7 0.001905000 192.168.77.2 -> 192.168.77.149 TCP 60 51701 > http [ACK] Seq=264 Ack=729 Win=64972 Len=0
  8 0.002000000 192.168.77.149 -> 192.168.77.2 TCP 54 http > 51701 [FIN, ACK] Seq=729 Ack=264 Win=15744 Len=0
  9 0.002114000 192.168.77.2 -> 192.168.77.149 TCP 60 51701 > http [FIN, ACK] Seq=264 Ack=729 Win=64972 Len=0
 10 0.002145000 192.168.77.149 -> 192.168.77.2 TCP 54 http > 51701 [ACK] Seq=730 Ack=265 Win=15744 Len=0
[root@centos65 ~]#
※packet.logファイルはバイナリ型のため、テキストエディタでは開けない。

## ログを詳細確認してパスワードを抽出
[root@centos65 ~]# tshark -r packet.log -V | grep -A 1 "Authorization:"
Running as user "root" and group "root". This could be dangerous.
    Authorization: Basic dGVzdDpwYXNzd29yZA==\r\n
        Credentials: test:password
--
    Authorization: Basic YmFzaWM6cGFzc3dvcmQ=\r\n
        Credentials: basic:password
--
    Authorization: Basic YmFzaWM6c2VjcmV0\r\n
        Credentials: basic:secret
--
    [truncated] Authorization: Digest username="test",realm="DigestAuth",nonce="EAlztCj+BAA=758b7f794981c8331f415d6704fc2a8bb77d83e3",uri="/digest/",cnonce="4430d9ffdb985f4fabaadc433807e111",nc=00000001,algorithm=MD5,response="70f240bec66c111b
    Connection: Keep-Alive\r\n
--
    [truncated] Authorization: Digest username="basic",realm="DigestAuth",nonce="RCu8tCj+BAA=0b496b71af1ce10978af063796f7316a88b0599a",uri="/digest/",cnonce="8cdc61e16b1ed3e79e513fa766a39a14",nc=00000001,algorithm=MD5,response="60a69776af7efe3
    \r\n
--
    [truncated] Authorization: Digest username="digest",realm="DigestAuth",nonce="gkCEtSj+BAA=297f68d0b65f9c6a14eddd0898edd59f1b560a1b",uri="/digest/",cnonce="09fab2b8fd4aae62d30d94e868a5719c",nc=00000001,algorithm=MD5,response="fa704ad0f10213
    Connection: Keep-Alive\r\n
[root@centos65 ~]#
Basic認証は入力されたパスワードが丸見え…。
Digest認証はパスワードが暗号化されているため少しはマシかもしれません。
公開Webサーバに不正にtsharkが仕掛けられないことを祈ります…。


こちらの情報が何かのお役に立てましたら幸いです。サイト継続ご協力のほどお願い致します。m(_ _)m

0 件のコメント:

コメントを投稿