개요

악성코드 DNA 프로파일링 검색 엔진 Codex Gigas는 수집한 악성코드에서 무언가를 특정 짓기 위해 악성코드의 패턴과 특성을 찾아낸다. 

Codex Gigas는 악성코드 수집과 분석하여 악성코드 내부를 조사할 수 있고, 많은 수의 파일에서 특성을 검색할 수 있는 악성코드 프로파일링 검색 엔진이다. 예를 들어, 파일 수준의 해시에 의존하는 대신에 파일 규격에 정의되어 있는 함수 호출, 문자열, 정수, 파일 세그먼트, 코드 영역과 같은 다른 기능을 계산할 수 있고, 기타 추가적으로 142가지 검색 가능한 패턴을 제공하기에 이들을 섞어 검색할 수 있다.


구성 (선택사항)

MongoDB 경로

MongoDB의 기본 경로는 codex-backedcodex-fronted의 메인 경로에 설정되어 있다. 만약 기본 경로를 변경하고 싶다면 docker-compose.yml의 네 번째 줄을 수정한다.

    - ../mongo-data/:/data/db

VirusTotal

VirusTotal은 파일을 요청해 백신의 결과를 검색하기에 유용하다. 자신의 VirusTotal API keysrc/secrets.py에 추가한다. 그런 다음 컨테이너를 재시작한다.


sudo docker-compose restart


Codex Gigas 설치

docker & docker-compose 설치

먼저 dockerdocker-compose를 설치한다. Codex Gigas 설치는 우분투 14.04 LTS 운영체제에서 진행했다.


wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
sudo apt-get install python-pip
sudo pip install docker-compose

Codex Gigas 설치

docker를 활용하여 Codex Gigas를 설치한다. 성공적으로 설치가 끝난 메시지는 바로 웹 서비스가 실행된 메시지로 만나볼 수 있다.


sudo apt-get install p7zip-full git
git clone https://github.com/codexgigassys/codex-backend
git clone https://github.com/codexgigassys/codex-frontend
cd codex-backend/yara/

./setupYarGen.sh
cd ..
cp src/secrets.py.sample src/secrets.py

설치가 모두 끝났다면 도커 서비스를 실행한다. 그리고 docker-compose 명령으로 도커 이용한 설치와 웹 서버 운영을 할 수 있다.


sudo service docker start
sudo docker-compose up

원하는 경우 도커 컨테이너를 stop/start 할 수 있다.


sudo docker-compose stop
sudo docker-compose start


파일 불러오기

대규모 파일을 로드하기 위해 file_to_load 폴더에 파일들을 저장하고 다음 명령을 실행한다.


curl http://127.0.0.1:4500/api/v1/load_to_mongo


즉시 사용 가능한 가상 머신

원하는 VM 파일을 다운로드할 수 있다. 내부에는 가상 머신 시작과 동시에 Codex Gigas가 실행되도록 구성했다.

  • VMware (sha1: 9C6B3F8F37C8BD119E5C8A07050CB28C1A7E2DF3)
  • VirtualBox (sha1: 8289A8BEAF2D75A6D2B4E80ADEB943A806E26373)

VM 패스워드: codex


APT-notes 샘플 - https://github.com/kbandla/APTnotes

테스트를 위해 지난 수년간 APT 보고서에 언급되었던 5437개의 실행 가능한 샘플 (sha1: 6EA9BBFBB5FB0EB0D025221A522D907E6D4956A0)을 수집했다. zip 압축 파일의 패스워드를 알고싶다면, CodexGigasSys 트위터로 직접 메시지를 보내주길 바란다.


개발

이 오픈소스에 기여하고 싶다면, Codex Gigas는 BSD 라이선스로 열려있고, 큰 커뮤니티에 의존해 공동 개발할 수 있게 노력하고 있다. 티켓 발급, 요청하기, 기능 제안, 버그 수정 등 모두 환영한다.

