情報セキュリティ

サイバー攻撃観測記述形式CybOX概説

最終更新日:2018年5月31日

独立行政法人 情報処理推進機構
セキュリティセンター

CybOX(Cyber Observable eXpression)
~サイバー攻撃の観測事象を記述するための仕様~

サイバー攻撃が発生すると、その攻撃活動によって、標的型メールの受信、不正な通信の発生やマルウェア感染などにより、パソコンやサーバ上に活動痕跡が記録されることになります。サイバー攻撃観測記述形式CybOX(Cyber Observable eXpression)(*1)は、これらの事象を記録し、交換するために開発されたサイバー攻撃の観測事象を記述するための仕様です。

CybOXは、米国政府が推進しているサイバー攻撃対策において、サイバー攻撃活動によって観測された事象を記述するための技術仕様で、米国政府の支援を受けた非営利団体のMITRE(*2)が中心となり仕様策定を進めてきたものです。2009年9月に、攻撃方法の種類を一意に識別するために攻撃方法のタイプを体系化するCAPEC(Common Attack Pattern Enumeration and Classification:共通攻撃パターン一覧)(*3)の延長で検討が開始されました。その後、マルウェアの動作、痕跡、攻撃パターンなどの属性を記述するための仕様であるMAEC(Malware Attribute Enumeration and Characterization:マルウェア特徴属性一覧)(*4)と、ログなどのイベントを記述するための仕様であるCEE(Common Event Expression:共通イベント記述)(*5)との連携が検討され、2011年5月にCybOXの原型ができあがり、2012年11月、CybOX V1.0がリリースされました。

CybOXを用いると、サイバー攻撃活動によって観測された事象の交換をプログラム処理することにより管理工数を低減できるようになります。また、OVAL(Open Vulnerability and Assessment Language:セキュリティ検査言語)(*6)と組み合わせることにより、観測された事象の確認作業をプログラム処理できるようになります。

本資料はMITREから2014年1月23日に公開されたCybOXバージョン2.1の仕様書を基に作成しました。詳細は、MITREのCybOXの仕様書を参照して下さい。

1. CybOX言語

CybOXを利用するためには、CybOX言語で観測事象を記述します。CybOX言語で記述する観測事象は、オブジェクトとイベントフィールドを用いて記述します。オブジェクトは、ファイル、レジストリキー、プロセスなど、サイバー攻撃活動によって観測された事象の主体を記述するものです。図 1は、CybOX言語を使って、『ファイル「ipa.exe」』が格納されているフォルダ、ファイルサイズ、SHA-1ハッシュなどを記述したものです。

ファイル「\ipa\20130420-cybox\ipa.exe」(サイズ:21,504バイト、SHA-1ハッシュ: 7BA0024B0F5B9280204AE9B0EAC12446C6CACF14)をCybOX言語で記述した場合

イベントは観測事象中に発生した動作を記述するもので、例えば、ファイルを削除した、レジストリキーを作成した、HTTP GET要求を受信したなど、あるオブジェクトに対して行われた動作を記述します。図 2は、CybOX言語を使って、『ipa.exeがファイルipa.dllを作成したこと』を記述したものです。

ipa.exeが、ファイル「ipa.dll」(サイズ:16,424バイト、SHA-1ハッシュ: 96CE67615C0191770E745B11153225733A142DBE)をフォルダ「\ipa\20130420-cybox」に作成したことをCybOX言語で記述した場合

オブジェクトでは、個々のオブジェクトの属性を考慮し、オブジェクトの個別記述をサポートすることで、その特性を記述するようにしています。また、イベントでは、その個別動作をアクションとして記述します。

