【TryHackMeウォークスルー】Red Team Recon

 

Introduction

「敵を知り、敵の剣を知れ」と宮本武蔵は『五輪書』に記しました。また、「敵の間合いを知り、敵の予期せぬ間合いを用いることで勝利する」とも述べています。これは剣や槍で戦っていた時代に書かれたものですが、キーボードやパケットで攻撃が仕掛けられるサイバー空間にも当てはまります。ターゲットのインフラや人員について知れば知るほど、より効果的に攻撃を組み立てられるのです。

レッドチーム演習では、最初に与えられる情報は企業名程度ということもあり、そこからターゲットに関する情報収集を始める必要があります。ここで重要になるのが「偵察(reconnaissance, recon)」です。偵察とは、ターゲット(クライアント)に気づかれないように行う予備調査・観察を指します。もし偵察で大きな「ノイズ」を生じさせてしまうと、相手に警戒され、成功の可能性が下がってしまいます。


このルームで扱うトピック

  • 偵察活動の種類

  • WHOIS・DNSを利用した偵察

  • 高度な検索手法

  • 画像検索

  • Googleハッキング

  • 専門的な検索エンジン

  • Recon-ng

  • Maltego


学習目標(例)

  • ターゲット企業に関連するサブドメインを発見する

  • ホストやIPアドレスに関する公開情報を収集する

  • ターゲットに関連するメールアドレスを見つける

  • 漏洩したログイン情報やパスワードを特定する

  • 公開されてしまった文書やスプレッドシートを探し出す


偵察の分類

偵察は大きく パッシブ偵察アクティブ偵察 に分けられます(Task 2で説明)。
このルームでは、ターゲットに気づかれず、ノイズを発生させない パッシブ偵察 に焦点を当てます。

今後のルームでは、性質上どうしてもノイズが発生しやすい アクティブ偵察ツール を扱っていくことになります。

Taxonomy of Reconnaissance

偵察の分類

偵察(recon)は大きく 2つ に分けられます。

  • パッシブ偵察(Passive Recon): 受動的に観察することで実施される

  • アクティブ偵察(Active Recon): ターゲットに対してリクエストやパケットを送信し、その応答を観察することで実施される


パッシブ偵察

パッシブ偵察ではターゲットと直接やり取りする必要はありません。つまり、ターゲットやそのシステムにパケットやリクエストを送ることはありません。その代わりに、第三者によって公開・管理されている情報を利用します。

OSINT(Open Source Intelligence:オープンソースインテリジェンス)がここで活用され、ターゲットの公開されているSNSプロフィールを見るといった単純なものから始められます。

収集できる情報の例:

  • ドメイン名

  • IPアドレスの範囲

  • メールアドレス

  • 従業員の名前

  • 求人情報

次のタスクでは、DNSレコードの問い合わせ方法を学び、パッシブ偵察ルームで扱った内容を拡張し、偵察を支援する高度なツールを紹介します。


アクティブ偵察

アクティブ偵察では、ターゲットにリクエストやパケットを送信し、その応答(または応答がない場合)を観察します。これにより、パッシブ偵察で得られた情報をさらに具体化できます。

例として、Nmapを用いてターゲットのサブネットや稼働中のホストをスキャンすることが挙げられます。他の例は「Active Reconnaissance」ルームで紹介されています。

発見が期待できる情報の例:

  • 稼働しているホスト

  • 実行中のサーバー

  • 待ち受けているサービス

  • バージョン情報


アクティブ偵察の分類

アクティブ偵察はさらに以下に分けられます。

  • 外部偵察(External Recon): ターゲットのネットワーク外部から実施され、インターネットからアクセス可能な外部資産に焦点を当てる。例:会社ネットワーク外から Nikto を実行する。

  • 内部偵察(Internal Recon): ターゲット企業のネットワーク内部から実施される。つまり、ペンテスターやレッドチームのメンバーが物理的に社内にいる場合や、侵害済みのホストを利用する場合。例:ターゲットのコンピュータの1つを使って Nessus で内部ネットワークをスキャンする。

