ゆるいぞIT

今回は”Kali linix”を使用してターゲットホストに”バックドアを作成→侵入までの流れを見てみましょう。

バックドア : PCやサーバー、システムなどに不正侵入するための入口 (裏口的なもの)

※Youtubeでは本記事の動画版をご視聴いただけます。

この記事はこんな人にオススメ
  • ハッキングスキルについて知りたい
  • セキュリティの知識を学習したい
  • ITインフラの知識を学習したい

0.使用する環境

ゆるいぞIT

本演習で使用する”ソフトウェア“や”環境構成“は下記になります。

ソフトウェア

  • 仮想環境 : Virtual Box
  • 攻撃用サーバ : Kali Linux
  • ターゲットホスト : Metasploitable2

演習構成

赤い枠線内 : 物理環境
青い枠線内 : 仮想環境
ホストOS : 物理PC(Windows11)
無線LANルータ : ルータ経由でインターネットに接続
攻撃用サーバ : Kali Linux
ターゲットホスト : Metasploitable2

1.演習の流れ

ゆるいぞIT

演習環境 ⑤Kali linix⑥ターゲットホスト へ実行します。

STEP1
ターゲットホストの偵察

事前の偵察としてポートスキャンによる調査を実施

STEP2
脆弱性の確認

ポートスキャンの結果から使用可能な脆弱性を特定

STEP3
バックドアの作成

exploit(攻撃用プログラム)によるクラッキングの実行

STEP4
ターゲットホストへの接続確認

バックドア経由でターゲットホストへログインを実施

2.ターゲットホストの偵察

ゆるいぞIT

まずは事前準備としてターゲットホスト(サーバ)へのポートスキャンを実行します。

ポートとは?

そもそも「ポートって何?」という方もいると思うので簡単に説明します。

下記のように”サーバ”というのは色々な用途で利用されています。

サーバの利用例
  • “企業のサイト”や”個人ブログ”などのWebサイト
  • “DropBox”や”OneDrive”などのファイル共有サービス
  • “NETFLIX”や”Hulu”の動画配信サービス

それらのサービスを提供する為にサーバ側では各サービスにあわせた扉のようなものを開けておく必要があります。

その扉のことを「ポート」と呼びます。

ポートスキャンの実行

本題に戻りますが、ポートスキャンの実行には「nmap(Network Mapper)」というコマンドを使用します。

nmap : ターゲットホスト上で実行されているポート、ソフトウェアの名称、バージョン等を特定することができるオープンソースのコマンドラインツール

nmap”を実行すると下記ような結果が返ってきます。

PORT : スキャンで見つけたポート番号
STATE : 現在のポートの状態
SERVICE : ポートのサービス名(21番ならFTP、22番ならSSH、23番ならTelnetなど)
VERSION : サービスで使用しているプログラムのバージョン
xxx filtered tcp ports : FWや経路途中の何かによってポートが解放されているのか、閉じているのか不明な状況のポート数

nmapの基本動作

nmap”は下記のよう流れでターゲットホストへのポートスキャンを実行しています。

① 攻撃対象のホストにPingを送信して応答を確認
② TCPリクエストを送信してTCPコネクションを確立
③ TCPコネクションが確立できたポートはスキャン成功

nmap”には多数のオプションがあり、細かい動作が指定ができるオプション構成になっています。

nmapコマンドのオプション
  • -sT : TCPスキャン
  • -sS : SYNスキャン
  • -sU : UDPスキャン
  • -Pn : Pingなしスキャン、DNSの逆引き
  • -v : ポートスキャン詳細情報表示
  • -A : -O,-sV,-sC,–tracerouteを使用
  • -T4 : 並列処理の数

このことを踏まえて、より実践的なコマンドでポートスキャンを実行してみましょう。

ポート番号”や”サービス名”などの基本的な情報は同じですが、複数のオプションを指定することで詳細な情報を取得することができます。

ただ、オプションを増やすとポートスキャン完了までの時間が長くなってしまうので、実行する際は調整が必要になります。

TCPスキャンで(-sT)はなくSYNスキャン(-sS)にしたのにも理由があり、経路上のFirewallやUTM製品に検知されにくくするというメリットがあります。

SYNスキャンにするメリット (※機種や設定により異なります。)
  • 3ウェイハンドシェイクでのコネクションが確立前にスキャンが完了するので検知されない可能性が低い
  • 通信ログとして記録される場合も、3ウェイハンドシェイクでのコネクションが確立前にスキャンが完了するのでログに記録される可能性が低い
  • TCPスキャンと違いSYNだけ投げるので、その分スキャン時間が高速になる

NSEスクリプト

”nmap”は「NSE(Nmap Scripting Engine)」というスクリプトとの連携も可能で”脆弱性の診断”や”攻撃時の自動化”などで使用したりします。

下記はNSEスクリプトの一例になります。

  • http-headers : 80番ポートなどのWeb系のサービスからヘッダー情報を取得することが可能
  • http-enum : ディレクトリの情報を取得することが可能

3.脆弱性の確認

ゆるいぞIT

ここではバックドアの作成に利用できそうな脆弱性を見つけていきます。

