
InfoHoundは、Webドメイン名から大量のデータを抽出するOSINTツールです。
偵察フェーズにおいて、攻撃者はターゲットに関するあらゆる情報を探し、後日組織に侵入するためのプロファイルを作成します。InfoHoundは、Webドメイン名を与えられた際に、OSINTを使用して大量のデータを抽出する受動的分析手法(ターゲットと直接対話しない)を実行します。このツールは、電子メール、人物、ファイル、サブドメイン、ユーザー名、URLを取得し、それらを後で分析してさらに価値のある情報を抽出します。
さらに、InfoHoundはOllamaインスタンスを活用し、LLM(大規模言語モデル)の能力を利用できるようにします。デフォルトでは、InfoHoundは事前学習済みのLLMモデルであるllama2を使用して、組織内の個人の役割の簡単な説明を生成します。この機能は、組織構造に関する貴重な洞察を提供し、主要な人物の特定を容易にします。また、今後の開発では、ツールの機能をさらに強化するための新機能や拡張が追加される予定です。
注記: InfoHoundは特別なハードウェアを必要としません。ただし、大規模言語モデル(LLM)を使用するタスクでは、ハードウェア要件を考慮することが重要です。使用予定のLLMモデルの具体的な要件については、公式のOllamaドキュメントを参照してください。

git clone https://github.com/Fundacio-i2CAT/InfoHound.git
cd InfoHound/infohound
mv infohound_config.sample.py infohound_config.py
cd ..
docker-compose up -d
ブラウザで以下のURLにアクセスしてInfoHoundを使用できます。
http://localhost:8000/
注記: infohound_config.pyファイル内にAPIキーを追加する必要があります。
InfoHoundには2種類のモジュールがあります。データを取得するモジュールと、データを分析してより関連性の高い情報を抽出するモジュールです。
InfoHoundではカスタムモジュールを作成できます。スクリプトをinfohoudn/tool/custom_modules内に追加するだけです。例として、Holeheツールを使用して、以前に発見された電子メールがTwitter、Instagram、Imgurなど120以上のサイトにアカウントとして関連付けられているかどうかをチェックするカスタムモジュールが追加されています。
# Import the packages you need
import trio
import httpx
import requests
from holehe import core
# Import the Django models you will work with
from infohound.models import Emails
MODULE_ID = "findRegisteredSitesHoleheCustomTask" # Set a module ID
MODULE_NAME = "Find sites with Holehe" # Set a module name
MODULE_DESCRIPTION = "Using Holehe tool, this task will find where an email has been used to create an account. Holehe checks more than 120 sites." # Set a description
MODULE_TYPE = "Analysis" # Set the type: Analysis or Retrieve
# This function is the only function it will be called by InfoHound
# Change its content and create other the functions if needed
def custom_task(domain_id):
trio.run(findRegisteredSitesHolehe, domain_id)
async def findRegisteredSitesHolehe(domain_id):
queryset = Emails.objects.filter(domain_id=domain_id)
for entry in queryset.iterator():
out = []
email = entry.email
modules = core.import_submodules("holehe.modules")
websites = core.get_functions(modules)
client = httpx.AsyncClient()
for website in websites:
await core.launch_module(website, email, client, out)
print(out)
await client.aclose()
services = []
for item in out:
if item["exists"]:
services.append(item["name"])
entry.registered_services = services
entry.save()

発見結果を可視化グラフにしたいですか?ドメイン分析全体をGraphMLファイルにエクスポートし、yED、Gephi、その他の任意のツールで開くことができます。現在、ファイル、人物、電子メール、ソーシャルプロファイル、登録サイト、ユーザー名をエクスポートします。URLとサブドメインは結果の量が多いため含まれません。