Built-in Tools

このタスクで扱うツール

  • whois

  • dig, nslookup, host

  • traceroute / tracert


WHOISとは

whois ツールを使う前に、まず WHOIS について見てみましょう。WHOIS は RFC 3912 に準拠したリクエスト/レスポンス型プロトコルで、WHOIS サーバーは TCP ポート 43 でリクエストを待ち受けています。
ドメイン名の WHOIS レコードは、そのドメインを管理しているレジストラが保持します。

whois コマンドを実行すると、その WHOIS サーバーに問い合わせを行い、保存されているレコードを取得できます。例えば以下の情報が得られます:

  • レジストラの WHOIS サーバー

  • レジストラのURL

  • レコードの作成日

  • レコードの更新日

  • 登録者(Registrant)の連絡先や住所(プライバシー保護されていない場合)

  • 管理者(Admin)の連絡先や住所(プライバシー保護されていない場合)

  • 技術担当(Tech)の連絡先や住所(プライバシー保護されていない場合)

この例からも分かるように、ドメイン名ひとつだけで多くの有用な情報が得られることがあります。運が良ければ、氏名・メールアドレス・住所・電話番号に加え、技術的な情報までも収集可能です。
また、whois の結果にはそのドメインの 権威ネームサーバー も含まれています。

Pentester Terminal
pentester@TryHackMe$ whois thmredteam.com
[Querying whois.verisign-grs.com]
[Redirected to whois.namecheap.com]
[Querying whois.namecheap.com]
[whois.namecheap.com]
Domain name: thmredteam.com
Registry Domain ID: 2643258257_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: http://www.namecheap.com
Updated Date: 0001-01-01T00:00:00.00Z
Creation Date: 2021-09-24T14:04:16.00Z
Registrar Registration Expiration Date: 2022-09-24T14:04:16.00Z
Registrar: NAMECHEAP INC
Registrar IANA ID: 1068
Registrar Abuse Contact Email: abuse@namecheap.com
Registrar Abuse Contact Phone: +1.6613102107
Reseller: NAMECHEAP INC
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Registry Registrant ID: 
Registrant Name: Withheld for Privacy Purposes
Registrant Organisation: Privacy service provided by Withheld for Privacy ehf
Registrant Street: Kalkofnsvegur 2 
Registrant City: Reykjavik
Registrant State/Province: Capital Region
Registrant Postal Code: 101
Registrant Country: IS
Registrant Phone: +354.4212434
Registrant Phone Ext: 
Registrant Fax: 
Registrant Fax Ext: 
Registrant Email: 4c9d5617f14e4088a4396b2f25430925.protect@withheldforprivacy.com
Registry Admin ID: 
Admin Name: Withheld for Privacy Purposes
[...]
Tech Name: Withheld for Privacy Purposes
[...]
Name Server: kip.ns.cloudflare.comName Server: uma.ns.cloudflare.com
DNSSEC: unsigned
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2021-10-13T10:42:40.11Z <<<
For more information on Whois status codes, please visit https://icann.org/epp

DNSクエリツール

UNIX系システムには複数のDNSクエリツールが標準で搭載されています。

  • nslookup
    Windows、macOS、UNIX系すべてに搭載されており、指定したドメインの A レコードや AAAA レコードを取得可能です。

Pentester Terminal
pentester@TryHackMe$ nslookup cafe.thmredteam.com
Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	cafe.thmredteam.com
Address: 104.21.93.169
Name:	cafe.thmredteam.com
Address: 172.67.212.249
Name:	cafe.thmredteam.com
Address: 2606:4700:3034::ac43:d4f9
Name:	cafe.thmredteam.com
Address: 2606:4700:3034::6815:5da9
  • dig(Domain Information Groper)
    より柔軟なオプションを持ち、別のDNSサーバーを指定して問い合わせもできます。例:CloudflareのDNSサーバー(1.1.1.1)を利用して dig @1.1.1.1 tryhackme.com を実行する。

Pentester Terminal
pentester@TryHackMe$ dig cafe.thmredteam.com @1.1.1.1

