【セキュリティ事件簿#2025-251】ソフトバンク株式会社 業務委託先企業による個人情報漏えいの可能性について 2025/6/11

 

ソフトバンク株式会社(以下「弊社」)は、弊社の業務委託先である株式会社UFジャパン(以下「UFジャパン」)から、弊社の携帯電話サービス(“ソフトバンク”および“ワイモバイル”)を契約されている個人のお客さまの情報が流出した可能性があることが判明しましたので、お知らせします。

流出した個人情報の件数は調査中ですが、現在判明している限りにおいては、約14万件に及ぶ可能性があります。情報の種類は、氏名、住所、電話番号などです。クレジットカード情報や口座情報、マイナンバーカードに関する情報などは含まれていません。なお、流出した可能性がある情報を用いたお客さまの被害などの事実は、現時点で確認されていません。これを受けて、弊社は2025年6月3日に監督官庁および関係機関へ報告するとともに、警察への相談を進めています。また、弊社の調査の過程において、UFジャパンが弊社の許諾なしに協力会社と契約していたことと、UFジャパンが弊社との契約上のルールに反した情報の取り扱いをしていたことが判明しています。

このたびは、お客さまに多大なご迷惑とご心配をおかけすることになり、深くおわび申し上げます。

弊社は、このような重大な事象が発生したことを真摯に受け止め、個人情報を取り扱う業務委託先に対する管理を強化して再発防止に努め、お客さまに安心していただけるように取り組んでいきます。

概要

(1)経緯

2025年3月下旬に、社外の第三者から、弊社のお客さまの個人情報に関して、UFジャパンの事業所内で不適切な取り扱いがされている可能性と、他社の通信事業者のサービス勧誘に利用している可能性があるとの申告を受けました。その後、弊社が調査した結果、下記の事実などが判明しました。

①UFジャパンの協力会社の元従業員A氏による不適切な行為

UFジャパンの協力会社を退職したA氏が、2024年12月にUFジャパンの事業所に不正に立ち入り、USBメモリーを情報管理端末に接続して、弊社のお客さまの個人情報を持ち出している可能性があることが判明しました(監視カメラの映像で確認)。一方で、弊社の調査に対して、A氏は個人情報の持ち出しについて、記憶にないと主張しています。

②UFジャパンの協力会社の従業員B氏による情報管理の不備

従業員B氏が、弊社のお客さまの個人情報を含むファイルをクラウドサービスにアップロードし、弊社の業務に携わっていない3人がその内容を閲覧できる状態になっていたことが判明しました。なお、現時点で、この3人が情報をダウンロードした形跡はありません。

③UFジャパンの情報管理体制

弊社は業務委託先に対してセキュリティールールを定めていましたが、UFジャパンは、個人情報を取り扱うフロアへの社外の第三者の入退室の許容や警備員の未配置など、ずさんな運用を行っていました。さらに、弊社が実施したセキュリティー監査に対して虚偽の報告を行っていたことが判明しています。

(2)流出した可能性があるお客さまの情報

件数(現在判明しているもの)

13万7,156件(①13万5,022件、②2,134件)

[注]

その他、弊社の社内システム以外で個人を特定することができない、社内の顧客管理番号のみが16万1,132件あったことが併せて判明しています。

対象サービス

“ソフトバンク”および“ワイモバイル”の携帯電話サービス

流出した可能性がある情報

氏名、住所、生年月日、電話番号、性別、年齢、契約内容(料金プランなど)、サービスの利用に関する情報、社内の顧客管理番号など

[注]

①と②ともに、クレジットカード情報や口座情報、マイナンバーカードに関する情報は含まれていません。

本事案に対する対応

弊社は、UFジャパンが業務で使用していたパソコン全台のフォレンジック調査や、関係者への聞き取り調査、警察への相談などを進め、全容の解明に努めていきます。また、情報の流出の可能性の確認を継続的に行っていきます。

また、UFジャパンに対しては、委託してきた当該業務を5月20日に停止し、6月9日付で当該業務における同社との業務委託契約を解除しました。

本事案に関するお客さま専用の問い合わせ窓口を設置しました。

お客さま専用の問い合わせ窓口

電話番号 0800-111-6636

[注]

受付時間:午前10時から午後7時まで

個人情報を取り扱う委託先に関する今後の方針

①個人のお客さまの情報を取り扱う業務および環境の見直し

弊社のコールセンターと、“ソフトバンク”および“ワイモバイル”の取扱店以外からの、個人のお客さまへの営業目的での架電を原則廃止します。架電する場合は、お客さまの明確な承諾を得た上で実施します。

契約サポートなどの営業目的以外で個人のお客さまへの架電業務を行う委託先に対しては、個人情報を取り扱うための環境(設備・運用)を弊社が全て用意し、個人情報の取り扱いを常時監視するなど、より厳格な運用管理を行っていきます。

②緊急監査

個人情報を取り扱う委託先に対する緊急監査を進めています。

リリース文アーカイブ

【セキュリティ事件簿#2025-250】日鉄ソリューションズ株式会社 不正アクセスによる情報漏洩の可能性に関するお詫びとお知らせ 2025/7/8

 

このたび、当社の社内ネットワークが、ソフトウェアの脆弱性を原因とする不正アクセス(ゼロデイ攻撃※1)を受け、当社が保有するお客様・パートナー様・当社従業員の個人情報等の一部が外部に漏洩した可能性があることが判明しました。本事案の発生により、お取引先様をはじめ関係者の皆様に多大なるご迷惑、ご心配をおかけすることとなりましたことを深くお詫び申し上げます。

当社では不正アクセスを検知して以降、速やかに外部からのアクセスを制限するなどの対策を講じ、外部の専門機関と協力して侵入経路や影響範囲、原因分析等の調査を進めるとともに、お取引先様とも連携して必要な対応を進めてまいりました。個人情報保護法に基づき、個人の皆様へのご連絡の実施、あるいは準備も進めておりますが、今般、対外公表も併せて行うことといたしました。

1. 経緯・原因

2025年3月7日、当社のサーバーに対する不審なアクセスを検知し、直ちにサーバーをネットワークから隔離するなどの必要な対策を実施しました。その後、外部専門家の助言を受けながら影響範囲調査を実施する中で、第三者による不正アクセスの形跡が確認され、当社の社内利用サーバー内に保存されていたお客様・パートナー様・当社従業員の個人情報等の一部が外部に漏洩した可能性があることが判明しました。なお、当社がお客様に提供しておりますクラウドサービスには影響はございません。

不正アクセスの原因については、ネットワーク機器へのゼロデイ攻撃があったことが判明しております。

当社は、情報漏洩の可能性のあるお取引先様に対して、既に個別にご連絡を差し上げており、必要な対応を進めております。個人情報保護法に基づき、お取引先様のご協力のもと、個人の皆様への通知も実施、あるいは準備しておりますが、関係する方々へ広くお知らせする事が必要と判断し、このたび、公表させていただくことといたしました。

2. 漏洩した可能性がある個人情報

当社のお客様、パートナー様及び当社従業員に関する以下の個人情報が一部漏洩した可能性があることを確認しております。

お客様

氏名、会社名、所属、役職、会社住所、業務用メールアドレス・電話番号

パートナー様※2

氏名、業務用メールアドレス(当社貸与の当社ドメインアドレス)

当社従業員※2

氏名、所属、役職、業務用メールアドレス

本件について、現時点でSNS及びダークウェブで情報が拡散・流通している痕跡は見られず、また、漏洩した個人情報が悪用される等の二次被害も確認されておりませんが、身に覚えのない不審な電話やメールには応じないよう、ご注意ください。

3. 当社の対応について

本件については、既に警察への相談・通報をしており、また、個人情報保護委員会に必要な報告を行っています。

併せて、外部専門家の助言も受けながら、不正アクセスを受けた機器に対する隔離・再構築等の適切な対策、及び出口対策強化・ふるまい検知強化等の残存可能性のあるリスクへの対策を講じることで、当社の社内ネットワークは安全な状態を回復しております。

当社は、これまで情報セキュリティの強化に継続して取り組んでまいりましたが、今回の不正アクセスの事態に至ったことを厳粛に受け止め、再発防止に向けて万全を期すよう、セキュリティ対策の更なる強化に引き続き努めてまいります。

(※1)ゼロデイ攻撃:プログラムの脆弱性の存在が公表される前や、修正プログラムがリリースされる前に、その脆弱性を悪用して行われるサイバー攻撃

(※2)過去の契約者/在籍者を含む

リリース文アーカイブ

【セキュリティ事件簿#2025-249】株式会社UFジャパン お詫びとご報告 2025/6/12

 

このたび、ソフトバンク株式会社様(以下「ソフトバンク社」といいます。)の 2025年6月11日付プレスリリースにおいて公表されました件(以下「本件」といいます。)について、関係各位に多大なるご迷惑とご心配をおかけしましたこと、心より深くお詫び申し上げます。

本件は、弊社がソフトバンク社より受託していた業務(以下「本件業務」といいます。)を再委託していた企業(以下「再委託先」といいます。)の従業員が、

正当な権限を逸脱し、本件業務で取り扱う個人情報を不正に取得又は利用していた可能性がある事案です(以下「本件事案」といいます。)。

本件事案に弊社従業員が関与していないものの情報管理体制が不十分であった結果、重大な本件事案を招いたことを、深く反省しております。

弊社としては、ソフトバンク社の調査に全面的に協力し、本件事案の全容解明、原因と再発防止策を取りまとめてまいる所存ですが、これに加え、現在、以下の対応を進めております。

・弊社と再委託先との契約解除

・情報セキュリティ・コンプライアンス研修の全社的な実施(弊社が別の業務で業務を委託している先に対するものも含みます。)

・情報管理に関する社内規程の見直し等のガバナンス体制の強化

これらにより、今後、二度と同様の事態を起こさぬよう、弊社一丸となって、ガバナンス体制の構築と従業員教育に全力で取り組んでまいります。

最後に、本件事案により、ソフトバンク社はもちろんのこと、別の業務を弊社に委託いただいている多くのお客様の信頼を損ねる結果となったことを、重ねて、深くお詫び申し上げます。

リリース文アーカイブ

【セキュリティ事件簿#2025-248】富山大学附属病院における個人情報の紛失について 2025/5/29

 

このたび、本院の医師が診療目的で取得した患者の個人情報を保存したSDカードを紛失した事案が発生いたしました。

