CTF Network » 履歴 » バージョン 2
kanata, 2025/05/10 09:23
1 | 1 | kanata | # CTF Network |
---|---|---|---|
2 | |||
3 | 2 | kanata | {{last_updated_at}} |
4 | |||
5 | {{>toc}} |
||
6 | 1 | kanata | |
7 | # Command gadgets |
||
8 | |||
9 | ## ncat |
||
10 | |||
11 | ``` |
||
12 | nc ホスト名 ポート番号 |
||
13 | ``` |
||
14 | |||
15 | ### eオプションを使うために、ソースからコンパイルする |
||
16 | |||
17 | eオプション:nc の標準入出力を、 指定したコマンドにリダイレクトするためのオプション |
||
18 | |||
19 | make 時に「DGAPING_SECURITY_HOLE」を指定しないと -e オプションが使えないという情報を見かけるけど、不要っぽい。 |
||
20 | [公式サイト](http://netcat.sourceforge.net/)からダウンロードした後 |
||
21 | |||
22 | ``` |
||
23 | # tar zxvf netcat-0.7.1.tar.gz |
||
24 | # cd netcat-0.7.1 |
||
25 | # ./configure --prefix=/usr/local |
||
26 | # make |
||
27 | ``` |
||
28 | |||
29 | 動作確認(サーバ側) |
||
30 | |||
31 | ``` |
||
32 | # cd src |
||
33 | # ./netcat -l -p 1234 -e /bin/sh |
||
34 | ``` |
||
35 | |||
36 | 動作確認(クライアント側) |
||
37 | |||
38 | ``` |
||
39 | # ./netcat localhost 1234 |
||
40 | ``` |
||
41 | |||
42 | ### ncコマンドでTCP proxyを動かしながら記録する |
||
43 | |||
44 | 名前付きパイプを作る必要がある |
||
45 | |||
46 | ``` |
||
47 | $ mkfifo hoge |
||
48 | $ /usr/bin/nc -l 127.0.0.1 5555 < hoge | tee -a in | /usr/bin/nc example.com 80 | tee -a out > hoge |
||
49 | ``` |
||
50 | |||
51 | ### sslを利用する |
||
52 | |||
53 | SSLで通信を行わせる場合は、サーバ・クライアントともに「–ssl」オプションを付与する必要がある点に注意。 |
||
54 | |||
55 | サーバ側 |
||
56 | |||
57 | ``` |
||
58 | $ nc -vl [ポート番号] --ssl |
||
59 | ``` |
||
60 | |||
61 | クライアント側 |
||
62 | |||
63 | ``` |
||
64 | $ nc -v [対象ホスト] [ポート番号] --ssl |
||
65 | ``` |
||
66 | |||
67 | ### webサーバへhttp-getリクエストを行う |
||
68 | |||
69 | ``` |
||
70 | $ echo -en "GET / HTTP/1.1\n\n" | nc [対象ホスト] 80 |
||
71 | ``` |
||
72 | |||
73 | ### ファイルを転送する |
||
74 | |||
75 | サーバ側からクライアント側にファイルを取得させる場合 |
||
76 | |||
77 | ``` |
||
78 | $ nc -l ポート番号 < 転送するファイルPATH # サーバ側 |
||
79 | $ nc 対象ホスト ポート番号 > 転送されたファイルを取得するPATH # クライアント側 |
||
80 | ``` |
||
81 | |||
82 | クライアント側からサーバ側にファイルを取得させる場合 |
||
83 | |||
84 | ``` |
||
85 | $ nc -l ポート番号 > 取得したファイルの保持先PATH # サーバ側 |
||
86 | $ nc 対象ホスト ポート番号 < 転送するファイルPATH # クライアント側 |
||
87 | ``` |
||
88 | |||
89 | ### ポート範囲を指定してスキャンを行う |
||
90 | |||
91 | ``` |
||
92 | $ nc -vz 対象ホスト ポート番号-ポート番号 |
||
93 | ``` |
||
94 | |||
95 | |||
96 | |||
97 | |||
98 | ## nmap |
||
99 | |||
100 | ``` |
||
101 | nmap 192.168.1.1 |
||
102 | nmap -sU 192.168.1.1 |
||
103 | nmap -A 192.168.1.1 |
||
104 | ``` |
||
105 | |||
106 | ### IPv4ホストを探索する |
||
107 | |||
108 | -nはDNS逆引きの無効化、-snはポートスキャンしない。 |
||
109 | |||
110 | ``` |
||
111 | # nmap -n -sn 192.168.0.0/24 |
||
112 | ``` |
||
113 | |||
114 | ### LAN内のIPv6ホストを探索する |
||
115 | |||
116 | LAN内の全ホストを表すマルチキャストアドレスff02::1にICMP pingを送る。 -vは詳細表示。 |
||
117 | |||
118 | ``` |
||
119 | # nmap -v -n -sn --script targets-ipv6-multicast-echo |
||
120 | ``` |
||
121 | |||
122 | ### 特定のホストをポートスキャンする |
||
123 | |||
124 | -sSVCはSYN scanの指定とバージョン情報の調査と標準NSEスクリプトの実行、-OはOS推測、-p-は0から65535までの全ポートをスキャン、-T4はスキャン速度を上げる。 |
||
125 | |||
126 | ``` |
||
127 | # nmap -v -sSVC -O -p- -T4 localhost |
||
128 | ``` |
||
129 | |||
130 | ### HTTPサーバ上のファイルを探索する |
||
131 | |||
132 | /robots.txtや/phpmyadmin/などのよく知られたパスを探索する。 |
||
133 | |||
134 | ``` |
||
135 | # nmap -v --script http-enum localhost -p 80 |
||
136 | ``` |
||
137 | |||
138 | ### サブドメインを辞書攻撃で探索する |
||
139 | |||
140 | www以外のサブドメインを辞書攻撃で探索する。 |
||
141 | |||
142 | ``` |
||
143 | # nmap -v --script dns-brute www.example.com |
||
144 | ``` |
||
145 | |||
146 | ### IPアドレスの所有者を調べる |
||
147 | |||
148 | IPアドレスが割り当てられている組織を表示する。 |
||
149 | |||
150 | ``` |
||
151 | # nmap -v --script whois-ip www.example.com |
||
152 | ``` |
||
153 | |||
154 | ### 同一IPアドレスを持つ他のドメインを調べる |
||
155 | |||
156 | オンラインデータベースにアクセスし、同じIPアドレスに向けられた他のドメインを調べる。 |
||
157 | |||
158 | ``` |
||
159 | # nmap -v --script hostmap-bfk www.example.com |
||
160 | ``` |
||
161 | |||
162 | |||
163 | |||
164 | |||
165 | ## snmpget |
||
166 | |||
167 | snmpget -v 1 -c コミュニティ名 ホスト OID... |
||
168 | |||
169 | ``` |
||
170 | snmpget -v 1 -c public localhost system.sysUptime.0 system.sysName.0 |
||
171 | ``` |
||
172 | |||
173 | ## tshark |
||
174 | |||
175 | tsharkは通信の状態をGUIで解析することのできるWiresharkのCUI版です。 |
||
176 | |||
177 | |||
178 | 「-D」オプションでインターフェイスを調べる |
||
179 | |||
180 | ``` |
||
181 | # tshark -D |
||
182 | ``` |
||
183 | |||
184 | キャプチャする(-i 1 はインタフェース確認した際に表示されたeth0に対応した番号) |
||
185 | |||
186 | ``` |
||
187 | # tshark -i 1 -w packet.pcap |
||
188 | # tshark -i 1 -f 'host 101.111.73.127' -w packet.pcap |
||
189 | # tshark -i 1 -f 'port 53' -w packet.pcap |
||
190 | # tshark -i 1 -f 'port 80 and tcp' -w packet.pcap |
||
191 | # tshark -i 1 -f 'host www.example.com and not port 80' -w packet.pcap |
||
192 | ``` |
||
193 | |||
194 | 細かく出すには-V |
||
195 | |||
196 | ``` |
||
197 | # tshark -i 1 -V -f 'port 53' |
||
198 | ``` |
||
199 | |||
200 | パケットダンプは-x |
||
201 | |||
202 | ``` |
||
203 | # tshark -i 1 -x -f 'port 53' |
||
204 | ``` |
||
205 | |||
206 | 読み込みは-r |
||
207 | |||
208 | ``` |
||
209 | # tshark -r packet.pcap |
||
210 | ``` |
||
211 | |||
212 | 出力形式を細かく指定できるけど、そんなことするよりかは、普通にWireshark使った方がいいと思う。 |
||
213 | http://assimane.blog.so-net.ne.jp/2011-01-08 |
||
214 | |||
215 | ふるつき - tsharkメモ |
||
216 | https://furutsuki.hatenablog.com/entry/2016/02/23/155655 |
||
217 | |||
218 | |||
219 | |||
220 | |||
221 | |||
222 | ## tcpdump |
||
223 | |||
224 | A tcpdump Primer with Examples |
||
225 | https://danielmiessler.com/study/tcpdump/#examples |
||
226 | |||
227 | |||
228 | |||
229 | |||
230 | ## 証明書を取得するワンライナー |
||
231 | |||
232 | ``` |
||
233 | echo Q | openssl s_client -connect raintrees.net:443 |openssl x509 -text |
||
234 | ``` |
||
235 | |||
236 | ## サーバと連続でやりとりするシェルスクリプト |
||
237 | |||
238 | 以下は、サーバからもらった計算式を計算して、送り返している例 |
||
239 | |||
240 | ``` |
||
241 | #!/bin/sh |
||
242 | |||
243 | exec 5<>/dev/tcp/[host]/[port] |
||
244 | |||
245 | for I in {1..101} |
||
246 | do |
||
247 | cat 0<&5>test.txt & |
||
248 | sleep 1 |
||
249 | pkill cat |
||
250 | WORD=`cat test.txt|tail -1|sed 's/=//g'` |
||
251 | ANSWER=`ecgo ${WORD}|bc` |
||
252 | echo ${ANSWER} > &5 |
||
253 | echo Debug [${I}] ${WORD} '=' ${ANSWER} |
||
254 | done |
||
255 | |||
256 | exit 0 |
||
257 | ``` |
||
258 | |||
259 | > 余談だが、これ系の問題で、数値がローマ数字だったり漢数字だったりするパターンがある |
||
260 | > numconvコマンドを使うと一発で変換してくれる |
||
261 | |||
262 | ## サーバと連続でやりとりするPythonスクリプト |
||
263 | |||
264 | 以下は、サーバからもらった計算式を計算して、送り返している例 |
||
265 | |||
266 | ```python |
||
267 | import socket |
||
268 | |||
269 | sock=socket.socket(socket.AF_INET,socket.SOCKET_STREAM) |
||
270 | sock.connect(('[host]',[port])) |
||
271 | |||
272 | for num in range(100): |
||
273 | content=sock.recv(10240) |
||
274 | if len(content) == 0: |
||
275 | break |
||
276 | |||
277 | print content |
||
278 | if '=' in content: |
||
279 | func = content.split('=')[0] |
||
280 | answer = eval(func) |
||
281 | print answer |
||
282 | s.send(str(answer)+'\n') |
||
283 | ``` |
||
284 | |||
285 | ## サーバと連続でやりとりするPythonスクリプト(別解) |
||
286 | |||
287 | ```python |
||
288 | import socket |
||
289 | |||
290 | server='192.168.100.100',12345 |
||
291 | s=socket.socket() |
||
292 | s.connect(server) |
||
293 | |||
294 | for i in range(100) |
||
295 | exp = recv(1024) |
||
296 | print exp, |
||
297 | ans=eval(exp.split('\n')[1][:-1]) |
||
298 | print ans |
||
299 | s.send(str(ans)+'\n') |
||
300 | print s.recv(1024) |
||
301 | |||
302 | ``` |
||
303 | |||
304 | ## サーバと連続でやりとりするPythonスクリプト(雛形) |
||
305 | |||
306 | ```python |
||
307 | import socket |
||
308 | |||
309 | def solve(data): |
||
310 | 解法処理を書く |
||
311 | return '処理結果 |
||
312 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
||
313 | s.connect(('123.45.67.89', 12345)) #ホスト名とポート番号 |
||
314 | for i in range(100): |
||
315 | s.send(solve(s.recv(1024))) #読んで説いて返答 |
||
316 | print s.recv(1024) #フラグ表示 |
||
317 | |||
318 | ``` |
||
319 | |||
320 | > 余談だが、SymPyを使うと方程式も解ける[実例](https://gist.github.com/jellyfish26/f13dd67ee979eb6c3ccd50deba6b03df) |
||
321 | |||
322 | ## HTTP通信 GET するPythonスクリプト |
||
323 | |||
324 | ```python |
||
325 | import urllib |
||
326 | |||
327 | s = urllib.urlopen('http://www.yahoo.co.jp/') |
||
328 | html = s.read() |
||
329 | s.close() |
||
330 | print html |
||
331 | ``` |
||
332 | |||
333 | ## HTTP通信 POST するPythonスクリプト |
||
334 | |||
335 | ```python |
||
336 | import urllib, urllib2 |
||
337 | |||
338 | data = urllib.urlencode({'name': 'admin', 'password': 'H4ck3r'}) |
||
339 | s = urllib2.urlopen('http://www.../login', data) |
||
340 | html = s.read() |
||
341 | print html |
||
342 | ``` |
||
343 | |||
344 | ## 外部コマンド実行 するPythonスクリプト |
||
345 | |||
346 | ```python |
||
347 | import subprocess |
||
348 | |||
349 | p = subprocess.Popen(['cat', '-'], stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) |
||
350 | p.stdin.write('Hello¥n') |
||
351 | print p.stdout.readline() |
||
352 | ``` |
||
353 | |||
354 | ## ファイル入出力 するPythonスクリプト |
||
355 | |||
356 | ```python |
||
357 | src = open('/tmp/a', 'r') |
||
358 | dst = open('/tmp/b', 'w') |
||
359 | for line in src: |
||
360 | dst.write('# ' + line) |
||
361 | src.close() |
||
362 | dst.close() |
||
363 | data = open('/tmp/data', 'rb').read() |
||
364 | print data |
||
365 | ``` |
||
366 | |||
367 | ## 10分置きにローテーションと圧縮しながらパケットキャプチャする |
||
368 | |||
369 | ``` |
||
370 | # tcpdump -i eth0 "port 53" -w dnsclient-%F-%T.pcap -G 600 -z gzip -Z test_user & |
||
371 | ``` |
||
372 | |||
373 | オプション |
||
374 | |||
375 | ``` |
||
376 | -G rotate_seconds |
||
377 | -i interface |
||
378 | -w file |
||
379 | -z postrotate-command |
||
380 | -Z user |
||
381 | ``` |
||
382 | |||
383 | |||
384 | |||
385 | |||
386 | # Cheat Sheets |
||
387 | |||
388 | ネットワーク関係チートシート |
||
389 | http://packetlife.net/library/cheat-sheets/ |
||
390 | |||
391 | {{rawhtml(<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Wireshark チートシート part1 <a href="https://t.co/obIJ16Cu8N">pic.twitter.com/obIJ16Cu8N</a></p>— いちごろ@🐸 (@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>)}} |
||
392 | |||
393 | {{rawhtml(<blockquote class="twitter-tweet"><p lang="lt" dir="ltr">Patr2 <a href="https://t.co/KTWXssdG8K">pic.twitter.com/KTWXssdG8K</a></p>— いちごろ@🐸 (@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>)}} |
||
394 | |||
395 | |||
396 | # パケットのヘッダ構造 |
||
397 | |||
398 | http://ruffnex.oc.to/kenji/xrea/ipv4.txt |
||
399 | http://ruffnex.oc.to/kenji/xrea/checksum.txt |
||
400 | http://ruffnex.oc.to/kenji/xrea/udp_spoof.txt |
||
401 | http://ruffnex.oc.to/kenji/xrea/icmp.txt |
||
402 | http://ruffnex.oc.to/kenji/xrea/syn.txt |
||
403 | |||
404 | Ethernetヘッダ |
||
405 | http://j-net21.smrj.go.jp/develop/digital/entry/002-20081031-02.html |
||
406 | |||
407 | | 項目 | 長さ | |
||
408 | |---------------------------|---------------------------------| |
||
409 | |あて先MACアドレスフィールド|6バイト(48ビット) ↔16進数で12桁 | |
||
410 | |送信元MACアドレスフィールド|6バイト(48ビット) ↔16進数で12桁 | |
||
411 | |タイプフィールド |2バイト(16ビット) ↔16進数で 4桁 | |
||
412 | |||
413 | タイプ |
||
414 | - 0x0800 IP |
||
415 | - 0x0806 ARP |
||
416 | - 0x8035 RARP |
||
417 | - 0x8191 NetBIOS/NetBEUI |
||
418 | - 0x86DD IP6 |
||
419 | - 0x8863 PPPoE Discovery stage |
||
420 | - 0x8664 PPPoE Session stage |
||
421 | |||
422 | IPヘッダ |
||
423 | http://atnetwork.info/tcpip/tcpip83.html |
||
424 | |||
425 | ``` |
||
426 | 0 1 2 3 |
||
427 | 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 |
||
428 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
429 | |Version| IHL |Type of Service| Total Length | |
||
430 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
431 | | Identification |Flags| Fragment Offset | |
||
432 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
433 | | Time to Live | Protocol | Header Checksum | |
||
434 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
435 | | Source Address | |
||
436 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
437 | | Destination Address | |
||
438 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
439 | | Options | Padding | |
||
440 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
441 | ( RFC 791 より ) |
||
442 | ``` |
||
443 | | 項目 | 意味 | |
||
444 | |-------------------|---------------------------------------------------------------------| |
||
445 | | Version | バージョン。通常は IPv4 なので 4 だ。IPv6 の場合は 6 が設定される。 | |
||
446 | | IHL(Internet Header Length) | 32bits を 1 としてIPヘッダの長さを表す。この値によりパケットの中のどこからがデータなのかを計算する。| |
||
447 | | Type of Service(TOS) | 通信が混雑した場合のデータの優先順位を決める。あまり使われていないらしい。 | |
||
448 | | Total Length | IPヘッダとデータの合計の長さをバイト単位で表す。| |
||
449 | | Identification | IPがデータを分割したときに、もともと同じデータであったことを示すための識別子。| |
||
450 | | Flags | IPパケットの分割に関する情報を格納。 | |
||
451 | | Flagment Offset | データを分割した際にこのデータが全体のどの位置にいるかを示す。 | |
||
452 | | Time to Live(TTL) | データの寿命を表す。ルータを通るたびにこの値が 1 づつ減らされ 0 になると破棄される。| |
||
453 | | Protocol | 上位プロトコルが何か?を格納するフィールド。Linux や Unix なら /etc/protocols ファイルに対応番号が書かれてある。 | |
||
454 | | Header Checksum | IPヘッダが壊れていないかどうかを判断するチェックサムフィールド。 | |
||
455 | | Source Address | データの送り元のIPアドレス | |
||
456 | | Destination Address | データの送り先(宛先)のIPアドレス | |
||
457 | | Options | 可変長のオプションフィールド。あまり使用しない。 | |
||
458 | | Padding | IPヘッダは 32bits の整数倍である必要があるのでそのための穴埋めフィールド。 | |
||
459 | |||
460 | TCPヘッダ |
||
461 | http://atnetwork.info/tcpip/tcpip29.html |
||
462 | |||
463 | ``` |
||
464 | 0 1 2 3 |
||
465 | 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 |
||
466 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
467 | | Source Port | Destination Port | |
||
468 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
469 | | Sequence Number | |
||
470 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
471 | | Acknowledgment Number | |
||
472 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
473 | | Data | |U|A|P|R|S|F| | |
||
474 | | Offset| Reserved |R|C|S|S|Y|I| Window | |
||
475 | | | |G|K|H|T|N|N| | |
||
476 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
477 | | Checksum | Urgent Pointer | |
||
478 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
479 | | Options | Padding | |
||
480 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
481 | | data | |
||
482 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
||
483 | TCP Header Format |
||
484 | ( RFC 793 より ) |
||
485 | |||
486 | ``` |
||
487 | |||
488 | | 項目 | 意味 | |
||
489 | |------------------|----------------------------| |
||
490 | | Source Port | 送信元が使用するポート番号 | |
||
491 | | Destination Port | 送信先(宛先)のポート番号 | |
||
492 | | Sequence Number | シーケンス制御の行うために使用するシーケンス番号。3 way handshake による通信の確立を行うときに使用する。 | |
||
493 | | Acknowledgment Number | 再送制御を行うために使用するACK番号。 | |
||
494 | | Data Offset | TCPヘッダの長さを4bytes(32bits)単位で表したもの。 | |
||
495 | | Reserved | 予約フィールドと呼ばれる場所。Flags が今後増えたときにも対応できるようにしたものだと思う。実質、意味は無し。 | |
||
496 | | Flags(URG,ACK,PSH,RST,SYN,FIN) | メッセージの種別を表すフラグの格納する場所。| |
||
497 | ||URG: 現在は使われていない。 | |
||
498 | ||ACK: 応答確認パケットであることを示す。コネクション開設時に使用される。 | |
||
499 | ||PSH: バッファリングするかどうかの判定。1,受信後バッファリングしない。0,バッファリングできる。| |
||
500 | ||RST: コネクションを強制的にリセットする。強制切断。| |
||
501 | ||SYN: 接続要求パケットであることを示す。其以外は 0 である。| |
||
502 | ||FIN: パケットが切断要求パケットであることを示す。其以外は 0 である。| |
||
503 | | Window | Window制御で使用するサイズを格納する。 | |
||
504 | | Checksum | TCPデータが壊れていないかを判断するチェックサムフィールド。IPヘッダとは異なり擬似ヘッダを使用する。 | |
||
505 | | Urgent Pointer | TCP Flags の URG が 1 になっている場合に使用されるらしいがURG 自体あまり使われてないのでよくわからない。 | |
||
506 | |||
507 | UDPヘッダ |
||
508 | http://atnetwork.info/tcpip/tcpip30.html |
||
509 | |||
510 | ``` |
||
511 | 0 7 8 15 16 23 24 31 |
||
512 | +--------+--------+--------+--------+ |
||
513 | | Source | Destination | |
||
514 | | Port | Port | |
||
515 | +--------+--------+--------+--------+ |
||
516 | | | | |
||
517 | | Length | Checksum | |
||
518 | +--------+--------+--------+--------+ |
||
519 | | | |
||
520 | | data | |
||
521 | +-----------------------------------+ |
||
522 | UDP Header Format |
||
523 | ( RFC 768 より ) |
||
524 | |||
525 | ``` |
||
526 | |||
527 | | 項目 | 意味 | |
||
528 | |------------------|------------------------------------| |
||
529 | | Source Port | 送信元が使用するポート番号 | |
||
530 | | Destination Port | 送信先(宛先)のポート番号 | |
||
531 | | Length | UDPヘッダを含めたUDPデータの長さ。 | |
||
532 | | Checksum | チェックサムフィールド | |
||
533 | |||
534 | # Ether - IP - TCP/UDP 以外の通信プロトコル |
||
535 | |||
536 | ## gdb(remort) |
||
537 | |||
538 | なんかSECCONの問題にあった気がする |
||
539 | |||
540 | ## USB - KeyBorad |
||
541 | |||
542 | [http://www.usb.org/developers/hidpage/Hut1_12v2.pdf](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) |
||
543 | |||
544 | よっちんのブログ - HackIT CTF 2017 Writeup - USB ducker (Foren 100) |
||
545 | http://yocchin.hatenablog.com/entry/2017/09/01/222100 |
||
546 | |||
547 | # USBの通信プロトコル |
||
548 | |||
549 | N->N->N - USB HID 1.11 を読む |
||
550 | http://d.hatena.ne.jp/hanya_orz/20140425/p1 |
||
551 | |||
552 | USBキーボードのキーコード |
||
553 | http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html |
||
554 | |||
555 | # Misc |
||
556 | |||
557 | KEIROMICHI - IPアドレスから住所を検索できます。 |
||
558 | http://i.penguinweb.net/ |
||
559 | |||
560 | 坂井さんの簡易パケット操作ツール群(pkttools) |
||
561 | http://kozos.jp/software/pkttools.html |
||
562 | |||
563 | パケットエディタ(pcapも見れるよ!) |
||
564 | https://wireedit.com/ |
||
565 | |||
566 | Ostinato: パケット作成ツール。GUIで使いやすくて、負担テスト、パケット解析の勉強など |
||
567 | http://ostinato.org/ |
||
568 | |||
569 | labunix's blog - MACアドレスのOUIをローカルで調べるコマンドを作ってみる。 |
||
570 | http://labunix.hateblo.jp/entry/20190805/1565009988 |
||
571 | |||
572 | CURRYFINGER - SNI & Host header spoofing utility |
||
573 | https://dualuse.io/blog/curryfinger/ |
||
574 | |||
575 | >CDNの後ろにあるサーバを割り出すためのツール |
||
576 | >同様のツールにCloudFlairがある |
||
577 | |||
578 | PacketProxy |
||
579 | https://github.com/DeNA/PacketProxy |
||
580 | |||
581 | >HTTP/HTTPS通信だけでなく、より低レイヤーのTCP/UDPを利用したバイナリ通信にも対応した、オープンソースのローカルプロキシツール |
||
582 | |||
583 | The Ultimate PCAP |
||
584 | https://weberblog.net/the-ultimate-pcap/ |
||
585 | |||
586 | >いろんなプロトコルのpcapサンプル |
||
587 | |||
588 | パケットキャプチャで理解する TLS1.3 |
||
589 | https://zenn.dev/arailly/books/41061020f0cfaa |
||
590 | |||
591 | 東陽テクニカ > 情報通信 > エンジニアノート |
||
592 | https://www.toyo.co.jp/ict/contents/detail/engineernote.html |
||
593 | |||
594 | |||
595 | |||
596 | |||
597 | |||
598 | |||
599 | |||
600 | |||
601 | |||
602 | |||
603 | ## Wiresharks |
||
604 | |||
605 | Wireshark によるパケット解析講座 1: Wiresharkの表示列をカスタマイズする |
||
606 | https://unit42.paloaltonetworks.jp/unit42-customizing-wireshark-changing-column-display/ |
||
607 | |||
608 | Wireshark によるパケット解析講座 2: 脅威インテリジェンス調査に役立つフィルタリング設定 |
||
609 | https://unit42.paloaltonetworks.jp/using-wireshark-display-filter-expressions/ |
||
610 | |||
611 | Wireshark によるパケット解析講座 3: ホストとユーザーを特定する |
||
612 | https://unit42.paloaltonetworks.jp/using-wireshark-identifying-hosts-and-users/ |
||
613 | |||
614 | Wireshark によるパケット解析講座 4: Pcapからのオブジェクトのエクスポート |
||
615 | https://unit42.paloaltonetworks.jp/using-wireshark-exporting-objects-from-a-pcap/ |
||
616 | |||
617 | Wireshark によるパケット解析講座 5: Trickbot感染の調査 |
||
618 | https://unit42.paloaltonetworks.jp/wireshark-tutorial-examining-trickbot-infections/ |
||
619 | |||
620 | Wireshark によるパケット解析講座 6: Ursnif感染の調査 |
||
621 | https://unit42.paloaltonetworks.jp/wireshark-tutorial-examining-ursnif-infections/ |
||
622 | |||
623 | Wireshark によるパケット解析講座 7: Qakbot感染の調査 |
||
624 | https://unit42.paloaltonetworks.jp/tutorial-qakbot-infection/ |
||
625 | |||
626 | Wireshark によるパケット解析講座 8: HTTPSトラフィックの復号 |
||
627 | https://unit42.paloaltonetworks.jp/wireshark-tutorial-decrypting-https-traffic/ |
||
628 | |||
629 | Wireshark によるパケット解析講座 9: Dridex感染トラフィックの調査 |
||
630 | https://unit42.paloaltonetworks.jp/wireshark-tutorial-dridex-infection-traffic/ |
||
631 | |||
632 | Wireshark によるパケット解析講座 10: Emotet 感染トラフィックの調査 |
||
633 | https://unit42.paloaltonetworks.com/wireshark-tutorial-emotet-infection/ |
||
634 | |||
635 | Wireshark によるパケット解析講座 11: RDPトラフィックの復号 |
||
636 | https://unit42.paloaltonetworks.jp/wireshark-tutorial-decrypting-rdp-traffic/ |