Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
osxcollector — OS X용 포렌식 증거 수집 및 분석 툴킷 | Kitploit
도구/GitHubGitHub/yelparchive/osxcollector
Disk ForensicsOSINT (Open Source Intelligence)Memory ForensicsForensicsDigital ForensicsIncident ResponseArchived
GitHubyelparchive/osxcollector

osxcollector

OS X용 포렌식 증거 수집 및 분석 툴킷

저장소 보기
1.9k23987년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

osxcollector

Build Status PyPI

OSXCollector 매뉴얼

OSXCollector는 OSX를 위한 포렌식 증거 수집 및 분석 도구 키트입니다.

포렌식 수집

수집 스크립트는 잠재적으로 감염된 머신에서 실행되며, 대상 머신을 설명하는 JSON 파일을 출력합니다. OSXCollector는 plists, SQLite 데이터베이스 및 로컬 파일 시스템에서 정보를 수집합니다.

포렌식 분석

포렌식 수집 결과를 바탕으로 분석가는 다음과 같은 질문에 답할 수 있습니다:

  • 이 머신이 감염되었습니까?
  • 그 멀웨어는 어떻게 거기에 도달했습니까?
  • 추가 감염을 어떻게 예방하고 탐지할 수 있습니까?

Yelp는 대부분의 OSXCollector 실행 분석을 자동화하여 출력을 _의심스러운 것들만_의 쉽게 읽고 실행 가능한 요약으로 변환합니다. 자동화된 OSXCollector 출력 분석을 최대한 활용하는 방법을 알아보려면 OSXCollector Output Filters 프로젝트를 확인하세요.

수집 수행

osxcollector.py는 표준 OSX 머신에서 종속성 없이 실행되는 단일 Python 파일입니다. 따라서 어떤 머신에서든 수집을 매우 쉽게 실행할 수 있습니다 - brew, pip, 설정 파일 또는 환경 변수를 건드릴 필요가 없습니다. 단일 파일을 머신에 복사하고 실행하기만 하면 됩니다:

sudo osxcollector.py만 있으면 됩니다.

root@kitploit:~
$ sudo osxcollector.py
Wrote 35394 lines.
Output in osxcollect-2014_12_21-08_49_39.tar.gz

방금 GitHub 저장소를 클론했다면, osxcollector.py는 osxcollector/ 디렉토리 안에 있으므로 다음과 같이 실행해야 합니다:

root@kitploit:~
$ sudo osxcollector/osxcollector.py

중요: Mac OS X 머신에서 python 명령이 시스템에 기본으로 제공되는 Python 인터프리터를 사용하도록 하고, 예를 들어 brew를 통해 설치된 Python 버전으로 재정의되지 않도록 주의하십시오. OSXCollector는 OS X 라이브러리에 대한 몇 가지 네이티브 Python 바인딩에 의존하는데, 이는 시스템에 원래 설치된 Python 버전 이외의 다른 버전에서는 사용할 수 없을 수 있습니다. 또는 사용하려는 Python 버전을 명시적으로 지정하여 osxcollector.py를 실행할 수 있습니다:

root@kitploit:~
$ sudo /usr/bin/python2.7 osxcollector/osxcollector.py

수집기의 JSON 출력은 시스템 로그와 같은 유용한 파일과 함께 .tar.gz로 번들되어 분석가에게 전달됩니다.

osxcollector.py에는 수집 방식을 변경할 수 있는 많은 유용한 옵션이 있습니다:

  • -i INCIDENT_PREFIX/--id=INCIDENT_PREFIX: 출력 파일의 접두사로 사용되는 식별자를 설정합니다. 기본값은 osxcollect입니다.

    root@kitploit:~
    $ sudo osxcollector.py -i IncontinentSealord
    Wrote 35394 lines.
    Output in IncontinentSealord-2014_12_21-08_49_39.tar.gz
    

    인시던트 이름을 창의적으로 지으세요. 고통 속에서도 웃을 수 있게 해줍니다.

  • -p ROOTPATH/--path=ROOTPATH: 수집을 실행할 파일 시스템의 루트 경로를 설정합니다. 기본값은 /입니다. 디스크 이미지에서 수집을 실행하는 데 유용합니다.

    root@kitploit:~
    $ sudo osxcollector.py -p '/mnt/powned'
    
  • -s SECTION/--section=SECTION: 전체 수집 중 일부만 실행합니다. 여러 번 지정할 수 있습니다. 섹션 및 서브섹션의 전체 목록은 다음과 같습니다:

    • version
    • system_info

