2018年10月16日

(更新)昨日発売開始!2018年度No1書籍と言ってもいい、簡潔で分かりやすいが決して内容のレベルは落としていない。

驚きました、このレベルの内容で
これほど分かりやすく書かれており、
かつソースもきちんとつけている。

昨日書店へ行っていなければ、このNo1を見逃したまま
過ごすことになったかも。
書籍タイトルでは、Amazonでは内容の素晴らしさが伝わらない
可能性がありますから。


まえがき
各章の概要
第1章 不正アクセス概要
1.1 情報セキュリティ大脅威
1.1.1 情報セキュリティ10大脅威とは
1.2 不正アクセス
1.2.1 サイバー空間への不正アクセスとは
1.2.2 ハッカーに関する用語
1.2.3 サイバーセキュリティ
1.2.4 攻撃ベクトル
1.2.5 ハッカーになるための知識と技術
1.3 不正アクセスのキルチェーン
1.3.1 サイバーキルチェーンとは
1.3.2 標的ホストの情報収集
1.3.3 脆弱性の調査
1.3.4 制御権の剥奪(コントロールハイジャッキング)
1.3.5 侵入後の処理
1.4 潜在的脅威
1.4.1 なぜセキュリティホールはなくならないのか?
1.4.2 ネットワーク管理コマンド
1.4.3 Windowsネットワーク
1.4.4 マルウェア技術の本来の機能

第2章 準備
2.1 必要な開発環境
2.1.1 オペレーティングシステム
2.1.2 コンパイラ
2.1.3 アセンブラ
NASM
https://www.nasm.us/

http://lfsbookja.osdn.jp/BLFS/svn-ja/general/nasm.html

https://teratail.com/questions/93287
int 21hはMS-DOSのもの、int 80hはLinuxのものです

2.1.4 デバッガ
2.1.5 仮想マシンソフト
2.2 Kali Linuxのダウンロードとインストール
2.2.1 Kali Linuxのダウンロード
2.2.2 Kali Linuxのインストール
2.2.3 仮想マシンのエクステンション
2.2.4 本書での環境
2.2.5 今後のKali Linuxのバージョンアップへの対応
2.3 gccとgdbの基本 <=10/15
2.3.1 セキュリティ機能の無効化
2.3.2 配列の中身を表示するC言語プログラムとgccとgdb
2.3.3 デバッガ(gdb)によるプログラム制御

第3章 基礎知識
3.1 プログラムの動作原理
3.1.1 コンピュータの構成
3.1.2 メモリの物理アドレス
3.1.3 仮想アドレス空間
3.1.4 カーネル空間とユーザ空間
3.1.5 プログラムが利用するメモリ領域
3.1.6 仮想アドレスの確認
3.1.7 スタック領域の使い方
3.1.8 スタックフレームの中身
3.1.9 リトルエンディアン
3.2 アセンブリの基礎
3.2.1 機械語とアセンブリ言語
3.2.2 汎用レジスタ
3.2.3 アセンブリ言語で「Hello World.」

第4章 シェルコード
4.1 不都合な文字
4.1.1 NULLバイトの排除
4.1.2 相対アドレスとジャンプ命令
4.2 シェルコマンドの実行
4.2.1 execveシステムコール
4.2.2 識別子の調べ方
4.2.3 コマンドの文字列
4.2.4 終了文字と引数のNULL
4.2.5 execveによるpwdコマンド実行
4.2.6 push命令の使い方
4.2.7 アセンブリ言語ソースコードの記述
4.2.8 実行コードの確認
4.2.9 コマンド実行
4.3 引数付きコマンドの実行
4.3.1 文字列のバイト列
4.3.2 execveによるlsコマンド実行
4.3.3 アセンブリ言語ソースコードの記述
4.3.4 実行コードの確認
4.3.5 コマンド実行

第5章 バッファオーバーフロー
5.1 バッファオーバーフローの概要
5.1.1 コントロールハイジャッキング <=10/16
5.2 脆弱性が存在するプログラム
5.2.1 プログラムの概要
5.2.2 脆弱性のあるプログラム「bypass.c」
5.2.3 bypass.cのコンパイル
5.2.4 bypassプログラムの実行
5.2.5 bypass.cの脆弱性
5.2.6 check_serial()関数のスタックフレーム
5.2.7 strcpy()関数によるバッファオーバーフロー
5.3 変数の上書き
5.3.1 デバッガでメモリの中身を見る
5.3.2 スタックフレームの確認
5.3.3 スタックを破壊して変数を上書きする
5.4 戻り番地の変更
5.4.1 戻り番地の書き換えによる制御フローの変更
5.4.2 デバッガで静的領域の中身を見る
5.4.3 戻り番地の書き換え実行