本件に関し、患者の皆様及びご家族、関係者の皆様には多大なるご心配とご心痛をおかけしておりますことを、誠に申し訳なく、深くお詫び申し上げます。

現在、本院全診療科を対象に診察・診断画像等の取扱い等の点検を進めると同時に、早急に可能な限りの再発防止策を講じております。

また、当該診療科に対して個人情報の管理責任の重要性を徹底指導いたしました。

改めまして当院全構成員に対して、緊急の個人情報・セキュリティ研修を行う事で個人情報管理を含め法令順守の徹底指導を行うこととしております。

本院で治療を受けているすべての患者の皆様をはじめ、地域の皆様、関係各位の信頼を損なうこととなり、重ねて深くお詫び申し上げます。

今後このような事案が再度発生しないよう信頼の回復に努めてまいる所存です。

リリース文アーカイブ

【セキュリティ事件簿#2025-247】株式会社オリエンタル・ガード・リサーチ 不正アクセスによる個⼈情報流出の可能性に関するお詫びとご報告 2025/7/1

 

株式会社オリエンタル・ガード・リサーチ並びにその関連会社である株式会社OGRサービス(以下「当社ら」といいます)の一部の取引先関係者様の ご氏名及びメールアドレスが、外部からの不正アクセスにより、漏洩した可能性があることが判明致しました。取引先関係者様には大変なご迷惑とご心配をお掛けし、心よりお詫び申し上げます。

1.  漏洩の可能性のある対象者 対象となる可能性がある取引先関係者様は、2019年から当社らが管理するファイルサーバーに不正アクセスが発生しており、現時点までの調査においては当社ら管理の基幹システムに不正アクセスの確認はされておりません。

2. 漏洩の可能性のある個人情報 現在もなお検証中ですが、漏洩の可能性がある個人情報は、ご氏名(登録されていた場合のみ)等であり、メールアドレス等その他情報について漏洩の可能性はない見通しです。

3. 経緯及び対応 2025年6月 27 日(日本時間)に、当社の社員が社内のデータにアクセスしようとした際にファイルが開かないことが発覚、不正なアクセスがありファイルが暗号化されているのを確認、当該情報には取引先関係者様の情報が含まれる可能性があることが確認されました。これを受け当社グループでは、直ちに不正アクセスの遮断と対処、当社グループのネットワークに対する監視強化を実施、加えて流出した可能性がある情報のモニタリングを継続しています。引き続き、被害状況及び原因の解明を進めています。なお、個人情報保護委員会への報告等、規制に沿った対応を実施致しました。今後も必要に応じこれらの関係機関と連携して対応してまいります。 今後メールアドレスを悪用した迷惑メールが送信される等の可能性がありますので、十分に ご注意いただくようお願い申し上げます。 

今回の事態を重く受け止め、再びこのようなことがないよう、より一層 の情報管理体制の強化に努めると共に、不正アクセス等の犯罪行為には厳正に対処してまいります。

リリース文アーカイブ

【セキュリティ事件簿#2025-246】株式会社アピア ウェブサイトに対するハッキングに関するご報告とお詫び

 

当ホームページが第三者からの不正アクセスにより別サイトに飛ばされてしまうというよう状況が続きました。

原因を特定しサイトを復旧しましたので報告いたします。

ご利用いただいておりますお客様におかれましては、大変ご迷惑をおかけいたしましたことを深くお詫び申し上げます。

本件につきまして、ご迷惑ご不便をおかけいたしましたことを重ねて深くお詫び申し上げますとともに、今後はさらに対策・監視を強化して運営して参ります。

現在のところ不適切なウェブサイトが表示されたことによる被害等の報告はございません。また、同ウェブサイトでの個人情報等の取扱いはないため流出はございません。

<期間>

2025年7月1日(火)午後5時頃〜7月4日(金)午後3時頃

■改ざん検知後の対応

改ざんがあったことの検知後直ちに当該ファイルの削除及び修正を行い、セキュリティの強化対策を施しました。また、他サーバでは同様の問題が発生していないことを確認いたしました。

リリース文アーカイブ

【セキュリティ事件簿#2025-238】ミタチ産業株式会社 当社グループ会社における不正アクセスによるシステム障害に関するお知らせ 2025/7/4

 

2025年7月1日付でお知らせいたしました「当社グループ会社における不正アクセスによるシステム障害に関するお知らせ」のとおり、当社のグループ会社であるMITACHI(HK)COMPANY LIMITED(以下、「ミタチ香港」という。)のサーバーが第三者によって不正アクセスを受けたことによる被害が発生いたしました。本件における現時点の状況につきまして、以下の通りお知らせいたします。

お客様をはじめ、お取引先様、関係者の皆様にご心配とご迷惑をおかけすることとなり、深くお詫び申し上げます。

1.経緯、状況

2025年6月30日(月)、ミタチ香港においてシステム障害が発生し、調査の結果、ミタチ香港のサーバーが第三者によって不正アクセスを受けたことによる被害が確認されました。ミタチ香港およびシステム接続のある、MITACHI ELECTRONICS(SHENZHEN)CO.,LTD.、MITACHI INTERNATIONAL(MALAYSIA)SDN. BHD.、PT. MITACHI INDONESIAにおいて、ネットワーク接続を速やかに遮断し、被害の拡大を防止するとともに、現地当局への届け出を行い、対策チームを立ち上げ、外部専門事業者の協力のもと復旧のための対応を開始いたしました。

2025年7月4日 (金 )時点におきまして、 MITACHI ELECTRONICS( SHENZHEN) CO.,LTD.、 MITACHI INTERNATIONAL(MALAYSIA)SDN. BHD.、PT. MITACHI INDONESIAにおいて、被害への対策を講じ、限定的に業務を開始しております。

2.被害の状況

ミタチ香港のサーバーが暗号化され、アクセスが不能な状況となっており、対策を講じ復旧に向け対応を進めております。なお、情報の流出につきましては現在調査中となりますが、サーバー内のデータの一部が漏えいした可能性を否定することはできないものと判断しております。

3.今後の対応、影響

外部専門事業者と連携の上、早期復旧に向けた作業とともに、侵入経路の特定、被害範囲の調査を進めております。また、再発防止のためのセキュリティ対策の強化を図ってまいります。

本件が当社グループの業績に及ぼす影響につきましては、引き続き確認を行ってまいります。

今後、お知らせすべき内容が判明した場合には、速やかに情報を開示してまいります。 

リリース文アーカイブ

【2025/7/1リリース分】

リリース文アーカイブ

【セキュリティ事件簿#2025-245】株式会社ポケモン 「会員アカウント」に対する不正ログインの発生のご報告とポケモンセンターオンラインを安全にご利用いただくためのお願い 2025/7/3

 

平素よりポケモンセンターオンラインをご利用いただき、ありがとうございます。 

この度、弊社サービス以外から何らかの手段で不正に入手したログインID(メールアドレス)とパスワードの情報を用いて、ポケモンセンターオンラインに不正ログインを行ったと思われる事象が発生していることを確認いたしましたため、被害の拡大防止のため緊急メンテナンスを実施させていただいておりました。

そこで会員の皆様のアカウントの安全を考慮いたしまして、すべての会員アカウントに対し、パスワードをリセットさせていただきました。

また、不正ログイン後、第三者から会員情報書き換えがあったことが疑われるアカウントについては停止させていただきました。予めご了承ください。

この件で多大なるご迷惑とご心配をおかけしておりますことを、深くお詫び申し上げます。

【お客様ヘのお願い】

2025年7月3日(木)以降の初回ログイン時に、パスワードの再設定をお願いいたします。再設定にあたっては、以下の注意事項をご確認いただきますようお願いいたします。

再設定の手順につきましては、ログインパスワードの再設定についてご対応のお願いをご確認ください。

<パスワード再設定時の注意事項>

パスワード再設定時は下記3点を必ず守ってご対応をお願いいたします。

・過去にポケモンセンターオンラインで利用していたパスワードを使用しない

・他社サービスとは異なるパスワードを設定する

・第三者が容易に推測できるパスワードを使用しない

(例)ご自身やご家族のお名前、電話番号、生年月日、郵便番号、同じ文字の繰り返しやわかりやすい並びの文字列など

他のインターネットサイト(各種会員サイトの他、いわゆるECサイトなどを含む)のパスワードを使いまわして利用された場合、何らかの原因で他のインターネットサイトからパスワードが漏洩すると、第三者にアクセスされ、ポケモンセンターオンラインのアカウントを悪用される可能性があります。

<パスワード再設定したあとで>

パスワードを再設定していただき、アカウントにログイン可能な場合は、引き続きアカウントをご利用いただくことが可能です。

万が一、会員情報が心当たりがない内容に書き換えられている、また、マイページに身に覚えのない注文履歴があることにお気づきの場合は、お問い合わせフォームよりご連絡ください。

お客様個別に状況をご確認させていただき、ご案内いたします。

【不正ログインの詳細】

<漏洩した可能性のある個人情報の種類> 

メールアドレス / 氏名 / 住所 / 電話番号 / 生年月日 / お届け先登録情報

※クレジットカード情報は弊社で保持しておりませんので、漏洩はございません。

【今後の再発防止策】

2025年8月頃を目安にログイン時の二段階認証を導入予定です。

リリース文アーカイブ

【セキュリティ事件簿#2025-244】Oracle Cloud、インシデントの隠ぺいに失敗する(笑)

 

クラウドの安全神話を揺るがす事件が、またひとつ明るみに出た。

Oracle(オラクル)は、2025年3月に発覚した大規模なデータ侵害について、当初は「被害なし」と主張。しかし、数週間にわたり事実を否定し続けた末、訴訟をきっかけに一部顧客へ“こっそり”通知していたことが判明した。

もはや「隠ぺい」と呼ばずして、何と呼ぶのか。

■ データ侵害の実態──被害は600万件以上、140,000テナントに波及か

問題の発端は、Oracle CloudのSSO(シングルサインオン)およびLDAPシステムから約600万件の認証関連データが流出したとされる事件。

ハッカーはこのデータをダークウェブ上で販売し、その正当性を証明するサンプルには実在する企業のログイン情報が含まれていた。

情報によれば、被害は最大14万テナントに及ぶ可能性がある。

■ Oracleの初期対応──「被害なし」「旧環境の話」と繰り返す

