2012年12月20日木曜日

NetworkMiner の使い方

NetworkMiner は NETRESEC が提供する Windows 向けのネットワークフォレンジックツール。
パケットキャプチャ機能もあるが、統計データやキャプチャしたデータから様々なデータを取り出すのに向いている。

下記から実行ファイルがダウンロードできる。インストールは不要で実行ファイルのみ。
http://www.netresec.com/?page=NetworkMiner

ただし、NET Framework 2.0 が必要。あと winpcap も必要らしい。
詳しくは下記サイト。
http://sourceforge.net/apps/mediawiki/networkminer/index.php?title=NetworkMiner

実行ファイルを起動したら、File から pcap ファイルを読み込むことが可能。
読み込むと左のウィンドウに表示されるので選択して下にある Reload Case Files で読み込んであとは勝手に解析してくれる。

よく使いそうなのは Files と Credentials のタブ。
Files はキャプチャファイルの中で送受信があったファイルを復元してくれている。同じようなものに Images タブもある。
Credentials タブにはユーザ名やパスワードなど重要な情報を抜き出してくれる。

解析した結果は実行ファイルがあるフォルダの AssembledFiles の下に作られる。
html ファイルやメールの添付ファイルもここに保存されるため、必要な場合はここから取り出すことが可能。

2012年12月19日水曜日

medusa の使い方

パスワードクラックツールとして有名な medusa の使い方。
ほかにもリモートからのクラックツールとしては hydra とか ncrack が有名だが 機能が充実してそうな medusa を使う。

以下の@ITのサイトを参考にした。
http://www.atmarkit.co.jp/fsecurity/rensai/dknight06/dknight01.html

BackTrack には標準で付属しているためインストールなどは省略。
medusa 以外に必要になるのがユーザ名のリストやパスワードリスト、辞書など。

たとえば以下のサイトは2008年のワーストパスワードトップ500がある。
ここから抜き出しても使用できる。
http://www.whatsmypass.com/the-top-500-worst-passwords-of-all-time

以下、オプションで使いそうな部分だけ日本語に。

# medusa 
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks 

ALERT: Host information must be supplied.

Syntax: Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
  -h [TEXT]    : 検査対象のホスト名またはIPアドレスを指定
  -H [FILE]    : 検査対象のホスト名またはIPアドレスが記述されたファイルを指定
  -u [TEXT]    : 検査するユーザ名を指定
  -U [FILE]    : 検査するユーザ名が記述されたファイルを指定
  -p [TEXT]    : 検査するパスワードを指定
  -P [FILE]    : 検査するパスワードが記述されたファイルを指定
  -C [FILE]    : File containing combo entries. See README for more information.
  -O [FILE]    : File to append log information to
  -e [n/s/ns]  : n を指定するとパスワードなし、s を指定すると Password = Username で検査
  -M [TEXT]    : 検査するモジュール、要は ssh とか ftp とかを指定
  -m [TEXT]    : Parameter to pass to the module. This can be passed multiple times with a
                 different parameter each time and they will all be sent to the module (i.e.
                 -m Param1 -m Param2, etc.)
  -d           : Dump all known modules
  -n [NUM]     : デフォルトではないポートを使用するときに指定、ssh なのに tcp 1000 とか使うとき
  -s           : Enable SSL
  -g [NUM]     : Give up after trying to connect for NUM seconds (default 3)
  -r [NUM]     : Sleep NUM seconds between retry attempts (default 3)
  -R [NUM]     : Attempt NUM retries before giving up. The total number of attempts will be NUM + 1.
  -t [NUM]     : Total number of logins to be tested concurrently
  -T [NUM]     : Total number of hosts to be tested concurrently
  -L           : Parallelize logins using one username per thread. The default is to process 
                 the entire username before proceeding.
  -f           : Stop scanning host after first valid username/password found.
  -F           : Stop audit after first valid username/password found on any host.
  -b           : Suppress startup banner
  -q           : Display module's usage information
  -v [NUM]     : 表示レベルを 0 - 6 で指定
  -w [NUM]     : Error debug level [0 - 10 (more)]
  -V           : Display version
  -Z [TEXT]    : Resume scan based on map of previous scan