第6章 コントロールハイジャッキング
6.1 コード実行
6.1.1 戻り番地をバッファ領域の先頭アドレスへ変更
6.1.2 脆弱性のあるプログラム「bypass2.c」
6.1.3 シェルコード生成
6.1.4 デバッガでbypass2.cの中身を見る
6.1.5 バッファ領域に注入するバイト列であるペイロードの生成
6.1.6 うまく動かないときの対処法
6.2 シェルスパウン
6.2.1 シェルスパウンの準備
6.2.2 コントロールハイジャッキングの実行
6.3 NOPスレッド
6.3.1 戻り番地の書き換え時に標的アドレスの範囲を広くする
6.3.2 NOPスレッドの仕組み
6.3.3 NOPスレッドを用いたシェルコード実行
6.3.4 これまでの作業を効率よく行うために
6.4 スタック保護技術
6.4.1 カナリアの仕組み
6.4.2 データ実行防止DEP
6.4.3 アドレス空間配置のランダム化
6.4.4 その他のバッファオーバーフロー回避方法
6.5 セキュアなC言語ソースコード
6.5.1 strcpy()関数からstrncpy()関数への変更
6.5.2 strncpy()関数の問題点
6.5.3 セキュアなbypassソースコード例
資料:アスキーコード表

第7章 リモートコード実行
7.1 リモートシェル
7.1.1 リモートシェルとは
7.2 ネットワークの設定
7.2.1 仮想マシン上のネットワーク設定
7.2.2 ネットワークの準備
7.3 脆弱性のあるTCPサーバプログラム
7.3.1 ネットワーク越しのシリアル番号の確認
7.3.2 bypass_serverの脆弱性と侵入口
7.4 C言語によるTCPバインドシェル
7.4.1 リモートシェルの仕組み
7.4.2 TCPバインドシェルのC言語
7.4.3 C言語によるTCPバインドシェルの実行
7.5 アセンブリ言語によるTCPバインドシェル
7.5.1 必要なシステムコール群
7.5.2 TCPバインドシェルのアセンブリ言語
7.5.3 機械語の確認
7.5.4 C言語によるシェルコードの確認
7.6 TCPバインドの実行
7.6.1 テスト用のネットワーク環境
7.6.2 TCPサーバプログラムのデバッグ
7.6.3 スタックフレームの確認
7.6.4 リモートシェルへのアクセス
7.7 別のコンピュータからの標的ホストのハイジャック
7.7.1 環境構築と設定
7.7.2 ローカルエリアネットワークでの実験

第8章 ファイアウォールの突破
8.1 ファイアウォールとは
8.1.1 ファイアウォールの種類
8.2 パケットフィルタリングとは
8.2.1 パケットフィルタリングによるTCP接続要求の遮断
8.3 リバースTCPとは
8.3.1 リバースTCPによるファイアウォールのバイパス
8.4 C言語によるリバースTCPバインドシェル
8.4.1 リバースTCPバインドシェルのソースコード
8.4.2 リバースTCPバインドシェルの実行
8.5 アセンブリ言語によるリバースTCPバインドシェル
8.5.1 リバースTCPバインドシェルが利用するシステムコール群
8.5.2 リバースTCPバインドシェルのアセンブリ言語
8.5.3 機械語の確認
8.5.4 C言語によるシェルコードの確認
8.6 リバースTCPバインドの実行
8.6.1 テスト用のネットワーク環境
8.6.2 ペイロードの生成
8.6.3 リバースTCPバインドによるリモートシェルへのアクセス
8.7 別のコンピュータからの標的ホストのハイジャック
8.7.1 環境構築と設定
8.7.2 ローカルエリアネットワークでの実験
8.7.3 ウィルス対策ソフトによるスキャン
8.8 最後に

付録 コントロールハイジャッキング関連の技術ほか
A.1 コードインジェクション
A.2 権限昇格
A.3 Pythonを用いたエクスプロイト
A.4 ダウンロードサービスファイル
索引


◎コンピュータハイジャッキング:円
コンピュータハイジャッキング
コンピュータハイジャッキング



◆CentOS7.5、ASLRの無効化 前

# sysctl -a | grep kernel.randomize
kernel.randomize_va_space = 2
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"

◆CentOS7.5、ASLRの無効化実行

# sysctl -w kernel.randomize_va_space=0
kernel.randomize_va_space = 0

注)書籍P36では、_がありませんね。
Kali Linuxだからというわけでは無いと思いますが。




posted by アンドレアス at 07:24| Comment(0) | vi上級 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。