
OSINT Omnibus (베타 릴리스)
옴니버스는 '이전에 별도로 출판된 여러 소설이나 기타 항목을 포함하는 단행본'으로 정의되며, 이것이 바로 InQuest Omnibus 프로젝트가 오픈 소스 인텔리전스 수집, 연구 및 아티팩트 관리를 위해 의도하는 바입니다.
사용하기 쉬운 대화형 명령줄 애플리케이션을 제공함으로써 사용자는 IP 주소, 도메인 이름, 이메일 주소, 사용자 이름, 파일 해시, 비트코인 주소 등 다양한 아티팩트를 조사하기 위한 세션을 만들 수 있으며, 계속해서 확장해 나가고 있습니다.
이 프로젝트는 SpiderFoot, Harpoon, DataSploit과 같은 이전의 위대한 프로젝트들로부터 영감을 얻었습니다. 오픈 소스 세계에 기여해 주신 위대한 저자분들께 감사드립니다.
이 애플리케이션은 Python 2.7을 염두에 두고 작성되었으며, OSX 및 Ubuntu 16.04 환경에서 성공적으로 테스트되었습니다.
이것은 최종 애플리케이션의 베타 버전이므로 사용 중 일부 버그나 기타 이상 현상이 발생할 수 있습니다. 대부분의 경우 Omnibus는 완전히 작동하며 즉시 OSINT 조사를 시작하는 데 사용할 수 있습니다.
Omnibus는 모듈 방식으로 구축되어 OSINT 데이터 소스 모듈과 가져오기/내보내기 모듈을 쉽게 추가할 수 있습니다. 각 카테고리별 모듈은 단일 디렉토리에 포함되어 있으며, 몇 줄의 코드를 추가하면 모듈이 다음 모듈이 될 수 있습니다!
Wiki가 계속 성장함에 따라 사용자 정의 플러그인 작성에 대한 전체 예제를 제공할 예정입니다.
버그나 기타 문제를 발견하시면 Issue 및/또는 Pull Request를 생성해 주세요. 또한 더 많은 모듈을 만들고 Omnibus 사용 사례를 확장하기 위한 커뮤니티 지원을 환영합니다. 새로운 기능에 대한 Fork 및 Pull Request는 언제든지 환영합니다!
이 README 파일은 Omnibus와 그 기능에 대한 간략한 개요를 제공합니다. 전체 문서는 이 저장소의 'docs' 폴더에서 확인할 수 있습니다.
시작하기 전에 Omnibus에서 사용되는 몇 가지 용어를 설명하겠습니다.
new 명령어를 사용하거나 모듈 실행을 통해 발견됨Omnibus로 조사를 시작하는 것은 이 GitHub 저장소를 클론하고, pip install -r requirements.txt를 사용하여 Python 요구사항을 설치한 후 python omnibus-cli.py를 실행하는 것만큼 간단합니다.
Omnibus 셸 - 주요 시작 화면