先ほどのワースト500のパスワードリストを使って、192.168.0.100 の ssh サーバに設定された root/pasword に対しての実行結果は以下のとおり。

# medusa -h 192.168.0.100 -u root -P 500-worst-passwords.txt -M ssh
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks 

GENERAL: Parallel Hosts: 1 Parallel Logins: 1
GENERAL: Total Hosts: 1 
GENERAL: Total Users: 1
GENERAL: Total Passwords: 501

The default build of Libssh2 is to use OpenSSL for crypto. Several Linux
distributions (e.g. Debian, Ubuntu) build it to use Libgcrypt. Unfortunately,
the implementation within Libssh2 of libgcrypt appears to be broken and is
not thread safe. If you run multiple concurrent Medusa SSH connections, you
are likely to experience segmentation faults. Please help Libssh2 fix this
issue or encourage your distro to use the default Libssh2 build options.

ACCOUNT CHECK: [ssh] Host: 192.168.0.100 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123456 (1 of 501 complete)
ACCOUNT CHECK: [ssh] Host: 192.168.0.100 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: password (2 of 501 complete)
ACCOUNT FOUND: [ssh] Host: 192.168.0.100 User: root Password: password [SUCCESS]
GENERAL: Medusa has finished.

これが500ワード全部実行するとログが多くなるので、-v で 4 を指定すると成功のみ表示される。
3以下は結果が出力されない。

# medusa -h 192.168.0.100 -u root -P 500-worst-passwords.txt -M ssh -v 4
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks 


The default build of Libssh2 is to use OpenSSL for crypto. Several Linux
distributions (e.g. Debian, Ubuntu) build it to use Libgcrypt. Unfortunately,
the implementation within Libssh2 of libgcrypt appears to be broken and is
not thread safe. If you run multiple concurrent Medusa SSH connections, you
are likely to experience segmentation faults. Please help Libssh2 fix this
issue or encourage your distro to use the default Libssh2 build options.

ACCOUNT FOUND: [ssh] Host: 192.168.0.100 User: root Password: password [SUCCESS]

2012年12月12日水曜日

Windows 端末の IPv6 の統計確認

Windows 端末で IPv6 の統計情報(送信や破棄のパケット、エラー等)を見る方法のメモ 。
基本は netsh interface ipv6 show ipstats コマンドで確認する。

C:\>netsh interface ipv6 show ipstats
MIB-II IP 統計情報
------------------------------------------------------
転送:                               無効
既定の TTL:                         128
受信:                               121
着信ヘッダー エラー:                0
着信アドレス エラー:                59
転送データグラム:                   0
不明な着信プロトコル:               0
廃棄された着信パケット:             2
配信された着信パケット:             3194
出力要求:                           3418
ルーティング廃棄数:                 0
廃棄された発信パケット:             0
経路制御不能な発信パケット:         8
再構築のタイムアウト:               60
必要な再構築:                       0
成功した再構築:                     0
失敗した再構築:                     0
成功したフラグメント:               0
失敗したフラグメント:               0
作成されたフラグメント:             0


エラーカウントや失敗したフラグメントなどが上がっていればどこかで設定ミスの可能性がある。
また同様にしてtcpの統計情報を見ることもできる。

C:\>netsh interface ipv6 show tcpstats

MIB-II TCP 統計情報
------------------------------------------------------
タイムアウト アルゴリズム:           Van Jacobson アルゴリズム
最短タイムアウト:                    10
最長タイムアウト:                    4294967295
最大接続数:                          動的
アクティブ オープン数:               30
パッシブ オープン数:                 24
試行の失敗回数:                      6
確立されたリセット:                  14
現在の確立:                          2
着信セグメント:                      638
発信セグメント:                      626
再転送セグメント:                    12
着信エラー:                          0
発信リセット:                        19


ここでタイムアウトアルゴリズムにVan Jacobson アルゴリズムとあるが、これは輻輳防止用アルゴリズム。
このアルゴリズムについては IPv4 も同じものを使用している。
また同様にして udp の統計情報も確認可能

C:\>netsh interface ipv6 show udpstats

