CUCKOO SANDBOX 2.0.0

오늘은 가장 중요한 오픈 소스 자동화 악성코드 분석 샌드박스인 Cuckoo Sandbox에게 중요한 날이다. 지난 1년 동안 작업한 끝에 Cuckoo Package (코드명 "package")의 첫 번째 버전을 출시했다. 우리 릴리즈의 기존에 했던 것처럼 많은 개선사항, 새로운 개념, 안전성 조정 등 도입하였으나 이러한 모든 세부 사항에 대해 이 게시물에서 설명할 수 없다.

Cuckoo Package는 배치, 유지 보수, UX & User Interaction 그리고 Cuckoo Sandbox 자체의 개발 주기와 관련하여 새로운 미래를 만날 수 있다. 이러한 부분은 지금까지 2010년 초반부터 사용성과 UX 측면에서 개선해야 했던 중요한 부분이었고, 개발팀과 사용자 모두에게 새로운 시대의 시작을 의미한다.

유용성과 UX, 안정성 향상 그리고 기타 변경사항의 세 가지 범주로 구분하여 개선 사항을 언급한다.

Usability & UX

이번 릴리즈에서 가장 중요한 부분은 사용자를 위한 초기 설정을 간소화한다는 목표를 처음 적용한 것이다. 기존의 설치 과정은 초보 사용자가 Cuckoo Sandbox를 설치하는데 최대 3일이 소요될 수 있다. 하지만 이번 릴리즈를 통해 설치 시간을 1 시간으로 줄일 것이다. (VM 설정은 나중에 포함)

이제부터 $ pip install -U cuckoo를 실행하여 Cuckoo를 설치할 수 있다. 물론 더 많은 설치 단계가 있지만, 이렇게 설치하는 형태가 가능하다면, Cuckoo 설치와 업그레이드는 이 명령으로 간단하게 수행할 수 있다. pip install이 제대로 작동하지 않는 경우 운영체제별 pip 설치 방법을 고려한다.

수 많은 사용자가 보고한 다양한 문제를 해결하기 위해 많은 노력을 기울였다. 이러한 노력의 결과로 다음과 같이 많은 일반적인 오류를 완화할 수 있었다.

  • critical timeout이 에러로 처리하지 못했던 문제
  • 누락된 가상머신의 스냅샷 문제
  • 파이썬 패키지 누락으로 인한 설치 문제
  • 호환되지 않는 파이썬 패키지 버전 문제
  • 구성을 잘못 했을 때 발생하는 문제

이번 릴리즈는 Cuckoo 웹 인터페이스에 대한 많은 업데이트를 진행했으며, 초보사용자는 물론 고급 사용자가 이러한 업데이트를 최대한 활용할 수 있도록 단순화된 UX를 제공한다. 다른 많은 업데이트 중에서 다음과 같은 개선 사항을 강조한다.

  • nested archive와 전역 & 분석 별 고급 옵션을 완벽하게 지원하는 submit 페이지
  • Night & Cyborg 테마
  • 최근 분석 페이지에서 지연 로딩(Lazy loading)과 필터링
  • 새로운 대시 보드, 분석 요약 그리고 네트워크 트래픽 페이지

유용성과 관련해서 다음과 같은 부분이 있다.

  • 공식적인 윈도우와 Mac OS X 호스트 지원
  • Cuckoo에 있는 모든 기능(cuckoo -d, cuckoo api, cuckoo web 그리고 cuckoo process가 실행하는 것이 무엇인지를 추측)을 포함한 Cuckoo 을 소개
  • Cuckoo를 반자동으로 실행하고 계속 실행되도록 감시하는 supervisor 기반 구성 파일
  • 유니코드 파일 이름 & 큰 파일 지원 (예, 최대 1GB 파일을 성공적으로 테스트)
  • 전자 메일 편지함에서 첨부 파일 (또는 전자 메일 자체)를 Cuckoo (nested archive 지원을 사용)로 직접 전달하여 악성에 대한 실시간 정보를 얻을 수 있는 기능
  • 토르 네트워크 라우팅 지원
  • SaltStack용 Cuckoo 모듈을 사용하여 여러 서버를 빠르게 배포

Stability Improvements

이번 릴리즈에는 안정성 조정과 단위 테스트에 대한 많은 작업을 포함했다. 특히, 코드 베이스의 50% 이상에서 단위 테스트를 결합하여 600개가 넘는 단위 테스트를 수행했다. 그 외에도 거의 100 가지 기능 테스트를 진행했다. 이러한 테스트는 이전의 단위 테스트보다 큰 진전이 있었지만, 사실상 아무것도 아니었다. 이전 버전의 Cuckoo와 호환성이 보장되지 않지만, 이러한 단위 테스트를 통해 새로운 기능이 실제로 동작한다는 것을 증명하고, 새로운 기능을 보다 신속하고 지속적으로 개발하고 출시할 수 있게 바뀔 것이다.