CLI의 시각적 참조를 위해, 위 그림은 새 세션이 시작되고 2개의 아티팩트가 세션에 추가된 후 help 메뉴가 표시된 Omnibus 콘솔입니다.
모듈 내에서 사용하려는 모든 API 키는 omnibus/etc/apikeys.json 파일에 설정해야 합니다.
이 파일은 API 키가 필요한 모든 서비스에 대한 자리 표시자가 포함된 JSON 문서이며, 모듈이 실행에 필요한 정확한 API 키를 검색하기 위해 모듈별로만 Omnibus에서 접근합니다.
API 키가 필요한 대부분의 서비스는 무료 계정과 API 키를 제공합니다. 일부 무료 계정은 리소스 제한이 낮을 수 있지만, 소규모 일일 조사나 애플리케이션 테스트 중에는 문제가 되지 않았습니다.
유용한 팁: cat apikeys 명령어를 사용하여 저장된 키를 확인하세요.
모듈이 실패하거나 결과를 반환하지 않는 경우, 먼저 여기서 API 키가 올바르게 저장되었는지 확인하세요.
처음 CLI를 실행하면 기본 정보가 포함된 도움말 메뉴가 표시됩니다.
Omnibus는 친숙함과 사용 편의성을 위해 몇 가지 일반적인 Linux 명령어를 모방하려고 합니다. 예를 들어, 아티팩트 정보를 표시하는 cat 명령어, 데이터베이스에서 아티팩트를 제거하는 rm 명령어, 현재 세션 아티팩트를 보기 위한 ls 명령어, 그리고 > 문자를 사용한 모든 명령어의 출력 리디렉션 지원 등이 있습니다.
출력 리디렉션의 예로, "inquest.net"이라는 아티팩트의 세부 정보를 로컬 디스크의 JSON 파일로 저장하려면 다음 명령어를 실행하면 됩니다:
cat inquest.net > inquest-report.json 그러면 파일이 생성됩니다!
이 기능은 상대 경로 대신 전체 파일 경로에서도 작동합니다.
Omnibus에서 가장 자주 사용되는 상위 수준 명령어는 다음과 같습니다:
session
new <아티팩트 이름>
modules
open <파일 경로>
ls
rm
wipe
cat <아티팩트 이름 | 세션 ID>
<모듈 이름> <아티팩트 이름 | 세션 ID>
<머신 이름> <아티팩트 이름 | 세션 ID>
애플리케이션의 다양한 영역에서 사용 가능한 명령어에 대한 빠른 참조가 필요하면, 이 목적을 위한 하위 도움말 메뉴가 있습니다. 다음 명령어를 사용하면 특정 영역과 관련된 명령어만 표시됩니다:
general
artifacts
sessions
modules
대부분의 사이버 조사는 IP 주소, 파일 해시 또는 이메일 주소와 같은 하나 이상의 기술적 지표로 시작됩니다. 검색 및 분석 후 관계가 형성되며 연결된 데이터 포인트를 통해 피벗할 수 있습니다. 이러한 데이터 포인트를 Omnibus에서는 아티팩트라고 부르며, 조사하려는 모든 항목을 나타냅니다.
아티팩트는 다음 유형 중 하나일 수 있습니다:
"new" 명령어 뒤에 아티팩트를 입력하면 Omnibus 세션 내에 해당 아티팩트가 생성되고 MongoDB에 레코드가 저장됩니다. 이 레코드는 아티팩트 이름, 유형, 하위 유형, 모듈 결과, 소스, 메모, 태그, 하위 항목 정보(필요 시) 및 생성 시간을 보유합니다. 생성되거나 저장된 아티팩트에 대해 모듈을 실행할 때마다 데이터베이스 문서가 업데이트되어 새로 발견된 정보를 반영합니다.
새 아티팩트를 생성하고 MongoDB에 추가하여 추적하려면 new <아티팩트 이름> 명령어를 실행하세요. 예를 들어, 도메인 inquest.net 조사를 시작하려면 new inquest.net을 실행하면 됩니다.
Omnibus는 자동으로 아티팩트의 유형을 결정하고 해당 유형의 모듈만 아티팩트에 대해 실행되도록 보장합니다. 아티팩트 유형을 지원하지 않는 모듈에 대해 아티팩트를 실행하려고 하면, 허용된 유형을 나열하는 경고 메시지가 표시됩니다.
모듈이 실행될 때, 발견 과정에서 새로운 아티팩트가 발견될 수 있습니다. 예를 들어, "dnsresolve" 명령어를 실행하면 Omnibus에서 이전에 보지 못한 새 IPv4 주소가 발견될 수 있습니다. 이러한 경우, 새로 발견된 아티팩트는 Omnibus에서 자동으로 새 아티팩트로 생성되며, 원래 발견된 모듈을 식별하기 위해 "source"라는 추가 필드로 부모와 연결됩니다. 이 예에서 새로 생성된 아티팩트의 소스는 "dnsresolve"가 됩니다.
아티팩트는 "rm" 명령어를 사용하여 데이터베이스에서 제거할 수 있습니다. 더 이상 아티팩트가 필요하지 않으면 삭제 명령어를 실행하고 아티팩트 이름 또는 세션 ID(있는 경우)를 지정하세요.
Omnibus는 "세션"이라는 기능을 사용합니다. 세션은 CLI 세션을 시작할 때마다 Redis를 통해 생성되는 임시 캐시입니다. 아티팩트를 생성할 때마다 해당 아티팩트 이름이 숫자 키와 함께 세션에 추가되어 관련 아티팩트를 쉽게 검색, 검색 및 작업할 수 있습니다.
예를 들어, 세션에 "inquest.net" 항목 하나만 있는 경우 virustotal inquest.net을 실행하는 대신 virustotal 1을 실행해도 동일한 결과를 얻을 수 있습니다. 실제로 이는 첫 번째 인수로 아티팩트 이름을 사용하는 모든 모듈 또는 명령어에서 작동합니다.
아티팩트 이름 대신 세션 ID와 상호작용

