クラックツールHydraでベーシック認証を突破してみる

公開日: : 最終更新日:2014/08/14 Hack, SECURITY, 備忘録 ,

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://www.thc.org/thc-hydra/

今回は、比較的チャレンジのハードルの低い、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

関連記事

bash設定ファイルについてまとめてみた

仮想環境を組んだ時に、環境変数が所どころ未設定なことがあった。 環境変数の設定にはbashの設定フ

記事を読む

nerdtree

Vimプラグイン「NERDTree」設定・コマンド備忘録

Vimのプラグインである「NERDTree」について、設定・コマンドを備忘録としてまとめておきます。

記事を読む

john the ripper

パスワードクラックツール JOHN THE RIPPER 使い方まとめ

パスワードクラッキングツールである「JOHN THE RIPPER」の使い方を備忘録としてまとめてお

記事を読む

PHPのextensionが読み込まれない問題…

大したあれではないが、ちょっと詰まったのでメモ。。。 事のぼったんは久々にWordPressを

記事を読む

dordoidくん

【Android】難読化ツールProguard設定まとめ

Android開発環境の1つであるEclipseでは、標準でAndroidプロジェクトの難読化ツール

記事を読む

Win7, 64bit環境でのcocos2d-x環境構築まとめ

さて、いままでJavaオンリーでゴリゴリとアプリリリースしてきたわけですが、ゲームを作るとなると、ど

記事を読む

MySQLでの条件付きSUM,COUNT

以前つっかかったMySQLでの条件付きSUM,条件付きCOUNTについて備忘録。。。 通常、条

記事を読む

【Androidエラー】Conversion to Dalvik format failed with error 1

Androidにおいて、アプリケーションを作成し終え、いざパッケージをエクスポートっ!!というところ

記事を読む

android_kitkat

Android4.4(API19)KitKatでのGraphicalLayout,AdMob問題

Androidの新バージョンKitKatがリリースされてもう結構経つが、いまさら我が開発環境でも導入

記事を読む

【Android】APKのデコンパイルまとめ

AndroidのプロジェクトをパッケージングしたAPKファイルをデコンパイル(Javaのソースコード

記事を読む

GoogleAdsense

Comment

  1. Holmes より:

    こんにちは。
    サイト読ませてもらいました。
    僕もHydraを使ってパスワード解析をやってみたんですが、表示されるパスワードが間違っています。
    例えば1234というバスワードが正解で、パスワードリストに1234という数字が入っているのに、表示される答えが違っています。
    これはなぜなのでしょう?

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

GoogleAdsense

PAGE TOP ↑