Oracleは事件発覚当初から、「Oracle Cloudに対する侵害は存在しない」「漏えいした資格情報は古く、非現行システムに関わるもの」と繰り返し主張。

しかし、流出したデータには2024年の情報も含まれていたとする証言もあり、Oracleの説明との矛盾が次々と明らかに。

一部の顧客に対しては、FBIやCrowdStrikeが調査中であることを含め、裏で通知していたことも判明。

表では否定しながら、裏では認めていたという構図に、業界内外から厳しい視線が向けられている。

■ 集団訴訟が火に油──「60日以内の通知義務違反」との指摘も

米テキサス州では、フロリダ州のMichael Toikach氏が集団訴訟を提起。

訴状では、Oracleが60日以内に被害者へ通知すべきだった義務を怠ったとして、テキサス州法違反を主張。

さらに訴訟は、Oracleが故意に情報を隠したことで、被害者に追加のリスクを与えたと強く非難。

「オラクルは、サイバー脅威を封じ込めたのかさえ明かしていない」「この沈黙は、被害者にとって最大の恐怖だ」と糾弾している。

■ 専門家の見解:「テナント隔離神話は崩壊した」

セキュリティ専門家からも、今回のOracleの対応には厳しい批判が相次いでいる。

Beagle SecurityのアドバイザーSunil Varkey氏は、「クラウド事業者の信頼性を根本から揺るがす事件。テナント間の隔離が守られているという“神話”が崩れた」と指摘。

また、「SSOの侵害は、グローバル企業から中小企業まで全テナントを標的に変える“罠”」とし、もはや他人事では済まされない現実を突きつけている。

■ Oracleの“言い訳”を信じてはいけない理由

Oracleは今も公式には「侵害は存在しない」と言い続けているが、それを信じているセキュリティ関係者は皆無といっても過言ではない。

「漏えいは旧システム」と言いながら、データは2024年のもの

「顧客には影響なし」としながら、裏で限定的に通知

「SSOの侵害はない」と言いながら、SSOのトークンが販売されている

この一貫性のなさと情報開示の不誠実さは、Oracleという企業の本質=“隠ぺい体質”を浮き彫りにしている。

■ クラウド時代の“信頼”とは何か

クラウドインフラを提供する企業にとって、最大の資産は「ユーザーからの信頼」であるはずだ。

だが今回のOracleは、その信頼を自ら投げ捨てるような対応を続けている。

今後、企業がクラウドサービスを選定する際、「サービスの機能」ではなく「その企業の誠実さ」を見る時代が来るのかもしれない。


あなたの使っているクラウド、本当に大丈夫ですか?

「Oracle Cloud」は、今やその問いを投げかける象徴的存在となりつつあります。

出典:Oracle quietly admits data breach, days after lawsuit accused it of cover-up

【セキュリティ事件簿#2025-243】便利さの裏側に潜む、もうひとつの現実──Intune不具合が突きつけた課題

 

Microsoft Intuneを利用しているシステム管理者にとって、ここ数日ちょっとした緊張感が走ったかもしれません。

米Microsoftが、セキュリティベースラインのカスタマイズ設定が更新時に保存されないという不具合の存在を認めたのです。

問題の内容とは?

Intuneでは、セキュリティベースラインという形で推奨設定のテンプレートが提供されています。管理者はこれをもとに、自社に合わせた独自設定(カスタマイズ)を行うことが一般的です。

ところが今回、一部のバージョン(例:23H2→24H2など)に更新した際、これまでに行っていたカスタマイズが失われ、Microsoftの初期値に戻ってしまうという事象が確認されました。

Microsoftもこの問題を認識しており、現時点での対応策としては「設定を手動で再適用する」ことが推奨されています。

自動化や一元管理を目的にクラウドを導入している企業にとっては、手間もリスクも増える対応といえるでしょう。

Intuneとは?

あらためて整理すると、Microsoft Intuneはクラウドベースのエンドポイント管理ツールで、PCやスマートフォンなど多数のデバイスの設定・更新・セキュリティ管理を一括で行えるサービスです。

従来のWindows Server Update Services(WSUS)などのオンプレミス製品に代わる存在として多くの企業が採用しています。

一方で、Microsoft Configuration Manager(旧System Center Configuration Manager)と組み合わせて使われることもあり、こちらは引き続きオンプレ製品として提供されています。

「自社に最適化」が失われるリスク

今回の不具合は、特に独自のポリシー設定を重視している企業にとっては重大な問題です。

Microsoftが用意した「推奨値」をそのまま受け入れるのであれば影響は小さいものの、少しでも自社向けにカスタマイズしていると、更新によってその設定が上書き・消失するのは致命的です。

この事例は、「クラウド=万能ではない」ことを示す一例でもあります。

まとめ

クラウド管理は便利な反面、自動アップデートや仕様変更がユーザーの意図しない形で適用されるリスクも存在します。

Intuneを導入している企業は、設定のバックアップや、更新後の検証プロセスを見直す機会と捉えるべきかもしれません。

出典:Microsoft admits to Intune forgetfulness

【セキュリティ事件簿#2025-208】山形大学 附属中学校が保有する個人情報に外部者がアクセス可能な状況が生じた事案の発生について 2025/7/2

 

本学は、5月26日(月)夕方、本学附属中学校教員が業務でパソコンを使用する中で、画面にサポート詐欺に関する虚偽の警告掲示が出た際に、遠隔操作ソフトをインストールさせられ、当該パソコンが外部者に不正アクセスされる事案が生じたことを令和7年6月3日に公表いたしました。

https://www.yamagata-u.ac.jp/jp/information/info/20250603/ 

事案発生後、外部者によりアクセス可能な状況となった個人情報について、改ざんや流出の可能性について調査を進めてまいりましたが、このたび、調査結果がまとまりましたので、次のとおりご報告いたします。

調査の結果、個人情報の改ざんは全く確認されませんでした。また、個人情報の流出についても、その可能性を完全に否定することはできませんが、明確な痕跡が確認されなかったことから、流出の可能性は極めて低いと判断しております。また、現時点では、流出の事実も二次被害も確認されておりません。

このような事態が発生し、生徒、保護者の皆様をはじめ関係の皆様に多大なご迷惑及びご心配をおかけすることになりましたことを、あらためてお詫び申し上げます。本学は、この度の事態を厳粛に受け止め、令和7年8月を情報セキュリティ強化月間として設定し、ポスターによる啓発活動、外部公開システムに対する脆弱性診断、標的型メール攻撃訓練、全学を対象にした緊急一斉点検等の施策を集中的に実施することにより、再発の防止に努めてまいります。

なお、身に覚えのない電話、郵便物、メール等や個人情報漏洩と考えられる事象をみかけた場合やご不明な点があります際は、以下の窓口までご連絡いただきますようお願いいたします。

リリース文アーカイブ

【2025/6/3リリース分】

リリース文アーカイブ

【セキュリティ事件簿#2025-242】滋賀県 県立図書館ホームページ一時閉鎖について 2025/7/1

 

令和7年5月27日(火)、県立図書館のホームページに不正なアクセスによるとみられる書き込みが確認され、当該ホームページ(「こどもとしょかん」ポータルサイトを含む)を閉鎖して安全対策を講じていましたが、その作業が完了したことから7月2日(水)10時00分にホームページを再開します。

長期間にわたり、ご不便、ご心配をおかけしたことをお詫び申し上げます。

ホームページ閉鎖の経緯

〇令和7年5月27日(火)

  • 11時頃、利用者からの指摘により、ホームページの一部改ざんを確認し、当該部分を削除
  • 13時頃、ホームページを閉鎖

〇ホームページ閉鎖以降

  • ホームページからの蔵書検索や予約・貸出延長ができないことから電話により受付・対応
  • 図書館内での業務については通常通り実施
  • 改ざんに至った原因を把握しその対応策を検討するため、保守管理業者に調査を依頼

調査結果の概要

  • 不正な書き込みは、令和7年2月28日、令和7年4月3日、令和7年5月26日の3日に別表のとおり合計3件行われており、いずれも海外のサーバを経由して行われていることを確認した。

  • ホームページを管理するサーバのログの分析により、ホームページ管理ソフトにID・パスワードの総当たり攻撃を受けた痕跡があることを確認した。

  • ホームページ管理ソフトを含め、システムを構成するソフトの一部において、最新の更新プログラムが適用されていない状態であったことを確認した。

  • ホームページ管理ソフトの管理用アカウントのIDとパスワードが、第三者に知られたことでホームページに不正に書き込まれたと推測されるが、IDとパスワードが第三者に知られた手段については、特定に至っていない。

  • 不正アクセスを受けたサーバ内には個人情報を保有しておらず、個人情報の漏えいは確認されていない。

安全に再開するための対応

  • ホームページに係るサーバのデータを完全に消去したうえで、機器およびシステムを再構築した。
  • 従来のセキュリティ対策を総点検し、ホームページ管理ソフトへのアクセス制限を強化するなど図書館システムを安全に運用するために必要な対策を改めて講じた。
  • 今後は不正なアクセスの監視を強化するとともに、セキュリティ対策に不備がないか定期的な確認を徹底するなど安心してご利用いただけるホームページの維持に努める。

別表改ざん一覧

改ざん一覧
No.改ざん日対象のホームページコンテンツ内容
12025年2月28日過去の行事案内メールマガジンのページ (7か所) 誘導リンクの記載
22025年4月3日過去のお知らせ 子どもの本新刊紹介紙「ひともっ子」 第528号を刊行しました (1か所) 誘導リンクの記載
32025年5月26日お知らせ (10か所)誘導リンクの記載


リリース文アーカイブ

【セキュリティ事件簿#2025-241】新興プラスチックス株式会社 サイバー攻撃によるシステム障害について  2025/7/1

 

このたび、2025 年 6 月 18 日未明、弊社の一部情報システムが外部からの不正アクセスを受け、ランサムウェアによりデータが暗号化される被害が発生いたしました。

現在、弊社では社内に対策本部を設置し、外部の専門家の助言を受けながら、影響範囲の調査および復旧対応を進めております。併せて、警察をはじめとする関係機関にも相談のうえ、必要な助言と協力を得ております。

お客さま、お取引先さまをはじめ、関係各位には多大なるご心配とご迷惑をおかけしておりますことを、心より深くお詫び申し上げます。

なお、現時点において、情報の漏えいは確認されておりませんが、その可能性については引き続き慎重に調査を行っております。本件につきましては、個人情報保護委員会へ報告済みであり、今後は同委員会の指導に基づき、適切に対応してまいります。

