최근 우주항공 및 방위산업체인 록히드 마틴(Lockheed Martin)사에서 악성코드 분석도구인 라이커보스(LaikaBOSS)를 오픈소스로 공개하였습니다. 이 툴은 록히드 마틴에서 3년 동안 사용된 툴이며 멀웨어 분석 시 유용하다고 합니다.



이 기사를 본 후 저는 바로 github 주소를 찾아 따로 메모해두었고, 간단하게 설치하여 동작을 확인할 수 있었습니다.

관련하여 록히드 마틴에서 제공하는 문서 주소는 아래와 같습니다.

http://lockheedmartin.com/content/dam/lockheed/data/isgs/documents/LaikaBOSS%20Whitepaper.pdf

LAIKABOSS 설치하기(Install LAIKABOSS)

라이커보스는 오픈소스로 공개되었으며 github를 통해 쉽게 다운로드가 가능합니다.

https://github.com/lmco/ 하위에 있습니다.

git clone 명령을 통해 clone 을 생성합니다.

# git clone https://github.com/lmco/laikaboss.git
(git이 설치되지 않았다면, apt-get 이나 yum을 통해 설치하시면 됩니다.)

해당 프레임워크는 ubuntu 기준으로 개발된 듯 합니다. 패키지가 우분투에서 제공하는 패키지이며, apt로 쉽게 설치가 가능합니다. (데비안에서는 의존성이 좀 걸리는듯합니다. 패키지가 없는것도 있구요..)

# apt-get install yara python-yara python-progressbar
# pip install interruptingcow
# apt-get install libzmq3 python-zmq python-gevent python-pexpect
# apt-get install python-ipy python-m2crypto python-pefile python-pyclamd liblzma5 # libimage-exiftool-perl python-msgpack libfuzzy-dev python-cffi python-dev unrar
# pip install fluent-logger olefile ssdeep py-unrar2 pylzma
# wget https://github.com/smarnach/pyexiftool/archive/master.zip
# unzip master.zip
# cd pyexiftool-master
# python setup.py build
# python setup.py install
# apt-get install jq

한줄명령(One line command)
apt-get install yara python-yara python-progressbar;pip install interruptingcow;apt-get install libzmq3 python-zmq python-gevent python-pexpect
apt-get install python-ipy python-m2crypto python-pefile python-pyclamd liblzma5 libimage-exiftool-perl python-msgpack libfuzzy-dev python-cffi python-dev unrar;
pip install fluent-logger olefile ssdeep py-unrar2 pylzma;wget https://github.com/smarnach/pyexiftool/archive/master.zip;unzip master.zip;cd pyexiftool-master;python setup.py build;python setup.py install;apt-get install jq;

이로써 설치가 완료되었습니다. laika 디렉토리 하위에 python 코드가 있습니다.

LAIKABOSS 실행 및 사용(Using LAIKABOSS)

일단 가이드가 될만한 문서를 아직 못찾았기 때문에 상세한 사용방법은 연구가 필요할 것 같습니다.
크게 3개의 파일로 나눠서 볼 수 있겠네요.

laika.py
입력한 파일에 대해 스캔 후 Report 를 제공합니다.
라이카보스의 핵심이며 객체모델 및 디스패치 로직을 포함하고 있습니다.


laikad.py
라이카보스를 데몬 형태로 돌립니다. 네트워크 서비스로 라이카 실행를 실행합니다.(서비스 or 데몬)

cloudscan.py
laikad가 실행중인 서버에 분석한 파일을 전송하는 명령입니다.

Command
# python laika.py  laika.py  | jq '.scan_result[] | { "file type" : .fileType, "flags" : .flags, "md5" : .objectHash }'
100%[###################################] Processed: 1/1 total files (Elapsed Time: 0:00:00) Time: 0:00:00
{
  "md5": "6305070a0e4ee027703528f2aa9efaa2",
  "flags": [
    "yr:suspicious_sig_1"
  ],
  "file type": []
}

laika.py 를 이용해 파일에 대한 분석이 가능합니다. jq 를 이용하여 보기 쉽게 파싱한 결과입니다.


대충 다른 Exe 파일(msf 로 생성)도 돌려봤는데. 확실히 데이터 양이 늘어나긴하네요..
jq를 이용해 파싱해서 분리하는게 보기 좋을듯합니다.

jq를 통해 파싱 처리

100%[#########################################################] Processed: 1/1 total files (Elapsed Time: 0:00:00) Time: 0:00:00
{
  "md5": "ebe65da1fdbdbd8729808974216f5c4b",
  "flags": [],
  "file type": [
    "pe"
  ]
}


록히드마틴이 제공한 명령 예시에 laikad와 cloudscan을 이용한 분석이 있습니다.

$ ./laikad.py

$ ./cloudscan.py ~/test_files/testfile.cws.swf | jq '.scan_result[] | { "file type" : .fileType, "flags" : .flags, "md5" : .objectHash }'
{
  "md5": "dffcc2464911077d8ecd352f3d611ecc",
  "flags": [],
  "file type": [
    "cws",
    "swf"
  ]
}
{
  "md5": "587c8ac651011bc23ecefecd4c253cd4",
  "flags": [],
  "file type": [
    "fws",
    "swf"
  ]
}

laikad.py 를 실행하여 서버 실행 후 cloudscan을 이용하여 swf 파일을 분석하여 서버에 업로드한 것 같습니다.

라이커보스의 장점은 세밀한 모듈화라고 합니다. 여러개의 모듈들이 각각의 분석을 진행하는 형태이고, 모듈을 만들고 관리하는 법이 쉽다고 합니다. 분석 스타일에 맞게 모듈을 추가하고 세분화 한다면 굉장히 좋은 툴이라고 생각됩니다.

댓글 없음:

댓글 쓰기