8割解けるCTF「WEST-SEC」

セキュリティ初心者の方でも楽しめるゲーム形式のセキュリティイベント。CTFや勉強会の依頼があればご相談ください。

ネットワークとwireshark

1.ネットワーク基礎

・OSI参照モデル
https://eset-info.canon-its.jp/malware_info/special/detail/220712.html
・この中で、3層、4層、7層の理解を深めましょう。後ほどパケットを見ましょう。
・3層はネットワーク層で、IPなので、IPアドレスが含まれます。ICMPもレイヤ3です。
・4層はトランスポート層で、TCP/UDPです。
・7層はアプリケーション層なので、HTTPやSMTP、FTPなどの各種アプリケーションです。

2. Wireshark

(1)インストール

Wireshark · Download
インストールに関しては、以下のサイトを参考にしてください。(現在はアクセスできない?)
Wireshark のインストール方法 - Wireshark - OSDN

(2)使い方

・表示>時刻表示形式から、時刻表記を必要に応じて変更
・インストール後の初期の使い方に関しては以下のサイトを参考にしてください。
beginners-network.com

(3)フィルタ

パケットは大量なので、フィルタをかけることをお勧めします。

フィルタ例 フィルタ方法
IPアドレスを指定 ip.addr==192.168.1.1
送信元IPアドレスを指定 ip.src==192.168.1.1
プロトコルを指定 http
ポート番号を80に指定 tcp.port == 80 もしくは udp.port == 80
and条件 &&
or条件 半角で||
(4)HTTPパケットを見てみましょう。

以下、主に確認したい箇所です。
・2層のMACアドレス、タイプ
・3層のIPアドレス、プロトコル
・4層のポート番号、シーケンス番号、確認応答番号、FLAG(SYNやACKビット)

(5)ファイルのダウンロード

例: HTTP通信でやり取りされたファイルをダウンロードしたいとき
ファイル > オブジェクトをエクスポート > HTTP でエクスポートできると思います。
別のやり方は以下。

  1. ダウンロードしたいファイルがやり取りされたパケットを探し、クリック
    (例: HTTP/1.1 200 OK を探す)
  2. 中段にある詳細の中から、Media Type> Media type: ○○〇/○○ (**bytes)をクリック(青くハイライトされる)
  3. ハイライトされている状態で左上[ファイル(F)] > [パケットバイト列をエクスポート] を選択
  4. ファイルの種類を[All Files(*.*)]に変更し、保存したいファイルの名前と拡張子を入力して保存
    (例: example.txt, example.zipなど)
  5. 指定した拡張子でファイルが保存されたことを確認する

2. Media typeをクリック(青くハイライトされた状態)
[パケットバイト列をエクスポート]を選択
ファイルの種類を[All Files(*.*)]に変更し、名前と拡張子を入力して保存

3.nmap

nmapを使うと、IPアドレススキャンやポートスキャンができます。
資料としては、以下
・nmapコマンドの使い方
https://qiita.com/I_S-657/items/5a6f9dd00ec7e59885e7
・nmapのインストール
https://nmap.org/download
①インストール

yum -y install nmap

※サービス起動は不要。
②ホストスキャン
自分のIPアドレスを調べましょう。eth0などに記載があります。

ip a

自分のセグメントに対して、他に端末がいないか調査しましょう。注意点は、プレフィックスが/24ではない可能性がある点です。

nmap -n -sn 192.168.1.0/24

オプションの意味は以下です。

  • n:名前解決をしない
  • sn:ポートスキャンをしない

③ポートスキャン
見つけたサーバに対して、ポートスキャンをかけましょう。※root権限が必要な場合があります。

nmap 192.168.1.1

その他、オプションは以下
https://nmap.org/man/ja/man-briefoptions.html

UDPもスキャンする場合は、-sUオプションをつける

nmap -sU -Pn 10.10.10.22

4.DNS

(1)DNSの基本用語

 JPNICのサイトに、DNS関連の用語が整理されています。コンテンツサーバ(権威サーバ)、キャッシュDNSサーバ(フルサービスリゾルバ)などの言葉を理解しましょう。
https://www.nic.ad.jp/ja/dns/

(2)nslookupによる名前解決

https://www.willnet.ad.jp/dns-windows-nslookup/
コマンドをいくつかやってみましょう。

内容 具体例
Aレコード(正引き) nslookup www.google.com
逆引き nslookup 8.8.8.8
nslookup -type=ptr 8.8.8.8
MXレコード nslookup -type=MX www.google.com
CNAME nslookup -type=CNAME www.google.com
NXレコード nslookup -type=NX www.google.com
(3)DNSキャッシュポイズニングの攻撃

❶攻撃概要
「DNSのキャッシュ」「DNSキャッシュポイズニング」「DNSメッセージの偽装と従来の攻撃手法」を理解しましょう。
https://www.nic.ad.jp/ja/newsletter/No40/0800.html

❷パケットをどう作るか考えよう
たとえば、www.toyota.jpのIPアドレスを問い合わせます。

> set type=A
> www.toyota.jp
(中略)
Address:  23.53.198.89
Aliases:  www.toyota.jp
(後半略)

このときのパケットは以下です。

では、応答パケットをどう作るか。具体的な設定を考えよ。
・送信元IPアドレス:192.168.1.1
・宛先IPアドレス:192.168.1.110
・送信元ポート番号:53
・宛先ポート番号:51116
・TransactionID:0x000b
・DNS応答(問い合わせに対するIPアドレス):改ざんしたいIPを設定
実際の応答は以下です。







(4)送信元ドメイン認証とDNS設定

❶送信元ドメイン認証技術
SPF、DKIM、DMARCがあります。
送信ドメイン認証(SPF / DKIM / DMARC)の仕組みと、なりすましメール対策への活用法を徹底解説 – エンタープライズIT [COLUMNS]

❷DNSの設定を確認
・SPF
 ご自身の会社の、TXTレコードを引いてきましょう。
・DMARC
 DMARCの場合は、TXTレコードにおいて、 「_dmarc」を先頭に付与する必要があります。以下はGoogleの例です。

> _dmarc.google.com
(中略)
_dmarc.google.com       text =
        "v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com"

5.openvpnでVPN接続

CTFの場合、VPNでサーバに接続を要求される場合がある。
Windowsでもできるが、Linux(Ubuntu)でやってみる。※AmazonLinuxではうまくいかなかった。

#openvpnのインストール
apt update
apt install openvpn

#ovpnファイルを指定し、バックグラウンド処理
openvpn --config /home/ubuntu/setting.ovpn &

#接続し、IPアドレスが取得できたかを確認。プライベートIPが割り当てられているかを確認。
ip a