今後も、外部専門家および警察との連携のもと、原因究明と影響の最小化、ならびにシステムの復旧と再発防止策の徹底に全力で取り組んでまいります。

※ 尚、弊社のお得意先様、仕入先様等との日常の受発注などのやり取りには影響のない様、取り組んでまいります。

今後ともどうぞ宜しくお願い申し上げます。 

リリース文アーカイブ

【セキュリティ事件簿#2025-240】学悠出版株式会社 不正アクセスによる情報流出の可能性に関するお詫びとお知らせ 2025/6/30


このたび、学悠出版株式会社(以下、当社)が運用するウェブサイトのサーバーに対し外部から不正アクセスが行われ、同サーバーに保管されている情報の一部が流出した可能性があることが判明いたしました。関係する皆様に多大なるご心配とご迷惑をおかけしておりますことを深くお詫び申し上げます。

当社では、不正アクセスを確認した4月下旬以降、社外のセキュリティ専門企業の支援を受けながら、流出した可能性のある情報の範囲を把握するための調査を進めてまいりました。現時点での調査結果につきまして、下記のとおりご報告いたします。


1.不正アクセスの内容

手段:   SQLインジェクションによるサーバーへの不正アクセス
認知時期: 2025年4月下旬

 

2.流出の可能性が認められた個人情報

区分個人情報の項目(重複を含む)件数(重複を含む)
塾様に関する個人情報塾名、塾コード、塾ID、郵便番号、住所、電話番号、メールアドレス及びご担当者氏名(メールアドレスとしての記載も含む)約8千件
模試受験者様に関する個人情報ご本人氏名、性別、塾コード、生徒コード及び生徒ID
※ご本人氏名については、暗号化の措置を講じています。
約28万2千件
ご本人氏名、性別、住所、電話番号、保護者様氏名及びメールアドレス
※すべての項目につき、暗号化の措置を講じています。
約1万6千件
塾コード、生徒コード、生徒ID及び進学情報
※当社が別途保有するデータベースと照合しない限り、上記の情報から、特定の個人を識別することはできません。
約1万6千件


現時点では、これらの情報が不正に利用されたという報告は確認されておりませんが、今後、当社を装った不審なメール等には十分ご注意くださいますようお願い申し上げます。

 

3.再発防止のための措置と今後の対応

4月下旬に不正アクセスを確認した直後より、社外のセキュリティ専門企業と連携し、当社が運用するウェブサイトに対して不正アクセスを遮断するための必要な対策を講じております。

個人情報が流出した可能性があるお客様には、個別にお詫びとご報告のメールをお送りいたします。また、個人情報保護法に基づき、個人情報保護委員会にも本件内容を報告しております。


リリース文アーカイブ

【セキュリティ事件簿#2024-525】熊本県 くまもとグリーン農業ホームページへの不正アクセスによる個人情報流出の可能性について 2025/6/30

 

昨年11月に県が運営しているくまもとグリーン農業ホームページの一部が外部からの攻撃を受け、県が管理している生産宣言者及び応援宣言者の個人情報の一部(氏名、住所、電話番号)が漏えいした可能性があり、その漏えい件数は4,624件と報告しました。しかし、その後の詳細な調査の結果、漏えいした可能性のある件数が拡大することが判明しました。

くまもとグリーン農業に取り組まれている宣言者や応援いただいている皆様に多大なるご迷惑とご心配をおかけしますことを、改めて深くお詫び申し上げます。

漏えい件数拡大に関する内容は、以下のとおりとなります。

(1)漏えいした可能性のある件数及び情報
 漏えい件数漏えい情報内容
【前回報告】
 令和6年12月

4,624件

(うち、生産宣言者        17件
      応援宣言者     4,607件)

氏名、住所、電話番号
【今回報告】
 令和7年6月

29,451件

(うち、生産宣言者 21,523件
      応援宣言者     7,928件)

氏名、住所、電話番号、宣言番号、団体・法人名、地域名、業種、品目、取組・応援内容

※漏えい件数について、前回は非公開情報のみを漏えい対象としましたが、今回は公開情報も含めて漏えい対象としました。

 

(2)サイバー攻撃の内容
 サイバー攻撃の内容
【前回報告】
 令和6年12月
攻撃の目的はサーバーダウンさせることであり、攻撃側の画面に個人情報が表示された可能性はあるが、情報はダウンロードされていない。
【今回報告】
 令和7年6月
サイバー攻撃を受けたページを通じて、データベースにアクセスされ、大量のデータを窃取された。そのため、データベースに登録のあったほぼすべての情報がダウンロードされた可能性が高い。


また、再発防止対策として、昨年中に以下の対策を実施済みですので、新たな漏えいは発生おりません。

 ・昨年11月29日に攻撃を受けた当該ページを閉鎖。

 ・同12月3日にデータベースから非公表情報を削除するとともに、新たに宣言される方の非公表情報もデータベースに登録されないよう、プログラムを修正。

なお、漏えいの可能性のある宣言者の方には、当ページと同様の文書を郵送させていただきます。

リリース文アーカイブ

【2024/12/25リリース分】

リリース文アーカイブ

【2024年11月30日リリース分】

リリース文アーカイブ

【セキュリティ事件簿#2025-109】南日本酪農協同株式会社 サイバー攻撃による個人情報流出について 2025/7/1

 

平素より弊社製品をご愛顧いただき、誠にありがとうございます。

このたび発生したしました不正アクセス事案に関するセキュリティ専門会社の調査が完了いたしましたので、ご報告申し上げます。

1.流出した可能性のある個人情報

・弊社が2024年度に企画実施しました「デーリィちゃん募集」、「デーリィちゃんWEB投票・プレゼント企画」へ応募された方の情報。

2.調査の概要

・被害を受けたサーバー上のデジタルデータを専門機関が収集・解析し、侵害および情報漏えいの痕跡を明らかにするためにフォレンジック調査(※)を実施しました。

※フォレンジックとは「法的に有効な」という意味を持ち、IT分野では主にコンピュータ犯罪 におけるデジタルデバイスに記録された情報の回収と分析調査を行うことを指します。

3.不正アクセスの痕跡

  • 2025年3月12日、海外のIPアドレスから不正なアクセスが行われ、攻撃ツールがサイト内に設置され最初の攻撃が確認されました。
  • 2025年3月17日、攻撃者によるメール送信コマンドおよびトップページ以下の改ざんが実行 され、複数回の不正アクセスが確認されました。

4.情報漏えいの可能性

  • 攻撃ツールによる複数回の不正アクセスにより、一定量のデータが外部に送信された痕跡が確認されました。
  • 外部に送信されたデータ量から推測すると、個人情報が持ち出された可能性が高く、一部の写真データが流出した可能性も否定できません。しかし、写真データは個人情報とは異なるフォルダで管理されていた事、また、写真データの総容量は流出データの総容量と比較してかなり大きいため、写真データについては持ち出されていない可能性が高いと判断します。ただし、調査では具体的なファイル名や流出した項目を特定することには至りませんでした。

5.原因の考察

  • サーバー上に脆弱性のある旧プログラムが残存していたため、悪意ある攻撃ツールによる侵入が発生しました。

6.対応と対策

  • ホームページから脆弱性のあった旧プログラムは排除し、新たなサーバーで運用しております。
  • 再発防止策として、サーバーのセキュリティを更に強化し、システムおよびホームページ管理ツールのバージョン管理を徹底し、定期的なセキュリティ診断を実施します。
  • お客様の個人情報は、これまで以上に細心の注意で取扱い、再発防止に努めます。

リリース文アーカイブ

【2025/6/2リリース分】

リリース文アーカイブ

【2025/3/17リリース分】

リリース文アーカイブ

【セキュリティ事件簿#2025-237】盛岡ガス燃料株式会社 個人情報の紛失についてお詫びとお知らせ 2025/5/2

 

平素は弊社をご愛顧賜り、厚く御礼申し上げます。

 さて、令和 7 年 4 月 28 日、弊社社員が北上市内において社用車内に置いていた鞄の盗難にあう事態が発生しました。

車内にあった鞄の中には、弊社北上営業所の 2020 年 4 月と 2021 年 4 月時点のお客さま個人情報約 2,200 件のデータが記録された USB メモリーが入っており、当日警察署に盗難届を出しましたが現在も発見されておりません。

 紛失したデータにはお客さまの名前、住所、電話番号が含まれており多くの方に多大なるご迷惑、ご心配をおかけしておりますことを、深くお詫び申し上げます。(金融機関口座情報やクレジットカード情報は含まれておりません。)また、現時点でお客さま情報が不正利用された事実も確認されておりません。

 弊社は今回の事態を重く受け止め、今後は個人情報保護対策の強化徹底により、再発防止策を徹底する所存でございます。

 何とぞ、ご理解を賜りますよう、よろしくお願い申し上げます。

 お気づきの点やお問い合わせは下記までご連絡いただけますようお願いいたします

リリース文アーカイブ

【セキュリティ事件簿#2025-236】株式会社 はるやまホールディングス 当社グループにおける不正アクセスによるシステム障害に関するお知らせ 2025/6/30

 

当社グループで利用しているサーバーに外部からの不正アクセスを受け、コンピューターウイルス感染被害を受けました。被害の全容を把握するには、今しばらく時間を要する見込みであり現時点で判明している内容について、下記の通りご報告いたします。

お客様をはじめ、関係先の皆様に多大なるご心配とご迷惑をおかけすることになり、深くお詫び申し上げます。なお、店舗は通常通り営業しております。(ポイントなど一部サービスを除く)

1.経緯

2025 年6月26 日(木)当社サーバーに対する不正アクセスを検知し、直ちにサーバーからネットワークを切り離すなど必要な対策を実施しました。発生したシステム障害の調査・分析を行ったところ、当社グループの複数サーバーが暗号化されるランサムウェア被害が発生していることを確認いたしました。同日に対策本部を設置し、情報を共有すると共に、復旧に向けての対応を進めております。

2. 被害を受けた情報

サーバーに保存していた各種業務データ、業務用ソフトウエアが暗号化されアクセス不能な状況となっております。なお、情報流出につきましては現在調査中です。

これにより当社グループ店舗におけるポイントサービスやオンラインショップ、スマートフォンアプリケーションなどが利用できない状態となっております。

3. 今後の対応