새로운 모듈이나 패치를 개발할 때, 이 프로젝트를 유지하기 위해 일반적인 코딩 스타일을 준수하길 부탁드린다. 새로운 기능이나 중요한 버그를 수정하는 것을 소개할 때 우리의 가이드 문서에 요약과 가능성을 소개하여 포함하는 것 또한 부탁드린다.

디버깅하고 싶다면 다음 명령으로 손쉽게 할 수 있다.


sudo docker-compose --service-ports --rm api

이 방법은 응용프로그램이 백그라운드에서 동작하지 않고 IPython에서 embed()를 사용할 수 있다.

Codex Gigas 플러그인을 통해 파일의 메타데이터를 추출한다. 각 플러그인은 파일 형태로 수신하고, 수신한 파일은 MongoDB에 저장되어 파이썬 딕셔너리 형태로 반환한다. 플러그인 위치는 src/PlugIns이다. 새로운 플러그인을 추가하기 위해서는 윈도우에서 실행 가능한 형태로 제작한 파일은 src/PlugIns/PE/에, 플러그인 이름은 Prosessors/PEProcessor.pyPlugIns/PE/__init__.py에 추가한다.


사용자 가이드

Codex Gigas는 도커 컨테이너를 시작한 후 http://127.0.0.1:6100으로 접속할 수 있다.

Codex Gigas를 이용한 검색

Codex Gigas를 이용한 고급 검색

Section name과 같이 다른 특징을 포함하여 특정 파일을 찾고싶다면 search 창에 찾고자 하는 기준을 선택하고 검색한다.

추가되는 상자는 다음과 같이 볼 수 있다.

다른 원하는 조건을 추가할 수도 있다.

텍스트 상자의 오른쪽에 있는 X를 클릭하여 선택한 기준을 지울 수 있다. 또한 오른쪽에 있는 더하기 기호를 통해 같은 유형을 여러개 추가하여 다양한 조건으로 검색할 수 있다.

엔진의 일부 기능을 보여주기 위해 스턱스넷, 디노, 제우스를 검색할 수 있도록 구성했다.

Stuxnet이 사용한 DLL을 검색하기:

악성코드 샘플을 실행하기 위해서는 특정 라이브러리를 가지고 있는 DLL을 사용할 수 있다. 예로, 스턱스넷은 s7otbxdx.dll을 사용하고 이 .dll은 시멘스 시맨틱 S7 PLC(Programmable Logic Computers의 약자로 자동화 시스템을 의미)의 일부분이다. 이 정보를 Portable Executable > Imports > Library에서 검색할 수 있다.

Library를 클릭하면 다음과 같이 검색할 수 있다.

Library 입력 박스에 s7otbxdx.dll를 입력하고 출력되는 결과를 제한하도록 선택한 후에 검색 버튼을 클릭한다. 제한 수치를 0으로 사용하는 경우, 무제한으로 검색하기에 사용할 때 주의한다. 참고로 오타가 있는 .dll이나 데이터베이스에 .dll이 없는 경우 다음과 같이 텍스트박스는 빨강색으로 강조되어 보여준다.

또한, "Attributes for results preview"의 드롭다운 목록을 볼 수 있는데, 하나 이상의 카테고리를 선택하여 속성을 선택할 수 있다. 예를 들어, Time Date Stamp, Description 그리고 Size를 선택하여 그 결과를 받아 볼 수 있다. 어떠한 특성을 선택하지 않을 경우, 일치하는 검색 조건에 맞는 각각 파일의 SHA1, Description, Size만을 보여준다. 검색 결과는 아래 그림과 같다.

파일 크기나 시간과 같이 특정 속성을 필터링하여 검색할 수 있는 filter function을 사용할 수 있다.

지금까지 살펴본 것처럼 많은 데이터를 찾기 위해 유용한 버튼들이 있다.

체크 버튼 Check all을 선택할 경우, 검색된 모든 결과를 선택한다.

Download Button은 선택한 결과를 zip 파일로 압축하여 다운로드한다. 파일의 패스워드는 "codex"를 사용한다.

Export Button은 선택한 파일로부터 메타데이터를 추출하여 텍스트 파일로 다운로드한다.

