본문 바로가기

어느 한 분야를 전문적으로 연구함. 또는 그 분야./정보를 여러가지 위협으로부터 보호

바이퍼(Viper) #04 - 스토어(Store) 명령

[Tools/Linux] - 바이퍼(Viper) #01 - 개요 및 설치

[Tools/Linux] - 바이퍼(Viper) #02 - 프로젝트(Project)

[Tools/Linux] - 바이퍼(Viper) #03 - 샘플파일 수집




1. 스토어 (Store)


스토어 명령은 외부에 있는 저장소에서 파일이나 압축 파일(ZIP)을 바이퍼 저장소에 저장하는 역할을 하는 명령어이다. "바이퍼(Viper) #03 - 샘플파일"에서 다운로드 받은 악성코드를 저장한다. 저장하기 전에 해야할 것은 프로젝트를 선택한다.


도움말을 살펴보면 -d 원본 파일 삭제, -f 폴더 선택, -s 파일사이즈 선별, -y 파일 포맷 설정, -n 파일 이름, -t 태그 입력 기능을 가진다. 다만, -s 파일사이즈 선별 기능은 제대로 동작하지 않는다. -y 옵션을 사용할 때 유의 사항은 대문자로 사용한다. -n 옵션 뒤에 파일 이름을 입력하는데 asterisk(*) 를 사용할 수 있다.


store 명령 도움말


-s 옵션을 사용하지 못하는 이유는 관리자가 입력한 정수형의 값을 처리하는 과정 정수형으로 처리하지 않고 문자형으로 처리하기 때문에 발생하는 문제이다. 해결 방안은 viper/update.py를 수행하여 바이퍼를 업데이트하면 사용할 수 있다. 패치되는 소스코드는 viper/viper/core/ui/commands.py 에서 확인 할 수 있다.


소스코드 디핑


store -f 명령을 통해 사전에 다운로드 받은 악성코드를 저장한다. 디렉토리를 지정할때 절대경로, 상대경로 모두 써도 된다. 등록될때는 project 디렉토리에 sha 256 해시값에 따라 디렉토리를 생성하여 저장된다. 이러한 과정은 viper/viper/core/storage.py 에서 확인할 수 있으며, 해당 프로젝트 디렉토리에서 tree 명령을 통해 확인 할 수 있다.


sudo apt-get install tree


디렉토리 내 파일 저장


저장된 파일 디렉토리화


만약 등록하는 과정에서 동일한 해시값을 가지고 있다면, Skip 이 발생하여 저장하지 않는다.


Skip이 발생하는 경우


저장한 악성코드는 프로젝트 디렉토리 안에(viper/projects/fngs1/) viper.db로 데이터베이스가 생성된다. 이 데이터베이스는 sqlite3로 확인할 수 있다.

sudo apt-get install sqllite3


.tables 명령으로 테이블을 확인하면 malware 테이블이 존재한다. 이 테이블 안에 저장된 파일에 대한 정보를 볼 수 있다.


Sqlite3 데이터베이스 확인



티스토리 툴바