話を戻しますが”nmap”でポートスキャンしたことにより、ターゲットホストで何のポート(サービス)が解放されているのかが分かったと思います。

今回はその中からFTPで使用しているvsftpd(2.3.4)の脆弱性をついてバックドアを作成していきましょう。

脆弱性 : OSやソフトウェアにおいてプログラムの不具合や設計上のミスが原因となって発生するセキュリティ上の欠陥

なぜvsftpd(2.3.4)に脆弱性があるということが分かるのかというと、”ExploitDB”という脆弱性や攻撃用プログラムの情報が纏まっているサイトで確認することができます。

vsftpdの”d”はデーモン : デーモンは「常駐プログラム」のことで、サービス毎の接続を待ち受けて接続が来たら処理を実行するプログラム

Exploit DBで”vsftpd2.3.4”の検索すると、対象のexploit(vsftpd_234_backdoor.rb)を見つけることができます。

exploit攻撃用プログラム

4.バックドアの作成

ゆるいぞIT

先ほど見つけた脆弱性を利用しバックドアを作成します。

Metasploit(ソフトウェア)について

そもそもサーバにクラッキングでどうやるの?」と思うかもしれませんが、本記事ではKali Linuxに実装されているMetasploitという侵入テスト用のツールを使用します。

Metasploit : ペネトレーションテストやハッキング用として使用するソフトウェアで、攻撃用のコマンド、プログラム、シェル等が初めからインストールされている

exploit(攻撃用プログラム)の確認

まずはexploitの中身(プログラム)を見ることでバックドア作成まので流れが理解できると思うので、ひとまず確認してみましょう。

プログラムの確認ポイントとしては3つあり…

① :) という文字列

FTP接続する際にユーザ名に「 :) 」を含めなさいという意味になります。
「 :) 」以外の文字列は何を含めても問題ありません。

② RPORT=6200

これは”ポート6200”とコネクションを張り、そこをバックドアとして利用するという意味になります。

③ handle_backdoor 配下の部分

これはユーザ名に” :) ”が含まれていたら、”ポート6200”を使ってバックドアを生成するという命令文になります。

手動での実行

上記で確認したexploit(攻撃用プログラム)を走らせればバックドアを簡単に設置できますが、いきなりexploitを実行してしまうと細かい動作が分からなくなってしまうので、まずはプログラムの内容を手動で実行して動きを確認してみましょう。

まずは攻撃する前にターゲットホストのポート状態を確認します。

netstat : 現在のポートの状態を確認できるコマンド

結果としては何も表示されないので6200番ポートは閉じている状態です。

ポートの確認が完了したら、Kali Linuxからターゲットホストの21番ポート(ftp)にアクセスします。

netcat : TCP・UDP接続などを利用して、コマンドラインからデータを送受信するためのツール

FTPでアクセスする際に”ユーザ名”と”パスワード”が必要になりますが、ここでさっき説明した「 :) 」という文字列を含めたユーザ名を入力します。

これで”対象ポート(6200)”が開いたはずなのでターゲットサーバで確認してみましょう。

先ほどは何も表示されなかったのでポートが閉じた状態でしたが、今回はステータスが”LISTEN状態”となっているので対象ポートが開いたことを確認できました。

これでバックドアの作成が完了したので、Kali linixからアクセスしてみましょう。

ログインが成功し、操作用のコマンド(”whoami”、”usename”、”ip-a”など)を打つと結果が返ってきます。

これでバックドアを作って侵入するまでの一連の流れが成功しました。

exploit(攻撃用プログラム)での実行

ゆるいぞIT

攻撃の流れも分かったと思うので次は”exploit“を使って試してみましょう。

STEP1
Metasploitの起動
STEP2
vsftpdの”exploit”を検索

サーチ結果から”vsftpd_234_backdoor“が見つかりました。

STEP3
該当モジュールの起動
STEP4
モジュールのオプション確認
STEP5
ターゲットホスト(IPアドレス)の設定
STEP6
“exploit”の実行

成功するといくつかメッセージが出力されバックドア作成→ターゲットホストへの侵入までの処理が完了します。

これで”exploit”を使用した場合の流れが掴めたかと思います。

Metasploitのモジュールについて

今回は侵入手段としてexploit(攻撃用プログラム)のモジュールを使いましたが他にもモジュールの種類があります。

モジュールの数は脆弱性情報とリンクしており、脆弱性の数だけモジュールも増えていきます。

Metasploitのモジュール
  • auxilary : 偵察手段として使われるモジュール
  • post、payload : 侵入後の操作や接続を確立する為のモジュール
  • encoders : 暗号化用モジュール
  • evasion : アンチウィルスを回避する為のモジュール

5.最後に

ゆるいぞIT

今回はターゲットホストにバックドアを作成→侵入するまでの一連の流れを実施してみました。

使用可能な脆弱性があることが前提となりますが、思った以上に簡単にターゲットホストへ侵入できてしまったかと思います。

セキュリティ(OSやパッチなど)のアップデートは小まめに実施するようにしましょう。

ということで、今回はここまでにしたいと思います。

それでは、また次回お会いしましょう!