Help us understand the problem. What is going on with this article?

libtaxiiを触ってみる

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

参照サイト

KoriCori
不動産業界からIT業界へ転向。 インフラエンジニアとして勉強中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした