ラベル TryHackMe の投稿を表示しています。 すべての投稿を表示
ラベル TryHackMe の投稿を表示しています。 すべての投稿を表示

【TryHackMeウォークスルー】Networking Essentials

 

Introduction

パソコンを起動したり新しいネットワークに接続したとき、どのようにしてネットワーク設定が自動的に構成されるのか、不思議に思ったことはありませんか?

自分の送ったパケットが目的地に届くまでに、いくつの機器や国を経由しているのか知りたいと思ったことはありませんか?
インターネット回線業者(ISP)から割り当てられるIPアドレスは1つなのに、なぜ自宅のすべての機器がインターネットに接続できるのか気になりませんか?

こうした疑問に答えるのが、このルームです。

このルームは、コンピュータネットワーキングに関する4部構成のシリーズのうち、2番目にあたります。


学習前提知識

このルームを有効に活用するためには、以下の知識を持っていることを推奨します。

  • ISO OSIモデルと各レイヤー

  • TCP/IPモデルと各レイヤー

  • Ethernet、IP、TCPといったプロトコル

言い換えれば、「Networking Concepts」を終えてから取り組むのが理想的です。


学習目標

このルームの目的は、ネットワークをつなぎ合わせる標準的なプロトコルや技術を学ぶことです。

  • DHCP(Dynamic Host Configuration Protocol)

  • ARP(Address Resolution Protocol)

  • NAT(Network Address Translation)

  • ICMP(Internet Control Message Protocol)

  • Ping

  • Traceroute


DHCP: Give Me My Network Settings

お気に入りのカフェに行き、ホットドリンクを手に取り、ノートPCを開いたとしましょう。
するとノートPCはカフェのWiFiに接続し、自動的にネットワーク設定が行われ、そのままTryHackMeの新しいルームに取り組めるようになります。
IPアドレスを手入力したわけでもないのに、デバイスはすでに準備完了。さて、どうしてこんなことが可能なのでしょうか?


ネットワーク接続に必要な基本情報

どんなネットワークにアクセスする場合でも、最低限以下の設定が必要です。

  • IPアドレスとサブネットマスク

  • ルーター(ゲートウェイ)

  • DNSサーバ

新しいネットワークに接続するたびに、これらの設定を環境に合わせて変更しなければなりません。
サーバのように固定的に動く機器では手動設定が好ましい場合もあります。例えば、ドメインコントローラをカフェのWiFiに持ち込んで接続するようなことは普通しませんし、サーバは他の機器から固定のIPで参照される必要があるからです。


自動設定のメリット

接続された機器を自動的に設定できる仕組みには大きな利点があります。

  1. 手動設定の手間を省ける(特にモバイル端末にとって重要)

  2. IPアドレスの重複(コンフリクト)を避けられる

もし同じIPアドレスが複数の機器に割り当てられると、通信ができなくなってしまいます。これを防ぐ仕組みこそが DHCP(Dynamic Host Configuration Protocol) です。

DHCPはアプリケーション層のプロトコルで、UDPを利用します。

  • サーバは UDP 67番ポート で待機

  • クライアントは UDP 68番ポート から送信

スマートフォンやノートPCは、デフォルトでDHCPを使うよう設定されています。


DHCPの基本手順「DORA」

DHCPは4つのステップから成り立ちます。

  1. Discover: クライアントがDHCPDISCOVERメッセージをブロードキャストし、利用可能なDHCPサーバを探す

  2. Offer: サーバがDHCPOFFERメッセージを送り、クライアントに利用可能なIPを提示する

  3. Request: クライアントがDHCPREQUESTメッセージを返し、提示されたIPを受け入れる意思を示す

  4. Acknowledge: サーバがDHCPACKメッセージを送り、クライアントへの割り当てを確定する

例:
ノートPC → DHCP Discover
サーバ → DHCP Offer
ノートPC → DHCP Request
サーバ → DHCP Acknowledge


パケットキャプチャ例

次のキャプチャでは、クライアントが 192.168.66.133 を割り当てられる様子が確認できます。

Terminal
user@TryHackMe$ tshark -r DHCP-G5000.pcap -n
    1   0.000000      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0xfb92d53f
    2   0.013904 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP Offer    - Transaction ID 0xfb92d53f
    3   4.115318      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Request  - Transaction ID 0xfb92d53f
    4   4.228117 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP ACK      - Transaction ID 0xfb92d53f

