DanderSpritz Lab
목적
DanderSpritz Lab의 목표는 연구자와 방어자가 DanderSpritz - The Equation Group의 사후 침투 도구 세트와 Windows Server 2008 도메인 및 클라이언트를 대상으로 완전히 작동하는 버전을 신속하게 구축할 수 있도록 하는 것입니다. Windows 대상에는 DanderSpritz와 그 기능을 조사하는 동안 유용하다고 생각한 몇 가지 리버스 엔지니어링 도구가 포함되어 있습니다.
DanderSpritz Lab에 대한 자세한 내용은 여기서 읽어보세요: https://medium.com/@francisck/introducing-danderspritz-lab-461912313d7c
DanderSpritz 기능과 도구를 문서화하기 위해 만든 웹사이트: https://danderspritz.com
참고: 이 실습 환경은 어떤 식으로도 강화되지 않았으며(의도적으로 취약하게 설정됨) 기본 vagrant 자격 증명으로 실행됩니다. 중요하게 생각하는 네트워크에 연결하거나 브리지하지 마십시오.
요구 사항
- 20GB+의 여유 디스크 공간
- 8GB+의 RAM
- 20GB 대역폭 사용량(ISO, 업데이트, 서비스 팩 등 다운로드용)
- Packer v1.2.3 이상
- Vagrant v2.1.1 이상
- Vagrant-Reload 플러그인
- Virtualbox (VMWare Fusion/Workstation은 추후 지원 예정)
DanderSpritz Lab 시작하기
DanderSpritz는 Packer, Vagrant 및 Vagrant-reload 플러그인을 사용하여 처음부터 실습 환경을 설치하고 구성합니다. Packer는 Microsoft에서 직접 Windows ISO를 다운로드하고 연구 목적으로 소프트웨어의 평가판을 설치합니다.
- 이 저장소를 자신의 머신에 클론합니다:
git clone [email protected]:francisck/DanderSpritz_lab.git
- Vagrant-reload 플러그인이 설치되어 있는지 확인합니다:
vagrant plugin install vagrant-reload
- ISO를 다운로드하고 Vagrant 상자를 구축하려면 다음 명령을 실행합니다:
packer build danderspritz_lab.json
- Vagrant 상자가 구축되면 VM을 시작하고 추가 구성을 계속 진행하도록 합니다:
vagrant up
FuzzBunch 프로젝트 생성하기
- Windows 명령 프롬프트(cmd)를 열고 다음을 실행합니다:
D:\
python fb.py
- 기본 대상 주소를 _192.168.40.3_으로 설정합니다.
- 기본 콜백 주소를 _192.168.40.4_로 설정합니다.
- (처음에는) 리디렉션을 사용하지 않습니다.
- 기본 로그 디렉토리를 그대로 둡니다.
- 새 프로젝트를 생성합니다(옵션 0).
- 새 프로젝트의 이름을 지정합니다.
- 기본 로그 디렉토리를 그대로 둡니다.

대상 머신 공격하기
- 다음 명령을 실행하여 EternalBlue를 사용해 머신을 공격합니다:
use eternalblue
- 배달 메커니즘을 제외한 모든 기본 옵션을 선택합니다. 배달 메커니즘으로 "FB"(전통적인 배포)를 사용합니다.
- EternalBlue가 성공하면 danderspritz와 peddlecheap을 구성합니다.
DanderSpritz 구성 및 실행
- 다른 Windows 명령 프롬프트(cmd)를 열고 다음을 실행합니다:
D:\
python configure_lp
- Java가 방화벽을 통과하도록 허용합니다.
- "로그 디렉토리" 옆에 있는
찾아보기를 선택하고 생성한 FuzzBunch 프로젝트의 이름을 선택합니다.

- "go"를 클릭합니다.
PeddleCheap 준비 (임플란트 구성)
- DanderSpritz 콘솔에서 다음 명령을 실행합니다:
pc_prep
- 표준 x64-winnt 레벨 3 sharedlib 페이로드를 선택합니다:
5
- 고급 설정을 선택하지 않습니다.
- 즉시 콜백을 수행하도록 선택합니다.
- 기본 PC ID(0)를 사용합니다.
- "수신 대기하시겠습니까?"에 **"예"**를 선택합니다.
- 수신 포트를 변경하지 않습니다.
- 기본 "콜백" 주소(127.0.0.1)를 그대로 둡니다.
- exe 이름을 변경하지 않습니다.
- 기본 키를 사용합니다(옵션 2).
- PeddleCheap 구성이 유효한지 확인합니다.
- FC(felonycrowbar)로 구성하지 않습니다.
- 구성된 바이너리의 위치를 복사합니다:

DoublePulsar 백도어를 통해 임플란트(peddlecheap) 전달하기:
- 원래 Fuzzbunch 창에서 다음을 입력합니다:
use doublepulsar
- 변수 설정을 묻는 메시지가 표시될 때 "예"를 선택합니다.
- 대상 아키텍처를 제외한 모든 기본 변수 설정을 선택합니다(옵션 1 선택):
1) x64 x64 64-bits
- "RunDLL" 함수를 선택합니다(옵션 2):
2) RunDLL APC를 사용하여 사용자 모드 프로세스에 DLL을 주입합니다.

