본문으로 바로가기


바이퍼 메인 이미지


1. 바이퍼(Viper)


바이퍼(Viper)는 독사를 의미하는 단어로, 이 문서에서 테스트할 도구 이름이다. 파이썬으로 제작되어 있고, 비단뱀 이름인 파이썬과 바이퍼는 매우 잘 어울리는 이름 같다. 바이퍼 홈페이지 문서 서두에서는 이 도구를 이렇게 설명하고 있다.


바이퍼는 바이너리 분석과 관리할 수 있는 프레임워크이다. 이 도구의 근본적인 목적은 시간이 지남에 따라 매일 하는 연구를 쉽게하게 하기 위해 악성코드와 공격 샘플을 수집하는 것 뿐만 아니라 만들거나 발견한 스크립트까지 수집하여 간단하게 구성 하여 해결책을 제공한다. 악성코드 연구가들을 위한 메타스플로잇(Metasploit)으로 생각한다. 이 도구는 임의의 파일을 분석하고 검색하는 것과 함께 저장하는데 사용 할 수 있는 터미널 인터페이스를 제공하는 프레임워크로 다양한 종류의 플러그-인들을 쉽게 만들 수 있다. 

http://viper-framework.readthedocs.org/en/latest/index.html


바이퍼는 파이썬 오픈소스로 제작되어 있으며, 현재까지도 지속적으로 업데이트를 진행 하고 있는 도구이다. 바이퍼의 색다른 특징은 PrettyTable 모듈과 바이퍼 프레임워크에 있다. PrettyTable 모듈을 사용해서 아스키 코드를 이용한 테이블로 표현했고, 바이퍼 프레임워크는 터미널의 커맨드 라인으로 인터페이스를 제공하기 때문에, 이 방법은 마치 MySQL과 같은 데이터베이스를 커맨드 라인으로 제어하는 느낌을 가져다 준다.


바이퍼 터미널 인터페이스


2014년 11월 바이퍼가 기능을 업데이트 했다. 추가된 기능에서 핵심적인 부분은 커맨드 라인 인터페이스(CLI)가 아닌 웹 인터페이스를 사용한다. 파이썬 bottle 라이브러리를 이용하여 간략한 웹 서버를 운영하고 이를 통해 그래픽 유저 인터페이스(GUI)로 관리할 수 있게 되었다.


바이퍼 그래픽 인터페이스


2. 설치


도구를 구축하기 위한 플랫폼으로 우분투 12.04 LTS 64비트 환경을 사용했다. 바이퍼를 설치하기 위해서는 선행으로 설치하는 리눅스 패키지와 파이썬 라이브러리들이 있다.


2.1. 선행 설치

$ sudo apt-get install git libfuzzy-dev curl python-pip python-socksipy torsocks python-dev swig libssl-dev
  • git - github를 이용하여 Viper 및 기타 모듈을 다운로드 받기 위해 설치
  • libfuzzy-dev - SSDEEP 및 다양한 해시를 사용하기 위해 설치하는 라이브러리
  • curl - 간단한 http 패킷을 생성하는 도구로 여기서는 api.py와 통신하기 위해 설치
  • python-pip - 파이썬 전용 저장소(레파지토리:Repository)를 이용하여 파이썬 라이브러리를 설치하기 위해 설치
  • python-socksipy - Viper가 토르(Tor) 네트워크를 사용하기 위해 설치하는 파이썬 라이브러리
  • torsocks - 토르 네트워크를 사용하기 위해 설치
  • python-dev - 파이썬 모듈 구축을 위한 정적 라이브러리와 개발자 도구에 사용되는 파이썬 헤더파일을 설치하여 파이썬 인터프리터 기능 확장을 위해 설치
  • swig - 파이썬에 C 함수를 사용할 수 있게 지원하는 패키지
  • libssl-dev - OpenSSL이 제공하는 암호화 관련 헤더파일을 제공 받기 위해 설치

2.2. 바이퍼 설치


선행 설치가 끝나면 바이퍼를 다운로드 받는다.

$ git clone https://github.com/botherder/viper

2.3. 필수 파이썬 라이브러리 설치


필수 설치는 바이퍼를 운영하는데 있어 핵심적인 파이썬 라이브러리들이다. Github를 통해 다운로드 받은 바이퍼의 파일들 중에 requirements.txt 가 있다. 이곳에 파이썬 라이브러리 리스트가 들어있고, pip 명령을 통해 모두 설치할 수 있다.

$ cd viper
/viper$ sudo pip install -r requirements.txt


바이퍼 1.2 버전으로 릴리즈 되면서 bottle, pylzma, pyelftools, bitstring, dnspython 등 다양한 파이썬 라이브러리들이 추가 되었다. 

  • python-magic - 파일 포맷을 선별해주는 파이썬 라이브러리
  • pefile - PE 구조에 대한 분석을 지원하는 파이썬 라이브러리
  • prettyTable - ASCII 형태로 만든 테이블로 데이터를 표현하는 라이브러리
  • pydeep - SSDEEP 해시를 사용할 수 있는 파이썬 라이브러리
  • requests - http 파이썬 라이브러리
  • SQLAlchemy - 파이썬 sql 툴킷
  • pycrypto - 파이썬 암호화 모듈
  • OleFileIO_PL MS - OLE2 파일 분석 파이썬 모듈
  • BeautifulSoup4 - HTML, XML 파이썬 파서
  • bottle - 파이썬을 위한 빠르고, 간단하고, 가벼운 웹 프레임워크
  • pylzma - 압축 해제를 위한 파이썬 LZMA 라이브러리
  • pyelftools - ELF 파일 분석을 위한 파이썬 라이브러리
  • bitstring - 이진 데이터 구조, 분석 수정을 위한 파이썬 라이브러리
  • dnspython - 파이썬으로 제작된 DNS 툴킷
  • pyexiftool - exif 메타데이터를 이용하기 위한 파이썬 라이브러리
  • pyasn1 - ASN.1 형태와 코드를 실행하기 위한 파이썬 라이브러리
  • M2Crypto - OpenSSL의 다양한 암호화 기능을 사용하기 위한 라이브러리

2.4. 업데이트

오픈 소스 도구이기에 기능 개선 그리고 버그 수정 등 잦은 업데이트를 진행한다. 다음 소스코드를 update.py 소스코드에 추가하여 업데이트를 진행한다. 만약 다음 소스코드를 사용하지 않고 update.py를 이용하려면 매번 디렉터리 생성 에러에 직접 디렉터리를 생성해야 한다.

update.py의 기능은 github에 저장된 바이퍼 master 브런치를 zip 압축파일로 다운로드 받고 압축을 해제하는 형태로 진행된다.

바이퍼 업데이트


3. 실행


우선 웹 서버를 이용한 그래픽 인터페이스를 살펴보기 앞서 기존에 오랫동안 운영되어 왔었던 커맨드라인 인터페이스를 실행시키면 다음과 같이 실행된다. 하지만, 다양한 바이퍼의 모듈들을 사용하기에 추가 설치가 필요하다.


커맨드라인 인터페이스 실행 화면



저작자 표시 비영리 동일 조건 변경 허락
신고

댓글을 달아 주세요

  1. 바이퍼 신고">2017.11.02 16:42 신고

    안녕하세요. 블로그 정보 유용하게 잘 보고있습니다. 궁금한 점이 한가지 있어 문의드립니다. 혹시 2.4번의
    update.py 소스코드가 따로 있는건가요..? 답변 부탁드립니다.

티스토리 툴바