당연히 새로운 버전은 더 안정적일 뿐만 아니라 개선된(그리고 선택사항으로) 사용자 지원을 통합되었다. 분석이 예상대로 동작하지 않을 경우 feedback 버튼을 클릭하여 고려 사항을 양식에 작성한다. 우리는 작성한 메시지와 함께 분석 사본(우리와 공유하고자 하는 한도 내에서)을 얻고, 이를 기반으로 비교적 신속하게 문제를 조사할 수 있으며, 문제가 해결 될 때 ETA나 수정 방법을 제시하고, Cuckoo 사용자 설정에 대한 타당한 해결을 위해 이메일을 통해 주고 받으며, 향후 출시에 버그 수정을 포함시켜 이 버그가 더 이상 발생하지 않도록 할 수 있다.

Misc changes

이전에 설치한 Cuckoo Sandbox에 모든 구성과 분석을 포함한 경우 좋은 소식이 있다. 바로 새로운 버전에서는 기존의 Cuckoo 설정을 가져올 수 있다. Cuckoo는 데이터베이스 마이그레이션과 구성 마이그레이션 (예, cuckoo.conf와 기타 구성 파일에 변경사항이 있는 경우)을 적용하고 기존의 모든 분석을 포함하는 새로운 Cuckoo 환경을 준비하고 있다. 기존 설정으로 업그레이드하는 것은 쉬운 일이 아니다. 이 업그레이드 중에 로컬 설치에 적용된 모든 코드 변경사항은 고려되지 않는다. 이러한 것은 수동으로 적용해야 한다. 이 문제에 대한 도움을 받으려면 우리 팀에 문의하기 바란다.

이 릴리즈에는 많은 크고 작은 개선 사항이 있다. 공평하게, 1년의 발전에 기대하는 또 다른 것이 있을까? 이러한 의문을 해결하기 위해 다음과 같이 빠르게 나열해본다.

  • JSON 로깅 (Spluck나 ELK/Grafana와 같은 것과 통합)
  • report.html 업데이트
  • 적절한 VirusTotal 키로 구성된 경우 샘플 해시 제출
  • Yara 규칙과 Cuckoo 시그니처와의 상관 관계가 쌍으로 생성하는 것을 단순화 함 (Yara로 군/변형을 식별하고 Cuckoo 시그니처를 사용하여 관련 정보를 추출하는데 매우 유용)
  • SMTP 트래픽의 적절한 추출
  • Cuckoo 모니터가 IE11을 지원
  • Cuckoo 모니터에서 "트리거" 지원, 즉, API 호출 시 로깅을 시작하는 것으로 예를 들어, 실제 문서에 접근한
  • Office Word를 모니터링 (이를 통해 일부 정크 API 호출을 줄임)
  • 파워쉘과 .NET을 지원하는 Cuckoo 모니터

Upcoming

앞으로 릴리즈하여 포함될 내용에는 여전히 크고 작은 변화가 많이 있다. 이제는 업그레이드가 훨씬 쉬워져 (예로, $ pip install -U cuckoo) 업데이트를 자주 할 것이다. - 꼭 그렇게 하도록 구성할 것이다. 새로운 기능, 치명적인 버그 수정 등 필요할 수 있다. 

다음에 나오는 아이디어, 기능 그리고 개조를 통해 이룰 예정이다.

  • Cuckoo의 윈도우 커널 드라이버인 zer0m0n의 초기 통합 릴리즈
  • Suricata 통합 개선 및 업데이트
  • 더욱 완벽한 IE11 지원
  • (HTML 보고서를 기반으로 한)PDF 보고서
  • InetSim 네트워크 라우팅 지원
  • 수치화를 알파-소프트웨어 퀄리티가 아닌 수준으로 향상
  • 시작시 웹 기반 설치 포털에서 시작
  • 적절한 검색 기능 (MongoDB & ElasticSearch 기반)
  • 웹 인터페이스에 통합된 Cuckoo 사용 설명서
  • 사용자가 보고한 모든 버그 수정
  • 안정성 향상 및 단위 테스트 강화
  • ... 그리고 이미 50 이상의 개조 및 개선 작업을 수행 ;-)

향후 버전에서 기능 요청, 부가 기능 등을 확인하고 싶은가요? 아래 연락처 정보를 확인하고, 이래의 did you know를 확인하세요.

Conclusions

이번 릴리즈는 많은 새로운 특징과 기능을 사용자에게 제공한다. 단순화된 설정과 사용 패턴을 통해 프로젝트에 보다 쉽게 접근할 수 있고 현재의 모든 환경에서 보다 쉽게 통합될 수 있기에 보다 광범위한 사용자 기반을 형성하길 바란다.

