Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Portspoof — すべての65535 TCPポートでオープンポートとサービスシグネチャをエミュレートし、偵察を遅らせ、スキャナーを混乱させ、説得力のある偽のサービスとターピッティングで攻撃者のリソースを浪費します。 | Kitploit
ツール/GitHubGitHub/drk1wi/portspoof
防御ツール偵察脆弱性分析IDS/IPS回避ネットワークセキュリティレッドチーミング
GitHubdrk1wi/portspoof

Portspoof

すべての65535 TCPポートでオープンポートとサービスシグネチャをエミュレートし、偵察を遅らせ、スキャナーを混乱させ、説得力のある偽のサービスとターピッティングで攻撃者のリソースを浪費します。

リポジトリを見る
2.4k179414日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Portspoof

License Platform Build Status

Portspoof は、全 65535 TCP ポートでオープンポートとサービスシグネチャをエミュレートし、偵察フェーズを短時間のスキャンから長時間・リソース消費型のプロセスに変えます。スキャナーは何千もの説得力のある偽のサービスを目にし、実際の攻撃対象領域を特定することが実質的に不可能になります。

目次

  • 概要
  • 主な機能
  • 動作の仕組み
  • 設計アプローチ
  • インストール
  • 設定
  • 使用方法
  • iptables による強化
  • Portspoof Pro
  • 作者とライセンス

概要

Portspoof の主な目的は、攻撃者にとって偵察を遅く、コストが高く、信頼性の低いものにすることです。システム上のすべての実際のサービスをマッピングする標準的な 5 秒の Nmap スキャンの代わりに、Portspoof に直面した攻撃者は 65535 個のオープンポートを目にし、それぞれが異なる正当なサービスのように見えるものを実行しています。どれが本物かを素早く見分ける方法はありません。

主な機能

  • 全 65535 TCP ポートが常にオープン: 攻撃者にポートが CLOSED または FILTERED であることを伝える代わりに、Portspoof はすべての接続試行に対して SYN+ACK を返します。
  • サービスエミュレーション: 正規表現から生成された 9000 以上の動的サービスシグネチャ。すべてのポートが、異なる説得力のあるサービスIDでプローブに応答します。
  • 混合配信モード: 起動時に各ポートに異なる動作プロファイル(即時バナー、遅延応答、サイレントホールド)が割り当てられ、ホールド時間は広範囲に分散されます。全範囲のバージョン検出(nmap -sV -p-)は実用的な限界を超えます。
  • 攻撃的防御: 攻撃者自身のスキャンツールの脆弱性を悪用する「エクスプロイテーションフレームワークフロントエンド」として使用できます。
  • 軽量かつ安全: ユーザーランドで動作し(ルート権限不要)、実行中のインスタンスごとに1つの TCP ポートのみにバインドし、CPU/メモリ使用量はわずかです。

動作の仕組み

1. ポートスキャナーを無効化する

Nmap スキャンの例:

root@kitploit:~
$ nmap -p 1-20 target
Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for target
Host is up (0.00016s latency).
PORT   STATE SERVICE
1/tcp  open  tcpmux
2/tcp  open  compressnet
3/tcp  open  compressnet
4/tcp  open  unknown
5/tcp  open  rje
6/tcp  open  unknown
7/tcp  open  echo
8/tcp  open  unknown
9/tcp  open  discard
10/tcp open  unknown
11/tcp open  systat
12/tcp open  unknown
13/tcp open  daytime
14/tcp open  unknown
15/tcp open  netstat
16/tcp open  unknown
17/tcp open  qotd
18/tcp open  unknown
19/tcp open  chargen
20/tcp open  ftp-data

2. バージョン検出を混乱させる

Portspoof は、大規模な正規表現データベースに基づいて、有効で動的に生成されたシグネチャでサービスのプローブに応答します。その結果、攻撃者はシステムが実際に使用しているポート番号を特定できなくなります。

バージョンスキャンの例(ポート1~100):

