imdays

勉強の記録

Wiresharkパケット解析講座(2) 脅威インテリジェンス調査に役立つフィルタリング設定 備忘録

以下の記事を読んだ際の個人的な備忘録です。

基礎的なところがわかっていなくてRFC遡ってたりしたら2時間くらいかかりました。

URLやドメインは悪性なのでアクセスされないようご注意ください。

unit42.paloaltonetworks.jp

 

pcapでWebトラフィックをすばやく確認する

http.request or ssl.handshake.type == 1

不要なトラフィックの除外

使用ファイル:Using-Wireshark-diplay-filters-Emotet-with-IcedID.pcap

今回は1900/udp(Simple Service Discovery Protocol:SSDP)を除外する

(http.request or ssl.handshake.type == 1)and!(udp.port eq 1900)
または
(http.request or ssl.handshake.type == 1)and!(ssdp)

TCP接続を拒否するサーバーへの接続試行(TCP SYN セグメント)を含める

(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)

DNS活動をフィルタする

使用ファイル:Using-Wireshark-diplay-filters-Nanocore-RAT.pcap

以下を追加することで、DNSの活動もフィルタすることができる

(http.request or ssl.handshake.type ==1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)

上記のフィルター文は以下意味を持つ

      • 0: HelloRequest
      • 1: ClientHello
      • 2: ServerHello
      • 3: Certificate
      • 4: ServerKeyExchange
      • 5: CertificateRequest
      • 6: ServerHelloDone
      • 7: CertificateVerify
      • 8: ClientKeyExchange
      • 9: Finished
      • 10: CertificateURL
      • 11: CertificateStatus
      • 12: SupplementalData

各メッセージの詳細については以下を参考にする

RFC 5077: Transport Layer Security (TLS) Session Resumption without Server-Side State (rfc-editor.org)

TLS

Wireshark · Display Filter Reference: Secure Sockets Layer

 

  • tcp.flags
    • TCPヘッダーのフラグビットを表す
    • TCPヘッダーは、TCPプロトコルで送信されるパケットに含まれる
    • tcp.flagsには、以下のような値がある
      • 0x000: None (フラグなし)
      • 0x001: FIN (接続終了を示すフラグ)
      • 0x002: SYN (接続開始を示すフラグ)
      • 0x004: RST (接続リセットを示すフラグ)
      • 0x008: PSH (データ送信を要求するフラグ)
      • 0x010: ACK (確認応答を示すフラグ)
      • 0x020: URG (緊急データを含むことを示すフラグ)
      • 0x040: ECE (ECNによる輻輳制御を示すフラグ)
      • 0x080: CWR (ECNによる輻輳制御を示すフラグ)
    • 上記のフラグビットは、値をOR演算子で組み合わせることができる
      • たとえば、tcp.flagsが0x018である場合、ACKフラグとPSHフラグがセットされていることを示す
    • TCPのフラグビットの詳細については、RFC 793(Transmission Control Protocol)を参照する

 

以下のフィールド文について

[TCP Retransmission] [TCP Port numbers reused] 49194 → 19055 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM
  • [TCP Retransmission]
    • このパケットが再送されたことを示す
    • パケットが到着しなかった場合、送信元はパケットを再送することがある
  • [TCP Port numbers reused]
    • パケットに含まれる送信元ポート番号が、以前に使用されたポート番号と同じであることを示す
  • [SYN]
    • SYNフラグが設定されていることを示す
    • SYNはTCP接続確立の最初のステップであり、通信相手に接続をリクエストするフラグ
  • Seq=0
    • データシーケンス番号が0であることを示す
    • TCPでは、データがシーケンス番号に基づいて順序付けられる
  • Win=8192
    • 受信ウィンドウサイズが8192バイトであることを示す
    • 送信元がバッファリングされたデータ量を指定する
  • Len=0
    • パケットに含まれるデータの長さが0であることを示す
  • MSS=1460
    • 最大セグメントサイズが1460バイトであることを示す
    • 送信元と受信元の間で使用する最大ペイロードサイズを指定する
  • WS=256
    • ウィンドウスケール値が256であることを示す
    • ウィンドウスケール値は、受信ウィンドウサイズを拡張するために使用される
  • SACK_PERM
    • Selective Acknowledgement Permittedが有効であることを示す
    • 受信元が受信データを再送信する際に失われたデータだけを再送信することを可能にするフラグ

 

以下DNSトラフィックのInformationの説明

Standard query 0x9bf6 A www.mercedes-club-bg[.]com
  • Standard query 0x9bf6
  • A
    • このDNSクエリのタイプを示し、この場合はIPv4アドレスを意味する
  • www.mercedes-club-bg[.]com
    • DNSクエリの対象となるホスト名を示す

 

