実践 bashによるサイバーセキュリティ対策

―セキュリティ技術者のためのシェルスクリプト活用術

[cover photo]
TOPICS
Security
発行年月日
PRINT LENGTH
352
ISBN
978-4-87311-905-2
原書
Cybersecurity Ops with bash
FORMAT
Print PDF EPUB
Ebook
3,630円
Ebookを購入する
Print
3,630円

bashとLinuxの標準コマンドを活用したセキュリティ対策手法についての解説書。サイバーセキュリティの現場では、常にGUIの最新ツールを使えるとは限りません。CUIによるセキュリティ対策はセキュリティ技術者にとって必須の知識です。本書では、Linux/Mac/Windows環境でbashを含む標準的なLinuxのコマンドラインツール群を用いて、各種情報収集や収集した情報の解析、監視、侵入テスト(ペネトレーションテスト)など、サイバーセキュリティの具体的な手法を実践形式で説明します。

関連ファイル

目次

賞賛の声
訳者まえがき
まえがき
 
第Ⅰ部 基本的な技術
 
1章 コマンドラインの基礎
    1.1 コマンドラインの定義
    1.2 なぜbashなのか
    1.3 コマンドラインの記載例
    1.4 LinuxやbashをWindows上で実行する
        1.4.1 Git Bash
        1.4.2 Cygwin
        1.4.3 Windows Subsystem for Linux
        1.4.4 WindowsのコマンドプロンプトとPowerShell
    1.5 コマンドラインの基礎
        1.5.1 コマンド、引数、組み込みコマンド、予約語
        1.5.2 標準入力、標準出力、標準エラー出力
        1.5.3 リダイレクトとパイプ
        1.5.4 コマンドのバックグラウンド実行
        1.5.5 コマンドラインからスクリプトへ
    1.6 まとめ
    1.7 練習問題
 
2章 bashの基礎
    2.1 出力
    2.2 変数
        2.2.1 位置パラメータ(Positional Parameter)
    2.3 入力
    2.4 条件
    2.5 ループ
    2.6 関数
        2.6.1 関数の引数
        2.6.2 関数の戻り値
    2.7 bashにおけるパターンマッチング
    2.8 初めてのスクリプト——OSタイプの検出
    2.9 まとめ
    2.10 練習問題
 
