소스 저장소에는 빠른 격리 테스트를 위한 scripts/setup_fake_shelljsp_lab.sh가 포함되어 있습니다. 이 스크립트는 JSP Webshell이 사용하는 Command Interface를 흉내 내는 작은 Flask 엔드포인트를 생성합니다.
Fake Shell Endpoint는 임의의 Shell Command를 실행할 수 있습니다. 반드시 격리된 Test System에서만 사용하고 Public Internet에 노출하지 마십시오.
운영 환경에 가까운 원격 검증을 수행하려면 간이 테스트 환경 대신 적절히 통제된 JSP/Tomcat 또는 PHP/Apache 테스트 환경를 사용하십시오.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Detection Scenario Platform","description":"Documentation for Detection Scenario Platform (DSP) — realistic security activity generation, evidence collection, and XDR/NDR customer POC validation.","colors":{"primary":"#1F59E0","light":"#2982E8","dark":"#5B8CFF"},"logo":{"light":"https://mintcdn.com/detection-scenario-platform/KhFDooDRGH2V_z_w/logo/light.svg?fit=max\u0026auto=format\u0026n=KhFDooDRGH2V_z_w\u0026q=85\u0026s=2c2ca56379f9da68a23fbed6356666b0","dark":"https://mintcdn.com/detection-scenario-platform/KhFDooDRGH2V_z_w/logo/dark.svg?fit=max\u0026auto=format\u0026n=KhFDooDRGH2V_z_w\u0026q=85\u0026s=1a99023dd755f0ebc046fc4aea051e88","href":"https://dsp.xdr.ooo"},"favicon":"https://mintcdn.com/detection-scenario-platform/NqhyeJ2_6uBatxJf/favicon.svg?fit=max\u0026auto=format\u0026n=NqhyeJ2_6uBatxJf\u0026q=85\u0026s=1bf41b933ad91eebd4d5f1450868a7d2","appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://github.com/xdr-labs/xdr-poc-script","type":"github"}],"primary":{"type":"button","label":"Get Started","href":"/quickstart"}},"search":{"prompt":"Search DSP documentation..."},"seo":{"metatags":{"canonical":"https://dsp.xdr.ooo"},"indexing":"navigable"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"detection-scenario-platform","hasAudioNarration":false,"actualSubdomain":"detection-scenario-platform","customDomains":["dsp.xdr.ooo"],"gitSource":{"type":"github","owner":"xdr-labs","repo":"detection-scenario-platform-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6acc66d48686749161e5a583","collectionId":"cca7f00d-e8fa-4e6a-80a5-d285f829a799","liveDeploymentHistoryId":"6acc66d48686749161e5a583","schemaVersion":"v3"},"entitlements":{},"buildId":"6acc66d48686749161e5a583","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"en","tag":"Setup \u0026 Operation","count":5},{"language":"ko","tag":"설치 및 운영","count":5},{"language":"en","tag":"Reference","count":4},{"language":"en","tag":"POC Guide","count":4},{"language":"ko","tag":"참조","count":4},{"language":"ko","tag":"POC 가이드","count":4},{"language":"en","tag":"Start Here","count":2},{"language":"ko","tag":"시작하기","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--xdr-navy:#0a182d;--xdr-navy-deep:#030f1b;--xdr-blue:#1f59e0;--xdr-blue-bright:#2982e8;--xdr-cyan:#55c7f3;--xdr-orange:#ff9b1d;--xdr-ink:#0f172a;--xdr-muted:#64748b;--xdr-border:rgba(148, 163, 184, 0.22)}html{scroll-behavior:smooth}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif}h1,h2,h3{letter-spacing:-.025em}a{text-underline-offset:.18em}.xdr-hero{position:relative;overflow:hidden;margin:0 0 2.5rem;padding:clamp(2rem,5vw,4.5rem);border:1px solid rgba(85,199,243,.22);border-radius:28px;background:radial-gradient(circle at 82% 18%,rgba(41,130,232,.42),transparent 30%),radial-gradient(circle at 10% 110%,rgba(31,89,224,.34),transparent 38%),linear-gradient(135deg,var(--xdr-navy-deep) 0%,var(--xdr-navy) 58%,#102a51 100%);box-shadow:0 28px 70px rgba(3,15,27,.24);color:#fff}.xdr-hero::before{content:\"\";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.8),transparent 85%)}.xdr-hero::after{content:\"\";position:absolute;width:18rem;height:18rem;right:-5rem;top:-7rem;border-radius:999px;border:1px solid rgba(255,155,29,.38);box-shadow:0 0 90px rgba(255,155,29,.1)}.xdr-hero>*{position:relative;z-index:1}.xdr-kicker{margin:0 0 .9rem;color:#9edfff;font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.xdr-hero-title{max-width:14ch;margin:0;color:#fff!important;font-size:clamp(2.35rem,6vw,4.8rem);font-weight:780;line-height:.98;letter-spacing:-.055em}.xdr-hero-copy{max-width:48rem;margin:1.5rem 0 0;color:#d8e6f8;font-size:clamp(1rem,1.6vw,1.2rem);line-height:1.75}.xdr-hero-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.8rem}.xdr-hero-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:2.9rem;padding:.72rem 1.1rem;border-radius:999px;font-weight:750;text-decoration:none!important;transition:transform 160ms ease,box-shadow 160ms ease,border-color 160ms ease}.xdr-hero-actions a:hover{transform:translateY(-1px)}.xdr-hero-primary{background:linear-gradient(135deg,var(--xdr-blue),#1e4eb8);color:#fff!important;box-shadow:0 12px 28px rgba(31,89,224,.34)}.xdr-hero-secondary{border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.07);color:#fff!important;backdrop-filter:blur(10px)}.xdr-signal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-top:2.1rem}.xdr-signal{min-height:7.25rem;padding:1rem 1.05rem;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:rgba(5,18,38,.48);backdrop-filter:blur(12px)}.xdr-signal strong{display:block;margin-bottom:.35rem;color:#fff;font-size:1rem}.xdr-signal span{color:#b9cbe0;font-size:.88rem;line-height:1.5}.xdr-section-intro{max-width:47rem;margin:-.4rem 0 1.25rem;color:var(--xdr-muted);font-size:1.02rem;line-height:1.7}article h2{margin-top:2.8rem}article table{border-radius:16px;overflow:hidden}article img{border-radius:14px}.dark .xdr-section-intro{color:#94a3b8}@media (max-width:720px){.xdr-hero{padding:1.6rem;border-radius:22px}.xdr-hero-title{font-size:clamp(2.15rem,12vw,3.2rem)}.xdr-hero-actions{flex-direction:column}.xdr-hero-actions a{width:100%}.xdr-signal-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.xdr-hero-actions a{transition:none}}"}],"page":{"pagePath":"ko/execution-modes","slug":"/ko/execution-modes","pageMetadata":{"title":"실행 모드","description":"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.","href":"/ko/execution-modes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Mermaid,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`실행-모드`,children:`실행 모드`}),`\n`,_jsxs(_components.p,{children:[`DSP는 `,_jsx(_components.strong,{children:`local`}),`과 `,_jsx(_components.strong,{children:`webshell`}),` 두 가지 실행 방식을 지원합니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`local-실행`,children:`Local 실행`}),`\n`,_jsx(_components.p,{children:`DSP 호스트에서 승인된 대상 네트워크에 직접 접근할 수 있을 때 local 모드를 사용합니다.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dsp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --profile`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` normal`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --target-net`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 10.10.10.0/24`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`local 실행은 `,_jsx(_components.code,{children:`LocalExecutionProvider`}),`와 `,_jsx(_components.code,{children:`RunManager`}),`를 통해 시나리오를 실행한 뒤 이벤트, 검증 결과, 보고서와 확인 자료를 로컬 실행 디렉터리에 저장합니다.`]}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n CLI[dsp run] --> P[LocalExecutionProvider]\n P --> S[Scenario Execution]\n S --> E[Event Store]\n E --> V[Validation]\n V --> R[Report + Evidence]`}),`\n`,_jsx(Heading,{level:`2`,id:`webshell-실행`,children:`Webshell 실행`}),`\n`,_jsx(_components.p,{children:`POC 활동을 대상 환경 내부의 승인된 원격 호스트에서 발생시켜야 할 때 Webshell 모드를 사용합니다.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dsp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --profile`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` normal`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --target-net`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 10.10.10.0/24`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --execution-provider`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` webshell`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --webshell-family`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jsp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --webshell-url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http://10.10.10.50:8080/shell.jsp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --remote-work-dir`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /tmp/dsp`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`DSP는 시나리오 실행을 원격 호스트로 전달하고, 생성된 `,_jsx(_components.code,{children:`events.jsonl`}),` 번들을 가져와 로컬 Event Store에 저장한 뒤 같은 검증 및 보고 절차를 계속 수행합니다.`]}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n CLI[dsp run] --> W[WebshellExecutionProvider]\n W --> RR[Remote Scenario Runner]\n RR --> B[Remote events.jsonl]\n B --> C[RemoteEventCollector]\n C --> E[Local Event Store]\n E --> V[Validation + Evidence]`}),`\n`,_jsx(Heading,{level:`2`,id:`webshell-family-상태`,children:`Webshell Family 상태`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`유형`}),_jsx(_components.th,{children:`일반적인 플랫폼`}),_jsx(_components.th,{children:`상태`}),_jsx(_components.th,{children:`설명`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`JSP`}),_jsx(_components.td,{children:`Java / Tomcat`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`검증 완료`})}),_jsx(_components.td,{children:`실제 Tomcat 검증 완료, 릴리스 시나리오 10/10 검증 기록`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`PHP`}),_jsx(_components.td,{children:`Apache / PHP`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`검증 완료`})}),_jsx(_components.td,{children:`실제 Apache/PHP 검증 완료, 릴리스 시나리오 10/10 검증 기록`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`ASPX`}),_jsx(_components.td,{children:`Windows / IIS`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Preview`})}),_jsx(_components.td,{children:`HTTP Contract는 존재하지만 실제 Windows IIS 실행은 아직 검증되지 않음`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`ASPX를 운영 환경에서 검증 완료된 기능으로 설명하지 마십시오. 현재 릴리스 문서는 Windows/IIS Webshell 경로를 아직 미검증 상태로 명시하며, 번들 처리 역시 현재 검증된 경로에서는 Linux 중심입니다.`})}),`\n`,_jsx(Heading,{level:`2`,id:`webshell-설정`,children:`Webshell 설정`}),`\n`,_jsx(_components.p,{children:`주요 설정 항목은 세 가지입니다.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Family`}),` — `,_jsx(_components.code,{children:`jsp`}),`, `,_jsx(_components.code,{children:`php`}),`, `,_jsx(_components.code,{children:`aspx`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`URL`}),` — 승인된 엔드포인트의 전체 HTTP(S) 경로`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remote work directory`}),` — Remote Script와 Event Bundle을 저장할 수 있는 쓰기 가능한 위치`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`예시:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`http://10.10.10.50:8080/shell.jsp`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`http://10.10.10.50/shell.php`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://lab.example/path/shell.aspx`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`URL Extension은 선택한 Family와 일치해야 합니다.`}),`\n`,_jsx(Heading,{level:`3`,id:`tls-verification`,children:`TLS Verification`}),`\n`,_jsx(_components.p,{children:`CLI는 다음 옵션을 지원합니다.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`--verify-tls`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Webshell Endpoint가 HTTPS이고 Certificate Verification을 강제해야 할 때 사용합니다.`}),`\n`,_jsx(Heading,{level:`2`,id:`fake-jsp-lab`,children:`Fake JSP Lab`}),`\n`,_jsxs(_components.p,{children:[`소스 저장소에는 빠른 격리 테스트를 위한 `,_jsx(_components.code,{children:`scripts/setup_fake_shelljsp_lab.sh`}),`가 포함되어 있습니다. 이 스크립트는 JSP Webshell이 사용하는 Command Interface를 흉내 내는 작은 Flask 엔드포인트를 생성합니다.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Fake Shell Endpoint는 임의의 Shell Command를 실행할 수 있습니다. 반드시 격리된 Test System에서만 사용하고 Public Internet에 노출하지 마십시오.`})}),`\n`,_jsx(_components.p,{children:`운영 환경에 가까운 원격 검증을 수행하려면 간이 테스트 환경 대신 적절히 통제된 JSP/Tomcat 또는 PHP/Apache 테스트 환경를 사용하십시오.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"실행 모드","description":"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.","href":"/ko/execution-modes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"실행 모드","slug":"실행-모드","depth":1,"children":[]},{"title":"Local 실행","slug":"local-실행","depth":2,"children":[]},{"title":"Webshell 실행","slug":"webshell-실행","depth":2,"children":[]},{"title":"Webshell Family 상태","slug":"webshell-family-상태","depth":2,"children":[]},{"title":"Webshell 설정","slug":"webshell-설정","depth":2,"children":[{"title":"TLS Verification","slug":"tls-verification","depth":3,"children":[]}]},{"title":"Fake JSP Lab","slug":"fake-jsp-lab","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"detection-scenario-platform","siteName":"Detection Scenario Platform","title":"실행 모드 - Detection Scenario Platform","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/execution-modes","matchLevel":1},"ko":{"href":"/ko/execution-modes","matchLevel":0}}},"lastModified":"2026-09-28T08:16:15.426Z","originalFileLocation":"ko/execution-modes.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Detection Scenario Platform\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"실행 모드 - Detection Scenario Platform\">\u003cmeta data-mint-head property=\"og:description\" content=\"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Detection Scenario Platform\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://dsp.xdr.ooo/ko/execution-modes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://detection-scenario-platform.mintlify.app/_mintlify/api/og/v2?division=%EC%84%A4%EC%B9%98+%EB%B0%8F+%EC%9A%B4%EC%98%81\u0026amp;title=%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%93%9C\u0026amp;description=DSP%EB%A5%BC+local+%EB%98%90%EB%8A%94+%EA%B2%80%EC%A6%9D%EB%90%9C+Webshell+%EC%8B%A4%ED%96%89+%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%84%A4%EB%AA%85%ED%95%A9%EB%8B%88%EB%8B%A4.\u0026amp;theme=844aa417a8c7db35f7c557a9\u0026amp;signature=8d7510f7f63f274d87cd8c0c88319e8db392138bd39a0876dd75871a3b966888\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"실행 모드 - Detection Scenario Platform\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://detection-scenario-platform.mintlify.app/_mintlify/api/og/v2?division=%EC%84%A4%EC%B9%98+%EB%B0%8F+%EC%9A%B4%EC%98%81\u0026amp;title=%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%93%9C\u0026amp;description=DSP%EB%A5%BC+local+%EB%98%90%EB%8A%94+%EA%B2%80%EC%A6%9D%EB%90%9C+Webshell+%EC%8B%A4%ED%96%89+%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%EB%B0%A9%EB%B2%95%EC%9D%84+%EC%84%A4%EB%AA%85%ED%95%A9%EB%8B%88%EB%8B%A4.\u0026amp;theme=844aa417a8c7db35f7c557a9\u0026amp;signature=8d7510f7f63f274d87cd8c0c88319e8db392138bd39a0876dd75871a3b966888\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/detection-scenario-platform/rAg795ZJfnskMRJZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Detection Scenario Platform\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1F59E0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://dsp.xdr.ooo/ko/execution-modes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ko/execution-modes.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://dsp.xdr.ooo/ko/execution-modes\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://dsp.xdr.ooo/execution-modes\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://dsp.xdr.ooo/execution-modes\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://dsp.xdr.ooo/#organization\",\"name\":\"Detection Scenario Platform\",\"url\":\"https://dsp.xdr.ooo\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/detection-scenario-platform/KhFDooDRGH2V_z_w/logo/light.svg?fit=max\u0026auto=format\u0026n=KhFDooDRGH2V_z_w\u0026q=85\u0026s=2c2ca56379f9da68a23fbed6356666b0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://dsp.xdr.ooo#website\",\"name\":\"Detection Scenario Platform\",\"url\":\"https://dsp.xdr.ooo\",\"publisher\":{\"@id\":\"https://dsp.xdr.ooo/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://dsp.xdr.ooo/ko/execution-modes#webpage\",\"url\":\"https://dsp.xdr.ooo/ko/execution-modes\",\"name\":\"실행 모드\",\"description\":\"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\",\"dateModified\":\"2026-09-28T08:16:15.426Z\",\"isPartOf\":{\"@id\":\"https://dsp.xdr.ooo#website\"},\"breadcrumb\":{\"@id\":\"https://dsp.xdr.ooo/ko/execution-modes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://dsp.xdr.ooo/ko/execution-modes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"설치 및 운영\",\"item\":\"https://dsp.xdr.ooo/ko/installation\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"실행 모드\",\"item\":\"https://dsp.xdr.ooo/ko/execution-modes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://dsp.xdr.ooo/ko/execution-modes#article\",\"headline\":\"실행 모드\",\"name\":\"실행 모드\",\"description\":\"DSP를 local 또는 검증된 Webshell 실행 방식으로 사용하는 방법을 설명합니다.\",\"url\":\"https://dsp.xdr.ooo/ko/execution-modes\",\"mainEntityOfPage\":{\"@id\":\"https://dsp.xdr.ooo/ko/execution-modes#webpage\"},\"dateModified\":\"2026-09-28T08:16:15.426Z\",\"publisher\":{\"@id\":\"https://dsp.xdr.ooo/#organization\"},\"isPartOf\":{\"@id\":\"https://dsp.xdr.ooo#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Detection Scenario Platform\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Detection Scenario Platform","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/execution-modes"}]},{"language":"ko","groups":[{"group":"시작하기","icon":"rocket","pages":[{"title":"Detection Scenario Platform","href":"/ko"},{"title":"빠른 시작","href":"/ko/quickstart"}]},{"group":"POC 가이드","icon":"shield-check","pages":[{"title":"고객 POC 진행 절차","href":"/ko/poc-program"},{"title":"시나리오 범위","href":"/ko/scenarios"},{"title":"XDR Correlation Demo","href":"/ko/xdr-correlation-demo"},{"title":"Report \u0026 Evidence","href":"/ko/reports-and-evidence"}]},{"group":"설치 및 운영","icon":"terminal","pages":[{"title":"설치","href":"/ko/installation"},{"title":"설정 및 프로필","description":"XDR/NDR POC의 대상 범위, 실행 방식, 실행 범위 프로필을 설정합니다.","href":"/ko/configuration"},{"title":"실행 모드","href":"/ko/execution-modes"},{"title":"안전 수칙 및 제한","description":"DSP를 승인된 POC 범위에서만 사용하고 대상 범위와 실행 제한을 확인합니다.","href":"/ko/safety-and-guardrails"},{"title":"문제 해결","href":"/ko/troubleshooting"}]},{"group":"참조","icon":"book","pages":[{"title":"CLI Reference","href":"/ko/cli-reference"},{"title":"Validation 상태","href":"/ko/validation-status"},{"title":"Architecture","href":"/ko/architecture"},{"title":"Release Notes","href":"/ko/release-notes"}]}]}]},"basePath":"","title":"실행 모드 - Detection Scenario Platform","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}