Process Button은 프로레스 큐에 파일을 추가한다.

새로운 플러그인을 추가하거나 기존의 플러그인을 변경할 경우에 유용하다. Copy hashes button은 선택한 모든 해시를 복사한다.

Generate Yara Rule 버튼은 선택한 파일에 대한 Yara 룰을 생성한다. 이 기능은 yarGen을 사용하는데, yarGen을 사용하려면 시스템에 최소 5GB 이상의 메모리가 필요하다.

추가로, 결과 중 하나를 선택하면 metadata tree를 볼 수 있다.

메타데이터 트리는 몇가지 형태로 구성되고, 어떤 파일인가에 따라 다양할 것이다.

문자열을 이용하여 Dino (Animal Farm APT의 일부)를 검색하기:

"Dino.exe" 처럼 바이너리의 원래 이름은 작성자의 기록에 의해 표시된다. 다른 Dino 샘플을 검색하기 위해 이 문자열을 사용할 수 있다.

이제 찾고자 하는 문자열 "dino.exe'를 입력한다.

search을 클릭하면 기준과 일치하는 파일을 볼 수 있다.

Zeus 파일 섹션을 이용하여 검색하기:

일반 파일 섹션은 악성코드 변종을 관찰 할 수 있다. 이 경우 제우스의 .data 섹션의 SHA1은 'edbc64b30aceabd6e7d32defc698c1475861a42d'이다.

위에서 볼 수 있듯이, 이 해시를 가지는 .data 섹션과 일치하는 파일이 많이 있다. Size와 Time data stamp는 모든 결과에 대해 동일하다. 화면 오른쪽에 있는 Charts Section을 사용하면 시각화된 정보를 통해 작업을 쉽게 할 수 있다.

열을 기준으로 결과를 정렬하려면 열 이름을 클릭 할 수 있으며, 아래 그림은 file_entropy를 클릭하면 어떤 결과가 보여줄지 그 예로 살펴볼 수 있다.

단순 비교 기능

Codex Gigas의 다른 유용한 기능은 단순 비교 기능이다. 이미 검색을 수행한 후에 화면 오른쪽에 발견될 수 있다.

최선의 선택한 두 파일을 비교하고 두 파일 사이의 차이를 시각화하여 유사점을 찾을 수 있게 기능을 제공한다. 그냥 필요로하는 파일을 선택하고 표시된 블록 중 하나를 드래그한다. 사용자는 화면에 맞게 최대화하고 결과를 더 잘 시각화 할 수 있게 클릭할 수 있다.

위의 각 개별 파일의 메타데이터를 보고 아래처럼 비교한다.

Diff tab에서 다음을 볼 수 있다. 

  • 수정된 속성은 노랑색으로 강조
  • 새로운 속성은 녹색으로 강조
  • 삭제된 속성은 빨강색으로 강조
  • 동일 속성은 흰색으로 강조

이러한 비교는 기본으로 첫 번째 박스에서 파일을 사용하여 만들어진다.

동등 탭에서 두 파일이 일치하는 모든 메타데이터를 볼 수 있다.

샘플 핸들링

파일 버튼 기능

Download Button은 앞서 언급한 다운로드 버튼과 유사한 기능을 가지고 있지만, 현재 보여지는 파일만 다운로드한다. .zip 파일의 패스워드는 동일하게 "codex"다.

Process Button은 자동으로 파일을 재 프로세스하고 결과를 업데이트한다.

Export Button은 메타데이터를 .txt 파일로 내보낸다.

VT scan Data 버튼은 현재 보고 있는 파일 해시를 통해 찾은 정보를 수집하고 메타데이터 트리에 추가한다.

스캔 영역에서 각 백신 공급 업체에서 탐지한 결과를 자세히 확인할 수 있다.

샘플 다운로드

다운로드 탭의 텍스트박스에 해시 목록을 입력하여 여러 샘플을 다운로드할 수 있다. zip 파일은 "codex" 암호를 가진다. 이 기능의 사용은 실제 악성코드를 다운로드 하는 것이기에 위험할 수 있다.

