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