昨日のことと今日のこと

技術書の感想や勉強ノートみたいなノリです

iPhoneによるアクセスポイントの脆弱性の警告?

久々に帰省して、自宅のWifiに接続してみたところ、iPhoneの設定画面が警告的なものを出してきた

安全性の低いセキュリティWPAは安全性が低いとされています。WPA2パーソナル(AES)セキュリティをこのネットワークに使用するようにルーターを構成してください。

ちょっと気になったので調べてみた。

そもそもWPAとは?

過去に無線LANがそもそも利用していたWEP(Wired Equivalent Privacy)に脆弱性が発覚したため、代替として用意されたのがWAP(Wi-Fi Protected Access)というセキュリティプロトコル

WPAが利用しているTKIPが脆弱

TKIP(Temporal Key Integrity Protocol)はWPAで利用可能な暗号プロトコル。 WEPの代替として2002年に華やかにデビューした暗号プロトコルだが、2008年に攻撃方法が論文で発表されて6年の短い生涯に幕を閉じた。

TKIPの代替としてCCMP(Counter mode with Cipher-block chaining Message authentication code Protocol)*1というAESベースの暗号プロトコルを使う手もある。

対策:でどうすんの?

  • WPAのままCCMPを使う
  • WPA2を使う

私の実家では複数チャンネルの通信に対応しているらしく、その一つがセキュリティに問題があるWPAとのことだったので、 ひとまず、WPAを使っているチャンネルを止めることにした。

ちなみに:iPhoneで利用可能な無線LAN認証プロトコル

以下の5種である。

WEPは危険危険、といろいろなところで聞くのに、まだ使えるようになっているのが不思議。つーかWPA2もサポート切れよ。。。と思ったがそんな簡単な問題でもないんだろうか。セキュリティリスクが発覚したものなんか、どんどん使えなくすればいいとおもうんだけど、警告出しつつ使えるようにしているのが不思議。そういうもんなの?

*1:正式名称長過ぎ。暗号化ブロック連鎖を伴うカウンタモードメッセージ認証コードプロトコルってなんだよ

LINEのパケットを見てみた

以下の方法でLINEのパケットを調べてみた。

  • 起動後何もせず1分ほど待つ
    • (起動時などはネットワーク制御系のパケットやら、アップデートやらの邪魔なパケットが飛び交いまくるので暫く待つ)
  • WireSharkで使用中のネットワークインターフェースを指定する。
  • すぐにLINEを立ち上げる(やることは3種類)
    • 普通のメッセージを送る
    • カスタムスタンプを送る
    • 送り先で既読をつける(既読の戻りパケットが欲しい)

f:id:yuyubu:20170814001029p:plain

  • WireSharkを止め、TCPのアクセスのあるIPからLINEっぽいものをピックアップ

LINEっぽいホストをピックアップ

  • 13.32.194.153 Amazon EC2(LINEのCDN)*1
  • 203.104.142.52 LINE
  • 203.104.150.2 LINE
  • 23.45.140.69 アカマイ(LINEのCDN)

一番上は違うかも ちなみに、色分けルールもIP別に作成して解析しやすくした。 f:id:yuyubu:20170814013340p:plain

フィルタを使って通信を調べる

まずは全てのIPが含まれるフィルタ

ip.addr == 13.32.194.153 || ip.addr == 203.104.142.52 || ip.addr == 203.104.150.2 ||ip.addr ==23.45.140.69

通信の流れとしては

  • No1: 最初に23.45.140.69と一回きりの通信(後は音沙汰なし)
  • No2: 203.104.142.52と203.104.150.2を織り交ぜてチャットを実現?
  • No3: 通信の後半に13.32.194.153から大きなデータを一方的に送りつけられている

という内容。(3の終了後に2のパケットのやり取りが何度かあった)*2

23.45.140.69 アカマイ

最初に通信をしていたのがこのホスト。

TLSを使って何かを送信している

f:id:yuyubu:20170814004830p:plain

最後の行がEncrypted Alertと表示されているが、下記サイトによると、

d.hatena.ne.jp

セッションの途中やキャッシュが残っている状態でキャプチャを開始して、前述の共通鍵が入手できず通信の中身が分からないときです。さて、SSLでは通信切断時はAlertプロコトルのClose Notifyで通知します。つまりタネあかしをすると、先ほどの謎のAlertは、単なるClose Notifyのパケットです。

とのことですが、それだと自分のキャプチャ結果のClose Notifyのパケットはサーバー側から出ているように思える。(Close Notifyはサーバー側、クライアント側どちらが出しても問題ないのかな?)

