Nebula CloudC2侵入テストフレームワーク

Nebula CloudC2侵入テストフレームワーク

この記事では、Nebula CloudC2侵入テストフレームワークについて詳しく学習します。

Nebulaはクラウドであり、(願わくば)DevOps侵入テストフレームワークです。これは、各プロバイダーおよび各機能のモジュールで構築されています。2021年4月の時点では、AWSのみを対象としていますが、現在進行中のプロジェクトであり、GCP、Azure、Kubernetes、Docker、またはAnsible、Terraform、Chefなどの自動化エンジンをテストするために成長し続けることを願っています。

現在カバーしています:

  • S3バケット名ブルートフォース
  • IAM、EC2、S3、STS、およびラムダ列挙
  • IAM、EC2、STS、およびS3の活用
  • SSM列挙+活用
  • カスタムHTTPユーザーエージェント
  • 読み取り特権を列挙します(書き込み特権に取り組んでいます)
  • リバースシェル
  • 信用なし偵察

現在、以下をカバーする67のモジュールがあります。

  • 偵察
  • 列挙
  • エクスプロイト
  • 掃除
  • リバースシェル

インストールプロセスから始めましょう。

Docker

Dockerhubから

GithubからNebulaRepoのクローンを作成し、NebulaDockerイメージをプルします。

# git clone https://github.com/gl4ssesbo1/Nebula
# docker pull gl4ssesbo1/nebula:latest

次に、main.pyを実行します。

# cd Nebula
# docker run -v $(pwd):/app -ti gl4ssesbo1/nebula:latest main.py

Dockerイメージを削除した後でもファイルをシステムに保存できるため、-vオプションを忘れないでください。

DockerFileの使用

GithubからNebulaRepoのクローンを作成し、Dockerイメージをローカルでビルドします。

# git clone https://github.com/gl4ssesbo1/Nebula
# docker build -t nebula .

次に、main.pyを実行します。

# docker run -v Nebula:/app -ti nebula main.py

Dockerイメージを削除した後でもファイルをシステムに保存できるため、-vオプションを忘れないでください。

ポートマッピングの追加

シェルを実行する場合は、-pオプションも追加します。

# cd Nebula
# docker run -p : -v $(pwd):/app -ti gl4ssesbo1/nebula:latest main.py

システムにインストール

星雲はpython3.8でコーディングされ、python3.8と3.9でテストされています。boto3ライブラリを使用してAWSにアクセスします。インストールするには、python 3.8+をインストールし、requirements.txtから必要なライブラリをインストールするだけです。

# python3.8 -m pip install -r requirements.txt

次に、session-manager-pluginをインストールします。これはSSMモジュールに必要です。

# curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb' -o "session-manager-plugin.deb'
# dpkg -i session-manager-plugin.deb

Windowsデバイスでは、lessがインストールされていないため、https://github.com/jftuga/lessから入手しました-Windowsビルド済みのバイナリはディレクトリless_binaryに保存されます。そのディレクトリをPATH環境変数に追加するだけで問題ありません。

次に、main.pyを実行します

# python3.8 ./main.py

使用法

python3.9.exe。\ main.py -b
                -------------------------------------------------- -----------
                50 aws 0 gcp 0 azure 0 office365
                0 docker 0 kubernetes
                -------------------------------------------------- -----------
                50モジュール2クリーンアップ0検出
                41列挙型6エクスプロイト0永続性
                0リスナー0横方向の動き0検出バイパス
                0 privesc1偵察0ステージャー
                -------------------------------------------------- -----------
()()(AWS)

ヘルプ

ヘルプコマンドを実行すると、使用できるコマンドのリストが表示されます。

列挙型プライベート

一連の資格情報がある場合は、getuidを入力してユーザーを取得するか、enum_user_privsを入力して一連の資格情報の読み取りアクセス許可を確認できます。

GetUID

(テスト)()(AWS)>>> getuid

クレジットに以下の特権がない場合は、

STS:GetUserIdentity
IAM:GetUser
IAM:ListAttachedUserPolicies
IAM:GetPolicy(すべてのポリシー用)

エラーが発生します:

[*] GetUser操作の呼び出し中にエラーが発生しました(AccessDenied):ユーザー:arn:aws:iam :: 012345678912:user / user_userは実行を許可されていません:iam:GetUser on resource:user user_user

Enum_User_Privs

