
C#으로 작성된 사후 침투 도구로, CIM 또는 WMI를 사용하여 원격 시스템을 쿼리합니다.
SharpStrike는 C#으로 작성된 사후 침투 도구로, CIM 또는 WMI를 사용하여 원격 시스템을 쿼리합니다. 제공된 자격 증명 또는 현재 사용자 세션을 사용할 수 있습니다.
참고: 일부 명령은 PowerShell과 WMI를 조합하여 사용하며, --show-commands 명령에서 **로 표시됩니다.
SharpStrike는 @Matt_Grandy_의 CIMplant와 @christruncer의 WMImplant를 C#으로 다시 작성하고 확장한 것입니다.
SharpStrike를 사용하면 원격 시스템의 데이터를 수집하고, 명령을 실행하고, 데이터를 추출하는 등의 작업을 수행할 수 있습니다. 이 도구는 Windows Management Instrumentation(WMI), Common Interface Model(CIM) 또는 더 정확하게는 Windows Management Infrastructure(MI)를 사용하여 연결할 수 있습니다. CIMplant는 대상 시스템에 대한 로컬 관리자 권한이 필요합니다.
Releases 아래의 빌드된 버전을 사용하는 것이 가장 쉬울 것입니다. 단, Debug 모드로 컴파일되어 있습니다. 직접 솔루션을 빌드하려면 아래 단계를 따르십시오.
빌드 시 SharpStrike의 두 가지 버전(GUI(WinForms) 및 콘솔 애플리케이션)이 생성됩니다. 각 버전은 동일한 기능을 구현합니다.
Console Version:
SharpStrike.exe --help
SharpStrike.exe --show-commands
SharpStrike.exe --show-examples
SharpStrike.exe -c ls_domain_admins
SharpStrike.exe -c ls_domain_users_list
SharpStrike.exe -c cat -f "c:\users\user\desktop\file.txt" -s [remote IP address]
SharpStrike.exe -c cat -f "c:\users\user\desktop\file.txt" -s [remote IP address] -u [username] -d [domain] -p [password] -c
SharpStrike.exe -c command_exec -e "quser" -s [remote IP address] -u [username] -d [domain] -p [password]
GUI version:
show-commands
show-examples
ls_domain_admins
ls_domain_users_list
cat -f "c:\users\user\desktop\file.txt" -s [remote IP address]
cat -f "c:\users\user\desktop\file.txt" -s [remote IP address] -u [username] -d [domain] -p [password]
command_exec -e "quser" [remote IP address] -u [username] -d [domain] -p [password]
cat - 파일의 내용을 읽습니다.
copy - 파일을 한 위치에서 다른 위치로 복사합니다.
download** - 대상 컴퓨터에서 파일을 다운로드합니다.
ls - 특정 디렉터리의 파일/디렉터리 목록을 표시합니다.
search - 사용자에서 파일을 검색합니다.
upload** - 대상 컴퓨터에 파일을 업로드합니다.
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 - 시스템 서비스를 생성, 삭제 또는 수정합니다.
ls_domain_users*** - 도메인 사용자 목록
ls_domain_users_list*** - 도메인 사용자 sAMAccountName 목록
ls_domain_users_email*** - 도메인 사용자 이메일 주소 목록
ls_domain_groups*** - 도메인 사용자 그룹 목록
ls_domain_admins*** - 도메인 관리자 사용자 목록
ls_user_groups*** - 도메인 사용자와 연결된 그룹 목록
ls_computers*** - 현재 도메인의 컴퓨터 목록
process_kill - 대상 컴퓨터에서 이름 또는 프로세스 ID로 프로세스를 종료합니다.
process_start - 대상 컴퓨터에서 프로세스를 시작합니다.
ps - 프로세스 목록
active_users - 대상 시스템에서 활성 프로세스가 있는 도메인 사용자 목록
basic_info - 대상 시스템의 기본 메타데이터를 열거하는 데 사용됩니다.
drive_list - 로컬 및 네트워크 드라이브 목록
share_list - 네트워크 공유 목록
ifconfig - 활성 네트워크 연결이 있는 NIC의 IP 정보를 받습니다.
installed_programs - 대상 컴퓨터에 설치된 프로그램 목록을 받습니다.
logoff - 대상 컴퓨터에서 사용자를 로그오프합니다.
reboot (or restart) - 대상 컴퓨터를 재부팅합니다.
power_off (or shutdown) - 대상 컴퓨터의 전원을 끕니다.
vacant_system - 사용자가 시스템에서 자리 비움 여부를 확인합니다.
edr_query - 로컬 또는 원격 시스템에서 EDR 공급업체를 쿼리합니다.
logon_events - 시스템에 로그온한 사용자를 식별합니다.
* 모든 PowerShell은 --nops 플래그를 사용하여 비활성화할 수 있지만 일부 명령은 실행되지 않습니다(업로드/다운로드, WinRM 활성화/비활성화).
** PowerShell 사용을 나타냅니다(PowerShell Runspace 사용 또는 Win32_Process::Create 메서드를 통해).
*** LDAP 사용을 나타냅니다 - "root\directory\ldap" 네임스페이스.
콘솔 버전:
GUI 버전:

SharpStrike는 세 가지 주요 프로젝트로 구성됩니다.
초기 CIM/WMI 연결이 설정되고 애플리케이션의 나머지 부분으로 전달되는 곳입니다.
WMI 명령에 대한 모든 함수 코드
CIM(MI) 명령에 대한 모든 함수 코드
CIMplant 파트 1: WMImplant의 C# 구현 탐지