qingfro9님의 블로그 입니다.

[정보보안][tool]floss 본문

정보보안/악성코드

[정보보안][tool]floss

qingfro9 2019. 7. 27. 23:45

https://github.com/fireeye/flare-floss

 

오늘 카페에서 오랜만에 분석하는 노트북에 floss가 설치되어 있지 않아서 좀 봤는데, 꾸준히 개발되는거 같아서 10분정도 서치하면서 정리한 내용을 적어봤다.

 

floss 뭔가요?

일단 strings처럼 파일에서 문자열 정보를 빼주는 도구다.! 하지만 floss의 장점은 무엇이냐? FireEye(파아)에서 개발한 도구로 파아에서는 이 도구를 "첨단 기술을 사용하여 악성코드 바이너리에서 난독화되어 있는 문자열을 추출해주는 도구"라고 정의하고 있다. FLOSS에서도 센스 있는 분을 알 수 있는 것 처럼 Fireeye Labs Obfuscated String Solver의 약어를 사용한다.

 

사용하면서 FLOSS에서 난독화를 해제해줘서 문자열을 보여줘서 "오!" 한적은 아직 없지만, UTF-16과 같은 문자열도 처리를 해줘서 나는 자주 사용한다.

 

사용은 어떻게?

Github를 통해 바이너리를 제공하고 있다. (출처: https://github.com/fireeye/flare-floss)

 

Windows 64bit: http://s3.amazonaws.com/build-artifacts.floss.flare.fireeye.com/appveyor/dist/floss64.exe

Windows 32bit: http://s3.amazonaws.com/build-artifacts.floss.flare.fireeye.com/appveyor/dist/floss32.exe

Linux: https://s3.amazonaws.com/build-artifacts.floss.flare.fireeye.com/travis/linux/dist/floss

macOS: https://s3.amazonaws.com/build-artifacts.floss.flare.fireeye.com/travis/osx/dist/floss

 

사용 방법은?

간단하다. 사실, 나는 뭐 옵션 안쓰고, 아래와 같이 사용하고 있다.

$ floss binary
FLOSS static ASCII strings
!This program cannot be run in DOS mode.
_YY
RichYY
MdfQ
...

좀 더 이 도구를 효율적으로 사용할려면 아래 링크에서 document를 읽어 보는게 좋겠다.!

(아래 정리하다 보니 좋은 기능이 많다.! 기회가 된다면 예제들 해봐야겠다.)

using floss, review the documention: https://github.com/fireeye/flare-floss/blob/master/doc/usage.md

testing floss, review the documetion: https://github.com/fireeye/flare-floss/blob/master/doc/test.md 

-> testing floss는 어떤 도큐먼트인지는 잘 모르겠다.

 

쓰면서 도큐먼트 보고 정리한 내용

option 정리

  • Disable string type extraction : "--no-<STRING-TYPE>-strings"
    • --no-static-strings
    • --no-decoded-strings
    • --no-stack-strings
  • Quite mode : "-q, --quite"
  • Minimum string length : "-n, --minimum-length"
    • floss -n 10 binary.bin
    • floss --minimum-length=10 binary.bin
  • Group output strings : "-g"
    • 2개 이상의 디코딩 루틴이 있으면 해당 디코딩을 처리해서 문자열을 보여주는 것으로 보이는데, 정확히 어떤 기능인지는 모르겠다.
  • Decoding function specification : "-f, --functions"
    • 주소를 지정해주면 그곳에서 디코딩하는 코드를 찾아주는 기능 같다.
    • 사용해보지 않은 기능이라 ...

아..기능이 엄청 많다...이거 좀 확인즘 해봐야겠다.. 역시 좋은 도구였어..플러그인도 있었다. -l 옵션 사용하면 설치된 플러그인 확인이 가능하다.

 

 

이것도 좋은 듯.!

  • Shellcode analysis options : "-s"
    • 쉘코드에 포함된 문자열들을 뽑아주는 기능으로 보인다. 보통 귀찮아서, 도구를 사용하는데..그거 도구 뭐더라, scdbg! 이도구를 사용한다. 그럼 동적으로 돌리고 찍히는 API 보여주니까, 쉽게 분석이 가능하고 좋은듯.! 근데 이놈은 -s 옵션을 사용하면, 문자열 정보를 뽑아주는건가? ; 뭐 써봐야지 아는데, 여튼 알았으니, 다음에 덤프뜨면 한번 돌려봐야겠다.

 

그냥 좀 알게 된 것들

1. 난 어떻게 쓰고 있나

floss를 쓰면 좋은건 YARA룰을 작성할때 정적 데이터 기반으로 짤 때 좀 더 편리하고 빠르게 작업이 가능하다는 점이였고, 내가 쓸때는 보통

 

$ floss binary.bin > binary.bin.floss

 

이런식으로 결과값 떨구고, 쭉 보면서 데이터를 뽑아 낼 때 쓴다.(물론 간단하게 빨리 작업할 때.!)

아직 헌팅에도 좀 미숙한 점이 없지 않지는 않다. (어려운 헌팅.)

 

2. 파이썬 모듈로도 지원하더라

잘만 쓰면 사실 이걸로 자동으로 유니크한 문자열 뽑아내기 좋을거 같다는 생각을 했는데, 파이썬으로 모듈을 제공하더라.! 여기서 보면 도움이 되겠지? 나도 언젠가는 쓸지 모르겠지만, 아직 내가 하는 쪽에는 필요가 없으니, 그냥 기록만 해두자. 누군가에겐 도움이 될지도 모르니

 

https://github.com/fireeye/flare-floss/blob/master/doc/installation.md    

 

 

3. What the "vivisect"

파이썬 모듈 설치할때 vivisect라는 애가 기본으로 설치되어있어야지 사용을 할 수 있더라. (훌륭한 오픈소스툴에는 훌륭한 오픈소스가 따라다니는 점.!!)

 

vivisect는 "생체를 해부하다" 라는 영어 뜻을 가지고 있다..(아하.!) 음 이거 뭐지 floss의 핵심이 되는 것으로 보인다.

 

Official Infoz

  • Vdb - Python based debugger and programatic debugging API
  • Vivisect - Python based static analysis and emulation framework
  • ReleaseNotes - vdb / viv notes regaring particular releases
  • VtoysTodo - Ideas on things that need fixing, or whole new subsystems to create kjhkn,mn,nmuyiyuyi

 

오.. 역시 이 포스팅 올리길 잘했다. 새로운 파워풀한 툴을 찾았다. 이놈을 한번 파야지..!! 메모메모

 

 

github: https://github.com/vivisect/vivisect

homepage: visi.kenshoto.com   <--- 사이트가 죽었네? 뭐징(게시한 그날에. 2019.07.27)

-> issue : https://github.com/vivisect/vivisect/issues/203

-> http://web.archive.org/web/20161225225334/http://visi.kenshoto.com:80/viki/MainPage

    지금도 안들어가지면 여기로 들어가면 됨.

 

 

 

 

 

 

Comments