세션은 아티팩트에 쉽게 접근하기 위한 것이며, 명령줄 세션을 종료할 때마다 지워집니다. 세션을 조기에 지우려면 "wipe" 명령어를 실행하면 깨끗한 상태가 됩니다.
Omnibus는 현재 다음 모듈 목록을 지원합니다. 모듈 제안이 있거나 직접 작성하고 싶다면 Pull Request를 생성해 주세요.
또한 Omnibus 콘솔 내에서 모듈 이름을 입력하면 해당 모듈과 관련된 도움말 정보가 표시됩니다.
모듈
머신은 주어진 아티팩트에 대해 해당 아티팩트 유형의 모든 사용 가능한 모듈을 실행하는 간단한 방법입니다. 단일 명령어로 대상에 대해 가능한 많은 정보를 수집하려는 경우 빠른 방법입니다.
이를 수행하려면 machine <아티팩트 이름|세션 ID> 명령어를 실행하고 모듈 실행이 완료될 때까지 몇 분 기다리세요.
유일한 단점은 아티팩트 유형과 모듈별 결과에 따라大量的 데이터와 하위 아티팩트가 반환될 수 있다는 것입니다. 이를 해결하기 위해 저장된 데이터베이스 문서에서 특정 아티팩트 필드를 제거하여 사용자가 원치 않는 데이터를 쉽게 정리할 수 있는 방법을 연구 중입니다.
기억해야 할 몇 가지 빠른 명령어:
session - 새 아티팩트 캐시 시작cat <아티팩트 이름>|apikeys - 아티팩트 문서를 예쁘게 출력하거나 저장된 API 키 보기open <파일 경로> - 아티팩트 목록이 포함된 텍스트 파일을 Omnibus로 로드new <아티팩트 이름> - 새 아티팩트를 생성하여 MongoDB 및 세션에 추가find <아티팩트 이름> - 아티팩트가 데이터베이스에 존재하는지 확인하고 결과 표시보고는 아티팩트 데이터베이스 문서의 JSON 출력으로, 기본적으로 "cat" 명령어 출력의 텍스트 파일 버전입니다. 그러나 report 명령어를 사용하여 아티팩트와 출력을 저장할 파일 경로를 지정할 수 있습니다:
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.json위 명령어는 기본 보고 디렉토리인 omnibus/reports를 재정의합니다. 기본적으로 보고 경로를 지정하지 않으면 모든 보고가 해당 위치에 저장됩니다. 또한 파일 이름을 지정하지 않으면 보고는 다음 형식을 사용합니다:
[artifact_name]_[timestamp].json명령어의 출력은 표준 Linux 문자 >를 사용하여 임의의 텍스트 파일에 저장할 수도 있습니다.
예를 들어, 호스트에 대한 VirusTotal 조회 결과를 "vt-lookup.json" 파일에 저장하려면 다음을 실행하면 됩니다:
virustotal inquest.net > vt-lookup.json기본적으로 리디렉션된 출력 파일은 현재 작업 디렉토리, 즉 "omnibus/"에 저장되지만, virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json과 같이 전체 경로를 지정하면 JSON 형식의 출력이 해당 위치에 저장됩니다.