
침해 대응 포렌식 프레임워크

Elasticsearch 백엔드에서 비동기식 포렌식 데이터를 제시하기 위해 맞춤 제작된 애플리케이션입니다.
이 애플리케이션은 Mandiant Redline "collections" 파일을 수집하여 검색/스택 및 태깅에 유연성을 제공하도록 설계되었습니다.
이 애플리케이션은 단일 창에서 여러 조사(또는 수백 개의 엔드포인트)를 제어할 수 없는 문제를 해결하기 위해 탄생했습니다.
Redline 감사 데이터를 수집하기 위해 우리는 nightHawkResponse를 만들었습니다. 이는 이 프레임워크를 지원하도록 설계된 완전한 기능의 GOpher 애플리케이션입니다. 애플리케이션의 소스 코드는 이 저장소에 있으며, 컴파일된 바이너리는 ISO 내에 포함되어 있어 첫 부팅부터 수집할 준비가 되어 있습니다.
현재 새로운 주요 버전을 개발 중이며 2020년 3월까지 출시할 예정입니다. 새 버전은 다음을 목표로 합니다.
저장소 전체를 효과적으로 운영하고, 엔티티를 쉽게 관리하며, 모든 것을 최신 상태로 유지하기에는 너무 많은 요소가 있다는 것을 깨달았습니다. 또한 Elasticsearch에 저장된 핵심 데이터는 Kibana에서 더 효과적으로 사용되어야 한다고 믿기에, Kibana의 놀라운 워크플로우와 함께 이를 실현하는 플러그인을 개발하기로 결정했습니다.
설치
API 문서는 Wiki에서 제공 예정
01/09/2016: 버전 1.0.3
기능:
동영상 데모: nightHawk Response 플랫폼
nightHawk 사용자를 위해 모든 설정이 완료된 ISO를 제공합니다. 다음이 포함됩니다.
/opt/nighthawk/etc/nightHawk.json 파일에서 확인 가능.시스템 시작:
제공된 ISO로 VM을 구축하기 전에 다음 사항을 고려하세요.
대기 중: 할당된 시스템 메모리의 1/4을 각 노드로 사용하는 이중 Elasticsearch 노드 설정. 예를 들어 2GB RAM을 할당하면 각 ES 노드는 512MB, 시스템은 1GB를 사용합니다.
다른 방식으로 설정하려면 SSH로 접속하여 원하는 대로 구성하세요.
최소 20GB를 권장합니다. 감사 파일이 클 수 있으므로 많은 컬렉션을 수용하기 위해 충분한 저장 공간을 할당하는 것이 좋습니다.
대기 중: 대규모 인스턴스를 위한 사용자 기반 스토리지 설정. 추가 파티션을 직접 설정할 수 있으며, ES 데이터 저장소를 새 파티션으로 가리키도록 몇 가지 변경을 할 수 있습니다.
설치:
ISO 다운로드: nightHawk v1.0.3
하드웨어를 구성하고 ISO를 VM에 마운트한 후 설치 스크립트를 시작하세요.
완료 후 브라우저(Chrome/FireFox)에서 https://192.168.42.173로 이동하세요.
'nighthawk/nighthawk'로 시스템에 로그인하고 'goto site'를 클릭하여 애플리케이션에 접속하세요.
Kibana에 접근해야 한다면 https://192.168.42.173:8443으로 이동하세요.
SSH로 접속해야 한다면 로그인 정보는 admin/nightHawk입니다.
IP 주소를 변경하려면 (애플리케이션 전체에 반영): /opt/nighthawk/bin/nighthawkctl set-ip <새_ip주소>
Redline 감사 수집 스크립트는 이 저장소의 루트에서 찾을 수 있습니다. 독립 실행형 Redline 수집기를 사용할 때 이 스크립트를 사용하면 nightHawk를 올바르게 채우는 데 필요한 문서가 생성됩니다.
업로드:
중요:
업로드할 감사 zip 파일 생성 (Redline 독립 실행형 수집기):
1단계: Sessions\AnalysisSessionX\Audits<ComputerName>으로 이동 (X는 분석 번호, 대부분 1).
2단계: 감사 파일이 포함된 폴더(예: 20160708085733)를 zip으로 압축.
3단계: 20160708085733.zip 업로드
중요: 기존 HX 감사 파일 사용 (HX 수집기): FireEye HX 감사는 .mans 확장자로 끝납니다. HX의 감사는 Redline 수집기와 달리 반환되는 .mans 파일이 실제로 zip 파일이므로 위의 Redline 감사처럼 추가 작업 없이 직접 업로드할 수 있습니다.
탐색 모음에서 "업로드" 아이콘을 클릭하고, 감사 .zip 파일(또는 여러 개)을 선택하고, 케이스 이름(입력하지 않으면 시스템이 자동 생성)을 입력한 후 제출하세요. Redline 감사 스크립트를 사용하여 컬렉션을 생성했다면 위의 "Redline 수집기" 지침을 따르세요.
처리되면 엔드포인트가 "현재 조사" 트리 노드 아래에 나타납니다. 엔드포인트 아래에는 해당 엔드포인트의 모든 감사 유형이 표시됩니다. 이 웹 앱의 업로드 기능은 pOpen 서브프로세스를 생성하여 GO 애플리케이션을 호출, Redline 감사를 파싱하고 데이터를 Elasticsearch에 푸시합니다. 업로드에는 순차적(sequential)과 동시적(concurrent) 두 가지 옵션이 있습니다.
참고: 동시 업로드는 한 번에 최대 5개로 제한되며 리소스를 많이 소모할 수 있습니다. 저사양 시스템에서는 2~3개로 제한하세요.
태깅:
(응답 보기에서) 테이블의 모든 행을 클릭하여 해당 데이터에 태그를 지정할 수 있습니다. 태그를 지정하면 주석 보기에서 주석을 볼 수 있습니다.
Elasticsearch:
다음에 대한 사용자 정의 매핑(git 루트에 제공됨) 및 조언 주석이 있습니다.
문서는 GO 앱을 통해 부모/자식 관계로 인덱싱됩니다. 이는 문서를 보기에 상대적으로 논리적인 경로를 제공하기 때문에 선택되었습니다. 예를 들어 부모는 엔드포인트 이름이고 자식은 감사 유형입니다. 대규모에서 부모/자식 관계 문서에 대한 집계를 수행하는 것도 합리적입니다. 스태킹 프레임워크는 부모를 배열로 구성한 다음 특정 감사 유형에 대한 모든 자식 문서 집계를 가져오는 방식에 의존합니다.
Elasticsearch 설정은 튜닝과 적절한 설계 인식이 필요합니다. 부모/자식 문서를 연결하는 방식 때문에 샤딩을 이해하는 것이 중요합니다. 자식 문서는 항상 부모로 라우팅되며 단독으로 존재할 수 없습니다. 따라서 인덱스에 존재하는 샤드의 수를 고려해야 합니다. 현재 이해로는 단일 샤드를 가진 여러 노드를 포함하는 설정을 선택하는 것이 현명할 수 있습니다. 이러한 설정에서 성능을 얻기 위해 샤드 라우팅 검색을 작업 중입니다.
현재 빠른 검색을 위한 최적의 구성을 설계 중입니다.
이 애플리케이션은 대규모 확장을 위해 설계되었습니다. 초기 설계 개념에서 단일 CPU 2GB Ubuntu VM에 3개의 ES 노드(Macbook Pro)로 약 400만 개 이상의 문서(또는 50개의 엔드포인트 수집)를 원활하게 실행할 수 있었습니다. 프로덕션 환경에서 64/128GB RAM 및 SAS 저장소 설정을 사용하면 많은 분석가가 동시에 작업하면서도 문서 검색 시 매우 빠른 응답 시간을 유지할 수 있습니다.
고려 사항:
DataTables 혼합 처리:
수집되는 여러 감사 유형은 테이블에 모든 문서를 반환하기에는 너무 큽니다. 예를 들어 URL 기록 및 레지스트리는 15,000개의 문서를 DOM에 반환할 수 있으며, 이를 렌더링하면 클라이언트 브라우저에 부담을 줍니다. 이를 해결하기 위해 특정 감사 유형의 결과를 페이지별로 표시하는 ServerSide 처리를 사용합니다. 따라서 백엔드에서 Elasticsearch를 통해 감사 유형의 문서를 검색할 수도 있습니다.
태깅:
현재 문서에 태그를 지정하고 해당 주석을 볼 수 있습니다. 업데이트하거나 변경할 수 있습니다. 분석가는 문서에 날짜/분석가 이름/주석과 같은 컨텍스트를 제공할 수 있습니다.
의존성 (모두 사전 설치됨):
elasticsearch-dsl.py
django 1.8
python requests
할 일:
프로세스 핸들 (진행 중).
시간 기반 생성기를 위한 시간 선택 슬라이더 (진행 중).
현재/이전 조사에 대한 컨텍스트 메뉴.
태깅 컨텍스트. 태깅 시스템은 분석가 창 간의 실시간 주석을 위해 웹소켓 루프에 통합될 예정 (진행 중).
애플리케이션 컨텍스트.
엔드포인트를 컨텍스트 간에 이동하는 기능.
노드 트리를 조사 날짜 기준으로 재설계 가능성.
선택적 스태킹, 현재 루트 노드 선택기가 활성화됨.
샤드 라우팅 검색.
Redline 감사 스크립트 템플릿.
AngularJS와의 더 광범위한 통합 (진행 중).
반응형 디자인. (진행 중).
핵심 설정 구성을 위한 관리 제어 페이지 (진행 중).
저자 및 참고:
비슷한 생각을 가진 분들이 이 프로젝트에 기여하기를 항상 환영합니다. 저희는 웹 디자인 전문가가 아닙니다. 더 나은 방법이 있다면 풀 리퀘스트를 요청해 주시고, 마음에 들면 병합하겠습니다.
Daniel Eden & Roshan Maskey
크레딧:
Mandiant Redline 개발자, AngularJS, Django 개발자, Angular-DataTables/DataTables, D3 (Bostock), Elasticsearch/ES-dsl.py, jsTree, qTip, GOlang, Python, Fahad Abdulaal (로고/동영상).