CybOXバージョン2.1では、オブジェクトの個別記述として、ファイル、Windowsレジストリ、電子メール、URI、IPアドレス、ポート番号など、約80種類が準備されています(表 1)。また、アクションの個別動作としては、アクションの形態とその具体的な動作からなります。アクションの形態としては、開く/閉じる、実行/停止、許可/拒否、アップロード/ダウンロードなどで約110種類が規定されています(表 2)。アクションの具体的な動作としては、ファイルを開く、閉じる、削除するなどのファイル操作、ユーザの追加削除操作、ファイルのアップロードやダウンロード操作など、約180種類が規定されています(表 3)。

表 1. CybOX言語でサポートしているオブジェクトの個別記述

汎用

API, Account, Artifact, Code, Custom, Device, Disk, Disk Partition, File, GUI Dialogbox, GUI, GUI Window, Library, Link, Memory, Mutex, Pipe, Process, Product, Semaphore, System, User Account, User Session, Volume, Whois

Windows関連

Win Computer Account, Win Critical Section, Win Driver, Win Event Log, Win Event, Win Executable File, Win File, Win Handle, Win Kernel Hook, Win Kernel, Win Mailslot, Win Memory Page Region, Win Mutex, Win Network Route Entry, Win Network Share, Win Pipe, Win Prefetch, Win Process, Win Registry Key, Win Semaphore, Win Service, Win System, Win System Restore, Win Task, Win Thread, Win User Account, Win Volume, Win Waitable Timer

UNIX関連

Unix File, Unix Network Route Entry, Unix Pipe, Unix Process, Unix User Account, Unix Volume

ネットワーク

Address, Network Connection, Network Flow, Network Packet, Network Route Entry, Network Route, Network Socket, Network Subnet, Port, Socket Address

アプリケーション

DNS Cache, DNS Query, DNS Record, Email Message, HTTP Session, Linux Package, PDF File, URI, X509 Certificate

2. CybOXとSCAP

米国政府では、情報セキュリティにかかわる技術面での自動化と標準化を実現する技術仕様SCAP(Security Content Automation Protocol)(*7)の利活用を推進しています。CybOXの技術仕様は、SCAPやその他の自動化に資する技術仕様との連携が考慮されています。ここでは、SCAPの技術仕様の一つであるOVAL、マルウェア特徴属性一覧を記述するMAECとCybOXとの具体的な連携について示します。

  • (1) CybOX-OVAL連携
    • セキュリティ検査言語OVAL(Open Vulnerability and Assessment Language)は、脆弱性対策のための確認作業を機械的に実現するための仕様で、脆弱性対策情報を、機械処理可能なXMLベースのOVAL言語で記述する仕様です。CybOX-OVAL連携は、CybOX言語で記述されたパソコンやサーバ上の活動痕跡を、OVAL言語での記述データに変換します。これにより、OVALを使って、観測された事象の確認作業をプログラム処理できるようになります。

図 3は、CybOX-OVAL連携で提供されている変換スクリプトCybOX to OVAL XML(*8)を使って、CybOX言語で記述された『ファイル「ipa.exe」』(図 1)を、OVAL言語の記述データに変換したものです。OVAL言語で記述されたデータ(以降、OVAL定義データ)には、『フォルダ「\ipa\20130420-cybox」には、ファイルサイズ21,504バイトのファイル「ipa.exe」が存在する』と記載されています。このOVAL定義データを解釈するプログラム(以降、OVALインタプリタ)を用いて機械的に処理することで、『フォルダ「\ipa\20130420-cybox」には、ファイルサイズ21,504バイトのファイル「ipa.exe」が存在する』かどうかを判定できます。図 4は、MITREが提供しているOVALインタプリタを使って判定した結果で、この場合、『ファイル「ipa.exe」』は存在しないことを示しています。

ここでは、一般的な『ファイル「ipa.exe」』を例題としていますが、サイバー攻撃などで蔵置された不審なファイルの存在をCybOX言語で記述されたデータとして交換し、CybOX-OVAL連携で不審なファイルの存在をチェックするOVAL定義データに変換することで、観測された事象の確認作業をプログラム処理できることになるわけです。

  • (2) CybOX-MAEC連携
    • MAEC(Malware Attribute Enumeration and Characterization:マルウェア特徴属性一覧)は、マルウェアの特徴や動作などを記述するためのXMLベースの仕様です。CybOX-MAEC連携は、パソコンやサーバ上の活動痕跡を記述できるCybOXの仕様を、MAECの仕様に取り込むというもので、2012年から連携が始まりました。