MIB-II UDP 統計情報
------------------------------------------------------
着信データグラム:                       1621
無効な着信ポート:                       0
無効な着信データグラム:                 0
発信データグラム:                       3203

また各コマンドは rr=5 とすると5秒間隔で更新される。
ping などで状況確認するときに便利かも。

2012年11月12日月曜日

調査用のマルウェアを収集するためのサイト

調査のためにマルウェアを収集しなくてはならない。 だけど、ハニーポットを設置するのはめんどくさいし、目的のマルウェアが手に入るとも限らない。 そんなときに研究用でマルウェアサンプルを手に入れられるサイトを利用する。 アナライジングマルウェアの著書の中では下記のサイトが登録されている。2012年11月時点で実際に使うにはGoogleのアカウントが必要になる。本人確認のためらしい。 http://www.offensivecomputing.net/ そのほかにもいくつかあるが、このサイトにまとまっていたので参考。 http://zeltser.com/combating-malicious-software/malware-sample-sources.html 以下サイト名を抜粋 Contagio Malware Dump: Free; password required KernelMode.info: Free; registration required MalwareBlacklist: Free; registration required MalwareBytes Forum: Newest Malware Threats: Free MalwareBytes Forum: Newest Rogue Threats: Free MD:Pro: Commercial NovCon Twitter EXE Parsing: Free; provides links to live sites; may include benign files NovCon Twitter EXE Parsing: Free; provides links to potentially-malicious executables shared on Twitter Offensive Computing: Free SecuBox Labs: Free VirusShare: Free ダウンロードおよび実行については自己責任で。 感染しても他人に迷惑をかけないようなクローズな環境を準備して実行してください。

2012年11月10日土曜日

DHCPv6 サーバの構築

IPv6 のアドレスを配布する方法には RA と DHCPv6 がある。
現状 RA についてはゲートウェイ、ネットワークプレフィックスしか配布できないため、アドレスを固定したい場合や DNS のアドレスを配布したい場合には DHCPv6 サーバを準備する必要がある。

DHCPv6 として使えそうなものはいくつかあるが、今回は ISC DHCP を使用。
基本的な設定方法は下記に記載がある。

http://tldp.org/HOWTO/Linux+IPv6-HOWTO/hints-daemons-isc-dhcp.html

以下、抜粋して日本語コメント。

# 該当するするプレフィックス
subnet6 2001:db8:0:1::/64 {
        # クライアントに配布するアドレスレンジ
        range6 2001:db8:0:1::129 2001:db8:0:1::254;
        # 配布するDNSサーバのアドレス
        option dhcp6.name-servers fec0:0:0:1::1;      
        # ルータに権限委譲して配布させる場合に使用
        prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;
        # ここで端末のDUIDと固定アドレスをマッチさせる
        host specialclient {
      host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;
         fixed-address6 2001:db8:0:1::127;
     } 
}  
起動スクリプトは IPv4 の DHCP も DHCPv6 も同じ dhcpd を使用する。
そのため、DHCPv6 の起動時には -6 オプションをつけて起動

# /usr/sbin/dhcpd -6 -f -cf /etc/dhcp/dhcpd.conf eth1

コマンドの最後にインターフェースを指定する。これを省略する場合は/etc/sysconfig/dhcpd6にDHCPDARGS=""と言う箇所があるので、そこでインターフェースを設定する方法もある。
正常に起動すると下記のようなメッセージが出力される。

Internet Systems Consortium DHCP Server 4.1.0 
Copyright 2004-2008 Internet Systems Consortium. 
All rights reserved. 
For info, please visit http://www.isc.org/sw/dhcp/ 
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file 
Wrote 0 leases to leases file. 
Bound to *:547 
Listening on Socket/5/eth1/2001:db8:0:1::/64 
Sending on   Socket/5/eth1/2001:db8:0:1::/64
 
正常に起動してもアドレスが取得できない場合は ip6tables や selinux を確認。

IPv6 の利用状況

APNIC の資料から上位20位まで抜粋。
http://labs.apnic.net/dists/v6dcc.html

こちらが8月に更新された情報。
日本の利用状況は2%程度。

