MITRE Caldera

MITRE-Caldera 문서 정리-용어정리(1)

whh1323 2021. 1. 26. 09:37

- Agent

Agent는 설치가 필요하지 않는 간단한 소프트웨어 프로그램으로 Caldera에서 명령을 받는 역할을 한다(C2). Agent는 명령어를 실행하고 결과값을 카델라 서버로 전송해준다.

카델라에 포함되어있는 agents는 다음과 같다.

Sandcat : 카델라에 기본적으로 적용되어져 있는 agent, Go언어로 되어져있는 agent HTTP를 통하여 통신한다.

Manx : 리버스셀 역할을 하는 agent TCP 통신을 사용한다.

Ragdoll : Python 역할을 하는 agent HTML 통신을 한다.

 

Agent 등록 방법(2.9.0 기준)

1.     GUI창에서 더보기 -> Campaigns -> agents -> ‘click here to deploy an agent’를 클릭한다.

2.     Choose an agent에서 원하는 agent를 선택한다. 그리고 현재 칼리에서 진행하므로 Linux를 선택한 후에 아래 적혀있는 명령어를 커맨더 창에 실행시킨다.

 

3.     그리고 다시 gui에 들어가게 되면 agent가 생성된 것을 확인할 수 있다.

 

- Group

그룹은 동시에 여러 agent에서 작업을 실행할 수 있도록 적용되어져 있는 속성이다.

그룹은 비콘을 생성하고 명령에서 정의할 수 있다. 명령에 정의가 없다면 red 그룹에 자동적으로 속해져 있다.

 

 

- Ability

플러그인들에 있는 기술들은 ATT&CK 기술을 기반으로 되어져 있다.

파일 형식은 YML 으로 카델라에 구성되어져 있고 시작할 때 마다 카델라에 로드된다.

기본적으로 내장되어 있는 도구 중 Stockpile 플러그인은 (plugins/stockpile/data/abilities) 저장되어져 있다.

샘플 :

 

 

특징 :

1. 각각의 기술마다 랜덤한 UUID id를 가지고 있다.

2. 각각의 기술마다 name, description, ATT&CK tatic, 그리고 technique 정보를 담고있다.

3. 각각의 기술마다 platform 리스트를 필요로 하고, OS시스템을 지원하는 것을 하나의 블록으로 구분되어져 있다. 기술들은 darwin, linux, windows 3개의 운영체제로 나누어져 있다.

4. 기술들은 GUI환경에서 ‘add ability’버튼으로 좀 더 상세하게 다룰 수 있다.

 

각각의 platform 블록은 아래와 같은 기능을 가지고 있다.

1.     Command (요구사항)

2.     Payload (옵션)

3.     Cleanup (옵션)

4.     Parsers (옵션)

5.     Requirements (옵션)

 

1. Command: 명령어는 1줄부터 여러 줄로 구성될 수 있으며 칼데라 사용자가 실행하고 싶은 기술을 작성하면 된다. 명령어는 선택적으로 변수로 구성되어 질 수 있으며, #{variables}로써 구분하면 된다. 예를들어 file변수를 명령어에 사용한다면, #{files} 처럼 사용하면 된다. 변수명의 뜻은 카델라 사용자가 직접 선언하며 카델라에 채워 넣을 수 있다. 카델라가 가지고 있는 기본적인 변수는 다음과 같다

#{server} : 칼데라 자체 서버인 FQDN(SSL 인증서 도메인)을 참조한다. 모든 agent가 카델라의 위치를 다르게 설정할 수 있기 때문에, #{server}변수는 카델라 사용자가 서버의 올바른 위치에 설정할 수 있도록 해준다.

#{group} : agent를 구분지어주게 한다.

#{paw} : agent의 고유 식별자(또는 폴 프린트)이다.

#{location} : 클라이언트 파일시스템의 agent지역을 뜻한다.

#{exe_name} : agent가 실행할 수 있는 이름을 뜻한다.

2. Payload: 페이로드는 쉼표로 구분되어 실행된다. /plugins/sandcat/hook.py는 특수 페이로드를 처리하는 방법을 알 수 있다. xor인코딩하여 백신우회를 이용하려면 /app/utility/payload_encoder.py를 실행하여 인코딩 된 페이로드를 만든다. 페이로드는 또한 패커를 통해 실행되어 호스트 시스템에서 탐지되지 않도록 더 복잡하게 만들 수 있다. 이렇게 하려면 파일 이름 앞에 패커 모듈 이름과 콜론 “:”을 입력한다. 현재 지원되는 패커는 UPX만 추가되지만 패커를 추가할 수는 있다. – upx : aa.exe

3. Cleanup : 명령 결과를 되돌리는 명령어다. 명령을 한 후에 파일을 생성하는 경우 이 명령어를 이용하여 파일을 제거할 수 있다. Cleanup명령어는 생성된 역 순으로 실행된다.

4. Parser : 명령의 출력을 새로운 fact로 구문 분석할 수 있는 모듈의 목록이다.

5. Requirements : 연결이 되고 있을 때 필요한 단계를 뜻한다.

댓글수1