수집 세부 사항

수집기는 수집된 모든 아티팩트를 포함하는 .tar.gz를 출력합니다. 아카이브에는 대부분의 정보가 포함된 JSON 파일이 들어 있습니다. 또한 대상 시스템 로그에서 유용한 로그 집합도 포함됩니다.

공통 키

모든 레코드

JSON 파일의 각 줄은 1개의 _정보 조각_을 기록합니다. 모든 JSON 레코드에 나타나는 몇 가지 공통 키가 있습니다:

  • osxcollector_incident_id: 모든 레코드가 공유하는 고유 ID.
  • osxcollector_section: 이 레코드가 보유한 데이터의 섹션 또는 유형.
  • osxcollector_subsection: 이 레코드가 보유한 데이터 유형의 서브섹션 또는 더 자세한 설명자.
파일 레코드

파일을 나타내는 레코드에는 유용한 키들이 있습니다:

  • atime: 파일 접근 시간.
  • ctime: 파일 생성 시간.
  • mtime: 파일 수정 시간.
  • file_path: 파일의 절대 경로.
  • md5: 파일 내용의 MD5 해시.
  • sha1: 파일 내용의 SHA1 해시.
  • sha2: 파일 내용의 SHA2 해시.

다운로드된 파일을 나타내는 레코드의 경우:

  • xattr-wherefrom: 다운로드된 파일의 소스 및 리퍼러 URL을 포함하는 목록.
  • xattr-quarantines: 어떤 애플리케이션이 파일을 다운로드했는지 설명하는 문자열.
SQLite 레코드

SQLite 데이터베이스의 행을 나타내는 레코드의 경우:

  • osxcollector_table_name: 행이 속한 테이블 이름.
  • osxcollector_db_path: SQLite 파일의 절대 경로.

특정 사용자와 연결된 데이터를 나타내는 레코드의 경우:

  • osxcollector_username: 사용자 이름

타임스탬프

OSXCollector는 타임스탬프를 YYYY-mm-dd hh:MM:ss 형식의 사람이 읽을 수 있는 날짜/시간 문자열로 변환하려고 시도합니다. 휴리스틱을 사용하여 다양한 타임스탬프를 자동으로 식별합니다:

  • epoch 이후 초
  • epoch 이후 밀리초
  • 2001-01-01 이후 초
  • 1601-01-01 이후 초

섹션

version 섹션

OSXCollector의 현재 버전.

system_info 섹션

시스템에 대한 기본 정보를 수집합니다:

  • 시스템 이름
  • 노드 이름
  • 릴리스
  • 버전
  • 머신 아키텍처
kext 섹션

다음에서 커널 확장을 수집합니다:

  • /System/Library/Extensions
  • /Library/Extensions
startup 섹션

다음에서 LaunchAgents, LaunchDaemons, ScriptingAdditions, StartupItems 및 기타 로그인 항목에 대한 정보를 수집합니다:

  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons
  • /Library/LaunchAgents
  • ~/Library/LaunchAgents
  • /Library/LaunchDaemons
  • /System/Library/ScriptingAdditions
  • /Library/ScriptingAdditions
  • /System/Library/StartupItems
  • /Library/StartupItems
  • ~/Library/Preferences/com.apple.loginitems.plist

Mac OS X 시작에 대한 자세한 내용은 다음에서 확인할 수 있습니다: http://www.malicious-streams.com/article/Mac_OSX_Startup.pdf

applications 섹션

설치된 애플리케이션의 해시를 생성하고 다음에서 설치 기록을 수집합니다:

  • /Applications
  • ~/Applications
  • /Library/Receipts/InstallHistory.plist
quarantines 섹션

