終わりが来る日を待っている

終わりが来る日を待っている

1年1回更新を目指す.

技術書典7にサークル側で参加しました

技術書典7

技術書典7にサークル側で参加してきました。

techbookfest.org

ブログを書く気はあまり無かったのですが、多くの方がこれまでの技術書典体験ブログを公開してくださっており、大変助かりましたので恩返しも兼ねて書きました。本当にありがとうございました。

本の内容

本の内容は、我々が作成した模擬データを解析してもらい、本を読むことで答え合わせをしていただくものでした。解析内容は不正ログイン試行となっており、攻撃を模したサンプルPCAPファイルを解析するものとなっています。
執筆した理由として、セキュリティを勉強することは難しく、さらに技術を身につけるためには経験を積むことも重要なのですが、実際のデータを解析することはその仕事につかないとなかなかできないのではないかと考えたからです。そのため、セキュリティを学習されている方の一助になればと思い作成しました。

当日訪れた方のご要望もありPDF版をBOOTHにて販売しております。 よければお買い上げください。

サークル名

サークル名は、Secure Semi です。

techbookfest.org

特にサークル名に意味はありません。本当は、覚えやすくかっこいいものにしたかったのですが、時間もセンスもありませんでした。
教材を使って学んで貰おうと考えていたので、Security + "学ぶ" 関係の単語から、あまり使われてなさそうな単語で作りました。もしかすると次に出るときは、別のサークル名にするかも......

執筆&データ作成

執筆、データの作成は、ほぼほぼ1人で行いました。とても辛かったです...
本当は会社の同期と作業を分担する予定でしたが、なぜかあまり手伝ってくれませんでした。
あとで聞いたところ、最近発売されたゲームシリーズの過去作を1作目から8作目?までやっていたので時間が無かったそうです。許されない...
共同執筆者は、きちんと書いてくれる人を選びましょう。

今回の内容では、本だけでなく解析用データも作らないといけないため、見込んでいた作業時間よりもかなりかかってしまいました。さらに解析データの不備があったりしたため、何度も解析データを作り直ししました。
ちなみに作り直した理由の一部は以下です。

  • ローカルIPアドレスをパブリックIPに変更
  • プログラムにバグがあり、Accept-Language が反映されていなかったため
  • Accept-Language を "ja" にしなければいけないところを、"jp" にしてしまったため
  • 自分がマジで使っているパスワードを誤って利用してしまったため

本はTexで書こうかなと思いましたが、書き方をすべて忘れていたので、簡単に作成できる Re:VIEW を使いました。dockerでPDFを作れるためとても便利でした。

表紙

本の表紙は知り合いのイラストレータさんに作っていただきました。
書籍内容、好きな生き物(ウミガメ)、PCAPファイルを解析するツール "Wireshark" のアイコンがサメであることなどを伝えただけで、素晴らしい表紙を作っていただきました。
さらに、一般公開用のサークルカットも作るのを忘れていたのですが、リマインド+急遽作成いただいたりとてもお世話になりました。

表紙
f:id:rancha:20190921174541j:plain:w300

裏表紙
f:id:rancha:20190921175024j:plain:w300

宣伝

自分が書いた本を強気で宣伝するのがなぜか恥ずかしかったので、あまり宣伝しませんでした。 新しい共同管理用のTwitterアカウント( @securesemi )を作成し、前日までにおこなった宣伝ツイートは、5ツイートだけでした。 それでも、多くの方にフォローやRT、いいねをしていただき、ありがとうございました。

技術書典7 当選報告

一般公開日

本の表紙が完成したとき

入稿したとき

被チェック数

被チェック数について記録をしていたので以下に貼っておきます。

f:id:rancha:20190922232219j:plain

最小限の宣伝で300に迫るほどの被チェックをいただきありがとうございました。

印刷 & ダウンロードカード

最初、150冊印刷予定だったのですが、思ったよりも反響が良かったため200冊に変更しました。
200冊印刷しようと考えた後も、伸び具合から当日までに被チェック数が200を超えることもなんとなく分かっていましたが、初執筆&実際に買ってくださるのか分からなかったので、それ以上は増やしませんでした。