通信内容としては、一通りTLSのやり取りを行った後、ホスト・クライアント双方で400バイトくらいのデータを交換している。

個人的に思った感想としては明らかにアプリケーションが送付するデータよりTLSの制御パケットの方が圧倒的に多いこと。

TLSはまだ勉強不足なのでこのへんで・・・ ※またこれ以後のサーバーも全てTLSを使っていますが、TLSに関する説明は略します。

このサーバーとの通信は、最初にちょろっとTLS経由でデータ交換をした後、音沙汰なしのため最初に必要なアクションであるログイン認証をこのサーバーを使ってやっていると予測してみる

203.104.142.52

アカマイCDNとの通信が終わった後は、LINEのサーバーとの通信が始まる。 こちらは 203.104.150.2より先に通信が始まっている。 多分これはメッセージを送付する前に送られてきた情報、つまりLINEのアプリの状態自体(受信メッセージなどはあるか)などの情報を取りに行っている処理ではないだろうか?

203.104.150.2

こちらは203.104.142.52より後に通信が始まる。 また一部接続済みのコネクションで203.104.142.52から始まるパケットのまとまりもあるので(これは既読確認のパケット?)これはメッセージのためのサーバーなのではないか?

13.32.194.153 (LIneのCDN)

13.32.194.153側からこちらのクライアント側はTLSTCPのメッセージしか送っていないが、 サーバー側から大量のパケットを受信している。 これは多分スタンプの画像データのダウンロードじゃないかな?と邪推してみる。

まとめ

完全に妄想の域を出ないけど、大体、以下のような動きになっているのではないか。

  • 13.32.194.153 Amazon(LINEのCDN)はスタンプ配布のために利用
  • 203.104.142.52 (LINEサーバー)はメッセージ送受信のために利用
  • 203.104.150.2 (LINEサーバ)はアプリケーションの情報更新のために利用
  • 23.45.140.69 アカマイ(LINEのCDN)はユーザーログインの認証のために利用

課題

やってる途中に思ったが、以下のことを試せばよかったと後悔。

  • 通知
  • 相手側からのメッセージの受信

多分もうやらないとおもうけど・・・*3

今日の収穫

  • TLSのパケットを初めてちゃんとみた。
  • Wiresharkのフィルタを覚えた
  • 色設定のやり方を覚えた(これはかなり強力だと思う)

*1:アマゾンもCDN事業やってたのか。知らなかった

*2:これは既読確認のパケットなのかな?

*3:過去史上最大に?が多いいい加減な記事になってしまった。。。

久々にパケットキャプチャをやってみた

初めてパケットキャプチャをしたのは大学2年の時で、ソケット通信のプログラムを作る課題が出た時、 自主課題としてパケットの解析結果的なのを載せるためにやった気がする。

その時はtcpdumpを使ったけど、今回はwiresharkを使う。

初日の成果でも書いてみる。

アカマイすげー

やはり前とやった時と同じく、何もやってない状態でもアカマイ、アマゾン、アップルとの通信は頻繁にやってる。

アップルはアカマイの顧客だけど、アップル以外っぽいエッジサーバーとも通信しているパケットも何度か見かけた。(LINEもアカマイを使っているというのを何処かで見た覚えがある)

TCPのハンドシェイクの確認ができた

TCPの開始・終了時のハンドシェィクは確認できた。 ちょっと意外だったのが、終了時のFIN,ACKパケットをクライアント側からではなく、サーバー側から投げられたこと。

HTMLのリクエストのための接続でしたが、サーバー側が一通りデータを送り終わった後、 「もう終わったから接続切りますね〜」的な切断をサーバー側から始めたのだろうか?通常解説書などでは、常にクライアント側からFIN,ACKパケットを送るような図になっていると思うのだが。。。

まだこの辺は知識が薄いので何が起こっているか不明。

動画サイトはUDP通信を利用していない?

  • youtube
  • youtube live
  • ニコニコ
  • twitch などとのパケットをキャプチャしてみたが、 UDPは使われていなかった。

動画サイトとの通信は基本UDPでやっていると思っていたのでちょっと驚き。 ネットで調べてみたら、パケットキャプチャ初心者が通る通過儀礼的なものらしいw (このことに関する質問などが山のように見つかる。)

stackoverflow.com

stackoverflow.com

teratail.com

ちなみに手元のアプリケーションでUDPが確認できたのはFaceTime(ビデオチャット)のみでした。

流れる情報が多すぎる。

リアルタイムのパケットを眺めているとオメーはツイッターの人気タグかよ。ってくらいの勢いでパケットが流れる。 まぁTCPのハンドシェィクだけで7回もパケット流れるわけですし。 プロトコルTCPだけでなく多種多様なものが流れている。(NBNS,SSDP,DBなんとかは初見)