격리(Quarantine)는 사용자가 인터넷에서 다운로드한 파일을 열려고 할 때 '이 파일을 실행하시겠습니까?'를 표시하는 데 필요한 정보입니다. 자세한 내용은 Apple Support의 Quarantines 설명을 확인하세요: http://support.apple.com/kb/HT3662

이 섹션은 격리된 파일에 대한 XProtect 해시 기반 멀웨어 검사 정보도 수집합니다. plist 파일 위치: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.plist

XProtect는 인터넷 플러그인의 최소 버전도 추가합니다. 해당 plist 파일 위치: /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

downloads 섹션

모든 사용자의 다운로드된 파일 해시를 다음에서 수집합니다:

  • ~/Downloads
  • ~/Library/Mail Downloads
  • ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
chrome 섹션

Google Chrome 웹 브라우저에서 다음 정보를 수집합니다:

  • History
  • Archived History
  • Cookies
  • Extensions
  • Login Data
  • Top Sites
  • Web Data

이 데이터는 ~/Library/Application Support/Google/Chrome/Default에서 추출됩니다.

firefox 섹션

Firefox 프로필의 여러 SQLite 데이터베이스에서 정보를 수집합니다:

  • Cookies
  • Downloads
  • Form History
  • History
  • Signons
  • Permissions
  • Addons
  • Extensions
  • Content Preferences
  • Health Report
  • Webapps Store

이 정보는 ~/Library/Application Support/Firefox/Profiles에서 추출됩니다.

Firefox 프로필 폴더에 대한 자세한 내용은 http://kb.mozillazine.org/Profile_folder_-_Firefox 를 참조하세요.

safari 섹션

Safari 프로필의 여러 plist 및 SQLite 데이터베이스에서 정보를 수집합니다:

  • Downloads
  • History
  • Extensions
  • Databases
  • Local Storage
accounts 섹션

사용자 계정에 대한 정보를 수집합니다:

  • system admins: /private/var/db/dslocal/nodes/Default/groups/admin.plist
  • system users: /private/var/db/dslocal/nodes/Default/users
  • social accounts: ~/Library/Accounts/Accounts3.sqlite
  • users' recent items: ~/Library/Preferences/com.apple.recentitems.plist
mail 섹션

메일 앱 디렉토리 내 파일의 해시를 생성합니다:

  • ~/Library/Mail
  • ~/Library/Mail Downloads
full_hash 섹션

디스크에 있는 모든 파일의 해시를 생성합니다. 전부 다요. 기본적으로 실행되지 않습니다. 다음 명령으로 실행해야 합니다:

root@kitploit:~
$ sudo osxcollector.py -s full_hash

기본 수동 분석

포렌식 분석은 예술과 과학이 조금씩 섞여 있습니다. 각 분석가는 OSXCollector 출력을 읽을 때 조금씩 다른 이야기를 보게 됩니다. 그것이 분석을 재미있게 만드는 요소입니다.

일반적으로 수집은 무언가 수상한 점이 있어 대상 머신에서 수행됩니다: 안티바이러스가 마음에 들지 않는 파일을 발견했거나, 심층 패킷 검사가 콜아웃을 관찰했거나, 엔드포인트 모니터링이 새로운 시작 항목을 발견했거나. 이 초기 경고의 세부 사항 - 파일 경로, 타임스탬프, 해시, 도메인, IP 등 - 그것만으로도 시작하기에 충분합니다.

타임스탬프

특정 타임스탬프 전후 몇 분을 단순히 grep하는 방식이 효과적입니다:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]'

브라우저 기록

기록이 포함되어 있습니다. jq와 같은 도구를 사용하면 멋진 출력을 얻을 수 있습니다:

root@kitploit:~
$ cat INCIDENT32.json | grep '2014-01-01 11:3[2-8]' | jq 'select(has("url"))|.url'

단일 사용자

root@kitploit:~
$ cat INCIDENT32.json | jq 'select(.osxcollector_username=="ivanlei")|.'

자동화된 분석