; <<>> DiG 9.16.21-RH <<>> cafe.thmredteam.com @1.1.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16698
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;cafe.thmredteam.com.		IN	A

;; ANSWER SECTION:
cafe.thmredteam.com.	3114	IN	A	104.21.93.169
cafe.thmredteam.com.	3114	IN	A	172.67.212.249

;; Query time: 4 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Thu Oct 14 10:44:11 EEST 2021
;; MSG SIZE  rcvd: 80
  • host
    シンプルで使いやすいコマンドで、指定したドメインに対応する IPv4・IPv6 アドレスを返してくれます。

Pentester Terminal
pentester@TryHackMe$ host cafe.thmredteam.com
cafe.thmredteam.com has address 172.67.212.249
cafe.thmredteam.com has address 104.21.93.169
cafe.thmredteam.com has IPv6 address 2606:4700:3034::ac43:d4f9
cafe.thmredteam.com has IPv6 address 2606:4700:3034::6815:5da9

Traceroute / Tracert

最後に紹介するのが traceroute(Linux/macOS)や tracert(Windows)です。
これは、自分のシステムからターゲットホストまでのパケット経路を調べるためのツールです。

出力には、経路上のルーター(ホップ)の情報が表示されます。ただし、一部のルーターは traceroute のパケットに応答しないため、その場合は IP アドレスの代わりに * が表示されます。

Pentester Terminal
pentester@TryHackMe$ traceroute cafe.thmredteam.com
traceroute to cafe.thmredteam.com (172.67.212.249), 30 hops max, 60 byte packets
 1  _gateway (192.168.0.1)  3.535 ms  3.450 ms  3.398 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  172.16.79.229 (172.16.79.229)  4.663 ms  6.417 ms  6.347 ms
 8  * * *
 9  172.16.49.1 (172.16.49.1)  6.688 ms 172.16.48.1 (172.16.48.1)  6.671 ms 172.16.49.1 (172.16.49.1)  6.651 ms
10  213.242.116.233 (213.242.116.233)  96.769 ms 81.52.187.243 (81.52.187.243)  96.634 ms  96.614 ms
11  bundle-ether302.pastr4.paris.opentransit.net (193.251.131.116)  96.592 ms  96.689 ms  96.671 ms
12  193.251.133.251 (193.251.133.251)  96.679 ms  96.660 ms  72.465 ms
13  193.251.150.10 (193.251.150.10)  72.392 ms 172.67.212.249 (172.67.212.249)  91.378 ms  91.306 ms

まとめ

  • whois → WHOIS データベースを照会

  • nslookup / dig / host → DNS サーバーを照会

  • traceroute / tracert → 自分とターゲットホストの間にある経路(ホップ)を発見

WHOIS データベースや DNS サーバーは公開情報を保持しており、それらを照会しても怪しいトラフィックとは見なされません。
これらのツールを活用することで、ターゲットの基礎情報を効率的に収集できます。

Answer the questions below

When was thmredteam.com created (registered)? (YYYY-MM-DD)

2021-09-24

To how many IPv4 addresses does clinic.thmredteam.com resolve?

2

To how many IPv6 addresses does clinic.thmredteam.com resolve?

2

Advanced Searching

効率的な検索の重要性

検索エンジンを効率的に使えることは、偵察において非常に重要なスキルです。以下の表は、多くの検索エンジンで使える代表的な検索演算子の例です。

記号 / 構文機能
"search phrase"完全一致するフレーズを含む結果を検索
OSINT filetype:pdf特定の用語に関連する PDF ファイルを検索
salary site:blog.tryhackme.com特定のサイトに限定して検索
pentest -site:example.com特定のサイトを除外して検索
walkthrough intitle:TryHackMeページタイトルに特定の用語を含む結果を検索
challenge inurl:tryhackmeURL に特定の用語を含むページを検索

💡 PDF 以外にも、doc, docx, ppt, pptx, xls, xlsx といったファイルタイプを指定できます。


検索エンジンごとの構文

