
達人のようにシェルを取得。
Shellpop はシェルを起動することに特化したツールです。このツールを使用すると、簡単かつ高度なリバースシェルやバインドシェルのコマンドを生成し、ペネトレーションテストを支援します。
Python 2.7 が必要です。
3.0+ バージョンでは動作しません。
必要な依存関係のインストール
root@kali# apt-get install python-argcomplete metasploit-framework -y
root@kali# pip install -r requirements.txt
セットアップインストール
root@kali# python setup.py install
注意: インストール後、タブ補完は端末を再起動するまで動作しません。
このツールの利用可能なすべてのオプションをすばやく一覧表示するには、--help を使用します。
root@kali# shellpop --help

利用可能なすべての Shellpop シェルを一覧表示するには、--list オプションを使用します。
root@kali# shellpop --list

Shellpop にオートコンプリート機能が追加されました。これを使用するには、--number や (--reverse または --bind) を気にせず、--payload 引数だけを使用してください。以下の画像のように:

時間を無駄にしないでください。このツールは時間を無駄にしないことを目的としています。生成されたすべてのペイロードに対して --clip オプションを使用すると、自動的にクリップボードにコピーされます。
このプログラムには、バインドシェルとリバースシェルの 2 種類のペイロードがあります。
リバースシェルは、攻撃側のマシンを「サーバー」として使用します。このタイプのペイロードでは、--host と --port の両方を自分のマシンに向けて指定する必要があります。ハンドラーを設定する必要があります。
バインドシェルは、リモートホストが接続を提供します。このタイプのペイロードでは、有効なポート番号を指定した --port オプションのみが必要です。


現在、生成されたペイロードに利用可能な難読化方法は主に 2 つあります。
ペイロード内のすべての変数をランダムな名前に置き換えます。すべてのペイロードに自動的に適用されます。

ペイロードで使用される IP アドレスとポートを難読化します
@vysecurity によって考案された IPfuscation は、IP アドレスを 10 進数、8 進数、16 進数、またはそれらの組み合わせに変換しても使用できるというあまり知られていない事実を利用したものです。
ポートの難読化は、ポート番号をそのポート番号に評価される数式に置き換えることで実現します。

ここでは、生成されたペイロード内の IP アドレスは、異なる基数の組み合わせになっています。最初の部分は通常の 10 進数表記、2 番目と 3 番目の部分は 2 と 3 を 8 進数に変換し、ランダムなゼロをパディングとして追加、4 番目の部分は 4 を 16 進数で表し、同様にいくつかのゼロをパディングしています。IP アドレスの各部分で使用する基数の選択はランダム化され、16 進数や 8 進数に使用するゼロの数もランダム化されています。
ポートは、443 を 443 に評価される式に置き換えることで難読化されます。この式もランダムに生成されます。
IPfuscation はオプションですが、ランダム変数難読化はすべてのペイロードに自動的に適用されるようになりました。ペイロードのサイズが実際に問題になる場合は、--obfuscate-small オプションを指定すると、難読化によるサイズ増加を最小限に抑えることができます。このオプションを使用すると、変数名、IP アドレス、ポート番号が大幅に短くなります。

エンコーダーは、Shellpop ペイロードの生成時に使用できる特別なオプションです。
現在、単独または同時に適用できるエンコード方法は 3 つあります。
ランダムな数値キー(1~255)を使用してペイロードを難読化し、復号スタブを追加して復号します。
ペイロードデータに単純な Base64 エンコードを適用し、復号スタブを追加して復号します。
最終的なペイロードに単純な URL エンコードを適用します。






ハンドラーは、着信接続を受け入れるためのソケットを提供したり、シェルを確立するためにサーバーエンドポイントに自身で接続したりする動作を「処理」するメカニズムです。
現在、以下の TCP ハンドラーがサポートされています。
つまり、すべての TCP シェルは、コマンドライン引数に --handler オプションを追加できます。これにより、オペレーターが自分でハンドラー(おそらく ncat や nc)を起動する必要がなくなります。

この機能は、このツールを使用する多くの人から広く要望されていました。0.3.6 以降、ハンドラーはデフォルトで Metasploit Framework を使用してシェルを着地させるため、すべての Shellpop シェルを Meterpreter にアップグレードすることが技術的に可能になりました。

ステージャーは、ペイロードをステージに分割して提供するメカニズムです。ペイロードの複雑さやサイズが問題になる場合があります。そのような場合、小さなペイロードを作成し、それが大きなペイロードを要求して実行することができます。
現在、以下のステージャープロトコルがサポートされています。
ShellPop には、あらゆるシナリオに対応する以下の HTTP ステージャーセットがあります。
HTTP ステージングを使用するには、コマンドラインに --stager http を追加し、必要に応じて HTTP サーバーポートを指定する場合は --http-port フラグでポート番号を事前定義されたポートの前に設定します。

現在、シェルを着地させるために 2 つのプロトコルがサポートされています。

このコードは Andre Marques(@zc00l)とこのプロジェクトのコントリビューターによって作成されました。
この GitHub で公開された時点で一般公開されています。
このツールによって引き起こされた損害について、投稿者(作者を含む)は一切の責任を負いません。
すべてのコントリビューターに心から感謝します。