"File buttons functionality" 섹션에 설명된 다운로드 버튼을 사용하는 것과 같이 파일을 다운로드할 수 있다.

샘플 업로드

Codex Gigas는 선택한 샘플을 업로드하고, 파일의 메타데이터에 대한 자세한 정보를 수집하고 처리할 수 있는 기능을 제공한다. 우선 선택한 샘플을 업로드하라면 기능 패널에서 업로드 탭으로 이동한다. 다음 처럼 페이지가 표시된다.

여기서 파일을 업로드하려면 Browse... 버튼(그림에서는 Examinar...로 표시되어 있으나, 실제 구축하면 Browse...로 표시)을 클릭, 이동 그리고 체크하여 파일을 업로드한다.

성공적으로 업로드되면 파일의 SHA1 해시를 보여준다. 이 해시를 사용하여 Codex Gigas 엔진에 의해 분석된 해당 파일의 정보를 찾아 볼 수 있다.

대규모 샘플 업로드

시간을 절약하기 위해 여러 개의 파일을 업로드하길 원한다면 기능 패널의 Load 탭으로 이동한다. 그러면 다음과 같은 화면을 볼 수 있다.

Codex Gigas 홈 폴더에 위치한 files_to_load 폴더에 다수의 악성코드를 복사한 후 load를 클릭하면 한 번에 파일들이 데이터베이스에 분석되어 저장된다.

Codex Gigas의 샘플 처리

업로드된 파일은 해시(MD5, SHA1, SHA256)로 검색하거나, 이미 알고 있는 파일의 속성을 이용하여 메타데이터 정보를 얻을 수 있다. 이렇게 하려면 기능 패널에서 Process tab으로 이동하고 정보가 필요한 파일의 해시를 복사 붙여넣기 한 후에 Process 버튼을 클릭한다.

검색하려한 해시를 Codex Gigas에서 찾을 수 없는 경우 "Not Found"가 표시되고 리스트에서 누락된다. 원하는 필드를 처리한 후에는 Search 기능으로 검색할 수 있다.


Codex Gigas Thanks

다음 도구를 제작한 개발자들에게 감사의 인사를 드린다.

Projects


사용 후기

  • 웹 서버는 크롬 브라우저와 인터넷 익스플로러에선 원활하게 동작하지 않고 파이어폭스에서 잘 동작한다.
  • 어떤 데이터를 저장하고 운영할 것인지 자동화되어 고민할 필요는 없지만, 추가적으로 검색하여 새로운 정보를 추출하기 위해서는 분석가의 기억력에 의존해야한다.
  • 동적 분석으로 나오는 결과를 사용하는 부분이 없기 때문에 아쉽다.
    • Cuckoo나 MISP 등 섞어 사용하면 좋을 것 같다.


참고 사이트


본 문서는 (주)한국정보보호교육센터 f-NGS 연구소에서 의역하고 작성한 내용입니다.
Written and Translated by Hakawati in KISEC 40th


nightHawk Response

엘라스틱서치 백엔드에 동시에 존재하지 않는 포렌식 데이터를 시각화하기 위해 응용프로그램을 만들었다.

이 응용프로그램은 맨디언트 레드라인(Mandiant Redline)의 "collections" 파일을 흡수할 수 있도록 설계되어 검색/스택과 태그의 유연성을 제공한다.

응용프로그램은 하나의 창에서 여러 개의 조사 결과(또는 수백 개의 엔드포인트)를 제어할 수 없다는 것을 보고 만들었다.

레드라인 감사를 흡수하기 위해, nightHawk.GO를 만들었고, 이 프레임워크와 함께 사용하도록 Gopher 응용프로그램을 디자인했다. 응용프로그램에 대한 소스 코드는 이 저장소에서 사용할 수 있고, 바이너리는 컴파일되었으며, 부팅만으로 도구를 사용할 수 있도록 ISO를 준비해두었다.

Build