3章 正規表現の基礎
    3.1 コマンドの利用
        3.1.1 grep
        3.1.2 grepとegrep
    3.2 正規表現のメタ文字
        3.2.1 メタ文字「.」
        3.2.2 メタ文字「?」
        3.2.3 メタ文字「*」
        3.2.4 メタ文字「+」
        3.2.5 グルーピング
        3.2.6 [カッコと文字クラス
        3.2.7 後方参照
        3.2.8 量指定子
        3.2.9 アンカーと単語境界
    3.3 まとめ
    3.4 練習問題
 
4章 防御と攻撃の基礎
    4.1 サイバーセキュリティ
        4.1.1 機密性
        4.1.2 完全性
        4.1.3 可用性
        4.1.4 否認防止
        4.1.5 真正性
    4.2 攻撃のライフサイクル
        4.2.1 偵察
        4.2.2 初期攻撃
        4.2.3 橋頭堡の確立
        4.2.4 権限昇格
        4.2.5 内部偵察
        4.2.6 横移動
        4.2.7 存在の維持
        4.2.8 ミッション完了
    4.3 まとめ
 
第Ⅱ部 bashによる防御のためのセキュリティ活動

5章 データ収集
    5.1 利用するコマンド
        5.1.1 cut
        5.1.2 file
        5.1.3 head
        5.1.4 reg
        5.1.5 wevtutil
    5.2 システム情報の収集
        5.2.1 SSHによるコマンドのリモート実行
        5.2.2 Linuxにおけるログファイルの収集
        5.2.3 Windowsにおけるログファイルの収集
        5.2.4 システム情報の収集
        5.2.5 Windowsレジストリの収集
    5.3 ファイルシステム上での検索
        5.3.1 ファイル名による検索
        5.3.2 隠しファイルの検索
        5.3.3 ファイルサイズによる検索
        5.3.4 時刻による検索
        5.3.5 ファイル内容の検索
        5.3.6 ファイル形式による検索
        5.3.7 メッセージダイジェスト値による検索
    5.4 データの転送
    5.5 まとめ
    5.6 練習問題
 
6章 データ処理
    6.1 利用するコマンド
        6.1.1 awk
        6.1.2 join
        6.1.3 sed
        6.1.4 tail
        6.1.5 tr
    6.2 デリミタ付きファイルの処理
        6.2.1 デリミタ付きデータの繰り返し処理
        6.2.2 文字の位置による処理
    6.3 XMLの処理
    6.4 JSON処理
    6.5 データの集約
    6.6 まとめ
    6.7 練習問題
 
7章 データ解析
    7.1 利用するコマンド
        7.1.1 sort
        7.1.2 uniq
    7.2 Webサーバのアクセスログについて
    7.3 データのソートと並び順
        7.3.1 データの出現回数の測定
    7.4 データの合計値
    7.5 棒グラフによるデータの表示
    7.6 データ一意性の確認
    7.7 データ内の異常を検知する
    7.8 まとめ
    7.9 練習問題
 
8章 リアルタイムのログ監視
    8.1 テキストログの監視
        8.1.1 ログに基づく侵入の検知
    8.2 Windowsログの監視
    8.3 リアルタイムな棒グラフ生成
    8.4 まとめ
    8.5 練習問題
 
9章 ツール:ネットワーク監視
    9.1 利用するコマンド
        9.1.1 crontab
        9.1.2 schtasks
    9.2 ステップ1:ポートスキャナの作成
    9.3 ステップ2:前回の出力との比較
    9.4 ステップ3:自動化と通知
        9.4.1 Linuxにおけるタスクのスケジュール
        9.4.2 Windowsにおけるタスクのスケジュール
    9.5 まとめ
    9.6 練習問題

10章 ツール:ファイルシステム監視
    10.1 利用するコマンド
        10.1.1 sdiff
    10.2 ステップ1:ファイルシステムのベースライン取得
    10.3 ステップ2:ベースラインに対する変更の検知
    10.4 ステップ3:自動化と通知
    10.5 まとめ
    10.6 練習問題
 
11章 マルウェア解析
    11.1 利用するコマンド
        11.1.1 curl
        11.1.2 vi
        11.1.3 xxd
    11.2 リバースエンジニアリング
        11.2.1 16進数、10進数、2進数、ASCII間の変換
        11.2.2 xxdを用いた解析
    11.3 文字列の抽出
    11.4 VirusTotal
        11.4.1 ハッシュ値によるデータベースの検索
        11.4.2 ファイルのスキャン
        11.4.3 URL、ドメイン、IPアドレスのスキャン
    11.5 まとめ
    11.6 練習問題
 
12章 表示の整形とレポート
    12.1 利用するコマンド
        12.1.1 tput
    12.2 HTMLによる表示と印刷の整形
    12.3 ダッシュボードの作成
    12.4 まとめ
    12.5 練習問題
 
第Ⅲ部 bashによるペネトレーションテスト
 
13章 偵察
    13.1 利用するコマンド
        13.1.1 ftp
    13.2 Webサイトのクローリング
    13.3 バナーの取得
    13.4 まとめ
    13.5 練習問題
 
14章 スクリプトの難読化
    14.1 利用するコマンド
        14.1.1 base64
        14.1.2 eval
    14.2 文法の難読化
    14.3 ロジックの難読化
    14.4 暗号化
        14.4.1 暗号の基本
        14.4.2 スクリプトの暗号化
        14.4.3 ラッパーの作成
        14.4.4 独自の暗号化を行う
    14.5 まとめ
    14.6 練習問題
 
15章 ツール:コマンドライン版ファザー
    15.1 実装
    15.2 まとめ
    15.3 練習問題
 
16章 拠点確立
    16.1 利用するコマンド
        16.1.1 nc
    16.2 1行バックドア
        16.2.1 リバースSSH
        16.2.2 bashのバックドア
    16.3 カスタムのリモートアクセスツール
        16.3.1 実装
    16.4 まとめ
    16.5 練習問題
 
第Ⅳ部 bashによるセキュリティ関連操作

17章 ファイルのパーミッション
    17.1 利用するコマンド
        17.1.1 chmod
        17.1.2 chown
        17.1.3 getfacl
        17.1.4 groupadd
        17.1.5 setfacl
        17.1.6 useradd
        17.1.7 usermod
        17.1.8 icacls
        17.1.9 net
    17.2 ユーザとグループ
        17.2.1 Linuxにおけるユーザやグループの作成
        17.2.2 Windowsにおけるユーザやグループの作成
    17.3 ファイルのパーミッションとACL
        17.3.1 Linuxのファイルパーミッション
        17.3.2 Windowsのファイルパーミッション
    17.4 大量の変更
    17.5 まとめ
    17.6 練習問題
 
18章 ログの書き込み
    18.1 利用するコマンド
        18.1.1 eventcreate
        18.1.2 logger
    18.2 Windowsにおけるログ書き込み
    18.3 Linuxのログへの書き込み
    18.4 まとめ
    18.5 練習問題
 
19章 ツール:システム監視
    19.1 利用するコマンド
        19.1.1 ping
    19.2 実装
    19.3 まとめ
    19.4 練習問題
 
20章 ツール:インベントリ調査
    20.1 利用するコマンド
        20.1.1 apt
        20.1.2 dpkg
        20.1.3 wmic
        20.1.4 yum
    20.2 実装
    20.3 その他のソフトウェアの特定
    20.4 まとめ
    20.5 練習問題
 
21章 ツール:構成管理
    21.1 実装
    21.2 まとめ
    21.3 練習問題
 
22章 ツール:監査
    22.1 Have I Been Pwned
    22.2 侵害されたパスワードのチェック
    22.3 侵害されたメールアドレスの確認
        22.3.1 メールアドレスのバッチ処理
    22.4 まとめ
    22.5 練習問題
 
23章 まとめ
 
付録A bashのネットワークリダイレクション機能
    A.1 bashのリダイレクション機能拡張 /dev/{tcp|udp}/*/*
    A.2 書式
    A.3 実行結果の取得
    A.4 ネットワークリダイレクションでできることとできないこと
    A.5 本機能の使いどころ:ncやnmap等を使えない環境で、簡易的にデータ転送やネットワーク診断を行う等
    A.6 ネットワークリダイレクション機能の実装
    A.7 他のシェルでのネットワーク機能実装
 
付録B Shellshock
    B.1 Shellshock——リモートでの悪用を可能とする(可能性がある)脆弱性
        B.1.1 本脆弱性を用いることで具体的に何をされるのか
    B.2 体的な確認方法
        B.2.1 脆弱なbashでの実行結果
        B.2.2 実際にWebサーバに残るログの例
        B.2.3 実際に攻撃者が描くシナリオの例——バックドア設置、攻撃スクリプト動作、内部探索……
    B.3 まともな環境ならば今は悪用できない——ではなぜ紹介?
    B.4 弱性残存している環境は問答無用で言語道断
    B.5 考資料
 
付録C bashスクリプトのトレースオプション
    C.1 bashのトレースオプション「-x」
        C.1.1 検証用スクリプトの例
    C.2 用例1:スクリプト実行時に「bash -x [スクリプトファイル]」と指定して実行する
    C.3 用例2:シェルスクリプトの1行目のシェルエスケープ(#!/bin/bash)に-xを付加する
        C.3.1 実行結果の保存とトレース結果の保存
    C.4 意事項
        C.4.1 実行例
    C.5 考情報

用語集
索引