3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ハッキング・ラボ⑬】有線LANをハッキングする~ポートスキャン~

Last updated at Posted at 2021-08-13

有線LANに対して、ハッキングをしていきます。
主にポートスキャンについて取り上げます。


まとめ記事(①〜⑯をまとめてます)
【ハッキング・ラボのつくりかた】をやってみた

システム環境

仮想化ソフト:VirtualBox 6.1.0
ホストOS:Windows10
ゲストOS1:Kali Linux 2020.1
ゲストOS2:Windows7
ゲストOS3:Windows10
ゲストOS4:Metasploitable

攻撃端末はゲストOS1、ターゲット端末はホストOS、ゲストOS4です。
IPアドレスはゲストOS1が10.0.0.2、ホストOSが10.0.0.1、ゲストOS4が10.0.0.5です。

Wiresharkについて

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

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

起動方法

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

$ wireshark
hacking-lab-part13-1

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

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

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

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

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

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

キャプチャしたデータは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にアクセスします。
hacking-lab-part13-4

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」ボタンを押します。
hacking-lab-part13-5

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

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

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

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

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

nmapには様々なスキャンが用意されていますが、今回は以下を取り上げます。

  • TCPフルコネクトスキャン
  • TCP SYNスキャン
  • UDPスキャン
  • Pingスキャン
  • FINスキャン
  • Xmasスキャン
  • Nullスキャン
hacking-lab-part13-7

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

# wireshark &

TCPフルコネクトスキャン

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

$ sudo nmap -sT -p 445 10.0.0.1

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

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

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

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

$ sudo nmap -sT -p 24 10.0.0.5
hacking-lab-part13-9

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

$ sudo nmap -sT -p 21 10.0.0.1
hacking-lab-part13-10

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

TCP SYNスキャン

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

$ sudo nmap -sS -p 445 10.0.0.1
hacking-lab-part13-11

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

UDPスキャン

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

$ sudo nmap -sU -p 111 10.0.0.5

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

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

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

$ sudo nmap -sU -p 2050 10.0.0.5
hacking-lab-part13-13

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

$ sudo nmap -sU -p 53 10.0.0.1
hacking-lab-part13-14

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

Pingスキャン

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

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

$ sudo nmap -sn 10.0.0.1
hacking-lab-part13-15

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

$ sudo nmap -sn 10.0.0.1 --send-ip
hacking-lab-part13-16

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

FINスキャン

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

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

$ sudo nmap -sF -p 21 10.0.0.5
hacking-lab-part13-17

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

$ sudo nmap -sF -p 24 10.0.0.5
hacking-lab-part13-18

Xmasスキャン

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

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

$ sudo nmap -sX -p 21 10.0.0.5
hacking-lab-part13-19

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

$ sudo nmap -sX -p 24 10.0.0.5
hacking-lab-part13-20

Nullスキャン

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

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

$ sudo nmap -sN -p 24 10.0.0.5
hacking-lab-part13-21

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

$ sudo nmap -sN -p 24 10.0.0.5
hacking-lab-part13-22
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?