図 5は、CybOXバージョン2.1の仕様の概要図で、このうち、緑色の部分が、MAECバージョン4.1の仕様に取り込まれています。

  • 図 5. CybOXの仕様の概要図

図 6は、「\ipa\20130420-cybox\ipa.exe」(サイズ:21,504バイト、SHA-1ハッシュ:7BA0024B0F5B9280204AE9B0EAC12446C6CACF14)を、マルウェアと見立てて、MAEC言語を使って記述したデータです。青枠で囲った部分がCybOX言語で記述したデータ部で、このようにパソコンやサーバ上の活動痕跡を記述する仕様CybOXを基点として連携が図られています。

3. IPAでのCybOXの試行について

IPAでは、IPAが保有する観測事象をCybOX言語で記述することを検討しています。ここでは、2012年10月30日に公開したIPAテクニカルウォッチ「フリーメールからの送信が増加傾向に:最近の標的型攻撃メールの傾向と事例分析」(*9)の中から、IPAの職員を詐称し短時間に大量にIPAに標的型攻撃メールが送られた事案をCybOX言語で記述した事例として紹介します。

今後、サイバー攻撃活動によって観測された事象を記述する技術仕様CybOXの活用と共に、情報セキュリティにかかわる技術面での自動化と標準化を実現する技術仕様SCAPをベースとした脆弱性対策情報の提供ならびに流通基盤との連携を図っていくなど、検討を行っていきます。

【IPAの職員を詐称し短時間に大量にIPAに標的型攻撃メールが送られた事案】

Cybox言語での記述したXMLファイルのダウンロード:< cybox_observable_ipa_000009392.xml

cybox_observable_ipa_000009392.xmlの解説

  • IPA:observable_ipa_000009392_01
    • 2012年7月19日、IPAの複数のメールアドレスに対して標的型攻撃メールが届きました。この攻撃では、約3分間の短い間にメール本文と添付ファイル及び差出人が同一の標的型攻撃メールが計19件送られました。この電子メールでは、実在するIPAの職員(組織幹部)の名前を詐称し、連絡網の送付という、受信者が添付ファイルを開く動機を強く与える文面でした。また、この標的型攻撃メールはフリーメールから送信されていました。ここでは、19件の中から2012/07/19 14:25:55に部門外部受付メーリングリストで受信したメールを取り上げます(図 7)。
  • 図 7. IPAに届いた、ある標的型攻撃メール
  • IPA:observable_ipa_000009392_02
    • 標的型攻撃メールの添付ファイル名は、「事務系連絡網.zip」という、メール本文に関係深い日本語が使われていました。なお、このZIPファイルはパスワード無しで解凍可能でした。
  • IPA:observable_ipa_000009392_03
    • 今回、IPAでは安全な検証環境を使って添付ファイルを解凍し、内容を確認しました。ZIPファイルの内容は業務で利用することの多いMicrosoft Wordの文書ファイルを思わせるアイコンでしたが、実際の拡張子がexeの実行ファイルでした(図 8)。また、この不審なファイルに対してファイルハッシュ値を算出し、一般に公開されているウイルス情報サイトで調べてみたところ、登録されていませんでした。これは標的型攻撃メールを受信した時点では、多くのセキュリティ対策ソフトで既知のウイルスとして検出されないことを示すものでした。
  • 図 8. アイコンを文書ファイルに偽装した実行ファイル(exe)
  • IPA:observable_ipa_000009392_04
    • 不審なexeファイル(事務系連絡網.exe)を実行すると同じフォルダに、隠しファイル(cserss.exe)が作成されました。
  • IPA:observable_ipa_000009392_05
    • 不審なexeファイル(事務系連絡網.exe)を実行すると、起動時に自動実行するために、レジストリに値が書き込まれました。
  • IPA:observable_ipa_000009392_06~IPA:observable_ipa_000009392_11
    • 隠しファイル(cserss.exe)が起動され、インターネットエクスプローラ(iexplorer.exe)に寄生し、自身は終了しました。その後、tw.####.com(IPアドレス:AAA.AAA.1.114)、hk.####.com(IPアドレス:BBB.BBB.118.33)のポート番号443/TCPへの接続が試みられました。