検索エンジンによってルールや構文が若干異なります。正確な構文を知るには、それぞれの公式ヘルプページを確認する必要があります。

などを学んでおくと良いでしょう。


機密情報のインデックス化

検索エンジンは昼夜を問わずウェブをクロールし、新しいページやファイルをインデックス化します。その結果、以下のような機密情報が公開されてしまう場合があります。

  • 社内利用のための文書

  • ユーザー名やメールアドレス、パスワードを含むスプレッドシート

  • ユーザー名リスト

  • 機密ディレクトリ

  • サービスのバージョン番号(脆弱性がある場合も)

  • エラーメッセージ

これらは「Googleハッキング」と呼ばれる手法で発見されることがあり、Google Hacking Database (GHDB) には代表的な検索クエリが収録されています。


GHDBのカテゴリと例

  • Footholds
    GHDB-ID: 6364intitle:"index of" "nginx.log" で Nginx ログを発見。サーバーの設定ミスが露呈する可能性。

  • Files Containing Usernames
    GHDB-ID: 7047intitle:"index of" "contacts.txt" で連絡先情報が漏えいする可能性。

  • Sensitive Directories
    GHDB-ID: 6768inurl:/certs/server.key で秘密鍵が公開されていないか調査。

  • Web Server Detection
    GHDB-ID: 6876intitle:"GlassFish Server - Server Running" で GlassFish サーバーを特定。

  • Vulnerable Files
    GHDB-ID: 7786intitle:"index of" "*.php" で PHP ファイルを検索。

  • Vulnerable Servers
    GHDB-ID: 6728intext:"user name" intext:"orion core" -solarwinds.com で SolarWinds Orion コンソールを特定。

  • Error Messages
    GHDB-ID: 5963intitle:"index of" errors.log でエラーログを収集。

⚠️ これらのクエリは条件に合致するすべてのサーバーを対象に結果を返すため、利用時には法的合意の範囲を超えないよう注意が必要です。

より詳しく学ぶには、Google Dorking Room の利用が推奨されます。


その他の情報源

検索エンジン以外にも、対象と直接やり取りせずに有益な情報を得られる手段があります。


ソーシャルメディア

SNSは個人利用だけでなく企業利用も盛んで、ターゲットに関する情報が大量に得られる可能性があります。

チェックすべき代表例:

  • LinkedIn

  • Twitter

  • Facebook

  • Instagram

従業員名や役職だけでなく、パスワードリカバリーの質問に利用できそうな個人情報が得られる場合もあります。技術スタッフの投稿から、利用しているシステムやベンダー情報が判明することもあります。


求人情報

求人広告からも企業に関する多くの情報を得られます。

  • 名前やメールアドレス

  • 技術職募集から推測できるシステム・インフラ情報

国ごとに求人サイトの傾向は異なるため、ターゲット企業が広告を出している可能性のあるサイトを確認しましょう。企業公式サイトの求人ページも要チェックです。

さらに、Wayback Machine を使えば、過去の求人ページのバージョンを取得することも可能です。

Answer the questions below

How would you search using Google for xls indexed for http://clinic.thmredteam.com?

filetype:xls site:clinic.thmredteam.com

How would you search using Google for files with the word passwords for http://clinic.thmredteam.com?

passwords site:clinic.thmredteam.com

Specialized Search Engines

WHOIS・DNS関連サービス

Task 3 で紹介した基本的な WHOIS や DNS クエリツールに加え、サードパーティによる有料サービスも存在します。例えば WHOIS history は、過去の WHOIS データを参照できるサービスで、ドメイン登録時に WHOIS プライバシーが使われていない場合に有用です。

また、無料で利用できる高度な DNS サービスを提供するサイトもいくつかあります。ここでは代表的なものとして ViewDNS.infoThreat Intelligence Platform を取り上げます。


ViewDNS.info

ViewDNS.info では Reverse IP Lookup(逆引きIP検索) を利用できます。

昔は 1 サーバーに 1 つ以上の IP アドレスを割り当てるのが一般的でしたが、現在では共有ホスティングが広く普及しており、1 つの IP アドレスを複数の異なるドメイン名が共有することがよくあります。