Index ISO-3166 Code   Internet Users V6 Use ratio V6 Users (Est) Population Country
1RO 8664915 9.63% 834431 22104376Romania
2EU 0 4.62% 0 0European Union
3FR 50020615 4.44% 2220915 64793544France
4LU 466181 3.15% 14684 510045Luxembourg
5JP 100915928 2.08% 2099051 126144911Japan
6US 248018615 1.59% 3943495 316754298United States of America
7CH 6449538 0.95% 61270 7659784Switzerland
8HR 2652779 0.82% 21752 4481047Croatia
9SK 4344687 0.79% 34323 5485717Slovakia
10NO 4577875 0.68% 31129 4709748Norway
11SI 1417911 0.51% 7231 1997059Slovenia
12CN 516198120 0.45% 2322891 1344265938China
13FI 4664062 0.43% 20055 5264179Finland
14CZ 7215768 0.42% 30306 10177388Czech Republic
15RU 61120908 0.41% 250595 137970449Russian Federation
16NL 15147820 0.41% 62106 16924939Netherlands
17DE 67959550 0.40% 271838 82175998Germany
18AU 19811041 0.39% 77263 22061293Australia
19MV 113896 0.32% 364 394107Maldives
20SE 8459026 0.27% 22839 9105518Sweden




次は11月に更新された情報。
日本が2.4%とじわりと上昇。

Index ISO-3166 Code   Internet Users V6 Use ratio V6 Users (Est) Population Country
1RO   8662247 9.78% 847167 22097569Romania
2FR   50070881 4.06% 2032877 64858655France
3LU   467192 2.63% 12287 511152Luxembourg
4JP   100869236 2.40% 2420861 126086546Japan
5US   248470498 1.75% 4348233 317331416United States of America
6CZ   7214242 1.35% 97392 10175236Czech Republic
7CH   6452246 0.81% 52263 7663001Switzerland
8SI   1417529 0.81% 11481 1996521Slovenia
9NO   4580751 0.71% 32523 4712707Norway
10CN   516678107 0.68% 3513411 1345515906China
11SK   4345768 0.68% 29551 5487081Slovakia
12DE   67951719 0.57% 387324 82166529Germany
13NL   15159055 0.52% 78827 16937492Netherlands
14TW   16197310 0.52% 84226 23139015Taiwan
15LT   2095531 0.48% 10058 3521902Lithuania
16PT   5473847 0.46% 25179 10796544Portugal
17AU   19854394 0.40% 79417 22109571Australia
18SE   8461613 0.37% 31307 9108303Sweden
19FI   4664776 0.36% 16793 5264985Finland
20ZA   6818114 0.32% 21817 49051185South Africa

2012年11月9日金曜日

iptables と ip6tables

IPv6 でサーバを構築するときの注意として ip6tables がある。
iptables は IPv4 の通信についての FW 機能を提供し、ip6tables は IPv6 のFW 機能を提供する。
これはインストール時から有効になっており、サーバ構築時には変更が必要になってくる。
[root@localhost ~]# chkconfig --list | grep table
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
  コマンドの書式などは基本的に一緒。
[root@localhost ~]# iptables --help
iptables v1.4.7

Usage: iptables -[AD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]
       iptables -h (print this help information)

 [root@localhost ~]# ip6tables --help
ip6tables v1.4.7

Usage: ip6tables -[AD] chain rule-specification [options]
       ip6tables -I chain [rulenum] rule-specification [options]
       ip6tables -R chain rulenum rule-specification [options]
       ip6tables -D chain rulenum [options]
       ip6tables -[LS] [chain [rulenum]] [options]
       ip6tables -[FZ] [chain] [options]
       ip6tables -[NX] chain
       ip6tables -E old-chain-name new-chain-name
       ip6tables -P chain target [options]
       ip6tables -h (print this help information)
一緒で分かれていると言うことは、1台のサーバについて2つのFW機能を管理しないといけなくなる。
そして、IPv6 の場合は複数のアドレスを持つ場合があるので、それらの管理を考える必要もあるので注意が必要。

取り急ぎサーバを構築して機能検証するなら ip6tables を止めるのもあり。