Purple Sharp
2021, Sep 17  
데이터분석팀

Purple Sharp

2021.09.01 ~ 2021.09.07

이번 게시글에서는 오픈소스 공격 시뮬레이션 툴인 Purple Sharp에 대해 소개하겠습니다.

Purple Sharp 은 2021 Black Hat USA와 DEF CON 29에서 소개되었습니다.

C#으로 쓰여졌으며, AD환경 내에서 사용할 수 있는 여러 techniques 들을 지원합니다.

MITRE ATT&CK Frame work를 사용하며, Purple Sharp 문서에 의하면 현재 37개의 techniques을 지원하고 있다고 합니다.

coverage

1. Purple Sharp

구조

Purple Sharp은 시뮬레이션을 위해 3개의 개별 모듈을 실행하는 단일 .NET 어셈블리로 구성되어 있습니다.

실행시에는 파라미터에 따라 동작 방식이 나뉩니다.

image-20210909112239859

  • Orchestrator

    Purple Sharp 을 실행시키는 사용자 PC에서 실행됩니다. simulation target PC 에 나머지 두개의 모듈을 업로드하고, simulation을 시작시킵니다.

  • Scout

    simulation target PC에서 실행됩니다. Orchestrator 에게 지시를 받으면 simulator 를 실행시킵니다. 또한 적절한 프로세스를 찾고, 로그온 유저를 식별하기 위해 정찰을 수행합니다.

  • Simulator

    simulation target PC에서 실행됩니다. 실제 simulation 행위를 하는 모듈입니다.

다음 그림은 세개의 모듈의 실행 흐름을 나타낸 것입니다.

image-20210909092958132

Communication

Remote host에서의 simulation을 위해 Orchestrator가 Target PC의 모듈들(Scout, Simulator)과 통신하는 프로토콜에 대해 소개 하겠습니다.

image-20210909092958132

  • SMB

    Scout과 Simulator를 업로드 하는데 사용됩니다. 또한, 시뮬레이션이 종료되면 생성된 모든 파일을 삭제하는 과정에서도 사용됩니다.

  • WMI and RPC

    Orchestrator가 Scout을 실행시키는데 사용됩니다.

    참고로, Scout 실행에 Win32_Process 클래스의 create 메서드를 사용하여 Scout이 wmipresve.exe 의 자식 프로세스로 실행되게 됩니다.

  • Named Pipes

    세개의 모듈이(Orchestrator / Scout / Simulator) simulation에 필요한 정보를 교환할 때 사용 됩니다.

2. Simulation PlayBooks

Purple Sharp이 simulation 을 하기위해 옵션을 지정하는 방식에는 두 가지가 있습니다.

첫 번째는 파라미터로 모든 옵션을 지정해서 넘겨주는 방식입니다.

C:\> PurpleSharp.exe /rhost win10-1 /ruser psharp /d hacklabz /t T1059.001,T1059.002,T1059.003 /pbsleep 30

각 파라미터의 의미는 https://www.purplesharp.com/en/latest/using-purplesharp/cheatsheet.html 에서 확인할 수 있습니다.

하지만 파라미터로 옵션을 지정해주는 방식은 Purple sharp이 지원하는 모든 기능을 사용할 수 없으며, 현재는 개발이 중단되었다고 합니다.

두 번째는 JSON 형식인 Simulation PlayBooks 파일로 옵션을 지정하는 방식입니다.

위에서 언급했듯이, 파라미터를 사용한 옵션 지정은 Purple Sharp 사용에 제약이 있으므로 Simulation PlayBooks을 사용하는 것이 권장됩니다.

Simulation Playbooks는 lateral movement target PC 수 지정, technique의 다양한 procedures 중 특정 procedure를 지정하는 등 technique 수행에 있어 세부적인 옵션을 설정할 수 있습니다.

다음은 Purple Sharp Documentation에 나와있는 JSON simulation Playbooks 예시입니다.

{
  "username": "psharp",
  "domain": "domain",
  "dc": "192.168.1.2",
  "sleep": 1,
  "playbooks": [
    {
      "name": "Adversary Simulation Playbook 1",
      "host": "win10-1",
      "scoutfpath": "C:\\Installer.exe",
      "simrpath": "AppData\\Local\\Temp\\tmp12345.exe",
      "pbsleep": 30,
      "tasks": [
        {
          "technique": "T1059.001"
        },
        {
          "technique": "T1059.005"
        },
        {
          "technique": "T1053.005"
        }
      ]
    },
    {
      "name": "Adversary Simulation Playbook 2",
      "host": "random",
      "scoutfpath": "C:\\Windows\\PSEXSVC.exe",
      "simrpath": "Downloads\\invoice1.exe",
      "tsleep": 60,
      "tasks": [
        {
          "technique": "T1558.003"
        }
      ]
    },
    {
      "name": "Adversary Simulation Playbook 3",
      "host": "random",
      "scoutfpath": "C:\\Windows\\Service.exe",
      "simrpath": "Downloads\\Firefox_Installer.exe",
      "tasks": [
        {
          "technique": "T1003.001"
        },
        {
          "technique": "T1021.002"
        },
        {
          "technique": "T1021.006"
        }
      ]
    }
  ]
}

Purple Sharp은 apt 그룹의 Purple Sharp Simulation Playbooks 를 생성해주는 기능을 제공하고 있습니다. /navigator 파라미터로 ATT&CK Navigator layer file 을 넘겨주게 되면, Purple Sharp 이 지원하는 techniques 내에서 simulation playbooks 을 생성해 줍니다.

PurpleSharp.exe /navigator import APT1.json

3. 특징

  • 단독 실행 파일로 실행 가능합니다. Simulation Target PC에 별도의 설정을 할 필요가 없습니다.

  • ppid 스푸핑을 사용하여 simulator가 explorer.exe 의 자식 프로세스로 실행되게 합니다. 이로 인해 실제 user execution 연출할 수 있습니다.

  • simulation target 에 대한 정보를 옵션으로 지정하지 않아도, Domain Contoller 에 LDAP 쿼리를 보내 적절한 target 을 random으로 선별하여 simulation을 실행해 줍니다.

  • 같은 Technique내에서 다양한 procedures 를 지원합니다.image-20210909111956913

    예시로 Command and Scripting Interpreter: PowerShell technique (T1059.001)의 실제 코드부분을 보면, 실행에 있어 cmdline 와 .NET Library 두 가지 방식을 지원함을 확인할 수 있습니다.

  • AD 환경을 지원합니다. DC와 통신하며 techinique을 수행하는데 필요한 정보들을 수집할 수 있습니다.

4. 마치며

본 글에서는 Purple Sharp과 사용법에 대해 알아보았습니다. 직접 simulation을 해보며 느꼈던 사용후기를 끝으로 글을 마치겠습니다.

  • 세부옵션 지정이 불가능합니다.

e.g ) execution 관련 technique의 command 지정 불가, 스케줄러 설치 시 name 지정 불가 등

  • 릴리즈된 툴과 최신 발표 영상에서 사용한 툴의 버전이 맞지 않습니다. 현재 릴리즈된 툴의 기능이 더욱 제한적입니다.

  • Simulation Playbook 의 각 필드 명을 설명해주는 문서가 존재 하지 않아 사용이 어렵습니다