Python
taxii

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ファイルが作成されました。
    次回は、それぞれのコマンドの中身、またコンテンツファイルを確認したいと思います。

参照サイト