
"보안 사고를 박스에 담다!" 모듈식, 메뉴 기반, 크로스 플랫폼 도구로, 맞춤형 시간 지연 분산 보안 이벤트를 구축합니다. 블루팀과 레드팀 훈련 및 센서/알림 매핑을 위한 맞춤형 이벤트 체인을 쉽게 생성할 수 있습니다. 레드팀은 작전을 지원하고 확장하기 위해 유인 사고, 방해 요소 및 미끼를 만들 수 있습니다. 이벤트 시퀀스("내러티브")를 구축하여 현실적인 시나리오를 시뮬레이션하고 이에 상응하는 네트워크 및 파일 시스템 아티팩트를 생성합니다.
DumpsterFire 툴셋 - "상자 속의 보안 사고!"
(2020/05/27 업데이트: 2020년 여름 동안 모든 Github 프로젝트를 Python3로 마이그레이션할 예정입니다.)
DumpsterFire 툴셋은 모듈식, 메뉴 기반, 플랫폼 간 도구로, 반복 가능하고 시간 지연이 있는 분산 보안 이벤트를 구축할 수 있습니다. 블루팀 훈련 및 센서/알림 매핑을 위한 사용자 정의 이벤트 체인을 쉽게 생성할 수 있습니다. 레드팀은 작업을 지원하고 확장하기 위해 가짜 사고, 방해 공작 및 유인책을 만들 수 있습니다. 탁상 태블릿 교육을 통제된 "실제 발사" 범위 이벤트로 전환할 수 있습니다. 현실적인 시나리오를 시뮬레이션하고 그에 따른 네트워크 및 파일 시스템 아티팩트를 생성하는 이벤트 시퀀스("내러티브")를 구축할 수 있습니다.
이 툴셋은 동적으로 확장 가능하도록 설계되어, 툴셋에 포함된 화재 컬렉션에 자신만의 화재(이벤트 모듈)를 추가할 수 있습니다. 자신만의 화재 모듈을 작성하여 FireModules 디렉터리에 넣으면 됩니다. DumpsterFire 툴셋은 시작 시 사용자 정의 화재를 자동으로 감지하여 사용 가능하게 만듭니다.
Joe Gervais (TryCatchHCF)
레드팀과 블루팀은 일반적으로 과도하게 확장되어 있습니다. 부족한 것은 각 팀의 역량을 확장하여 더 효과적인 레드팀 활동과 더 현실적이고 도움이 되는 블루팀/퍼플팀 훈련을 제공하는 방법입니다. 자동화가 구세주입니다! DumpsterFire 툴셋은 모듈식 연결 이벤트를 일관된 내러티브로 결합하여 사용자 정의 보안 사고를 쉽게 생성할 수 있는 플랫폼 간 메뉴 기반 솔루션입니다. 이러한 이벤트 컬렉션(DumpsterFire)은 시간 지연 자동화 프로세스로 실행될 수 있습니다. (물론 즉시 트리거할 수도 있습니다.)
결과는? 회의 중이거나 인생을 즐기고 있는 동안 DumpsterFire가 날짜-시간 트리거를 기다리며 활성화됩니다. 레드팀 교전 중에 잊혀진 B2B 서버의 노출된 서비스를 악용하는 동안, 복제되어 시간 동기화된 DumpsterFire가 먼 서브넷에서 대상 조직의 SIEM을 밝히며 대응팀을 혼란시키고 있습니다. 블루팀원들은 통제되고 사전 승인된 DumpsterFire 이벤트 체인을 사용하여 센서와 알림을 트리거하고 실제 운영 환경에서 분석가를 훈련시킬 수 있습니다. 퍼플팀 운영은 이제 체계적이고 반복 가능한 이벤트 체인을 실행하여 센서 및 알림 상태를 일관되게 매핑할 수 있습니다. 팀을 테스트하고 훈련하기 위해 새로운 시나리오를 생성하여 위협 공간을 앞서가 보안 비상 사태에 대비할 수 있습니다.
내부 네트워크에서 Mirai 봇 활동에 블루팀이 어떻게 반응할지 궁금해 본 적이 있나요? 이제 알아낼 수 있습니다! (걱정하지 마세요. Mirai 봇 화재 모듈은 피벗하지 않지만 대상 네트워크에서 텔넷 세션을 무차별 대입하는 데 동일한 사용자 이름과 암호를 사용합니다.)
레드팀이 없지만 모든 SOC 교대 팀에 대해 통제되고 반복 가능하며 사용자 정의된 훈련을 쉽게 실행할 방법이 있었으면 좋겠나요? 완료!
7개 시간대 떨어진 원격 팀에 대한 레드팀 교전을 지원하고 싶지만 오전 3시에 일어나고 싶지 않나요? 스누즈 버튼을 누르세요!
연례 사이버전 훈련 중에 모든 상대방 시스템에 동시에 rickroll을 하고 싶었나요? "Never gonna let you down!"
아래 샘플 DumpsterFire를 참조하세요. 물론 Shenanigans 섹션도 있습니다.
제 CactusCon 2017 슬라이드(프로젝트에 포함)를 참조하세요. 슬라이드는 독립적으로 읽을 수 있도록 작성되어 배경, 접근 방식, 특정 사용 사례 등을 제공합니다. 모든 것을 맥락에 넣어 주며, 여러분을 재우지 않을 것입니다. 재우더라도 아마도 휴식이 필요했던 것이므로 모두에게 이익입니다.
DumpsterFire는 날짜-시간 스탬프가 찍힌 이벤트 로그를 생성하여 레드팀과 블루팀이 이벤트를 조정하고 추적하며, 센서에서 감지되었는지 여부, 어떤 알림이 트리거되었는지 등을 상호 연관시킬 수 있도록 합니다. 또한 팀이 운영/훈련의 일부였던 이벤트를 확인하여 문제를 방지할 수 있습니다. 모든 날짜-시간 추적은 UTC로 수행되므로 시간대 및 국제 날짜 변경선 변환에 대해 걱정하지 않고 글로벌 운영을 쉽게 연관시킬 수 있습니다.
자동 생성된 날짜-시간 스탬프 이벤트 로그는 교전에 가치를 더하는 쉬운 방법을 제공합니다. 클라이언트 교전을 위해 공격 표면에 맞춘 DumpsterFire 컬렉션을 생성하세요. 운영이 끝나면 로그를 퍼플팀 인도물로 클라이언트에 제공하여 사후 분석에 사용할 수 있습니다.
DumpsterFire 툴셋 워크플로는 사용자 친화적이고 견고하게 설계되었습니다. 모든 작업은 메뉴 기반 dumpsterFireFactory.py 스크립트 내에서 수행할 수 있습니다. 스크립트를 실행하면 도구가 진행을 안내합니다. 기존 화재 모듈과 저장된 DumpsterFire를 탐색하는 것으로 시작할 수 있습니다. 자신만의 DumpsterFire를 만들 준비가 되면 도구가 워크플로를 안내하여 작업을 완료합니다. 마지막으로 DumpsterFire를 점화할 시간입니다. 원하는 DumpsterFire를 선택한 후 DumpsterFire의 화재 모듈과 설정을 검토합니다. 모든 것이 좋아 보이면 점화하세요!
DumpsterFire를 구축할 때 포함할 모든 화재 모듈을 선택한 후, 도구는 화재 목록을 반복합니다. 화재에 사용자 정의 설정 옵션이 있는 경우 도구는 해당 화재의 Configure() 메서드를 호출하여 설정(예: 대상 네트워크의 IP 주소)에 대한 프롬프트를 표시합니다.
모든 화재가 구성되면 화재에 개별 시간 지연을 할당하는 옵션이 제공됩니다. 이를 통해 DumpsterFire가 이벤트 체인을 실행할 때 실제 운영을 더 잘 모방할 수 있습니다. 예를 들어, 첫 번째 화재가 다양한 해킹 웹사이트를 방문하고, 다음 화재가 몇 가지 일반적인 해킹 도구를 다운로드한 후, 세 번째 화재가 로컬 네트워크 스캔을 시작할 수 있습니다. 이 모든 것이 몇 초 내에 발생하면 어떤 SOC 분석가도 인간이 한 일이라고 믿지 않을 것입니다. 이러한 이벤트 사이에 몇 분 또는 몇 시간을 추가하면 더 현실적인 이벤트 체인이 생성됩니다.
모든 화재가 구성되고 선택적 개별 화재 지연이 할당된 후 DumpsterFire 이름을 지정하라는 메시지가 표시됩니다. 공백이나 이상한 특수 문자를 사용하지 말고 문자, 숫자, 밑줄, 하이픈만 사용하세요.
짜잔! 첫 번째 DumpsterFire를 만들었습니다. 이제 점화할 시간입니다!
DumpsterFire를 점화할 준비가 되면 도구가 먼저 DumpsterFire의 설정을 표시합니다. 모든 것이 좋아 보이면 점화 전에 날짜-시간 지연을 할당할지 묻습니다. 모든 날짜-시간 처리는 UTC로 수행되어 DumpsterFire의 실행 위치에 관계없이 일관된 실행을 보장합니다. 그렇지 않으면 날짜-시간 지연을 거부하고 최종 확인 후 즉시 실행이 시작됩니다.
DumpsterFire가 실행됨에 따라 각 화재의 상태와 중요한 이벤트에 대한 날짜-시간 스탬프가 찍힌 정기적인 피드백이 제공됩니다. 이는 진행 상황을 추적하는 데 도움이 될 뿐만 아니라 DumpsterFire 활동의 시간 순서 기록을 제공합니다. 이는 모든 SOC를 범람하는 일반적인 배경 소음과 이벤트를 조정하고 충돌을 해결하는 데 중요합니다. 운영이 완료된 후 외부 클라이언트에 시간 순서 기록을 제공하여 센서 및 알림 설정을 검토하는 데 사용할 수 있는 활동 기록을 부가 가치로 제공할 수도 있습니다. 모두 추가 노력 없이 가능합니다.
4월 1일은 옵니다! 사이버 전쟁 게임이나 가장 친한 친구의 생일도 마찬가지입니다. 일부 상황은 약간의 추가 요소를 요구합니다. 마침내 네트워크 전쟁 대회에서 상대방의 경계를 뚫었나요? 승리를 확정하면서 Shenanigans로 축하하세요! 가장 친한 친구가 게임 밤에 화면 잠금을 해제한 채로 두었나요? 나누는 것은 사랑입니다! DumpsterFire의 Shenanigans를 사용하면 운영에 풍미를 더할 수 있습니다.
시스템의 기본 브라우저를 열고 Rick Astley의 위대함을 스트리밍하고 싶나요? 시스템 볼륨을 최대로 설정한 후에? 선택한 URL을 열고 싶나요? 아니면 시스템 셸 별칭을 설정하여 파일 시스템이 손상된 것처럼 위장하고 싶나요?
dumpsterFireFactory.py - DumpsterFire를 생성, 구성, 예약 및 실행하기 위한 메뉴 기반 도구
FireModules/ - 화재의 하위 디렉터리를 포함하는 디렉터리로, 각 하위 디렉터리는 특정 화재 카테고리입니다. 화재 모듈을 체계적으로 유지하기 위해 사용됩니다. 화재는 DumpsterFire에 추가되어 이벤트 및 작업 체인을 생성합니다.
DumpsterFires/ - DumpsterFire 컬렉션을 포함하는 디렉터리
igniteDumpsterFire.py - 명령줄에서 실행할 DumpsterFire의 파일 이름과 함께 호출되는 헤드리스 스크립트. 분산 DumpsterFire를 점화하는 데 유용합니다.
testFireModule.py - 사용자 정의 화재 모듈의 클래스 메서드를 단위 테스트하기 위한 유틸리티 스크립트. 전체 DumpsterFire 팩토리 프로세스를 실행하지 않고 디버깅할 수 있습니다. 또한 단일 화재를 실행하여 설정을 확인하는 데 유용합니다. testFireModule.py는 해당되는 경우 구성 설정을 묻는 메시지를 표시합니다.
__init__.py 파일 - Python이 디렉터리를 Python 패키지를 포함하는 것으로 취급하도록 요구됩니다. DumpsterFire 툴셋이 화재 모듈을 찾고 로드할 수 있게 합니다.
Python 2.7.x
$ ./dumpsterFireFactory.py
메뉴 기반 DumpsterFire 팩토리 스크립트는 각 단계를 안내하며, 상황에 맞는 도움말을 제공합니다.
첫 번째 예에서는 SOC 훈련 또는 레드팀 방해 공작이 될 수 있는 DumpsterFire가 있습니다. DumpsterFire는 먼저 해킹 도구에 대한 Google 검색을 수행합니다. 다음 화재는 다양한 해킹 웹사이트에 대한 웹 세션을 엽니다. 그 다음 화재는 몇 가지 일반적인 해킹 도구를 다운로드합니다. 그런 다음 서브네트워크를 대상으로 포트 스캔이 수행되고, 단일 호스트에 대해 텔넷을 통한 무차별 대입 로그인 시도가 이어집니다. 마지막 화재는 일련의 Linux 명령을 실행합니다. 각 화재 사이에 이 DumpsterFire의 생성자가 몇 가지 시간 지연을 삽입했습니다. 이는 이벤트 흐름을 더 현실적으로 보이게 합니다.
다음 예에서는 퍼플팀원들이 센서 및 알림 구성을 분석하고 검증하는 데 도움이 되는 DumpsterFire를 만들었습니다. 이 DumpsterFire는 서로 다른 포트 및 서비스 컬렉션을 대상으로 다양한 프로브 속도로 안무된 일련의 포트 스캔을 실행합니다. 각 스캔 화재 사이에 5분 지연을 삽입하여 각 스캔 화재와 관련된 트래픽을 분리하기 쉽게 했습니다. 이 DumpsterFire를 실행하면 각 화재 시작 시 날짜-타임스탬프도 표시되어 화재의 네트워크 활동과 다른 네트워크 이벤트를 충돌 해결하는 데 도움이 됩니다.
DumpsterFire의 모듈식 설계는 원하는 수의 이벤트 체인 내러티브를 생성할 수 있는 유연성을 제공합니다. 구성 가능한 설정이 있는 화재 모듈은 대상 네트워크나 시스템 등을 설정할 수 있습니다. 그러나 몇 가지 화재 모듈은 DumpsterFire 이벤트 시퀀스를 크게 확장할 수 있는 즉각적인 유연성을 제공합니다.
새로운 FireModule 클래스를 생성하지 않고도 다음 기존 "사용자 정의" 화재 모듈을 사용하여 DumpsterFire를 활용하고 확장할 수 있습니다.
이러한 모듈을 DumpsterFire에 여러 개 추가할 수 있으며, 각각 고유한 사용자 정의 작업을 가질 수 있습니다. 예를 들어, 12개의 'custom_url.py' 화재 모듈을 연결하여 완전히 맞춤화된 브라우징 내러티브를 구축할 수 있습니다. 그런 다음 다양한 'OSCommand/' 화재 인스턴스를 사용하여 시스템 명령을 실행하여 원하는 이벤트 내러티브를 더욱 강화할 수 있습니다. 특히 'OSCommand/' 화재는 엄청난 유연성을 제공합니다. DumpsterFire 이벤트 체인의 각 개별 화재는 호스트 OS에 적합한 모든 셸 명령을 사용할 수 있습니다.
예: Linux/Unix (& OSX 터미널)
find /home -name '*.bash_history' -exec cat {} ; ; echo "Never gonna give you up" > rickroll.txt ; wall rickroll.txt
DumpsterFire는 바로 사용할 수 있지만, 실제 가치는 사용자 정의 화재 모듈을 생성하여 DumpsterFire의 시나리오 도구 상자를 쉽게 확장할 수 있다는 점에 있습니다. 특정 요구에 맞게 화재 모듈을 생성하고 조정함으로써 구축 및 실행할 수 있는 DumpsterFire 시나리오의 유형을 빠르게 확장할 수 있습니다. 새 화재 모듈을 작성하여 FireModules/ 아래의 기존 디렉터리에 넣으면 DumpsterFire 툴셋이 런타임에 자동으로 로드하여 사용할 수 있게 만듭니다.
사용자 정의 화재 모듈을 완전히 별도의 카테고리로 유지하고 싶나요? 쉽습니다! FireModules/ 아래에 새 디렉터리를 생성하기만 하면 DumpsterFire 툴셋이 자동으로 감지하여 새로운 화재 카테고리로 사용할 수 있게 만듭니다.
참고: 새 디렉터리에 __init__.py라는 빈 파일이 있는지 확인하세요. 그렇지 않으면 Python 패키지 관리자가 찾을 수 없으며 DumpsterFire가 이를 인식하지 못합니다.
화재 모듈은 FireModule이라는 클래스에서 상속됩니다. 시작점으로 기존 화재 모듈을 복사할 수 있습니다. 파일 이름과 파일 내 모든 클래스 이름 참조를 새 화재와 일치하도록 변경해야 합니다. (필요한 경우 클래스 생성자 메서드의 카테고리 경로 참조도 업데이트하세요.)
필수 클래스 메서드:
Configure() - 사용자 입력을 요청하고, FireModule의 매개변수를 채웁니다.
Description() - FireModule에 대한 설명을 포함하는 문자열을 반환합니다.
GetParameters() - 화재 매개변수의 단일 문자열을 반환합니다.
SetParameters( string ) - 단일 문자열을 받아 화재의 멤버를 채웁니다.
ActivateLogging( boolean ) - 화재가 활동 로그를 생성하도록 플래그를 설정합니다 (검토에 유용). 참고: 초기 릴리스에서는 stdout 로깅이 항상 켜져 있습니다.
Ignite() - 화재의 작업을 실행합니다.
Python 클래스 테스트는 특히 각 클래스 메서드를 단위 테스트하려고 할 때 성가실 수 있습니다. 모든 애플리케이션 사용 사례를 샅샅이 뒤져 각 클래스 메서드가 올바른 순서로 실행되도록 해야 합니다. 그래서 새 FireModule 파생 클래스의 각 메서드를 적절히 호출하는 스크립트를 작성하여 빠르게 디버깅할 수 있도록 했습니다. 천만에요. :-) 또한 화재를 단독으로 실행하여 설정을 테스트하고 어떤 작업을 하는지 확인하는 좋은 방법입니다.
명령줄에서 testFireModule.py 스크립트에 사용자 정의 화재 모듈의 상대 파일 경로를 제공하세요. 테스트 스크립트는 각 필수 FireModule 메서드를 올바른 순서로 호출합니다 (저장 전에 구성을 얻는 등). 테스트 스크립트는 예외 처리를 사용하지 않습니다. Python은 충돌할 때만 유용한 오류(예: 누락된 큰따옴표 지적)를 제공하기 때문입니다. 충돌하며 성공적인 사용자 정의 화재를 향해 나아가세요!
현재 약 30개의 추가 화재 모듈이 다양한 개발 및 디버깅 단계에 있습니다. 10월과 11월에 걸쳐 출시할 예정입니다. 만들 때마다 두 개 더 만들고 싶어지므로 업데이트를 계속 주시하세요.