今天要介紹的OpenCTI(開源威脅情資平台/開源威脅情報平台)。
OpenCTI 是一個開源平台,可讓組織管理其網路威脅情報跟資料。可以協助組織建立、儲存、組織、分享和視覺化有關網路威脅的技術和非技術資訊。也可以協助組織內部進行事件回應案例和協作工作。
OpenCTI 中資料的結構化是使用基於 STIX2 標準來執行。而使用上具有一個現代化的 Web 應用程式視覺化界面,讓使用者可以透過可視化快速了解資訊間的關聯性,提升調查和分析能力。
此外,OpenCTI 還可以與其他工具和應用程式集成,例如 MISP、TheHive、MITRE ATT&CK 等。
特色:
透過以上特點,OpenCTI 可以協助你全面了解組織的威脅,並提升決策能力以加速事件回應。
如果想試用但不想安裝,也可以申請他們官方 Demo 平台的帳號
建議大家可以申請一下,因為沒意外的話接下來有些範例
我會使用官方線上 Demo 平台,因為它需要不少資源,我擔心電腦跑不動
線上demo平台
OpenCTI demonstration
OpenCTI 的安裝同樣是可以在本機上手動安裝,
也可以使用 Docker 安裝,我們這邊會以 Docker 安裝作為範例
git clone https://github.com/OpenCTI-Platform/docker.git
cd docker
執行 docker-compose 之前
要先配置 .env 檔案,可以利用以下指令來產生
(以下指令根據官方提供範例,可依需求將帳號密碼或其他的值改掉)
如果不打算用以下指令的話,目錄中也有一個 .env.sample 可以作為參考
sudo apt install -y jq
(cat << EOF
OPENCTI_ADMIN_EMAIL=admin@opencti.io
OPENCTI_ADMIN_PASSWORD=ChangeMePlease
OPENCTI_ADMIN_TOKEN=$(cat /proc/sys/kernel/random/uuid)
MINIO_ROOT_USER=$(cat /proc/sys/kernel/random/uuid)
MINIO_ROOT_PASSWORD=$(cat /proc/sys/kernel/random/uuid)
RABBITMQ_DEFAULT_USER=guest
RABBITMQ_DEFAULT_PASS=guest
ELASTIC_MEMORY_SIZE=4G
CONNECTOR_HISTORY_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_EXPORT_FILE_STIX_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_EXPORT_FILE_CSV_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_IMPORT_FILE_STIX_ID=$(cat /proc/sys/kernel/random/uuid)
CONNECTOR_IMPORT_REPORT_ID=$(cat /proc/sys/kernel/random/uuid)
EOF
) > .env
因為依賴 ElasticSearch,調整記憶體可用空間
sudo sysctl -w vm.max_map_count=1048575
啟動容器
因為拉很多 IMAGE 所以會等一段時間
docker-compose up -d
這樣就架設完成,可以直接訪問 8080 Port 來登入
進去之後會發現沒有數據,沒東西好玩,所以我們要接續完成以下內容
來安裝 Connectors(本來想拆開兩天講,但發現一次講完好像比較順)
http://192.168.136.128:8080/
OpenCTI 是一個只是負責分析與視覺化的平台而已,所以架設完成之後其實裡面是沒有數據資料的,數據來源是需要透過 Connectors(連接器)導入的。官方也已經整理好將 Connectors 模板都放在Github 倉庫,所以其實是可以滿方便去匯入的。
比較常看到會先安裝的可能會是 AlienVault 或 MISP,兩個都是很有名的威脅情資來源,當然其他 Connectors 也不少是大家可能都很眼熟的。
官方提供的 Connectors 清單
https://github.com/OpenCTI-Platform/connectors/tree/master/external-import
這邊我們以 AlienVault 為例。AlienVault 是一間專注於提供威脅情報和安全監控解決方案的公司,主要針對中小型企業和中型企業,提供了一個相對經濟實惠的方式來實現高水平的安全監控和事件響應能力。該公司於2018年被AT&T 收購
因為資料來源是 alienvault,所以我們要到 alienvault 官網註冊,並且取得 API Key (OTX Key)。架設方式我們同樣以 docker 的方式來建立,我們可以先停用剛剛 OpenCTI 的容器。
然後將以下的內容加入到 docker-compose.yml 當中
一般來說,當中有四個參數值是我們”可能”要調整的
connector-alienvault:
image: opencti/connector-alienvault:5.10.3
environment:
- OPENCTI_URL=http://opencti:8080
- OPENCTI_TOKEN=65cc3e45-90eb-436a-be82-9002ae4d302a
- CONNECTOR_ID=2543bcc3-1bb4-4c8f-9d9a-8af6de57a541
- CONNECTOR_TYPE=EXTERNAL_IMPORT
- CONNECTOR_NAME=AlienVault
- CONNECTOR_SCOPE=alienvault
- CONNECTOR_CONFIDENCE_LEVEL=15 # From 0 (Unknown) to 100 (Fully trusted)
- CONNECTOR_UPDATE_EXISTING_DATA=false
- CONNECTOR_LOG_LEVEL=error
- ALIENVAULT_BASE_URL=https://otx.alienvault.com
- ALIENVAULT_API_KEY=72f57xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdb6f
- ALIENVAULT_TLP=White
- ALIENVAULT_CREATE_OBSERVABLES=true
- ALIENVAULT_CREATE_INDICATORS=true
- ALIENVAULT_PULSE_START_TIMESTAMP=2020-05-01T00:00:00 # BEWARE! Could be a lot of pulses!
- ALIENVAULT_REPORT_TYPE=threat-report
- ALIENVAULT_REPORT_STATUS=New
- ALIENVAULT_GUESS_MALWARE=false # Use tags to guess malware.
- ALIENVAULT_GUESS_CVE=false # Use tags to guess CVE.
- ALIENVAULT_EXCLUDED_PULSE_INDICATOR_TYPES=FileHash-MD5,FileHash-SHA1 # Excluded Pulse indicator types.
- ALIENVAULT_ENABLE_RELATIONSHIPS=true # Enable/Disable relationship creation between SDOs.
- ALIENVAULT_ENABLE_ATTACK_PATTERNS_INDICATES=true # Enable/Disable "indicates" relationships between indicators and attack patterns
- ALIENVAULT_INTERVAL_SEC=1800
restart: always
停用容器
docker-compose down
將以上設定寫入至docker-compose.yml
啟動容器
(這個階段可能需要等待很長一段時間才會完成,可能數十分鐘至一小時都可能)
docker-compose up -d
配置的參考圖片
然後啟動後沒意外會看到記憶體跟CPU滿載
可以在OpenCTI,點選左側的Data,上方的Connectors確認有正常配置
也可以點進去看看ALIENVAULT的進度跟描述
我們在dashboard的地方也可以看到有數據匯入進來了
這樣架設介面跟資料來源其實就完成了
可以開始動手探索玩玩看
最後補充一下,從一個人的藍隊的角度出發
OpenCTI 是一個我比較”不推薦”新手或是初期建置和使用的
(如果組織內部原本就有區分不同的資安團隊當然另當別論)
一個原因是它是做外部威脅情報的平台
可以先把內部的防護與監控先做好,再來思考這一塊這麼去做
其次,它可能更高度仰賴的專業知識與人工的判讀
也就是可能會有比較高的門檻,或是需要花費更多人工的時間
避免誤會,稍微解釋,高的門檻不表示比較”厲害”
打網球通常被認為是比較高門檻的運動
不表示會打網球的人就比打籃球、羽球的人厲害
不管對於「人」還是「運動本身」都是