Reverse IP Lookup を使うことで、特定のドメイン名や IP アドレスから、同じ IP アドレスを利用している他のドメイン名を調べることが可能です。
つまり、特定の IP アドレスを知っても、それが単一のウェブサイトに結びつくとは限らないという点に注意が必要です。



Threat Intelligence Platform

Threat Intelligence Platform は、ドメイン名または IP アドレスを入力すると、一連の調査を自動的に実行します。

  • マルウェアチェック

  • WHOIS クエリ

  • DNS クエリ

whois や dig で得られる結果と同様の情報を、より見やすく、視覚的に整理して提示してくれるのが特徴です。

例えば thmredteam.com を調べた場合、ネームサーバー(NS)が IPv4 と IPv6 の両方に解決された情報がレポートに表示されます。


さらに cafe.thmredteam.com を検索すると、その IP アドレスを共有している他のドメイン一覧も取得可能で、これは ViewDNS.info の結果とほぼ同じです。



Censys

Censys は IP アドレスやドメインに関する多くの情報を提供します。

例えば、cafe.thmredteam.com が解決する IP アドレスのひとつを調べると、その IP が Cloudflare に属していることがわかります。

取得できる情報の例:

  • ポート番号(80, 443 など)

  • サービス情報

  • その IP が他のウェブサイトでも利用されていること

重要なのは、この IP は「Organic Cafe」のものではなく、Cloudflare が管理するものであるという点です。スコープ外のシステムを不用意に調査しないためにも、この区別を明確にしておく必要があります。



Shodan

Shodan は Passive Reconnaissance ルームでも登場しました。ここではコマンドラインからの利用方法を紹介します。

事前準備

  1. Shodan のアカウントを作成

  2. APIキーを取得

  3. shodan init API_KEY で設定

利用例

取得した IP アドレスに対して shodan host IP_ADDRESS を実行すると、その IP の 地理的な場所開放ポート を確認できます。

Pentester Terminal
pentester@TryHackMe$ shodan host 172.67.212.249

172.67.212.249
City:                    San Francisco
Country:                 United States
Organisation:            Cloudflare, Inc.
Updated:                 2021-11-22T05:55:54.787113
Number of open ports:    5

Ports:
     80/tcp  
    443/tcp  
	|-- SSL Versions: -SSLv2, -SSLv3, -TLSv1, -TLSv1.1, TLSv1.2, TLSv1.3
   2086/tcp  
   2087/tcp  
   8080/tcp 

Shodan CLI ではアカウント種別に応じて利用できるフィルタが異なります。より詳しい使い方は公式ドキュメント(Shodan CLI)を参照するとよいでしょう。

Answer the questions below

What is the shodan command to get your Internet-facing IP address?

shodan myip

Recon-ng

Recon-ngとは

Recon-ng は OSINT 作業を自動化するためのフレームワークです。
さまざまな作者によるモジュールを利用でき、多機能な調査が可能です。一部のモジュールは外部サービスAPIの利用キーが必要で、キーを設定することでそのサービスに対するクエリを実行できます。

ペネトレーションテストやレッドチーム演習の観点では、Recon-ng を利用して攻撃に役立つさまざまな情報を収集できます。
収集したデータはワークスペースに紐づいたデータベースに自動保存されます。例えば:

  • ポートスキャン対象となるホストアドレスの発見

  • フィッシング攻撃用にメールアドレスを収集


Recon-ngの基本操作

Recon-ng は recon-ng コマンドで起動します。
起動すると [recon-ng][default] > のようなプロンプトが表示されます。

  • 初回利用時は必要なモジュールをインストールする必要があります。

  • 以降はインストール済みのモジュールを選んで利用できます。


基本的なワークフロー

  1. プロジェクト用の ワークスペースを作成

  2. 収集開始情報をデータベースに登録

  3. マーケットプレイスでモジュールを検索し、内容を確認してからインストール

  4. インストール済みモジュールを一覧表示し、ロード

  5. モジュールを実行


