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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CIMplant — CIM 또는 WMI를 사용하여 원격 시스템을 쿼리하는 WMImplant의 C# 포트 | Kitploit
도구/GitHubGitHub/redsiege/cimplant
Lateral MovementInformation GatheringPost-ExploitationPenetration TestingCommand and ControlRed TeamingRemote Access Tool
GitHubredsiege/cimplant

CIMplant

CIM 또는 WMI를 사용하여 원격 시스템을 쿼리하는 WMImplant의 C# 포트

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CIMplant

WMImplant의 C# 포트로, CIM 또는 WMI를 사용하여 원격 시스템을 쿼리합니다. 제공된 자격 증명이나 현재 사용자 세션을 사용할 수 있습니다.

참고: 일부 명령은 PowerShell을 WMI와 함께 사용하며, --show-commands 명령에서 **로 표시됩니다.

소개

CIMplant는 @christruncer의 WMImplant를 C#으로 재작성하고 확장한 것입니다. 이를 통해 원격 시스템에 대한 데이터 수집, 명령 실행, 데이터 유출 등을 수행할 수 있습니다. 이 도구는 WMI(Windows Management Instrumentation) 또는 CIM(Common Interface Model) - 더 정확히는 MI(Windows Management Infrastructure) - 을 사용하여 연결할 수 있습니다. CIMplant는 대상 시스템에 대한 로컬 관리자 권한이 필요합니다.

설정:

Releases 아래에 있는 빌드된 버전을 사용하는 것이 가장 쉬울 수 있습니다. 단, Debug 모드로 컴파일되었습니다. 직접 솔루션을 빌드하려면 아래 단계를 따르세요.

  1. CIMplant.sln을 Visual Studio에 로드합니다.
  2. 수정할 내용이 없으면 상단의 Build로 이동한 다음 Build Solution을 선택합니다.

사용법

root@kitploit:~
CIMplant.exe --help
CIMplant.exe --show-commands
CIMplant.exe --show-examples
CIMplant.exe -s [remote IP address] -c cat -f c:\users\user\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c cat -f c:\users\test\desktop\file.txt
CIMplant.exe -s [remote IP address] -u [username] -d [domain] -p [password] -c command_exec --execute "dir c:\\"

기능

파일 작업:

root@kitploit:~
cat                          -  파일 내용을 읽습니다.
copy                         -  파일을 한 위치에서 다른 위치로 복사합니다.
download**                   -  대상 시스템에서 파일을 다운로드합니다.
ls                           -  특정 디렉터리의 파일/디렉터리 목록을 표시합니다.
search                       -  사용자 파일을 검색합니다.
upload**                     -  대상 시스템에 파일을 업로드합니다.

측면 이동 지원

root@kitploit:~
command_exec**               -  명령줄 명령을 실행하고 출력을 받습니다. nops 플래그를 사용하면 PowerShell을 비활성화합니다.
disable_wdigest              -  UseLogonCredential의 레지스트리 값을 0으로 설정합니다.
enable_wdigest               -  UseLogonCredential 레지스트리 값을 추가합니다.
disable_winrm**              -  대상 시스템에서 WinRM을 비활성화합니다.
enable_winrm**               -  대상 시스템에서 WinRM을 활성화합니다.
reg_mod                      -  대상 시스템의 레지스트리를 수정합니다.
reg_create                   -  대상 시스템에 레지스트리 값을 생성합니다.
reg_delete                   -  대상 시스템의 레지스트리를 삭제합니다.
remote_posh**                -  원격 시스템에서 PowerShell 스크립트를 실행하고 출력을 받습니다.
sched_job                    -  Win32_ScheduledJobs가 오래된 API에 접근하기 때문에 구현되지 않았습니다.
service_mod                  -  시스템 서비스를 생성, 삭제 또는 수정합니다.

프로세스 작업