ここで重要なのは:

  • DiscoverRequest の段階では、クライアントはまだIPを持っていないため、0.0.0.0 から 255.255.255.255 へ送信している。

  • リンク層ではブロードキャストMACアドレス ff:ff:ff:ff:ff:ff が使われる。

  • サーバはDHCPOFFERで利用可能なIPアドレスとネットワーク設定を提示し、クライアントのMACアドレス宛に送信する。


DHCPで得られる情報

DHCPによって最終的にデバイスは、ネットワークやインターネットにアクセスするための必要な設定をすべて取得します。

  • 割り当てられたIPアドレス

  • ネットワーク外へのルーティングに使うゲートウェイ

  • ドメイン名解決のためのDNSサーバ(後で詳述)

Answer the questions below

How many steps does DHCP use to provide network configuration?

4

What is the destination IP address that a client uses when it sends a DHCP Discover packet?

255.255.255.255

What is the source IP address a client uses when trying to get IP network configuration over DHCP?

0.0.0.0


ARP: Bridging Layer 3 Addressing to Layer 2 Addressing

Networking Concepts のルームで学んだ通り、2台のホストがネットワーク上で通信する際、IPパケットはデータリンク層のフレームにカプセル化されてレイヤー2を通過します。
私たちがよく使うデータリンク層の技術は Ethernet (IEEE 802.3)WiFi (IEEE 802.11) です。

同じEthernetやWiFi上でホスト同士が通信する際には、IPパケットをデータリンク層のフレームに載せて送る必要があります。ターゲットのIPアドレスは分かっていても、正しいデータリンク層ヘッダーを作成するには 相手のMACアドレス を調べる必要があります。

MACアドレスのおさらい

MACアドレスは48ビットの番号で、通常は16進数で表されます。
例:7C:DF:A1:D3:8C:5C44:DF:65:D8:FE:6C

ただし、同じEthernet上の機器が常にお互いのMACアドレスを知っている必要はありません。実際に通信を行うときに初めてMACアドレスを解決すれば十分です。

MACアドレスが必要になるシナリオ

デバイスをネットワークに接続すると、DHCPサーバがあれば自動的にゲートウェイやDNSサーバが設定されます。
この時点で、デバイスはDNSサーバやルーターの IPアドレス は知っていますが、MACアドレス は分かっていません。
しかし、同じLAN(EthernetやWiFi)上で実際に通信するには、MACアドレスの解決が必要です。

Ethernetフレームの構造

IPパケットはEthernetフレームにカプセル化されます。Ethernetヘッダーには次が含まれます。

  • 宛先MACアドレス

  • 送信元MACアドレス

  • タイプ(ここではIPv4)


ARPの仕組み

Address Resolution Protocol (ARP) は、Ethernet上で他の機器のMACアドレスを見つける仕組みです。

例:192.168.66.89192.168.66.1 と通信したい場合

  1. 192.168.66.89ff:ff:ff:ff:ff:ffARP Request を送信(「192.168.66.1 は誰?」)

  2. 192.168.66.1192.168.66.89ARP Reply を送信(自分のMACアドレスを通知)

これで双方が相手のMACアドレスを把握し、データリンク層フレームを交換できます。

パケットキャプチャ例(tshark)

Terminal
user@TryHackMe$ tshark -r arp.pcapng -Nn
    1 0.000000000 cc:5e:f8:02:21:a7 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.66.1? Tell 192.168.66.89
    2 0.003566632 44:df:65:d8:fe:6c → cc:5e:f8:02:21:a7 ARP 42 192.168.66.1 is at 44:df:65:d8:fe:6c

パケットキャプチャ例(tcpdump)

Terminal
user@TryHackMe$ tcpdump -r arp.pcapng -n -v
17:23:44.506615 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.66.1 tell 192.168.66.89, length 28
17:23:44.510182 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.66.1 is-at 44:df:65:d8:fe:6c, length 28

ARPのレイヤー位置