4. 補足資料

CybOX言語でサポートしているアクションの形態(表 2)とアクションの具体的な動作(表 3)は、次の通りです。

Accept
Access
Add
Alert
Allocate
Archive
Assign
Audit
Backup
Bind
Block
Call
Change
Check
Clean
Click
Close
Compare
Compress
Configure
Connect
Control
Copy/Duplicate
Create
Decode
Decompress
Decrypt
Deny
Depress
Detect
Disconnect
Download
Draw
Drop
Encode
Encrypt
Enumerate
Execute
Extract
Filter
Find
Flush
Fork
Free
Get
Hook
Hide
Impersonate
Initialize
Inject
Install
Interleave
Join
Kill
Listen
Load
Lock
Login/Logon
Logout/Logoff
Map
Merge
Modify
Monitor
Move
Open
Pack
Pause
Press
Protect
Quarantine
Query
Queue
Raise
Read
Receive
Release
Rename
Remove/Delete
Replicate
Restore
Resume
Revert
Run
Save
Scan
Schedule
Search
Send
Set
Shutdown
Sleep
Snapshot
Start
Stop
Suspend
Synchronize
Throw
Transmit
Unblock
Unhide
Unhook
Uninstall
Unload
Unlock
Unmap
Unpack
Update
Upgrade
Upload
Wipe/Destroy/Purge
Write








 

表 2. CybOX言語でサポートしているアクションの形態

Accept Socket Connection
Add Connection to Network Share
Add Network Share
Add System Call Hook
Add User
Add Windows Hook
Add Scheduled Task
Allocate Virtual Memory in Process
Bind Address to Socket
Change Service Configuration
Check for Remote Debugger
Close Port
Close Registry Key
Close Socket
Configure Service
Connect to IP
Connect to Named Pipe
Connect to Network Share
Connect to Socket
Connect to URL
Control Driver
Control Service
Copy File
Create Dialog Box
Create Directory
Create Event
Create File
Create File Alternate Data Stream
Create File Mapping
Create File Symbolic Link
Create Hidden File
Create Mailslot
Create Module
Create Mutex
Create Named Pipe
Create Process
Create Process as User
Create Registry Key
Create Registry Key Value
Create Remote Thread in Process
Create Service
Create Socket
Create Symbolic Link
Create Thread
Create Window
Delete Directory
Delete File
Delete Named Pipe
Delete Network Share
Delete Registry Key
Delete Registry Key Value
Delete Service
Delete User
Disconnect from Named Pipe
Disconnect from Network Share
Disconnect from Socket
Download File
Enumerate DLLs
Enumerate Network Shares
Enumerate Protocols
Enumerate Registry Key Subkeys
Enumerate Registry Key Values
Enumerate Threads in Process
Enumerate Processes
Enumerate Services
Enumerate System Handles
Enumerate Threads
Enumerate Users
Enumerate Windows
Find File
Find Window
Flush Process Instruction Cache
Free Library
Free Process Virtual Memory
Get Disk Free Space
Get Disk Type
Get Elapsed System Up Time
Get File Attributes
Get Function Address
Get System Global Flags
Get Host By Address
Get Host By Name
Get Host Name
Get Library File Name
Get Library Handle
Get NetBIOS Name
Get Process Current Directory
Get Process Environment Variable
Get Process Startup Information
Get Processes Snapshot
Get Registry Key Attributes
Get Service Status
Get System Global Flags
Get System Local Time
Get System Host Name
Get System NetBIOS Name
Get System Network Parameters
Get System Time
Get Thread Context
Get Thread Username
Get User Attributes
Get Username
Get Windows Directory
Get Windows System Directory
Get Windows Temporary Files Directory
Hide Window
Impersonate Process
Impersonate Thread
Inject Memory Page
Kill Process
Kill Thread
Kill Window
Listen on Port
Listen on Socket
Load and Call Driver
Load Driver
Load Library
Load Module
Lock File
Logon as User
Map File
Map Library
Map View of File
Modify File
Modify Named Pipe
Modify Process
Modify Service
Modify Registry Key
Modify Registry Key Value
Monitor Registry Key
Move File
Open File
Open File Mapping
Open Mutex
Open Port
Open Process
Open Registry Key
Open Service
Open Service Control Manager
Protect Virtual Memory
Query Disk Attributes
Query DNS
Query Process Virtual Memory
Queue APC in Thread
Read File
Read From Named Pipe
Read From Process Memory
Read Registry Key Value
Receive Data on Socket
Release Mutex
Rename File
Revert Thread to Self
Send Control Code to File
Send Control Code to Pipe
Send Control Code to Service
Send Data on Socket
Send Data to Address on Socket
Send DNS Query
Send Email Message
Send ICMP Request
Send Reverse DNS Query
Set File Attributes
Set NetBIOS Name
Set Process Current Directory
Set Process Environment Variable
Set System Global Flags
Set System Host Name
Set System Time
Set Thread Context
Show Window
Shutdown System
Sleep Process
Sleep System
Start Service
Unload Driver
Unlock File
Unmap File
Unload Module
Upload File
Write to File
Write to Process Virtual Memory