またIPv6の通信が結構行われている。ただしHTMLとの通信は確認できる範囲では全てipv4だった。 確かipv6でHTTP通信をするには、クライアント側にしかるべき設定をしてからipv6ように用意されたサイトにアクセスする必要があったような気がする。

ipv6を使ったhttp通信のキャプチャも今後挑戦してみたい。

まぁわからないことだらけだけど、初日はこんなもん、ということで。

便利なサイト一覧

キャプチャ中に頼りになったサイトでも貼っておく

MACアドレスのベンダーアドレスを調べる

mac.uic.jp

基数変換

2進数、8進数、10進数、16進数相互変換ツール

今後の課題

  • 送付データの詳細の確認
  • Window制御
  • ipv6のHTTP通信
  • フィルタを工夫してLINE等特定アプリケーションのキャプチャ
  • バカハブどプロミスキャスモードを利用した他ディバイスへのパケットのキャプチャ

最近は資格対策本も電子書籍

ネットワークスペシャリストの参考書を買った。

ネスペの基礎力 ?プラス20点の午後対策

ネスペの基礎力 ?プラス20点の午後対策

驚くべきは、電子書籍として出版されているだけでなく、きちんとリフロー版になっていること。 部数の少なさそうな雑誌などは、明らかに自炊をしたような跡がある状態で電子書籍として売っているが、 リフロー版で売っている点に驚いた。

PDFやスキャナーで取り込んだ形式の本が多いが、Amazonや出版社にはリフロー版の出版を頑張って欲しい。

IEEEなどの標準化周りの話

雑談でIEEEの話になった時、 ネットワークの規格のことでは?と言われ ぼんやりと、標準化をやっている団体、ということは知っていたが、 詳しく知っているわけではないので特に説明することができなかった。

IEEEとは?

The Institute of Electrical and Electronics Engineers, Incの略。 電気工学・電子工学技術の学会。 標準化がメインの活動というわけではなく、普通の学会同様、 論文の査読や賞の付与も行っている。(むしろこっちがメイン?)

IEEE802シリーズ:ネットワークの規格

※ちなみに、3GPやLTE等、日本の携帯回線でよく見る企画は3GPPが標準化を行っている。

IEEE754:浮動小数点計算の標準規格

浮動小数点の計算誤差などの話の時によく見る。 現在ほとんどのコンピュータはこの方式を採用している。

IEEE829:テストドキュメントの標準化

テストの本を読んでいるときに目にしました。

他よく使う技術の標準化等

身近な技術の標準化を調べたが、IEEEがかかわっているものは意外と少ない。 (インフラ屋とかならもっと身近な存在なのかな?)

ISOでの仕様策定は非常に時間がかかるらしい。 IETF:RFCで緩やかに決まっていく。(ネット時代らしい標準化の在り方?)

*1:WiFiの登場は、WEPのセキリティ代替手段(WAP)を普及させる必要があったからではないだろうか?WiFiの必須要件としてWAP2が必要とされていることからそう思う。

技術書の電子書籍の色々

よく利用する電子書籍の購入サービスを列挙してみました。

オライリー

O'Reilly Japan Ebook Store

こちらでDRMフリーのepubを購入する事ができます。 決済にpaypalを利用することができるので、クレカ番号など入れなくていいので安心です。 私はSQLアンチパターンを買いました。 古いものはあまり電子書籍化されておらず、PDFのみのものも結構多いのが玉に瑕。

オーム社

すべての書籍 | オーム社 eBook Store

情報工学の教科書などでお世話になったオーム社電子書籍を売っています。 こちらも決済にpaypal利用可能 私は達人プログラマーを買いました。 マスタリングTCP/IPもここで書いたかったけど、間違えてkindleで買っちゃった。

技術評論社

gihyo.jp

WEB+DB PRESSを出版していることで有名な技評(なぜか変換できない)の電子書籍販売サイトです。 こちらも決済にpaypal利用可能 Github入門やWEBを支える技術などを買いました。

総評

紙が好きな方も多いと思いますが、ぶ厚い書籍を何十冊もタブレットに入れて持ち歩けるのはそれだけでメリットだと思います。

結論

みんなもpaypalアカウント作ろう。

2017年上半期(1〜6月)読んだ技術書

まずは13冊読んだ内、特によかったものを3つ紹介。

達人に学ぶ SQL徹底指南書

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

DBスペシャリスト受けるにあたって、ほしいものリストに入っているDB関連の本を片っ端から読もう、 と思い手に取った1冊です。