ワークスペースの作成

  • workspaces create WORKSPACE_NAME で新規ワークスペース作成
    例:workspaces create thmredteam

  • recon-ng -w WORKSPACE_NAME で指定したワークスペースで Recon-ng を起動


データベースへの投入

偵察では、1つの情報から別の情報を派生させていきます。
例えば企業名 → ドメイン名 → 連絡先やプロフィール、といった流れです。

今回の例ではターゲットドメイン thmredteam.com をデータベースに投入します。

  • db schema : テーブル一覧を表示

  • db insert domains : ドメインを domains テーブルに追加

Pentester Terminal
pentester@TryHackMe$ recon-ng -w thmredteam
[...]
[recon-ng][thmredteam] > db insert domains
domain (TEXT): thmredteam.com
notes (TEXT): 
[*] 1 rows affected.
[recon-ng][thmredteam] > marketplace search

マーケットプレイスの活用

マーケットプレイスではモジュールを検索・インストールできます。

主要コマンド:

  • marketplace search KEYWORD : モジュール検索

  • marketplace info MODULE : モジュールの詳細を確認

  • marketplace install MODULE : モジュールをインストール

  • marketplace remove MODULE : モジュールを削除

モジュールは以下のカテゴリに分類されます:

  • discovery

  • import

  • recon(さらにサブカテゴリあり)

  • reporting

例:domains-hosts はドメインからホストを特定するモジュール。

注意点:

  • K に * があるモジュール → APIキーが必要

  • D に * があるモジュール → 追加のPythonライブラリなど依存関係が必要

Pentester Terminal
pentester@TryHackMe$ recon-ng -w thmredteam
[...]
[recon-ng][thmredteam] > marketplace search domains-
[*] Searching module index for 'domains-'...

  +---------------------------------------------------------------------------------------------------+
  |                        Path                        | Version |     Status    |  Updated   | D | K |
  +---------------------------------------------------------------------------------------------------+
  | recon/domains-companies/censys_companies           | 2.0     | not installed | 2021-05-10 | * | * |
  | recon/domains-companies/pen                        | 1.1     | not installed | 2019-10-15 |   |   |
  | recon/domains-companies/whoxy_whois                | 1.1     | not installed | 2020-06-24 |   | * |
  | recon/domains-contacts/hunter_io                   | 1.3     | not installed | 2020-04-14 |   | * |
  | recon/domains-contacts/metacrawler                 | 1.1     | not installed | 2019-06-24 | * |   |
  | recon/domains-contacts/pen                         | 1.1     | not installed | 2019-10-15 |   |   |
  | recon/domains-contacts/pgp_search                  | 1.4     | not installed | 2019-10-16 |   |   |
  | recon/domains-contacts/whois_pocs                  | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-contacts/wikileaker                  | 1.0     | not installed | 2020-04-08 |   |   |
  | recon/domains-credentials/pwnedlist/account_creds  | 1.0     | not installed | 2019-06-24 | * | * |
  | recon/domains-credentials/pwnedlist/api_usage      | 1.0     | not installed | 2019-06-24 |   | * |
  | recon/domains-credentials/pwnedlist/domain_creds   | 1.0     | not installed | 2019-06-24 | * | * |
  | recon/domains-credentials/pwnedlist/domain_ispwned | 1.0     | not installed | 2019-06-24 |   | * |
  | recon/domains-credentials/pwnedlist/leak_lookup    | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-credentials/pwnedlist/leaks_dump     | 1.0     | not installed | 2019-06-24 |   | * |
  | recon/domains-domains/brute_suffix                 | 1.1     | not installed | 2020-05-17 |   |   |
  | recon/domains-hosts/binaryedge                     | 1.2     | not installed | 2020-06-18 |   | * |
  | recon/domains-hosts/bing_domain_api                | 1.0     | not installed | 2019-06-24 |   | * |
  | recon/domains-hosts/bing_domain_web                | 1.1     | not installed | 2019-07-04 |   |   |
  | recon/domains-hosts/brute_hosts                    | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-hosts/builtwith                      | 1.1     | not installed | 2021-08-24 |   | * |
  | recon/domains-hosts/censys_domain                  | 2.0     | not installed | 2021-05-10 | * | * |
  | recon/domains-hosts/certificate_transparency       | 1.2     | not installed | 2019-09-16 |   |   |
  | recon/domains-hosts/google_site_web                | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-hosts/hackertarget                   | 1.1     | not installed | 2020-05-17 |   |   |
  | recon/domains-hosts/mx_spf_ip                      | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-hosts/netcraft                       | 1.1     | not installed | 2020-02-05 |   |   |
  | recon/domains-hosts/shodan_hostname                | 1.1     | not installed | 2020-07-01 | * | * |
  | recon/domains-hosts/spyse_subdomains               | 1.1     | not installed | 2021-08-24 |   | * |
  | recon/domains-hosts/ssl_san                        | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-hosts/threatcrowd                    | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-hosts/threatminer                    | 1.0     | not installed | 2019-06-24 |   |   |
  | recon/domains-vulnerabilities/ghdb                 | 1.1     | not installed | 2019-06-26 |   |   |
  | recon/domains-vulnerabilities/xssed                | 1.1     | not installed | 2020-10-18 |   |   |
  +---------------------------------------------------------------------------------------------------+

  D = Has dependencies. See info for details.
  K = Requires keys. See info for details.

