Xmas スキャン

Xmas スキャン

Xmasスキャンでは
TCP パケットの
FIN
URG
PUSH
の3つのフラグを設定し送信する

今回は
Metasploitable の
FTPポート21番に対して実行

nmap -sX -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 06:06 JST
Nmap scan report for 192.168.1.137
Host is up (0.00022s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds

となり

Wireshark で
statictics > Flow Graph
で表示

Flow type を
TCP Flows にして確認すると
FIN PSH URG に対し
応答がないことがわかる

FIN
のときと同じく
パケットを送信して
ポートが開いているなら応答がない

次に閉じている24番ポートに実行

nmap -sX -p 24 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 06:11 JST
Nmap scan report for 192.168.1.137
Host is up (0.00040s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

となり

Wireshark でみてみると
FIN PSH URG パケットを送ると
TCPパケットのRSTと ACK が返ってくるのがわかる

このようにTCPパケットが返ってくるなら
ポートが閉じていると判断できる

Nullスキャン

Nullスキャン

Null スキャンでは
なんのフラグも設定しないTCPパケットを送信する

今回はFTPポート21番に実行

nmap -sN -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-28 05:25 JST
Nmap scan report for 192.168.1.137
Host is up (0.00041s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds

となる

wireshark でフロー図をみるときに
tcp で絞り込み

statictics > Flow Graph
で表示

なお
Flow type を
TCP Flows にして確認すると wireshark が落ちるので注意

応答がないときには
ポートが開いている
もしくは
フィルタリングがされてると判断

次に閉じているポートで実践

nmap -sN -p 24 192.168.1.137

とする

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-28 05:29 JST
Nmap scan report for 192.168.1.137
Host is up (0.00042s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

となる

wireshark でフロー図をみるときに
tcp で絞り込み

statictics > Flow Graph
で表示

RST、ACKパケットが返ってきたら
ポートが閉じていると判断できる

FIN スキャン

FIN スキャン

FIN スキャンでは
FINパケットという
FINフラグを設定したTCPパケットを送信する

FINパケットは
通信終了要求に使われるが
通信前にFINパケットを送信し端末の様子を待つ

今回は
Metasploitable の21ポートのFTPに対して
FINスキャンを行う

nmap -sF -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 04:44 JST
Nmap scan report for 192.168.1.137
Host is up (0.00030s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.63 seconds

となり

Wireshark で
statictics > Flow Graph
で表示

Flow type を
TCP Flows にして確認すると
応答がないことがわかる

FINパケットを送信して
ポートが開いているなら応答がない

また
フィルタリングされていても応答がない

なお Windows 系OSだと Fin スキャンに反応しないので
WindowsOSであるか判別するのにも使える

次に閉じているポートに実行

nmap -sF -p 24 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 04:50 JST
Nmap scan report for 192.168.1.137
Host is up (0.00047s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds

となり

Wireshark でみてみると
FINパケットを送ると
TCPパケットのRSTと ACK が返ってくるのがわかる

このようにTCPパケットが返ってくるなら
ポートが閉じていると判断できる

Ping スキャン

Ping スキャン

nmap で ping スキャンをするには
-sP オプションを使う

なお対象ネットワークのIPアドレスを
総当りでping することを ping スイープという

まずは windows10 へ ping スキャン

nmap -sP 192.168.1.166

次に wireshark でフローをみてみる

Wiresharkで特定のプロトコルだけを表示させる

を参考に
ARP のみに絞り込むので
arp
として絞り込む

statictics > Flow Graph
で表示

Limit to display filter
にチェックを入れるとARP のみに絞り込んで表示できる

nmap の仕様では
LAN内端末ならARP要求が使われる

WANの端末を対象にするなら
nmap で –send-ip オプションを使う

試しに Metasploitable に対して実行

nmap -sP 192.168.1.137 --send-ip

statictics > Flow Graph
で表示

すると
ICMP Echo
443 ポートへの SYN
80 ポートへの ACK
ICMP Timestamp
が送られているのがわかる

これに対して
TCP パケットや ICMP の返答があれば稼働していると判断できる

次に稼働していない端末へのPing の実行

nmap -sP 192.168.1.150 --send-ip

statictics > Flow Graph
で表示

Limit to display filter
にチェックを入れるとARP のみに絞り込んで表示

これで
nmap が3回 ARP 要求を存在しない端末に対し実行するが
返答がないため稼働していないと判断できる

Linux の ping は ICMP だけ送信するが
namp で
-sP オプションと
–send-ip オプションをつければ
ファイアウォールで ICMP が帰ってこなくても
TCPによる応答を調べることができるので
nmap を使うことで
より高い精度で対象の稼働を調べることができる

UDP スキャン

UDP スキャン

よく使われるUDPサービスは
DNS の53ポート
SMNP の161/162 ポート
DHCP の 67/68 ポート

今回は Metasploitable の 111 ポートのスキャン

nmap -sU -p 111 192.168.1.137

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.137
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

Flow type は
All Flows のままでOK

これで2つ目までの通信で応答があることで
ポートが開いているのがわかる

次に windows10 のフィルタリングされている53ポートに
UDPスキャンを実行

nmap -sU -p 53 192.168.1.166

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.166
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

この場合応答はないけど
UDPサービスによっては応答はないけど
サービスが開いていることがあるので

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-19 07:15 JST
Nmap scan report for DESKTOP-GGEV0LD (192.168.1.166)
Host is up (0.00029s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain
MAC Address: 08:00:27:AB:0B:84 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.38 seconds

というように
open/filltered
という結果が
nmap で表示される

次に閉じている2050番ポートへのスキャン
今回は Metasploitable へ行う

nmap -sU -p 2050 192.168.1.166

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.166
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

すると
ICMPポート到達不能エラーが帰ってくるので
この場合
ポートが閉じていると判断できる

なおUDPはTCPと違って
パケットの到達を保証しないのでスキャン結果には信頼性に欠ける

TCP SYN スキャン

TCP SYN スキャン

今回は
KaliLinux
metasploitable
Windows10
の3つの仮想マシンを
VirtualBox で起動

今回はTCP SYNスキャンを行う

この3つを起動したら
KaliLinux で

wireshark &


バックグラウンドでwireshark を起動

キャプチャ対象は eth0

次に KaliLinux から Windows10 に対して
445ポートをスキャン

まずは開いているポートに対して実行

nmap -sS -p 445 192.168.1.166

を実行

次に
wireshark のパケットを Windows10 のみにするので絞り込み

ip.addr==192.168.1.166

さらに見やすくするために
フロー図を表示する

Statistics > Flow Graph
でフロー図を表示

すると3回のやりとりがあるのがわかる

2回めの
SYN ACKまでは
TCPフルコネクトスキャンと同じだけど

RSTパケットを3回めで送ることで
通信を途中で止めている

次に閉じているポートに対して実行

今回は Metaspliitable に対して実行

nmap -sS -p 24 192.168.1.137

を実行

次に
wireshark のパケットを Metasploitable のみにするので絞り込み

ip.addr==192.168.1.137

さらに見やすくするために
フロー図を表示する

Statistics > Flow Graph
でフロー図を表示

すると今回は
2回のやりとりになる

TCP SYN スキャンは
ポートが開いていても通信を確立しているせず
RSTパケットを送り途中で通信をやめるので
サービスログに残らない

このためステルススキャンとも言われている

なおTCP SYNスキャンには root 権限が必要

nmap でスキャンの種類を指定しないと
TCP SYN スキャンで行うようになっている

Xplico によるキャプチャファイルの解析

Xplico によるキャプチャファイルの解析

WireShark だと画像やメールの解析は不向きなので
Xplico を使用

KaliLinux にインストールするには

apt install xplico -y
service apache2 restart 


Xplico の Webページが作成され
反映のために Apache2 を再起動

/etc/init.d/xplico start

でXplico を起動

次に
Firefox を起動し
http://localhost:9876/
へアクセス

–Language– を English
Username に admin
Pasword にxplico
でログイン

ログインして
コントロールパネルで
Menu から Users を選択すると登録されているユーザが表示される

今回は xplico ユーザを使うので
一度ログアウトし
xplico ユーザでログイン

xplicoユーザでも
ログインのパスワードは
xplico
となっている

ログインしたら
Case と Session を作成するので

New Case をクリック

データの解析を選択になるので
Uploading PCAP capture file/s
にチェックをいれると
キャプチャファイルの解析

Live acquisition ならリアルタイムの解析となる

今回はキャプチャファイルの解析をしたいので
Uploading PCAP capture file/s
を選択

Case name には任意のケース名
今回は First xplico search として

External reference は空白のままでOK

Create をクリック

これでCase が作成されるので
作成された Case をクリック

New Session をクリック

Session name に任意のセッション名を入力
今回は first session としてみた

Create をクリック

これで Case と Sesssion ができたので
次にファイルをアップロードするので
作成したセッションをクリック

アップロードするために
Browseをクリックし
pcap 形式ファイルを選択

Upload をクリック

これでファイルが解析され
解析結果が表示される

NetworkMiner

NetworkMiner

まず必要なパッケージのインストール

apt-get install libmono-system-windows-forms4.0-cil
apt-get install libmono-system-web4.0-cil
apt-get install libmono-system-net4.0-cil
apt-get install libmono-system-runtime-serialization4.0-cil
apt-get install libmono-system-xml-linq4.0-cil
mono --version

で mono のバージョンを確認

ver 5 より新しいのであれば次に
NetworkMiner のインストール

wget https://www.netresec.com/?download=NetworkMiner -O /tmp/nm.zip

でファイルを取得

sudo unzip /tmp/nm.zip -d /opt/


/opt/以下へ展開

cd /opt/NetworkMiner*

で移動

chmod +x NetworkMiner.exe
chmod -R go+w AssembledFiles/
chmod -R go+w Captures/ 

で権限変更

mono /opt/NetworkMiner_2-5/NetworkMiner.exe 

で起動できる

Wireshark

Wireshark

wireshark 

で起動

キャプチャを開始するには
Capture > Options

これでどのLANアダプターをキャプチャするか選択できる

今回は eth0 にするので
Promiscuous にチェックがあるのを確認
Start をクリック

これでキャプチャが開始される

次にHTTPパケットを観察するので
Firefox を起動し
適当に巡回しておく

このままだとわかりにくいので
http に絞り込み Enter

OCSP も表示されるが
これは公開鍵証明書の失効状態を取得するプロトコル

ほかにもSSDP が表示されることもある

SSDP は
ネットワーク上のUPnPデバイスを検出するためのプロトコル

詳しくは
SSDPとは

を参考に

SSDPを除外したいのなら
http && tcp
とすればOK

もしGETのみ表示したいのなら
http.request.method == “GET”
とすればOK

次にキャプチャフィルター

特定のパケットのみ取得するようになるので
ストレージ圧迫を軽減できるようになる

Capture > Capture Filters …
をクリック

これでフィルターが表示されるので
選択してOKを押せば絞り込みができる

構文で
host IPアドレス
となっているなら
指定したIPアドレスとの送受信をキャプチャ

ip src host IPアドレス
なら
送信元が指定したIPアドレスのパケットのみキャプチャ

port ポート番号
なら
指定したポートの通信をキャプチャ

not icmp
なら
ICMPパケット以外をキャプチャ

tcp dst port ポート番号
なら
宛先ポート番号が指定したポート番号のパケットだけキャプチャ

となる

例えば
HTTP TCP Port(80)
とすると
表示されるものが絞られる

なおキャプチャしたデータは
pcap もしくは
pcapng で保存される

ctrl + s で保存ができる

デフォルトは
pcapng 形式での保存となる

テキストエディタで参照したいのなら
File > Export Packet Disections >
As Plain Text
とするとテキスト形式で出力できる

また1つ1つのパケットをみるより
全体をみるのなら
Analyze > Follow で
TCPやHTTPなどのストリームをみることができる

もし平文で認証データが送信されているのなら
ここで確認ができる

またデータストリームのエクスポートするだけなら
NetworkMiner が便利らしい

インストール方法については
NETRESEC Network Security Blog – Tag : Linux

を参考に

ただし
pcapng は使えないので
pcap 形式で保存する必要がある

ctrl + shift + s で Save as となるので
保存形式を
pcap で保存する

なお
pcap の大きさによってはフリーズするので
その場合
editcap などでファイルを分割する