この本は全般的に「SQL/DBのコンセプトは集合論や述語理論につい強い影響を受けており、 そのような観点から、こういうふうなSQLを書くと効果的」という視点が一貫して語られています。

自分なりにそのような視点を少しでも吸収できたことは大きな財産です。

この本を読む前と読んだ後で、データベースを眺める目が変わったことをはっきりと感じました。 自分にとってエポックメイキングな出来事でした。

私の今年上半期のベストはこれです。 紙の本で買いましたが、読み直す際にkindle版も買おうと思います。

アカマイ 知られざるインターネットの巨人

アカマイは学生時代に遊びでパケットキャプチャをした際に初めて知りました。 何もしてない状態でGoogle等よく知られた会社と通信しているのはなんとなく納得ですが、アカマイという謎の会社と通信しているのを見つけ、 怖くなって調べたのが最初の出会いでした。

世界に流れるパケットの20%がアカマイを経由しているそうですが、 一般的にその社名はほとんど知られていません。*1

誰もが世話になっているが、だれもその存在を知らない。

その奇妙なギャップから、謎の秘密結社くらいの印象でしたが、 ただ、B to Cのビジネスをほとんど行っていないというだけであり、 働き出してからは、アカマイの名はいろんなところで見聞きするようになったので 今では身近な存在という印象です。本書はそのアカマイ社をメインテーマに書かれた唯一無二の本です。

一般書っぽい売り方をしていますが、インターネットの仕組みを理解していないとアカマイについて知ることは出来ない、ということらしく、インターネットの技術的詳細に加えて、ネットワーク事業の金の流れと力関係というビジネス寄りの話も充実しています。

別に読んだネットワークの入門書にはASの説明やTTLの説明は特にありませんでしたが、 本書ではこれらも解説されていました。多分技術書に分類されませんが、 技術的なトピックを理解しながら読み進める一般書籍という位置付けだとおもいます。 あまり一般向けではないと思いますが…*2

アカマイ社は会社の設立~現在までめまぐるしいネットワーク・業界・経済の変化に振り回されながら時代を駆け抜けてきた数奇な会社であるという感想を持ちました。

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

フロリダ工科大学でjames whittaker, Cem Kaner*3らの元でテストの専門教育を受け、 マイクロソフト、SAP等のテスト業務に従事した まさにテストに特化したキャリア*4を歩んだ方によるテストの本。

テストとかセキュリティの本って硬い、つまらない等の第一印象を持ってしまいがちですが、 本書は著者のユーモアとエッセンスが詰まった素晴らしい1冊でした。

一般的にテストって苦行だとかつまらない作業だとか、 とりあえず新人に雑用と一緒にやらせとけみたいな扱いを受けている気がします。 「三度の飯よりテスト好き」な人は見たことがありません。

私見ですが、多くの人が、テストがつまらないと感じる理由は 納品のためのテスト、いわばテストのためのテストを行ってしまい、 有意義のある作業をやっていないという感情を抱いてしまうからなのではないでしょうか?。

極端な例を出すとニュースになってしまうような、ずさんな試験結果の改ざん等の担当者は 悪いことをやっている、という罪悪感の前に「なんでこんなことやらないといけないの?」という 退屈感・虚無感に襲われると思います。

少なくともこの本を読んでからは、価値のあるテスト*5を目指し、作業の改善を心がけるように成ったので、テストは退屈な作業、とは思わなくなりました。

私にとってテスト分野の最初の1冊としてこの本に出会えたことは幸福です。

読んだ本一覧

DB/SQL

  • SQL 第2版 ゼロからはじめるデータベース操作(kindle)
  • 達人に学ぶ SQL徹底指南書(紙)
  • 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ(kindle)
  • SQL実践入門(紙)
  • SQLアンチパターン(epub)

ネットワーク

  • おうちで学べるネットワークのきほん(kindle)
  • アカマイ 知られざるインターネットの巨人(kindle)
  • マスタリングTCP/IP(kindle)

一覧で見ると全13冊中電子書籍が11冊 紙が2冊とかなりの割合を電子書籍で買っています。

ちなみにepubと書いているのはkindleではなく、各出版社のサイトでpay palなどで決済できる  drmフリーなepubファイルのことです。

個人的に購入の優先度はepub > kindle > 紙ですね

*1:私の口頭アンケート調査結果による。

*2:というより普通の人はアカマイに興味を持たないと思う

*3:今読んでいる「ソフトウェアテスト293の鉄則」の著者がこの人だった。

*4:エンジニアとしてこういうキャリアパスもあるんですね

*5:ここでは価値のあるテストとは、より少ないコストでより多くのバグを発見できるものをいいます