ARPメッセージはUDPやIP内ではなく、直接Ethernetフレーム に格納されます。
MACを扱うので「レイヤー2」とみなされますが、IP通信を支援する観点から「レイヤー3の一部」と捉える見解もあります。
重要なのは、ARPが レイヤー3のアドレス(IP)をレイヤー2のアドレス(MAC)へ対応付ける 役割を果たす点です。


Answer the questions below

What is the destination MAC address used in an ARP Request?

ff:ff:ff:ff:ff:ff 

In the example above, what is the MAC address of 192.168.66.1?

44:df:65:d8:fe:6c


ICMP: Troubleshooting Networks

Internet Control Message Protocol(ICMP) は主にネットワーク診断とエラー報告に使われます。ネットワークのトラブルシューティングやセキュリティでよく使われる代表的なコマンドが2つあり、どちらもICMPに依存しています。

  • ping:ターゲットへの接続確認と往復遅延(RTT)計測に使う。ターゲットが生きているか、返答が自分の端末まで届くかを確認できる。

  • traceroute / tracert:Linux/UNIX系では traceroute、Windowsでは tracert。ホストからターゲットまでの経路(経由するルーター群)を発見するのに使う。


Ping

ping は ICMP Echo Request(ICMP Type 8)を送信し、

相手は ICMP Echo Reply(ICMP Type 0)で応答します。これにより到達可否と往復遅延を測れます。WiresharkではICMPエコー要求/応答が IP パケット内に表示されます。

しかし、応答が得られない理由は複数あります:ターゲットがシャットダウンしている、あるいは経路上のファイアウォールがICMPをブロックしている、などです。下例では -c 4 で4回送信して停止しています。

Terminal
user@TryHackMe$ ping 192.168.11.1 -c 4
PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data.
64 bytes from 192.168.11.1: icmp_seq=1 ttl=63 time=11.2 ms
64 bytes from 192.168.11.1: icmp_seq=2 ttl=63 time=3.81 ms
64 bytes from 192.168.11.1: icmp_seq=3 ttl=63 time=3.99 ms
64 bytes from 192.168.11.1: icmp_seq=4 ttl=63 time=23.4 ms

--- 192.168.11.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 3.805/10.596/23.366/7.956 ms

出力からはパケット損失の有無や RTT の最小/平均/最大/標準偏差が分かります。


Traceroute

ルータ群を一つずつあぶり出すには、IPヘッダの TTL(Time-to-Live) フィールドを利用します。TTL は「経由できるルータの最大数(ホップ数)」を示し、ルータはパケットを転送する前に TTL を1減らします。TTL が 0 になったパケットはそのルータで破棄され、ルータは ICMP Time Exceeded(ICMP Type 11) を送ってくれます。これを利用して、各ホップのルータから応答を引き出していくのが traceroute の仕組みです。(ここでの “time” は秒ではなくホップ数を意味します。)

ただし、すべてのルータが応答するわけではありません。応答を返さない(ICMP をブロックしている)ルータも存在します。また、ISP 内部のプライベートIPを返すルータや、応答として公開IPを表示するルータがあり、その場合はドメイン名の逆引きや地理的な手がかりを得られることがあります。もちろん、ICMP 自体がブロックされると Time Exceeded が届かないため経路が分からない場合もあります。

下は traceroute example.com の実行例です。* * * はそのホップで応答が得られなかったことを示します。経路はコマンドを再実行するたびに変わる可能性があります。

Terminal
user@TryHackMe$ traceroute example.com
traceroute to example.com (93.184.215.14), 30 hops max, 60 byte packets
 1  _gateway (192.168.66.1)  4.414 ms  4.342 ms  4.320 ms
 2  192.168.11.1 (192.168.11.1)  5.849 ms  5.830 ms  5.811 ms
 3  100.104.0.1 (100.104.0.1)  11.130 ms  11.111 ms  11.093 ms
 4  10.149.1.45 (10.149.1.45)  6.156 ms  6.138 ms  6.120 ms
 5  * * *
 6  * * *
 7  * * *
 8  172.16.48.1 (172.16.48.1)  5.667 ms  8.165 ms  6.861 ms
 9  ae81.edge4.Marseille1.Level3.net (212.73.201.45)  50.811 ms  52.857 ms 213.242.116.233 (213.242.116.233)  52.798 ms
