web-dev-qa-db-ja.com

Windows 64ビットリバースTCPシェルが機能していません

Windowsマシンで実行されている64ビットバイナリにシェルコードを送信しています。このバイナリは、シェルコードをメモリの実行可能領域にコピーして実行します。

Msfvenomを使用してシェルコードを生成し、ペイロードを選択しました:windows/x64/Shell_reverse_tcp

ローカルマシンでは、netcatでポート3004をリッスンしています。

シェルコードを送信すると、リスナー側で次のようにコマンドPromptが一瞬表示され、すぐに接続が閉じられます。

listening on [any] 3004 ...
connect to [192.168.2.10] from (UNKNOWN) [192.168.2.20] 42485
Microsoft Windows [Version 10.0.17134.112]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>

C:\Users\user\Documents\netcat-win32-1.11>

接続がすぐに切断されるため、コマンドを入力する機会がありません。

注:バイナリが実行されているサーバーラボ環境にアクセスできません。私が知っているのは、そのマシンで実行されているいくつかのセキュリティソリューションがこれを妨げていることです。しかし、私はバイナリの詳細を知っており、それはシェルコードを取り、新しいメモリを割り当て、そこにコピーして実行します。

では、この場合のセキュリティソリューションをバイパスするための私のオプションは何ですか?

  1. ここでは、ポートを介してリバースシェルを取得できるため、ポートブロッキングの問題があります。問題は、接続がすぐに閉じられることです。そしてそれはネットワークの問題ではなく、サーバー側で実行されているいくつかのセキュリティソリューションがあります。それはラボ環境なので、私はそれを知っています。

  2. サーバーから応答を受信するとすぐにコマンドのリストを送信するようにnmapを構成する方法はありますか?

ありがとう

1
Neon Flash

通常、リバースシェルを動作させるために使用する最初のポートは80または443です。これは、犠牲マシンにファイアウォールが設定されていても、これらのポートは通常は機能するためです。その理由は明らかです。ポートはインターネット上のWebサイトを閲覧するために使用され、制限された構成でもポートが開かれることがあります。それらが開いていない場合は、開いているポートを確認する必要があります。これを行うには、シナリオを想定しましょう:

あなたがリバースシェルを手に入れようとしているのは、あなたが何らかのRCEを持っているからです。昇格された特権がある場合は、ファイアウォールの構成を確認し(Linuxではiptables、Windowsではnetshコマンドを使用)、必要なポートを開くことができます。

昇格された権限がない場合でも、ファイアウォール構成を読み取って、送信接続で開いているポートがあるかどうかを確認できます。ウィンドウの場合、次のようなコマンドを使用してこれを確認できます:netsh advfirewall firewall show rule dir=out name=all status=enabled。これですべての送信規則が表示され、開いているポートを検索してみることができます。

非常に奇妙な、または奇妙な制限付きアクセスがあり、ファイアウォールの構成を確認できない場合でも、「ブルートフォース」を実行して、送信接続用に開いているポートがあるかどうかを確認できます。多くのポートでリスニングする攻撃者マシンを最初に準備できます:for j in {1..1000}; do nc -lvnp $j & doneそして、攻撃者のマシンに接続しようとする犠牲マシンでループを実行できます。犠牲となるマシンがLinuxの場合、netcatを使用してbashループを作成できます。 Windowsの場合は、利用可能なソフトウェア(Windowsのnetcat、opensslなどのツールを使用している可能性があります)に依存し、マシンに接続しようとするバッチループを実行できます。次に、ローカルマシンでnetstatコマンドを起動して接続が正常に接続されているかどうかを確認し、ESTABLISHED接続のみを表示するようにフィルタリングできます。

それが役に立てば幸い。

[〜#〜]編集[〜#〜]

Netcatをどのように聞いていますか?行う nc -lnvp <port> DNSのホスト名解決(-nパラメータ)を回避するために、あなたのケースでは何らかの問題があるようです。

EDIT2

質問に対するコメントと編集内容を確認したところ、セキュリティソリューションが確立された接続をブロックしているようです。ファイアウォール関連のものとは関係ありません。おそらく、それを回避するためにペイロードをエンコードしてみることができます(実行されたときにそれをブロックするアンチウイルスである可能性があります)。そのためには、msfvenomを使用する代わりに shellter または nicorn を試すことができます。 ShellterはLinuxでwineを使用してうまく機能します。ペイロードをエンコードするソリューションは、AVを回避するのに非常に適しています。それらを試してみてください!

1
OscarAkaElvis