このコマンドは、一連の資格情報の特権の一覧表示と説明を確認します。

(テスト)()(AWS)>>> enum_user_privs

モジュール

モジュールの一覧表示

すべてのモジュールまたは特定のモジュールを一覧表示できます。

()()(AWS)>>> showmodules

そして、そのようにあなたは使うことができます:

モジュールを表示
列挙型を表示
エクスプロイトを表示
永続性を示す
privescを表示
偵察を表示する
リスナーを表示
クリーンアップを表示
検出を表示
検出バイパスを表示
横方向の動きを示す
ショーステージャー

モジュールの検索searchコマンドを使用して、特定の単語を含むモジュールを検索します。

()()(AWS)>>>検索インスタンス

モジュールの使用

モジュールを使用するには、useとモジュールの名前を入力するだけです。3つの括弧には、モジュールの名前が付けられます。

(work1)()(enum / aws_ec2_enum_instances)>>>モジュールenum / aws_iam_get_groupを使用します

オプション

オプションを使用して、モジュールに関する情報を一覧表示できます。

(work1)()(enum / aws_ec2_enum_instances)>>>オプション

オプションを設定するには、setとオプションの名前を使用します。

(work1)()(enum / aws_ec2_enum_instances)>>> set INSTANCE-ID 1234
(work1)()(enum / aws_ec2_enum_instances)>>>オプション

また、unsetを使用して、それらの設定を解除します。

(work1)()(enum / aws_ec2_enum_instances)>>> unset INSTANCE-ID

オプションを設定するには、setとオプションの名前を使用します。

(work1)()(enum / aws_ec2_enum_instances)>>> set INSTANCE-ID 1234
(work1)()(enum / aws_ec2_enum_instances)>>>オプション

また、unsetを使用して、それらの設定を解除します。

(work1)()(enum / aws_ec2_enum_instances)>>> unset INSTANCE-ID

モジュールの実行

モジュールを実行するには、クレデンシャルが必要な場合、実行に必要な権限を持つクレデンシャルのセットをインポートしておく必要があります。これは、モジュールのオプションに次のように表示されます。

Needs Credentials: True
-----------------------------

それを実行するには、runと入力するだけです。出力に応じて、ページ化されたビューが表示されるか、単に印刷されます。ページネーションは、より少ないバイナリを使用します。これは、Windowsの場合はhttps://github.com/jftuga/less-Windowsのバイナリを使用します。exeのコピーはless_binaryディレクトリにあります。出力は、ワークスペースディレクトリのファイルにも保存されます。

(work1)()(enum / aws_ec2_enum_instances)>>>実行
[*]ファイル './workspaces/work1/16_04_2021_18_16_48_ec2_enum_instances'にダンプされたコンテンツ。

資格情報

####クレデンシャルの入力Nebulaは、AccessKeyID + SecretKeyの組み合わせとAccessKeyID + SecretKey + SessionKeyの組み合わせの両方を使用して、インフラストラクチャへの認証を行うことができます。一連の資格情報を挿入するには、次を使用します。

()()(AWS)>>>クレデンシャルの設定test1
プロファイル名:test1
アクセスキーID:A ********* 2
秘密鍵ID:a **************************** 7
地域:us-west-3

セッショントークンもありますか?[y / N]
[*]クレデンシャルセット。'showcredentials'を使用してそれらを確認します。
[*]正しいクレデンシャルプロファイルを「test1」に設定します。「showcurrent-creds」を使用してチェックします。

そして、あなたはそれらを設定することを可能にするいくつかの入力を得るでしょう。クレデンシャルを入力するときに、尋ねられたときにyを入力することで、セッショントークンを追加できます。セッショントークンもありますか?[y / N]。

####クレデンシャルの使用別のクレデンシャルを使用するには、次のように入力します。

()()(AWS)>>>クレデンシャルを使用するtest1
[*]正しいクレデンシャルプロファイルを「test1」に設定します。「showcurrent-creds」を使用してチェックします。

####現在のクレデンシャルクレデンシャルを入力すると、自動的に現在のクレデンシャルになります。つまり、認証に使用するクレデンシャルです。現在の資格情報を確認するには、次を使用します。