10  NTT-level3-Marseille1.Level3.net (4.68.68.150)  93.351 ms  79.897 ms  79.804 ms
11  ae-9.r20.parsfr04.fr.bb.gin.ntt.net (129.250.3.38)  62.935 ms  62.908 ms  64.313 ms
12  ae-14.r21.nwrknj03.us.bb.gin.ntt.net (129.250.4.194)  141.816 ms  141.782 ms  141.757 ms
13  ae-1.a02.nycmny17.us.bb.gin.ntt.net (129.250.3.17)  145.786 ms ae-1.a03.nycmny17.us.bb.gin.ntt.net (129.250.3.128)  141.701 ms  147.586 ms
14  ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.692 ms ce-3-3-0.a03.nycmny17.us.ce.gin.ntt.net (128.241.1.90)  141.615 ms ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.168 ms
15  ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  141.100 ms ae-65.core1.nyd.edgecastcdn.net (152.195.68.133)  140.360 ms ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  140.638 ms
16  93.184.215.14 (93.184.215.14)  140.574 ms  140.543 ms  140.514 ms
17  93.184.215.14 (93.184.215.14)  140.488 ms  139.397 ms  141.854 ms

補足メモ

  • セキュリティ面:ICMPは診断に有用ですが、攻撃者による情報収集(ネットワーク探索やDoSの補助)にも使われるため、ファイアウォールで制御することが多いです。

  • オプションtraceroute はプロトコル(ICMP / UDP / TCP)、パケットサイズ、最大ホップ数など多くのオプションを持ち、状況に応じて使い分けられます(例:ファイアウォールでICMPがブロックされている場合はTCPトレーサートを試す等)。

Answer the questions below

Using the example images above, how many bytes were sent in the echo (ping) request?

40

Which IP header field does the traceroute command require to become zero?

TTL


Routing

下記のネットワーク図を考えてみましょう。わずか3つのネットワークしかありませんが、インターネットはどのようにして Network 1 から Network 2 や Network 3 にパケットを届けるのでしょうか? これは単純化した図ですが、Network 1 と Network 2・3 を相互に接続するにはアルゴリズムが必要になります。



複雑なネットワークにおける経路選択

実際のインターネットは何百万ものルーターと何十億ものデバイスから成り立っています。下記の例はインターネットのごく一部を示したものです。
モバイルユーザーがWebサーバに到達できるのは、経路上の各ルーターが適切なリンクを選んでパケットを転送するからです。

もちろん、モバイルユーザーからWebサーバに至る経路は複数存在します。そのため、ルーターには「どのリンクを使うか」を判断するための ルーティングアルゴリズム が必要です。




代表的なルーティングプロトコル

このルームの範囲外なのでアルゴリズムの詳細は扱いませんが、代表的なルーティングプロトコルを紹介しておきます。

  • OSPF(Open Shortest Path First)
    ネットワークトポロジーの情報をルーター同士で共有し、最も効率的な経路を計算するプロトコル。ルーターはリンクやネットワークの状態を更新し合うことで全体の地図を持ち、最適な経路を判断できます。

  • EIGRP(Enhanced Interior Gateway Routing Protocol)
    Cisco独自のプロトコルで、複数のルーティング手法を組み合わせたもの。ルーターは到達可能なネットワークとそのコスト(帯域幅や遅延など)を共有し、最も効率的な経路を選択します。

  • BGP(Border Gateway Protocol)
    インターネットの基幹的なルーティングプロトコル。ISPなど異なるネットワーク間で経路情報を交換し、データを複数ネットワークにまたがって効率的に転送できるようにします。インターネット全体の疎通を担う極めて重要な役割を持ちます。

  • RIP(Routing Information Protocol)
    シンプルなプロトコルで、小規模ネットワークで利用されます。ルーター同士が「到達可能なネットワーク」と「そこに至るまでのホップ数」を共有し、最もホップ数の少ない経路を選択します。

Answer the questions below

Which routing protocol discussed in this task is a Cisco proprietary protocol?

EIGRP


NAT

Networking Concepts のルームで説明した通り、IPv4 で扱えるアドレス数は最大約40億個です。しかし、インターネットに接続する機器(パソコンやスマートフォンから、防犯カメラ、洗濯機まで)が爆発的に増加した結果、IPv4 アドレス枯渇は避けられないものでした。その解決策のひとつが NAT(Network Address Translation) です。