印刷は、ねこのしっぽさんでお願いしました。

いろいろ印刷する上で設定があるようでしたが全然分からなかったので、ほぼほぼデフォルトにしました。

  • ぱっく名

    • ちびねこぱっく [B]
    • 本のサイズ:B5
    • 申込部数:200部
    • 綴じ口:左綴じ
    • 製本方法:無線綴じ
  • 表紙仕様

    • ホワイトポスト クリアPP加工
    • オフセット フルカラー [広域色Broad]
  • 本文仕様

    • 上質紙 90kg
    • オフセット 1色 [スミ]

また、被チェック数が印刷予定数200を超えたので、ダウンロードカードも作りました。 みなさんがどのように作っているのか分からなかったので、ブラウザ上で作成&印刷でき、さらに安いマヒトデザインさんを利用しました。

本の金額

最初、1冊1,500円で売る予定でしたが、何回も参加している友人から50ページ1,500円は爆死するだけと言われたので、1,000円に値下げしました。
自分的には、「本+PDF(電子データ)+解析データなので1,500円でも売れるかな?」と考えていましたので、アドバイスをくれた友人に感謝です。

当日

朝起きた瞬間、200冊ちゃんと売れるんだろうか?という不安に襲われましたが、何名かが反応してくださりとても励まされました。 また、何回も参加している友人からもアドバイスを貰い、精神的に楽になりました。

会場へは10時ごろに到着し、準備を行いました。
サークル参加者の入場待機列が思ったよりも長く、なかなか入れず焦りましたが、特に準備するものも無かったので入場までには間に合いました。

当日の売れ行きは以下のようになっています。
最初の2時間で114冊ほど売れており、残りの時間でゆっくり売れていきました。

時間 売れた冊数
11:00 0
12:00 66
12:10 80
12:30 100
13:00 114
14:00 142
15:00 171
16:00 187
16:20 完売

200冊印刷しましたが終了40分前に完売し、とてもホッとしました。
ただし、ラストスパートなのか16時30分以降に買いに来てくださる方がかなり多くおられました。
物理本を渡せず大変申し訳ありませんでした。

その他の反省としては、2点挙げられます。

■ かんたん後払い

1つ目は、"かんたん後払い" を導入しなかったことです。 初参加ということもあり、後払いシステムでの支払いはややこしいと思い導入しなかったのですが、思ったよりも後払いを利用されている方がおられました。個人の感覚ですが、お買い上げいただいた方の約半数に後払いができないかを聞かれました。
現金を持っておられないかんたん後払いのみのお客様も10名ほどおられましたので、大変申し訳ありませんでした。

■ ポップなどの説明

2つ目として、ポップや説明を用意しなかったことです。
説明書き用の紙などを持ってくることを忘れてしまい、当日口頭で説明しました。 解析用データ(PCAP)と電子版PDFも付いてくることがあまり伝わっていないような気がしました。

費用

かかった費用はこんな感じです。

項目 金額
参加費 7000円
USB2Ether(解析データ作成に利用) 1,498円
イーサネットケーブル×5本(解析データ作成に利用) 1795円
デザイン 15,000円
本の印刷 58,600円
ダウンロードカード 750円
100均(5点) 540円
合計 85,183円

感想

技術書典6に一般参加した際に、「こんなに並ぶなら次はサークル側として参加しよう」と思いサークル側で参加しましたが、とてもよい経験をさせていただきました。
このような機会を与えてくださり、技術書典の運営の皆様ありがとうございました。
また、本サークルの書籍をご購入いただいたみなさま、本サークルを訪れていただいたみなさまに感謝いたします。

Ghidraまとめ

国家安全保障局(NSA)がRSA Conferenceでソフトウェアリバースエンジニアリングツール 「Ghidra」を公開しました。

昨年、IDA Proを購入した後にIDA Free version7.0が発表され、
今年、IDA Proの更新をした後にGhidraが公開される。
まぁ、IDA Proには、Debugger機能があるので今後も使っていくと思いますが....
※ 追記 : IDA Free版でDebugger機能が開放されました....