16/07/16 : Version 1.0.2

  1. Bug 수정 (토큰화와 매핑 업데이트)
  2. 글로벌 검색 에러 처리, 키워드 강조
  3. URL 도메인, DNS 스태킹(Stacking), 스태킹 레지스트리 수정
  4. 데이터 색인 재생성 유틸리티 추가 (사용 방법은 wiki article를 참조)
  5. 새 버전의 ISO를 다운로드하지 않고 yum으로 소스코드 업데이트할 수 있도록 기능을 추가 (사용 방법은 wiki article를 참조)
  6. 하루가 지나면 /opt/nighthawk/var/media 폴더의 오래된 수집 파일을 삭제 (또는 폴더 크기가 2GB 이상일 때)
  7. w32system 추가 (시스템 정보)
  8. hostname을 위해 postController에 정적 매핑을 삭제함
  9. default_field가 엘라스틱서치에 전달되지 않는 전체적인 감사 문제를 해결

기능:

비디오 데모: nightHawk Response Platform

  • 단일 보기 형식의 엔드포인트 포렌식(Single view endpoint forensics) (다수 감사 유형)
  • 글로벌 검색
  • 타임라인 생성
  • 스태킹
  • 태깅
  • 대화형 프로세스 트리 뷰
  • 여러 파일 업로드 & 지명 형식의 조사


nightHawk ISO