NATの基本的な考え方

NAT の発想は「1つのパブリックIPアドレスを使って、多数のプライベートIPアドレスにインターネット接続を提供する」というものです。

例えば、20台のコンピュータがある会社を考えてみましょう。NATを使えば、20個のパブリックIPを契約する代わりに、1つのパブリックIPだけで全台をインターネットに接続できます。
(厳密には技術的制約から2つのパブリックIPを確保する必要がありますが、それでも32台分をカバーできるので、30個分のパブリックIPを節約できます。)


NATとルーティングの違い

通常のルーティングは、宛先ホストまでパケットを自然に届ける仕組みです。
一方、NAT対応ルーターは「どの内部ホストがどの外部接続を使っているか」を追跡する必要があります。そのため、内部アドレスと外部アドレスの対応関係を記録した 変換テーブル(Translation Table) を保持します。

  • 内部ネットワーク:プライベートIPアドレス帯を使用

  • 外部ネットワーク:パブリックIPアドレスを使用


NATの仕組み(例)

次の例では、複数のデバイスが NAT 対応ルーター経由でインターネットにアクセスしています。

  • ノートPCが Web サーバと接続を確立する

  • ノートPC視点では 192.168.0.129:15401 から接続開始

  • Web サーバ視点では 212.3.4.5:19273 から接続されたように見える

このときルーターは、内部IPとポート番号を外部IPとポート番号に対応付け、変換テーブルに保存します。外部のサーバには変換後のアドレスしか見えません。

NAT ルーターがこのアドレス変換をシームレスに行うことで、限られたパブリックIPを効率的に使い、IPv4アドレス枯渇を回避できるのです。



Answer the questions below

In the network diagram above, what is the public IP that the phone will appear to use when accessing the Internet?
212.3.4.5

Assuming that the router has infinite processing power, approximately speaking, how many thousand simultaneous TCP connections can it maintain?
65

Closing Notes

このルームでは、日常的に直接あるいは間接的に利用しているさまざまなプロトコルを紹介しました。扱った内容は以下の通りです。

  • ICMP

  • DHCP

  • ARP

  • NAT

  • Routing

普段インターネットを利用していると、これらの略語に出会うことはほとんどありません。
しかし、これらのプロトコルこそが、ネットワークを正しく機能させるための基盤となっています。

Answer the questions below

Click on the View Site button to access the related site. Please follow the instructions on the site to obtain the flag.
THM{computer_is_happy}

【TryHackMeウォークスルー】KaffeeSec - SoMeSINT

 

Overview

このルームでは、ソーシャルメディア分析やフォレンジックを学びます。Google Dorking、ウェブサイトのアーカイブ、ソーシャルメディアの列挙・分析、そしてソーシャルメディア調査の文脈における基本的なOSINT手法について習得できます。OSINTの事前知識は不要ですが、あると理解が深まります。


前提条件

  • 批判的思考

  • ラビットホール(深掘り)を楽しむ姿勢

  • Googleの基本的な理解

  • Python 3.7 以上


このルームを完了するとできること

ルームを終えたとき、ソーシャルメディアを通じて情報を収集するためのツールや手法を使いこなし、文脈に基づいた質問に答えられるようになります。目的は、このカテゴリのCTFチャレンジや実際の調査に備えることです。


ツールについて

このルームに登場するツールはすべて必須ではありません。理論的にはウェブブラウザと手法だけで必要な情報を得られます。ただし、本ルームで紹介されるツールを使うと、初心者にとって取り組みやすくなります。


フラグ形式

一部の問題ではフラグ形式で回答する必要があります。
本ルームのフラグ形式は ks{flag} です。大文字小文字は区別されませんが、正確に綴る必要があります(コピー&ペースト推奨)。


Story

背景情報

あなたは Aleks Juulut、グリーンランドを拠点とする私立探偵です。普段はデジタル調査を専門にしているわけではありませんが、最近 OSINT 技術を学んだことで、その分野の仕事が格段にやりやすくなりました。