- 다른 모든 옵션은 기본값으로 두고 플러그인을 실행할지 묻는 메시지가 표시되면 "예"를 선택합니다.
- "Doublepulsar 성공" 메시지가 표시되어야 합니다.
DanderSpritz로 PeddleCheap 임플란트에 연결하기
- DanderSpritz에서 화면 상단의 "PeddleCheap"을 선택합니다.
- 키 드롭다운 메뉴에서 "default" 키를 선택합니다.
- 대상 머신의 주소(192.168.40.3)를 입력합니다.
- "대상에 연결"을 선택합니다.

- Fuzzbunch 프로젝트 이름을 선택합니다.
- DanderSpritz Survey가 완료될 때까지 기다립니다(시간이 꽤 걸림). 도중에 몇 가지 질문에 답해야 합니다.
- 이득을 봅니다!
선한 목적으로 사용하세요!
이 프로젝트의 목적은 보안 연구자가 리버스 엔지니어링 및 테스트를 위해 완전히 기능하는 DanderSpritz 실습 환경을 쉽게 구축하고 구성할 수 있도록 하는 것입니다.
- 이 실습 환경 외부의 어떤 대상에 대해서도 실행하지 마십시오.
- "레드 팀 활동"에 사용하지 마십시오.
- 연구 결과를 커뮤니티에 기여하십시오.
- 질문이 있으면 저에게 연락주세요 :)
일상적인 사용
Packer를 한 번 실행한 후에는 다시 실행할 필요가 없습니다. Vagrant 상자는 실습 환경을 재구축, 분해, 재시작하는 데 계속 사용할 수 있습니다.
다음은 실습 환경을 작업할 때 유용할 수 있는 몇 가지 명령어입니다:
기본 Vagrant 사용법
- 모든 DanderSprotz Lab 호스트 시작:
vagrant up
- 특정 호스트 시작:
vagrant up <hostname>
- 특정 호스트 재시작:
vagrant reload <hostname>
- 특정 호스트를 재시작하고 프로비저닝 과정 재실행:
vagrant reload <hostname> --provision
- 특정 호스트 삭제:
vagrant destroy <hostname>
- 전체 Danderspritz Lab 환경 삭제:
vagrant destroy
- 머신 스냅샷 생성:
vagrant snapshot save <hostname> <snapshot_name>
- 머신 스냅샷 복원:
vagrant snapshot restore <hostname> <snapshot_name>
- 각 호스트의 상태 확인:
vagrant status
- 실습 환경 일시 중단:
vagrant suspend
- 실습 환경 재개:
vagrant resume
만료된 Windows 호스트 재무장
테스트 라이선스가 만료된 문제가 발생하면 관리자 명령 프롬프트에서 다음 명령을 실행하여 최대 3회(Windows 라이선스 90일 추가)까지 호스트를 재무장할 수 있습니다:
이후 머신을 재부팅해야 합니다.
실습 환경 정보
실습 환경 다이어그램

추가 실습 환경 정보
- 도메인 이름: windomain.local
- 관리자 로그인(모든 머신): vagrant:vagrant
- DC(도메인 컨트롤러): 192.168.40.2/24
- 대상: 192.168.40.3/24
- DanderSpritz: 192.168.40.4/24
실습 호스트
- DC - Windows 2008 R2 도메인 컨트롤러
- Windomain.local용 Windows 도메인 컨트롤러
- WEF 서버 구성 GPO
- PowerShell 로깅 GPO
- 향상된 Windows 감사 정책 GPO
- 대상 - Windows 7 워크스테이션
- 대상 워크스테이션/머신 시뮬레이션
- Windomain.local Windows AD 도메인에 가입됨
- 일부 리버싱/가시성 도구 사전 설치
- 추가 도구 설치를 위한 Chocolatey(FireEye Flare REPO 포함) 사용 가능
- DanderSpritz Box - Windows 10
- DanderSpritz 및 Fuzzbunch 사전 설치
대상(Windows 7 SP1)에 설치된 도구
- Sysmon
- Sysinternal Tools (Procmon, TCPview 등)
- API Monitor
- InfoPe
- HxD
- PEView
- Windbg
- WireShark
- Binary Ninja
- HashCalc
- IDA 7 Free
- Ollydbg
- 향상된 감사 GPO
- PowerShell 로깅 GPO
- 도메인 컨트롤러(WEC)로 전달되는 Windows 이벤트
크레딧/참고 자료
이 코드의 상당 부분은 Chris Long의 DetectionLab 프로젝트와 Stefan Scherer의 packer-windows 및 adfs2 Github 저장소에서 차용 및 수정되었습니다. 이러한 프로젝트를 더 쉽게 (또는 가능하게) 만드는 데 코드를 기여해 주신 모든 분께 진심으로 감사드립니다.
감사의 말