20199116 2019-2020-2「ネットワーク攻撃と防衛の実践」第8週の割り当て
序文
問題 | 答える |
---|---|
この課題はどのコースに属していますか | 「ネットワーク攻撃と防御の実践」 |
この課題の要件は何ですか | <ジョブ要件> |
このコースの私の目標は | ネットワークの攻撃と防御の知識を習得し、Linuxオペレーティングシステムのセキュリティの攻撃と防御の第8章を学ぶ |
この割り当ての特定の側面が私の目標を達成するのに役立った | Linuxの操作コマンドと仮想マシンのアプリケーションを学び、ネットワーク攻撃と防御の知識を学び、将来の研究の基礎を築く |
宿題 | 以下の通り |
その他の参考文献 | 本文の終わりを見る |
1.練習内容
1.1 Linuxオペレーティングシステムの基本フレームワークの概要
1.1.1 Linuxオペレーティングシステムの開発とステータス
- Linuxオペレーティングシステムの利点
(1)無料のオープンソースコード
(2)クロスプラットフォームハードウェアサポート
(3)豊富なソフトウェアサポート
(4)マルチユーザーマルチタスク
(5)信頼性の高いセキュリティ
(6)優れた安定性
(7)完璧なネットワーク機能
1.1.2 Linuxシステム構造
-
Linuxプロセスおよびスレッド管理メカニズム:プリエンプティブマルチユーザーマルチプロセスモードを採用
-
Linuxメモリ管理メカニズム
- 複数のプロセスが物理メモリ領域を共有できるようにする
- メモリ管理モジュールは、メモリ割り当て、メモリ再利用、要求ページング、スワップページなどのプロセスを提供します。
-
Linuxファイルシステム管理メカニズム:Linuxカーネルは仮想管理VFSメカニズムを使用します。これにより、数十の異なるタイプの論理ファイルシステムをサポートできます。
-
Linuxデバイス制御メカニズム
- Linuxカーネルでハードウェアコントローラーを処理または管理するソフトウェアは、デバイスドライバーと呼ばれます。これは、基本的に、特権のある低レベルのメモリ常駐ハードウェア制御ルーチンの共有ライブラリです。
-
Linuxネットワークメカニズム
- Linuxカーネル
- ネットワークインターフェイスは、ネットワークプロトコルスタックとネットワークドライバーに分割できます。
- ネットワークプロトコルスタックは、考えられるすべてのネットワーク伝送プロトコルを実装する責任があり、その構造は次のとおりです。
- Linuxシステムコールメカニズム
- Linuxはシステムコールインターフェイスを提供し、アプリケーションがこのインターフェイスのレイヤーを介してハードウェアデバイスやその他のシステムリソースにアクセスできるようにします
- Linuxシステムのシステムコールはソフト割り込みで実現
1.2 Linuxオペレーティングシステムのセキュリティメカニズム
1.2.1 Linux ID認証メカニズム
Linuxはマルチユーザーマルチタスクオペレーティングシステムです
-
Linuxユーザー
- rootユーザー、システムで最高の権限、オペレーティングシステムでのすべてのファイルとコマンド
- 通常のユーザーは自分のディレクトリでのみコンテンツを操作できます
- システムユーザーはシステムにログインすることはできませんが、必須であり、デーモンやapacheなどのネットワークサービスや、nobodyやftpなどの匿名でアクセスするユーザーを起動するために使用されます。
-
Linuxユーザーグループ
- 同じ特性を持つユーザーアカウントのコレクションは、システム全体のユーザー権利の管理を簡素化するために使用されます。
- Linuxユーザーグループ情報は/ etc / gshadowファイルに保存され、id -aを使用して、現在のユーザーが属するユーザーグループを照会できます。
grouppadd
コマンドでユーザーグループを追加したり、ユーザーusermod -G group_name_ user_name
を特定のグループに追加したりできます
-
Linuxローカルログインユーザー認証メカニズム:
- ユーザー認証メカニズムは、コンソールでのユーザーログインのプロセスを指します
- 基本プロセス:intyプロセスを介してgettyを起動し、複数の仮想コンソールを生成します。各コンソールは、ログインプロセスを実行して認証プロセスを実行します。認証に合格すると、ログインプロセスは対応するユーザーシェルの子プロセスをフォークし、ログインプロセスが完了します。
- ログインプロセスは、crypt()関数を使用して、ユーザーが入力したパスワードを検証します。この関数は、salt値を導入し、ユーザーのパスワードと一緒に暗号化して、暗号化されたパスワードを取得します。
-
Linuxリモートログイン認証メカニズム
- Linuxシステムは通常、リモートユーザーのログインとアクセスにSSHサービスを使用します
- SSHには2つの方法があります。1つ目はパスワードベースの認証メカニズム、2つ目は非対称のパスワードベースの認証メカニズムです。
- さらに、Linuxシステムの多数のネットワークサービスは、MD5ハッシュ、LANMAN \ NTLMハッシュアルゴリズムなど、独自のID認証メカニズムを実装しています。
-
Linux統合ID認証ミドルウェア-PAM
-
PAMの中核部分は、ライブラリー(libpam)およびPAMモジュールのコレクションです。これらは、/ lib / security /フォルダーにあるダイナミックリンクライブラリ(.so)ファイルであり、/ etc / pam.d /ディレクトリーにあるさまざまなPAMです。モジュール構成ファイル。PAMは、認証タスクに使用可能な4つのモジュールインターフェイスを提供します。
-
PAMサポート4つの管理インターフェイス:
(1)証明書の管理:ユーザー名とパスワード、ユーザーパスワード認証を受け入れ、ユーザーの秘密情報を設定する
(2)アカウント管理:指定されたアカウントは、アカウントの有効期限が切れたかどうかを確認するためにシステムにログインすることが許可されているかどうかを確認してください
( 3)パスワード管理:ユーザーパスワードの変更に使用します
(4)セッション管理:セッション管理と監査を提供します。セッションは、ユーザーが正常に認証された後に有効になります
-
1.2.2 Linuxの認証およびアクセス制御メカニズム
Linuxは、上記のVFS仮想ファイルシステムを通じて、さまざまなタイプのファイルシステムフォーマットをサポートしています。
- ファイル所有者:ファイル所有者のuidとファイル所有者のgidを使用して、ファイル所有者を示します。これは、ユーザーがファイルを作成したときに自動的に設定されます。
- ファイルアクセス権限:ファイルアクセス権限は、添付の10フラグビットによって設定されます。最初の桁はファイルの種類を示し、2〜9桁は3桁のグループにグループ化されます。グループ内の3桁は、それぞれ読み取り許可、書き込み許可、実行許可を示します。3つのグループは、所有者、すべてのグループ、およびすべてのユーザーを表します。
- 特別な実行権限:一般的な権限はSUIDまたはSGIDです。SUIDを使用すると、実行時に実行可能ファイルをオペレーターのIDからファイルの所有者に昇格できます。SGIDビットはSUIDビットに似ていますが、許可グループの形式で動作する点が異なります。
- 不適切と改善:ユーザーは、所有者、所有者のグループ、およびアクセス許可を割り当てる他のユーザーの3つのカテゴリにのみ分類できます。きめ細かなアクセス許可は不十分であり、完全なACLアクセス制御リストの設定はサポートされていません。
1.2.3 Linuxセキュリティ監査メカニズム
- 3つのログサブシステム
- 接続時間ログ:システム管理者は、誰がいつシステムにログインしたかを追跡できます
- プロセス統計ログ:各プロセスのレコードを書き込みます。目的は、システムの基本的なサービスのコマンド使用統計を提供することです
- エラーログ
1.3 Linuxシステムのリモート攻撃と防御技術
1.3.1 Linuxリモートパスワード推測攻撃
- Linuxシステムは、主にtelnet、rogin、rsh、SSHプロトコルのネットワークリモートコントロールをサポートしており、これらのプロトコルはリモートユーザーのIDを認証します。
- 前述のサービスを使用してユーザーアカウント名を傍受するか、パスワード推測にデフォルトの内部アカウントユーザー名を使用します。
- 通常、弱いパスワードを持つアカウントの場合。
- SSHネットワークサービスに加えて、アカウントシステムおよびID認証メカニズム(HTTP / HTTPSやFTPなど)に使用されるネットワークサービスを推測することもできます。
- パスワードを推測するための一般的なツールは次のとおりです。Brutus、THC Hydra、Cain、Abelおよびその他のツール。
- リモートパスワード推測技術に対する防御
- root特権アカウントを使用する代わりに、各ユーザーが独自の有効なアカウントとパスワードを持っていることを確認してください
- 特権アカウントはリモート直接ログインを避け、ローカルでのみログインする必要があります
- パスワードは、文字、数字、句読点を含めて8文字以上にする必要があります
- 複数の認証失敗を記録し、複数の無効なログイン後に切断する
- 自分でログインするすべてのシステムで同じパスワードを使用しないでください
- パスワードを書き留めないでください
- 公開鍵証明書に基づくID認証メカニズムを使用する
- ネットワークサービスのデフォルトポートを変更する
1.3.2ネットワークサービスのリモート侵入攻撃
- Linuxカーネルでのネットワークプロトコルスタック攻撃
- LAMP WEB Webサイトでのネットワークサービス攻撃
- FTP、Sambaおよびその他のファイル共有サービス
- FTPサービスは通常、TCP20とポート21を監視します。ポート21は制御コマンドの送信に使用され、ポート20はデータの送信に使用されます。
- Sambaは、Linuxおよび他のUNIXのようなオペレーティングシステムをMicrosoftのWindowsシステムのSMB / CIFSネットワークプロトコルに接続するために使用されるネットワークサービスで、TCP445ポートでリッスンします
- メール送受信サービス
- 他のネットワークサービスへの攻撃
- ネットワークサービスへのリモート侵入攻撃のセキュリティ対策
- 不要なネットワークサービスを無効にする
- より安全なネットワークプロトコルとサービスソフトウェアを選択してください
- 時間内にネットワークサービスのバージョンを更新する
- xinetd(ネットワークデーモンサービスプログラム)、ファイアウォールを使用して、Linuxネットワークサービスのネットワークアクセス制御を追加します。
- 侵入検知と緊急対応計画プロセスを確立する
1.3.3 Linuxクライアントプログラムとユーザーへの攻撃
- Linuxプラットフォームでクライアントプログラムを攻撃する
- Linuxシステムユーザーの攻撃
- ソーシャルエンジニアリングと組み合わせたシステム管理者情報を取得する
- 一部のソフトウェア配布および配布サイトをトラップし、サイトで提供されているソフトウェアをトロイの木馬化します。トロイの木馬化されたバージョンは、実行時にバックドアを導入し、権限のないユーザーがリモートでシステムのルート権限を取得できるようにします
- クライアントとユーザーの攻撃に対するセキュリティ対策
- ソーシャルエンジニアリングの知識を理解し、不正防止能力を向上させる
- 時間内にソフトウェアを更新する
- ソフトウェアをダウンロードするときは、公式のダウンロードチャネルにアクセスし、MD5を確認します
1.3.4ルーターとリスナーへの攻撃
- Linuxルーターとファイアウォールへの攻撃
- Linuxで実行されているLibpcapパケットキャプチャライブラリ、tcpdumpコマンドラインプログラム、wiresharkソフトウェア、snort侵入検知システムなどの攻撃リスナーと侵入検知器。
- ルーターやリスナーの攻撃に対する予防策
- ネットワーク管理者はセキュリティ意識を高め、ベンダーのセキュリティ脅威レポートに注意を払います
- 時間内のファームウェアのアップグレード
- 攻撃者の浸透侵入方法を把握し、侵入テストを実施
1.4 Linuxシステムのローカルセキュリティ攻撃と防御技術
1.4.1ローカルLinux特権の昇格
- ローカル権限昇格の一般的な方法:
(1)rootユーザーのパスワードを解読し、suまたはsudoコマンドを実行して権限を 昇格させます- / etc / shadow構成ファイルに記録されているパスワードのハッシュ値を使用してパスワードの暗号化された値を取得し、既知の暗号文を介して推測された平文をブルートフォースしてパスワードを解読します。
(2)suまたはsudoプログラムのセキュリティ脆弱性を発見して使用する - いくつかの方法でID認証メカニズムをバイパスするか、パスの設定ミスを使用して、攻撃者がファイルを作成して実行することを許可できます。
(3)ユーザーモードのSUID特権昇格の脆弱性を攻撃し、Linuxカーネルコード特権昇格の脆弱性を攻撃します。 - ユーザーモードSUIDプログラムの使用:主に、特権昇格、ローカルバッファーオーバーフロー攻撃、シンボリックリンク攻撃、競合状態攻撃、共有関数ライブラリ攻撃などのプログラムの脆弱性の使用を含みます。
(4)最後に、グローバルな書き込み可能な機密ファイルをシステムから検索できます。ディレクトリの場所で使用
- / etc / shadow構成ファイルに記録されているパスワードのハッシュ値を使用してパスワードの暗号化された値を取得し、既知の暗号文を介して推測された平文をブルートフォースしてパスワードを解読します。
- ローカル特権昇格の防止策
- ソフトウェアをインストールする際のリスクを評価する
- 時間内にサーバーをアップグレードして保守する
- 安全な設定システム、強力なパスワードを設定
- SELinuxおよびその他のセキュリティ拡張モジュールを適用する
1.4.2 Linuxシステムで消える
- Linuxシステムを攻撃した後、攻撃者は通常、自分の侵入記録をシステム管理者に残したくないので、システムのログディレクトリをクリーンアップして、自分のアクションの痕跡を消去することがよくあります。
- テキストファイルの場合は、viやemacsなどのテキスト編集ツールを使用してログをクリーンアップします。ログインするwtmpファイルの場合は、wzap特殊ツールを使用してクリーンアップします
- また、攻撃者はシェルプログラムに入力されたコマンドの履歴をクリーンアップする必要があります。Linuxシステムの多くのシェルプログラムは、コマンドを取得して繰り返し実行する機能を提供するために実行された履歴コマンドを記録します。
1.4.3 Linuxシステムのリモートコントロールバックドアプログラム
- 主なタイプは次のとおりです。
- トロイの木馬化されたシステムプログラム:攻撃者は、元のシステムプログラム(リモートログインおよび制御ソフトウェアなど)を置き換えて、バックドア機能をいくつか備えさせます。
- コマンドラインバックドアツール:リモートコマンドラインシェルアクセスを提供します。通常、Netcatおよびその他のバックドアツールを使用してシステムで実行し、TCPポートを開いてリッスンし、リクエストを受け取った後、クライアントとやり取りするLinuxシステムシェルを返します。
- グラフィカルバックドアツール:最も一般的に使用されているのは、グラフィカルリモートコントロールのフリーソフトウェアVNCです。
1.2練習
Linuxリモート侵入攻撃に
Metaploitを使用する1)侵入テストソフトウェアとしてMetaspolitを使用して、Linuxターゲットマシン上のSambaサービスのusermap_scriptセキュリティ脆弱性を攻撃し、Linuxターゲットマシンのホストアクセス許可を取得します。実用的な手順は次のとおりです
。2)エクスプロイトを使用します。エクスプロイト/マルチ/ samba / usermap_scriptを使用して、攻撃モジュールに侵入します
。3)リモートシェルとして攻撃のPAYLOADを選択します
。4)攻撃パラメーターを設定します
。5)攻撃を実行します
。6)正しいリモートシェル
攻撃マシンkali(192.168 .200.6)、ターゲットマシンMetasploitable(192.168.200.125)
最初に、コマンドmsfconsoleから侵入ソフトウェアを起動し、コマンドuse explore / multi / samba / usermap_scriptから侵入攻撃モジュールを使用して、オプションを表示します。