使用ファイル:Using-Wireshark-diplay-filters-FTP-malware.pcap

21: SSHサーバーが情報を待ち受ける

22: SSHサーバーが情報を送る

 

(1) 以下文でフィルターする

http.request or ssl.handshake.type==1 or tcp.flags eq 0x002 or dns or ftp

(2) 得られたフレームから抜粋して説明する

  • FTP(File Transfer Protocol)のデータ転送しているフレームのInformationについて
    • Request: SIZE fc32.exe
    • Response: 213 670720
      • FTPSIZE コマンド
        • クライアントは、サーバーに対してfc32.exeファイルのサイズを問い合わせている
      • サイズは 670720 byteであることがわかる
  • 続くFTPのフレームについて
    • Request: RETR fc32.exe
    • Response: 150-Accepted data connection
      • クライアントは、fc32.exeファイルをダウンロードするために RETRコマンドを送信
  • サーバーは、データ接続を受け入れたことを示す 150レスポンスを送信
  • 続くFTPのフレームについて
    • Response: 226-File successfully transferred
      • FTPのファイル転送の完了を示す
  • サーバーはファイルが正常に転送されたことを示す226レスポンスを送信

 

FTPコマンドについて

以下の4.1.3. FTP SERVICE COMMANDSを参照する

RFC 959: File Transfer Protocol

一部抜粋

  • USER: FTPサーバーにログインするためのユーザー名を指定する
  • PASS: ユーザーのパスワードを指定する
  • RETR: ファイルをダウンロードするために使用するコマンド。ファイルの名前を指定する
  • STOR: ファイルをアップロードするために使用するコマンド。ファイルの名前を指定する
  • DELE: FTPサーバーからファイルを削除するためのコマンド。ファイルの名前を指定する
  • SIZE: ファイルのサイズを取得するためのコマンド。ファイルの名前を指定する
  • LIST: FTPサーバー上のディレクトリの内容をリストするためのコマンド。オプションでファイル名を指定することもできる

一部抜粋

4.2.1 Reply Codes by Function Groups

 

FTP パッシブモード/アクティブモード

  • アクティブモード
    • FTP(File Transfer Protocol)でサーバーがクライアントが指定したポートに接続してデータを送信
  • パッシブモード
    • クライアントがファイアウォールやNAT背後にある等の制限でFTPクライアントがサーバーに対してアクセスできない場合
    • FTPサーバーがデータを送信するためにランダムに選択したポートを開き、クライアントはこのポートに接続してデータを受信
      1. FTPサーバーはPASVコマンドを使用して、クライアントに対して使用するポートを通知

      2. クライアントは、このポートに接続してデータを受信するための新しい接続を開始

        💡 注意 FTPパッシブモードはセキュリティ上の問題がある FTP暗号化や、代替プロトコル(例:SFTP)の使用が推奨

 

Wireshark における FTPフィルターについて

Wireshark · Display Filter Reference: Secure Sockets Layer

 

Using-Wireshark-diplay-filters-FTP-malware.pcapの分析

  1. ftp.totallyanonymous[.]com のAレコード確認、IPアドレス192.185.230[.]61 とわかる
  2. 192.185.230[.]61にて以下のユーザー名、パスワードでサインインする
    • Request: USER schw@totallyanonymous1[.]com
    • Request: PASS 520s984W
  3. 192.185.230[.]61からFTPにて以下のファイルをダウンロードする
    • fc32.exe
    • o32.exe
    • ip.exe
    • fc64.exe
    • o64.exe
  4. myexternalip[.]comのAレコード確認、IPアドレス78.47.139[.]102 とわかる
  5. 192.185.230[.]61にリダイレクトされ、今度は異なるユーザー名とパスワードでサインインする
    • Request: USER schw@totallyanonymous[.]com
    • Request: PASS 520s984W
  6. STOR コマンドを使用して、ファイルをアップロードする
    • Request: STOR 6R7MELYD6
  7. ログアウト

 

使用ファイル:Using-Wireshark-diplay-filters-spambot.pcap

  1. クライアント(10.6.5[.]102)からDCおよびDNSサーバー(10.6.5[.]1)に向けてさまざまなメールサーバーへのDNSクエリがみられる

  2. SMTPトラフィックに関連した465/tcp, 587/tcpへのTCP SYNパケットも見られる

  3. 以下の情報が得られるので、各IPに対してTCP SYNパケットを送っている

  4. TCPストリームを追跡して内容確認する
  5. 特定のフレームを指定し、右クリックして [Follow] - [TCP Stream]の順に選択する
    •  そのフレームに関連するSMTP通信の内容が表示される
    • 例えばスパムbotから送信された電子メールの一つが見つかる