Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ics-forensics-tools — 산업용 PLC 메타데이터 및 프로젝트 파일을 분석하기 위한 오픈소스 포렌식 프레임워크입니다. ICS 환경에서 의심스러운 아티팩트를 스캔하여 사고 대응 및 수동 조사를 지원합니다. | Kitploit
도구/GitHubGitHub/microsoft/ics-forensics-tools
Vulnerability AnalysisSCADA/ICS SecurityForensicsDigital ForensicsIncident Response
GitHubmicrosoft/ics-forensics-tools

ics-forensics-tools

산업용 PLC 메타데이터 및 프로젝트 파일을 분석하기 위한 오픈소스 포렌식 프레임워크입니다. ICS 환경에서 의심스러운 아티팩트를 스캔하여 사고 대응 및 수동 조사를 지원합니다.

저장소 보기
37143571년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ICSpector: Microsoft ICS 포렌식 프레임워크

Microsoft ICS 포렌식 도구 프레임워크는 산업용 PLC 메타데이터 및 프로젝트 파일 분석을 가능하게 하는 오픈 소스 포렌식 프레임워크입니다.
이 프레임워크는 조사관이 PLC를 스캔하고 ICS 환경 내에서 의심스러운 아티팩트를 식별할 수 있는 편리한 방법을 제공하며, 이를 수동 확인, 자동 모니터링 작업 또는 손상된 장치를 탐지하기 위한 사고 대응 작업에 사용할 수 있습니다.
오픈 소스 도구이므로 ICS 포렌식 도구를 통해 조사관은 출력 결과를 검토하고 특정 요구 사항에 맞게 사용자 지정할 수 있습니다.

시작하기

이 지침은 개발 및 테스트 목적으로 로컬 머신에서 프로젝트를 복사하여 실행할 수 있도록 안내합니다.

root@kitploit:~
git clone https://github.com/microsoft/ics-forensics-tools.git

사전 요구 사항

  • Python >= 3.9 설치: https://www.python.org/downloads
  • Microsoft Visual C++ 14.0 설치. "Build Tools for Visual Studio"에서 다운로드: https://visualstudio.microsoft.com/downloads/

설치

  • Python 요구 사항 설치

    root@kitploit:~
    pip install -r requirements.txt
    

사용법

일반 애플리케이션 인수:

인수설명필수 / 선택
-h, --help도움말 메시지를 표시하고 종료합니다선택
-s, --save-config향후 사용을 위해 구성 파일 저장선택
-c, --config구성 파일 경로, 기본값은 config.json선택
-o, --output-dir생성된 파일을 출력할 디렉터리, 기본값은 output선택
-v, --verbose콘솔뿐만 아니라 파일에도 로그 출력선택
-p, --multiprocess플러그인/분석기 수에 따라 멀티프로세스 모드로 실행선택

특정 플러그인 인수:

인수설명필수 / 선택
-h, --help도움말 메시지를 표시하고 종료합니다선택
--ip주소 파일 경로, CIDR 또는 IP 주소 csv (ip 열 필수).
각 IP에 대한 추가 정보(사용자 이름, 비밀번호 등)를 위해 열을 추가할 수 있습니다.
필수
--port포트 번호선택
--transporttcp/udp선택
--analyzer실행할 분석기 이름선택

명령줄에서 실행 예제

root@kitploit:~
 python driver.py -s -v PluginName --ip ips.csv
 python driver.py -s -v PluginName --ip ips.csv --analyzer AnalyzerName
 python driver.py -s -v -c config.json --multiprocess

라이브러리로 가져오기 예제

root@kitploit:~
from forensic.client.forensic_client import ForensicClient
from forensic.interfaces.plugin import PluginConfig
forensic = ForensicClient()
plugin = PluginConfig.from_json({
    "name": "PluginName",
    "port": 123,
    "transport": "tcp",
    "addresses": [{"ip": "192.168.1.0/24"}, {"ip": "10.10.10.10"}],
    "parameters": {
    },
    "analyzers": []
})
forensic.scan([plugin])

아키텍처

플러그인 추가

로컬에서 개발할 때는 src 폴더를 'Sources root'로 표시해야 합니다.

  • plugins 폴더 아래에 플러그인 이름으로 새 디렉터리를 만듭니다.
  • 플러그인 이름으로 새 Python 파일을 만듭니다.
  • 다음 템플릿을 사용하여 플러그인을 작성하고 'General'을 플러그인 이름으로 바꿉니다.
root@kitploit:~
from pathlib import Path
from forensic.interfaces.plugin import PluginInterface, PluginConfig, PluginCLI
from forensic.common.constants.constants import Transport


