NRIセキュアではNews BitesやOUCH! を日本語に翻訳して皆さまにお届けしています。
購読制を採っておりますので、
ご希望の方は、ニュースレター登録からお申し込みください。
Securing Windows and PowerShell Automation
※本コースは中止となりました。次回開催をお待ちください。
Blue Team Operations
English2024年1月22日(月)~1月27日(土)
1日目:9:00-17:30
2日目~6日目:9:30-17:30
オンライン
【早割価格】1,220,000 円(税込み:1,342,000 円)
※キャンペーン価格のため、他の割引の重複適用はできません。ご了承ください。
【通常価格】1,350,000 円(税込み:1,485,000 円)
※オプションの価格は、コース本体と同時にお申し込みいただく場合のみ有効です。
※コース本体のお申し込み後から講義開始までの間に、GIAC試験オプションを追加される場合は、事務手数料10,000円(税込11,000円)をいただきます。
※講義開始後のGIAC試験のお申込みは、こちらのページ(英語)をご参照のうえ、GIACへ直接お申し込みください。
演習で使用するノートPCをご準備下さい。受講に必要なPC環境についてご確認ください。
重要以下の説明に従って設定したシステムを持参してください!
このコースに完全に参加するためには、適切に設定されたシステムが必要です。これらの指示を注意深く読み、それに従わなければ、このコースに不可欠な実地演習に参加できないため、満足できないままクラスを去ることになるでしょう。従って、コースで指定されたすべての要件を満たすシステムで参加されることを強くお勧めします。
SEC505にご参加の際は、以下のものをご持参ください:
注意:M1プロセッサを使用したアップル社のシステムは、必要な仮想化機能を実行できないため、このコースには使用できません。
Windows Server VMにパッチやアップデートを適用しないでください。
トレーニング当日の朝ではなく、事前にWindows Server VMをインストールしてください。そうすることで、ファームウェアの問題やVMの作成に関するその他の問題が発生しないようになります。
IT部門が遅すぎたり、ロックダウンされた「貸し出し用ノートパソコン」を渡して、トレーニングの経験を台無しにしないようにしてください。
ノートパソコンに管理者権限があり、仮想マシンを2台作成でき、USBフラッシュドライブからファイルをコピーできる必要があります。
セットアップに関するご質問
ノートパソコンやVMのセットアップについてご質問がある場合は、laptop_prep@sans.orgまでお問い合わせください。
Windows Serverをインストールする際の「Desktop Experience」オプションはどのようなものですか?
Windows Server インストール ISO ファイルから VM を起動すると、以下の画面が表示されます。Windows Server 2022 Datacenterのリストの一番下にある「Desktop Experience」オプションを選択します。
Windows Server 2022の無償評価版はどこで入手できますか?
マイクロソフト社からWindows Server 2022の無料バージョンをISOイメージファイルとしてダウンロードすることができます(ISOファイルとは、CD/DVDディスクのエクスポートされたコピーのことです)。site:microsoft.comのwindows server trial evalをクリックするだけで、マイクロソフトのウェブサイトにあるISOファイルへのダウンロードリンクが見つかります。ライセンス番号は必要ありません。
コース受講の際は、ISOファイルをハードディスクに保存してお持ちください。
VMware Workstationがライセンス番号の入力を求めるか、ライセンスエラーメッセージを表示します!
Windows Serverの評価版を持っていることを確認してください。
VMWare Workstationで仮想マシンを作成する場合、「後でオペレーティングシステムをインストールする」というオプションを選択し、Windows Server用のISOファイルのパスを、最初の作成時ではなく、VMの作成後に指定するのがベストです。
VMが作成されたら、そのVMのSettingsに行き、ソースISOファイルのパスを指定する。これで、VMを起動しても、評価ライセンスの問題は発生しないはずです。SANS(laptop_prep@sans.org)までお問い合わせください。
なぜSANSは参加者に構築済みの仮想マシンを提供しないのか?
マイクロソフトは、ISOのダウンロードが無料でライセンス番号も必要ないにもかかわらず、Windows Server仮想マシンの評価版を再配布することを許可していません。
また、インターネット・アクセスや他の仮想化されたラボ環境に依存しないよう、自分のローカルVMを持ち帰ることができるようにしています。
SEC505のコースウェアのダウンロードを教えてください。
1)Microsoftからダウンロードした無料のWindows ServerインストールISO
2)SANSポータルからダウンロードしたSEC505コースウェアマニュアルPDFファイル
3)SANSポータルからダウンロードしたSEC505コースウェアISOラボファイルです。
授業初日の朝にファイルをダウンロードしないでください。事前にこれらのファイルをダウンロードし、VMを作成してください。
ご不明点がある場合
ノートパソコンの要件や仮想マシンのセットアップに関するご質問は、laptop_prep@sans.org までお問い合わせください。
ウィンドウズ・セキュリティの自動化とは
このコース(SEC505)では、以下のことを学びます:
特に、PowerShell を使用して、MITRE ATT&CK マトリックスに記載されている多くの攻撃、特に盗まれた管理者認証情報、ランサムウェア、LAN 内でのハッカーの横移動、および RDP や SMB などの安全でない Windows プロトコルから Windows を保護します。
このコースを修了すると、Windows環境のセキュリティを確保するための独自のPowerShellスクリプトを書き始める準備が整います。Windowsのセキュリティチェックリストを見つけるのは簡単ですが、何千台ものマシンの変更を自動化するにはどうすればよいのでしょうか?多数のリモートマシンでスクリプトを安全に実行するにはどうすればよいのでしょうか。このコースでは、WindowsやActive Directoryのセキュリティだけでなく、PowerShellを使ってセキュリティを管理する方法を学びます。
Powershellの構文を学ぶだけでなく、PowershellをWindowsセキュリティの戦力として活用する方法を学ぶ。
PowerShellが人気になった理由はもう一つある:PowerShellはとにかく楽しいのです!PowerShellは単なるスクリプト言語以上のもので、コーディングの達人でなくてもすぐに使い始めることができます。
PowerShellの習得は、もうひとつのセキュリティ、つまり雇用の安定にも役立つ。雇用主はPowerShellのスキルを持ったIT人材を求めています。このコースに参加するためにPowerShellを学ぶ必要はありません。
PowerShellの基本的な構文はYouTubeで無料で学べますが、今週は構文をはるかに超える内容です。このコースでは、PowerShellをセキュリティ管理のプラットフォームとして、ブルーチームの「戦力」として、そしてWindows ITキャリアのロケットブースターとして活用する方法を学びます。
Pwershellランサムウェアスクリプトを作成し、それを防御する
残念ながら、PowerShellはハッカーやマルウェア作者に悪用されています。コースの最終日には、独自のランサムウェア・スクリプトを作成し、このようなスクリプトに対する防御方法を確認します。
経験豊富なWindows管理者にとっても、目からウロコの楽しいコースです。PowerShellとWindowsセキュリティを同時に楽しく学びましょう。
このコースの著者である Jason Fossen 氏は、SANS Institute のフェローであり、1998 年から SANS のために執筆や講義を行っています。実際、このコース(SEC505)では、10年以上前から少なくとも1日はPowerShellを扱っており、今ではPowerShellがコースの中心となっています。
本トレーニングのトピック
以下のスキルを習得できます。
受講者へ配布物
GCWN ( GIAC Certified Windows Security Administrator )
GIAC 認定 Windows システム管理者(GCWN)資格は、Microsoft Windows クライアントおよびサーバーのセキュリティを確保する能力を認定するものです。GCWN 認定者は、Microsoft オペレーティングシステムおよびアプリケーションのセキュリティを設定および管理するために必要な知識とスキルを有しています:PKI、IPSec、グループポリシー、AppLocker、PowerShell、およびマルウェアや永続的な敵対者に対する Windows の強化が含まれます。
「私がSANSのために執筆するコースは、常に2つの問いによって導かれています:
(1) 管理者はネットワークのセキュリティを確保するために何を知る必要があるのか?
(2) ITプロフェッショナルとしてキャリアアップするために、管理者は何を学ぶべきか?
私はマイクロソフト社の社員でもマイクロソフト社叩きでもないので、ここではどちらの宣伝もしません。私が心配しているのは、あなたのネットワークとキャリアの健全性である。私はセキュリティ・コンサルタントとして、(良いことも、悪いことも、醜いことも)すべてを見てきました。私の経験は、SANSのために書くマニュアルやセミナーで話す話に生かされています。WindowsのセキュリティとPowerShellの自動化コースは、インターネットではなかなか見つけることのできない、興味深く有益なアドバイスが満載です。いつも楽しい時間を過ごしていますので、次回のトレーニングイベントでお会いできることを楽しみにしています。」
- Jason Fossen, SANS Faculty Fellow(@JasonFossen)
「SEC505は最初から最後まで素晴らしく、最終日には1週間を通して学んだことをすべてまとめてくれます。ジェイソン・フォッセンはこのトピックを驚くほど深く知る素晴らしい講師です。」
- Jim Blanchard, JPMC
本講座では、PowerShellを使い始めるために必要な知識を学びます。スクリプトやプログラミングの経験がなくても大丈夫です。週を通してPowerShellラボを行いますので、今日だけがPowerShellの教材ではありません。基本的なことから始め、週が進むにつれて、より深く掘り下げていきます。PowerShellラボでは、すべてのステップを順を追って説明していきますので、ご安心ください。すでにPowerShellの経験がある方は、中級者向けのトピックもあります。
今週のラボのほとんどはPowerShellを使用し、その他のラボではPowerShellに相当するものがない場合など、必要な場合にのみグラフィカルなセキュリティツールを使用する。
PowerShell CoreはWindows PowerShellとは異なります。PowerShell Coreは、Windows、Linux、macOS用の新しいクロスプラットフォーム版のPowerShellだ。PowerShell Coreの完全なソースコードはGitHubにある。PowerShell CoreにはOpenSSHとの統合が組み込まれています。このコースでは、Windows PowerShellとPowerShell Coreの両方を使用します。
システムのクラウド化が進むにつれ、PowerShellの重要性はさらに高まるだろう。Amazon Web Services、Microsoft Azure、Office 365、Hyper-V、VMwareは、すでに多くのタスクでPowerShell管理をサポートしている。PowerShellを学ぶことは、ネットワーク・セキュリティの管理にも、仕事のセキュリティにも役立つ。
あなたのコースのメディアファイルには、コースの著者が書いた200以上のPowerShellスクリプトが含まれています。週中のマニュアルで示されるPowerShellコードは、すべてコースのメディアファイルに含まれます。すべてのスクリプトはパブリックドメインであり、個人またはビジネスで制限なく使用できます(https://BlueTeamPowerShell.com からダウンロードできます)。
PowerShellは危険である(そして楽しい)
独自のスクリプト、関数、モジュールを書く
PowerShellで素早く立ち上げ、実行する
テキストの代わりにオブジェクトをパイピングする
数行のコードで何千ものシステム上でPowerShellスクリプトを実行するには?今日は、PowerShell Remoting、WindowsのSSHサービス、タスク・スケジューラ・サービス、グループ・ポリシーで割り当てられたブートアップ・スクリプトを使ったリモート・コマンド実行について説明します。
OpenSSHはLinuxだけのものではありません。Windowsは現在、クライアントとしてもサーバーとしてもSecure Shell (SSH)をビルトインでサポートしている。PowerShell CoreもSSHをネイティブサポートしている。もうPuTTYは必要ない。
PowerShell Remotingは、PowerShellスクリプトの暗号化されたリモートコマンド実行で、数千台のワークステーションやサーバーに拡張可能です。PSEXEC.EXEよりもはるかに優れています。リモーティングトラフィックはSSL/TLS、IPsec、SSHで暗号化され、スマートカードやYubiKeyで認証されます。
しかし、パワーは常に諸刃の剣だ。PowerShell Remotingはランサムウェアやハッカーにも悪用される可能性があります。PowerShell Remotingを使用できるグループを制限し、各グループが実行できるコマンドを制限することはできますか?はい、これはPowerShellのJEA(Just Enough Admin)と呼ばれています。JEAは、非管理者ユーザが管理者権限を持つコマンドをリモートで実行できるようにしますが、管理者認証情報は一切公開されません(Linuxのsetuid rootのようなものです)。JEAを使用すると、明示的に許可したコマンドを除き、すべてのPowerShellコマンドがデフォルトでブロックされます。MicrosoftのWindows Admin Center(WAC)ウェブ・アプリケーションのように、PowerShell JEAの上にグラフィカル・アプリケーションを構築することもできる。
PowerShell RemotingとSSHは素晴らしいですが、それでも十分なスケールではありません。毎晩(あるいは毎時間)、何万台ものホスト上で何十ものPowerShellスクリプトを実行する必要がある場合は、タスク・スケジューラ・サービスが必要です。ビルトインのタスク・スケジューラ・サービスは、PowerShellとグループ・ポリシーを使ってリモートで管理することができます。ランサムウェアもしばしばタスク・スケジューラを使用します。ここでは、管理者認証情報を保護しながら、昇格した権限でスケジュールされたPowerShellスクリプトを実行する方法について説明します。
グループ・ポリシーについてはすでにご存知かもしれませんが、本日のコースではグループ・ポリシーのPowerShell機能に重点を置きます。グループ・ポリシーを使用して、PowerShellスクリプトを何千ものホストにプッシュし、誰もログオンしていなくても、ハンズフリーでスクリプトを実行させることができます。これらのスクリプトは、共有フォルダ、syslogパケット、またはSIEMロギングを通じて、私たちにデータを返すことができます。
今日のPowerShellリモート・コマンド実行の資料は、管理者にとってしばしば衝撃的なものだ。善悪両方の可能性が非常に大きい!
PowerShellリモーティング
Windows上のOpenSSH
PowerShell Just Enough Admin (JEA)
PowerShell、グループ・ポリシー、タスク・スケジューラ
PowerShellはWindows Management Instrumentation(WMI)サービスに深く統合されている。PowerShellコマンドの多くは、WMI関数のラッパーに過ぎない。ハッカーもWMIサービスが大好きだが、その理由は間違っている。
WMIサービスはデフォルトで有効になっており、ネットワーク経由でアクセスできます。PowerShell WMIスクリプトを使えば、リモートでコマンドを実行したり、マシンを再起動したり、ユーザーを強制的にログオフしたり、プロセスを強制終了したり、その他いろいろなことができる。今日は、これらすべてを実行する方法を見ていこう。WMIスクリプトは少し難しいですが、奇妙な名前空間とクラスをすべて一緒に見ていきましょう。
今日はPowerShellを使ってActive Directoryの検索、管理、セキュリティーを行います。PowerShellを使えば、放置されたユーザーアカウントを見つけ、無効にすることができます。スケジュールされたスクリプトを使って、必要なグループ・メンバーシップを強制することができます。何千ものユーザーアカウントのパスワードをリセットすることができます。また、ハッカーがパスワードを総当たりで入力するような場合でも、PowerShellスクリプトを使用することで、標的となるアカウントを見つけることができます。もちろん、悪意のあるインサイダーもBloodhoundツールのように同じことができます。
Active Directoryのすべてのオブジェクトには権限と監査設定がある。単純にIT部門の全員をDomain Adminsグループに加えるのではなく、組織単位(OU)レベルでより正確に権限を委譲することができる。PowerShellやグラフィカルツールを使用しても、これらのActive Directoryの権限は常にドメインコントローラーによって強制されます。
Microsoft LAPSは使わないでください!管理者パスワードを保護するには、もっと良い方法がある。PowerShellを使ってActive Directoryのドメインアカウントを管理することもできますが、PowerShellを使ってサーバーやワークステーションのローカル管理者アカウントとパスワードをMicrosoft LAPSよりも優れた方法で管理することもできます。本日は、LAPSよりも優れたPowerShellラボを実施します。カンファレンスの後、LAPSの代わりにこれらのスクリプトをネットワークで使用することを歓迎します。
PowerShellはスクリプトとコマンドシェルだけ?いいえ!Windows Admin Center (WAC)は、Webブラウザでリモート管理するための無料のMicrosoft Webアプリケーションです。WACは、WMIとPowerShell Remotingの両方を使用しています。これは、オンプレミスとAzureの両方でマシンを管理するために、MicrosoftがPowerShellをグラフィカルなツールでラッピングしている素晴らしい例だ。WACをインストールし、それが公開するPowerShell関数を見てみよう。
WMIによるPowerShellベースライン
Active DirectoryのためのPowerShell
Active Directoryの権限と監査
PowerShellは、特にAzureやAWSでホストされている場合、Windows Server、Server Core、Server Nanoを構成し、ハードニングするための主要なツールです。今日は、PowerShellを使用して、ロールのインストール、サービスの管理、スタンドアロン・サーバーへのグループ・ポリシー・オブジェクトの適用(これは可能です)、その他のセキュリティ・タスクを実行する方法を紹介します。その過程で、PowerShellの新しいテクニックも学んでいきます。
ホストベースのファイアウォールは、LAN内部でのハッカーの横方向の動きや、マルウェアが "ビーコン "または "電話ホーム "する際のマルウェアのアウトバウンド接続をブロックすることができる。モバイル・デバイスの場合は、ホスト・ベースのパケット・フィルタリングを行う必要がある。なぜなら、モバイル・デバイスはLANの外を移動するため、境界ファイアウォールでは保護できないからだ。そのコツは、スケーラブルで反復可能な自動化された方法で、異なるマシン・セットに異なるファイアウォール・ルール・セットを適用できることだ。これをPowerShellと内蔵のWindowsファイアウォールで実現する。
IPsecはVPNのためだけのものではない!実際、今日はVPNについては全く触れない。組み込みのWindows IPsecドライバは、Active Directoryのユーザーのグローバルグループメンバーシップに基づいて、TCP/UDPリスニングポートの共有パーミッションを実装するために、Active Directoryでユーザーを認証することができます。PowerShellスクリプトを使用して、(1)リモートコンピューターがIPsecによってドメインのメンバーであることが事前認証されている、(2)ユーザーがDomain Adminsグループのメンバーであることが事前認証されている、(3)パケットがすべて256ビットAESで暗号化されている、(4)クライアントが許可されたサブネットのIPアドレスを持っている場合にのみ、RPC、RDP、またはSMBポートへのアクセスを許可するように、ワークステーションやサーバー上のWindowsファイアウォールを構成することを想像してみてください。これは可能なだけでなく、本日のコースではPowerShellを使った具体的な方法をご紹介します!
DevOpsのためのサーバー・ハードニング・オートメーション
Windowsファイアウォール・スクリプティング
IPsecポート認証によるゼロ・トラスト
PowerShellの可視化と検出
YubiKeysなどのスマートカードやスマートトークンは、多要素認証(MFA)のゴールドスタンダードです。今日はPowerShellを使って、スマートカードやスマートUSBトークンのデプロイに使用できる証明書サーバーをインストールします。スマート・カードとトークンは、PowerShell Remoting、PowerShellスクリプトの署名、リモート・デスクトップ・プロトコル(RDP)のログオン、ユーザー・アカウント制御(UAC)、ASP.NETウェブ・アプリケーションのログオンなどに使用できます。
管理者向けに完全なスマートカード/トークン・ソリューションを展開するのに必要なものは、カードとトークンそのものを除いて、すべてWindowsに含まれている。PowerShellとグループ・ポリシーを使えば比較的簡単です。
ノートパソコンやタブレットにTPM(Trusted Platform Module)チップを搭載している場合、TPMを内蔵スマートカードとして使用することもできる。TPMベースのスマートカードはユーザーには見えないため、AppleのiPhoneに搭載されているセキュリティ・プロセッサと同様、トレーニングはほとんど必要ありません。TPMはまた、バイオメトリック・データを保護し、BitLockerキーを暗号化し、Windows 10/11のクレデンシャル・ガードを強化するのに役立ちます。Windows 11ではTPMが必須であり、もはやオプションではありません!
PowerShell Remotingのネットワークトラフィックは、SSL/TLSで暗号化することができます。ターゲットサーバーは、HTTPSを使用するWebサーバーのように、証明書で認証されます。ユーザーも証明書で認証され、できればスマートカードやトークンに格納されます。今日は、SSL/TLSを使用し、ユーザからスマートカードまたはトークンを要求するようにPowerShell Remotingを設定します。これらの同じ証明書とスマートカードは、RDPにも使用できます。
組織では、他にも多くの目的で証明書が必要になります。本日のコースでは、PowerShellスクリプトへの署名、失効チェックのためのオンライン証明書ステータスプロトコル(OCSP)レスポンダのインストール、証明書のインストールと更新をハンズフリーで行うための自動登録の設定、PowerShellを使用したエンドポイント上の信頼されたルート証明書認証の監査と管理などを行います。
PowerShellの証明書認証とTLS暗号化
PowerShellでWindows証明書サーバをインストールする
スマートカード、スマートトークン、TPM仮想スマートカードの導入
セキュリティのベストプラクティス
今日はPowerShellのランサムウェア・スクリプトを書き、トレーニング用VMの中で解き放ちます(野放しにしてはいけません、連邦刑務所に行くことになります)。この倫理的ハッキングの目的は、この種のPowerShellの悪用に対する防御について議論することです。
PowerShell自体をセキュアにするには?PowerShellは単一のツールではありません。PowerShellを魔法のように「安全」にするレジストリ値やパッチは存在しませんが、私たちにできることはたくさんあります。本日は、将来の侵害を防止し、侵害後に被る被害を軽減し、フォレンジック、インシデント対応、脅威探索のためにPowerShellの悪意のある活動を可視化するための、多くの防御テクニックを取り上げます。
ハードニング作業を自動化したいので、新しいサーバーやワークステーションを構築するためのDevOps PowerShellスクリプトに、すべてのネットワーク設定を含めて、防御の変更もロールバックします。このスクリプトは、このコースの前の日に行われた PowerShell の教材をすべてまとめたものです。その目的は、できるだけ手作業を少なくしてWindowsマシンを再設定できるようになることです。コンピュータがマルウェアに感染しているかどうか疑わしい場合、そのマシンをゼロから再構築することで「軌道上から核攻撃」できるようにしなければならない。
最も重要なことは、PowerShell マルウェアが管理者認証情報を取得するのを防ぐことです。マルウェアは、パスザハッシュ攻撃やKerberos Golden Ticket攻撃などのように、権限の昇格や他のマシンへの横移動のために、メモリから認証情報をスクレイピングすることができます。ランサムウェアがドメイン管理者の認証情報を盗むと、ゲームオーバーになります。
パスザハッシュ攻撃やトークンの不正使用を防御するために、LSASSメモリ保護、クレデンシャル・ガード、リモート・クレデンシャル・ガード、ネットワーク・ログオン権限の制限、ユーザー・アカウント制御(UAC)、RDP制限管理モードなどについて説明します。これらの設定はすべて、PowerShellスクリプトで適用または監査できます。
防御側の視点から見ると、PowerShellは素晴らしい。C++のハッカーツールと比較すると、私たちは敵対者にPowerShellを使ってもらいたいと思っています。PowerShellのトランスクリプション・ロギングは、敵の戦術を深く可視化します。マルウェアが難読化されている場合でも、メモリ内のPowerShellマルウェアを検査するための特別なアンチウィルス・スキャン・インターフェイス(AMSI)があります。Just Enough Admin(JEA)サンドボックスを使ってPowerShellリモーティングをロックし、AppLockerルールを適用してPowerShellの実行を制限することができます。
PowerShellランサムウェア
PowerShellのエクスプロイト対策
キャップストーンDevOps PowerShell オーケストレーション・エンジン