bashとLinuxの標準コマンドを活用したセキュリティ対策手法についての解説書。サイバーセキュリティの現場では、常にGUIの最新ツールを使えるとは限りません。CUIによるセキュリティ対策はセキュリティ技術者にとって必須の知識です。本書では、Linux/Mac/Windows環境でbashを含む標準的なLinuxのコマンドラインツール群を用いて、各種情報収集や収集した情報の解析、監視、侵入テスト(ペネトレーションテスト)など、サイバーセキュリティの具体的な手法を実践形式で説明します。
実践 bashによるサイバーセキュリティ対策
―セキュリティ技術者のためのシェルスクリプト活用術
Paul Troncone、Carl Albing 著、髙橋 基信 訳
- TOPICS
- Security
- 発行年月日
- 2020年04月
- PRINT LENGTH
- 352
- ISBN
- 978-4-87311-905-2
- 原書
- Cybersecurity Ops with bash
- FORMAT
- Print PDF EPUB
関連ファイル
目次
賞賛の声 訳者まえがき まえがき 第Ⅰ部 基本的な技術 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 考情報 用語集 索引