外部専門家等と連携のうえ、早期復旧に向け作業を進めると共に、通常の業務遂行が可能となるよう対応を進めております。また、警察などの関係機関へ相談し助言を受けております。引き続き原因追求並びに、システム保護及び復旧に向けて全力で取り組むと共に、皆様へのご迷惑を最小限に止めるべく取組んでまいります。

【セキュリティ事件簿#2025-235】摂南大学 卒業・修了生(2017~2022年度)の個人情報流出について 2025/6/6

 

このたび、本学就職部職員1名が、Microsoft Teamsのチャットにて本学卒業生の個人情報を含んだファイルを誤って送信する事案が判明いたしました。

本学としては、被害に遭われた方の把握と事態の掌握に向けて迅速に対応しているところです。

現在のところ、本件に関する個人情報が不正に使用された事実は確認されておりませんが、引き続き不測の事態に備え、適切な対応を継続してまいります。

今後同様の事態が発生しないよう、教職員を対象とした個人情報保護および情報セキュリティに関する学内研修の強化を図るなど、再発防止に向けた取り組みを徹底してまいります。

1.経緯等

2023年7月に就職部で過去6年分の「先輩就職先情報リスト」を作成しました。リスト作成にあたり卒業・修了生(2017~2022年度)の個人情報を含むデータを用いましたが、個人情報を含むシートを削除しない状態のデータを誤って複数の学生に対して2023年8月~2025年5月の期間に提供してしまい、提供を受けた学生の相談を受け2025年5月30日に個人情報流出が発覚しました。

2.誤送信したファイルに含まれていた情報および送信先

①個人情報の項目

学籍番号、氏名、フリガナ、学部学科名、性別、生年月日、現住所、電話番号、携帯番号、メールアドレス、進路決定先、職種

②個人情報の流出数

 9,213人(2017~2022年度卒業・修了生)

③送信先

摂南大学の学生(既に卒業した学生含む)122人

3.該当する関係者への対応

  • 流出発覚後の5月31日に個人情報を含むシートを全て削除し、既に閲覧できない状況になっております。なお、この情報流出による被害の報告は現在のところありません(2025年6月5日現在)。
  • 個人情報が流出した 9,213人の卒業・修了生に対して、順次お詫びの文書を郵送予定です。
  • 送信先の在学生に対して、順次個別に状況を説明のうえ謝罪を行います。
  • 送信先の既卒生に対して、順次お詫びの文書を郵送予定です。
  • 個人情報保護委員会(内閣府委員会)へ報告(2025年6月4日報告済)

4.再発防止への取り組み

  • 教職員全員に改めて個人情報の管理の徹底について注意喚起を行います。
  • メール・チャット送信時に添付ファイルも含めて、適切な内容であるかの確認徹底とチェック体制の改善を図ります。
  • 今後も研修等を通じて、全教職員に対して適切な事務処理と個人情報の取扱いについて法令を遵守するよう周知徹底いたします。

【TryHackMeウォークスルー】Windows PowerShell

 

Introduction

ようこそ!

このページにたどり着いたということは、PowerShell の魅力を耳にして、もっと深く知りたいと思っているか、あるいは「コマンドラインモジュール」の第一章(Windowsコマンドライン)から航海してきたのかもしれません。

いずれにせよ、これからWindowsシステムの秘密を解き明かす旅が始まります。さあ、出航の時です!

学習目標

このルームは「コマンドラインモジュール」の第2章にあたります。PowerShell についての入門的な内容を扱っており、Windows向けに開発された2番目のコマンドラインツールです。

  • PowerShellとは何か、その機能を学ぶ
  • PowerShellの基本的な構文や構造を理解する
  • 基本的なPowerShellコマンドを実行してみる
  • PowerShellがサイバーセキュリティ分野でどのように活用されているかを知る

What Is PowerShell

PowerShellは、Microsoftが提供するタスク自動化と構成管理のためのツールです。コマンドラインシェル、スクリプト言語、構成管理フレームワークの3つの要素で構成されており、.NETフレームワークの上に作られています。

従来のコマンドラインツールとは異なり、PowerShellは「オブジェクト指向」で動作します。これにより、複雑なデータの操作やシステムとの連携がしやすくなっています。もともとはWindows専用でしたが、現在ではmacOSやLinuxにも対応しており、さまざまな環境で利用できます。

PowerShellの歴史

PowerShellは、従来のコマンド(cmd.exeやバッチファイル)では対応しきれなかった複雑な管理作業を効率化するために、2000年代初頭に開発されました。

開発の中心となったのは、MicrosoftのエンジニアであるJeffrey Snoverです。彼は、Windowsでは構造化データとAPIが中心である一方、Unixではテキストが中心であるという違いに注目しました。そして、.NETの機能を活かしつつ、スクリプトでも扱いやすい「オブジェクト指向のシェル」を作るという発想から、PowerShellが生まれました。

2006年に最初のバージョンがリリースされ、その後、IT環境の多様化に対応する形で、2016年にはWindows以外のOSでも動作する「PowerShell Core(オープンソース)」が登場しました。

PowerShellの特徴

PowerShellの特徴のひとつは「オブジェクトを扱えること」です。

たとえば、車を例にすると「色」「モデル」「燃料の量」などの情報がプロパティ(属性)で、「走る」「クラクションを鳴らす」「給油する」といった操作がメソッド(動作)になります。PowerShellでも同様に、ファイル名やサイズ、ユーザー情報などをプロパティとして持ち、コピーや削除といった操作をメソッドとして実行できます。

従来のコマンドラインではすべての出力が文字列(テキスト)でしたが、PowerShellではコマンドを実行するとオブジェクトが返ってきます。そのため、余計な文字列の加工をせずに、効率的に情報を操作できます。

今後のセクションでは、PowerShellで使えるコマンド(cmdlet)について、より詳しく見ていきます。

What do we call the advanced approach used to develop PowerShell?

object-oriented

PowerShell Basics

PowerShellの学習を進める前に、ラボ環境に接続しましょう。

PowerShellの起動方法

PowerShellは、利用する環境や目的に応じて、いくつかの方法で起動できます。Windowsのグラフィカルユーザーインターフェース(GUI)から操作する場合、主な起動方法は以下の通りです。

・スタートメニューから

スタートメニューの検索バーに「powershell」と入力し、表示された「Windows PowerShell」または「PowerShell」をクリックします。

・「ファイル名を指定して実行」から

Windowsキー + R を押して「ファイル名を指定して実行」ダイアログを開き、「powershell」と入力して Enter キーを押します。

・エクスプローラーから

任意のフォルダーを開き、アドレスバーに「powershell」と入力して Enter キーを押すと、そのフォルダーをカレントディレクトリとしてPowerShellが起動します。

・タスクマネージャーから

タスクマネージャーを開き、「ファイル」→「新しいタスクの実行」を選択し、「powershell」と入力して Enter キーを押します。

また、コマンドプロンプト(cmd.exe)を使っている場合は、「powershell」と入力して Enter キーを押すことでPowerShellを起動できます。

Terminal
captain@THEBLACKPEARL C:\Users\captain>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\captain> 

PowerShellが起動すると、現在の作業ディレクトリを示す「PS」プロンプトが表示されます(「PS」はPowerShellの略です)。

基本構文:動詞-名詞の形式

先述のとおり、PowerShellのコマンドは「コマンドレット(cmdlet)」と呼ばれます。従来のWindowsコマンドに比べて、cmdletはより強力で、複雑なデータの操作も可能です。

PowerShellのcmdletは、基本的に「動詞-名詞(Verb-Noun)」の形式で命名されています。この命名規則により、それぞれのコマンドが何をするのかが直感的に理解しやすくなっています。

・動詞(Verb):どのような動作を行うか

・名詞(Noun):その動作の対象となるもの

例:

Get-Content

→ ファイルの内容を取得し、コンソールに表示します。

Set-Location

→ 作業ディレクトリ(カレントディレクトリ)を変更します。

このように、PowerShellのコマンドは一貫した構文を持っており、学習しやすくなっています。

基本的なコマンドレット(cmdlet)

現在のPowerShellセッションで使用できるコマンドレット、関数、エイリアス、スクリプトを一覧表示するには、次のコマンドを実行します。

 Get-Command

このコマンドは、どのような操作が可能かを確認するための基本的な手段であり、PowerShellを使い始める際に非常に役立ちます。

Terminal
PS C:\Users\captain> Get-Command

CommandType     Name                                               Version    Source 
-----------     ----                                               -------    ------ 

Alias           Add-AppPackage                                     2.0.1.0    Appx                                                                                                                                       
Alias           Add-AppPackageVolume                               2.0.1.0    Appx                                                                                                                                       
Alias           Add-AppProvisionedPackage                          3.0        Dism                                                                                                                                       
[...]
Function        A:
Function        Add-BCDataCacheExtension                           1.0.0.0    BranchCache                                                                                                                                
Function        Add-DnsClientDohServerAddress                      1.0.0.0    DnsClient
[...]
Cmdlet          Add-AppxPackage                                    2.0.1.0    Appx
Cmdlet          Add-AppxProvisionedPackage                         3.0        Dism                                                                                                                                       
Cmdlet          Add-AppxVolume                                     2.0.1.0    Appx
[...]

このコマンドレットによって取得される各コマンド情報(CommandInfoオブジェクト)には、いくつかの基本的な情報(プロパティ)がコンソールに表示されます。

表示されたプロパティの値を使って、コマンドの一覧を絞り込むことも可能です。たとえば、「関数(function)」タイプのコマンドだけを表示したい場合は、以下のように入力します。

 Get-Command -CommandType “Function”

このように条件を指定することで、必要なコマンドだけを効率よく確認できます。

Terminal
PS C:\Users\captain> Get-Command -CommandType "Function"

CommandType     Name                                               Version    Source                                                                                                                                     
-----------     ----                                               -------    ------
Function        A:
Function        Add-BCDataCacheExtension                           1.0.0.0    BranchCache
Function        Add-DnsClientDohServerAddress                      1.0.0.0    DnsClient
Function        Add-DnsClientNrptRule                              1.0.0.0    DnsClient
[...]

今後の課題では、cmdletの出力をより効率的にフィルタする方法について学んでいきます。

もう一つ、ぜひ覚えておきたい重要なコマンドレットが「Get-Help」です。

このコマンドは、各cmdletの使い方やパラメータ、実行例などの詳しい情報を表示してくれるもので、PowerShellの使い方を学ぶうえで欠かせない存在です。