Ghidraのインストール方法や詳細については、誰かが書いた記事があると思うので、そちらを参照してください。
以降は、自分用のまとめ
※ 自分用のため、あまり当てにしないでください
※ 環境はMacです。Windowsの場合は異なるかもしれません
※ Ghidraに関するtwitterや記事をまとめただけです

設定

  • Debugポートを念の為閉じる
//support/launch.sh 150行目
VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=*:${DEBUG_PORT}"
↓
VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=127.0.0.1:${DEBUG_PORT}"



  • Function Graphの表示が移動した後に縮小表示される
    • Edit -> Tool Options -> Function Graphで View Settingsを「Start Fully Zoomed In」に変更
    • Function Graphの表示が移動した後、対象の領域が拡大されて表示される


  • 特定の命令やレジスタなどをドラッグして選択したときに、ドラッグしたものと同じ命令やレジスタを強調表示させる
    • Edit -> Tool Options -> Listing Fields -> Cursor Text Highlight
    • Mouse Button To Activateを"Left"に変更する


ショートカットの変更

Macだと、Command+shift+Fに「Compare Two Functions」と「Find Reference To」の2つが割り当てられている。
使いにくいので、「Find Reference To」をXに変更(IDA Proと同じ設定)

また、「戻る」にAlt + ← が割り当てられているが、ESCAPEに変更
(ESCAPEを割り当てられているショートカットがもともとあるので、そいつを削除する)

Edit -> Tool Options -> Key BIndings

  1. ESCAPEが割り当てられているショートカットを削除
  2. Previous in History Buffer -> ESCAPEに変更
  3. Find References To -> x
  4. Find References To -> x


さらに、値の変換について、ショートカットが設定されていないため、CharやHexの変換が面倒くさい。
上と同様に設定を行う。

Key BindingsのFilterで"convert"と入力

f:id:rancha:20190319021758p:plain

適当に自分の好きなショートカットを入れていく
※ いろいろショートカットを設定しすぎると覚えきれないので、同じショートカットを設定してウィンドウで選択する方式もあり。↓は、いくつか同じショートカットを当てはめて、選択できるようにしたもの

f:id:rancha:20190319022702p:plain

tips

  • Dark Modeに変更
    • メインウィンドウ -> Edit -> Tool Options -> Tool -> Use inverted colors
      ※ Code Browserではないので注意。起動直後のプロジェクトとかPEファイルを表示しているウィンドウのEditから行う


  • Function Graphでコードブロックの表示が切れている
    • Function Graphウィンドウの右上に「Edit Code Block Fields」があり、そこをクリックするとレイアウトをいじることができる


  • Function Graph ウィンドウをCode Browserの画面の中に入れる


  • Analysis項目のEmbedded Mediaを有効化することで、ファイルに含まれる画像などを表示することができる(未確認)


  • Function Graphにコメントを表示させる
    • Function Graphウィンドウの右上「Edit Code Block Fields」
    • Instruction/Data を選択し、その後、カラム上で右クリック -> Add Field -> Post Comment



  • Switchの解釈がバグっている
    1. From Window -> Script Manager でSwitchOverride.javaを選択
    2. CodeBrowser画面でjumpを目印にswitch文の始まりを選択
    3. scriptを実行する


解析記事など



  • Stuxnetの解析

www.youtube.com


  • メイプルストーリの解析?

www.youtube.com

情報元

twitter.com

twitter.com

ghidra-sre.org

解析環境の整備

環境構築しようとした理由

  • 引っ越し準備で忙しく、なかなか解析する時間がないのですが、解析環境を作ってました

  • 解析環境を作ろうとした理由

    • MacBook Proの処理能力やディスク容量などがきつい
    • いろいろな種類の環境を用意したい(Win7,10,ADなど)
    • (もしかしたら、ハニーポットの設置もするかも)
  • 解析環境はESXiで作ろうと思います