調査を拡張するためにMaltegoのようなツールを使いたいですか?ドメイン分析全体(ファイル、個人、電子メール、ソーシャルプロファイル、登録サイト、ユーザー名を含む)をMaltego互換ファイル(CSV)にエクスポートして、そこで開くことができます。Maltego列マッピング設定ファイル(maltego_mapping.mtz)はプロジェクトのルートディレクトリにあります。Maltegoへのインポートについて詳しくはこちら
このコードは、Fundació Privada Internet i Innovació Digital a Catalunya (i2CAT) によって開発されました。
i2CATは非営利の研究イノベーションセンターであり、ビジネスの課題を解決するためのミッション主導型の知識を促進し、変革的な影響を与えるソリューションを共同創造し、領域的な毛細管現象を伴うオープンで参加型のデジタル社会イノベーションを通じて市民に力を与え、先駆的で戦略的なイニシアチブを推進しています。
i2CATは、知的財産のアウトライセンスやスピンオフの創設を通じて、社会的・経済的影響を生み出すために、研究プロジェクトの成果を民間企業に移転することを目的としています。
i2CATのプロジェクトと知的財産権の詳細については、https://i2cat.net/tech-transfer/ をご覧ください。
このコードは、AGPLv3の条件に基づいてライセンスされています。ライセンスに関する情報は、リンクにあります。
このライセンスが、特定の作業における当社コードの使用、配布、再配布に関する要件に適合しない場合は、以下のアドレスまでi2CATの知的財産管理者にお気軽にお問い合わせください: [email protected]
| 名前 | 説明 |
|---|
| Get Whois Info | Whoisレジストリから関連情報を取得します。 |
| Get DNS Records | このタスクはDNSにクエリを実行します。 |
| Get Subdomains | このタスクは、Alienvault OTX API、CRT.sh、HackerTargetをデータソースとして使用し、キャッシュされたサブドメインを発見します。 |
| Get Subdomains From URLs | 一部のタスクが実行されると、URLテーブルに多数のエントリが作成されます。このタスクはすべてのURLをチェックして、新しいサブドメインを見つけます。 |
| Get URLs | Wayback MachineによってキャッシュされたすべてのURLを検索し、データベースに保存します。これは後でファイルやサブドメインなどの他のデータエンティティを発見するのに役立ちます。 |
| Get Files from URLs | URLデータベーステーブルをループしてファイルを見つけ、後で分析するためにファイルデータベーステーブルに保存します。取得されるファイルは次のとおりです: doc, docx, ppt, pptx, pps, ppsx, xls, xlsx, odt, ods, odg, odp, sxw, sxc, sxi, pdf, wpd, svg, indd, rdp, ica, zip, rar |
| Find Email | Google、Bing、および漏洩データベースへのクエリを使用して電子メールを検索します。 |
| Find People from Emails | 電子メールが見つかったら、その背後にある人物を特定するのに役立ちます。また、それらの人物からユーザー名も見つけます。 |
| Find Emails From URLs | 発見されたURLには機密情報が含まれている場合があります。このタスクはURLパスからすべての電子メールを取得します。 |
| Execute Dorks | dorksフォルダに定義されたダークを実行します。目的を理解するために、ダークをカテゴリ(ファイル名)でグループ化することを忘れないでください。 |
| Find Emails From Dorks | デフォルトでは、InfoHoundには電子メールを発見するためのいくつかのダークが定義されています。このタスクは、ダーク実行の結果からそれらを検索します。 |
| Find People From Google | Google JSON APIを使用して、ドメインに関連する会社で働いている人を見つけます。 |
| 名前 | 説明 |
|---|
| Check Subdomains Take-Over | サブドメインが乗っ取り可能かどうかを判断するためのいくつかのチェックを実行します。 |
| Check If Domain Can Be Spoofed | InfoHoundが発見した電子メールのドメインがなりすまし可能かどうかをチェックします。これは攻撃者によって、人物になりすまして電子メールを送信するために使用される可能性があります。 |
| Get Profiles From Usernames | このタスクは、各人物から発見されたユーザー名を使用して、そのユーザー名が存在するサービスやソーシャルネットワークのプロファイルを見つけます。これはMaigretツールを使用して実行されます。同じユーザー名のプロファイルが見つかったとしても、必ずしも分析中の人物に属するとは限らないことに注意してください。 |
| Download All Files | ファイルがファイルデータベーステーブルに保存されたら、このタスクはそれらを"download_files"フォルダにダウンロードします。 |
| Get Metadata | exiftoolを使用して、ダウンロードしたファイルからすべてのメタデータを抽出し、データベースに保存します。 |
| Get Emails From Metadata | 一部のメタデータには電子メールが含まれている可能性があるため、このタスクはそれらをすべて取得してデータベースに保存します。 |
| Get Emails From Files Content | 通常、企業のファイルには電子メールが含まれていることがあるため、このタスクはダウンロードしたファイルのコンテンツからすべての電子メールを取得します。 |
| Find Registered Services using Emails | 電子メールを使用してアカウントが作成されたサービスやソーシャルネットワークを見つけることが可能です。このタスクは、InfoHoundが発見した電子メールがTwitter、Adobe、Facebook、Imgur、Mewe、Parler、Rumble、Snapchat、Wordpress、Duolingoにアカウントを持っているかどうかをチェックします。 |
| Check Breach | このタスクはFirefox Monitorサービスをチェックして、電子メールがデータ漏洩で見つかったかどうかを確認します。無料サービスですが、1日10クエリの制限があります。Leak-Lookup APIキーが設定されている場合、それもチェックします。 |
| AI-Powered Profile Analisys | プロファイル分析タスクを使用して、メタデータを調べて説明を生成するAI搭載ツールを活用できます。 |
| Get leaked passwords | Proxy Novaの無料サービスを使用して、InfoHoundは過去に漏洩したユーザー名からパスワードを検出して表示できます。 |