root@kitploit:~
$ nmap -sV -p 1-100 target
Nmap scan report for target
Host is up (0.00016s latency).
PORT    STATE SERVICE            VERSION
1/tcp   open  tcpmux?
2/tcp   open  irc                ircu ircd
3/tcp   open  tcpwrapped
5/tcp   open  http               Polycom CMA Global Address Book (GAB) httpd
10/tcp  open  http               PGP Universal httpd
11/tcp  open  http               SnapStream Media Beyond TV PVR http config
12/tcp  open  pop3               Novell GroupWise pop3d
13/tcp  open  http               micro_httpd
15/tcp  open  ssh                OpenSSH r (protocol 8; NCSA GSSAPI authentication patch)
16/tcp  open  ftp                QMS/Minolta Magicolor 2200 DeskLaser printer ftpd
17/tcp  open  smtp               Network Box smtpd
21/tcp  open  ftp?
22/tcp  open  ssh                OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
23/tcp  open  tcpwrapped
25/tcp  open  smtp?
27/tcp  open  http               BMC/Marimba Management http config
37/tcp  open  http               Indy httpd qlRKjiF
39/tcp  open  pop3
41/tcp  open  ftp                VSE ftpd WhH
43/tcp  open  imap               Scalix imapd 6
46/tcp  open  telnet             AXIS webcam telnetd 96747 (Linux)
49/tcp  open  smtp               Openwave Email Mx smtpd
50/tcp  open  http               3Ware web interface 3v (RAID storage)
51/tcp  open  ftp                WebStar 4dftp ...
53/tcp  open  tcpwrapped
55/tcp  open  webdav             Tonido WebDAV
56/tcp  open  tor-control        Tor control port (Authentication required)
59/tcp  open  irc                ircu ircd
60/tcp  open  rtsp               GStreamer rtspd
64/tcp  open  http               BaseHTTPServer CAxoE (Mercurial hg serve; Python LDkW)
66/tcp  open  telnet             Slirp PPP/SLIP-on-terminal emulator telnetd
70/tcp  open  smtp               qpsmtpd
71/tcp  open  smtp               Microsoft Exchange smtpd
73/tcp  open  http               Avaya IP Office VoIP PBX httpd
77/tcp  open  smtp               Zeus SMTPS smtpd
79/tcp  open  ftp                Sambar ftpd
80/tcp  open  tcpwrapped
81/tcp  open  imap-proxy         nginx imap proxy
82/tcp  open  ssh                (protocol 811)
83/tcp  open  http               peercast.org
88/tcp  open  csta               Alcatel OmniPCX Enterprise
90/tcp  open  http               WASD httpd
91/tcp  open  http               Fortinet FortiGate 50B firewall http config
93/tcp  open  imap               ModusMail imapd 4
98/tcp  open  ssh                Sysax Multi Server sshd 7 (protocol 940)
99/tcp  open  http               2Wire HomePortal http config 5473
100/tcp open  newacct?

結果

これらのテクニックを組み合わせることで、次のことが実現します:

  • 実際のサービスと偽のサービスを素早く区別する方法はありません。タイミング、動作、バナーの内容はすべてポート範囲全体で異なります。
  • デフォルトのターピット設定での全バージョンスキャン(nmap -sV -p-)は10時間以上かかり、数百メガバイトの無価値なデータを生成します。
  • 攻撃者のスキャナーは、どこにも到達しない接続に時間とスレッドを浪費します。

設計アプローチ

実際のサービス(SSH、SMTP、FTP、HTTP)はバナーを送信し、クライアントからの入力を待つために接続を開いたままにします。説得力のあるエミュレーションとは、同じことを行うことです: 受け入れ、送信、保持。しかし、スレッド・パー・クライアントモデルはコンテキストスイッチングにメモリとCPUを消費し、大規模になると防御側は攻撃側が忍耐力を失う前にリソースを使い果たします。欺瞞ツールは自己DoSベクターになります。

