出版社内容情報
コードの動きやメモリ上のスタック、データの状態などを丁寧に解説。プログラムがハッキングされる様を具体的に見える解説をする。ハッキング例題プログラムの挙動、メモリの状態を丁寧に解説
1946年に発表されたENIAC以降、情報通信技術は急速に発展し、いまではコンピュータは世界中に広まり、インターネットに接続されています。しかし、これら発展にともない、サイバー攻撃やマルウェア、インターネット犯罪の手口もより巧妙さが増しています。そのため、情報セキュリティの脅威は日に日に増しているといえます。
本書は、64ビット版Kali Linux、C言語、アセンブリ言語、gdb、gcc、nasmを主に用い、実験としてスタックガードも外すなどし、コードの動きやメモリ上のスタックやデータの状態などを丁寧に解説を行い、プログラムがハッキングされる様を具体的に見える解説としています。さらに、できるだけセキュアなプログラムコードとする方法も記していますので、安全なプログラムを目指す多くの方々の参考になります。ただし、内容的に、ある程度コンピュータアーキテクチャに精通している方々を対象にしています。
第1章 不正アクセス概要
第2章 準備
第3章 基礎知識
第4章 シェルコード
第5章 バッファオーバーフロー
第6章 コントロールハイジャッキング
第7章 リモートコード実行
第8章 ファイアウォールの突破
付録 コントロールハイジャッキング関連の技術ほか
コードインジェクション/権限昇格/Pythonを用いたエクスプロイト/ダウンロードサービスファイル
各章の概要
第1章 不正アクセス概要
不正アクセス・セキュリティの現状についておさらいをします。
第2章 準備
本書で用いるKali Linux OS、仮想環境、gcc、gdbなどについて、本書に必要なポイントを押さえて解説します。
第3章 基礎知識
プログラムの動作原理、メモリの使われ方、アセンブリについて、本書に必要な事柄を解説します。
第4章 シェルコード
脆弱性を利用して標的ホスト内で実行可能なコードの作り方について解説します。
第5章 バッファオーバーフロー
ここでは、バッファオーバーフローによるメモリの書き換えを行います。
脆弱性を含むシリアル番号チェックプログラム(bypass)を用意し、スタックガードを外してコンパイルします。特殊な文字列をbypassプログラムに引数として入力することにより、bypassプログラム中のシリアル番号のチェックのコード部分が実行されないように戻り番地を書き換えます。なお、戻り番地の書き換えには、バッファオーバーフローを利用します。
第6章 コントロールハイジャッキング
ここでは、標的ホストのシェルを実行し、自由にアクセスできるようにします。
第5章のシリアル番号のチェックプログラム内のバッファ領域を大きくしたプログラム(bypass2)を用意し、スタックガードを外してコンパイルします。また、シェルを起動する実行コード(シェルコード)を作ります。そして、シェルコードを含むバイト列を引数としてbypass2プログラムに入力することにより、bypass2プログラム内の戻り番地を、入力したシェルコードが格納されている番地に書き換え、シェルコードを実行させます。また、書き換えは、バッファオーバーフローを利用します。なお、2つのターミナルを利用し、片方を標的ホスト、もう一方を攻撃者とします。
バッファオーバーフロー回避策も解説し、bypass2プログラムをセキュアにする例も解説します。
第7章 リモートコード実行
ここでは、標的ホストのリモートシェルにアクセスし、自由に操作できるようにします。
まず、ネットワーク越し(例として、1 つのKali Linux 内でIPアドレス指定)でもバッファオーバーフローを行え、シリアル番号のチェックを回避できることを確認します。このとき、サーバ側(標的ホスト)はスタックガードを外してコンパイルしたbypass_serverプログラム、クライアント(攻撃側)はbypass_clientプログラムを使い、それぞれタ―ミナルで実行します。
次に、TCP接続によって、攻撃者側から標的ホストのリモートシェルにアクセスするためのシェルコード(TCPバインドシェル)を作ります。
そしてbypass_clientプログラムからTCPバインドシェルを含むバイト列をbypass_serverプログラムに入力することにより、標的ホスト上でTCPバインドシェルを実行させ、攻撃者側から標的ホストのリモートシェルにアクセスします。なお、bypass_serverプログラム内の戻り番地を、TCPバインドシェルが格納されている番地に書き換えますが、これもバッファオーバーフローを利用します。
さらに、標的ホストと攻撃者を異なるコンピュータとし、同じように標的ホストのリモートシェルにアクセスします。
第8章 ファイアウォールの突破
ここでは、第7章と同様のプログラムを用いて、標的ホストの前に立ちはだかるファイアウォールを突破し、標的ホストのリモートシェルにアクセスし、自由に操作できるようにします。
具体的には、上記を実現するシェルコード(リバースTCPバインドシェル)を作ります。そして、標的ホストで稼働中のbypass_serverプログラムに、攻撃者側からbypass_clientプログラムを用いリバースTCPバインドシェルを含む文字列を入力します。この入力により、bypass_serverプログラム内の戻り番地を、リバースTCPバインドシェルが格納されている番地に書き換えます(バッファオーバーフロー利用)。
また、攻撃者は自身のコンピュータ上の特定のポート番号で、標的ホストに実行させたリバースTCP
酒井和哉[サカイ カズヤ]
著・文・その他
内容説明
本書は、セキュアなシステム作りの一助となることを狙い、コンピュータをハイジャックする方法を解説します。脆弱性のあるコードを作り、不正アクセスの実験を行いますが、その扱いは慎重に願います。もちろん、できる限りセキュアなコードとする方法も記しています。
目次
第1章 不正アクセス概要
第2章 準備
第3章 基礎知識
第4章 シェルコード
第5章 バッファオーバーフロー
第6章 コントロールハイジャッキング
第7章 リモートコード実行
第8章 ファイアウォールの突破
付録 コントロールハイジャッキング関連の技術ほか
著者等紹介
酒井和哉[サカイカズヤ]
公立大学法人首都大学東京・准教授。米国オハイオ州立大学からPh.D.を取得。2014年より首都大学東京で教鞭を執る。現在の役職は准教授。ネットワークセキュリティを専門とする。IEEE Computer Society Japan Chapter Young Author Award 2016を受賞(本データはこの書籍が刊行された当時に掲載されていたものです)
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。