そんなあなたのもとに、謎めいた人物「H」と名乗る依頼人から新たな調査依頼が舞い込みます。対象は Thomas Straussman という浮気が疑われている男性です。

彼の妻である Francesca Hodgerint と短い電話を交わしたところ、最近彼の行動が怪しいと感じているものの、具体的に何をしているのかは分からないとのこと。彼女はあなたに調査を依頼し、わかったことを報告してほしいと望んでいます。

しかし残念ながら、あなたは現在家族の事情で国外におり、調査の締め切りまでにグリーンランドへ戻ることができません。したがって、この調査はすべてデジタルで行う必要があります。

グッドラック!

Answer the questions below

Who hired you?

ks{H}

Who are you investigating? (ks{firstname lastname})

ks{thomas straussman}


Let's get started!!

前提条件

  • 忍耐力、好奇心、ラビットホールを掘る情熱。

  • Firefox、Chrome、または Chromium 系ブラウザ(筆者は Brave を推奨)。

わくわくしますね!Thomas の知人への聞き取りから、彼がよく使う推測しやすいハンドルネームが tstraussman であることが分かりました。このハンドルを手掛かりにソーシャルメディアアカウントを探し、調査を始めます。

ソーシャルメディアから情報を見つける全体的な流れは、まず「ソーシャルメディアのアカウント自体を見つける」ことから始まります。名前やメールアドレスからアカウントを発見する作業は 列挙(enumeration) と呼ばれ、通常は CLI ツールやスクリプトで自動化されますが、Google ドーキング(Google dorking)でも似た効果が得られます。Google dorking のルームはこのタスクに取り組む前の良い読み物で、便利なチートシートも含まれています。


注意事項(Disclaimer)

事前に断っておきますが、このルームで対象となるアカウントが見つかるのは Twitter(現X) と Reddit のみ です。範囲外に調査を広げないでください。範囲外を追うと行き止まりに当たるだけでなく、本CTFに関係のないアカウントを覗き見ることになってしまいます。
本ルームでは受動的(パッシブ) に情報を収集することを基本とし、アカウントと直接やり取り(投稿への反応やメッセージ送信など)は行いません。CTF 用に作成されたサックパペット(sockpuppet:演習用アカウント)以外のアカウントに対して行った行為について、作者は責任を負いません。

Answer the questions below

What is Thomas' favorite holiday?

Christmas

What is Thomas' birth date?

12-20-1990 ※激ムズ

What is Thomas' fiancee's Twitter handle?

@FHodgelink ※回答不可!?

What is Thomas' background picture of?

Buddha


Spider... what?

必要なもの

まず最初に、最新の Python 3 をダウンロードしてインストールしていることを確認してください。続いてこちらの手順に従って最新の SpiderFoot(執筆時点で v3.3) をインストールしてください。


インストールが正しく終わったら、以下のコマンドで起動します。

python3 sf.py -l 127.0.0.1:5001

ブラウザで http://localhost:5001 にアクセスすると、Web インターフェースが開きます。



スキャンの開始

  1. New Scan」をクリック。

  2. Scan Target フィールドに Thomas Straussman または tstraussman を入力。

  3. By Use CaseAll にチェックを入れる。

  4. Run を押してスキャンを開始。

結果を見て、Twitter や Reddit に関係ないもの(=ノイズ)をフィルタして**誤検出(false positives)**を取り除いてください。

  • Twitter アカウントで shadowban.eu に飛ぶような結果が見つかったら、そのリンクをクリックして詳しく確認します。

  • もし Twitter 関連の結果が何も出ない場合は、SettingsAccount Finder に移動して、画面で強調表示されているオプションを False に設定してください(※該当オプションはユーザー名検索のスコープやフィルタに関連する設定です)。




アカウント確認の次のステップ

アカウントが存在するかを確認したら、該当ユーザー名で直接 Twitter 検索を行うか、ブラウザで https://twitter.com/[username] にアクセスして該当アカウントを確認します(例:https://twitter.com/tstraussman)。

Answer the questions below

What was the source module used to find these accounts?

sfp_accounts ※回答不可!?

Check the shadowban API. What is the value of "search"?

ks{1346173539712380929} ※回答不可!?


Connections, connections..

Thomas の Reddit と Twitter アカウントが見つかったら、いろいろ面白いことができるようになります!