root@kitploit:~
process_kill                 -  대상 시스템에서 프로세스 이름 또는 ID로 프로세스를 종료합니다.
process_start                -  대상 시스템에서 프로세스를 시작합니다.
ps                           -  프로세스 목록을 표시합니다.

시스템 작업

root@kitploit:~
active_users                 -  대상 시스템에서 활성 프로세스를 가진 도메인 사용자를 나열합니다.
basic_info                   -  대상 시스템에 대한 기본 메타데이터를 열거하는 데 사용됩니다.
drive_list                   -  로컬 및 네트워크 드라이브를 나열합니다.
ifconfig                     -  활성 네트워크 연결이 있는 NIC의 IP 정보를 가져옵니다.
installed_programs           -  대상 시스템에 설치된 프로그램 목록을 가져옵니다.
logoff                       -  대상 시스템에서 사용자를 로그오프합니다.
reboot (or restart)          -  대상 시스템을 재부팅합니다.
power_off (or shutdown)      -  대상 시스템의 전원을 끕니다.
vacant_system                -  사용자가 시스템에서 자리를 비웠는지 확인합니다.
edr_query                    -  로컬 또는 원격 시스템에서 EDR 공급업체를 쿼리합니다.

로그 작업

root@kitploit:~
logon_events                 -  시스템에 로그온한 사용자를 식별합니다.

* 모든 PowerShell은 --nops 플래그를 사용하여 비활성화할 수 있지만, 일부 명령은 실행되지 않습니다 (upload/download, enable/disable WinRM).
** PowerShell 사용을 나타냅니다 (PowerShell Runspace 사용 또는 Win32_Process::Create 메서드를 통해).

몇 가지 예제 사용 명령

image

Cobalt Strike Execute-Assembly

저는 execute-assembly를 통해 사용할 수 있도록 CIMplant를 코딩하고 싶었습니다. 따라서 모든 것이 하나의 실행 파일로 패키징되어 반사적으로 로드됩니다. 모든 명령을 beacon을 통해 문제없이 실행할 수 있을 것입니다. 즐기세요!

image

중요한 파일

  1. Program.cs

이것은 작업의 두뇌, 프로그램의 드라이버입니다.

  1. Connector.cs

여기서 초기 CIM/WMI 연결이 이루어지고 애플리케이션의 나머지 부분으로 전달됩니다.

  1. ExecuteWMI.cs

모든 WMI 명령에 대한 함수 코드

  1. ExecuteCIM.cs

모든 CIM (MI) 명령에 대한 함수 코드

탐지

물론, 가장 먼저 주의해야 할 것은 초기 WMI 또는 CIM 연결입니다. 일반적으로 WMI는 DCOM을 통신 프로토콜로 사용하는 반면, CIM은 WSMan(또는 WinRM)을 사용합니다. 이는 CIM에서 수정할 수 있으며 CIMplant에서도 수정되지만, 지금은 기본값에 대해서만 알아보겠습니다. DCOM의 경우 초기 TCP 연결은 포트 135를 통해 이루어집니다. 그러면 연결 및 수신 시스템은 새롭고 매우 높은 포트를 사용하기로 결정하므로 이는 크게 달라집니다. WSMan의 경우 초기 TCP 연결은 포트 5985를 통해 이루어집니다.

다음으로, 이벤트 뷰어에서 Microsoft-Windows-WMI-Activity/Trace 이벤트 로그를 확인해야 합니다. 이벤트 ID 11을 검색하고 가능하면 IsLocal 속성으로 필터링하세요. 또한 Microsoft-Windows-WinRM/Analytic 로그 내에서 이벤트 ID 1295를 찾을 수도 있습니다.

마지막으로, Win32_OSRecoveryConfiguration 클래스의 DebugFilePath 속성에 대한 수정 사항을 찾아야 합니다. 탐지에 대한 더 자세한 정보는 블로그 시리즈 1부에서 확인할 수 있습니다: CIMplant Part 1: Detection of a C# Implementation of WMImplant

도구 다운로드