libtaxiiを触ってみる

More than 1 year has passed since last update.


きっかけ

仕事で stix ドキュメントを扱う機会があり、より理解を深める為に

まずはクライアント側とデータの内容を勉強する為、触ってみる。


環境


  • ローカル環境は以下のとおり。

% sw_vers     

ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1217

% python -V
Python 2.7.13

% pip -V
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)

% pip show libtaxii
Name: libtaxii
Version: 1.1.110
Summary: TAXII Library.
Home-page: http://taxii.mitre.org/
Author: Mark Davidson
Author-email: mdavidson@mitre.org
License: UNKNOWN
Location: /usr/local/lib/python2.7/site-packages
Requires: six, lxml, python-dateutil


  • taxiiサーバは下記を利用。

Hail a TAXII.com ( http://hailataxii.com )

デモの方法は下記に記載されています。

Hailataxii and Libtaxii Demo

( https://github.com/STIXProject/schemas/wiki/Hailataxii-and-Libtaxii-Demo )


Stix ドキュメント取得手順



  1. サーバ側で管理されているサービスを確認する

    まずサーバにてどのようなサービスが利用可能なのか?を確認したい。

    Hail a TAXII.com にアクセスすると、以下の情報が記載されている。

    ・ Our data is accessible via the TAXII-HTTP Message Protocol. (1.0 & 1.1)

    ・ The discovery service is located at http://hailataxii.com/taxii-discovery-service

    ・ Anonymous connections are accepted.

    ・ Clients that require login details can use HTTP-Basic user=guest, password=guest.

    上記の情報をもとに対応サービス確認のため、サーバへ接続する。

    % discovery_client --host hailataxii.com --path /taxii-discovery-service --username guest --pass guest
    
    Request:

    Message Type: Discovery_Request
    Message ID: 7418183229071165630

    Response:

    Message Type: Discovery_Response
    Message ID: 73726; In Response To: 7418183229071165630
    === Service Instance ===
    Service Type: DISCOVERY
    Service Version: urn:taxii.mitre.org:services:1.1
    Protocol Binding: urn:taxii.mitre.org:protocol:https:1.0
    Service Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    Available: True
    Message: None
    === Service Instance ===
    Service Type: COLLECTION_MANAGEMENT
    Service Version: urn:taxii.mitre.org:services:1.1
    Protocol Binding: urn:taxii.mitre.org:protocol:https:1.0
    Service Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    Available: True
    Message: None
    === Service Instance ===
    Service Type: POLL
    Service Version: urn:taxii.mitre.org:services:1.1
    Protocol Binding: urn:taxii.mitre.org:protocol:https:1.0
    Service Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    Available: True
    Message: None

    まず、データを参照する為には、以下のURLにアクセスする必要があることが分かります。

    Service Address: http://hailataxii.com:80/taxii-data

    その上で、上記には以下の内容が記載されています。

    ・ Service Type: DISCOVERY

    Taxii サービスを公開している。

    ・ Service Type: COLLECTION_MANAGEMENT

    どのような集積データを管理しているのか?その種類を確認することが可能。

    ・ Service Type: POLL

    集積データを参照することが可能。

    本サーバでは上記が利用できる、ということが分かる。

    なお、taxiiには上記の他、 Inbox という、データを投稿できるサービスもありますが、今回は許可されていないことが分かります。




  2. データの種類を確認する

    1.にて、データの種類を確認するには、 COLLECTION_MANAGEMENT にアクセスすることが分かった。

    これまで判明した情報をもとに、次に種類を確認するため、サーバへ接続する。

    % collection_information_client --host hailataxii.com --username guest --pass guest --path /taxii-data
    
    Request:

    Message Type: Collection_Information_Request
    Message ID: 4659866494431617975

    Response:

    Message Type: Collection_Information_Response
    Message ID: 85921; In Response To: 4659866494431617975
    Contains 11 Collection Informations
    === Data Collection Information ===
    Collection Name: guest.Abuse_ch
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.Abuse_ch
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.CyberCrime_Tracker
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.CyberCrime_Tracker
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.EmergineThreats_rules
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.EmergineThreats_rules
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.EmergingThreats_rules
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.EmergingThreats_rules
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.Lehigh_edu
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.Lehigh_edu
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.MalwareDomainList_Hostlist
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.MalwareDomainList_Hostlist
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.blutmagie_de_torExits
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.blutmagie_de_torExits
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.dataForLast_7daysOnly
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.dataForLast_7daysOnly
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.dshield_BlockList
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.dshield_BlockList
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: guest.phishtank_com
    Collection Type: DATA_FEED
    Available: True
    Collection Description: guest.phishtank_com
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    === Data Collection Information ===
    Collection Name: system.Default
    Collection Type: DATA_FEED
    Available: True
    Collection Description: system.Default
    Supported Content: urn:stix.mitre.org:xml:1.0
    === Polling Service Instance ===
    Poll Protocol: urn:taxii.mitre.org:protocol:https:1.0
    Poll Address: http://hailataxii.com:80/taxii-data
    Message Binding: urn:taxii.mitre.org:message:xml:1.1
    ==================================

    このサーバでは、10種類のデータ(1種類重複)を提供している。

    それぞれ、データの種類 Collection Name と、その種類データの参照先 Poll Address が分かる。

    ・ Collection Name: guest.Abuse_ch

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.CyberCrime_Tracker

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.EmergineThreats_rules

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.Lehigh_edu

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.MalwareDomainList_Hostlist

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.blutmagie_de_torExits

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.dataForLast_7daysOnly

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.dshield_BlockList

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: guest.phishtank_com

    Poll Address: http://hailataxii.com:80/taxii-data

    ・ Collection Name: system.Default

    Poll Address: http://hailataxii.com:80/taxii-data




  3. 実際にデータを参照する

    1.にてデータの種類を、2.にてデータの参照先を確認することができた。

    それでは、実際にデータを取得してみる。

    ※ 以下のコマンドを実行すると、カレントディレクトリに多くのデータがダウンロードされる為、どこで取得するかは注意してください。

    % poll_client --host hailataxii.com --username guest --pass guest --path /taxii-data --collection guest.Abuse_ch
    
    Request:

    Message Type: Poll_Request
    Message ID: 7016854206412201300
    Collection Name: guest.Abuse_ch
    Excl. Begin TS Label: None
    Incl. End TS Label: None
    === Poll_Parameters ===
    Response type: FULL

    Response:

    Message Type: Poll_Response
    Message ID: 3510; In Response To: 7016854206412201300
    Collection Name: guest.Abuse_ch
    More: False
    Result ID: None
    Result Part Num: 1
    Incl. End TS Label: 2017-03-27T14:11:06.739630+00:00
    === Content Block ===
    Content Binding: urn:stix.mitre.org:xml:1.1.1
    Content length: 4462
    (Content not printed for brevity)
    Timestamp Label: 2017-03-27 14:11:06.959883+00:00
    Message: None
    Padding: None
    .
    . (コンテンツの情報)
    .
    File created: guest.Abuse_ch_STIX111_t2017_03_27T14_11_06_959883_00_00.xml
    .
    . (作成されたコンテンツファイル)
    .

    実際にデータがダウンロードされ、14,390ファイルが作成されました。

    次回は、それぞれのコマンドの中身、またコンテンツファイルを確認したいと思います。




参照サイト