2014年12月21日日曜日

[Windows]netcat で リモートシェル実行を行う

netcat でリモートシェル実行を行います。

具体的にはクライアントからサーバに通信してサーバ側の cmd.exe が動くようにします。


用意すること
netcat をダウンロードします。(Windows 版の netcat 参照)
2台のマシンに netcat のプログラム nc.exe をコピーしておきます。(どこでも良いですが私の環境では C:\Toolkit\ に置いています。)

サーバ側の設定
サーバ側では netcat を Listsn モードで立ち上げます。
そして プログラム実行(cmd.exe) するようにします。

コマンドC:\> nc.exe -l -e cmd.exe -p 33999
※ポート 33999 番を使ってプロセスを立ち上げてます。


Windows Firewall の警告が出たら、プライベートネットワークのみアクセスを許可して立ち上げます。

確認コマンドC:\> netstat -an

アクティブな接続に
 TCP    0.0.0.0:33999          0.0.0.0:0              LISTENING
があることをチェックします。


IP アドレスを確認します。
確認コマンドC:\> ipconfig

マシンの IP アドレスは 192.168.2.10 となっていました。


リモートアクセスして cmd.exe を実行
ここからはクライアント側のマシンです。

それではサーバ(192.168.2.10)の 33999 番ポートへアクセスします。

コマンドC:\Toolkit\nc111nt> nc.exe 192.168.2.10 33999


1行目は 入力したコマンドです。
2行目と3行目にコマンドプロンプトのヘッダが表示されました。
そして一番下の行ではプロンプトが出ています。

今のコマンドプロンプトのマシン情報を見てみます。

コマンドC:\Toolkit\nc111nt> hostname
hostname
VMPC

hostname コマンドでホスト名を見るとサーバ側の コンピュータ名 になっています。

ipconfig で IP アドレスを引くとサーバ側の IP アドレス 192.168.2.10 となります。

コマンド
C:\Toolkit\nc111nt>whoami
whoami
vmpc\admin

whoami で現在のアカウントを見ると、サーバ側の、そして nc.exe を実行したアカウントになっています。

つまり C:\Toolkit\nc111nt> というプロンプトはサーバ側のプロンプトとなっています。
※クライアント、サーバとも、同じ場所に netcat を置いておいたため紛らわしかったけど、違う場所に入れていたらすぐ分かったかもしれないです。

これでサーバ側のシェル(cmd.exe)実行が行えました。


cmd.exe じゃなくて notepad.exe にしてみる
GUI のあるプロセスだったらどうなるでしょう?

サーバのプロセスをメモ帳にしてみます。
コマンドC:\> nc.exe -l -e notepad.exe -p 33999
※ポート 33999 番を使って notepad.exe のプロセスを立ち上げます。

そして同じ様にクライアントからサーバ(192.168.2.10)の 33999 番ポートへアクセスします。
コマンドC:\Toolkit\nc111nt> nc.exe 192.168.2.10 33999

今度はクライアント側では何も起きませんでした。

サーバ側では notepad.exe プロセスが立ち上がっていました。
ウインドウはなく、ただメモ帳のプロセスが立ち上がっているだけ。タスクマネージャから プロセスの終了 をしました。

Windows Tools のページに戻る

0 件のコメント:

コメントを投稿