PowerShellコマンドの使い方に迷ったときは、まずこのGet-Helpを使うのが基本です。

Terminal
PS C:\Users\captain> Get-Help Get-Date

NAME
    Get-Date

SYNOPSIS
    Gets the current date and time.

SYNTAX
    Get-Date [[-Date] <System.DateTime>] [-Day <System.Int32>] [-DisplayHint {Date | Time | DateTime}] [-Format <System.String>] [-Hour <System.Int32>] [-Millisecond <System.Int32>] [-Minute <System.Int32>] [-Month <System.Int32>] [-Second <System.Int32>] [-Year <System.Int32>] [<CommonParameters>]

    Get-Date [[-Date] <System.DateTime>] [-Day <System.Int32>] [-DisplayHint {Date | Time | DateTime}] [-Hour <System.Int32>] [-Millisecond <System.Int32>] [-Minute <System.Int32>] [-Month <System.Int32>] [-Second <System.Int32>] [-UFormat <System.String>] [-Year <System.Int32>] [<CommonParameters>]

DESCRIPTION
        The `Get-Date` cmdlet gets a DateTime object that represents the current date or a date that you specify. `Get-Date` can format the date and time in several .NET and UNIX formats. You can use `Get-Date` to generate a date or time character string, and then send the string to other cmdlets or programs.
        
        `Get-Date` uses the current culture settings of the operating system to determine how the output is formatted. To view your computer's settings, use `(Get-Culture).DateTimeFormat`.

RELATED LINKS
    Online Version: https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/get-date?view=powershell-5.1&WT.mc_id=ps-gethelp
    ForEach-Object
    Get-Culture
    Get-Member
    New-Item
    New-TimeSpan
    Set-Date
    Set-Culture xref:International.Set-Culture

REMARKS
    To see the examples, type: "get-help Get-Date -examples".
    For more information, type: "get-help Get-Date -detailed".
    For technical information, type: "get-help Get-Date -full".
    For online help, type: "get-help Get-Date -online".

前述の結果にあるように、Get-Help コマンドは、基本構文にオプションを追加することで、さらに有用な情報を得られることを教えてくれます。たとえば、「-examples」というオプションを付けることで、そのcmdletがどのように使われるかの具体的な例を確認できます。

PowerShellは、既存のWindowsユーザーやITエンジニアが移行しやすいように、「エイリアス(alias)」と呼ばれる別名(ショートカット)を多数用意しています。これは、従来のコマンドラインに慣れているユーザーにとって非常に便利な機能です。

エイリアスの一覧を確認するには、次のコマンドを使います。

 Get-Alias

たとえば、「dir」は「Get-ChildItem」のエイリアスであり、「cd」は「Set-Location」のエイリアスです。つまり、昔ながらのコマンドに近い書き方でもPowerShellを扱えるようになっています。

Terminal
PS C:\Users\captain> Get-Alias

CommandType     Name                                               Version    Source 
-----------     ----                                               -------    ------
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
Alias           cat -> Get-Content
Alias           cd -> Set-Location
Alias           CFS -> ConvertFrom-String                          3.1.0.0    Microsoft.PowerShell.Utility
Alias           chdir -> Set-Location 
Alias           clc -> Clear-Content
Alias           clear -> Clear-Host
[...]

コマンドレットの入手方法とダウンロードについて

PowerShellの特徴のひとつに、オンラインリポジトリから追加のコマンドレットをダウンロードして、機能を拡張できる点があります。

※注意:このセクションで紹介するコマンドレットを使うには、インターネット接続が必要です。

PowerShell Galleryのようなオンラインリポジトリでモジュール(複数のコマンドレットを含むパッケージ)を検索するには、次のコマンドを使います。

 Find-Module

モジュール名がはっきり分からない場合は、部分的な名前でも検索できます。「Name」プロパティを指定し、モジュール名の一部のあとにワイルドカード(*)を付けて検索することで、似た名前のモジュールを探せます。

標準的なPowerShellの書き方は次のとおりです。

 コマンドレット名 -プロパティ名 "部分名*"

モジュール名をうろ覚えのときなどに便利な方法です。

Terminal
PS C:\Users\captain> Find-Module -Name "PowerShell*"   

Version    Name                                Repository           Description 
-------    ----                                ----------           ----------- 
0.4.7      powershell-yaml                     PSGallery            Powershell module for serializing and deserializing YAML

2.2.5      PowerShellGet                       PSGallery            PowerShell module with commands for discovering, installing, updating and publishing the PowerShell artifacts like Modules, DSC Resources, Role Capabilities and Scripts.                                                   
1.0.80.0   PowerShell.Module.InvokeWinGet      PSGallery            Module to Invoke WinGet and parse the output in PSOjects

0.17.0     PowerShellForGitHub                 PSGallery            PowerShell wrapper for GitHub API  

目的のモジュールが見つかったら、Install-Module コマンドを使ってリポジトリからダウンロードおよびインストールすることができます。これにより、そのモジュールに含まれる新しいコマンドレットが使用可能になります。

Terminal
PS C:\Users\captain> Install-Module -Name "PowerShellGet"

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): 

これらの基本的なツールを身につけたところで、いよいよPowerShellのさまざまな機能を探っていきましょう。

Answer the questions below