의견 및 질문이 있으면, IRC (#cuckoosandbox on irc.freenode.net), Github 저장소, 또는 이메일로 문의해주길 바란다. 향후 블로그 게시물, 발표 자료 및 기타 공지사항에 대한 최신 정보를 얻으려면 이메일을 보내주세요.

Did you know?

놓친 몇가지 내용은 다음과 같다.

  • 우리는 Cuckoo를 필요로 하는 조직에 컨설팅 서비스를 제공한다. 설치, 설정 확인, 버그 수정, 새로운 기능, 사용자 지정 통합, 교육 그리고 Cuckoo 주변의 다양한 기능에 대한 도움을 주고 있으니 고려 바란다.
  • Cuckoo는 지역 전자 메일 솔루션IDS 시스템을 통합하여 누군가가 파일을 열어 잠재적인 유출과 데이터 손상을 받기 전에 방지하여 ransomware나 기타 잠재적인 악의적인 문제를 식별할 수 있다.
  • 우리는 다양한 컨퍼런스 (예, 암스테르담의 Hack in the Box, 라스베가스의 Blackhat & Defcon 등)에 참석할 예정이기에 이곳에서 토론할 수 있다. 

우리의 이런 활동은 사용자와 스폰서 없이는 가능하지 않았을 것이다. Cuckoo Sandbox를 사용하고 지원해 주신 모든 분들께 감사드린다.

원본 사이트


CUCKOO SANDBOX 2.0 RELEASE CANDIDATE 2

이번에 Cuckoo Sandbox 2.0 Release Candidate 2를 출시를 발표하게 되어 기쁘다. 이 버전에서는 많은 버그를 수정하고 구성요소와 분석 정확도 그리고 유용성 등 다양한 부분을 개선한다.

다음은 주요 변경사항 목록이다.

  • 보고서 공유와 디버깅 사용자 문제를 단순화하기 위한 Import와 Export 분석 기능
  • Cuckoo 모니터링의 안정성 향상
  • MISPIRMA를 통합
  • 분석 기능이 분석 대상 시스템의 재부팅에도 생존할 수 있는 기능을 소개(여전히 작업중인 상태)
  • 자바스크립트와 VBA 스크립트를 내장한 Office Word / Adobe PDF 분석
  • 프로세스 메모리 덤프에서 메모리 내 PE 파일 추출
  • 글로벌 검색 기능을 위한 ElasticSearch 통합
  • Ubuntu 16.04 지원
  • 기타 등등

짧은 요약에서 결론지을 수 있듯이 주안점은 사용자 경험을 기반으로 Cuckoo를 개선하고, 문서를 기반으로 하는 악성코드를 분석하는 기능을 추가했으며 전반적으로 안정성을 도모했다.

새로운 기능과 다양한 가능성을 소개했으므로 일부는 문서화되지 않은 채 배포하고 있으며, 이로 인해 일부 사용자는 그 기능을 사용해볼 수 있다. 이 과정에서 문제를 수정하고 더 많은 블로그 게시물로 지속적으로 문서를 보완할 계획을 가지고 있다. 예를 들면, "네트워크 라우팅마다 분석하는 방법을 알고 있나요?" 같은 문서를 포스팅하는 계획이다.

이러한 계획은 가까운 미래에 도래될 일이다.

UPCOMING: CUCKOO PACKAGE

Cuckoo Sandbox를 개발해온지 6년지 지났다. 그동안 Cuckoo 설치 과정을 간소화하기 위한 시도는 있었지만, 아직까지 제대로 해결되지 않은 다양한 문제가 남아있다. 예를 들어 Cuckoo 인스턴스를 최신 개발 버전으로 업데이트할 때 기존의 Cuckoo 구성 요소를 백업해야 한다. 그렇지 않으면 Git이 새로운 코드로 사용자의 설정을 덮어쓰지 못해 가져올 수 없게 된다. (Git 저장소에 속한 파일로 추적됨)

Cuckoo Sandbox 2.0-RC2는 사용자가 지난 몇 년 동안 사용하고 있는 것으로 알려진 시스템을 사용하는 경우 "lagacy" 릴리즈를 할 것이다. 차기 버전은 pip install cuckoo로 설치하고 pip install -U cuckoo를 통해 업그레이드하는 패키지 기반의 Cuckoo로 진행할 예정이다. 실행중인 Cuckoo나 그에 속한 하위 명령은 cuckoo 명령으로 제어 가능하므로 Cuckoo 유틸리티를 통해 모든 명령이 통합될 것이다.

이 기능은 앞으로 출시될 예정이며, Github의 Pull Request #863 또는 패키지 브런치를 위한 종합 문서에서 Cuckoo 패키지의 새로운 부분에서 자세한 내용을 살펴볼 수 있다. 이로써 사용자 경험을 단순화할 뿐만 아니라 지금까지 까다롭고 시간이 소비되는 릴리즈 프로세스를 간소화할 수 있어 매우 기쁘게 생각한다.

UPCOMING: IMPROVED WEB INTERFACE

웹 인터페이스를 새롭게 고치는데 많은 노력을 기울이고 있고, 늦은 감이 있지만 많은 기능들을 확장하게 되었다. 여기에는 성능 향상, 테마 선택, 분석 요청 옵션 확장 등이 포함된다. 이러한 부분은 블로그나 SNS를 꾸준히 지켜봐 주길 바란다.

UPCOMING: SPOOFING ANTI-ANALYSIS TRICKS BY MALICIOUS DOCUMENTS

스팸 전자 메일에 첨부된 악의적인 문서를 주로 분석하는 사람은 이번에 개발된 Cuckoo를 좋아할 것이다. 예제를 살펴보고 싶다면 PhishMe의 글을 참고하자. 분석되고 있는지 아닌지 결정하기 위해 악성 문서가 인터넷에 연결되어 GeoIP를 수행하는 방법을 설명한다.

이제 HTTP 요청에 대한 응답으로 위장(spoofing)하는 것은 쉬운 일인 것처럼 보일 수 있으나, 적절하고 깔끔하게 구현하기 위해서 많은 작업이 필요하다.

  • 전자메일에 첨부하는 방식은 종종 아카이브에서 배포된다. 이 아카이브를 분석하기 위해서 각각의 파일을 별도로 분석해야 한다. 이러한 이유로 새로운 웹 인터페이스를 제작하고 있다.
  • 무작정 악성 아카이브는 압축 해제할 수 없다. 해제를 위한 프로세스는 임의의 파일로 덮어쓰는 공격과 다양한 RCE 취약점에 대한 잠재적인 공격을 피하기 위해서라도 샌드박스가 필요하다. ZipJail을 알고 싶다면 Github 페이지에서 자세한 내용을 읽을 수 있다.
  • transparent 모드에서 mitmproxy를 실행한다. 일부 트래픽은 우리가 위장하길 원하지만(예, GeoIP 요청의 HTTP 응답을 스푸핑), 대부분은 우리가 구성한 네트워크 경로(no 라우팅, drop 라우팅, dirty line, InetSim, Tor, 여러 개로 구성된 VPN 중 하나를 지원)를 사용하길 원한다. 이 문제를 해결할 수 있는 방법은 다양하지만, 가장 깔끔한 방법은 완전한 형태의 transparent 프록시 모드를 사용하는 것이기에 이 부분을 도움 받았다.
  • 향후 필요에 따라 쉽게 확장할 수 있기를 바라며, 분석마다 사용할 수 있는 mitmproxy 플러그인 스크립트를 개발할 예정이다.
  • VBA 메서드나 자바스크립트 함수가 호출되는 것과 같은 상위 수준의 동작 정보는 매우 유용하다. 2.0-RC1 릴리즈에서 인터넷 익스플로러 8과 비슷한 작업을 수행했다. Adobe PDF Reader 9뿐만 아니라 Microsoft Office 2007의 특정 버전에 맞춘 기능을 추가했다(이 부분은 이미 2.0-RC2 릴리즈에 포함되었다.)

이 포스트는 단순한 기능을 작업하기 위해 수행해야 할 작업이나 수행된 작업에 대한 요약이다. 많지만 작은 변화들은 곳곳에 널려있고, 사용자들은 큰 변화만큼이나 필요하다고 생각하지 않을 것이다. 하지만 이러한 변화들은 우리를 바쁘게 하고 재미있게 만든다.

CONCLUSIONS

Cuckoo Sandbox를 사용하는 모든 분들께 감사의 인사를 드린다. 의견이 있다면 언제든지 연락주시길 바란다.

이번 버전에도 감사드리며 향후 안정화된 버전인 2.0이 출시되길 기대한다.

기다리는 동안 우리의 GithubSNS를 팔로우하고, 우리의 컨설팅 서비스에 대해 자세히 알아봐 주시길 바란다.

출처


개요

이제 Cuckoo Sandbox 버전 2.0 RC1이라는 새로운 릴리즈를 출시했다. 이번 릴리즈는 1.2 릴리즈 이후 10개월 만에 출시했으며 2.0 릴리즈를 위한 개발은 1년 반 전부터 준비해왔다.

Cuckoo Sandbox 2.0은 아직까지 대규모 릴리즈는 아니며, 다양한 기능이 알파 또는 베타 단계에 있기 때문에 Release Candidate 1을 사용하여 릴리즈 체계를 가지기로 결정했다. 실제로 사용자가 원하는 안정화 버전인 2.0을 진행하기 앞서 몇 달 동안 두 번의 Release Candidate를 보여주는 것이며, 이 과정을 통해 버그를 식별하고 수정하고 기존 기능을 확장하여 안정적으로 최종 버전으로 완료하기 위함이다. 다시 말해서, 이 버전을 사용하고 테스트를 진행하여 안정적인 2.0 버전으로 보다 빨리 달성할 수 있도록 사용자에게 요청하는 것이다. 주의 사항: 제품 환경에 이 버전을 적용하기 앞서 언급한 바와 같이 몇 가지 기능이 불완전하고, 일부 기능은 중단되었음을(예, 웹 인터페이스의 검색 기능) 알아두었으면 한다.

TL;DR NEW?

이번 포스트에서 Cuckoo Sandbox 2.0-rc1의 재미있는 항목을 상세히 설명할 것이지만, 내용이 길어 지루해하는 사람을 위해 다음과 같이 간략하게 소개한다.

  • 64비트 윈도우 응용프로그램과 샘플을 모니터링
  • Mac OS X, 리눅스, 그리고 안드로이드 분석 지원
  • Suricata, Snort 그리고 Moloch와 통합
  • TLS/HTTPS 트래픽 인터셉트와 복호화
  • VPN 지원을 포함한 라우팅마다 네트워크 분석
  • 악성 행위를 격리하고 식별하기 위한 300개 이상의 시그니처
  • 분석 중 변경사항을 강조하기 위한 볼라티리티 baseline capture
  • 프로세스 메모리 덤프에서 URL 추출
  • 분석 중에 별도의 VM에 추가 서비스 실행 가능
  • 악성 수치화 - 이 분석에서 악성 행위를 보여주는가?
  • 많은 버그 수정, 개선, 개조 및 자동화 개선

64-BIT ANALYSIS ON WINDOWS

개발자는 지난 1년 반 동안 개발해왔던 새로운 모니터링 구성 요소를 미리 사용할 수 있었기에 꽤나 오랫동안 64비트 샘플과 응용 프로그램을 분석할 수 있었다. 사실 64비트 윈도우 7의 64비트 인터넷 익스플로러 8의 상황에서 새 모니터링 도구가 HTML DOM과 자바스크립트의 작은 집합을 가로챌 수 있어서 32비트 버전의 인터넷 익스플로러보다 훨씬 많은 결과를 얻을 수 있다.

다음 이미지에서 <script> 태그에 포함된 자바스크립트 코드가 표시된 HTML 문서를 살펴볼 수 있다. 자바스크립트 블록을 평가한 후에 즉시 CHyperlink_SetUrlComponent를 호출하는 것을 볼 수 있다. 이것은 약간의 기술적인 이름이지만, mshtml.dll의 PDB 심볼마다 일치하는 이름이다. 자바스크립트에서 결론 지을 수 있듯이, HTML 태그에 새로운 하이퍼링크를 지정할 때 생성되는 기본 호출이다. 바로 다음을 살펴보면 HTML script 요소에 있는 URL을 업데이트하는 CScriptElement_put_src가 있음을 볼 수 있다. 이 기능을 사용하면 동적으로 실행되고 스스로 압축을 해제하는 자바스크립트 동작을 살펴볼 수 있다.

지금까지 살펴본 것은 Cuckoo Sandbox 2.0-rc1이 새롭게 분석할 수 있는 한 가지 예제일 뿐이다. 앞으로 블로그 게시물을 통해 새롭게 도입된 많은 새로운 기능들을 깊이 있게 소개할 예정이다.

MAC OS X ANALYSIS

GSoC 2015 (Google Summer of Code)의 한 파트로 Dmitry Rodionov는 Cuckoo Sandbox에서 사용할 수 있는 Mac OS X 분석기를 제작했다. OS X 분석은 OS X 가상 머신을 자동으로 사용하는 기능이 핵심이기에 Mac OS X 호스트 시스템에서 실행시키거나 Hackintosh VM을 사용해야 한다. 이는 Apple의 서비스 약관을 위반한 것일 수 있다. 하지만 우리는 책임을 지지 않겠다.

OS X 분석기는 OS X 커널에 내장된 강력한 동적 추적 프레임워크인 Dtrace를 기반으로 제작하여 사용자 영역의 프로세스는 물론 커널 내 활동을 추적할 수 있으며, Dtrace는 자체 스크립팅 언어(기본적으로 C언어의 하위 구성)를 사용하고, 분석 체계 구성을 용이하게 하기 위해 분석기에 미리 구성한 API 목록을 기반으로 하는 DTrace 코드 생성기를 함께 제공한다.

LINUX ANALYSIS

Mark Schloesser는 Cuckoo를 이용하여 리눅스를 분석하기 위해 노력해왔다. 매끄러운 SystemTap 스크립트를 사용하는 Cuckoo는 여기저기에 있는 Shellshock과 ElasticSearch 취약점의 부분으로 삭제된(dropped) 최신 샘플로 적절히 분석하는 방법을 배웠다.

이론적으로 리눅스 분석은 분석 대상 바이너리와 하위 프로세스에 의해 실행되는 syscall을 추적하면 되기에 매우 단순하다. Sysdig, LTTNG와 SystemTap과 같은 몇 가지 기존 프로젝트가 있으며, 커널을 모니터링하기 위해 주로 커널 메인라인을 추적하는 서브 시스템을 사용한다. 아쉽게도 다양한 아키텍처를 다루려고 할 때 문제가 발생한다. 일부는 x86에서, 일부는 x64에서 또 다른 일부는 둘 다 작동한다. ARM, MIPS 및 다른 플랫폼으로 확장할 땐 더 큰 문제가 발생한다. 예를 들어 임베디드 장치를 대상으로 하는 일부 악성코드를 분석하기 위해 특별한 환경이 필요할 수 있다. 우리는 OpenWRT 환경이 필요한 악성코드를 조사했고 Cuckoo에서 이 악성코드를 분석할 수 있도록 준비했다.

결국 현재 구현한 리눅스 분석기는 가장 선호하는 디자인은 아니지만 SystemTap을 사용하며, 모든 플랫폼에서 비교적 잘 동작한다. non-native 플랫폼을 실행하기 위해 QEMU 모듈을 구현했고 x86/x64 분석은 Virtualbox / KVM 등으로 분석을 수행할 수 있다. VM은 항상 파이썬 에이전트를 실행해야 하며 시스템 호출 추적을 위해서는 SystemTap이나 적어도 "staprun" 도구와 함께 컴파일한 SystemTap 커널 모듈이 필요하다. 분석기는 또한 trace로 fall back 할 수 있지만, 이는 하위 프로세스를 추적하지 못하는 것으로 보이며, 또한 출력을 위한 파서를 구현하지 않았다. SystemTap 추적의 경우 출력을 구문 분석하여 웹 인터페이스에 Windows API 로그와 똑같이 표시할 수 있다.

이 리눅스 구현에 대해 개선해야 할 부분은 많지만 당장은 단순하게 구현했으며 대부분 샘플을 분석할 수 있다.

ANDROID ANALYSIS

이제 분석할 수 있는 대부분의 주요 플랫폼을 다루었기에 안드로이드만 남았다. 고맙게도 Idan Revivo의 고생 덕분에 Cuckoo 팀은 안드로이드 분석을 통합할 수 있었다. Idan은 Cuckoo Droid로 알려진 안드로이드 분석 플랫폼을 Cuckoo 버전으로 유지하며 새로운 악성 안드로이드 샘플이 발견되면 새로운 시그니처를 추가했다.

Cuckoo Droid는 adb를 사용하여 안드로이드 에뮬레이터를 실행하는 것(따라서 actual/native 안드로이드 기기에서 분석을 실행하는 것을 지원)을 기반으로 달빅/자바 런타임에 연결하여 샘플의 행위를 가로챈다. 이 가로채기 위해 eXposed 프레임워크를 사용하여 새로운 애플리케이션을 분석하기 위해 로드되는 다양한 자바 기능을 재작성하고 기록하는 모니터링 도구인 Droidmon을 개발했다.

꽤 많은 함수를 가로채며 추가로 JSON 파일에 새로운 항목을 추가하면 더 많은 기능을 가로챌 수 있다.

INTEGRATION WITH PCAP ANALYSIS TOOLS

많은 사용자들은 생성되는 네트워크 트래픽(CERT/IR 팀의 생각)에 관심이 많기 때문에 PCAP 분석을 위해 Suricata, Snort 그리고 Moloch를 Cuckoo에 통합할 수 있는 기회를 놓치지 않았다. (참고로 Metcalf가 만든 파생된 Cuckoo에서 이미 Suricata와 Moloch 통합하여 지원했지만, 우리도 마찬가지다.)

다음은 Malware Analysis Traffic에서 수동으로 가지고 온 PCAP을 이용하여 Cuckoo의 Suricata에서 출력해 보니 두 가지 Exploit Kit 관련 경고를 출력한다.

[이미지가 없음]

이제 Suricata 시그니처(SID는 일치하는 규칙의 Suricata ID다), 아이피 주소나 도메인 이름(해당 탭으로 이동하는 경우)을 찾았는지 그 여부를 확인하기 위해 해당 Suricata 시그니처를 클릭하면 되며, 하이퍼링크를 통해 Moloch 웹 인터페이스로 이동한다. 여기서 Cuckoo는 우리가 관심 있는 정확한 기준과 일치하도록 쿼리를 자동으로 수행한다.

몇 초 안에 아이피 주소 / 도메인 이름 / SID 등과 일치하는 다른 Cuckoo 분석을 볼 수 있다. Moloch는 PCAP 파일을 처리할 수 있는 뿐만 아니라 회사 전체의 트래픽을 수집하는 데 사용할 수 있으므로 Moloch 검색의 한계를 가늠할 수 없다. Moloch는 또 다른 커뮤니티 프로젝트로서 원격 스택 버퍼 오버플로우, 크로스 사이트 스크립팅 취약점 몇 개 그리고 일부 범위를 벗어난 Moloch 프로젝트의 충돌을 보고할 기회를 얻었고, 이로써 Moloch의 안정성이 향상되었으며, 이 도구를 사용하는 Cuckoo 사용자도 이 커밋에서 더 많은 정보를 찾을 수 있다.

Cuckoo는 Snort 출력도 보여주지만, Unix 소켓 지원을 통해 PCAP을 신속하게 분석할 수 있는 Suricata와 달리 각각의 PCAP 파일을 분석하기 위해 별도로 실행되어야 하므로 CPU를 상당히 의존하게 된다. (100% 사용 시 한 프로세서 당 최대 30초가 소요 - VM에서 실제 분석을 수행하기 위해 요구하는 CPU 성능보다 상회한다.)

마지막으로 Suricata와 Snort의 유용성은 전적으로 작성된 룰셋에 기반한다는 것에 유의한다. 다행스럽게도 새로운 위협(Suricata 스크린샷의 ET라는 서명에서 볼 수 있듯이)에 대응하기 위해 수만 가지의 룰셋을 무료로 제공한다. 이들 중 많은 것들은 유용하게(use-case) 적용되지 않지만, 무료 정보로 활용할 가치는 있다.

HTTP/HTTPS DECRYPTION AND PARSING

HTTP/HTTPS 트래픽 관련하여 개발하는 것은 꽤나 흥미로웠다. Cuckoo는 현재 반년 이상 운영해 왔으므로 TLS Master Secret를 추출할 수 있다. 구체적으로 말하자면 TLS 트래픽의 암호화 키를 가로채서 HTTPS 트래픽을 효과적으로 복호화할 수 있다. TLS Master Secrets 블로그 포스트에서 읽어볼 수 있듯이 tlsmaster.txt로 불리는 파일은 Wireshark에서 키와 관련된 PCAP을 로드할 때 HTTPS 트래픽을 복호화한다. 

Wireshark로 트래픽을 복호화하는 것은 하나의 일이지만, Cuckoo 웹 인터페이스의 PCAP 파일에서 HTTP와 HTTPS 흐름을 표시하고 수동적으로 추출하는 것은 또 다른 일이다. 이러한 기능을 만들기 위해 HTTPReplay라는 새로운 라이브러리를 제작했다. 이 라이브러리를 사용하도록 설정(즉, 설치)하면 HTTPS 트래픽을 보는 것은 HTTP/HTTPS 탭으로 이동하는 것만큼 간단하다. 다음 스크린샷은 네덜란드 현지 은행인 ING의 통신 내용이다. (HTTPS 암호를 복호화하지 않더라도 64비트 분석 파트에서 설명한 대로 HTML DOM과 자바스크립트 이벤트가 계속 표시된다.)

우리가 원하는 접근방식에서 주목해야 할 점은 TLS를 명료하게 가로채는 것이다. 더이상 트래픽을 복호화하기 위해 VM에 인증서를 설치할 필요가 없지만 TLS Master Secrets를 추출할 수 있는 능력이 필요하며, 추출한 암호화 키와 상호 참조할 수 있는 PCAP 파일이 필요하다. Certificate Pinning을 할 수 있는 응용 프로그램과 함께 Cuckoo Sandbox의 동작이 HTTPS를 복호화한다. (일반적인 접근 방식인 정적인 SSL / TLS 라이브러리가 제공하는 가로채기 응용프로그램은 지원하지 않는다.)

라이브러리의 이름은 사용 목적과 일치하지 않지만, 궁극적인 목적 중 하나는 PCAP 파일(TLS Master Secrets와 자바스크립트 Math.random() 기능의 PRNG 상태를 포함할 필요가 있는 경우)과 함께 시작하여, 이 PCAP 파일에서 볼 수 있는 트래픽을 완벽하게 재생하는 웹 서버로 전환하는 것이다. 이는 차례로 다른 브라우저의 다른 버전에 대해 공격 시도를 단위 테스트하기 위해 이용할 수 있다.

PER-ANALYSIS NETWORK ROUTING

사용자는 약 5년 동안 Cuckoo를 사용하면서 네트워크 라우팅에 어려움을 겪어 우리는 이를 개선할 필요가 있어 보였다. 이 개발은 Erik Kooijstra와 n3sfox의 도움으로 빠르게 개발할 수 있었다. 몇 가지 간단한 구성 옵션을 통해 기본 dirty line, 하나 이상의 VPN을 정의할 수 있었으며 다음 릴리즈에서는 FakeNet과 InetSim과 같은 서비스로도 라우팅 할 수 있었다. 이 기능은 현재 Ubuntu/Debian에서만 지원되며 Cuckoo와 함께 릴리즈 된 추가 스크립트를 루트로 실행해야 한다. 이 스크립트는 Cuckoo가 명령하는 명령으로 실행한다. (이 모든 것을 Cuckoo는 권장한 것처럼 비-루트로 실행될 수 있다.)

늦게 배포하는 동안, Christmas Doge는 멋진 새로운 기능을 제공했다. 

DOGE

OVER 300 CUCKOO SIGNATURES

보다 정확하게 행동 가능한 데이터를 얻는 과정에서 새로운 시그니처를 개선하고 추가하는데 상당한 노력을 기울였다. 200개가 넘는 새로운 시그니처를 제공한 RedSocks에게 감사하며, 현재 각 분석에서 300개 이상의 시그니처를 사용한다.

다음과 같이 다운로드할 수 있다.

cuckoo $ /utils/community.py -waf

추가로 각 보고서에는 기본으로 악의적인 행위에 따른 점수를 계산하여 사용하는데, 이는 시그니처로 식별한 패턴을 통해 의심스러운 평균 수준을 수치화한 것이다. 점수가 낮다고 해서 악성이 아니다는 것은 아니지만 높은 점수는 잠재적으로 악성코드임이 분명하다. 사실, 낮은 점수를 가진 악성 샘플은 점수가 6 ~ 10점인 악성 샘플보다 흥미롭다.

다음 스크린샷에서 Poweliks 샘플을 분석했고 샌드박스에서 10점 중 10점을 받았다.

Poweliks with score 10.2

VOLATILITY BASELINE CAPTURE

TODO 리스트의 항목은 항상 끝나지 않기에, 일반적인 사용자나 잠재적인 기여자가 특정 기능을 요청하거나 제안, 제시할 때 리스트의 우선순위를 정한다. 각각의 VM에서 baseline 캡처 기능의 개념 증명을 만들어준 Bart Mauritz와 Joshua Beens 덕분에 Cuckoo는 이제 분석한 후 캡처한 Volatility 결과와 분석하기 전 캡처한 결과를 비교할 수 있게 되었다.

baseline 처리 모듈로 생성된 두 개의 서로 다른 Volatility 결과는 quick overview에서 비교를 통한 차이점만 출력한다. 어떤 서비스가 중지되었는지, 어떤 커널 드라이버가 추가되었는지 등 신속하게 확인할 수 있다.

다음 스크린샷은 http://www.google.com/에 대한 분석 결과로 baseline 처리 모듈이 적용되어 달라진 점을 보여준다. 특별한 것은 없지만 야후와 관련된 임의의 프로세스는 사라지고, 무작위 검색 프로세스가 시작되었으며, pythonw.exe도 시작되었다는 것을 볼 수 있다. 이 마지막 pythonw는 분석을 위해 사용되기에 분석이 끝날 때까지 동작한다. 특히 새로운 인터넷 익스플로러 프로세스가 없는데, 이는 인터넷 익스플로러가 분석이 끝나기 전에 닫히거나 종료되었다는 사실로 설명할 수 있어 Volatility 결과에는 나타나지 않는다.

Baseline difference capture of Volatility

URL EXTRACTION FROM PROCESS MEMORY DUMPS

한 동안 Yara 룰을 지지했고, 여전히 Yara 룰을 지지하고 있다. 그러나 때로는 메모리 덤프, 삭제된 파일 또는 단순히 분석을 요청한 바이너리 파일에서 URL을 간단히 추출하는 것이 더 좋을 수 있다. 이러한 방법은 이미 많은 발견되고 있는 악성코드 변종 군의 C&C 정보를 추출하는 것에 용이하고 이를 체계화하는데 도움이 된다. 이 부분은 향후 릴리즈에서 더 많은 자동화가 이루어질 수 있을 것으로 보인다.

EXTRA SERVICES AS PART OF AN ANALYSIS

이제 많은 사용자들이 오랫동안 요청해온 기능을 소개한다. 경우에 따라 회사 네트워크를 대상으로 확산하는 기능을 가진 악성코드의 경우 로컬 네트워크에서 사용 가능한 서버를 추가로 구성하고 이를 악성코드가 검색하여 식별한 후 확산할 수 있다. 따라서 악성코드는 근처 서비스의 자원을 식별하기 위해 접근할 수 있다. 이전 버전의 Cuckoo는 기본적인 분석을 위한 가상 머신과 함께 가상 머신을 추가로 실행하여 좀 더 현실적인 환경을 제공한다.

이 기능은 매우 원시적인 단계지만 현실적인 허니팟 시나리오의 지원을 기대한다. 현재 취약한 HTTP, SMTP 그리고 FTP 서버와 같은 서비스를 호스팅하기 위해 하나 이상의 VM을 시작할 수 있지만, 미래에는 현실적인 기업 환경을 재현하기 위해 Active Directory 서버를 지원하려고 노력한다.

CONCLUSION

이 포스팅의 길이가 곧 나오는 Cuckoo Sandbox 2.0 릴리즈의 규모를 반영한 것이다. 많은 시간과 노력을 투자해왔으며, 최근 발전하는 흥미로운 많은 기술들을 환영한다.

많은 참가자의 의견, 버그 발견, 기능 요구를 기다리고 있으며, 이 프로젝트의 미래를 위해 우리와 상의하고 싶다면 IRC 채널(#cuckoosandbox on FreeNode)에 방문하길 바란다.

누락된 경우가 있을 수 있기에 새로운 커뮤니티 플랫폼도 공개한다. 완전히 새로운 소프트웨어로 이전 사이트를 변경했기에 오래된 컨텐츠는 잠시 사라졌을 것이다. 사라진 컨텐츠를 통합하여 복원하기 위해 노력할 것이다. 

출처


+ Recent posts