ただの人間のための OSINT API

私は幸運にも世界中を旅して、人々が OSINT の問題を解決するのを助けたり、OSINT を教えたりすることができました。 人々は、どの分野についてもっと学びたいかを共有することが多く、プログラミングの学習 (通常は Python) は常にそのリストに載っています。 プログラミングの学習に役立つリソースは無数にありますが、始めるにはアプリケーション プログラミング インターフェイス (API) を使用するのが最適です。

API とは何ですか?

API は、情報や機能を持っている人が、他の人が使いやすい方法でそれらのものにアクセスできるようにする方法です。 たとえば、他のほとんどのソーシャル メディア プラットフォームよりも多くのサードパーティ サイトが Twitter データを分析していることに気づいたことがありますか? 主な理由の 1 つは、Twitter には無料で使用できる API があり、コードを記述して Twitter データを取得し、必要に応じて分析または視覚化できることです。

OSINT に興味があり、プログラミング スキルを向上させたい場合は、API を使用することから始めるのが最適です。これは、機能をゼロから作成する代わりに、他のソースからのデータを使用して機能を提供できるためです。研究し、他の人と共有する可能性があります。

3 つの便利な OSINT API

このブログ投稿では、OSINT に役立つ 3 つの異なる API について説明します。 1 つは公開情報 (PAI) を自動的に収集することに重点を置き、もう 1 つは電子メール アドレスを強化することに重点を置き、もう 1 つは分析機能を提供することに重点を置きます。

これらの例のそれぞれについて、Python プログラミング言語のコードを示します。 OSINT の実践者になるためにプログラミング スキルは必要ありませんが、ここでいくつかの例で説明するように、基本的なプログラミング スキルを持っていると、多くの点で有益です。

コードの書き方の学習に興味がある場合、Python はさまざまな理由から優れた選択肢です。Python は非常に人気があり、オンラインで学習やトラブルシューティングに役立つリソースがたくさんあるという事実も含まれます。

分析用データの自動収集

まず、Twitter API の使用を開始する方法を見ていきます。 次に、その理由について説明します。 最初のステップは、Twitter 開発者として登録することです。 このプロセスは 2 分もかからず、100% 無料です。唯一の要件は、使用している Twitter アカウントが Twitter の有効な電話番号を持っている必要があることです。 このステップを完了すると、「ベアラー トークン」と呼ばれる固有の長い文字列を受け取ります。 これをコードに挿入して、Twitter に対して自分が誰であるかを証明します。

そのステップが完了したら、いくつかの基本的な Python コードを見て、OSINT コミュニティの多くの人が dutch_osintguy として知っている私の友人 Nico からの最近のツイートをすべて表示しましょう。

import requests

# Replace this with your own bearer token
bearer_token = 'INSERT_YOUR_BEARER_TOKEN_HERE'

# Set the "Authorization" header of your API request to the bearer token
headers = {'Authorization': f'Bearer {bearer_token}'}

# Use the requests.get() function to make an API request to the Twitter API v2
# For example, you can get the most recent tweets from a specific user like this:
response = requests.get(
    'https://api.twitter.com/2/tweets/search/recent',
    headers=headers,
    params={'query': 'from:dutch_osintguy'}
)

# The API response will include the requested data
tweets = response.json()['data']

# You can then iterate over the tweets and analyze their data
for tweet in tweets:
    print (tweet)

コメントと空白行を含めて、わずか 22 行のコードです。

方法を見たところで、次はその理由について説明しましょう。 上記の例はかなり…のようです。 無意味? Twitter の Web サイトにアクセスするだけでなく、ユーザーの最近のツイートを表示するコードを作成する必要があるのはなぜでしょうか。 この場合、1 人のユーザーしか見ていないので、そうではないでしょう。 しかし、何かを 1 回実行するのは簡単かもしれませんが、10,000 回または 100,000 回 (またはそれ以上!) 実行することは非常に困難であるか、まったく現実的ではありません。 このような場合、そのプロセスを自動化するコードを作成することで、分析や結果へのコンテキストの提供など、人間が得意とするタスクに時間を割くことができます。

API を使用するもう 1 つの大きな利点は、永続的な自動モニタリングを実行できることです。 私のキャリアの中で、私は何度も次のような任務を負ってきました。 それを監視するために 1 日 24 時間 Web ブラウザーや TweetDeck をじっと見つめる必要はありませんでした。そのため、スキャンに必要なすべてのものを監視し、新しい結果が見つかった場合にメールを送信するコードを作成しました。 あまり多くのコードを書かなくても、優れた結果を得ることができます。

永続的な監視に Twitter API を使用することに興味がある場合は、2021 年の SANS Open-Source Intelligence Summit でプロセスについて話し、コードをリリースしました。

メールを自動的に充実させる

サービス Hunter.io は、組織のメンバーの電子メール アドレスを検索したり、電子メール アドレスに関する追加情報を検索したりしようとしている攻撃的なセキュリティ プロフェッショナルや OSINT 実践者に人気があります。 Hunter.io には、1 か月あたり 25 回の検索と 50 回の検証が可能な API を備えた無料プランがあります。 検証機能を使用して電子メール アドレスに関する追加情報を検索するコードを見てみましょう。 [email protected].