How would you retrieve a list of commands that start with the verb Remove? [for the sake of this question, avoid the use of quotes (" or ') in your answer]

Get-Command -Name Remove*

What cmdlet has its traditional counterpart echo as an alias?

Write-Output

What is the command to retrieve some example usage for the cmdlet New-LocalUser?

Get-Help New-LocalUser -examples

Navigating the File System and Working with Files

PowerShellには、ファイルシステムの移動やファイル操作に使えるコマンドレットが多数用意されています。これらの多くは、従来のWindowsコマンドライン(CLI)にあるコマンドと似た機能を持っています。

たとえば、コマンドプロンプトの「dir」や、Unix系システムの「ls」に相当するのが「Get-ChildItem」です。このコマンドレットは、-Path パラメータで指定した場所のファイルやフォルダーを一覧表示します。

ディレクトリの中身を確認したいときに使える便利なコマンドです。Pathを省略した場合は、現在の作業ディレクトリの内容が表示されます。

Terminal
PS C:\Users\captain> Get-ChildItem 

    Directory: C:\Users\captain

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-r---          5/8/2021   9:15 AM                Desktop
d-r---          9/4/2024  10:58 AM                Documents
d-r---          5/8/2021   9:15 AM                Downloads
d-r---          5/8/2021   9:15 AM                Favorites
d-r---          5/8/2021   9:15 AM                Links
d-r---          5/8/2021   9:15 AM                Music
d-r---          5/8/2021   9:15 AM                Pictures
d-----          5/8/2021   9:15 AM                Saved Games
d-r---          5/8/2021   9:15 AM                Videos

別のディレクトリへ移動したい場合は、「Set-Location」コマンドレットを使用します。これは現在の作業ディレクトリを変更し、指定したパスに移動するためのコマンドです。コマンドプロンプトで使う「cd」と同じような働きをします。

Terminal
PS C:\Users\captain> Set-Location -Path ".\Documents"
PS C:\Users\captain\Documents> 

従来のWindowsコマンドラインでは、ディレクトリやファイルなどの項目ごとに別々のコマンドを使って作成・管理していましたが、PowerShellではそれらをひとつのコマンドレットでシンプルに扱えるようになっています。

新しい項目を作成するには、「New-Item」コマンドレットを使用します。作成する項目のパスと、ファイルかディレクトリかといった種類を指定する必要があります。

Terminal
PS C:\Users\captain\Documents> New-Item -Path ".\captain-cabin\captain-wardrobe" -ItemType "Directory"

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          9/4/2024  12:20 PM                captain-wardrobe

PS C:\Users\captain\Documents> New-Item -Path ".\captain-cabin\captain-wardrobe\captain-boots.txt" -ItemType "File"     

    Directory: C:\Users\captain\Documents\captain-cabin\captain-wardrobe

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/4/2024  11:46 AM              0 captain-boots.txt  

同様に、「Remove-Item」コマンドレットを使えば、ディレクトリとファイルの両方を削除できます。従来のWindowsコマンドラインでは、「rmdir」と「del」という別々のコマンドを使い分けていましたが、PowerShellではひとつのコマンドで対応できます。

Terminal
PS C:\Users\captain\Documents> Remove-Item -Path ".\captain-cabin\captain-wardrobe\captain-boots.txt"
PS C:\Users\captain\Documents> Remove-Item -Path ".\captain-cabin\captain-wardrobe" 

ファイルやディレクトリをコピーしたり移動したりするには、それぞれ「Copy-Item」(copyコマンドに相当)と「Move-Item」(moveコマンドに相当)を使います。どちらもファイルとディレクトリの両方に対応しています。

Terminal
PS C:\Users\captain\Documents> Copy-Item -Path .\captain-cabin\captain-hat.txt -Destination .\captain-cabin\captain-hat2.txt
PS C:\Users\captain\Documents> Get-ChildItem -Path ".\captain-cabin\" 

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name 
----                 -------------         ------ ----
d-----          9/4/2024  12:50 PM                captain-wardrobe
-a----          9/4/2024  12:50 PM              0 captain-boots.txt
-a----          9/4/2024  12:14 PM            264 captain-hat.txt
-a----          9/4/2024  12:14 PM            264 captain-hat2.txt
-a----          9/4/2024  12:37 PM           2116 ship-flag.txt 

最後に、ファイルの内容を読み取って表示するには、「Get-Content」コマンドレットを使います。これは、コマンドプロンプトの「type」コマンドや、Unix系システムの「cat」に相当する動作をします。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-Content -Path ".\captain-hat.txt"
 _           _   
| |         | |
| |__   __ _| |_
| '_ \ / _ | __|
| | | | (_| | |_
|_| |_|\__,_|\__|

Don't touch my hat!

Answer the questions below

What cmdlet can you use instead of the traditional Windows command type?

Get-Content

What PowerShell command would you use to display the content of the "C:\Users" directory? [for the sake of this question, avoid the use of quotes (" or ') in your answer]

Get-ChildItem -Path C:\Users

How many items are displayed by the command described in the previous question?

4

Piping, Filtering, and Sorting Data

パイプ(piping)は、コマンドライン環境でよく使われるテクニックのひとつで、あるコマンドの出力結果を、次のコマンドの入力として渡す方法です。これにより、複数の処理を連続して実行することができ、データが一連のコマンドの中を流れていくような仕組みになります。パイプは「|」という記号で表され、WindowsのコマンドラインやUnix系のシェルでも広く使われています。

PowerShellでは、このパイプ処理がさらに強力になっており、単なるテキストではなく「オブジェクト」を渡すことができます。オブジェクトは、データだけでなく、そのデータに関する属性(プロパティ)や操作(メソッド)も含んでいます。

たとえば、あるディレクトリ内のファイル一覧を取得して、それをサイズ順に並べ替えたい場合は、次のようなコマンドをPowerShellで実行します。

 Get-ChildItem | Sort-Object Length

このように、パイプを使うことで処理の流れを効率的に構築できます。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-ChildItem | Sort-Object Length

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/4/2024  12:50 PM              0 captain-boots.txt
-a----          9/4/2024  12:14 PM            264 captain-hat2.txt
-a----          9/4/2024  12:14 PM            264 captain-hat.txt
-a----          9/4/2024  12:37 PM           2116 ship-flag.txt
d-----          9/4/2024  12:50 PM                captain-wardrobe

この例では、Get-ChildItem がファイルをオブジェクトとして取得し、パイプ(|)を使ってそれらのオブジェクトを Sort-Object に渡します。Sort-Object は、そのオブジェクトの Length(サイズ)プロパティを基に並べ替えを行います。

このように、PowerShellではオブジェクトを扱うことで、より詳細で柔軟なコマンドの組み合わせが可能になります。

上記の例では、Sort-Object コマンドレットを使って、指定したプロパティを基準にオブジェクトを並べ替えました。PowerShell にはこれ以外にも、パイプと組み合わせて使える便利なコマンドレットが多数用意されており、高度なデータ操作や分析が可能です。

特定の条件に合致するオブジェクトだけを抽出(フィルタ)したい場合は、「Where-Object」コマンドレットを使います。

たとえば、あるディレクトリ内の .txt ファイルだけを一覧表示したい場合は、次のように入力します。

 Get-ChildItem | Where-Object {$_.Extension -eq ".txt"}

このように、条件を指定することで、目的のファイルやデータだけを効率よく抽出できます。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-ChildItem | Where-Object -Property "Extension" -eq ".txt" 

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/4/2024  12:50 PM              0 captain-boots.txt
-a----          9/4/2024  12:14 PM            264 captain-hat.txt
-a----          9/4/2024  12:14 PM            264 captain-hat2.txt
-a----          9/4/2024  12:37 PM           2116 ship-flag.txt

上記の例では、Where-Object コマンドレットがファイルの Extension プロパティ(拡張子)を基にフィルタを行い、拡張子が ".txt" のファイルだけを表示しています。

ここで使われている「-eq」演算子は、「等しい(equal)」という意味で、Bash や Python など他のスクリプト言語にも共通する比較演算子のひとつです。

PowerShellのフィルタ機能の幅広さを示すために、よく使われる比較演算子をいくつか紹介します。

 -ne:等しくない(not equal)
  指定した条件に合わないオブジェクトを除外するときに使います。

 -gt:より大きい(greater than)
  指定された値より大きいオブジェクトだけを抽出します。等しいものは含まれません(厳密な比較)。

 -ge:以上(greater than or equal to)
  -gt と -eq の組み合わせで、指定値以上のオブジェクトを抽出します(非厳密)。

 -lt:より小さい(less than)
  指定された値より小さいオブジェクトだけを抽出します。等しいものは含まれません。

 -le:以下(less than or equal to)
  -lt と -eq の組み合わせで、指定値以下のオブジェクトを抽出します。

さらに、特定のパターンに一致するプロパティを基にフィルタすることもできます。その際は「-like」演算子を使います。以下にその例を示します。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-ChildItem | Where-Object -Property "Name" -like "ship*"  

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/4/2024  12:37 PM           2116 ship-flag.txt

次に紹介するフィルタ用のコマンドレット「Select-Object」は、オブジェクトから特定のプロパティだけを抜き出したり、出力されるオブジェクトの数を制限したりするために使います。

必要な情報だけを表示したいときに、出力内容を絞り込むのに便利なコマンドレットです。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-ChildItem | Select-Object Name,Length 

Name              Length
----              ------
captain-wardrobe
captain-boots.txt 0
captain-hat.txt   264
captain-hat2.txt  264
ship-flag.txt     2116

PowerShellのパイプラインは、2つのコマンドレットだけでなく、さらに多くのコマンドをつなげて拡張することができます。

練習として、次のような課題にチャレンジしてみましょう。

C:\Users\captain\Documents\captain-cabin フォルダー内で、最もサイズの大きいファイルを表示するようなコマンドレットのパイプラインを作ってみてください。

この課題では、並べ替えやフィルタを活用して、出力結果を目的の情報に絞り込む練習になります。

課題の答え
Get-ChildItem | Sort-Object Length -Descending | Select-Object -First 1

    Directory: C:\Users\captain\Documents\captain-cabin

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/4/2024  12:37 PM           2116 ship-flag.txt

今回紹介するフィルタ系コマンドレットの最後は「Select-String」です。

このコマンドレットは、ファイル内のテキストパターンを検索するために使われます。Unix系システムの「grep」や、Windowsのコマンドプロンプトにある「findstr」と同じような働きをします。

ログファイルやドキュメントの中から特定の内容を探したいときによく使われる便利なコマンドレットです。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Select-String -Path ".\captain-hat.txt" -Pattern "hat" 

captain-hat.txt:8:Don't touch my hat!

Select-String コマンドレットは、正規表現(regex)に完全対応しています。

この高度な機能を使うことで、より複雑なパターンでの検索が可能になり、ファイル内のテキストデータを柔軟かつ強力に調査・分析することができます。

Answer the questions below

How would you retrieve the items in the current directory with size greater than 100? [for the sake of this question, avoid the use of quotes (" or ') in your answer]

Get-ChildItem | Where-Object -Property Length -gt 100

System and Network Information

PowerShellは、システム管理者やIT技術者のために、より強力な自動化および管理ツールが必要とされていたことを背景に開発されました。

そのため、システムの構成やネットワーク設定などに関する詳細な情報を取得できるコマンドレットが数多く用意されています。

その中のひとつ「Get-ComputerInfo」は、オペレーティングシステムの情報、ハードウェアの仕様、BIOSの詳細など、システム全体の構成情報を一括で取得できるコマンドレットです。

従来の「systeminfo」コマンドも似た機能を持ちますが、取得できる情報は限定的であり、「Get-ComputerInfo」の方がはるかに多くの詳細を提供します。

Terminal
PS C:\Users\captain> Get-ComputerInfo

WindowsBuildLabEx                                       : 20348.859.amd64fre.fe_release_svc_prod2.220707-1832
WindowsCurrentVersion                                   : 6.3
WindowsEditionId                                        : ServerDatacenter
WindowsInstallationType                                 : Server Core
WindowsInstallDateFromRegistry                          : 4/23/2024 6:36:29 PM
WindowsProductId                                        : 00454-60000-00001-AA763
WindowsProductName                                      : Windows Server 2022 Datacenter
[...]

ローカルユーザーアカウントの管理や、システムのセキュリティ設定を把握するうえで重要なのが「Get-LocalUser」コマンドレットです。

このコマンドを使うと、システム上に存在するすべてのローカルユーザーアカウントを一覧表示できます。

標準の出力では、各ユーザーについて「ユーザー名」「アカウントの状態」「説明」などの情報が表示されます。

Terminal
PS C:\Users\captain> Get-LocalUser

Name               Enabled Description 
----               ------- -----------
Administrator      True    Built-in account for administering the computer/domain
captain            True    The beloved captain of this pirate ship.
DefaultAccount     False   A user account managed by the system.
Guest              False   Built-in account for guest access to the computer/domain
WDAGUtilityAccount False   A user account managed and used by the system for Windows Defender Application Guard scenarios.

従来の「ipconfig」コマンドと同様に、システムのネットワーク構成に関する詳細な情報を取得するためのコマンドレットがいくつか用意されています。

そのひとつが「Get-NetIPConfiguration」です。このコマンドレットを使うと、IPアドレス、DNSサーバー、デフォルトゲートウェイなど、ネットワークインターフェースに関する詳細な情報を確認することができます。

Terminal
PS C:\Users\captain> Get-NetIPConfiguration

InterfaceAlias       : Ethernet
InterfaceIndex       : 5
InterfaceDescription : Amazon Elastic Network Adapter
NetProfile.Name      : Network 3
IPv4Address          : 10.10.178.209
IPv6DefaultGateway   :
IPv4DefaultGateway   : 10.10.0.1
DNSServer            : 10.0.0.2

ネットワークインターフェースに割り当てられているIPアドレスの詳細を確認したい場合は、「Get-NetIPAddress」コマンドレットを使用します。

このコマンドレットを実行すると、現在アクティブでないものも含めて、システムに設定されているすべてのIPアドレスの情報が表示されます。

Terminal
PS C:\Users\captain> Get-NetIPAddress

IPAddress         : fe80::3fef:360c:304:64e%5
InterfaceIndex    : 5
InterfaceAlias    : Ethernet
AddressFamily     : IPv6
Type              : Unicast
PrefixLength      : 64
PrefixOrigin      : WellKnown
SuffixOrigin      : Link
AddressState      : Preferred
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : ::1
InterfaceIndex    : 1
InterfaceAlias    : Loopback Pseudo-Interface 1
AddressFamily     : IPv6
[...]

IPAddress         : 10.10.178.209
InterfaceIndex    : 5
InterfaceAlias    : Ethernet
AddressFamily     : IPv4
[...]

IPAddress         : 127.0.0.1
InterfaceIndex    : 1
InterfaceAlias    : Loopback Pseudo-Interface 1
AddressFamily     : IPv4
[...]

これらのコマンドレットを使うことで、IT担当者は重要なシステム情報やネットワーク情報をコマンドラインから素早く取得できます。

その結果、ローカルマシンだけでなく、リモートマシンの監視や管理もより効率的に行えるようになります。

Answer the questions below

Other than your current user and the default "Administrator" account, what other user is enabled on the target machine?

p1r4t3

This lad has hidden his account among the others with no regard for our beloved captain! What is the motto he has so bluntly put as his account's description?

A merry life and a short one.

Now a small challenge to put it all together. This shady lad that we just found hidden among the local users has his own home folder in the "C:\Users" directory. 

Can you navigate the filesystem and find the hidden treasure inside this pirate's home?

THM{p34rlInAsh3ll}

Real-Time System Analysis

より高度なシステム情報、特に実行中のプロセスやサービス、アクティブなネットワーク接続といった動的な情報を取得するには、静的なマシン情報とは異なる一連のコマンドレットを活用することができます。

そのひとつ「Get-Process」は、現在実行中のすべてのプロセスを詳細に表示し、CPU使用率やメモリ使用量なども確認できます。システムの監視やトラブルシューティングに非常に便利なコマンドレットです。

Terminal
PS C:\Users\captain> Get-Process

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName 
-------  ------    -----      -----     ------     --  -- -----------
     67       5      872        500       0.06   2340   0 AggregatorHost
     55       5      712       2672       0.02   3024   0 AM_Delta_Patch_1.417.483.0
    309      13    18312       1256       0.52   1524   0 amazon-ssm-agent
     78       6     4440        944       0.02    516   0 cmd
     94       7     1224       1744       0.31    568   0 conhost
[...]

同様に「Get-Service」コマンドレットを使うと、システム上のサービスの状態に関する情報を取得できます。たとえば、どのサービスが実行中か、停止中か、一時停止中かといった情報が確認できます。

このコマンドは、システム管理者によるトラブルシューティングに広く使われているだけでなく、フォレンジックの現場でも、異常なサービスがインストールされていないかを調べる目的で活用されています。

Terminal
PS C:\Users\captain> Get-Service

Status   Name               DisplayName                           
------   ----               -----------
Stopped  Amazon EC2Launch   Amazon EC2Launch
Running  AmazonSSMAgent     Amazon SSM Agent
Stopped  AppIDSvc           Application Identity
Running  BFE                Base Filtering Engine
Running  CertPropSvc        Certificate Propagation
Stopped  ClipSVC            Client License Service (ClipSVC)
[...]

アクティブなネットワーク接続を監視するには、「Get-NetTCPConnection」コマンドレットを使います。

このコマンドレットは、現在のTCP接続を一覧表示し、ローカルおよびリモートの接続先情報を確認することができます。

インシデント対応やマルウェア解析の場面でも非常に役立つコマンドで、外部の攻撃者が管理するサーバーとの隠れた接続やバックドアの存在を発見する手がかりになります。

Terminal
PS C:\Users\captain> Get-NetTCPConnection

LocalAddress        LocalPort RemoteAddress       RemotePort State       AppliedSetting OwningProcess 
------------        --------- -------------       ---------- -----       -------------- -------------
[...]
::                  22        ::                  0          Listen                     1444          
10.10.178.209       49695     199.232.26.172      80         TimeWait                   0
0.0.0.0             49668     0.0.0.0             0          Listen                     424
0.0.0.0             49667     0.0.0.0             0          Listen                     652
0.0.0.0             49666     0.0.0.0             0          Listen                     388
0.0.0.0             49665     0.0.0.0             0          Listen                     560
0.0.0.0             49664     0.0.0.0             0          Listen                     672           
0.0.0.0             3389      0.0.0.0             0          Listen                     980
10.10.178.209       139       0.0.0.0             0          Listen                     4
0.0.0.0             135       0.0.0.0             0          Listen                     908
10.10.178.209       22        10.14.87.60         53523      Established Internet       1444
0.0.0.0             22        0.0.0.0             0          Listen                     1444

さらに、ファイルのハッシュ値を生成するための便利なコマンドレットとして「Get-FileHash」も紹介しておきます。

このコマンドは、ファイルの整合性を確認したり、改ざんの有無を調べたりするのに役立つため、インシデント対応や脅威ハンティング、マルウェア解析などの場面で特に有用です。

Terminal
PS C:\Users\captain\Documents\captain-cabin> Get-FileHash -Path .\ship-flag.txt    

Algorithm       Hash                      Path 
---------       ----                      ----
SHA256          54D2EC3C12BF3D[...]       C:\Users\captain\Documents\captain-cabin\ship-flag.txt

これらのコマンドレットを組み合わせて使うことで、リアルタイムなシステム監視や分析に必要なツール群が揃います。

特に、インシデント対応や脅威ハンティングを行う担当者にとって、非常に有用な手段となります。

Answer the questions below

In the previous task, you found a marvellous treasure carefully hidden in the target machine. What is the hash of the file that contains it?

71FC5EC11C2497A32F8F08E61399687D90ABE6E204D2964DF589543A613F3E08

【補足】

Get-FileHashの出力が途中で省略されてしまう場合、Format-List を使って出力を縦表示にするのが良い。

(例)Get-FileHash -Path .\big-treasure.txt | Format-List

What property retrieved by default by Get-NetTCPConnection contains information about the process that has started the connection?

OwningProcess

It's time for another small challenge. Some vital service has been installed on this pirate ship to guarantee that the captain can always navigate safely. But something isn't working as expected, and the captain wonders why. Investigating, they find out the truth, at last: the service has been tampered with! The shady lad from before has modified the service DisplayName to reflect his very own motto, the same that he put in his user description.

With this information and the PowerShell knowledge you have built so far, can you find the service name?

p1r4t3-s-compass

Scripting

スクリプティングとは、シェル(ここではPowerShell)の中で通常手動で行っていた操作を、自動化するためにテキストファイル(スクリプト)として一連のコマンドを書き、実行することを指します。

簡単に言えば、スクリプトはコンピューターに渡す「やることリスト」のようなもので、スクリプトの各行は実行するタスクを意味します。これにより、作業の手間が省けるだけでなく、ヒューマンエラーのリスクも減り、手作業では難しい処理も自動で実行できるようになります。

スクリプトやシェルの知識を深めるにつれて、スクリプトがシステム管理やデータ処理など、さまざまな場面で非常に強力なツールとなることがわかってきます。

このルームではPowerShellスクリプトの書き方までは扱いませんが、その強力さから、サイバーセキュリティ分野では非常に重要なスキルであることは理解しておくべきです。

【Blue Team(防御側)の活用例】

インシデントレスポンダー、マルウェア解析者、脅威ハンターなどのBlue Team担当者にとって、PowerShellスクリプトは以下のような作業を自動化する手段になります。

  • ログの分析
  • 異常検出
  • 攻撃の痕跡(IOC)の抽出
  • マルウェアのリバースエンジニアリング
  • システム全体のスキャン処理など

【Red Team(攻撃側)の活用例】

ペネトレーションテスターや倫理的ハッカーなどのRed Teamにとっても、PowerShellは有効です。

  • システム情報の列挙(エニュメレーション)
  • リモートコマンドの実行
  • 防御回避のための難読化スクリプトの作成
  • システムの耐性テストや模擬攻撃

【システム管理者の活用例】

システム管理者にとっても、PowerShellスクリプトは以下のような場面で役立ちます。特にリモート環境や大規模ネットワークでその力を発揮します。

  • システム整合性のチェック自動化
  • 構成管理やネットワークの保護
  • セキュリティポリシーの適用
  • システムの状態監視やインシデント対応の自動化

このように、防御・攻撃どちらの立場でも、PowerShellスクリプティングはサイバーセキュリティにおける必須スキルの一つです。

【Invoke-Commandの紹介】

スクリプティングの話題を締めくくる前に、もうひとつ重要なコマンドレットを紹介しておきます。それが「Invoke-Command」です。

Invoke-Command は、リモートマシンでコマンドを実行するためのコマンドレットです。

システム管理者、セキュリティエンジニア、ペネトレーションテスターなどにとって不可欠な機能であり、複数のマシンに対して一括で処理を実行したり、スクリプトと組み合わせて自動化したりすることができます。

ペネトレーションテストや攻撃の現場では、ターゲットマシン上でのペイロードやコマンドの実行にも使われます。

それでは、次にこの強力な Invoke-Command の使用例を、Get-Help コマンドの "examples" ページで確認してみましょう。

Terminal
PS C:\Users\captain> Get-Help Invoke-Command -examples

NAME
    Invoke-Command
    
SYNOPSIS
    Runs commands on local and remote computers.
    
    ------------- Example 1: Run a script on a server -------------
    
    Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
    
    The FilePath parameter specifies a script that is located on the local computer. The script runs on the remote computer and the results are returned to the local computer.

    --------- Example 2: Run a command on a remote server ---------

    Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock { Get-Culture }

    The ComputerName parameter specifies the name of the remote computer. The Credential parameter is used to run the command in the security context of Domain01\User01, a user who has permission to run commands. The ScriptBlock parameter specifies the command to be run on the remote computer.

    In response, PowerShell requests the password and an authentication method for the User01 account. It then runs the command on the Server01 computer and returns the result.
[...]

Get-Help コマンドの "examples" ページにある最初の2つの例だけでも、Invoke-Command コマンドレットのシンプルさと強力さを理解するには十分です。

最初の例では、Invoke-Command を任意のスクリプトと組み合わせて使うことで、リモートコンピューター上での処理を簡単に自動化できることが示されています。

2つ目の例では、スクリプトを書く技術がなくても Invoke-Command を使えることが示されています。コマンドに -ScriptBlock { ... } を追加することで、リモートマシン上で任意のコマンドやコマンドの連続実行が可能になります。

その結果は、リモートマシンの PowerShell セッションで直接コマンドを入力した場合と同じように動作します。

Answer the questions below

What is the syntax to execute the command Get-Service on a remote computer named "RoyalFortune"? Assume you don't need to provide credentials to establish the connection. [for the sake of this question, avoid the use of quotes (" or ') in your answer]

Invoke-Command -ComputerName RoyalFortune -ScriptBlock { Get-Service }

Conclusion

お見事です、諸君!
PowerShellという荒波を無事に乗り越え、TheBlackPearl号に隠された財宝や謎のサービスを見つけ出すことに成功しました。

ここまで習得したツールがあれば、どんなWindowsシステムの奥深くも探検する準備は万端です。

覚えておいてください。真の探求者(海賊)は、決して学びを止めません。これからもスキルを磨き続けていけば、きっと次の冒険でも新たな「真珠」が見つかるはずです。

それでは、コマンドレットが鋭く、スクリプトが素早く動作することを祈っています。
よい航海を。そして、さらなる発見を!

このままコマンドラインスキルを高めたい方は、次の学習ステップである「Linuxコマンドライン」ルームへ進んでください。

出典:Windows PowerShell