nightHawk를 사용자들이 쉽게 사용할 수 있게 모든 설정을 포함한 ISO를 만들어 준비했다.

  1. 최신 nightHawk 소스
  2. CentOS 7 Minamal에 nightHawk 운영에 필요한 핵심 라이브러리를 포함
  3. 리버스 프록시에서 Nginx와 UWSGI를 설치(이미 구성되고 최적화됨), SSL 활성화됨
  4. 최신 엘라스틱서치/키바나 (원하는 경우 키바나는 웹 서비스 열람 가능)
  5. 모든 핵심 서비스를 위한 Sysctrl
  6. 모든 핵심 서비스를 위한 (rotated) 로그
  7. 시스템 설정 구성의 모든 리스트는 `/opt/nighthawk/etc/nightHawk.json' 파일에서 찾을 수 있음

시스템 구성:

제공된 ISO를 이용하여 VM을 구축할 때 다음 사항들을 고려한다.

1. CPU/RAM

pending: 노드 당 할당된 시스템 메모리의 1/4이 듀얼 노드로 엘라스틱 서비스로 설정한다. 이것이 의미하는 것은 2기가 램이면, 각각 ES 노드가 512메가가 되고, 시스템은 1기가로 유지된다.

기타 다른 방법으로 설정하기를 원한다면, SSH로 접속하는 방식으로 구성할 수 있다.

2. HDD

최소 20기가 고려해야 한다. 감사 파일이 클 수 있기에 많은 컬렉션을 흡수하고 처리하기 위해 저장소는 많이 할당하는 것이 좋다.

pending: 대규모 크기의 인스턴스를 위해 사용자 기반 저장소를 설정한다.  별도의 파티션을 원하는 경우, 몇 가지 변경을 통해 새 파티션으로 ES 데이터 저장소를 가리키도록 직접 작업할 수 있다.

설치:

  • ISO 다운로드: nightHawk v1.0.2
  • 하드웨어 구성하고 ISO를 VM에 마운드 하면 설치 스크립트가 시작
  • 한 번에 완료되고, 브라우저 (크롬/파이어폭스)로 https://192.168.42.173에 접속
  • 키바나에 접속하고 싶다면 https://192.168.42.173:8443에 접속
  • SSH로 접속하고 싶다면 로그인은 admin/nightHawk를 사용
  • 아이피를 변경하고 싶다면 (응용프로그램 전체에 반영) /opt/nighthawk/bin/nighthawkctl set-ip <new_ipaddress>를 이용
  • 깃허브 저장소의 루트 경로에 있는 레드라인 감사 수집 스크립트(MemoryzeAuditScript.xml)를 사용하여 nightHawk를 채울 수 있는 기록을 생성할 수 있음

업로드:

업로드를 위한 감사 zip 파일 생성 (레드라인 독립형 수집기):

step_1: Sessions\AnalysisSessionX\Audits\<ComputerName> 로 이동하는데, X는 대부분 1 임

step_2: 예로 20160708085733 감사 파일을 포함하는 폴더를 zip 파일로 생성

step_3: 20160708085733.zip 파일을 업로드

중요: 기존 HX 감사 파일 사용 (HX 수집기): 파이어아이 HX 감사는 마지막에 .mans로 끝나는 확장자다. .mans 파일이 실제 zip 파일이기에 HX 감사는 레드라인 수집기와 다르다. 다시 말해서 위에서 언급한 레드라인 감사 파일을 압축하여 업로드하는 것과 달리 .mans 파일을 직접 업로드할 수 있음을 의미한다.

내비게이션 바에서 "Upload" 아이콘을 선택하여 감사 .zip (또는 여러 개) 파일을 선택하고, 사건 이름(입력하지 않으면 시스템이 자동 생성) 입력하여 제출한다. 레드라인 감사 스크립트를 이용하여 수집하였다면, 위에서 언급한 "레드라인 수집기" 지침에 따라 수행한다.

한번 처리되면, 엔드포인트는 "Current Investigation" 트리 노드에 표시될 것이다. 엔드포인트에서 해당 엔드포인트에 사용할 수 있는 모든 감사 유형이 표시된다. 웹 응용프로그램의 업로드 기능은 엘라스틱서치에 밀어 넣는 데이터와 레드라인 감사를 분석하는 것을 GO 응용프로그램이 popen 서브 프로세스를 호출하여 생성한다. 업로드를 위한 두 개 옵션이 있는데 하나는 순차적이고 다른 하나는 동시에 진행한다.

참고: 동시에 업로드하는 것은 자원을 많이 소비하기에 한 번에 5개로 제한하는데, 스펙이 낮은 컴퓨터인 경우 2-3개로 제한할 수 있다.

태깅:

데이터에 태그하기 위해서 (응답 보기에서) 모든 테이블에 모든 행을 클릭할 수 있다. 한번 태그되면 코멘트 보기에서 코멘트를 볼 수 있다.

엘라스틱서치:

사용자 정의 매핑(git 루트에서 제공)과 그에 따른 의견은 다음에서 볼 수 있다.

1. 상위/하위 관계:

기록은 상위/하위 관계를 GO 언어로 작성된 앱을 통해 인덱싱 된다. 이렇게 선택한 이유는 기록한 것을 잘 볼 수 있도록 상대적 논리 경로를 제공할 수 있기 때문이다. 즉, 상위는 엔드포인트 이름이고 하위는 감사 유형이다. 상위/하위 관계 기록을 추려내는 것은 규모를 볼 수 있어 이해하기 좋다. 특정 감사 유형에 대한 모든 하위 기록을 추려내기 위해 배열에 상위 데이터를 구축하는 것이 필요하다. 이때 스태킹 프레임워크가 사용된다.

2. 조각내기:

엘라스틱서치 설치는 튜닝 및 적절한 설계를 요구한다. 조각내기<sup>sharding</sup>는 상위/하위 기록을 연결하고 있기 때문에 이해하는 것이 중요하다. 하위는 항상 상위에 전달되며, 그 자체로는 존재할 수 없다. 이것이 의미하는 것은 인덱스가 얼마나 많은 조각들에 의미를 부여하는 가다. 우리가 이해할 것은 단편 조각들과 함께 많은 노드를 encorporated로 선택하여 설치하는 것이 현명할 수 있다는 것이다. 이러한 설치에서 성능을 개선하기 위해서는 조각의 경로를 검색하는 방법이다.

우리는 빠른 검색을 위한 취적의 구성을 설계하려고 노력한다.

3. 규모:

nightHawk 응용프로그램은 확장할 수 있도록 설계되었다. 초기 디자인 주제에서, 우리는 약 4백만 개 이상 기록(또는 50대의 엔드포인트를 소화)을 3 ES 노드(맥북 프로)를 포함하는 단일 CPU 2gb 우분투 VM으로 무리 없이 동작시켰다. 응용프로그램을 64/128기가 램과 SAS 저장소를 설치하여 운영하는 것이 응용프로그램이 한꺼번에 분석하여 빠르 응답 시간을 유지할 수 있다.

고려 사항:

1. 혼합 처리한 DataTables:

테이블에 있는 모든 기록을 표현하기에는 덩치가 큰 여러 가지 감사 유형을 소화해야 한다. 예를 들면, URL 사용 내역과 레지스트리는 15k 크기의 DOM 문서를 반환하는데 이 문서를 렌더링하는 사용자의 브라우저는 부담을 느낄 것이다. 이러한 부담을 방지하기 위해 감사 유형을 포함하는 결과 페이지는 서버에서 처리하도록 구성했다. 다시 말해서 백엔드에 엘라스틱서치를 사용하여 기록에서 감사 유형을 검색할 수 있음을 의미한다.

2. 태깅:

현재 기록을 태그하고 그 의견을 볼 수 있다. 이 태그는 업데이트하거나 변경할 수 있다. 분석가는 기록에 날짜/분석 이름/설명과 같은 것을 제공할 수 있다.

종속적인 응용프로그램 (사전에 모두 설치):

elasticsearch-dsl.py

django 1.8

python requests

앞으로 해야할 것:

  • 프로세스 처리 (진행 중)
  • 시간 기반 생성기를 위한 시간 선택 슬라이더 (진행 중)
  • 현재/이전 조사를 위한 콘텍스트 메뉴
  • 태그 콘텍스트. 태그 시스템은 분석 창에서 실시간 설명을 위해 웹소켓 루프로 통합할 예정(진행 중)
  • 응용프로그램 콘텍스트
  • 서로 다른 콘텍스트 사이를 넘나드는 능력
  • 잠재적으로 조사한 날자를 운용하기 위한 노드 트리를 재설계
  • 선택적 스태킹, 현재 루트 노드를 선택하는 것은 가능
  • 조각 경로를 검색
  • 레드라인 감사 스크립트 템플릿
  • AngularJS와 광범위한 통합 (진행 중)
  • 반응형 디자인 (진행 중)
  • 핵심 설정의 구성을 위한 관리 제어 페이지 (진행 중)

제작자 & 참고:

우리는 항상 프로젝트에 기여하길 원하는 분들을 찾고 있다. 당신이 원하는 무언가를 요청하길 바라고 그것이 좋은 아이디어인 경우에 병합할 생각은 있지만 웹 디자인은 의미가 없다.

Daniel Eden & Roshan Maskey

Credits:

Mandiant Redline devs, AngularJS, Django devs, Angular-DataTables/DataTables, D3(Bostock), Elasticsearch/ES-dsl.py, jsTree, qTip, GOlang, Python, Fahad Abdulaal(Logo/Video).


스크린샷


설치

가상머신 설정, ISO 마운트 그리고 설치

가상머신을 설정할 때 CentOS 64비트로 구성한다.

번역한 내용을 살펴보면 64기가 메모리 등 높은 사양을 요구하기에 사용자가 줄 수 있는 최대의 사양을 부여한다.

1. CPU/RAM/HDD

  • Number of processors: 2
  • Number of cores per processor: 4
  • Memory: 4GB
  • 50GB

구성이 완료되었다면 다운로드받은 nightHawkResponse.iso 파일을 마운트한다.

이제 가상머신을 실행하면 설치할 수 있는 항목을 볼 수 있다.

Install nightHawk Response v1.0.2를 선택하면 바로 설치가 진행된다.

설치가 완료되면 다음과 같이 로그인 할 수 있는 화면으로 전환된다. 아이디와 비밀번호는 admin/nightHawk 다.

아이피, DNS 설정, 패키지 업데이트

아이피가 고정으로 192.168.42.173이 설정되어 있다. 아이피 설정을 바꾸기위해 로그인 한다. 설정을 바꾸기 위해 다음과 같이 명령을 이용한다. nightHawk는 CentOS 7 minimal 버전을 사용하고 있기에 SELinux가 적용되어 enforce mode로 동작한다. 따라서 sudo 명령을 함께 사용한다.

sudo /opt/nighthawk/bin/nighthawkctl set-ip 192.168.0.128

nightHawk는 yum으로 업데이트가 가능하다. 따라서 DNS를 설정하여 최신버전의 nightHawk가 존재하는지 확인한다. DNS 설정을 위해 nmtui 명령으로 DNS를 설정한다.

nmtui

설정이 완료되었다면, 네트워크 서비스를 재시작한다.

sudo service network restart

www.google.com 도메인으로 핑 테스트하여 원활하게 통신하는지 확인한다.

새로운 패키지 정보를 갱신한다.

sudo yum check-update

nightHawk 패키지를 업데이트한다. 최신버전이면 추가 설치가 없이 종료된다. 먼저 nightHawk와 관련된 패키지들을 살펴보자.

yum list installed | grep nighthawk*
nighthawk.x86_64                   0.1-1.el7.nhr                       @anaconda
nighthawk-elastic.x86_64           0.1-1.el7.nhr                       @anaconda
nighthawk-kibana.x86_64            0.1-1.el7.nhr                       @anaconda
nighthawk-release.x86_64           0.1-1.el7.nhr                       @anaconda
업데이트를 통해 추가 설치할 요소가 있는지 살펴본다.

sudo yum update nighthawk*
[sudo] password for admin:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.navercorp.com
 * epel: mirror.premi.st
 * extras: mirror.navercorp.com
 * updates: mirror.navercorp.com
No packages marked for update

모든 준비가 끝났다면, 브라우저를 이용하여 할당한 아이피로 접근하여 nightHawk를 사용할 수 있다.

테스트

nightHawk가 정보를 가공하는 것을 보려면, 정보가 필요하다. 이 정보는 앞서 번역한 내용처럼 레드라인을 이용하거나 HX 콜렉터를 이용할 수 있다. 하지만 이러한 도구를 이용하기 전에 간단하게 테스트할 수 있도록 깃허브의 nighthawk_utils 폴더에는 샘플로 20160707054834.zip 파일을 제공한다. 이 파일을 다운로드 받고 웹으로 업로드하여 분석 결과를 확인해보자.

업로드는 .zip 파일을 압축 해제하지 않고 업로드한다.

파일은 /opt/nighthawk/var/media에 업로드된다.

pwd
/opt/nighthawk/var/media
ls -al
total 12692
drwxr-xr-x. 2 nighthawk nighthawk     4096 Jul 21 07:24 .
drwxr-xr-x. 9 nighthawk nighthawk     4096 Jul 21  2016 ..
-rw-rw-rw-. 1 nighthawk nighthawk 12987319 Jul 21 07:24 20160707054834.zip

nightHawk가 분석을 완료하면 다음과 같이 볼 수 있다.


사용 후기

  • 처리 속도가 엄청 느림
    • 가상머신 스펙 때문인듯
  • 브라우저 렌더링 속도도 엄청 느림
    • 레드라인으로 직접 수집한 데이터를 파싱시켰을 때 분석 및 열람이 거의 불가능
  • 그래도 샘플을 이용했을 땐 좀 볼 수 있음
    • Response 기능과 Global Search만
    • Timeline 기능은 애매하게 동작
    • Stacking 기능이 가장 중요한 것 같지만 오래걸림
  • 감사 수집 스크립트(MemoryzeAuditScript.xml)를 깃허브에서 제공하는데 어떻게 사용할지 고민
  • 편리하게 사용할 수 있도록 iso를 제공하지만, 깃허브의 소스코드는 어떻게 컴파일하고 운영할지에 대한 내용이 없음
  • 요구 스펙이 큰걸 보았을때 개인적으로 사용하거나 운용하기 힘들어 보임


참조 사이트


본 문서는 (주)한국정보보호교육센터 f-NGS 연구소에서 의역하고 작성한 내용입니다.
Written and Translated by Hakawati in KISEC 40th

+ Recent posts