import requests

# Replace this with your own API key
api_key = 'INSERT_YOUR_API_KEY_HERE'

# Use the requests.get() function to make an API request to the Hunter.io API
# For example, you can search for an email address like this:
response = requests.get(
    'https://api.hunter.io/v2/email-verifier',
    params={'email': '[email protected]', 'api_key': api_key}
)

# The API response will include the requested data
data = response.json()

# You can access the data about the email address and its associated domain and organization

このコードは Twitter コードよりもさらに短いです。 結果を見てみましょう。

[email protected]
{'data': {'status': 'accept_all', 'result': 'risky', '_deprecation_notice': 'Using result is deprecated, use status instead', 'score': 71, 'email': '[email protected]', 'regexp': True, 'gibberish': False, 'disposable': False, 'webmail': False, 'mx_records': True, 'smtp_server': True, 'smtp_check': True, 'accept_all': True, 'block': False, 'sources': []}, 'meta': {'params': {'email': '[email protected]'}}}

大量の情報は返されませんでしたが、電子メールが使い捨てドメインからのものであるとは信じていないなど、役立つ可能性があるものもあります.

私は最近、150,000 通を超える電子メールのデータベースをチェックして、詐欺を犯している模倣ドメインに関連付けられている可能性があるかどうかを確認する必要があるフォーチュン 500 企業と協力しました。 これと同様の手法を使用して、150,000 通を超える電子メールから、悪意があると思われる 3 つの電子メールを分離することができました。 繰り返しますが、何かを 1 回実行するのは簡単かもしれませんが、150,000 回以上手動で何かを実行したいと思う人はいません。

分析機能の追加

最初に見た 2 つの例は、データの取得に関するものでした。 最後のセクションでは、分析機能と処理機能を追加して、既に所有しているデータを分析する方法について説明します。

2020 年に、私は OSINT 実践者に Amazon のクラウドである AWS の素晴らしい世界を紹介しようとして、いくつかのブログ投稿を書きました。 多くの人は、Amazon からクラウドベースのシステムを「レンタル」して、Web サーバーや仮想マシンなどとして使用できることを知っています。 それでも、データの分析、処理、または変換に役立つ API が Amazon にいくつか用意されていることを多くの人は知りません。 これらの API のほとんどは、ユーザーがこれらの機能を 12 か月間無料で利用できる「無料利用枠」の対象となり、通常は合理的な月間制限を超えています。 これらの API のいくつかは OSINT に役立ちますが、ここで取り上げるのは、OSINT の画像認識サービスである Rekognition です。

認識

Rekognition には、画像内のオブジェクトの識別や画像からのテキストの抽出など、複数の用途があります。 これを使用して、古くからある OSINT の問題を解決します。

個人が OSINT を実行しているオフィスに足を踏み入れたところ、複数のアナリストが 1 台のモニターをじっと見つめているのを目にしたとします。 その場合、ある写真の人物が別の画像の人物と同じかどうかを見分けようとしていた可能性が高い. 残念ながら、「私には同一人物に見える」という手動の方法は完璧にはほど遠いものです。 オンラインに投稿された写真の誰かに似ていることに基づいて、個人がソーシャル メディアで誤って告発される例が数多くあります。 Rekognition は、AWS を使用するための Python ライブラリである boto3 の「compare_faces」機能を使用して、この問題を解決するのに役立ちます。

2 つの画像で個人を比較するコードは次のとおりです。

import boto3

# Set up the client
client = boto3.client('rekognition')

# Read in the images to compare
image1 = open('image1.jpg', 'rb')
image2 = open('image2.jpg', 'rb')

# Call the compare_faces function
response = client.compare_faces(
    SourceImage={
        'Bytes': image1.read()
    },
    TargetImage={
        'Bytes': image2.read()
    }
)

# Get the similarity score
similarity = response['FaceMatches'][0]['Similarity']

# Print the similarity score
print(f"Similarity score: {similarity}")

# Check if the similarity score is above a certain threshold
if similarity > 90:
    print("These are likely the same person")
else:
    print("These are likely not the same person")

このコードを使用して 2 枚の異なる写真を比較したところ、次の結果が得られました。

完璧な方法はありませんが、これらの決定を行う際には、偏りのないセカンドオピニオンを持つことをお勧めします。 OSINT に AWS を使用する方法について詳しく知りたい場合は、こちらで 2 部構成のブログ シリーズを作成しました。

他にも無数の API が OSINT の研究に役立ちます。 それでも、これら 3 つの例は、多くのプログラミングを必要とせずにカスタム機能の作成を開始するのに役立ちます。

ただの人間のためのオープンソース API: OSINT API で調査員を強化する

OSINT API について説明する実用的な OSINT シリーズの次回の記事に参加してください。

Leave a Comment

Your email address will not be published. Required fields are marked *