[recon-ng][thmredteam] >

モジュール操作

  • modules search : インストール済みモジュールを検索

  • modules load MODULE : モジュールをロード

  • options list : ロードしたモジュールの設定項目を表示

  • options set <option> <value> : オプションを設定

  • run : モジュール実行

  • CTRL + C : モジュールをアンロード

Pentester Terminal
pentester@TryHackMe$ recon-ng -w thmredteam
[...]
[recon-ng][thmredteam] > load google_site_web
[recon-ng][thmredteam][google_site_web] > run

--------------
THMREDTEAM.COM
--------------
[*] Searching Google for: site:thmredteam.com
[*] Country: None
[*] Host: cafe.thmredteam.com
[*] Ip_Address: None
[*] Latitude: None
[*] Longitude: None
[*] Notes: None
[*] Region: None
[*] --------------------------------------------------
[*] Country: None
[*] Host: clinic.thmredteam.com
[*] Ip_Address: None
[*] Latitude: None
[*] Longitude: None
[*] Notes: None
[*] Region: None
[*] --------------------------------------------------
[...]
[*] 2 total (2 new) hosts found.
[recon-ng][thmredteam][google_site_web] >

例:

  • marketplace install google_site_web でモジュールを導入

  • load google_site_webrun 実行で thmredteam.com から新しいホスト(cafe.thmredteam.com, clinic.thmredteam.com)を発見


キーの利用

APIキーが必要なモジュールについては以下の操作を行います:

  • keys list : 登録済みキーの一覧

  • keys add KEY_NAME KEY_VALUE : キーの追加

  • keys remove KEY_NAME : キーの削除


デモのまとめ

  1. ワークスペースを作成 (workspaces create)

  2. 初期情報(例: thmredteam.com)を DB に登録 (db insert)

  3. マーケットプレイスでモジュールを検索 (marketplace search)

  4. モジュール情報を確認 (marketplace info)

  5. モジュールをインストール (marketplace install)

  6. モジュールをロード (modules load)

  7. オプションを設定 (options set)

  8. 実行 (run)

Answer the questions below

How do you start recon-ng with the workspace clinicredteam?

recon-ng -w clinicredteam

How many modules with the name virustotal exist?

2

There is a single module under hosts-domains. What is its name?

migrate_hosts

censys_email_address is a module that “retrieves email addresses from the TLS certificates for a company.” Who is the author?

Censys Inc

Maltego

Maltegoとは

Maltego は、マインドマップ的な可視化と OSINT を組み合わせたアプリケーションです。
一般的な使い方は、まずドメイン名・企業名・人名・メールアドレスなどを入力し、それを「トランスフォーム(Transform)」に通すことで関連情報を取得していきます。

