0. 소개
Timesketch는 오픈소스 웹UI 타임라인 분석 도구로, 다수의 분석가들이 한 사건에 대해 다수의 타임라인을 업로드하여 협업하여 분석이 가능하다. 주석, 태그 등의 편의 기능도 제공한다.
1. Timesketch 도커 컨테이너 실행
먼저 아래 명령으로 docker-compose를 설치한다.
$ sudo apt install docker-compose
이후 아래 Deployment Helper 스크립트를 다운로드하고 실행 권한을 부여한다.
$ curl -s -O https://raw.githubusercontent.com/google/timesketch/master/contrib/deploy_timesketch.sh
$ chmod 755 deploy_timesketch.sh
Timesketch 데이터를 저장할 디렉터리로 이동한다. Elasticsearch와 PostgreSQL 데이터가 저장될 것이므로 용량이 충분히 많아야 한다. 그리고 Deployment Helper 스크립트를 실행한다.
$ cd /opt
$ sudo ~/deploy_timesketch.sh
이제 timesketch 디렉터리로 이동하여 docker-compose up 명령으로 도커 컨테이너를 생성하고 실행한다. 위에서 스크립트가 만들어준 docker-compose.yml 파일 설정에 따라서 필요한 도커 이미지를 받아와 실행할 것이다.
$ cd timesketch
$ sudo docker-compose up -d
아래 명령으로 Timesketch 관련 컨테이너들이 제대로 실행중인지 확인한다.
$ sudo docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------
timesketch_elasticsearch_1 /tini -- /usr/local/bin/do ... Up 9200/tcp, 9300/tcp
timesketch_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
timesketch_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
timesketch_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
timesketch_timesketch-web_1 /docker-entrypoint.sh time ... Up
timesketch_timesketch-worker_1 /docker-entrypoint.sh time ... Up
Timesketch 웹UI 접근을 위한 계정을 아래 명령을 통해 생성한다.
$ sudo docker-compose exec timesketch-web tsctl add_user --username [아이디] --password [패스워드]
외부에서 http://[IP주소]에 접근하면 위에서 설정한 아이디/패스워드로 로그인할 수 있다.
2. Timesketch 타임라인에 Plaso 스토리지 파일 추가
Plaso 사용법은 이전 글에 다뤘다. log2timeline 명령을 통해 생성된 Plaso 스토리지 파일을 Timesketch 타임라인에 추가할 수 있다. 방법은 웹UI를 이용한 방법, Timesketch 컨테이너의 psort를 이용하는 방법, Import 클라이언트를 이용하는 방법이 있다. 셋 중 하나로 Plaso 파일을 타임라인에 추가해주면 된다.
웹UI를 사용하는 방법
웹UI에서 새 스케치 (Investigation)를 생성하여 들어가보면 타임라인 업로드 버튼이 있다. 이 버튼을 이용해 Plaso 스토리지 파일 업로드가 가능하다.
Timesketch 컨테이너의 psort를 사용하는 방법
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
현재 최신버전인 Timesketch 20201120 버전에서는 psort로 timesketch 형식 사용 시 매핑파일 에러가 난다. 에러가 수정되면 이 부분은 삭제할 예정이다. 에러가 수정될 때까진 웹UI를 사용하는 방법을 사용해야 한다.
ERROR: No such Elasticsearch mappings file: data/timesketch.mappings.
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Timesketch 도커 이미지는 Plaso를 포함하고 있다. 따라서 psort 명령의 출력 형식으로 timesketch를 지정할 수 있다. 아래는 실행중인 Timesketch 컨테이너의 /tmp 디렉터리에 test.plaso를 복사하고, psort를 이용해 타임라인을 추가하는 명령이다.
$ sudo docker cp "/tmp/test.plaso" "timesketch_timesketch-web_1:/tmp"
$ sudo docker exec -it "timesketch_timesketch-web_1" psort.py -o timesketch --name "test" /tmp/test.plaso
$ sudo docker exec -it "timesketch_timesketch-web_1" rm /tmp/test.plaso
Timesketch Import Client를 사용하는 방법
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
현재 최신 버전인 Timesketch Import Client 20210215 버전에서는 업로드 시 마지막 chunk를 업로드하면서 사이즈 에러가 난다. 에러가 수정되면 이 부분은 삭제할 예정이다. 에러가 수정될 때까진 웹UI를 사용하는 방법을 사용해야 한다.
RuntimeError: Error uploading data chunk: 16/17. Status code: 400 - BAD REQUEST {"message": "Unable to save file correctly, inconsistent file size (66330624 but should have been 1744052224)"
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Timesketch는 파일을 import할 수 있는 클라이언트를 제공한다. 아래 명령으로 클라이언트를 설치해주면 timesketch_importer 명령을 사용할 수 있게 된다.
$ sudo pip3 install timesketch-import-client
아래와 같이 timesketch_importer 명령에 plaso 파일을 지정해주면, 처음 실행 시 서버 주소, 인증방법(user/pass 또는 oauth), 타임라인 이름 등을 설정하는 프롬프트가 뜬다. 세팅에 따라 적절히 입력해준다. 서버 URL의 경우 http://나 https://를 꼭 붙여줘야 한다.
$ timesketch_importer /tmp/test.plaso
[2021-02-23 00:32:40,243] timesketch_api.config_assistance/WARNING No timesketch section in the config
What is the value for <host_uri> (URL of the Timesketch server): http://x.x.x.x
What is the value for <auth_mode> (Authentication mode, valid choices are: "userpass" (user/pass) or "oauth"): userpass
What is the value for <username> (The username of the Timesketch user): [아이디]
Password for user [아이디] [**]
[2021-02-23 00:33:15,670] timesketch_api.crypto_client/INFO File does not exist, creating it.
[2021-02-23 00:33:15,747] timesketch_api.crypto_client/INFO Credentials saved to: /home/user/.timesketch.token
[2021-02-23 00:33:15,748] timesketch_importer.importer_frontend/INFO Creating a client.
[2021-02-23 00:33:16,253] timesketch_importer.importer_frontend/INFO Client created.
[2021-02-23 00:33:16,253] timesketch_importer.importer_frontend/INFO Saving TS config.
What is the timeline name [test]: test
[2021-02-23 00:33:24,497] timesketch_importer.importer_frontend/INFO Uploading file.
만약 위의 내용을 잘못 입력한 경우, 설정 파일인 ~/.timesketchrc 파일과 ~/.timesketch.token 파일을 삭제하고 다시 timesketch_importer 명령어를 실행해주면 새로운 프롬프트가 뜬다.
$ cat ~/.timesketchrc
[timesketch]
host_uri = http://x.x.x.x
username = [아이디]
verify = True
client_id =
client_secret =
auth_mode = userpass
cred_key = [CRED_KEY_STRING]
참고자료
Install Timesketch with Docker
'컴퓨터 > 보안' 카테고리의 다른 글
[시놀로지 DS220j] admin 계정 무차별 대입 공격 차단 (0) | 2021.09.16 |
---|---|
슈퍼 타임라인 분석도구 - Plaso (도커 기반) (0) | 2021.02.23 |
stunnel + OpenVPN 구축하기 (안드로이드 클라이언트) (0) | 2021.02.10 |
stunnel + OpenVPN 구축하기 (윈도우10 클라이언트) (23) | 2021.02.10 |
stunnel + OpenVPN 구축하기 (Ubuntu 20.04 서버) (3) | 2021.02.10 |