
ゆるいぞIT
今回は”Kali linix”を使用してターゲットホストに”バックドア“を作成→侵入までの流れを見てみましょう。
※Youtubeでは本記事の動画版をご視聴いただけます。
- ハッキングスキルについて知りたい
- セキュリティの知識を学習したい
- ITインフラの知識を学習したい
実務や演習等を除き、インターネット上のサーバへクラッキングすることは違法行為となりますのでご注意ください。
0.使用する環境

ゆるいぞIT
本演習で使用する”ソフトウェア“や”環境構成“は下記になります。
ソフトウェア
- 仮想環境 : Virtual Box
- 攻撃用サーバ : Kali Linux
- ターゲットホスト : Metasploitable2
演習構成

① 赤い枠線内 : 物理環境
② 青い枠線内 : 仮想環境
③ ホストOS : 物理PC(Windows11)
④ 無線LANルータ : ルータ経由でインターネットに接続
⑤ 攻撃用サーバ : Kali Linux
⑥ ターゲットホスト : Metasploitable2
1.演習の流れ

ゆるいぞIT
演習環境 ⑤Kali linix → ⑥ターゲットホスト へ実行します。
事前の偵察としてポートスキャンによる調査を実施
ポートスキャンの結果から使用可能な脆弱性を特定
exploit(攻撃用プログラム)によるクラッキングの実行
バックドア経由でターゲットホストへログインを実施
2.ターゲットホストの偵察

ゆるいぞIT
まずは事前準備としてターゲットホスト(サーバ)へのポートスキャンを実行します。
ポートとは?
そもそも「ポートって何?」という方もいると思うので簡単に説明します。
下記のように”サーバ”というのは色々な用途で利用されています。
- “企業のサイト”や”個人ブログ”などのWebサイト
- “DropBox”や”OneDrive”などのファイル共有サービス
- “NETFLIX”や”Hulu”の動画配信サービス
それらのサービスを提供する為にサーバ側では各サービスにあわせた扉のようなものを開けておく必要があります。
その扉のことを「ポート」と呼びます。
➡ 参考 : TCPやUDPにおけるポート番号の一覧 (Wiki)
ポートスキャンの実行
本題に戻りますが、ポートスキャンの実行には「nmap(Network Mapper)」というコマンドを使用します。
”nmap”を実行すると下記ような結果が返ってきます。
$ nmap -sV -O <ターゲットIP>

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

”nmap”は下記のよう流れでターゲットホストへのポートスキャンを実行しています。
① 攻撃対象のホストにPingを送信して応答を確認
② TCPリクエストを送信してTCPコネクションを確立
③ TCPコネクションが確立できたポートはスキャン成功
”nmap”には多数のオプションがあり、細かい動作が指定ができるオプション構成になっています。
- -sT : TCPスキャン
- -sS : SYNスキャン
- -sU : UDPスキャン
- -Pn : Pingなしスキャン、DNSの逆引き
- -v : ポートスキャン詳細情報表示
- -A : -O,-sV,-sC,–tracerouteを使用
- -T4 : 並列処理の数
このことを踏まえて、より実践的なコマンドでポートスキャンを実行してみましょう。
$ nmap -Pn -n -v -sS -A -T4 –reason <ターゲットIP>

”ポート番号”や”サービス名”などの基本的な情報は同じですが、複数のオプションを指定することで詳細な情報を取得することができます。
ただ、オプションを増やすとポートスキャン完了までの時間が長くなってしまうので、実行する際は調整が必要になります。
TCPスキャンで(-sT)はなくSYNスキャン(-sS)にしたのにも理由があり、経路上のFirewallやUTM製品に検知されにくくするというメリットがあります。
- 3ウェイハンドシェイクでのコネクションが確立前にスキャンが完了するので検知されない可能性が低い
- 通信ログとして記録される場合も、3ウェイハンドシェイクでのコネクションが確立前にスキャンが完了するのでログに記録される可能性が低い
- TCPスキャンと違いSYNだけ投げるので、その分スキャン時間が高速になる
NSEスクリプト
”nmap”は「NSE(Nmap Scripting Engine)」というスクリプトとの連携も可能で”脆弱性の診断”や”攻撃時の自動化”などで使用したりします。
下記はNSEスクリプトの一例になります。
- http-headers : 80番ポートなどのWeb系のサービスからヘッダー情報を取得することが可能
$ nmap –script http-headers <ターゲットIP>
- http-enum : ディレクトリの情報を取得することが可能
$ nmap –script http-enum 10.0.0.5
3.脆弱性の確認