収集された情報は、後の段階で活用可能です。例えば、企業情報・連絡先名・メールアドレスなどを集めれば、非常に本物らしいフィッシングメールを作成できます。


エンティティとトランスフォーム

Maltego のグラフ上の各ブロックは「エンティティ」と呼ばれ、それぞれに値を持ちます。
トランスフォームとは、API をクエリして特定のエンティティに関連する情報を取得する処理です。

流れとしては、

  1. エンティティを入力

  2. トランスフォームを実行

  3. 0個以上の新しいエンティティが返る

という仕組みになっています。


パッシブ偵察の注意点

Maltego の一部のトランスフォームは、ターゲットシステムに対して積極的に接続を試みます。
もしパッシブ偵察に限定したい場合は、実行前にそのトランスフォームの動作をよく確認しておく必要があります。


トランスフォームの例

例えばエンティティ DNS Name: cafe.thmredteam.com を起点にする場合:

  1. 右クリック → Standard Transforms → Resolve to IP → To IP Address (DNS) を選択

    • 実行結果として 1つ以上のIPアドレスが返る

  2. 得られたIPアドレスに対してさらに別のトランスフォームを実行

    • 例: DNS from IP → To DNS Name from passive DNS (Robtex)

    • これによりグラフ上に新しいDNS名が追加される

このように、クリックを重ねることでIPの所在地情報なども得られ、グラフが拡張されていきます。



Maltegoの利点

Maltego のワークフローはすべて「トランスフォーム」を基盤としており、結果をグラフ形式で整理してくれる点が大きな特徴です。
同じ情報をウェブ上の各サービスから手作業で取得することも可能ですが、Maltegoを使えばクリック数回で体系的に情報を取得できます。

以前のタスクで利用した whoisnslookup の結果も、Maltego で可視化できます。
WHOIS の結果から得られたメールアドレスはプライバシー保護のため無効でしたが、Maltego はそれらの情報を自動で抽出・整理して表示してくれます。



トランスフォームの追加

Maltego の強みはトランスフォームにあるため、新しいトランスフォームを追加することでさらに強力になります

  • トランスフォームは、データタイプ・料金・対象ユーザーなどに応じて分類されます。

  • Community Edition (CE) と無料トランスフォームでも多くのことができますが、一部は有料サブスクリプションが必要です。



利用開始について

Maltego を使うには、Community Edition (CE) であってもアクティベーションが必要です。
そのため、対応する設問は Maltego Transform Hub を参照するか、または自分の環境に CE をインストール&有効化して確認する必要があります(※AttackBox 上では不可)。

Answer the questions below

What is the name of the transform that queries NIST’s National Vulnerability Database?

NIST NVD

What is the name of the project that offers a transform based on ATT&CK?

MISP Project

Summary

まとめ

孫子はかつてこう言いました。
「敵を知り己を知れば百戦危うからず。己を知らずして敵を知れば、一勝一敗す。敵を知らず己を知らざれば、戦うごとに必ず敗れる。」

この言葉をサイバー戦争時代に当てはめると、レッドチームとして自らのスキルや能力を理解することに加え、ターゲットに関する可能な限り多くの情報を得ることが不可欠です。環境は常に進化しており、新しいデータ収集手法が次々と登場しています。


これまで学んだこと

  • whois, dig, tracert といった基本ツールを復習

  • 検索エンジン を活用したパッシブ偵察の有効性を確認

  • Recon-ngMaltego というツールを使い、さまざまな情報源からデータを収集・統合する方法を実演


偵察の目的

最終的な目的は、ターゲットに関する知識を拡大し、次の攻撃フェーズに活用できる情報を収集することです。

例えば:

  • 発見したホストはスキャンして脆弱性を調査できる

  • 収集した連絡先やメールアドレスはフィッシング攻撃に活用できる


結論

つまり、ターゲットについて集めれば集めるほど、攻撃の精度を高め、成功率を向上させられるということです。


出典:Red Team Recon