まず、ブラウザにリバースイメージ検索の拡張を入れておくことを検討してください。筆者のお気に入りは RevEye で、いくつかの優れたリバース検索エンジンを選べるか、複数同時に使うことができます。
Chrome / Firefox 両対応)


ソーシャルから探したい主要な情報タイプ

  • 建物や看板、記念碑、ランドマークなど、明確な識別子を含む場所の画像(IMINT / GEOMINT の目的)。

  • 被写体の顔がはっきり写った画像(リバースイメージ検索で他アカウントや情報源を見つけるため)。

  • 被写体が複数人で写っている写真(家族写真や友人グループなど、関係性や文脈を示す手がかり)。

  • プロフィールの自己紹介欄やプロファイルに書かれた個人情報(出身地、現在の居住地、出身校など)。

  • 行動や習慣が分かる投稿(喫煙するか/飲酒するか/よく行くバーはあるか/特定の場所へよくバケーションに行くか等)。こうした情報は捜査に役立ちます。


ピボット(軸移動)

Thomas の Twitter から有益な情報を得られたら、婚約者(fiancée)のアカウントへピボットして調査を広げてください。婚約者や家族・友人のアカウントは、追加の手がかり(集合写真、居住地、行動パターンなど)を持っていることが多いです。


どんな個人情報が見つかりますか?

  • 公開プロフィールに書かれている情報(職業、居住地、リンクなど)

  • 投稿や写真から推測できる位置情報や行動パターン

  • 友人・家族関係(タグ付けやコメント)

  • 画像の背景から判別できる施設・看板・ランドマーク


ヒント(フラグ詰まったとき)

最初のフラグで詰まったら、次の2点を検討してください。

  1. 風景や場所の画像をリバースイメージ検索すれば、場所が特定できる可能性が高いです。

  2. ウェブページのソースを確認する(Ctrl + Shift + C で要素を選択 → 画像をクリック)と、画像に埋め込まれたメタデータや参照先が見つかることがあります。

Answer the questions below

Where did Thomas and his fiancee vacation to?

Koblenz, Germany

When is Francesca's Mother's birthday? (without the year)

December 25th

What is the name of their cat?

Gotank

What show does Francesca like to watch?

90 Day Fiancee ※回答不可!?(不具合!?)


Turn back the clock!!

Thomas と Francesca の Twitter から情報を集めたので、次は別のプラットフォーム Reddit に移ります。

この調査では、Reddit を次の 2 つの方法で利用します。

  1. 旧バージョン(http://old.reddit.com/)を Wayback Machine での調査に利用する

  2. 新バージョン(https://www.reddit.com/)をその他の用途で利用する(後ほど)


Wayback Machine の準備

まずはブラウザに Wayback Machine 拡張機能 を入れておきましょう(必須ではありませんが、あると格段に便利です)。


Reddit 旧サイトでの手順

  1. Thomas のプロフィールページを old.reddit.com で開く。

  2. ページ上で右クリック → Wayback Machine → All Versions を選択。

  3. 保存されているページの履歴カレンダーが表示されます。各保存バージョンをクリックして確認してみましょう。

→ 今回は 保存なし。特に不自然な点はありません。


誕生日投稿をチェック

次に Thomas の 誕生日投稿 へ移動し、同じ手順で最初に保存されたバージョンを確認します。

すると…… 発見!

Thomas の 同僚 らしき人物が登場します。これは新しいインテリジェンスの源です。


しかし、問題は…

その同僚から どれだけの情報を引き出せるか?
ここから先が次の調査ポイントになります。

Answer the questions below

What is the name of Thomas' coworker?

Hans Minik

Where does his coworker live?

Nuuk, Greenland

What is the paste ID for the link we found? (flag format)

ks{ww4ju}

Password for the next link? (flag format)

ks{1qaz2wsx}

What is the name of Thomas' mistress?

Emilia Moller

What is Thomas' Email address?

straussmanthom@mail.com


Resources

おめでとうございます!ここまで到達しましたね。ルーム完了後にぜひ試してほしい参考リソースをいくつか挙げておきます。

ほかの TryHackMe ルーム

さらに腕試しをしたいなら(CTF)


出典:KaffeeSec - SoMeSINT

【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