サイト内の現在位置

ペネトレーションツールの紹介 ~Ninja C2~

NECセキュリティブログ

2021年2月12日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの谷口です。
今回は、ペネトレーションテストツールの「Ninja C2」について紹介いたします。

Ninja C2とは

Ninja C2(new windowhttps://github.com/ahmedkhlief/Ninja)は、ahmedkhlief氏が作成したツールです。本ツールはオープンソース(※1)のC2サーバであり、レッドチーム演習での使用を想定して作成されました。SIEMやアンチウイルスソフトに検出されることなく、リモートコンピュータとActive Directoryの情報列挙を行うことが可能と説明されています。
標的のマシンにペイロードを送り込んだことを前提として使い方をご紹介いたします。

  • (※1)
    ライセンスはGPLv3です。

Ninja C2 インストール

  • GitのリポジトリからNinja C2のコピーを行います。
  • ルート直下のinstall.shに対して実行権限を付与します。
  • install.shを実行します。

Ninja C2 起動

  • インストール完了後、pythonでstart_campaign.pyを実行します。
    すると次の情報を求められるので入力を行います。
    • C2サーバ側のIPアドレスとポート番号
    • 標的がC2サーバに接続する間隔(秒数)
    • いつC2サーバを止めるか
    • SSL接続を用いるか

環境の構成図は以下の通りです。

  • pythonでNinja.pyを実行します。
    すると以下のようなスタート画面が出力されます。
    左側にCommandの一覧が載っているので状況に応じて使用します。

Ninja C2を用いた攻撃の流れ

  • Ninjaにはあらかじめ標的をコントロールするための、次のようなペイロードが付属しています。

ルート直下にpayloadsフォルダがありますので、payloadsフォルダ一式を標的のWindowsマシンへ送りこんだと仮定します。

  • Windowsで/payloads/dropper_cs.exeを実行後、Ninja C2の画面が以下のように切り替わり、標的が無事C2サーバに接続されたことが確認できます。
  • useコマンドを使用してWindowsマシンのシェルを奪います。dirコマンドを打ったところ、次の通りファイルの一覧が表示されました。
  • C2サーバに複数台端末が接続されている場合は、次のように制御した端末をuse 2で選択できます。

その他、スクリーンショットや端末情報取得、標的マシンへのファイルアップロードなど様々な操作がNinja C2側のCommandで容易に行えます。
さらに詳しい使い方やCommandについてはこちらのページをご覧ください。
new windowhttps://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/

所感

  • あらかじめペイロードが用意されていたので、作成する手間が省けた点が使いやすかったです。
  • 付属のペイロードを用いる場合、WindowsではWindows Defenderに防がれてしまうため実際のレッドチーム演習で使用する際には工夫が必要だと感じました。
    今回は送り込ませたペイロードフォルダに対して、事前にWindows Defenderで検出を除外するように設定を行いました。
  • Commandが複数用意されており、任意の操作を簡単に行える点が良かったです。C2サーバに接続されている標的マシンのシェルを1行で奪えるuse Commandは特に便利でした。
  • 2台の標的マシンがC2サーバに接続されたうえで、個別にマシンを選択できることは確認できました。しかし、複数の標的マシンに対して同時にコマンド実行はできませんでした。悪用されるのを防止するためにツールの作成者がわざと機能を制限している可能性も考えられます。

参考資料

執筆者プロフィール

谷口 太郎(たにぐち たろう)
セキュリティ技術センター リスクハンティングチーム

主にペネトレーションテスト、脆弱性診断などを担当し、
NECグループのセキュア開発・運用を推進。
趣味は創作活動とフィギュア収集。