このリポジトリは 2 つの目的を果たすことを目的としています。まず、ビーコン オブジェクト ファイル (BOF) に実装された基本的な状況認識コマンドの優れたセットが提供されます。これにより、より侵襲性の高いコマンドの実行を開始する前に、ホスト上でいくつかのチェックを実行できます。
そのより大きな目標は、他の人がより多くの BOF を作成し始めるためのコード例とワークフローを提供することです。これは、ここで作成されたブログ投稿の関連ドキュメントです: https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/
このリポジトリと同じワークフローを使用する場合の基本的な手順は次のとおりです。
現実的には、これをヘルパー スクリプトに圧縮することもできますが、この作業ではそのような手順は実行されませんでした。
コマンド | 使用法 | 注意事項 |
---|---|---|
adcs_enum | adcs_enum | Win32 関数を使用して AD 内の CA とテンプレートを列挙する |
adcs_enum_com | adcs_enum_com | ICertConfig COM オブジェクトを使用して AD 内の CA とテンプレートを列挙する |
adcs_enum_com2 | adcs_enum_com2 | IX509PolicyServerListManager COM オブジェクトを使用して AD 内の CA とテンプレートを列挙する |
adv_audit_policies | adv_audit_policies | 高度なセキュリティ監査ポリシーを取得する |
アルプ | アルプ | リストARPテーブル |
cacls | cacls [ファイルパス] | 指定されたファイルに対するユーザー権限をリストします。ワイルドカードがサポートされています |
ディレクトリ | dir [ディレクトリ] [/s] | ディレクトリ内のファイルを一覧表示します。 CobaltStrike ls コマンドとは異なり、ワイルドカード (例: "C:WindowsS*") をサポートします。 |
ドライバーシグ | ドライバーシグ | インストールされているサービスのイメージパスを列挙して、既知の AV/EDR ベンダーに対して署名証明書を確認します。 |
enum_filter_driver | enum_filter_driver [opt:コンピュータ] | フィルタードライバーを列挙する |
enumLocalSessions | enumLocalSessions | 現在接続されているユーザー セッションをローカルおよび RDP 経由で列挙します |
環境 | 環境 | プロセス環境変数をリストする |
findLoadedModule | findLoadedModule [モジュールパート] [opt:procnamepart] | *modulepart* がロードされているプロセスを検索します。オプションで *procnamepart* のみを検索します |
パスワードポリシーの取得 | get_password_policy [ホスト名] | ターゲットサーバーまたはドメインの構成されたパスワードポリシーとロックアウトを取得します |
ipconfig | ipconfig | IPv4 アドレス、ホスト名、DNS サーバーの一覧表示 |
ldapsearch | ldapsearch [クエリ] [オプション: 属性] [オプション: results_limit] [オプション: DC ホスト名または IP] [オプション: 識別名] | LDAP 検索を実行します (注: オブジェクトのすべての属性と Base64 でエンコードされた ACL が必要な場合は、属性パラメーターとして *,ntsecuritydescriptor を指定します。これは BOFHound を使用して解決できます。テスト中はすべて問題なかったように見えましたが、ページネーションが壊れる可能性があります。) |
リストされたDNS | リストされたDNS | DNS キャッシュ エントリを一覧表示します。それぞれをクエリして解決しようとします |
list_firewall_rules | list_firewall_rules | Windows ファイアウォール ルールの一覧表示 |
リストモッド | listmods [オプション: pid] | プロセス モジュール (DLL) を一覧表示します。 PID が空の場合、現在のプロセスをターゲットにします。 driverigs を補完して、プロセスが AV/EDR によって挿入されたかどうかを判断します |
リストパイプ | リストパイプ | 名前付きパイプをリストする |
ロケール | ロケール | システムのロケール言語、ロケール ID、日付、時刻、および国のリストを表示します。 |
ネットグループリスト | netGroupList [オプション: ドメイン] | デフォルトまたは指定されたドメインのグループをリストします。 |
ネットグループリストメンバー | netGroupListMembers [グループ名] [オプション: ドメイン] | デフォルトまたは指定されたドメインのグループメンバーをリストします。 |
netローカルグループリスト | netLocalGroupList [オプション: サーバー] | ローカルまたは指定したコンピュータからローカル グループを一覧表示します |
netLocalGroupListMembers | netLocalGroupListMembers [グループ名] [オプション: サーバー] | ローカルまたは指定されたコンピュータからローカル グループを一覧表示します |
netLocalGroupListMembers2 | netLocalGroupListMembers2 [オプション: グループ名] [オプション: サーバー] | BOFHound をサポートするnetLocalGroupListMembers の修正バージョン |
ネットロゲドン | netloggedon [ホスト名] | ローカルまたはリモート コンピュータにログオンしているユーザーを返す |
ネットロゲドン2 | netloggedon2 [オプション: ホスト名] | BOFHound をサポートするnetloggedon の修正バージョン |
ネットセッション | ネットセッション [opt:コンピュータ] | ローカルまたは指定されたコンピューター上のセッションを列挙します。 |
ネットセッション2 | netsession2 [opt:コンピュータ] [opt:解決方法] [opt:DNSサーバー] | BOFHound をサポートするnetsession の修正バージョン |
ネットシェア | ネットシェア [ホスト名] | ローカルまたはリモートコンピュータ上の共有を一覧表示する |
ネット統計 | ネット統計 | TCP および UDP IPv4 リストのポート |
ネットタイム | ネットタイム [ホスト名] | リモートコンピュータ上の時刻を表示する |
ネットアップ時間 | netuptime [ホスト名] | ローカルまたはリモートコンピュータの起動時間に関する情報を返します。 |
ネットユーザー | netuser [ユーザー名] [オプション: ドメイン] | 特定のユーザーに関する情報を取得します。ドメイン名が指定されている場合はドメインからプルします |
netuse_add | netuse_add [共有名] [opt:ユーザー名] [opt:パスワード] [opt:/DEVICE:デバイス名] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | 新しい接続をリモート コンピュータにバインドする |
netuse_delete | netuse_delete [デバイス||共有名] [opt:/PERSIST] [opt:/FORCE] | バインドされたデバイス/共有名を削除します] |
netuse_list | netuse_list [opt:target] | すべてのバインドされた共有リソースまたはターゲットのローカル リソースに関する情報をリストします。 |
ネットビュー | ネットビュー | 現在のドメイン内の到達可能なコンピュータを一覧表示する |
nslookup | nslookup [ホスト名] [opt:dnsサーバー] [opt:レコードタイプ] | DNS クエリを作成します。 DNS サーバーはクエリを実行するサーバーです (指定しないか、デフォルトの 0) レコード タイプは、A、AAAA、または ANY のようなものです。クラッシュが確認されているため、一部の状況が制限されます |
プローブ | プローブ [ホスト] [ポート] | 特定のポートが開いているかどうかを確認する |
退行 | regsession [オプション: ホスト名] | HKEY_USERS を列挙して、ログオンしているユーザーの SID を返します。 BOFHound対応 |
reg_query | [opt:ホスト名] [ハイブ] [パス] [opt: クエリする値] | レジストリ値をクエリするか、単一のキーを列挙します |
reg_query_recursive | [opt:ホスト名] [ハイブ] [パス] | パスから始まるキーを再帰的に列挙します |
リソース | リソース | メモリ使用量とプライマリ ハード ドライブ上の利用可能なディスク容量をリストします。 |
ルートプリント | ルートプリント | IPv4ルートの一覧表示 |
sc_enum | sc_enum [オプション:サーバー] | qc、query、qfailure、および qtriggers 情報のサービスを列挙します。 |
sc_qc | sc_qc [サービス名] [opt:server] | BOF における SC QC の導入 |
sc_q説明 | sc_qdescription [サービス名] [オプション: サーバー] | BOF での sc qdescription の実装 |
sc_qfailure | sc_qfailure [サービス名] [opt:server] | サービスに障害状態を問い合わせる |
sc_qtriggerinfo | sc_qtriggerinfo [サービス名] [opt:server] | サービスにトリガー条件を問い合わせる |
sc_query | sc_query [オプション: サービス名] [オプション: サーバー] | BOF での sc クエリの実装 |
シュタスクセナム | schtasksenum [オプション: サーバー] | ローカルまたはリモートコンピュータ上でスケジュールされたタスクを列挙する |
シュタスククエリ | schtasksquery [オプション: サーバー] [タスクパス] | ローカルまたはリモートコンピュータ上の指定されたタスクをクエリします。 |
タスクリスト | タスクリスト [オプション: サーバー] | PID、PPID、ComandLine を含む実行中のプロセスをリストします (wmi を使用) |
稼働時間 | 稼働時間 | システムの起動時間と稼働時間をリストします。 |
対セナム | vssenum [ホスト名] [opt:共有名] | 一部の Server 2012 以降のサーバー上のシャドウ コピーを列挙する |
おいおい | おいおい | リストwhoami /all |
ウィンドウリスト | ウィンドウリスト [opt:all] | 現在のユーザーセッションで表示されているウィンドウをリストします。 |
wmi_query | wmi_query クエリ [オプション: サーバー] [オプション: ネームスペース] | wmi クエリを実行し、結果を CSV 形式で表示する |
CS に reg query(v) コマンドが組み込まれている場合に reg_query を含める理由は、このコマンドがリモート コンピューターをターゲットにすることができ、キー全体を再帰的に列挙する機能があるためです。
これらのコマンドのほとんどの機能コードは、reatos プロジェクトまたは MSDN でホストされているコード サンプルから取得されました。 driversigs コードベースは https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9 から取得しています。
貢献者の下にリストされているすべての貢献者に感謝します。皆さんはそれぞれこのリポジトリに有意義な貢献をし、私と私のレビュープロセスに取り組んでくれました。私に教えてくれて、この BOF リポジトリを最高のものにするのに協力してくれた皆さんに感謝しています。
このプロジェクトではプリコンパイルされた BOF が提供されており、通常は Brew からインストールされる Mingw-w64 の最新バージョンを使用してコンパイルされます。
これらの BOF は、Windows Vista 以降のサポートを念頭に置いて作成されています。これらの古いシステムで BOF のメイン セットを使用する必要がある場合は、winxp_2003 という新しいブランチが作成されています。このブランチはサポートが少ない状態のままになります。これは機能しますが、新しいプッシュや機能が追加されるたびに更新されるわけではありません。