アプローチ: シングルスレッドの epoll イベントループ。各ポートには起動時に配信モードが割り当てられます。即座にバナーをプッシュするもの、クライアントがデータを送信するのを待ってから応答するもの、サイレントのままのものがあります。ホールド時間は桁違いに分散され(数十ミリ秒から数分)、接続ごとにジッターが追加されるため、同じポートへの繰り返しのプローブは同一のタイミングを返しません。

これは重要です。なぜなら、これがないと、攻撃者はすべてのポートにガベージを送信し、応答タイミングを測定できるからです。実際のサービスは(間違ったプロトコルのため)速やかに閉じますが、単純なターピットは数秒間保持します。混合モードと広いタイミング分散により、何千もの偽のポートも実際のサービスと同じ範囲で閉じます。フィルタリングするための明確なしきい値はありません。

非対称性により経済性が成り立ちます:

  • 防御側のコスト: アイドル接続あたり約1~2 KBのカーネルメモリ。epollループはシングルスレッドで、コンテキストスイッチのオーバーヘッドはありません。中程度のマシンでも、10k以上の同時接続を難なく保持できます。
  • 攻撃側のコスト: 時間と労力。ポートスキャンは何も教えてくれません — すべてのポートがオープンです。実際のサービスを見つけるには、全65535ポートにわたるバージョン検出が必要であり、その後に妥当と思われるものに対するプロトコルレベルのプロービングが必要です。5秒のスキャンが10時間以上のアクティブな作業になり、結果は依然として干し草の山であり、ほとんどの攻撃者はより簡単な標的に移ります。

ポートごとの配信モードはプロセスの存続期間中固定ですが、再起動ごとに予測不可能です。ホールド時間には接続ごとのランダム要素があり、繰り返しのプローブでは、実際のサービスが負荷の下で示すのと同様の自然なばらつきが示されます。

v2.0 では、接続終了バイパスに対して脆弱だった元のバナーアンドクローズ動作を置き換えました(Vicarius/Hored1971のブログ記事を参照)。ターピットエンジンは混合タイミングですべての接続を開いたままにし、接続終了フィルタリング、タイミング指紋認証、バナー分析、統計的パターンモデリングを無効にします。


インストール

前提条件

C++コンパイラとCMake(3.10以上)がインストールされていることを確認してください。

ソースからビルド

root@kitploit:~
mkdir build && cd build
cmake -DCMAKE_INSTALL_SYSCONFDIR=/etc .. 
make
sudo make install

設定

Portspoofはユーザーランドで動作しますが、他のポート宛てのトラフィックをインターセプトするためにシステムファイアウォールルールに依存します。

1. ファイアウォールの設定(iptables)

すべての着信TCPトラフィック(ポート1-65535)をPortspoofのポート(デフォルト4444)にリダイレクトします。

Linux(iptables):

root@kitploit:~
# 最初に実際のサービスを除外し、残りをPortspoofにリダイレクト
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-ports 4444

注: eth0 をネットワークインターフェースに置き換えてください。実際のサービスを実行しているポートごとにRETURNルールを追加してください。

永続的にするには、iptablesルールを保存するか、system_filesディレクトリにある iptables-config を使用できます。

2. システム起動

system_files/init.d/ の例を使用して、起動スクリプトにPortspoofを追加できます。


使用方法

サービスエミュレーションモード(推奨)

このモードは、ポートスキャナーに偽のサービスシグネチャを生成して提供します。

root@kitploit:~
portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures -D

カスタムターピットタイミング(各接続を10~60秒間保持)の場合:

root@kitploit:~
portspoof -s /etc/portspoof_signatures -t 10 -T 60 -D

オープンポートモード

このモードは、サービスバナーを送信せずに、すべての接続試行に OPEN 状態を返すだけです。接続は依然としてターピットされます。

root@kitploit:~
portspoof -D

ファジングモード

Portspoofは、ランダムまたはワードリストベースのペイロードを送信してスキャンツールをファズするために使用できます。

内部ジェネレーターによるファズ:

root@kitploit:~
# ランダムなサイズのランダムペイロードを生成
portspoof -1 -v