購入したもの

  • 購入した物品

    • MotherBoard : ASUS PRIME H370-A
    • CPU : Core i7-8700( 6 core 12 thread)
    • SSD : Samsung SSD 500GB 860EVO × 2
    • メモリ : CORSAIR Vengeance LPX CMK32GX4M2A2400C14 32GB(16GB×2枚) DDR4-2400MHz
    • 電源 : 玄人志向 KRPW-BK550W/85+
    • PCケース : CORSAIR CC-9011077-WW
  • これらのうち、メモリはヤフオクで、SSDAmazonで買いました

  • それ以外のものは秋葉原でいろいろPCショップを回ったのですが、ポイントを考えるとヨドバシが一番安かったのでヨドバシオンラインで買いました

  • これで大体140,000円くらいでした
    • もしかしたら、メモリ32GBをさらに追加して64GBにするかも
    • HDDも追加するかもしれないので、結局200,000円くらいになりそう

ESXiのインストール

  • ESXiのインストールには少し詰まりました。

  • いろいろな記事にも書かれているのですが、自作PCへのESXiインストールはNICの問題があるようです

H170-PROとi7-6700KでのESXiサーバ構築手順!

  • やることはrealtekのドライバを組み込んだISOイメージの作成です
  • ということで、やることは以下

  • 参考URL

vSphere ESXi 6でRealtek NICを動かす(ESXi-Custmizer-PS編) - 雑木林

VMware Front Experience: ESXi-Customizer-PS

  • 実行したコマンド
.\ESXi-Customizer-PS-v2.6.0.ps1 -v65 -vft -load net55-r8168

MacでのISO作成

  • 書き込むディスクの確認
    • 以下、"/dev/disk2"の場合
diskutil list
  • ディスクのアンマウント
diskutil unmountDisk /dev/disk2
fdisk -e /dev/disk2
> f 1
> write
> exit
  • ISOのマウント&書き込み
hdiutil mount ISOイメージのパス
cp -R マウントされたISOのパス マウントされたUSBデバイスのパス
# おそらく/Volumes以下にマウントされている
  • 書き換え
# ISOLINUX.CFG
APPEND -c boot.cfg -p 1
  • 名前変更
mv ISOLINUX.CFG SYSLINUX.CFG

インストール

  • UEFIでintelVTXをenableするのを忘れずに
  • あとはインストールだけ

  • 引っかかったこと

    • UEFIでRAID0を組んだけれども、UEFIによるRAIDをESXiは認識しないらしい
    • ソフトウェアRAIDのため
      • 結局、SSDを2つ購入したけれども、諦めて別々に使っている(:_;)
      • どうにかするには、RAID Controllerを購入するしかない

ESXiの操作

GIAC Reverse Engineering Malware

SANSって知っていますか?

www.sans.org

情報セキュリティ分野に特化した教育機関です。

毎年、ピックアップされたいくつかの講義が日本で行われており、受講者は一週間でそれぞれのセキュリティ技術を学びます。

SANS JAPAN

どのような講義があるのか、もしくはどこで開催されるのかについては、以下で確認できます。

www.sans.org

私は、昨年の10月に「FOR610: Reverse-Engineering Malware: Malware Analysis Tools and Techniques」 を受講しました。

この講義はマルウェア解析をテーマとした研修です。

具体的な授業内容については以下で確認してもらうのがいいと思います。

FORENSICS 610|SANS JAPAN

講義自体もなかなかなお値段するのですが、資格もよいお値段になっています。

この資格試験は、研修を受講後4ヶ月以内にテストを受ける必要があるのですが、3/4(日)が終了日でした。

そのため、東京のとある駅前テストセンターは、同時期にさまざまな講義をうけた人たちが試験を受けていました。

(試験はテキスト持ちこみ可なのですぐに受けている人が分かる)

無事に合格できましたが、マルウェア解析の入り口に立つことができただけなので、 これから精進していこうと思います。

IDA Pro Free v7.0

IDA Pro Free 7.0

第三回目にして悲しいお知らせ。

まさかのIDA Pro Freeがリニューアル。

しかも、最新のバージョン7.0。

32bitも64bitも解析できるし、Windows版だけじゃなくMac版やLinux版も用意。神かよ。

ただし、IDApythonが使えないことやDebuggerが使えない制限はある。

IDA Pro 使い方メモ

まずはIDA Proのショートカットなどについてまとめておく。

足りていなかったり、こうしたらいいよって言うのがあったら教えて欲しい。