ゆるいぞIT
ここではバックドアの作成に利用できそうな脆弱性を見つけていきます。
話を戻しますが”nmap”でポートスキャンしたことにより、ターゲットホストで何のポート(サービス)が解放されているのかが分かったと思います。
今回はその中からFTPで使用しているvsftpd(2.3.4)の脆弱性をついてバックドアを作成していきましょう。
なぜvsftpd(2.3.4)に脆弱性があるということが分かるのかというと、”ExploitDB”という脆弱性や攻撃用プログラムの情報が纏まっているサイトで確認することができます。
Exploit DBで”vsftpd2.3.4”の検索すると、対象のexploit(vsftpd_234_backdoor.rb)を見つけることができます。

4.バックドアの作成

ゆるいぞIT
先ほど見つけた脆弱性を利用しバックドアを作成します。
Metasploit(ソフトウェア)について
「そもそもサーバにクラッキングでどうやるの?」と思うかもしれませんが、本記事ではKali Linuxに実装されているMetasploitという侵入テスト用のツールを使用します。
exploit(攻撃用プログラム)の確認
まずはexploitの中身(プログラム)を見ることでバックドア作成まので流れが理解できると思うので、ひとまず確認してみましょう。
プログラムの確認ポイントとしては3つあり…
FTP接続する際にユーザ名に「 :) 」を含めなさいという意味になります。
「 :) 」以外の文字列は何を含めても問題ありません。

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

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

手動での実行
上記で確認したexploit(攻撃用プログラム)を走らせればバックドアを簡単に設置できますが、いきなりexploitを実行してしまうと細かい動作が分からなくなってしまうので、まずはプログラムの内容を手動で実行して動きを確認してみましょう。
まずは攻撃する前にターゲットホストのポート状態を確認します。
# netstat -na | grep <ポート番号>

結果としては何も表示されないので6200番ポートは閉じている状態です。
ポートの確認が完了したら、Kali Linuxからターゲットホストの21番ポート(ftp)にアクセスします。
$ natcat (nc) <ターゲットIP>

FTPでアクセスする際に”ユーザ名”と”パスワード”が必要になりますが、ここでさっき説明した「 :) 」という文字列を含めたユーザ名を入力します。
これで”対象ポート(6200)”が開いたはずなのでターゲットサーバで確認してみましょう。

先ほどは何も表示されなかったのでポートが閉じた状態でしたが、今回はステータスが”LISTEN状態”となっているので対象ポートが開いたことを確認できました。
これでバックドアの作成が完了したので、Kali linixからアクセスしてみましょう。
$ netcat (nc) -nv <ターゲットIP>

ログインが成功し、操作用のコマンド(”whoami”、”usename”、”ip-a”など)を打つと結果が返ってきます。
これでバックドアを作って侵入するまでの一連の流れが成功しました。
exploit(攻撃用プログラム)での実行

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

msf6 > search vsftpd backdoor
サーチ結果から”vsftpd_234_backdoor“が見つかりました。
msf6 > use 0

msf6 > show options

msf6 > set RHOST <ターゲットIP>

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

これで”exploit”を使用した場合の流れが掴めたかと思います。
Metasploitのモジュールについて
今回は侵入手段としてexploit(攻撃用プログラム)のモジュールを使いましたが他にもモジュールの種類があります。
モジュールの数は脆弱性情報とリンクしており、脆弱性の数だけモジュールも増えていきます。
- auxilary : 偵察手段として使われるモジュール
- post、payload : 侵入後の操作や接続を確立する為のモジュール
- encoders : 暗号化用モジュール
- evasion : アンチウィルスを回避する為のモジュール
5.最後に

ゆるいぞIT
今回はターゲットホストにバックドアを作成→侵入するまでの一連の流れを実施してみました。
使用可能な脆弱性があることが前提となりますが、思った以上に簡単にターゲットホストへ侵入できてしまったかと思います。
セキュリティ(OSやパッチなど)のアップデートは小まめに実施するようにしましょう。
ということで、今回はここまでにしたいと思います。
それでは、また次回お会いしましょう!