プロジェクト

全般

プロフィール

CTF Network » 履歴 » リビジョン 2

リビジョン 1 (kanata, 2025/04/13 14:23) → リビジョン 2/3 (kanata, 2025/05/10 09:23)

# CTF Network 

 {{last_updated_at}} 

 {{>toc}} {{toc}} 

 # Command gadgets 

 ## ncat 

 ``` 
 nc ホスト名 ポート番号 
 ``` 

 ### eオプションを使うために、ソースからコンパイルする 

 eオプション:nc の標準入出力を、 指定したコマンドにリダイレクトするためのオプション 

 make 時に「DGAPING_SECURITY_HOLE」を指定しないと -e オプションが使えないという情報を見かけるけど、不要っぽい。 
 [公式サイト](http://netcat.sourceforge.net/)からダウンロードした後 

 ``` 
 # tar zxvf netcat-0.7.1.tar.gz  
 # cd netcat-0.7.1  
 # ./configure --prefix=/usr/local  
 # make  
 ``` 

 動作確認(サーバ側) 

 ``` 
 # cd src  
 # ./netcat -l -p 1234 -e /bin/sh 
 ``` 

 動作確認(クライアント側) 

 ``` 
 # ./netcat localhost 1234  
 ``` 

 ### ncコマンドでTCP proxyを動かしながら記録する 

 名前付きパイプを作る必要がある 

 ``` 
 $ mkfifo hoge 
 $ /usr/bin/nc -l 127.0.0.1 5555 < hoge | tee -a in | /usr/bin/nc example.com 80 | tee -a out > hoge 
 ``` 

 ### sslを利用する 

 SSLで通信を行わせる場合は、サーバ・クライアントともに「–ssl」オプションを付与する必要がある点に注意。 

 サーバ側 

 ``` 
 $ nc -vl [ポート番号] --ssl 
 ``` 

 クライアント側 

 ``` 
 $ nc -v [対象ホスト] [ポート番号] --ssl 
 ``` 

 ### webサーバへhttp-getリクエストを行う 

 ``` 
 $ echo -en "GET / HTTP/1.1\n\n" | nc [対象ホスト] 80 
 ``` 

 ### ファイルを転送する 

 サーバ側からクライアント側にファイルを取得させる場合 

 ``` 
 $ nc -l ポート番号 < 転送するファイルPATH # サーバ側 
 $ nc 対象ホスト ポート番号 > 転送されたファイルを取得するPATH # クライアント側 
 ``` 

 クライアント側からサーバ側にファイルを取得させる場合 

 ``` 
 $ nc -l ポート番号 > 取得したファイルの保持先PATH # サーバ側 
 $ nc 対象ホスト ポート番号 < 転送するファイルPATH # クライアント側 
 ``` 

 ### ポート範囲を指定してスキャンを行う 

 ``` 
 $ nc -vz 対象ホスト ポート番号-ポート番号 
 ``` 




 ## nmap 

 ``` 
 nmap       192.168.1.1 
 nmap -sU 192.168.1.1 
 nmap -A    192.168.1.1 
 ``` 

 ### IPv4ホストを探索する 

 -nはDNS逆引きの無効化、-snはポートスキャンしない。 

 ``` 
 # nmap -n -sn 192.168.0.0/24 
 ``` 

 ### LAN内のIPv6ホストを探索する 

 LAN内の全ホストを表すマルチキャストアドレスff02::1にICMP pingを送る。 -vは詳細表示。 

 ``` 
 # nmap -v -n -sn --script targets-ipv6-multicast-echo 
 ``` 

 ### 特定のホストをポートスキャンする 

 -sSVCはSYN scanの指定とバージョン情報の調査と標準NSEスクリプトの実行、-OはOS推測、-p-は0から65535までの全ポートをスキャン、-T4はスキャン速度を上げる。 

 ``` 
 # nmap -v -sSVC -O -p- -T4 localhost 
 ``` 

 ### HTTPサーバ上のファイルを探索する 

 /robots.txtや/phpmyadmin/などのよく知られたパスを探索する。 

 ``` 
 # nmap -v --script http-enum localhost -p 80 
 ``` 

 ### サブドメインを辞書攻撃で探索する 

 www以外のサブドメインを辞書攻撃で探索する。 

 ``` 
 # nmap -v --script dns-brute www.example.com 
 ``` 

 ### IPアドレスの所有者を調べる 

 IPアドレスが割り当てられている組織を表示する。 

 ``` 
 # nmap -v --script whois-ip www.example.com 
 ``` 

 ### 同一IPアドレスを持つ他のドメインを調べる 

 オンラインデータベースにアクセスし、同じIPアドレスに向けられた他のドメインを調べる。 

 ``` 
 # nmap -v --script hostmap-bfk www.example.com 
 ``` 




 ## snmpget 

 snmpget -v 1 -c コミュニティ名 ホスト OID... 

 ``` 
 snmpget -v 1 -c public localhost system.sysUptime.0 system.sysName.0 
 ``` 

 ## tshark 

 tsharkは通信の状態をGUIで解析することのできるWiresharkのCUI版です。 


 「-D」オプションでインターフェイスを調べる 

 ``` 
 # tshark -D 
 ``` 

 キャプチャする(-i 1 はインタフェース確認した際に表示されたeth0に対応した番号) 

 ``` 
 # tshark -i 1 -w packet.pcap 
 # tshark -i 1 -f 'host 101.111.73.127' -w packet.pcap 
 # tshark -i 1 -f 'port 53' -w packet.pcap 
 # tshark -i 1 -f 'port 80 and tcp' -w packet.pcap 
 # tshark -i 1 -f 'host www.example.com and not port 80' -w packet.pcap 
 ``` 

 細かく出すには-V 

 ``` 
 # tshark -i 1 -V -f 'port 53' 
 ``` 

 パケットダンプは-x 

 ``` 
 # tshark -i 1 -x -f 'port 53' 
 ``` 

 読み込みは-r 

 ``` 
 # tshark -r packet.pcap 
 ``` 

 出力形式を細かく指定できるけど、そんなことするよりかは、普通にWireshark使った方がいいと思う。 
 http://assimane.blog.so-net.ne.jp/2011-01-08 

 ふるつき - tsharkメモ  
 https://furutsuki.hatenablog.com/entry/2016/02/23/155655 





 ## tcpdump 

 A tcpdump Primer with Examples 
 https://danielmiessler.com/study/tcpdump/#examples 




 ## 証明書を取得するワンライナー 

 ``` 
 echo Q | openssl s_client -connect raintrees.net:443 |openssl x509 -text 
 ``` 

 ## サーバと連続でやりとりするシェルスクリプト 

 以下は、サーバからもらった計算式を計算して、送り返している例 

 ``` 
 #!/bin/sh 

 exec 5<>/dev/tcp/[host]/[port] 

 for I in {1..101} 
 do 
   cat 0<&5>test.txt & 
   sleep 1 
   pkill cat 
   WORD=`cat test.txt|tail -1|sed 's/=//g'` 
   ANSWER=`ecgo ${WORD}|bc` 
   echo ${ANSWER} > &5 
   echo Debug [${I}] ${WORD} '=' ${ANSWER} 
 done 

 exit 0 
 ``` 

 > 余談だが、これ系の問題で、数値がローマ数字だったり漢数字だったりするパターンがある 
 > numconvコマンドを使うと一発で変換してくれる 

 ## サーバと連続でやりとりするPythonスクリプト 

 以下は、サーバからもらった計算式を計算して、送り返している例 

 ```python 
 import socket 

 sock=socket.socket(socket.AF_INET,socket.SOCKET_STREAM) 
 sock.connect(('[host]',[port])) 

 for num in range(100): 
   content=sock.recv(10240) 
   if len(content) == 0: 
     break 

   print content 
   if '=' in content: 
     func = content.split('=')[0] 
     answer = eval(func) 
     print answer 
     s.send(str(answer)+'\n') 
 ``` 

 ## サーバと連続でやりとりするPythonスクリプト(別解) 

 ```python 
 import socket 

 server='192.168.100.100',12345 
 s=socket.socket() 
 s.connect(server) 

 for i in range(100) 
   exp = recv(1024) 
   print exp, 
   ans=eval(exp.split('\n')[1][:-1]) 
   print ans 
   s.send(str(ans)+'\n') 
 print s.recv(1024) 

 ``` 

 ## サーバと連続でやりとりするPythonスクリプト(雛形) 

 ```python 
 import socket 

 def solve(data): 
   解法処理を書く 
   return '処理結果 
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 s.connect(('123.45.67.89', 12345)) #ホスト名とポート番号 
 for i in range(100): 
   s.send(solve(s.recv(1024)))        #読んで説いて返答 
 print s.recv(1024)                  #フラグ表示 

 ``` 

 > 余談だが、SymPyを使うと方程式も解ける[実例](https://gist.github.com/jellyfish26/f13dd67ee979eb6c3ccd50deba6b03df) 

 ## HTTP通信 GET するPythonスクリプト 

 ```python 
 import urllib 

 s = urllib.urlopen('http://www.yahoo.co.jp/') 
 html = s.read() 
 s.close() 
 print html  
 ``` 

 ## HTTP通信 POST するPythonスクリプト 

 ```python 
 import urllib, urllib2 

 data = urllib.urlencode({'name': 'admin', 'password': 'H4ck3r'}) 
 s = urllib2.urlopen('http://www.../login', data) 
 html = s.read() 
 print html  
 ``` 

 ## 外部コマンド実行 するPythonスクリプト 

 ```python 
 import subprocess 

 p = subprocess.Popen(['cat', '-'], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)  
 p.stdin.write('Hello¥n') 
 print p.stdout.readline()  
 ``` 

 ## ファイル入出力 するPythonスクリプト 

 ```python 
 src = open('/tmp/a', 'r') 
 dst = open('/tmp/b', 'w') 
 for line in src: 
   dst.write('# ' + line) 
 src.close() 
 dst.close() 
 data = open('/tmp/data', 'rb').read() 
 print data  
 ``` 

 ## 10分置きにローテーションと圧縮しながらパケットキャプチャする 

 ``` 
 # tcpdump -i eth0 "port 53" -w dnsclient-%F-%T.pcap -G 600 -z gzip -Z test_user & 
 ``` 

 オプション 

 ``` 
 -G rotate_seconds 
 -i interface 
 -w file 
 -z postrotate-command 
 -Z user 
 ``` 




 # Cheat Sheets 

 ネットワーク関係チートシート 
 http://packetlife.net/library/cheat-sheets/ 

 {{rawhtml(<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Wireshark チートシート part1 <a href="https://t.co/obIJ16Cu8N">pic.twitter.com/obIJ16Cu8N</a></p>&mdash; いちごろ@🐸 (@panda66104256) <a href="https://twitter.com/panda66104256/status/1251311853168295937?ref_src=twsrc%5Etfw">April 18 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>)}} 

 {{rawhtml(<blockquote class="twitter-tweet"><p lang="lt" dir="ltr">Patr2 <a href="https://t.co/KTWXssdG8K">pic.twitter.com/KTWXssdG8K</a></p>&mdash; いちごろ@🐸 (@panda66104256) <a href="https://twitter.com/panda66104256/status/1251313846079250432?ref_src=twsrc%5Etfw">April 18 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>)}} 


 # パケットのヘッダ構造 

 http://ruffnex.oc.to/kenji/xrea/ipv4.txt 
 http://ruffnex.oc.to/kenji/xrea/checksum.txt 
 http://ruffnex.oc.to/kenji/xrea/udp_spoof.txt 
 http://ruffnex.oc.to/kenji/xrea/icmp.txt 
 http://ruffnex.oc.to/kenji/xrea/syn.txt 

 Ethernetヘッダ 
 http://j-net21.smrj.go.jp/develop/digital/entry/002-20081031-02.html 

 | 項目                        | 長さ                              | 
 |---------------------------|---------------------------------| 
 |あて先MACアドレスフィールド|6バイト(48ビット) ↔16進数で12桁 | 
 |送信元MACアドレスフィールド|6バイト(48ビット) ↔16進数で12桁 | 
 |タイプフィールド             |2バイト(16ビット) ↔16進数で 4桁 | 

 タイプ 
 - 0x0800 IP 
 - 0x0806 ARP 
 - 0x8035 RARP 
 - 0x8191 NetBIOS/NetBEUI 
 - 0x86DD IP6 
 - 0x8863 PPPoE Discovery stage 
 - 0x8664 PPPoE Session stage 

 IPヘッダ 
 http://atnetwork.info/tcpip/tcpip83.html 

 ``` 
  0                     1                     2                     3    
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |Version|    IHL    |Type of Service|            Total Length           | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |           Identification          |Flags|        Fragment Offset      | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |    Time to Live |      Protocol     |           Header Checksum         | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                         Source Address                            | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                      Destination Address                          | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                      Options                      |      Padding      | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 ( RFC 791 より ) 
 ``` 
 | 項目                | 意味                                                                  | 
 |-------------------|---------------------------------------------------------------------| 
 | Version             | バージョン。通常は IPv4 なので 4 だ。IPv6 の場合は 6 が設定される。 | 
 | IHL(Internet Header Length) | 32bits を 1 としてIPヘッダの長さを表す。この値によりパケットの中のどこからがデータなのかを計算する。| 
 | Type of Service(TOS) | 通信が混雑した場合のデータの優先順位を決める。あまり使われていないらしい。 | 
 | Total Length        | IPヘッダとデータの合計の長さをバイト単位で表す。| 
 | Identification      | IPがデータを分割したときに、もともと同じデータであったことを示すための識別子。| 
 | Flags               | IPパケットの分割に関する情報を格納。 | 
 | Flagment Offset     | データを分割した際にこのデータが全体のどの位置にいるかを示す。 | 
 | Time to Live(TTL) | データの寿命を表す。ルータを通るたびにこの値が 1 づつ減らされ 0 になると破棄される。| 
 | Protocol            | 上位プロトコルが何か?を格納するフィールド。Linux や Unix なら /etc/protocols ファイルに対応番号が書かれてある。 | 
 | Header Checksum     | IPヘッダが壊れていないかどうかを判断するチェックサムフィールド。 | 
 | Source Address      | データの送り元のIPアドレス | 
 | Destination Address | データの送り先(宛先)のIPアドレス | 
 | Options             | 可変長のオプションフィールド。あまり使用しない。 | 
 | Padding             | IPヘッダは 32bits の整数倍である必要があるのでそのための穴埋めフィールド。 | 

 TCPヘッダ 
 http://atnetwork.info/tcpip/tcpip29.html 

 ``` 
  0                     1                     2                     3    
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |            Source Port            |         Destination Port          | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                          Sequence Number                          | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                      Acknowledgment Number                        | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |    Data |             |U|A|P|R|S|F|                                 | 
 | Offset| Reserved    |R|C|S|S|Y|I|              Window               | 
 |         |             |G|K|H|T|N|N|                                 | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |             Checksum              |           Urgent Pointer          | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                      Options                      |      Padding      | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
 |                               data                                | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
                          TCP Header Format 
 ( RFC 793 より ) 

 ``` 

 | 項目               | 意味                         | 
 |------------------|----------------------------| 
 | Source Port        | 送信元が使用するポート番号 | 
 | Destination Port | 送信先(宛先)のポート番号 | 
 | Sequence Number    | シーケンス制御の行うために使用するシーケンス番号。3 way handshake による通信の確立を行うときに使用する。 | 
 | Acknowledgment Number | 再送制御を行うために使用するACK番号。 | 
 | Data Offset        | TCPヘッダの長さを4bytes(32bits)単位で表したもの。 | 
 | Reserved           | 予約フィールドと呼ばれる場所。Flags が今後増えたときにも対応できるようにしたものだと思う。実質、意味は無し。 | 
 | Flags(URG,ACK,PSH,RST,SYN,FIN) | メッセージの種別を表すフラグの格納する場所。| 
 ||URG: 現在は使われていない。 | 
 ||ACK: 応答確認パケットであることを示す。コネクション開設時に使用される。 | 
 ||PSH: バッファリングするかどうかの判定。1,受信後バッファリングしない。0,バッファリングできる。| 
 ||RST: コネクションを強制的にリセットする。強制切断。| 
 ||SYN: 接続要求パケットであることを示す。其以外は 0 である。| 
 ||FIN: パケットが切断要求パケットであることを示す。其以外は 0 である。| 
 | Window             | Window制御で使用するサイズを格納する。 | 
 | Checksum           | TCPデータが壊れていないかを判断するチェックサムフィールド。IPヘッダとは異なり擬似ヘッダを使用する。 | 
 | Urgent Pointer     | TCP Flags の URG が 1 になっている場合に使用されるらしいがURG 自体あまり使われてないのでよくわからない。 | 

 UDPヘッダ 
 http://atnetwork.info/tcpip/tcpip30.html 

 ``` 
  0        7 8       15 16      23 24      31 
 +--------+--------+--------+--------+ 
 |       Source        |     Destination     | 
 |        Port         |        Port         | 
 +--------+--------+--------+--------+ 
 |                   |                   | 
 |       Length        |      Checksum       | 
 +--------+--------+--------+--------+ 
 |                                     | 
 |                  data                 | 
 +-----------------------------------+ 
           UDP Header Format 
 ( RFC 768 より ) 

 ``` 

 | 項目               | 意味                                 | 
 |------------------|------------------------------------| 
 | Source Port        | 送信元が使用するポート番号           | 
 | Destination Port | 送信先(宛先)のポート番号             | 
 | Length             | UDPヘッダを含めたUDPデータの長さ。 | 
 | Checksum           | チェックサムフィールド               | 

 # Ether - IP - TCP/UDP 以外の通信プロトコル 

 ## gdb(remort) 

 なんかSECCONの問題にあった気がする 

 ## USB - KeyBorad 

 [http://www.usb.org/developers/hidpage/Hut1_12v2.pdf](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) 

 よっちんのブログ - HackIT CTF 2017 Writeup - USB ducker (Foren 100) 
 http://yocchin.hatenablog.com/entry/2017/09/01/222100 

 # USBの通信プロトコル 

 N->N->N - USB HID 1.11 を読む 
 http://d.hatena.ne.jp/hanya_orz/20140425/p1 

 USBキーボードのキーコード 
 http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html 

 # Misc 

 KEIROMICHI - IPアドレスから住所を検索できます。 
 http://i.penguinweb.net/ 

 坂井さんの簡易パケット操作ツール群(pkttools) 
 http://kozos.jp/software/pkttools.html 

 パケットエディタ(pcapも見れるよ!) 
 https://wireedit.com/ 

 Ostinato: パケット作成ツール。GUIで使いやすくて、負担テスト、パケット解析の勉強など 
 http://ostinato.org/ 

 labunix's blog - MACアドレスのOUIをローカルで調べるコマンドを作ってみる。 
 http://labunix.hateblo.jp/entry/20190805/1565009988 

 CURRYFINGER - SNI & Host header spoofing utility 
 https://dualuse.io/blog/curryfinger/ 

 >CDNの後ろにあるサーバを割り出すためのツール 
 >同様のツールにCloudFlairがある 

 PacketProxy 
 https://github.com/DeNA/PacketProxy 

 >HTTP/HTTPS通信だけでなく、より低レイヤーのTCP/UDPを利用したバイナリ通信にも対応した、オープンソースのローカルプロキシツール 

 The Ultimate PCAP 
 https://weberblog.net/the-ultimate-pcap/ 

 >いろんなプロトコルのpcapサンプル 

 パケットキャプチャで理解する TLS1.3 
 https://zenn.dev/arailly/books/41061020f0cfaa 

 東陽テクニカ > 情報通信 > エンジニアノート 
 https://www.toyo.co.jp/ict/contents/detail/engineernote.html 










 ## Wiresharks 

 Wireshark によるパケット解析講座 1: Wiresharkの表示列をカスタマイズする 
 https://unit42.paloaltonetworks.jp/unit42-customizing-wireshark-changing-column-display/ 

 Wireshark によるパケット解析講座 2: 脅威インテリジェンス調査に役立つフィルタリング設定 
 https://unit42.paloaltonetworks.jp/using-wireshark-display-filter-expressions/ 

 Wireshark によるパケット解析講座 3: ホストとユーザーを特定する 
 https://unit42.paloaltonetworks.jp/using-wireshark-identifying-hosts-and-users/ 

 Wireshark によるパケット解析講座 4: Pcapからのオブジェクトのエクスポート 
 https://unit42.paloaltonetworks.jp/using-wireshark-exporting-objects-from-a-pcap/ 

 Wireshark によるパケット解析講座 5: Trickbot感染の調査 
 https://unit42.paloaltonetworks.jp/wireshark-tutorial-examining-trickbot-infections/ 

 Wireshark によるパケット解析講座 6: Ursnif感染の調査 
 https://unit42.paloaltonetworks.jp/wireshark-tutorial-examining-ursnif-infections/ 

 Wireshark によるパケット解析講座 7: Qakbot感染の調査 
 https://unit42.paloaltonetworks.jp/tutorial-qakbot-infection/ 

 Wireshark によるパケット解析講座 8: HTTPSトラフィックの復号 
 https://unit42.paloaltonetworks.jp/wireshark-tutorial-decrypting-https-traffic/ 

 Wireshark によるパケット解析講座 9: Dridex感染トラフィックの調査 
 https://unit42.paloaltonetworks.jp/wireshark-tutorial-dridex-infection-traffic/ 

 Wireshark によるパケット解析講座 10: Emotet 感染トラフィックの調査 
 https://unit42.paloaltonetworks.com/wireshark-tutorial-emotet-infection/ 

 Wireshark によるパケット解析講座 11: RDPトラフィックの復号 
 https://unit42.paloaltonetworks.jp/wireshark-tutorial-decrypting-rdp-traffic/