参考にした資料

最初に設定する項目

はじめにチェックを入れるべき設定

  • optionタブ
    • General -> Disassembly -> Display disassembly line parts

f:id:rancha:20180203114919p:plain:w300

項目としては、5つある

  • Line prefix
    • グラフビューでそれぞれの命令にPrefixを表示する
  • Stack pointer
    • データが積まれたときにどの位置に積まれたのかを表示
  • Comments
    • コメント
  • Repeatable comments
    • 同じ関数などが別の場所で呼ばれているとき、その場所にもコメントを挿入する
  • Auto comments
    • いろいろな場所にcommentが自動でつけられる

この5つの項目のうち、Auto Comments以外の4つの項目にチェックを入れておく。Auto Commentsにつけない理由は、あまりにコメントがつけられすぎて邪魔に感じたから。

これらの項目のうち、特に重要なのがLine Prefix。

これにチェックを入れると、IDA View-Aでグラフビューモードにしたときもアドレスが表示される。そうすると、テキストとグラフを入れ替えたときにどのアドレスの命令か分かりやすくなるので、分岐・ジャンプ先のアドレスがどのくらい離れているのか分かりやすい。

(そもそもテキストビューなら、分岐・ジャンプしたときにどのくらい離れているのかすぐ分かるが...)

チェック前

f:id:rancha:20180203115058p:plain:w300

チェック後

f:id:rancha:20180203115103p:plain:w300

分かりやすい!!

ショートカット

よく使う基本的なショートカット

キー 内容
x 関数や文字列などがどこで参照されているのか、その一覧を表示する
Enter その関数や文字列のアドレスに移動する
esc 前のところに戻る
スペース IDA View-A のテキストビューとグラフビューの入れ替え

Enterとescを使い関数の階層を移動しながら解析をすすめるかんじ。 基本、上4つを抑えておけばいい。

"x"は参照されている場所を知りたいときに行う。 無料版では項目一個分の幅でウィンドウが表示されるため、複数箇所で参照されている場合、2つめ以降の参照箇所見逃しや"x"を押すたびにウィンドウの調整が必要になる。 有料版ではきちんと大きめのウィンドウで表示される。

IDAの表示変更

IDAはデータがどういう意図のものなのか識別できないため、ときどき表示を間違える。そのときは、ユーザ側で表示を変えてやる必要がある。また、解析を行ったときには、コメントを残すことで、次回解析するときに続きからできるようにする。

  • 怪しい部分を見つけたとき

    • とりあえず以下をいろいろ試してみる
    • だいたい使うのは、文字列の"A"と関数にする"P"
    キー 内容
    U 選択した部分を「未定義」にする
    C 選択した部分を「コード」にする
    D 選択した部分を「データ」にする
    P 選択した部分データを「関数」にする
    A 選択した部分を「文字列」にする
    * 選択したデータを「配列」にする
  • IDAで読んだコードにコメントを残すための機能

    キー 内容
    N 関数や変数の名前を再定義する
    : コメントをつけられる
    ; リピータブルコメントをつけられる(他に同じコードを参照している場合、その場所にも反映される)
    Y 関数にプロトタイプ宣言をつける(引数名を自動的にコメントしてくれる)
  • movなどで怪しい16進数があったときに使う

    • だいたい"H"と"R"を使う
    • 分からないときは、該当箇所を選択した後に右クリック
    キー 内容
    B 16進数表示と2進数表示の切り替え
    H 16進数表示と10進数表示の切り替え
    R 16新数表示とASCII文字表示の切り替え

タブ

