このたび当社において、情報提供メールを送信した際の不手際により、別のお客様のメールアドレスが表示される状態で送信してしまう事故が発生いたしましたので、下記の通りご報告申し上げます。対象のお客様には、多大なるご心配とご迷惑をお掛けすることとなり、心よりお詫び申し上げます。
このような事案が発生したことを深く反省し、今後、このような事態が起きないよう、これまで以上に取り扱いに厳重に注意するとともに、社員教育の再徹底や運用体制を見直すことで再発防止に努めて参ります。
雑記系ブログ。セキュリティとか、マイルとか、投資とか、、、 / Miscellaneous Blogs. Security, miles, investments, etc
このたび当社において、情報提供メールを送信した際の不手際により、別のお客様のメールアドレスが表示される状態で送信してしまう事故が発生いたしましたので、下記の通りご報告申し上げます。対象のお客様には、多大なるご心配とご迷惑をお掛けすることとなり、心よりお詫び申し上げます。
このような事案が発生したことを深く反省し、今後、このような事態が起きないよう、これまで以上に取り扱いに厳重に注意するとともに、社員教育の再徹底や運用体制を見直すことで再発防止に努めて参ります。
デジタルサービス局と(一財)GovTech東京(以下、GovTech東京という。)との協働事業において、GovTech東京が委託契約した事業者から個人情報の漏えい事故が発生しましたので、お知らせします。
関係者の皆様には、多大なご迷惑をおかけし、深くお詫び申し上げます。
今後、再発防止に向け、より一層の情報管理を徹底してまいります。
若手エンジニアを対象に、リスキリングプログラムから就業支援まで伴走型で支援する「東京デジタルアカデミー若手エンジニアコース」の運営委託事業者(デロイトトーマツファイナンシャルアドバイザリー合同会社)が、当事業受講者561名分の個人情報について、下記期間において、受講状況管理ツール上で受講者が閲覧できる状況になっていた。これは当該事業者がツールの閲覧権限の設定を誤ったことによるものである。
令和7年7月7日(月曜日)から同年8月6日(水曜日)19時45分頃まで
上記期間にツールに登録した561名分の受講者の氏名及びメールアドレス
事業者が、受講者の登録作業を行った際、権限設定について、本来「ゲスト」で設定すべきところ、「一般ユーザー」で設定した。
受講者から、事業者あてに、他の受講者の個人情報が閲覧できる状態になっている旨の連絡があった。
事業者からGovTech東京に報告があり、事故が判明した。
権限変更により、本事象は解消
事業者が、受講者の登録作業を行った際、他の登録者の情報が閲覧できる権限が設定されていた。
個人情報が漏えいした561名にGovTech東京から、連絡用ツールにて経緯の説明と謝罪を行った。
現時点で二次被害等の報告は受けていない。
今後、個人情報の取扱いに関する再点検の実施、業務遂行におけるダブルチェックの徹底、関係職員への教育指導を徹底し、再発防止を図ってまいります。
デジタルサービス局及びGovTech東京において、委託業務に係る個人情報の適切な管理について、改めて注意喚起を行いました。
公益財団法人堺市文化振興財団(以下、財団)の元職員で、財団が舞台管理運営業務を委託している「さかいステージサービス」の従業員(以下、元職員)が、財団の管理する「sacay(サカイ)メイト※」会員等の個人情報を含む電子データ(以下、データ)を窃取し、個人情報の一部を外部に流出させる事案が発生しました。なお、既に元職員からデータを回収しており、個人情報の漏えいによる二次被害は現在のところ確認されておりません。
関係者の皆様に多大なご心配とご迷惑をおかけしたことに対し深くお詫び申し上げるとともに、再発防止に向け、より一層、個人情報の適正管理を徹底します。
①「sacay メイト」会員情報(令和 2 年 3 月 2 日時点)
氏名・住所・生年月日・性別・電話番号・メールアドレス 37,164 名分(延べ人数)
②財団職員情報(退職者を含む)
氏名・住所・生年月日 82 名分
③堺市職員情報(退職者を含む)
氏名・電話番号 59 名分
④堺市議会議員情報(元議員を含む)
住所・電話番号・ファックス番号・メールアドレス 48 名分
①、②及び職員名簿を利用
財団職員情報(退職者を含む) 92 名分
①、③及び市の職員名簿を利用
堺市職員情報(退職者を含む) 63 名分
④を利用
堺市議会議員情報(元議員を含む) 48 名分
令和 4 年 3 月、X(旧 Twitter)及び Gmail を通じて、財団及び財団職員に対する誹謗中傷の投稿が始まる。投稿には財団及び堺市職員、堺市議会議員の個人情報が含まれており、財団が保有していた「sacayメイト」会員情報を窃取したこと、その個人情報の売却や公開を示唆するものもあった。投稿者の特定について財団が調査を進めていく中で、元職員が本件に関与している可能性が浮上し、証拠収集を継続してきた。
令和7年6月、元職員へ財団が任意の事情聴取を実施したところ、投稿行為を認め、データを窃取し保持していたことが判明した。
元職員は、財団による事情聴取の中で、財団在職中の令和 2 年 3 月に、財団の情報システム(以下「システム」)から①を窃取したことを供述した。 また、財団を退職後の令和 2 年 4 月頃から令和 4 年 4 月頃にかけて、財団が「さかいステージサービス」に貸与していた端末からシステムに不正ログインし、②から④のデータを窃取したことも供述した。
さらに、窃取したデータと職員名簿をもとに財団及び堺市職員の個人情報を投稿し、外部へ流出させたことを供述しており、同様に堺市議会議員の個人情報も外部へ流出させたとしている。
なお、窃取したデータ全体については第三者への提供を否認している。財団として、元職員からデータを回収し、元職員が投稿に使用していた X(旧 Twitter)と Gmail のアカウント及び投稿を削除させ、その確認をしている。
平素は弊社ウェブサイトをご利用いただき、誠にありがとうございます。
2025年7月10日~18日の間、弊社採用情報ページにおいてシステム障害が発生し、ページの閲覧ができない状態となっておりましたが、
このたび復旧いたしましたことをご報告いたします。
本障害は外部からの不正アクセスを原因とするもので、皆様にご不便とご心配をおかけしましたことを、深くお詫び申し上げます。
復旧にあたっては、原因の除去とともに全体のセキュリティ強化対策を実施し、現在は安全にご利用いただける状態となっております。
詳細につきましては、採用情報ページ内に別途ご報告を掲載しておりますので、ご確認ください。
この度は、皆様に長らくご不便とご迷惑をおかけしましたことを、深くお詫び申し上げます。
今後とも、どうぞよろしくお願い申し上げます。
株式会社丸菱ホールディングス(以下「当社」といいます)は、2025年7月28日付で「ランサムウェア攻撃に関するお知らせとお詫び」を公表し、その後、8月5日付で「一部漏えいしていることが判明」との表現を用いてお知らせいたしました。
しかしながら、外部の専門機関と連携した追加調査の結果、現時点では外部への情報漏えいの痕跡は確認されておりません。
当初の表現が断定的であったため、関係者の皆様にご心配とご迷惑をおかけしましたことを、深くお詫び申し上げます。
■現在の状況
・当社サーバーは7月26日に不正アクセスを受け、ランサムウェア攻撃により一部システムが使用不能となりました。
・外部セキュリティ専門家の支援を受け、主要システムは復旧済みです。
・上記に関連する個人情報・社内情報について、現時点で外部への漏えいの痕跡は確認されておりません。
■表現の訂正について
・8月5日付のお知らせにおいて「一部漏えいしていることが判明」と記載しましたが、正しくは「一部漏えいの可能性がある」という状況でした。
・断定的な表現を用いたことにより、皆様にご心配をおかけしましたことを改めてお詫び申し上げます。
■今後の対応
・万が一、漏えいが確認された場合には、速やかに所管当局や外部関係機関を通じて、関係者の皆様へ直接ご連絡いたします。
・セキュリティ体制の強化、システム監視体制の再構築を行い、再発防止に努めてまいります。
■関係者の皆様へのお願い
・漏えいした可能性のある情報を悪用したフィッシングメールや不審な連絡には十分ご注意ください。
・心当たりのないメールは開封せず、添付ファイルやリンクは絶対に開かないようお願いいたします。
・SNS等での拡散は二次被害につながる恐れがありますのでお控えください。
当社は本件を厳粛に受け止め、再発防止と信頼回復に全力で取り組んでまいります。
引き続きのご理解とご支援を賜りますようお願い申し上げます。
【2025/7/28リリース文】
拝啓 平素より格別のご⾼配を賜り、厚く御礼申し上げます
このたび、弊社社内サーバーに対して第三者による不正アクセスが⾏われ、サーバー内のデータが消去される事態が発⽣いたしました。
以下に経緯および対応状況をご報告申し上げるとともに、お客様ならびに関係者の皆様に多⼤なるご⼼配とご迷惑をおかけいたしましたことを、⼼より深くお詫び申し上げます。
本件は 2025 年 7 ⽉ 19 ⽇に発⽣し、外部からの不正アクセス(攻撃)により、弊社が管理していた顧客データベースが消去されました。当該データには、⽒名・住所・証券番号・保険種⽬・保険料が含まれております。なお、電話番号・メールアドレス・⼝座情報・クレジットカード情報は含まれておりません。
調査の結果、弊社社内サーバー設定に起因するセキュリティの脆弱性を突かれて不正アクセスを受けたことが判明いたしました。
弊社は専⾨のセキュリティ調査会社と連携し、令和7年7⽉24⽇〜8⽉7⽇にかけて詳細な調査を実施いたしました。
その結果、不正アクセスの滞在時間が極めて短時間であり、消去されたデータが外部に流出した可能性は低いと報告を受けております。また、現時点では、顧客データが外部に公開された事実や、不正利⽤による⼆次被害は確認されておりません。
引続き監視を継続するとともに、万が⼀、不正利⽤の疑いがございました場合、弊社まで速やかにご連絡くださいますようお願い申し上げます。
発⽣直後に、原因となったサーバーの設定変更を含むセキュリティ対策を実施しました。あわせて、個⼈情報保護委員会及び当社取扱い保険会社への報告も完了しております。
今後このような事態を防ぐため、社内システムのセキュリティ強化を進めるとともに、社員に対する情報セキュリティ教育を徹底してまいります。
改めまして、お客様及び関係者の皆様には多⼤なるご⼼配とご迷惑をおかけいたしましたことを深くお詫び申し上げます。
今後も、より⼀層の情報管理体制の強化に取り組み、信頼回復に努めてまいりますので、何卒ご理解賜りますようお願い申し上げます。
当該事象の確認後、直ちに被害拡大を防止するためにネットワークの遮断等の対応を実施いたしました。同時に被害範囲の特定、原因や侵入経路の調査を開始しております。
現在、当該事象の影響により、一部の業務に影響が発生しております。
調査と並行して復旧作業につきましても鋭意対応しており、影響の最小化に努めております。
ご迷惑とご不便をおかけしますが、何卒ご理解とご協力をお願いいたします。
インターネットに接続するためにIPアドレスが必要なのはなぜでしょうか?
IPアドレスは本当にユーザーを一意に特定できるのでしょうか?
また、1つのパケットがどのようにやり取りされるのか気になったことはありませんか?
もし答えが「はい」なら、この学習ルームで一緒に探ってみましょう!
このルームは、ネットワークの重要な概念や代表的なプロトコルを学ぶためのシリーズの最初のステップです。
Networking Concepts(本ルーム)
このルームでは「IPアドレス」や「TCPポート番号」といった用語を知っていることを前提としています。
ただし、それらを専門的に説明できる必要はありません。
もし全く馴染みがない場合は、Pre Securityパスから始めるのがおすすめです。
このルームを終える頃には、次の内容を理解できるようになります。
ISO/OSIネットワークモデル
IPアドレス、サブネット、ルーティングの基本
TCPとUDPの仕組み、ポート番号の役割
コマンドラインから開いているTCPポートに接続する方法
最初に断っておきますが、OSIモデルは一見すると複雑に思えるかもしれません。ですが安心してください。難解な略語に出会っても、このモジュールでは具体的な例を交えて解説しています。学習を終える頃には、OSIモデルの理解がぐっと身近なものになっているはずです。
OSI(Open Systems Interconnection)モデルは、ISO(国際標準化機構)が策定した「コンピュータネットワークで通信がどのように行われるべきか」を示す概念モデルです。
理論的な枠組みではありますが、ネットワークの基礎を深く理解するためには欠かせないものです。OSIモデルは次の7階層で構成されています。
Physical Layer(物理層)
Data Link Layer(データリンク層)
Network Layer(ネットワーク層)
Transport Layer(トランスポート層)
Session Layer(セッション層)
Presentation Layer(プレゼンテーション層)
Application Layer(アプリケーション層)
下から順に番号が振られており、最下層の物理層がレイヤー1、最上層のアプリケーション層がレイヤー7です。
Layer 1: Physical Layer(物理層)
デバイス同士を物理的に接続する役割を担います。電気信号・光信号・無線信号などの伝送方式や、ビット(0と1)の定義がここで扱われます。
媒介となるのはイーサネットケーブル、光ファイバー、WiFiの電波帯(2.4GHz/5GHz/6GHz)などです。
Layer 2: Data Link Layer(データリンク層)
同一ネットワークセグメント内のノード間通信を規定します。例えば、オフィス内の10台のPCを1台のスイッチに接続した場合、それが1つのネットワークセグメントです。
代表例はEthernet(IEEE 802.3)やWiFi(IEEE 802.11)。アドレスとしてMACアドレスを使用します。MACアドレスは6バイト(48ビット)で構成され、左の3バイトはベンダー識別子です。実際の通信では送信元と宛先の2つのMACアドレスが含まれます。
Layer 3: Network Layer(ネットワーク層)
異なるネットワーク間でデータを転送します。論理アドレス(IPアドレス)とルーティングが中心の役割です。
例として、複数の都市や国に分散したオフィスを接続するのがこの層です。代表的なプロトコルはIP、ICMP、VPN(IPSec、SSL/TLSなど)。
Layer 4: Transport Layer(トランスポート層)
アプリケーション同士のエンドツーエンド通信を提供します。通信の信頼性確保や誤り訂正、分割と再構築を担当します。
代表的なプロトコルはTCPとUDPです。
Layer 5: Session Layer(セッション層)
アプリケーション間の通信セッションを確立・維持・同期します。データが正しい順序で届くよう管理し、障害時には回復手段を提供します。
例:NFS(Network File System)、RPC(Remote Procedure Call)。
Layer 6: Presentation Layer(プレゼンテーション層)
データをアプリケーション層が理解できる形式に変換します。エンコード、圧縮、暗号化がこの層の役割です。
例:文字コード(ASCII、Unicode)、画像形式(JPEG、PNG、GIF)、電子メールで利用されるMIME(Base64でのエンコード)。
Layer 7: Application Layer(アプリケーション層)
最上位層であり、ユーザーが直接利用するアプリケーションにサービスを提供します。
代表的なプロトコルはHTTP、FTP、DNS、POP3、SMTP、IMAPなどです。
OSIモデルを初めて学ぶと難しく感じるかもしれませんが、ネットワークプロトコルを学習するうちに自然と理解が深まります。以下に各層を表で整理しました。
| レイヤー番号 | レイヤー名 | 主な役割 | 代表的なプロトコル・規格 |
|---|---|---|---|
| Layer 7 | Application layer | アプリケーションへのサービス提供 | HTTP, FTP, DNS, POP3, SMTP, IMAP |
| Layer 6 | Presentation layer | データの変換・暗号化・圧縮 | Unicode, MIME, JPEG, PNG, MPEG |
| Layer 5 | Session layer | セッションの確立・維持・同期 | NFS, RPC |
| Layer 4 | Transport layer | エンドツーエンド通信・分割/誤り訂正 | TCP, UDP |
| Layer 3 | Network layer | 論理アドレスとルーティング | IP, ICMP, IPSec |
| Layer 2 | Data link layer | 同一セグメント内の通信制御 | Ethernet (802.3), WiFi (802.11) |
| Layer 1 | Physical layer | 物理的なデータ伝送媒体 | 電気信号、光信号、無線信号 |
ISO OSIモデルという概念的なモデルを学んだので、今度は実際に実装されたモデルである TCP/IP Model を見ていきましょう。
TCP/IPとは Transmission Control Protocol / Internet Protocol の略で、1970年代に米国国防総省(DoD)によって開発されました。軍がなぜこのようなモデルを作ったのか、不思議に思うかもしれません。その理由のひとつは、ネットワークの一部が停止しても全体が機能し続けられる仕組みを実現するためです。例えば戦時中の攻撃によって一部が破壊されても、ルーティングプロトコルがネットワーク構成の変化に適応し、通信が継続できるよう設計されているのです。
OSIモデルはレイヤー1からレイヤー7まで下から上に積み上げる形で説明しましたが、ここでは逆に上から順に見ていきます。TCP/IPモデルでは次のように整理されます。
Application Layer: OSIモデルのアプリケーション層・プレゼンテーション層・セッション層(レイヤー5〜7)をまとめたもの
Transport Layer: OSIモデルのトランスポート層(レイヤー4)
Internet Layer: OSIモデルのネットワーク層(レイヤー3)に相当
Link Layer: OSIモデルのデータリンク層(レイヤー2)
| レイヤー番号 | ISO OSI Model | TCP/IP Model (RFC 1122) | 主なプロトコル |
|---|---|---|---|
| 7 | Application Layer | Application Layer | HTTP, HTTPS, FTP, POP3, SMTP, IMAP, Telnet, SSH |
| 6 | Presentation Layer | ||
| 5 | Session Layer | ||
| 4 | Transport Layer | Transport Layer | TCP, UDP |
| 3 | Network Layer | Internet Layer | IP, ICMP, IPSec |
| 2 | Data Link Layer | Link Layer | Ethernet (802.3), WiFi (802.11) |
| 1 | Physical Layer |
RFC 1122ではTCP/IPは上記のように4層モデルとして説明されますが、近年のネットワーク教科書では5層モデルとして紹介されることも多くなっています。
Application
Transport
Network
Link
Physical
「IPアドレス」と聞いて、192.168.0.1 や 172.16.159.243 といった数字を思い浮かべる人も多いでしょう。どちらも正解で、これは IPv4アドレス の例です。
ネットワーク上のすべてのホスト(PCやスマホなど)は、他のホストと通信するために一意の識別子が必要です。もし識別子がなければ、誰が誰なのか分からず通信が成り立ちません。TCP/IP環境では、この識別子が「IPアドレス」になります。
IPアドレスは郵便住所に例えると分かりやすいでしょう。住所があるからこそ世界中から手紙や荷物を受け取れます。住所がなければ、ネットショッピングもできませんよね。
現在は IPv4 と IPv6 の2種類がありますが、一般的に「IP」といえばIPv4を指すことが多いです。
IPv4アドレスは 32ビット(4オクテット) で構成され、それぞれのオクテットは0〜255までの数値を表します。
例:
192.168.1.0 → ネットワークアドレス
192.168.1.255 → ブロードキャストアドレス(ネットワーク全体宛て)
この仕組みから、IPv4アドレスは理論上約42億個(2³²)までしか作れません。
自分のIPアドレスは簡単に確認できます。
Windows: ipconfig
user@TryHackMe$ ifconfig
[...]
wlo1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.66.89 netmask 255.255.255.0 broadcast 192.168.66.255
inet6 fe80::73e1:ca5e:3f93:b1b3 prefixlen 64 scopeid 0x20<link>
ether cc:5e:f8:02:21:a7 txqueuelen 1000 (Ethernet)
RX packets 19684680 bytes 18865072842 (17.5 GiB)
RX errors 0 dropped 364 overruns 0 frame 0
TX packets 14439678 bytes 8773200951 (8.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Linux / Unix系: ifconfig または ip address show(省略形 ip a s)
user@TryHackMe$ ip a s
[...]
4: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether cc:5e:f8:02:21:a7 brd ff:ff:ff:ff:ff:ff
altname wlp3s0
inet 192.168.66.89/24 brd 192.168.66.255 scope global dynamic noprefixroute wlo1
valid_lft 36795sec preferred_lft 36795sec
inet6 fe80::73e1:ca5e:3f93:b1b3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
同じ情報を /24 のように表すこともあります。192.168.66.89/24 は「上位24ビットが同じネットワーク」を意味し、192.168.66.1 〜 192.168.66.254 が利用可能になります。
IPアドレスには大きく分けて パブリックIP と プライベートIP の2種類があります。
プライベートIPは外部インターネットから直接アクセスできない「閉じた空間」での通信に使われます。例えばマンションの部屋番号のように、内部では便利に使えるけれど外部からは直接届かないイメージです。
RFC 1918で定義されている範囲は以下の3つです:
10.0.0.0 ~ 10.255.255.255 (10/8)
172.16.0.0 ~ 172.31.255.255 (172.16/12)
192.168.0.0 ~ 192.168.255.255 (192.168/16)
外部に出るときは、ルーターがパブリックIPを持ち、NAT(アドレス変換)によって通信します。
ルーターは郵便局のようなものです。郵便物の宛先を見て「次はどこに送るか」を判断します。もし宛先が海外なら、地域の郵便局から中央の国際郵便局へ、そこから相手国へと渡されます。
同様に、ルーターはパケットのIPアドレスを確認し、目的地へ近づくように最適な経路に転送します。最終的に目的地へ届くまでに、パケットは複数のルーターを経由することが普通です。
IPプロトコルによって、ネットワーク上の宛先ホストに到達できます。ホストはIPアドレスで識別されますが、実際にやり取りを行うのはホスト上の「プロセス同士」です。そのためにはトランスポート層のプロトコルが必要であり、代表的なのが UDP と TCP です。
UDP(User Datagram Protocol) は、対象ホスト上の特定のプロセスにデータを届ける仕組みを提供します。トランスポート層(レイヤー4)で動作するシンプルなコネクションレス型プロトコルで、通信の前に接続を確立する必要がありません。さらに、送信したパケットが実際に届いたかどうかを確認する仕組みも持ちません。
ホストを識別するのはIPアドレスですが、どのプロセスに送るかを識別するにはポート番号を使います。ポート番号は2オクテットで表されるため範囲は 1〜65535 となり、0番は予約されています。
UDPは「普通郵便」のようなものです。荷物を送っても配達証明はなく、届いたかどうか分かりません。その代わり、安価で迅速に送れるのが利点です。同じようにUDPも、確認の仕組みがない分、高速に処理できるというメリットがあります。
ただし、「確実に届いたことを保証したい」場合はUDPではなくTCPを使います。
TCP(Transmission Control Protocol) は、コネクション型のトランスポート層プロトコルです。通信を始める前に接続を確立し、データを正確に届ける仕組みを備えています。UDPと同じくレイヤー4で動作しますが、TCPは信頼性を重視しているのが大きな違いです。
TCPでは、送信するデータの各オクテットにシーケンス番号を割り当てます。受信側はその番号を確認することで、データが欠落していないか、重複していないかを判断できます。また、受信側は「どこまで受け取ったか」を示す**ACK(確認応答番号)**を返します。
TCP接続は「3ウェイハンドシェイク」と呼ばれる3段階のやり取りで確立されます。
SYNパケット: クライアントが接続要求を出し、自分の初期シーケンス番号をサーバに送る。
SYN-ACKパケット: サーバが応答として、自分の初期シーケンス番号を含めて返す。
ACKパケット: クライアントが受信確認を送り、接続が確立される。
この3つのパケット交換によって、安全に通信を始められる状態になります。
TCPでもプロセスの識別にはUDPと同じく**ポート番号(1〜65535、0は予約)**を使用します。
最後にもう一つ重要な概念である Encapsulation(カプセル化) を説明しましょう。
ここでのカプセル化とは、各レイヤーが受け取ったデータにヘッダー(場合によってはトレーラーも)を付加し、下位のレイヤーへ渡す処理を意味します。
この仕組みによって、各レイヤーは自分の役割に専念できるようになります。以下のような流れで進みます。
Application data
ユーザーがアプリケーションにデータを入力するところから始まります。例えばメールやメッセージを送信する操作です。アプリケーションはデータを整形し、下位のトランスポート層へ渡します。
Transport protocol segment or datagram
トランスポート層(TCPまたはUDP)がヘッダーを追加し、TCPセグメント(またはUDPデータグラム)を生成します。そして下位のネットワーク層に渡します。
Network packet
ネットワーク層(インターネット層)は、受け取ったTCPセグメントまたはUDPデータグラムにIPヘッダーを付け、IPパケットを作成します。これをさらに下位のデータリンク層に渡します。
Data link frame
データリンク層(EthernetやWiFi)は、受け取ったIPパケットにヘッダーとトレーラーを追加して「フレーム」を作成します。
つまり、アプリケーションデータ → TCP/UDPセグメント → IPパケット → データリンクフレーム、という順にカプセル化されていきます。そして受信側では逆の手順でヘッダーやトレーラーを取り除き、最終的にアプリケーションデータが取り出されます。
これまで学んだ内容をもとに、簡単な例でパケットがどのように流れるかを見てみましょう。
シナリオ:あなたがTryHackMeで部屋を検索するとき。
ブラウザで検索ページにクエリを入力し、Enterを押す。
ブラウザはHTTPSを利用し、HTTPリクエストを作成してトランスポート層に渡す。
TCP層は、ブラウザとTryHackMeサーバの間で3ウェイハンドシェイクを行い接続を確立。その後、検索クエリを含むHTTPリクエストを送信する。各TCPセグメントはネットワーク層へ渡される。
IP層は送信元(自分のPC)と宛先(TryHackMeサーバ)のIPアドレスを追加し、パケットをデータリンク層に渡す。
データリンク層はヘッダーとトレーラーを付け、パケットをルーターに送る。
ルーターはデータリンク層のヘッダーとトレーラーを取り除き、IPアドレスなどを確認して次の経路へ転送する。この処理を繰り返し、最終的に宛先サーバのルーターに到達する。
宛先のネットワークに着いた後は、逆の手順でカプセルを剥がし、HTTPリクエストがサーバのアプリケーションに届く。
この流れが、パケットが生きて動く「一生」の簡略版です。後の学習でさらに詳しいバージョンを扱っていきます。
まずは下の Start Machine ボタンを押して仮想マシンを起動しましょう。
続いて、画面上部にある Start AttackBox ボタンを押すと AttackBox が起動します。デフォルトではスプリット画面で表示されますが、見えない場合は上部の Show Split View ボタンをクリックしてください。
両方のマシンが起動するまでに約2分かかります。準備ができたら、AttackBox上でターミナルを起動し、telnet を試していきます。
TELNET(Teletype Network) プロトコルは、リモート端末に接続するためのネットワークプロトコルです。簡単に言うと、telnetクライアントを使うと、リモートのシステムに接続してテキストコマンドを送信できるという仕組みです。
もともとはリモート管理に使われていましたが、実際には任意のサーバのTCPポートに接続して通信を試すことができます。
今回の演習では、ターゲット仮想マシン上で動作している以下のサービスに接続してみます。
Echoサーバ: 送信した内容をそのまま返すサーバ。デフォルトはポート7。
Daytimeサーバ: 現在の日付と時刻を返すサーバ。デフォルトはポート13。
Web (HTTP) サーバ: ウェブページを返すサーバ。デフォルトはTCPポート80。
※ EchoサーバとDaytimeサーバはセキュリティリスクとされ、通常は利用されませんが、ここでは学習目的で起動しています。
次のコマンドでターゲットVMのEchoサーバ(ポート7)に接続します。終了する際は CTRL + Shift + ] を押してから quit と入力します。
Terminaluser@TryHackMe$ telnet 10.201.63.253 7 telnet 10.201.63.253 7 Trying 10.201.63.253... Connected to 10.201.63.253. Escape character is '^]'. Hi Hi How are you? How are you? Bye Bye ^] telnet> quit Connection closed.
次に、Daytimeサーバ(ポート13)に接続します。接続すると現在の日時が返され、自動的に切断されます。
Terminaluser@TryHackMe$ telnet 10.201.63.253 13 Trying 10.201.63.253... Connected to 10.201.63.253. Escape character is '^]'. Thu Jun 20 12:36:32 PM UTC 2024 Connection closed by foreign host.
最後に、HTTPサーバ(ポート80)に接続してウェブページを取得してみます。接続後に以下のコマンドを入力してください。
GET / HTTP/1.1 Host: telnet.thm
その後、Enterを2回押して空行を送るとリクエストが完了します。応答例は以下の通りです(一部省略)。
Terminaluser@TryHackMe$ telnet 10.201.63.253 80 Trying 10.201.63.253... Connected to 10.201.63.253. Escape character is '^]'. GET / HTTP/1.1 Host: telnet.thm HTTP/1.1 200 OK Content-Type: text/html [...] Connection closed by foreign host.
※ 応答が返らない場合は、コマンド入力後にもう一度 Enter を押してください。
このルームでは、ISO OSIモデル と TCP/IPモデル を比較しながら解説しました。さらに、IPアドレスとサブネット、そしてルーティングの基本について触れました。加えて、TCPとUDP の違いを学び、Encapsulation(カプセル化) の仕組みも整理しました。
実演としては、telnet を利用し、TCPを介してさまざまなサーバと通信する方法を試しました。
これで Networking Concepts を完了です。次はぜひ、ステップアップとして Networking Essentials に進みましょう。