情報セキュリティ
最終更新日: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の仕様書を参照して下さい。
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)。
汎用 |
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 |
米国政府では、情報セキュリティにかかわる技術面での自動化と標準化を実現する技術仕様SCAP(Security Content Automation Protocol)(*7)の利活用を推進しています。CybOXの技術仕様は、SCAPやその他の自動化に資する技術仕様との連携が考慮されています。ここでは、SCAPの技術仕様の一つであるOVAL、マルウェア特徴属性一覧を記述するMAECとCybOXとの具体的な連携について示します。
図 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定義データに変換することで、観測された事象の確認作業をプログラム処理できることになるわけです。
図 5は、CybOXバージョン2.1の仕様の概要図で、このうち、緑色の部分が、MAECバージョン4.1の仕様に取り込まれています。
図 6は、「\ipa\20130420-cybox\ipa.exe」(サイズ:21,504バイト、SHA-1ハッシュ:7BA0024B0F5B9280204AE9B0EAC12446C6CACF14)を、マルウェアと見立てて、MAEC言語を使って記述したデータです。青枠で囲った部分がCybOX言語で記述したデータ部で、このようにパソコンやサーバ上の活動痕跡を記述する仕様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の解説
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言語でサポートしているアクションの具体的な動作
IPA セキュリティセンター(IPA/ISEC)
2017年5月31日
お問合せ先を更新
2015年7月22日
参考情報を追加
2014年7月15日
Observable idの名称を改訂しました。
2014年3月20日
掲載