
fscan v2.2.1
社内ネットワーク向け総合スキャンツール。ワンクリック自動化、全方位的な脆弱性スキャンを容易に実現します。(An intranet comprehensive scanning tool, enabling one-click automated, all-round vulnerability scanning)
Fscan
イントラネット総合スキャンツール、ワンクリック自動脆弱性スキャン。
バージョン: 2.2.2
機能特性
スキャン能力
- ホスト検出 - ICMP/Ping生存探査、大規模ネットワークB/Cセグメントの生存統計に対応
- ポートスキャン - TCPフルコネクトスキャン、133個の常用ポートを内蔵、ポートグループ(web/db/service/all)に対応
- サービス識別 - スマートプロトコル識別、20種類以上のサービスフィンガープリントマッチングに対応
- Web探査 - サイトタイトル、CMSフィンガープリント、Webミドルウェア、WAF/CDN識別(40種類以上のフィンガープリント)
ブルートフォース能力
- 弱パスワードブルートフォース - 28種類のサービスブルートフォース(SSH/RDP/SMB/FTP/MySQL/MSSQL/Oracle/Redisなど)
- Hash衝突 - NTLM Hash認証に対応(SMB/WMI)
- SSH鍵ログイン - 秘密鍵認証方式に対応
- スマート辞書 - 100種類以上の一般的な弱パスワードを内蔵、{user}変数置換に対応
脆弱性検出
- 高危険度脆弱性 - MS17-010(エターナルブルー)、SMBGhost(CVE-2020-0796)
- 未認証アクセス - Redis/MongoDB/Memcached/Elasticsearchなどの未認証検出
- POCスキャン - Web脆弱性POCを統合、Xray POCフォーマットに対応
- DNSLog - DNSLog外部検出に対応
脆弱性悪用
- Redis悪用 - 公開鍵書き込み、スケジュールタスク書き込み、WebShell書き込み、マスタースレーブレプリケーションRCE
- MS17-010悪用 - ShellCodeインジェクション、ユーザー追加、コマンド実行に対応
- SSHコマンド実行 - 認証成功後に自動的にコマンドを実行
ローカルモジュール
- 情報収集 - システム情報、環境変数、ドメインコントローラ情報、ネットワークカード設定
- 資格情報取得 - メモリダンプ(MiniDump)、キーロガー、レジストリエクスポート
- 権限維持 - Systemdサービス、Windowsサービス、スケジュールタスク、スタートアップ項目、LD_PRELOAD
- リバースシェル - 正方向シェル、逆方向シェル、SOCKS5プロキシサービス
- アンチウイルス検出 - 対象ホストにインストールされたセキュリティソフトを識別
- 痕跡消去 - ログ消去ツール
入出力
- ターゲット入力 - IP/CIDR/ドメイン/URL、ファイル一括インポートに対応
- 除外ルール - 特定のホスト、ポートの除外に対応
- 出力フォーマット - TXT/JSON/CSVマルチフォーマット出力
- サイレントモード - Bannerなし、プログレスバーなし、カラー出力なし
ネットワーク制御
- プロキシ対応 - HTTP/SOCKS5プロキシ、ネットワークカード指定に対応
- パケット送信制御 - レート制限、最大パケット送信数制御
- タイムアウト制御 - ポートタイムアウト、Webタイムアウト、グローバルタイムアウトの独立設定
- 並行制御 - ポートスキャンスレッド、サービススキャンスレッドの独立設定
拡張機能
- SDK組み込み -
pkg/fscanがGo SDKを提供、Agentやセキュリティプラットフォームに組み込み可能、タスク制御(Pause/Resume)、リアルタイム進捗コールバック、TaskID追跡に対応 - Web管理インターフェース - 可視化スキャンタスク管理(条件付きコンパイル -tags web)
- Labターゲット環境 - テスト学習用のDockerターゲットを内蔵
- プラグイン化アーキテクチャ - サービスプラグイン/Webプラグイン/ローカルプラグインを分離、拡張が容易
- 多言語対応 - 中国語/英語インターフェース切り替え(-lang zh/en)
- パフォーマンス統計 - JSON形式パフォーマンスレポート(-perf)
v2.1.0 更新ログ
今回の更新には 262件のコミット が含まれ、30件の新機能、120件の修正、54件のリファクタリング、14件のパフォーマンス最適化、20件のテスト強化を網羅しています。
アーキテクチャリファクタリング
- グローバル変数の排除 - Config/Stateオブジェクトへ移行、並行安全性とテスト容易性を向上
- SMBプラグイン融合 - smb/smb2/smbghost/smbinfoを統合プラグインに統合、smb_protocol.goを新規追加
- サービス探査リファクタリング - Nmapスタイルのfallbackメカニズムを実装、ポートフィンガープリント識別戦略を最適化
- 出力システムリファクタリング - TXTリアルタイムフラッシュ+二重書き込みメカニズム、結果消失と順序乱れの問題を解決
- i18nフレームワークアップグレード - go-i18nへ移行、core/plugins/webscanモジュールを完全カバー
- HostInfoリファクタリング - Portsフィールドをstringからintに変更、型安全
- 関数複雑度最適化 - clusterpoc(125→30)、EnhancedPortScan(111→20)
- コード監査 - P0-P2レベルの問題を修正、deadcodeをクリーンアップ
- ログシステム最適化 - LogDebug呼び出しをクリーンアップ(71→18)、起動ログ出力を簡素化
パフォーマンス最適化
- 正規表現プリコンパイル - グローバル正規表現をプリコンパイル、重複コンパイルのオーバーヘッドを回避
- メモリ最適化 - map[string]boolをmap[string]struct{}に変更してメモリを節約
- 並行フィンガープリントマッチング - マルチゴルーチン並列マッチング、識別速度を向上
- 接続再利用 - SOCKS5グローバルダイヤラーを再利用、重複ハンドシェイクを回避
- スライディングウィンドウスケジューリング - 適応型スレッドプール+ストリーミングイテレータ、ポートスキャンを最適化
- CELキャッシュ最適化 - POCスキャンCEL環境キャッシュ、重複初期化を削減
- パッケージレベル変数の抽出 - proxyFailurePatterns/resourceExhaustedPatterns/sslSecondProbesなど
- 容量の事前割り当て - 変換チェーンの簡素化、単一文字列置換
- 並行安全最適化 - ロック粒度とメモリ割り当てを最適化
新機能
- Web管理インターフェース - 可視化スキャンタスク管理、レスポンシブレイアウトと進捗表示
- マルチフォーマットPOC対応 - xrayとafrogフォーマットのPOCに対応
- スマートスキャンモード - ブルームフィルタによる重複排除+プロキシ最適化
- フィンガープリントライブラリ強化 - FingerprintHubを統合(3139件のフィンガープリント)
- Faviconフィンガープリント識別 - mmh3とMD5のデュアルフォーマットhashマッチングに対応
- 汎用バージョン抽出器 - サービスバージョン情報を自動抽出
- フィンガープリント優先度ソート - マッチング結果をスマートにソート
- スマートプロトコル検出 - HTTP/HTTPSプロトコルタイプを自動識別
- ネットワークカード指定機能 - VPNシナリオに対応(-ifaceパラメータ)
- 除外ホストファイル - ファイルから除外ホストを読み込みに対応(-ehfパラメータ)
- ICMPトークンバケットレート制限 - 高速スキャンによるルータークラッシュを防止
- ポートスキャンリトライ - 失敗時の自動再スキャンメカニズム
- RDP実認証 - grdpライブラリを統合してシステムフィンガープリント識別を実装
- SMB/FTPファイルリスト - 匿名アクセス時にファイルを自動リスト
- 302リダイレクト二重識別 - 元のレスポンスとリダイレクト後のレスポンスのフィンガープリントを同時に識別
- TXT出力URLサマリー - 末尾にWebサービスURLリストを追加して一括テストを容易に
- nmapコア統合 - 三大改善:探査戦略/マッチングエンジン/バージョン解析
- プラグイン選択的コンパイル - Build Tagsシステム、サービス/ローカル/Webプラグインの独立コンパイルに対応
- デフォルトポート拡張 - 62個から133個の常用ポートに拡張
- 全ポートスキャン対応 - ポート範囲制限を拡大
- HTTPリダイレクト制御 - 設定可能なリダイレクト回数制限
- パフォーマンス分析対応 - pprofパフォーマンス分析とbenchmarkテストを追加
- TCPパケット統計 - サービスプラグインがTCPパケット送信統計に対応
- fscan-labターゲット - イントラネットペネトレーショントレーニングプラットフォーム、全脆弱性シナリオを網羅(未完成)
- Redis悪用強化 - 完全なRedis悪用機能を移植(公開鍵/スケジュールタスク/WebShell/マスタースレーブRCE書き込み)
- rsyncプラグインリファクタリング - go-rsyncライブラリを使用して認証ロジックをリファクタリング
Bug修正(120件、主要な修正を列挙)
- RDPヌルポインタpanic - 証明書解析によるクラッシュを修正(#551)
- 一括スキャン漏報 - 大規模スキャンの漏れ問題を修正(#304)
- JSON出力フォーマット - 出力フォーマットエラーを修正(#446)
- Redis弱パスワード検出 - 検出漏れ問題を修正(#447)
- 結果リアルタイム保存 - スキャン結果が即座に保存されない問題を修正(#469)
- Nmap解析オーバーフロー - 八進数エスケープ解析bugを修正(#478)
- フィンガープリント識別競合 - webtitle/webpoc競合問題を修正(#474)
- MySQL接続検証 - information_schemaライブラリを使用した検証に変更
- プロキシポート誤判定 - プロキシモードでのポート状態判定エラーを修正
- Contextタイムアウト - 22箇所のプラグインタイムアウト未応答問題を修正
- ICMP競合条件 - 並行スキャン競合問題を修正
- IPv6アドレスフォーマット - 4箇所のアドレスフォーマット問題を修正
- POC高並行フリーズ - Contextが伝播されない問題を修正
- Ctrl+C結果消失 - シグナル処理を追加して結果書き込みを保証
- SOCKS5全エコー - プロキシ接続検証を追加
- サービス探査リーク - 接続が正しく閉じられない問題を修正
- webtitleレスポンス破棄 - 一部のレスポンスデータが破棄されて識別失敗する問題を修正
- TXT脆弱性情報欠落 - 出力で脆弱性詳細が漏れる問題を修正
- JSONフィンガープリント欠落 - SERVICE結果のTargetフォーマットを統一
- スキャン所要時間表示 - 完了所要時間が0と表示される問題を修正
- 虚偽脆弱性記録 - TXT出力システムをリファクタリングして誤報を排除
- Redisクロスプラットフォームパス - 悪用機能のパスとタイムアウト問題を修正
- Windowsコンパイル警告 - fscan-liteプラットフォーム互換性を修正
- Go 1.20互換 - 依存関係をダウングレードして互換性を維持
テスト強化(20件)
- ユニットテスト - コアモジュールのカバレッジ74-100%
- 並行安全テスト - Stateオブジェクト、フィンガープリントマッチングエンジンの専用テスト
- 統合テスト - Webスキャン/ポートスキャン/サービス探査/SSH認証/ICMP探査
- CLIパラメータテスト - コマンドラインパラメータ解析の検証
- パフォーマンスベンチマークテスト - AdaptivePool、サービス探査戦略のbenchmark
- ResultBufferテスト - 重複排除と完全度スコアの検証
エンジニアリング改善
- CIフロー最適化 - golangci-lint v2アップグレード、ビルド手順を簡素化
- Issue自動化 - GitHub Issueテンプレート最適化、Project自動化ワークフロー
- Lint全量修正 - revive/errcheck/shadow/staticcheck/gosimpleすべて通過
- README書き直し - 中国語/英語ドキュメントを全面的に更新
- コードフォーマット統一 - gofmt/goimportsの標準化
クイックスタート
# Cセグメントをスキャン
./fscan -h 192.168.1.1/24
# ポート指定
./fscan -h 192.168.1.1 -p 22,80,443,3389
# 生存探査のみ
./fscan -h 192.168.1.1/24 -ao
# ブルートフォース無効化
./fscan -h 192.168.1.1/24 -nobr
# Webスキャン
./fscan -u http://192.168.1.1
# ローカルプラグイン
./fscan -local systeminfo
# Hash衝突
./fscan -h 192.168.1.1 -m smb2 -user admin -hash xxxxx
# Redis公開鍵書き込み
./fscan -h 192.168.1.1 -m redis -rf id_rsa.pub
コンパイル
# 標準コンパイル
go build -ldflags="-s -w" -trimpath -o fscan .
# Web管理インターフェース付き
go build -tags web -ldflags="-s -w" -trimpath -o fscan-web .
インストール
# Arch Linux
yay -S fscan-git
実行スクリーンショット
fscan -list-plugins を使用して、現在のビルドで利用可能なモジュール名、タイプ、デフォルトポート、呼び出し方法を確認できます。
固定ポートを持つモジュールを -m で指定し、-p/-pf を渡さない場合、スキャン範囲は選択したモジュールのデフォルトポートの和集合を使用します;
例えば fscan -hf ip.txt -m netbios は 137,139 を使用します。-p を指定すると非標準ポートをスキャンでき、Webモジュールは依然として汎用ポート範囲を使用します。
-pwda/-usera はデフォルト辞書に追加されます;-pwd/-user または -pwdf/-userf と併用する場合、指定した辞書に追加されます。
fscan.exe -h 192.168.x.x


fscan.exe -h 192.168.x.x -rf id_rsa.pub (Redis公開鍵書き込み)

fscan.exe -h 192.168.x.x -m ssh -user root -pwd password

fscan.exe -h 192.168.x.x -m ssh -user root -pwda pass1 pass2 pass3 (複数パスワードを追加)