よく失敗するのが、タブのバツを押してウィンドウを閉じてしまうこと。 再度タブを開くには、Windowを選べばいい。もしくはショートカットキーから。

  • Output window
    • ログ出力結果
    • Alt + 0
  • Function window
    • 関数一覧
    • Alt + 1
  • IDA View-A window
    • メインとなるウインドウ
    • テキストビューとグラフビューが存在する
      • 解析者の間では、どちらが見やすいかで議論になる(らしい
    • Alt + 2
  • Strings window
    • 解析対象ファイルに含まれる文字列一覧
    • Alt + 3
  • Hex View-1
    • 解析対象ファイルの16進数表示とそのascii表示
    • Alt + 4
  • Structures
    • Alt + 5
  • Enums
    • Alt + 6
  • Imports
    • Importされている関数一覧
    • Alt + 7
  • Exports
    • Exportされている関数一覧
    • Alt + 8

追記

こんなんあった

https://www.hex-rays.com/products/ida/support/freefiles/IDA_Pro_Shortcuts.pdf

IDA Proの購入

経緯

先日、あるセキュリティイベントに参加して、そろそろ真面目に勉強してスキルを身に着けないといけないと思った。 また、いざ勉強をしよう思い、マルウェア解析、とくに静的解析を勉強しようとしたが、どのように勉強すればいいのかよく分からないのでブログにまとめてみることにした。 マルウェア解析初心者なので、レベルが低く、誤った情報を共有する可能性もあるが、暖かく見守っていただけると嬉しい。

とりあえず、決心が鈍らないようにマルウェア静的解析ツールで、必須だと思われるIDA Proを購入してみた。 思ったよりも購入するまでにいろいろ手間取ったので共有しておく。

IDA Proの購入については、2つのブログを参考にした。

ライセンスの違い

IDA Proは、Hex-Rays社によって提供されている。

2017年1月現在の最新VersionはIDA Pro 7.0.1。 無料で使えるIDA Pro FreeはVersion 5.0であり、いろいろ制限がある。自分的には、x64バイナリを扱うことができないのが大きかった。

IDA Proは3種類のライセンス体系がある。

詳しくは、ここを見るのが良い(https://www.hex-rays.com/products/ida/licenses.shtml)

  • Named License
    • 各個人に紐付くライセンス、その個人が使うなら何台にでもインストール可能
    • 個人のみ購入可能
    • 価格: $1409(2017年1月現在)
  • Computer License
    • Computerに紐づくライセンス。誰でも使うことができるが、1台のコンピュータにしか入れられないため共有PCなどにインストールする
    • 企業のみ購入可能
    • 価格: $1879(2017年1月現在)
  • Floating License
    • インストールするPCの他にライセンスを管理するサーバを用意する。
    • 誰がどのPCにインストールしても利用することができるが、1つのライセンスで同時に使えるのは1台のみ。
    • 企業のみ購入可能
    • 価格: $2819(2017年1月現在)

個人で変えるのはNamed Licenseのみなのでこれを購入する。

購入

購入は、以下URL

上記URLではログインしていないとき、IDAPRONW、IDAPROCW、IDAPROFWがある。 しかし、購入するためにカートへ入れようとアカウント登録してログインすると、IDAPRONWが消える。

なんでや...

仕方がないので、Hex-Rays社へ直接メール(sales[at]hex-rays.com)する。

以下メールのやりとり

  • 個人メール
> IDA Pro Named Licenseを購入したい
< 個人で使う? 会社で使う?
> 個人で使います
< 所属している会社を知りたいから会社からメール送ってこい
  • 会社メール
> さっきメールしてたユーザです。
  • 個人メール
> 会社メールから送ったよ
  • 会社メール
< 会社メールでもう一回返信して。
> ...
  • 個人メール
< 利用するプラットフォームと請求書を送付する住所を教えて
> Windows+住所
< 請求書送ったから、この銀行にドルで振り込んで

ということで銀行からお金を振り込もうとしたが、振込先銀行はベルギーで、 ゆうちょ銀行はベルギーにユーロ建てでお金を送金するとのこと。 一度ユーロで送ったあとに、ドルに変えることもできるが、為替などでぴったりの金額は送れないと言われてしまった。

こまったので再度メール

> クレジット払いできる?
< 3D セキュアに対応しているクレジット持ってるならできるよ
> 持ってます
< クレジット用購入リンク

参考に上げてたブログ(2つめ)で、クレジットで払ったって書いてあるから聞いてよかった。 (最初からクレジット払いを提示してくれ)

この後、IDA Proインストーラのダウンロードリンク(72時間有効)が送られてくるので、ダウンロード&実行。

IDA Pro(32bit)とIDA Pro(64bit)がインストールされた。