()()(AWS)>>>現在のクレジットを表示
{{
    "プロファイル": "test1"、
    "access_key_id": "A ********* 2"、
    "secret_key": "a **************************** 7"、
    「地域」:「us-west-3」
}

####クレデンシャルの削除クレデンシャルが不要な場合は、次の方法でクレデンシャルを削除できます。

()()(AWS)>>>クレデンシャルの削除test1
クレデンシャル「test1」を削除しようとしています。本気ですか?[y / N] y

####クレデンシャルのダンプとインポートクレデンシャルをマシンに保存する場合は、次を使用できます。

()()(AWS)>>>クレデンシャルをダンプします
[*]ファイル './credentials/16_04_2021_17_37_59'にダンプされたクレデンシャル。

そして、それらはNebulaディレクトリのディレクトリクレデンシャルにダンプされた日時を含むファイルに保存されます。それらをインポートするには、次のように入力します。

()()(AWS)>>>クレデンシャルのインポート16_04_2021_17_37_59
()()(AWS)>>>クレデンシャルを表示
[
    {{
        "プロファイル": "test1"、
        "access_key_id": "A ********* 2"、
        "secret_key": "a **************************** 7"、
        「地域」:「us-west-3」
    }
]

ワークスペース

Nebulaはワークスペースを使用して、すべてのコマンドからの出力を保存します。出力は、ディレクトリワークスペースに作成されたフォルダにjsonデータとして保存されます(XMLとして保存するs3_name_fuzzerを除く)。

ワークスペースを作成する

作成するには、次のように入力します。

()()(AWS)>>>ワークスペースwork1を作成します
[*]ワークスペース 'work1'が作成されました。
[*]現在のワークスペースは「work1」に設定されています。
(work1)()(AWS)>>> ls ./workspaces


    ディレクトリ:C:\ Users \ *** \ Desktop \ Nebula \ works


モードLastWriteTime長さ名
---- ------------- ------ ----
d ----- 4/16/2021 5:42 PM作業1
-a ---- 2021年4月16日16:400__init__。py

作成されると、最初の角かっこには、作業しているワークスペースの名前が含まれます。既存のワークスペースを使用する場合は、次のように入力します。

()()(AWS)>>>ワークスペースwork1を使用
(work1)()(AWS)>>>

ワークスペースを使用する必要があるため、現在使用していない場合でも、モジュールの実行中に、ランダムな名前で作成するか、カスタム名で作成するように求められます。

()()(enum / aws_ec2_enum_instances)>>>実行
ワークスペースが構成されていません。ワークステーション「qxryiuct」が作成されます。本気ですか?[y / N] n
[*]最初に「createworkstation」を使用してワークステーションを作成します。
()()(enum / aws_ec2_enum_instances)>>>

ワークスペースを一覧表示する

ワークスペースのリストを取得するには、次を使用します。

(work1)()(enum / aws_ec2_enum_instances)>>>ワークスペースを表示
-----------------------------------
ワークスペース:
-----------------------------------
work1

(work1)()(enum / aws_ec2_enum_instances)>>>

ワークスペースを削除する

ワークスペースを削除するには、次のように入力します。

()()(AWS)>>>ワークスペースwork1を削除します
[*]ワークスペースを削除してもよろしいですか?[y / N] y
()()(AWS)>>>ワークスペースを表示
-----------------------------------
ワークスペース:
-----------------------------------

()()(AWS)>>>

リバースシェル

リバースシェルを作成するには、ステージャーを作成してリスナーを実行する必要があります。この機能を使用するには、Nebulaをルートとして実行する必要があります(ポートを開くため)。

ステージャー

ステージャーを生成するには、ステージャーでモジュールを使用します。

()()(AWS)>>>モジュールstager / aws_python_tcpを使用
()()(stager / aws_python_tcp)>>>オプション

記入するオプションは次のとおりです。

  • ホスト:C2サーバーのIPまたはドメイン
  • ポート:C2サーバーポート
  • 形式:現在、Pythonrawファイルとelfバイナリのみをサポートしています
  • コールバック時間:セッションがコールバックする必要がある秒単位の時間。現在のセッションが起動していても、サーバーがクラッシュしたり閉じたりしても、マシンへのアクセスが失われないように、コールバックします。
  • 出力ファイル名:出力ファイルの名前。

モジュールを実行すると、。/ワークスペース/ワークスペース名/ステージャー名に保存されたステージャーが生成されます

リスナー

リスナーはシンプルです。ホスト(デフォルトでは0.0.0.0に設定)とポートを構成するだけで、サーバーが作成されます。リスナーを実行するには、Nebulaをrootとして実行する必要があります。

()()(stager / aws_python_tcp)>>>モジュールリスナーを使用/ aws_python_tcp_listener
()()(listeners / aws_python_tcp_listener)>>>オプション

ユーザーエージェント

ユーザーエージェントは、Linux、Windows、またはカスタムとして設定できます。それらを表示するには、showを使用します。

()()(AWS)>>> set user-agent linux
ユーザーエージェント:Boto3 / 1.9.89 Python / 3.8.1 Linux /4.1.2-34-genericが設定されました
()()(AWS)>>> show user-agent
[*]ユーザーエージェントは次のとおりです。Boto3/ 1.9.89 Python / 3.8.1 Linux /4.1.2-34-generic
()()(AWS)>>>ユーザーエージェントウィンドウを設定する
ユーザーエージェント:Boto3 / 1.7.48 Python / 3.9.1 Windows / 7 Botocore /1.10.48が設定されました
()()(AWS)>>> show user-agent
[*]ユーザーエージェントは次のとおりです。Boto3/ 1.7.48 Python / 3.9.1 Windows / 7 Botocore / 1.10.48
()()(AWS)>>>ユーザーエージェントカスタムを設定
必要なユーザーエージェントを入力します:sth
ユーザーエージェント:sthが設定されました
()()(AWS)>>> show user-agent
[*]ユーザーエージェントは:sth
()()(AWS)>>>

ユーザーエージェントの設定を解除するには、次のように入力します。

()()(AWS)>>> unset user-agent [*]ユーザーエージェントが空に設定されています。

これには、システムのユーザーエージェントが含まれます。

高性能の専用サーバーとKVMVPSを入手してください。


PayPal料金計算機

PayPal料金計算機

PayPal料金計算機。PayPalは最も一般的に使用される支払い方法です。PayPalは個人アカウントとビジネスアカウントを提供します。料金についての明確な概要を提供します。

CentOS7にMTRレポートをインストールして実行する方法

CentOS7にMTRレポートをインストールして実行する方法

CentOS 7にMTRレポートをインストールして実行する方法を学習します。ネットワークエラーを診断して切り分けるために、Linux管理者はMTR(my traceroute)ツールを使用します。

CentOS7にGitサーバーをインストールして構成する方法

CentOS7にGitサーバーをインストールして構成する方法

CentOS7にgitサーバーをインストールして構成する方法を説明します。Gitサーバーをセットアップします。Gitは無料のオープンソースです。YUMを使用してGitをインストールするか、ダウンロードします。

あなたのウェブサイトの被リンクを生成する

あなたのウェブサイトの被リンクを生成する

この記事では、あなたのウェブサイトのバックリンクを作成できる場所を取得します。

Ubuntu20.04にiRedMailを簡単にインストールできます

Ubuntu20.04にiRedMailを簡単にインストールできます

このチュートリアルでは、Ubuntu20.04にiRedMailを簡単にインストールできることを示します。iRedMailはオープンソースのメールサーバーソリューションです。

CentOS7でOrangeScrumをセットアップする方法

CentOS7でOrangeScrumをセットアップする方法

この記事では、CentOS7でOrangeScrumをセットアップする方法を詳しく説明します。

Ubuntu20.04にXploitSPYを簡単にインストールできます

Ubuntu20.04にXploitSPYを簡単にインストールできます

この記事では、Ubuntu20.04サーバーにXploitSPYを簡単にインストールできることを説明します。XploitSPYは、Android監視スパイツールです。

CentOS8にPolrをインストールする方法

CentOS8にPolrをインストールする方法

CentOS 8にPolrをインストールする方法を示します。ApacheWebサーバー、MySQL最新バージョン、およびPHP7.4をインストールします。Polrは最新のリンク短縮サービスです。

Ubuntu20.04にIntelliJIDEAをインストールする方法

Ubuntu20.04にIntelliJIDEAをインストールする方法

この記事では、Ubuntu20.04にIntelliJIDEAをインストールする方法を詳しく説明します。IntelliJ IDEAは、統合開発環境です。コミュニティバージョン

侵入テストに役立つ7つのOSINTツール

侵入テストに役立つ7つのOSINTツール

この記事では、侵入テストに役立つ7つのOSINTツールについて詳しく説明します。