

Grafiki는 현재 Sysmon과 그래프에 관한 Django 프로젝트입니다.
제 생각에 EventViewer, Elastic, 심지어 Kibana도 충분히 그래픽적이지 않습니다. 현재 위협은 복잡하며, 공격자가 그래프로 생각한다면 방어자도 그렇게 해야 합니다.
이것은 개념 증명이며, 코드는 아직 디버깅되지 않았지만 누군가에게 유용할 수 있으므로 개선하겠습니다.
이 프로젝트는 EVTX를 SQL 데이터베이스로 파싱하는 것으로 시작했으며, 이것이 프로젝트의 핵심일 수 있습니다.
프로젝트가 충분히 성숙하지는 않지만 작동하며, 테스트 계획은 아직 정의되지 않았습니다.
어떤 의견, 버그 발견, 개선 요청 등도 환영합니다.
git clone https://github.com/lucky-luk3/Grafiki.git
cd Grafiki
sudo -- sh -c -e "echo '127.0.0.1 grafiki.local' >> /etc/hosts"
docker compose up --build &
docker exec -it -d grafiki-app-1 /init_django.sh
브라우저에서 http://127.0.0.1:8000/ 또는 http://grafiki.local:8000/로 이동하세요.
헌팅하고, 배우고, 즐기세요!
이 애플리케이션은 두 가지 유형의 파일을 처리할 수 있습니다.

이 페이지에서는 evtx 파일 또는 elastic 이벤트 파일을 업로드하고 처리할 수 있습니다.

이 페이지는 온라인 샘플 파일 라이브러리를 만드는 데 유용합니다.
예제를 만들 때 파일 URL을 입력하면, 처리 시 애플리케이션이 이벤트 파일을 다운로드하여 처리합니다.

이 페이지에서는 Elastic 인스턴스에 대한 검색을 생성하고 결과의 그래프를 만들 수 있습니다. 다음에 대한 필터를 만들 수 있습니다:

그래프 페이지는 이 애플리케이션의 핵심이자 연구 인터페이스입니다.
다른 페이지에서 데이터를 선택하면 이 페이지가 그래프 페이지로 보내며, 그래프 페이지로 직접 이동하면 아무것도 없거나 마지막으로 검색한 데이터가 표시됩니다.
이 페이지에는 Sysmon 및 Powershell 이벤트를 위한 두 개의 탭이 있습니다.
두 가지 유형의 요소가 있습니다: 노드와 엣지. 노드는 프로세스, 파일 또는 레지스트리 키와 같은 엔터티를 나타내고, 엣지는 생성, 삭제 또는 연결과 같은 작업을 나타냅니다.

우리는 핵심에 있습니다.
이 부분은 데이터베이스의 정보를 사용하여 분석된 이벤트에 대한 그래프를 만듭니다.
그래프 내에서 탐색하여 프로세스 생성, 명명된 파이프 연결 등을 볼 수 있습니다. 하지만 일반적으로 편안하게 작업하기에는 정보가 너무 많습니다.
탭 내부에는 그래프 필터에 대한 숨겨진 섹션이 있습니다.
이 영역에서는 그래프 필터링 데이터를 사용하여 작업할 수 있습니다.
다음 엔터티로 노드를 필터링할 수 있습니다:
프로세스 노드는 다음으로도 필터링할 수 있습니다:
또한 다음 작업으로 엣지를 필터링할 수 있습니다:
훌륭한 기능 중 하나는 그래프의 데이터에 대한 애니메이션을 만드는 것입니다. 이는 예를 들어 부모 PID 스푸핑(Parent PID Spoofing)이나
컴퓨터의 사용자가 원격으로 명령을 실행할 때 매우 유용합니다.

그래프에 정보가 너무 많을 때 하나의 노드, 하나의 엣지, 노드 그룹 또는 재귀적으로 노드 그룹을 삭제할 수 있습니다. 노드 그룹 삭제는 하나의 노드를 선택하면 애플리케이션이 해당 노드의 부모인 모든 노드를 삭제합니다. 재귀적 그룹 삭제는 노드를 선택하여 작동하지만, 애플리케이션이 이 트리 브랜치가 끝날 때까지 노드를 삭제하며 진행합니다. 브랜치에 정보가 많으면 시간이 오래 걸립니다.
화면 하단에서 그래프의 물리(physics)를 변경할 수 있습니다. 그래프에 정보가 많을 때 물리(physics)를 비활성화하여 그래프를 안정화하는 것이 유용할 수 있습니다. 물리(physics)로 놀 수 있습니다, 재미있습니다.
Powershell 탭에서는 powershell 명령을 분석할 수 있습니다.
명령은 아코디언(accordion)으로 표시되며, 각 행 내에서 명령에 base64 명령이 포함된 경우 디코딩 및 파싱됩니다.
모든 이벤트에서 명령의 인코딩된 부분 또는 디코딩된 부분을 검색할 수 있습니다.