表 3. CybOX言語でサポートしているアクションの具体的な動作

脚注

  1. (*1)
    CybOX:Cyber Observable eXpression。パソコンやサーバ上に活動痕跡が記録されたサイバー攻撃の観測事象を記述するための仕様言語。
  1. (*2)
    MITRE Corporation。米国政府向けの技術支援や研究開発を行う非営利組織。
  1. (*3)
    CAPEC:Common Attack Pattern Enumeration and Classification。共通攻撃パターン一覧。攻撃方法の種類を一意に識別するための攻撃方法タイプの一覧。
  1. (*4)
    MAEC:Malware Attribute Enumeration and Characterization。マルウェア特徴属性一覧。マルウェアの動作、痕跡、攻撃パターンなどの属性を記述するための仕様。
  1. (*5)
    CEE:Common Event Expression。共通イベント記述。ログなどのイベントを記述するための仕様。
  1. (*6)
    OVAL:Open Vulnerability and Assessment Language。コンピュータのセキュリティ設定状態を検査するための言語仕様。
  1. (*7)
    SCAP:Security Content Automation Protocol。米国政府が推進している情報セキュリティにかかわる技術面での自動化と標準化を実現する技術仕様。
  1. (*8)
    CybOXProject / Toolsでは、スクリプト言語Pythonを使って、CybOX言語での記述データをOVAL定義データに変換するツール、電子メールをCybOX言語での記述データに変換するツール、OpenIOCという言語仕様で記述されたデータをCybOX言語での記述データに変換するツールなどを提供しています。
  1. (*9)
    IPAテクニカルウォッチ「フリーメールからの送信が増加傾向に:最近の標的型攻撃メールの傾向と事例分析(2012年10月30日公開)

お問い合わせ先

IPA セキュリティセンター(IPA/ISEC)

  • E-mail

    vuln-inqアットマークipa.go.jp

更新履歴

  • 2017年5月31日

    お問合せ先を更新

  • 2015年7月22日

    参考情報を追加

  • 2014年7月15日

    Observable idの名称を改訂しました。

  • 2014年3月20日

    掲載