MetasploitをDebian8にインストールして、いくつかのテストをしてみました。

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のコードリーディングもできるという一石三鳥になりそうです。

いつかは脆弱性やバグの修正までできるように馴れるといいですね。

ではまた〜。

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *