[태그:] Cuckoo Sandbox

  • Cuckoo Sandbox Install

    Cuckoo Sandbox 구축 순서:

    🌟 기본 패키지 및 라이브러리 설치

    🌟 cuckoo 코어 설치

    🌟 sandbox 구성

    🌟 cuckoo 웹 데이터베이스 구성

    🌟 cuckoo 설정 및 실행


    1. 기본 패키지 및 라이브러리 설치
    • 패키지 및 라이브러리 설치할 준비를 위해 업데이트.
    sudo apt-get update

    1) 기본 패키지 및 라이브러리 설치

    현재 버전 22.04 기준으로 구축시 python2.7, python3 혼용 설치 필요.

    sudo apt-get install python2.7 python2.7-dev python3 python3-dev python3-pip

    pip 2버전을 설치하기 위해 다음과 같은 command:

    sudo add-apt-repository universe
    sudo apt-get install curl
    curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
    sudo python2.7 get-pip.py

    유니버스 리포지토리 활성화 후, curl 스크립트로 다운로드하여 pip를 설치.

    나머지 라이브러리 설치 진행:

    sudo apt-get install subversion
    sudo apt-get install libssl-dev libjpeg-dev zlib1g-dev libffi-dev git
    sudo apt-get install automake autoconf libtool build-essential wget swig
    sudo apt-get install libpcre3 libpcre3-dev libpcre++-dev -y
    sudo apt-get install python3-magic python3-dpkt python3-sqlalchemy python3-jinja2 -y
    sudo apt-get install python3-pymongo python3-bottle python3-virtualenv python-setuptools -y

    2) tcpdump

    • tcpdump

    네트워크 상 송수신되는 패킷들의 정보들을 가로채(스니핑) 정보들을 표시해주는 네트워크 패킷 캡처 및 분석도구.

    cuckoo sandbox에서는 분석 중 malware에 의해 생성된 네트워크 트래픽을 캡처하고 분석하여 데이터를 제공.

    다음 command를 통해 tcpdump와 apparmor-utils 설치:

    sudo apt-get install tcpdump apparmor-utils

    app armor를 비활성화하고, tcpdump를 root 권한 없이 사용할 수 있도록 설정:

    sudo aa-disable /usr/bin/tcpdump
    sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/tcpdump

    ※ tcpdump issue : https://jihyun-dev.tistory.com/4

    tcpdump directory issue: /usr/sbin/tcpdump
    나같은 경우에는 cuckoo sandbox를 사용하기 위해 tcpdump가 필요했고… 다른 이유로도 tcpdump가 필요한 분들이 있겠지만 아무튼 최신 버전의 문제인지 몰라도 계속 에러 발생. 근데 어쩐지 그 에러들
    jihyun-dev.tistory.com

    3) ssdeep, pydeep

    (1) ssdeep 설치

    • ssdeep

    Fuzzy Hash를 사용하여 원본 파일과 유사도 측정, Hash 값을 통해 무결성 체크.

    sandbox에 submit된 파일의 Hash값을 통해 malware의 변종인지 비교하는데 사용, 관련있는 파일을 빠르게 식별.

    다음 command를 통해 ssdeep.tar.gz 파일 다운로드 및 압축해제:

    wget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.13/ssdeep-2.13.tar.gz
    tar zxf ssdeep-2.13.tar.gz
    rm -r ssdeep-2.13.tar.gz
    mv ssdeep-2.13 ssdeep

    ssdeep 디렉터리로 이동하여 설정:

    cd ssdeep
    ./configure && make && make install
    sudo ldconfig

    (2) pydeep

    • pydeep

    cuckoo sandbox에 있어서 pydeep은 Fuzzy Hashing을 수행, 파일을 cuckoo sandbox에 submit하면 pydeep이

    해당 파일에 대한 CTPH Hash를 생성하고 알려진 Hash 데이터베이스와 비교하여 분석 진행.

    즉, 잠재적으로 악성일 파일을 효율적으로 분석 및 식별 가능.

    다음 command를 통해 pydeep 설치:

    git clone https://github.com/kbandla/pydeep.git pydeep
    cd pydeep
    sudo apt-get install libfuzzy-dev
    python3 setup.py build
    sudo python3 setup.py install

    4) pefile

    • pefile

    실행파일(.exe), DLL 및 기타 바이너리 파일에 사용하는 파일 형식인 PE(Portable Executable)파일에 작업하는

    Python 모듈. malware 분석에서 PE파일의 정보 추출이 가능하며, 추출 정보는 주로 파일의 목적, malware 여부,

    실행 시 어떤 동작을 보이는지 파악하는데 사용.

    다음 command를 통해 PE file 다운로드:

    wget https://github.com/erocarrera/pefile/releases/download/v2023.2.7/pefile-2023.2.7.tar.gz
    tar zxf pefile-2023.2.7.tar.gz
    rm -r pefile-2023.2.7.tar.gz
    mv pefile-2023.2.7 pefile

    pefile 디렉터리로 이동하여 설치:

    cd pefile
    python3 setup.py build
    sudo python3 setup.py install

    5) yara

    • yara

    malware 패턴 매칭 및 탐지에 사용. 특정 malware의 동작이나 특성을 식별하기 위해 yara rule을 생성하고

    이 rule을 사용하여 파일, 메모리에서 잠재적인 malware를 검사 가능(Signature 기반 탐지)

    yara-4.3.0.tar.gz 파일을 다운로드:

    wget https://github.com/VirusTotal/yara/archive/refs/tags/v4.3.0.tar.gz
    tar zxf v4.3.0.tar.gz
    rm -r v4.3.0.tar.gz
    mv yara-4.3.0 yara

    yara 디렉터리로 이동, 설치 및 설정 완료:

    cd yara
    sudo apt-get install libtool*
    ./bootstrap.sh
    ./configure
    make
    sudo make install

    yara를 python에서 사용할 수 있도록 다음 command를 통해 yara-python 설치:

    git clone --recursive https://github.com/VirusTotal/yara-python
    cd yara-python
    python3 setup.py build
    sudo python3 setup.py install

    6) m2crypto

    • m2crypto

    암호화, 암호 해독 및 디지털 서명 등 암호화 기능에 사용되는 Python 라이브러리.

    SSL/TLS 암호화 및 디지털 인증서 관리와 같은 네트워크 보안 애플리케이션에 사용.

    다음 command를 통해 m2crypto를 설치:

    sudo pip install m2crypto

    7) Volatility

    • Volatility

    메모리 덤프에서 malware나 해킹, 기타 보안 사고 증거를 분석하는데 사용되는 메모리 포렌식 도구.

    실행 중인 프로세스, 개방형 네트워크 연결 및 보안 문제를 나타낼 수 있는 기타 시스템 활동에 대한 정보 추출하는데

    사용.

    volatility를 git clone으로 복제하여 받아오고 해당 디렉터리로 이동 및 설치:

    sudo git clone https://github.com/volatilityfoundation/volatility.git
    cd volatility
    python3 setup.py build
    sudo python3 setup.py install
    • distorm3

    리버스 엔지니어링 및 malware 분석에 사용. 실행 코드를 어셈블리 언어로 디스어셈블하는데 사용되는 디스어셈블러

    라이브러리로, 프로그램의 작동 방식과 기능을 파악하는데 이용.

    distorm3을 다운로드하고 압축 해제:

    sudo apt-get install libboost-all-dev
    wget https://github.com/gdabah/distorm/archive/v3.4.4.tar.gz
    tar zxvf v3.4.4.tar.gz
    sudo rm -r v3.4.4.tar.gz
    mv distorm-3.4.4 distorm3

    distorm3 디렉터리로 이동 후 설치:

    cd distorm3
    sudo python3 setup.py build
    sudo python3 setup.py install
    1. cuckoo 코어 설치

    다음과 같은 command를 통해 cuckoo 코어 설치:

    sudo pip2.7 install cuckoo
    sudo pip2.7 install -U cuckoo
    cuckoo

    1. sandbox 구성

    1) VirtualBox 설치

    ※ 수동으로 설치시 다음과 같이 command 입력:

    wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
    echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian focal contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
    sudo apt update
    sudo apt-get install virtualbox

    2) 가상머신 생성 및 구성

    (1) 가상머신 다운로드 및 생성

    https://www.microsoft.com/ko-kr/software-download/windows10ISO

    Windows 10 디스크 이미지 다운로드(ISO 파일)
    요청의 유효성을 검사하는 중입니다. 이 작업은 몇 분 정도 걸릴 수 있습니다. 페이지를 새로 고치거나 뒤로 이동하지 마세요. 그러면 요청이 취소됩니다.
    www.microsoft.com

    [Virtualbox] – [New]:

    machine 이름은 cuckoo1으로 설정.

    필자는 Base Memory 4000MB, Processors 2, 50GB 할당.

    다운로드한 이미지 디스크를 삽입 후 OK

    (2) python 2.7 및 pillow 라이브러리 설치

    생성한 cuckoo1을 부팅하고 python 2.7 다운로드 및 설치:

    https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi

    cmd를 열고 다음과 같은 command를 입력하여 pillow 라이브러리 설치:

    cd C:Python27Scripts
    pip install pillow

    3) 방화벽 및 UAC 설정

    (1) 방화벽 OFF

    (2)  UAC(사용자 계정 컨트롤) OFF

    4) 가상머신 네트워크 구성

    (1) Hostonly Network 설정

    hostonly 어댑터 생성 및 설정:

    sudo vboxmanage hostonlyif create
    sudo vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.10

    (2) iptables 설정

    설정 후 저장하려면  iptable 설정하기 전에 다음과 같은 command :

    sudo apt-get install iptables-persistent

    ※ 재부팅시 iptable 초기화. 따라서 스크립트 파일로 저장하거나, 명령어로 설정한 iptable을 저장.

    https://cuckoo.readthedocs.io/en/latest/installation/host/routing

    Per-Analysis Network Routing — Cuckoo Sandbox v2.0.7 Book
    Per-Analysis Network Routing Since Cuckoo 2.0-rc1 it is possible to feature per-analysis network routing. In other words, if you have one VM and three samples to analyze, it is possible to deny internet access for the first analysis, route the second analy
    cuckoo.readthedocs.io

    다음과 같이 iptables 설정:

    sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.56.10/24 -j MASQUERADE
    sudo iptables -P FORWARD DROP
    sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -s 192.168.56.10/24 -j ACCEPT
    sudo iptables -A FORWARD -s 192.168.56.10/24 -d 192.168.56.10/24 -j ACCEPT
    sudo iptables -A FORWARD -j LOG
    sudo iptables -L -v

    command를 입력하고 오픈한 conf 파일에서 net.ipv4.ip_forward = 1 부분을 찾아 활성화:

    sudo nano /etc/sysctl.conf

    설정한 iptables을 저장:

    sudo sysctl -p /etc/sysctl.conf
    sudo netfilter-persistent save
    sudo cat /etc/iptables/rules.v4
    • 설정한 ip는 sandbox 내에서 static으로 변경

    5) 공유폴더 설정 및 스냅샷

    [Devices] – [Shared Folder] – [Shared Folders Settings…] 선택 후

    디렉터리 경로는 cuckoo 폴더의 agent로 지정, Auto-mount·Make-Permanent 체크:

    • .cuckoo 폴더가 보이지 않을경우 ctrl + H. cuckoo 명령 실행해야 생성되는 폴더.

    VirtualBox의 상단 메뉴 [Devices] – [Insert Guest Additions CD image…]

    다음과 같이 나타나면 해당 파일 다운로드 후 insert :

    CD 드라이브에서 VirtualBox Guest Additions 설치:

    재부팅 후 네트워크에서 공유폴더의 이름이 변경되면 공유폴더 설정 완료.

    agent.py 파일을 바탕화면으로 복사하여 실행:

    ubuntu에서 다음과 같은 command 실행하여 스냅샷 설정:

    VBoxManage snapshot "cuckoo1" take "Snapshot1" --pause
    VBoxManage controlvm "cuckoo1" poweroff
    VBoxManage snapshot "cuckoo1" restorecurrent
    1. 웹 데이터베이스 구성

    1) mongodb

    다음 command를 통해 mongodb public key를 가져오기:

    wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

    mongodb 설치:

    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
    sudo apt-get update
    sudo apt-get install -y mongodb-org

    ※ libssl1.1로 인해 에러 발생시 참고:

    https://jihyun-dev.tistory.com/3

    Mongodb error: The following packages have umet dependencies
    우분투에서 mongodb 설치하기 위해 다음과 같이 입력했을 때 $ sudo apt-get install -y mongodb-org 해당 오류가 발생하는 경우가 있다. The following packages have unmet dependencies: mongodb-org-mongos : Depends: libssl1.1 (>=
    jihyun-dev.tistory.com

    mongodb 활성화 및 실행:

    sudo service mongod start
    sudo systemctl enable mongod.service
    1. cuckoo 설정 및 실행

    1) conf 파일 설정

    다음 command를 통해 cuckoo,conf 파일을 수정:

    sudo nano .cuckoo/conf/cuckoo.conf

    [resultserver]의 ip주소를 수정. port는 기본값 2042이나 필요시 수정.

    reporting.conf 파일 수정:

    sudo nano .cuckoo/conf/reporting.conf

    [mongodb]의 enabled 값을 yes로 변경하여 db 연결. host 주소값은 cuckoo db의 ip 주소를 입력.

    db에 생성한 사용자가 있는 경우 사용자 계정과 비밀번호 값 수정

    virtualbox.conf 파일 수정:

    sudo nano .cuckoo/conf/virtualbox.conf

    mode의 기본값은 headless. gui로 수정.

    interface와 machines의 이름 확인.

    생성한 샌드박스 cuckoo1의 설정 확인 및 ip 수정.

    ❗tcpdump directory issue update로 경로가 usr/bin/tcpdump에 존재하는경우

    기존의 cuckoo 설정에서는 tcpdump를 찾지 못해 에러 발생하므로 경로 수정바람.

    2) cuckoo 서버 실행

    다음 command를 통해 cuckoo 서버 실행:

    cuckoo -d
    cuckoo web -H 192.168.159.134 -p 8000

    주소 접속 시 다음과 같은 UI:

  • Cuckoo Sandbox Unable to stop auxiliary module Sniffer

    Cuckoo Sandbox를 설치하고 사용하다 보면 로그에서

    이런에러가 발생하는 경우가 있다.

    [cuckoo.core.plugins] ERROR: Unable tp stop auxiliary module: Sniffer

    다음과 같은 Command 입력:

    sudo groupadd pcap
    sudo useradd cuckoo
    sudo usermod -a -G pcap cuckoo
    sudo chgrp pcap /usr/bin/tcpdump
    sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/tcpdump
    sudo chmod +s /usr/bin/tcpdump