
Microsoft Defender for Endpoint Live Response 向けクロスプラットフォームインタラクティブシェル
Microsoft Defender for Endpoint Live Response 向けクロスプラットフォーム対話型シェル
| 機能 | 詳細 |
|---|---|
| プラットフォーム | PowerShell Core 7.0+ (Windows, Linux, macOS) |
| API モード | Internal (ポータル, ニアリアルタイム) および Official (公開, ステートレス) |
| 実行 | 任意のコマンド + 25 のネイティブ LR コマンド |
| 認証 | 7 つの認証方式, 統一メニュー, 自動更新 |
| ライセンス | MIT |
LaraC2 Shell は、2 つの独立した API パスを通じて MDE Live Response に接続します。内部ポータル API (永続セッション、レイテンシ約 2~5 秒) と公式公開 API (コマンドごと、レイテンシ約 20~60 秒) です。エグゼキュータースタブを自動アップロードし、レート制限を透過的に処理し、マシン管理、ライブラリ管理、組み込みヘルプシステムを備えた完全な REPL を提供します。
| ドキュメント | 目的 |
|---|---|
| ユーザーガイド | ステップバイステップのセットアップ、認証、操作 |
| コマンドリファレンス | 全コマンド、ルーティング、バッチ処理、タブ補完 |
| エラーリファレンス | HTTP コード、シェルエラー、認証エラー、修正方法 |
| パフォーマンス | Internal と Official のレイテンシ、スループット、制限 |
| アーキテクチャ | 内部構造、認証チェーン、エンドポイント、ファイル構成 |
| コントリビューション | 貢献方法、テスト、PR の提出方法 |
| セキュリティポリシー | 脆弱性の非公開報告方法 |
| 参考資料 | 先行技術、関連研究、謝辞 |
| 免責事項 | 認可、謝辞 |
connect コマンドでセッション期限切れ時に再認証multi コマンドMachine.LiveResponse + Library.Manage 権限を持つ MDE アプリ登録 (official モード) のいずれかgit clone https://github.com/akefallonitis/larac2shell.git cd larac2shell pwsh -File shell/Invoke-MDEShell.ps1
それだけです。シェルは初回起動時に統一された7つの方法のauthメニューを表示します — 1つを選び、認証し、マシンを選択すると、REPLが起動します。設定ファイルも、フラグも、セットアップするものもありません。```
Select API mode:
Internal API (security.microsoft.com — near real-time, ~2-5s/cmd)
1 Credentials + MFA username + password, TOTP/push/SMS [auto-refresh]
2 Software passkey FIDO2/WebAuthn JSON key file [auto-refresh]
3 ESTS cookie ESTSAUTHPERSISTENT from browser (~24hr)
4 Temporary Access Pass one-time admin-issued code
5 Direct sccauth + XSRF cookies from browser DevTools (~1hr)
Official API (api.securitycenter.microsoft.com — CI/CD ready, ~20-60s/cmd)
6 Device code browser login (interactive)
7 Client credentials app registration with client secret
Auth method (1-7):
選択肢1-5は内部モードを、6-7は公式モードを設定します。後で再起動せずにモードを切り替えられます — 下記の モードのインライン切り替え を参照してください。
[INT myhost C:]> mode Current mode: Internal API Switch with: 'mode internal' or 'mode official'.
[INT myhost C:]> mode official [Mode] Switching from Internal API to official... (auth menu for official mode opens) [Mode] Now in official mode. Run 'machines' to list targets or 'connect <name|id>' to select one.
`mode <target>` は、現在の LR セッションを切断し、古い認証状態をクリアして、ターゲットモードの認証フローを再実行します。戻った時点では、新しいモードで認証済みでマシンは選択されていません — `machines` で一覧表示するか、`connect <name|id>` で直接ターゲットにジャンプできます。再起動は不要です。
### CLI ショートカット(オプション)
スクリプトや統合メニューをスキップしたい場合:```powershell
# Pre-select the mode (narrows the auth menu to 1-5 or 6-7)
pwsh -File shell/Invoke-MDEShell.ps1 -Mode internal
pwsh -File shell/Invoke-MDEShell.ps1 -Mode official
# Pre-select a machine (skips the picker)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost
# Software passkey path (internal mode)
pwsh -File shell/Invoke-MDEShell.ps1 -PasskeyPath ./keys/passkey.json
# Non-interactive single command (exits with remote command's exit code)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost -Command 'whoami'
以下の1つのシナリオでのみ使用されます:クライアントシークレットを使用した公式モードで、非対話的に。他のすべての認証方法では、対話的にプロンプトが表示され、ディスクには何も保存されません。自動化されたクライアント認証情報認証が必要ない場合は、このセクションは完全にスキップして構いません。```powershell Copy-Item shell/config/shell-config.example.json shell/config/shell-config.json
pwsh -File shell/Invoke-MDEShell.ps1 -Config shell/config/shell-config.json
設定スキーマ(クライアント認証情報を使用する場合、`official.tenantId` + `official.clientId` を除き、すべてのフィールドはオプション):
| Section | Field | Description |
|---------|-------|-------------|
| `official` | `tenantId` | Azure AD テナント ID |
| `official` | `clientId` | アプリ登録クライアント ID |
| `official` | `clientSecret` | クライアントシークレット(デバイスコードの場合は省略し、`useDeviceCode: true` を設定) |
| `official` | `useDeviceCode` | クライアント認証情報の代わりにデバイスコードフローを使用する場合は `true` |
| `defaults` | `defaultMachine` | 起動時にマシンを事前選択する(名前の部分文字列または ID プレフィックス) |
| `defaults` | `commandTimeoutSeconds` | クライアント側のタイムアウト上限。`0` = サーバーが決定(最大1800秒)。 |
| `defaults` | `pollIntervalOfficial` | 公式APIのポーリング間隔(秒単位、デフォルト2) |
| `defaults` | `pollIntervalInternal` | 内部APIのポーリング間隔(秒単位、デフォルト1) |
**セキュリティ**: `clientSecret` を含む設定ファイルのファイルシステム権限を制限します。`clientSecret` はコマンドラインでは決して受け付けられず、設定ファイルのみです。内部モードのすべての認証情報(ユーザー名、パスワード、TOTP シークレット、Cookie)は対話的に要求され、ディスクに永続化されることはありません。
---
## 認証方法
シェルは起動時に統一された7つの認証方法メニューを表示します。モード(内部/公式)は選択に基づいて決定されます。
| # | モード | 方法 | 方法詳細 | 自動更新 |
|---|------|--------|-----|--------------|
| 1 | 内部 | 認証情報 + TOTP | 対話型プロンプト | はい(サイレント)-- TOTP シークレットが提供された場合のみ。プッシュ/SMS MFA ではセッションは自動更新できません。 |
| 2 | 内部 | ソフトウェアパスキー | `-PasskeyPath` パラメータまたはプロンプト | はい(サイレント) |
| 3 | 内部 | ESTS Cookie | 対話型プロンプト | いいえ(約24時間) |
| 4 | 内部 | 一時アクセスパス | 対話型プロンプト | いいえ(1回限り) |
| 5 | 内部 | 直接 sccauth + XSRF | 対話型プロンプト | いいえ(約1時間)-- XSRF 自動更新は適用されません。シェルは直接指定された Cookie を自動更新しません。 |
| 6 | 公式 | デバイスコード | ブラウザログイン | いいえ(約1時間) |
| 7 | 公式 | クライアント認証情報 | 設定ファイル | はい(サイレント) |
`connect` コマンドはセッションが期限切れになったときに、最初に選択されたのと同じ方法で再認証します。自動更新がない方法は再度対話的にプロンプトが表示されます。
**メモリ内の認証情報の取り扱い**: 方法1の場合、提供されたパスワードと TOTP シークレットは、シェルプロセスの有効期間中、メモリ内(プレーン文字列として、`$script:Int_ReauthParams` 内)に保持され、無人での再認証が可能になります。文字列オブジェクトは PowerShell の実行空間に存在し、ディスクにシリアル化されたり、コマンドラインで渡されたりすることはありません。この露出がお使いの脅威モデルで許容できない場合は、方法2(パスキー/HSM)または方法7(クライアント認証情報)を使用してください。
---
## シェルコマンド
### シェル制御