ワードリストによるファズ:

root@kitploit:~
portspoof -f payloads.txt -v

iptables による強化

上記の基本的なREDIRECTルールは機能しますが、攻撃的なスキャナーは接続でPortspoofを圧倒しようとする可能性があります。以下のルールセットはレート制限を追加し、接続しきい値を超えたホストを自動的に禁止します。実際のサービスをホストするポート(この例ではSSH)はリダイレクトから除外されますが、グローバル禁止ルールによって保護されます。

root@kitploit:~
# --- NAT: 実際のサービス以外をすべてリダイレクト ---
# 実際に使用するポート(SSH、HTTPなど)ごとにRETURNルールを追加
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4444

# --- FILTER: 多層防御 ---

# ループバックを許可(重要: ローカルサービスを壊さないため)
iptables -A INPUT -i lo -j ACCEPT

# このIPが悪用としてフラグされた場合、すべてをドロップ(サイレント、RSTなし)
iptables -A INPUT -m recent --name PORTSCAN --rcheck --seconds 60 -j DROP

# 送信元IPあたりの新しいSYNをレート制限
iptables -A INPUT -p tcp --syn -m hashlimit \
  --hashlimit-above 10/sec --hashlimit-burst 30 \
  --hashlimit-mode srcip --hashlimit-name syn_throttle -j DROP

# 単一IPがportspoofに対して100以上の接続を保持している場合、フラグしてドロップ
iptables -A INPUT -p tcp --syn --dport 4444 -m connlimit \
  --connlimit-above 100 --connlimit-mask 32 \
  -m recent --name PORTSCAN --set -j DROP

# 確立されたトラフィックと新しい接続を許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -j ACCEPT
iptables -A INPUT -j DROP

高トラフィックのデプロイでは、xt_recent リストのサイズを増やします:

root@kitploit:~
echo "options xt_recent ip_list_tot=10000" > /etc/modprobe.d/xt_recent.conf

そしてカーネルコネクショントラッキングを調整:

root@kitploit:~
sysctl -w net.netfilter.nf_conntrack_max=131072
sysctl -w net.core.somaxconn=4096

Portspoof Pro

Portspoof Pro は、欺瞞を単一ホストからネットワーク全体に拡張します。単一のセンサーが完全な/16ネットワークをエミュレートします。何千ものIP、それぞれがすべてのポートにわたって固有のサービスを持ち、ステートフルなマルチステップ会話を保持します。

  • ネットワーク全体の欺瞞。 ダークIPスペースと未使用のサブネットをアクティブな欺瞞グリッドに変えます。エミュレートされた各ホストは、送信元IPごとに異なるパーソナリティを持つ独自のサービスを提示します。アクティブなターピットは攻撃者のソケットプールを枯渇させ、自動化ツールを抑制します。
  • スキャン検出とツール指紋認証。 SYN、FIN、NULL、XMAS、ACKスキャン手法を検出します。Nmap、Masscan、ZMap、カスタムスキャナーを指紋認証します。MITRE ATT&CKマッピングを含む構造化JSONテレメトリをSIEMにストリーミングします。
  • 本番環境に安全なデプロイ。 本番トラフィックと並行してサンドボックス環境で動作します。ルーティングポリシーが欺瞞トラフィックをセンサーに誘導します。インライインタップは不要で、実際のワークロードへのリスクはありません。
  • すぐに使えるコンプライアンス。 NIS2、DORA、ISO 27001、NIST CSF、CIS Controlsをサポートします。

portspoof.io


作者とライセンス

作者: Piotr Duszyński (@drk1wi)

ライセンス: GNU General Public License v2.0 (GPLv2)。詳細については LICENSE ファイルを参照してください。

商用目的の正当なアプリケーションについては、適切なライセンス契約のために作者にお問い合わせください。


問題の報告

バグを発見した場合や機能リクエストがある場合は、GitHub Issue Tracker に報告するか、piotr [at] duszynski.eu までメールで作者に連絡してください。

ツールをダウンロード