バイナリ(Binary)
バイナリという用語の指す範囲は広いですが、一般的にはWindows OSにおけるEXEファイルのような、(機械語が書かれている)実行形式を指すことが多いです。ここでは、範囲を少し広げて、テキストとしては読めない中身のファイルとします。
ハックの第一歩は、バイナリを解析することです。ファイルの中身を類推する手段の一つが拡張子(ファイルの末尾についているドットの後ろについている文字列、例:docx、xlsx、zip)。拡張子ごとに対応したプログラムでファイルを開いて、読み込み・編集・保存などの作業を行います。
バイナリを開いて編集できるのがバイナリエディタ。便利なバイナリエディタはいろいろいあり、検索するとたくさん出てきます。自分に合ったものを使うといいでしょう。WindowsだとStirlingを使う人が多いようです。
例えば、ゲームのセーブデータなんかは、バイナリ解析におあつらえ向きの構造をしています。アイテムを取ったり、フラグを立てたりした後でセーブデータファイルの差分をバイナリエディタで見れば、どこがアイテムやフラグに対応していたのか知ることができます。いわゆるゲームの「改造」は、セーブデータを何らかの方法で抽出してバイナリエディタで有利な装備やアイテムを、ゲームを進めることなく手に入れる行為。
広告
パケット(Packet)
パケットは通信の単位として使用されることが多いです。データを送受信するときにパケットと呼ぶひとまとまりにして、通信のプロトコルに載せます。パケットの中身は、プロトコルと呼ばれるお約束として書かれる手続き部分を除けば、上記のバイナリと同じ。
パケット解析やパケットエディタと呼ばれるアプリケーションは、バイナリエディタの機能を内包しています。パケットエディタとして誰でも使いやすいのはWPEですね。オンラインで楽しむゲームが増えてきた昨今では、バイナリよりもパケットの解析が主流です。
OSの脆弱性を発見するのに比べると、要求される技術力が比較的低いという事情もあります。
最近では、WPEでパケットを解析して、オンラインゲーム「ドラクエX」で低確率でしか生成できない装備を作成成功したようにパケットを編集してサーバに送信するチート行為で逮捕者が出ていました。
まあ、この程度なら私は(ドラクエXの開発側が稚拙なだけだから)どうでもいいと思うんですが、自動運転などが普及するであろう未来、車の遠隔操作がハックにより可能となるのは大きな事故につながる可能性や、テロに利用される可能性があるので無視できません。
チェックサムとパリティビット
データが本来意図したものではないかどうかを検出するために使われているのが、チェックサムとパリティビット。チェックサムはファイルやデータひとまとまりの単位で整合性をチェックするための方法です。ざっくり言ってしまうと、ファイル内の数値を合計して特定の数字で割ったときの余りがおかしくなっていないかどうかを確認しています。そのため、一部分だけ改変したバイナリは、チェックサムが合わないので破損したデータとして動かすことができません。
パリティビットもチェックサム同じで、パケットでデータを送受信するときに0か1の信号を合計したときの偶奇がそろっているかどうかを確認して、データの破損を検出します。
バイナリとパケットを解析するときには、部分的に改変したときにどのようなチェックがなされているのかを突き止めることも重要です。さらに、チェックサムを高度に暗号化する方法もありますが、初心者向け解説の域を超えるのでここでは述べません。
Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
- 作者: Jon Erickson,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 163回
- この商品を含むブログ (19件) を見る
サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
- 作者: Justin Seitz,青木一史,新井悠,一瀬小夜,岩村誠,川古谷裕平,星澤裕二
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
関連エントリ
広告