OSXCollector Output Filters 프로젝트에는 OSXCollector의 출력을 처리하고 변환하는 필터가 포함되어 있습니다. 필터의 목표는 OSXCollector 출력을 쉽게 분석할 수 있도록 하는 것입니다.

개발 팁

OSXCollector의 기능은 단일 파일인 osxcollector.py에 저장되어 있습니다. 수집기는 추가 패키지나 종속성 없이 OS X의 기본 설치에서 실행되어야 합니다.

소스 코드를 편집하기 전에 모든 OSXCollector 테스트가 통과하는지 확인하십시오. 다음을 사용하여 테스트를 실행할 수 있습니다: make test

소스 코드를 변경한 후 make test를 다시 실행하여 변경 사항이 테스트를 깨뜨리지 않는지 확인하십시오.

라이선스

이 작업은 GNU 일반 공중 라이선스(GNU General Public License)에 따라 라이선스가 부여되었으며, https://github.com/jipegit/OSXAuditor에서 파생되었습니다.

블로그 게시물

  • OSXCollector: OS X를 위한 포렌식 수집 및 자동화된 분석 - Ivan Leichtling

발표 자료

  • OSXCollector: OS X를 위한 자동화된 포렌식 증거 수집 및 분석 - Kuba Sendor @ BruCON 0x07
  • 썩은 사과를 없애기: OSXCollector로 Mac OS X 자동화 포렌식 및 분석 - Kuba Sendor @ BSides Manchester 2015
  • OSXCollector - Ivan Leichtling @ Macbrained 8월 밋업
  • OSXCollector - OS X를 위한 자동화된 포렌식 증거 수집 및 분석 - Ivan Leichtling @ OpenNSM
  • OSXCollector - OS X를 위한 자동화된 포렌식 증거 수집 및 분석 - Ivan Leichtling @ Duo Tech Talk (블로그 게시물)

외부 발표 자료

  • OSX Archaeology: OSXCollector와 Strata로 인디아나 존스 되기 - Chris Henderson & Justin Larson @ SAINTCon 2015

리소스

OS X 포렌식에 대해 더 배우고 싶으신가요?

  • Sarah Edward's mac4n6.com - Mac 포렌식에 관한 최고의 발표 자료.

다른 흥미로운 도구들:

  • KnockKnock - 부팅 시 자동으로 실행되도록 설정된 지속성 OS X 바이너리를 표시하는 명령줄 파이썬 스크립트.
  • Grr - Google Rapid Response: 침해 대응을 위한 원격 실시간 포렌식
  • osquery - SQL 기반 운영 체제 계측, 모니터링 및 분석
도구 다운로드
  • kext
  • startup
    • launch_agents
    • scripting_additions
    • startup_items
    • login_items
  • applications
    • applications
    • install_history
  • quarantines
  • downloads
    • downloads
    • email_downloads
    • old_email_downloads
  • chrome
    • history
    • archived_history
    • cookies
    • login_data
    • top_sites
    • web_data
    • databases
    • local_storage
    • preferences
  • firefox
    • cookies
    • downloads
    • formhistory
    • history
    • signons
    • permissions
    • addons
    • extension
    • content_prefs
    • health_report
    • webapps_store
    • json_files
  • safari
    • downloads
    • history
    • extensions
    • databases
    • localstorage
    • extension_files
  • accounts
    • system_admins
    • system_users
    • social_accounts
    • recent_items
  • mail
  • full_hash
  • root@kitploit:~
    $ sudo osxcollector.py -s 'startup' -s 'downloads'
    
  • -c/--collect-cookies: 쿠키 값을 수집합니다. 기본적으로 OSXCollector는 쿠키 값에 민감한 정보(예: 세션 ID)가 포함될 수 있으므로 덤프하지 않습니다.

  • -l/--collect-local-storage: 웹 브라우저의 로컬 저장소에 저장된 값을 수집합니다. 기본적으로 OSXCollector는 값에 민감한 정보가 포함될 수 있으므로 덤프하지 않습니다.

  • -d/--debug: 자세한 출력 및 Python 중단점을 활성화합니다. OSXCollector에 문제가 있으면 시도해 보세요.

    root@kitploit:~
    $ sudo osxcollector.py -d