20199318 2019-2020-2「ネットワーク攻撃と防衛実践」第8週の割り当て
1.知識を整理して要約する
1.1 Linuxオペレーティングシステムのシステム構造
プロセスとスレッド管理メカニズム:Linuxカーネルは、プリエンプティブマルチユーザーマルチプロセス(マルチプロセッシング)モード、複数プロセスの同時アクティビティを採用し、カーネルプロセス管理モジュールは、使用するハードウェアリソースのスケジューリングを担当します。スケジューリングユニットはプロセス制御ブロック(PCB)構造を維持し、カーネルスケジュールプロセススケジューリング機能は、プロセスの優先順位とCPUおよびその他のリソースに従って実行するプロセスを選択します。
メモリ管理メカニズム:Linuxメモリ管理モジュール(MM)により、複数のプロセスが物理メモリ領域を安全に共有できます。Linuxメモリ管理は仮想メモリをサポートします。32ビットのi386マシンでは、各プロセスに独立した4 GBの仮想メモリ空間があります。カーネルのコードとデータセグメントは3 GB以上の空間にマップされます。ユーザーモードコードによって要求された仮想メモリ空間0〜3 GBの範囲では、各プロセスは2セットのセグメント記述子を使用して、カーネルモードとユーザーモードのメモリ空間にそれぞれアクセスします。ユーザーモードでは、コードは3 GBを超えるアドレス空間にアクセスできません。システムコールまたは割り込みを通じて。メモリ管理モジュールは、メモリ割り当て、メモリ再利用、要求ページング、プロセスのスワップページなどのシステムコールサービスを提供します。
ファイルシステム管理メカニズム:Linuxカーネルは仮想ファイル管理VFS(仮想ファイルシステム)メカニズムを使用するため、デバイスドライバーを介して、ext2 / ext3 / ext4、vfat.ntfsなど、数十の異なるタイプの論理ファイルシステムをサポートできます。プログラムは特定のハードウェアデバイス(ディスクデバイスなど)にアクセスし、VFS仮想ファイル管理は、さまざまなファイルシステムのファイルに使用できるユーザープロセス用の一連の共通ファイルシステムコール関数(open、Close、Read、Writeなど)を提供します。統一された操作を実行します。
デバイス制御メカニズム:Linuxカーネルのハードウェアコントローラーを処理または管理するソフトウェアは、デバイスドライバーと呼ばれます。Linuxカーネルデバイスドライバーは、基本的に、特権があり、メモリに常駐する低レベルのハードウェア制御ルーチンの共有ライブラリです。
ネットワークメカニズム:Lmuコアのネットワークモジュールは、さまざまなネットワーク規格およびさまざまなネットワークシルバーウェアのドキュメントへのアクセスを提供します。
1.2 Linuxオペレーティングシステムのセキュリティメカニズム
Linux ID認証メカニズム:Linuxはマルチユーザーマルチタスクオペレーティングシステムであり、複数のロールタイプのユーザーとユーザーグループを作成してユーザーID管理を実装し、複数のユーザーがLinuxオペレーティングシステムを安全に使用できるようにします。 。
Linuxローカルログインユーザー認証メカニズム:Linuxシステムの最も基本的なユーザー認証メカニズムは、ユーザーがコンソールでログインするための認証プロセスです。基本プロセスは、initプロセスがgettyを開始する場合、何千もの仮想コンソール(tyl、tty2など)がある場合です。 。ログインがコンソールに表示されます。ユーザーがユーザーを入力すると、gettyがログインプロセスを実行し、ログイン認証プロセスに入ります。認証が成功すると、ログインプロセスは対応するユーザーShellの子プロセスをフォークします。この時点で、ログインプロセスは完了します。対応するシェルの下で作業が開始されます。
Linuxリモートログインユーザー認証メカニズム:現在、Linuxシステムは通常、リモートユーザーログインとネットワークアクセスにSSHサービスを使用しています。SSHは、ユーザーID認証メカニズムの2つの方法を提供します。最初の方法は、組み込みLinuxシステムを使用するパスワードベースの認証です。ユーザーアカウントとパスワード。リモートホストにログインできます。2番目の方法は非対称キーに基づくID認証です。これは、ユーザーが非対称キーのペアを作成し、アクセスするサーバーに公開キーを配置する必要があります。接続時に、SSHサーバーに接続するときに、クライアントソフトウェアは証明書を使用してID認証を要求するためにサーバーに要求を送信します。サーバーは要求を受信した後、要求ユーザーの公開鍵を使用して「チャレンジ」を暗号化し、それをクライアントに送信します。ソフトウェア、クライアントソフトウェアは、「質問」を受け取った後に秘密鍵を使用して復号化し、それをサーバーに送信して、非対称鍵に基づくID認証プロセスを完了することができます。非対称キーに基づくID認証メカニズムは、セッションハイジャックの中間者攻撃に効果的に対抗でき、パスワードベースの認証メカニズムよりも安全です。
Linux統合ID認証ミドルウェアPAM:Linuxは、ユーザーのIDを検証するための柔軟で標準的な方法としてPAM(Pluggable Authentcation Modules)を提供します。ダイナミックリンクライブラリとAPIの統一されたセットを提供することにより、さまざまなアプリケーションソフトウェアを提供できます3.ネットワークサービスは、システムによって提供されるサービスをサービスの認証方法から分離する統一されたID認証メカニズムを提供します。これにより、システム管理者は、サービスプログラムを変更せずに異なるサービスに対して異なる認証方法を柔軟に設定できます。スマートカードID認証メカニズムなど、システムに新しい認証方法を簡単に追加できます。システム管理者は、PAM構成ファイル(つまり、/ etc / pam.confまたは/etc/pam.d/)を使用してID認証戦略を策定します。つまり、使用するサービスと認証方法を指定します。アプリケーションサービスの開発者がサービスプログラムを渡します。 PAM APIは、認証方法の呼び出しを実装するために使用されます。PAMサービスモジュールの開発者は、PAM SPI(サービスモジュールAPI)を使用して、さまざまな認証メカニズム(従来のUNIX認証方法、Kerberos、スマートカード認証など)を使用する認証モジュールを記述します。 PAMミドルウェアに追加されたものなど:PAMコアライブラリ(libpam)は、構成ファイルを基礎として読み取り、サービスプログラムと対応する認証方法を接続して、Linuxシステム全体のさまざまなサービスにID認証サービスを提供します。
Linuxの認証およびアクセス制御メカニズム:LinuxはVFS仮想ファイルシステムを使用してさまざまなタイプのファイルシステムフォーマットをサポートし、同時にデバイスファイルタイプを通じて他のタイプのシステムリソースの管理を統合します。
Linuxセキュリティ監査メカニズム:主に3つのログサブシステムを介して実装されます。
- 接続時間ログ:複数のプログラムによって実行され、/ var / log / wtmpおよび/ var / run / utmpにレコードを書き込み、ログインおよびその他のユーザーログインプログラムはwtmpおよびutmpファイルの更新を担当し、システム管理者が誰がどこにいるかを追跡できるようにしますシステムにログインします。
- プロセス統計ログ:システムカーネルによって実行されます。プロセスが終了すると、各プロセスのプロセス統計ファイル(pacctまたはacct)にレコードが書き込まれます。プロセス統計の目的は、システムの基本サービスのコマンド使用統計を提供することです。
- エラーログは、一般的なログサービスsyslogd(8)によって実行され、さまざまなシステムデーモン、ユーザープログラム、およびカーネルが、syslogを介してファイル/ var / log /メッセージに重要なイベントを報告します。
1.2 Linuxシステムのリモート攻撃と防御技術
Linuxシステムの攻撃プロセス:
Linuxシステムに対する攻撃も、システム攻撃の統一された論理プロセスに従います。攻撃者はまずポイントを踏み、スキャンし、チェックポイントなどの技術的手段を使用してターゲットLinuxシステムに関する情報を収集し、次に攻撃者はリモートネットワークからリスニングネットワークサービスを発見しますローカルのシェルアクセス権を取得するためのセキュリティの脆弱性または構成の脆弱性。シェルのアクセス権を取得すると、攻撃者はすでにターゲットLinuxシステムに足場を築いています。適切なテクノロジーは、Linuxシステムの最高のrootユーザー権限を取得し、侵入の意図に応じて、ユーザーが望むことを何でも実行できます。
Linuxシステムへのリモートネットワーク侵入の主な方法:
- LinuxシステムのさまざまなネットワークサービスのID認証プロセスに関与するユーザーパスワードに対して推測攻撃を実行し、特定のサービスの実際の効果的なユーザーアカウントとパスワードを解読して、ユーザーのIDを偽装してシステムに侵入することを期待します。
- ネットワークサービスを監視して使用するLinuxシステムのセキュリティホールを発見し、攻撃のロードモジュールコードをターゲットサービスプロセスに挿入して実行し、攻撃者にローカルシェルへのアクセスを提供します。
- Webページのトロイの木馬を使用し、詐欺的な電子メールを送信し、トロイの木馬プログラムやその他の技術的およびソーシャルエンジニアリング手法を提供して、クライアントプログラムおよびユーザーを攻撃します。クライアントソフトウェアまたはユーザーは、悪意のあるプログラムをインストールして実行し、攻撃者にLinuxシステムを積極的に開きますゲート。
- Linuxシステムが複数のネットワークに接続するルーターとして使用されている場合、またはネットワークのスニッフィング用に「無差別モード」リスナーが実装されている場合、攻撃者が特別に構築したパケット攻撃を受け、攻撃者がアクセスする可能性があります。
- リモートパスワード推測攻撃:
主に、SSH、Telnet、FTP、HTTPなどのサービスに対するパスワード推測攻撃。攻撃対象のシステムでインターネットが直面する最も一般的な攻撃モード。これらのプロトコルは、Linuxシステムに組み込まれているユーザー名とパスワード、およびHTTPを使用します。 / HTTPS、FTP、SNMP、その他のネットワークサービスにも独自のユーザーアカウントシステムとID認証メカニズムがあり、攻撃者はローカルアクセス権を取得することもできます。
リモート侵入攻撃:
主にネットワークサービスのセキュリティの脆弱性を監視することにより、Linuxのセキュリティ脆弱性のライフサイクルにはいくつかの注目すべき機能があります。ハッカーは主にいくつかのソースコードセキュリティ監査技術と補助ツールを使用し、オープンソース、脆弱性の発見とパッチの修復により多くの場合より高速ですが、これらの脆弱性は最初から報告されていない場合があります。
ネットワークサービスへのリモート侵入攻撃に対するセキュリティ対策: - 不要なネットワークサービスをすべて無効にします。
- より安全なネットワークプロトコルとサービスソフトウェアを選択し、展開には最良のセキュリティプラクティスを使用してください。
- 時間内にネットワークサービスのバージョンを更新します。
- xinetdとファイアウォールを使用して、Linuxネットワークサービスのネットワークアクセス制御メカニズムを追加します。
- 侵入検知および緊急対応計画プロセスを確立します。
Linuxクライアントプログラムとユーザー攻撃:Linuxで最も一般的に使用されるクライアントは、Webブラウザーと電子メールクライアントにすぎません。一般に、Firefox "Firefox"ブラウザーとMozilla Foundationが提供するThunderbird "Thunderbird"電子メールクライアントです。
Linuxルーターとリスナーの攻撃:以前にルーティングとパケットフィルタリングを実装していたnetfilter / iptablesや、ネットワーク侵入の検出と防止のためのSnortなど、ルーティングまたはパケットスニッフィング時に特別なパケット攻撃が発生しました。
Attack Listener&Intrusion Detector:Linuxシステムに監視と侵入検知を実装するために使用される主流のオープンソースソフトウェアには、Libpcapパケットキャプチャライブラリ、tcpdumpコマンドラインプログラム、Wiresharkネットワーク監視とプロトコル分析ソフトウェア、Snort侵入検知システム
1.3 Linuxシステムローカルセキュリティが含まれます攻撃的および防御的なテクノロジー
Linuxのローカル権限昇格:
攻撃者がローカルの制限付きユーザーアクセスを取得した後、最も簡単な権限抽出は、ルートユーザーのパスワードを解読し、suまたはsudoコマンドを実行してアップグレードします。初期のLinuxシステムでは、ユーザーID認証に/ etc / passwd構成ファイルを使用して、パスワード暗号テキストをこのファイルに保存できます。このファイルは、通常のユーザーも読み取ることができます。2番目の種類の権限昇格は、suまたはsudoプログラムのセキュリティの脆弱性を発見して使用することであり、3番目に最も一般的なのは、root権限を持つプログラムで任意のコード実行の脆弱性を実行して、root権限でシェルコマンドラインを開くことです。接続します。
ユーザーモードSUIDプログラムの脆弱性を使用して、特権をアップグレードします。Linuxシステムでは、各プロセスには実際のUID(実際のユーザーID)と有効なUID(有効なユーザーID)があります。実際のUIDは最初はプロセスを実行するユーザーIDであり、有効なUIDは実際にプロセスの権限を継承するユーザーを指します。 IDは主に、ファイルを開く、ファイルを作成する、ファイルを変更する、他のプロセスを強制終了するなどの権限を確認するために使用されます。プロセスを通常のユーザーとして実行する場合、プロセスの実効UIDは実際のUIDと同じですが、一部の特殊な操作を実行するためのより高い権限を取得するために変更される場合があります。この特殊なケースは、プログラムにSUID特別許可ビットが設定されている場合です。SUIDビットが設定されると、プログラムが実行されると、実行中のプロセスの実効UIDがプログラムの所有者ユーザーIDになります。プログラム所有者ユーザーがルートの場合、プロセスは実用的であり、ルート権限があり、ルート権限を必要とするいくつかの操作を実行できます。ここで、パスワードはpasswdに変更されます。このコマンドにはSUID権限があります。通常のユーザーが使用する場合、会議の所有者rootのIDはプロセスの実効ユーザーIDとして実行されます。このとき、/ etc / shadowファイルにパスワードを書き込むこともできます。
SUIDプログラムのローカルバッファオーバーフロー攻撃:
完全な攻撃および防御技術で詳細に説明されています。ローカルで使用する場合、ほとんどの場合、バッファオーバーフロー攻撃はほとんどの場合SUID許可ビットを設定するプログラムであり、所有者ユーザーはルートであるため、オーバーフロー後に悪意を持って構築された攻撃ロードコードによってターゲットプログラムに挿入される可能性があります。 rootユーザー権限でコマンドを実行して、シェルを付与します。
SUIDプログラムの競合状態攻撃:一部のプログラムソフトウェアが操作のアトミックな特性に従わないため、競合状態の脆弱性が通常存在します。プロセスが特定のセマフォを操作すると、同時に他のプロセスの操作が原因で予期しない結果を引き起こす可能性があります。これはTOCTOU(timeof-check-to-time-of-use)の脆弱性です。つまり、プログラムが特定の条件をチェックする時間とチェック結果の使用との間に遅延があり、この時間枠で攻撃者はまた、インスペクションを通過した条件がプロセス内で変更されるため、攻撃対象プログラムが使用中に動作するオブジェクトが変更されます。
Linuxシステムログの消去:現在のアクティビティログを変更して、システム管理者が攻撃者の現在のログインアクティビティに気付かないようにします。/var/logディレクトリでは、攻撃者はメッセージなどのログファイルを変更する必要があります。Auth。Secure。Wtmpおよびxferlog。テキスト形式ファイルの場合、viやemacsなどのテキスト編集ツールを使用してログのクリーニング操作を実行できます。また、ユーザーのログインレコードを記録するwtmpバイナリファイルの場合、攻撃者は.wzapを使用して、指定されたものをwtmpログファイルから削除します。ログインログをクリアするためのユーザーのログエントリ。
Linuxシステムリモートコントロールバックドアプログラム:リモートコントロールバックドアプログラムの一般的なタイプには、主にトロイの木馬化されたシステムプログラム、コマンドラインバックドアツール、グラフィカルバックドアツールなどがあります。トロイの木馬化されたシステムプログラムは、攻撃者が設定したアカウントを常に受け入れてログインするバックドアプログラムです。Netcatなどのコマンドラインバックドアツールは、TCPポートを開いて接続要求を監視できます。
2.実践的な練習
実践1:Linuxリモート侵入攻撃
タスクに Metasploitを使用する:Metasploit侵入テストソフトウェアを使用して、Linuxターゲットマシン上のSambaサービスのusermap_scriptセキュリティ脆弱性を攻撃し、ターゲットLinuxターゲットマシンのホストアクセス許可を取得します。実際の手順は次のとおりです。
実験手順:
攻撃者IP:192.168.200.6 ターゲット
マシンIP:192.168.200.125
1. Metasplotソフトウェアを起動し、msfconsoleを使用します。
2.エクスプロイトを使用して、攻撃モジュールに侵入するために、exploit / multi / samba / usermap_スクリプトを使用します。
3.リモートシェルとしてPAYLOADを攻撃することを選択します(フォワード接続とリバース接続の両方が可能です)。
4.侵入攻撃パラメータ(RHOST、LHOST、TARGETなど)を設定します。
5.侵入攻撃を実行します。
6.リモートシェルが正しく取得されているかどうかを確認し、取得された権限を確認します。ここで、whoamiコマンドを使用して現在のユーザーを照会します。
攻撃と防御の対立の実践:攻撃者はMetasploitペネトレーションソフトウェアを使用してLinux Metasploitableターゲット航空機に対してネットワーク攻撃を行い、防御側はMetasploitatbleでtepdumpまたはWiresharkまたはSnortツールを使用します。システムのパッチを適用するために公式Webサイトからセキュリティ脆弱性パッチをダウンロードし、両者が協力して攻撃および防御プロセスに関するレポートを提供します。
- 攻撃者:Metasploitを使用し、Metasploitableターゲットマシンで見つかった脆弱性を選択して、侵入攻撃を実行し、リモートコントロールを取得し、さらにルート権限を取得しようとします。
- Defender:tcpdump / wireshark / snortを使用してネットワーク攻撃パケットファイルを監視および取得し、wireshark / snortを組み合わせて攻撃プロセスを分析し、攻撃者のIPアドレス、ターゲットIPとポート、攻撃開始時間、攻撃の悪用の脆弱性を取得し、Shellcodeを使用します。コマンド入力およびその他の情報がローカルで正常に実行された後。
- チームは協力して侵入攻撃と分析実験レポートを完成させました。
実験手順:
1. nessusを使用してターゲットドローンをスキャンし、UnrealIRCdバックドア検出の脆弱性を参照してください。脆弱性番号はCVE-2010-2075であり、ルート権限、ディレクトリ、およびIP情報を取得するためにMetasploitableを介して脆弱性攻撃を実行します。
2.攻撃者が攻撃を開始した後、wiresharkを使用してリッスンします。最初に、2つのパケットがarpブロードキャストと応答であり、次にTCPパケットが3ウェイハンドシェイクを確立します。攻撃者のIPアドレス192.168.200.6とポート4444、およびターゲットIP192を確認できます.168.200.125およびポート54647、攻撃の起動時間:2020年4月22日01:26:42
3.データストリームを追跡することにより、ターゲットターゲットシェルに入るときに操作をクエリし、現在のディレクトリ、IP情報、およびユーザー情報をクエリできます。
4.脆弱性ラベルはCVE-2010-2075です。この脆弱性はリモートIRCサーバーを利用するUnrealIRCDのバージョンであり、一部のミラーサイトにバックドアUnrealIRCdが配布されており、DEBUG3_DOLOG_SYSTEMマクロに外部から導入された変更(トロイの木馬)が含まれています。リモートの攻撃者は、任意のコマンドを実行できます。
5.シェルコード
3.発生した問題
- 問題:ターゲットマシンにWiresharkがない
- 解決策:Kali攻撃マシンのデータフローを分析します。効果は同じです。
4.知覚の学習、思考
この実践の内容はそれほど多くはなく、全体的な感覚は以前のWindowsオペレーティングシステムの攻撃と防御に似ています。最後の練習の基礎のため、この練習プロセスは非常にスムーズです。