class GeneralCLI(PluginCLI):
    def __init__(self, folder_name):
        super().__init__(folder_name)
        self.name = "General"
        self.description = "General Plugin Description"
        self.port = 123
        self.transport = Transport.TCP

    def flags(self, parser):
        self.base_flags(parser, self.port, self.transport)
        parser.add_argument('--general', help='General additional argument', metavar="")


class General(PluginInterface):
    def __init__(self, config: PluginConfig, output_dir: Path, verbose: bool):
        super().__init__(config, output_dir, verbose)

    def connect(self, address):
        self.logger.info(f"{self.config.name} connect")

    def export(self, extracted):
        self.logger.info(f"{self.config.name} export")


  • plugins 폴더 아래의 __init__.py 파일에서 새 플러그인을 임포트해야 합니다.
  • PluginInterface를 상속받은 클래스에는 'config' 매개변수가 있으며, 이를 사용하여 PluginConfig 객체에서 사용 가능한 모든 데이터(플러그인 이름, 주소, 포트, 전송, 매개변수)에 액세스할 수 있습니다.
    두 가지 필수 함수(connect, export)가 있습니다.
    • connect 함수는 단일 IP 주소를 받아 장치에서 관련 정보를 추출하고 반환합니다.
    • export 함수는 모든 장치에서 추출된 정보를 받아 파일로 내보낼 수 있습니다.
  • PluginCLI를 상속받은 클래스에서는 init 함수에서 이 플러그인과 관련된 기본 정보를 지정해야 합니다.
    하나의 필수 함수(flags)가 있으며, 여기서 base_flags를 호출해야 하고, 원하는 추가 플래그를 추가할 수 있습니다.

분석기 추가

  • analyzers 폴더 아래에 분석기와 관련된 플러그인 이름으로 새 디렉터리를 만듭니다.
  • 분석기 이름으로 새 Python 파일을 만듭니다.
  • 다음 템플릿을 사용하여 플러그인을 작성하고 'General'을 플러그인 이름으로 바꿉니다.
root@kitploit:~
from pathlib import Path
from forensic.interfaces.analyzer import AnalyzerInterface, AnalyzerConfig


class General(AnalyzerInterface):
    def __init__(self, config: AnalyzerConfig, output_dir: Path, verbose: bool):
        super().__init__(config, output_dir, verbose)
        self.plugin_name = 'General'
        self.create_output_dir(self.plugin_name)

    def analyze(self):
      pass

  • analyzers 폴더 아래의 __init__.py 파일에서 새 분석기를 임포트해야 합니다.

리소스 및 기술 데이터 & 솔루션:

Microsoft Defender for IoT는 에이전트 없는 네트워크 계층 보안 솔루션으로, 조직이 온프레미스 및 Azure 연결 환경에서 IoT/OT 및 산업 제어 시스템(ICS) 장치의 자산을 지속적으로 모니터링 및 검색하고, 위협을 탐지하며, 취약성을 관리할 수 있도록 합니다.

MSRC 블로그의 Section 52
도구에 관한 ICS 강연
Section 52 - 악성 래더 로직 조사 | Microsoft Defender for IoT 웨비나 - YouTube

기여

이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 기여를 사용할 권리가 있으며 실제로 사용 권한을 부여한다는 내용의 Contributor License Agreement(CLA)에 동의해야 합니다. 자세한 내용은 https://cla.opensource.microsoft.com을 방문하세요.

풀 리퀘스트를 제출하면 CLA 봇이 자동으로 CLA 제공이 필요한지 확인하고 적절히 PR을 꾸밉니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하는 모든 리포지토리에서 한 번만 수행하면 됩니다.

이 프로젝트는 Microsoft 오픈 소스 사용 규정을 채택했습니다. 자세한 내용은 사용 규정 FAQ를 참조하거나 추가 질문이나 의견이 있으면 [email protected]으로 문의하세요.

상표

이 프로젝트에는 프로젝트, 제품 또는 서비스의 상표나 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인된 사용은 Microsoft의 상표 및 브랜드 지침을 따라야 합니다. 이 프로젝트의 수정된 버전에서 Microsoft 상표 또는 로고를 사용하는 경우 혼동을 일으키거나 Microsoft의 후원을 암시해서는 안 됩니다. 타사 상표 또는 로고의 사용은 해당 타사의 정책을 따릅니다.

법적 고지

Copyright (c) 2018 Microsoft Corporation. All rights reserved.

본 소프트웨어는 '있는 그대로' 제공되며, 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 어떠한 명시적 또는 묵시적 보증도 제공되지 않습니다. 어떠한 경우에도 저작자 또는 저작권 보유자는 계약, 불법 행위 또는 기타에 관계없이 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.

도구 다운로드